1<!doctype html> 2<html class="js" lang="es"> 3 <head> 4<!--LOOMI SDK--> 5<!--DO NOT EDIT--> 6<link rel="preconnect" href="https://live.visually-io.com/" crossorigin data-em-disable> 7<link rel="dns-prefetch" href="https://live.visually-io.com/" data-em-disable>
8<script> 9 (()=> { 10 const env = 2; 11 var store = "testrendl2.myshopify.com"; 12 var alias = store.replace(".myshopify.com", "").replaceAll("-", "_").toUpperCase(); 13 var jitsuKey = "js.90979500330"; 14 var themeId = 190667424042; 15 var role = "main"; 16 window.loomi_ctx = {...(window.loomi_ctx || {}),storeAlias:alias,jitsuKey,env,themeId,role}; 17 (()=>{window.loomi_ctx.cc=1})() 18 19 20 21 loomi_ctx.ttl=1779953172; 22 23 !function(){var n,t,e;!function(n){n.JSCondition="jsCondition",n.JSFunction="jsFunction",n.JSEvent="jsEvent",n.Selector="selector",n.ElementEvent="elementEvent",n.PageLoad="pageLoad",n.Timeout="timeout",n.Inactivity="inactivity",n.ExitIntent="exitIntent",n.Conjunction="conjunction"}(n||(n={})),function(n){n[n.PAUSED=4]="PAUSED"}(t||(t={})),function(n){n[n.LOCAL=0]="LOCAL",n[n.STAGE=1]="STAGE",n[n.PROD=2]="PROD",n[n.TEST=3]="TEST"}(e||(e={}));var r,i="lmi_preview";function o(){return o=Object.assign?Object.assign.bind():function(n){for(var t=1;t<arguments.length;t++){var e=arguments[t];for(var r in e)({}).hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n},o.apply(null,arguments)}function c(n,t){n.prototype=Object.create(t.prototype),n.prototype.constructor=n,a(n,t)}function a(n,t){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,t){return n.__proto__=t,n},a(n,t)}!function(n){n.USE_CASE="USE_CASE",n.ADD_TO_CART="ADD_TO_CART"}(r||(r={})),window.addEventListener("load",function(){setTimeout(function(){},2e3)});var u="vslyCtags",s=function(){return new Date(1e3*Math.floor(Date.now()/1e3))};function l(n,t,e,r){return void 0===t&&(t=500),void 0===e&&(e=4),new Promise(function(i,o){n()?i(0):0!==e?setTimeout(function(){r&&r()&&o("condition rejected "+f(function(){return n.toString()})),l(n,t,e-1).then(i).catch(o)},t):o("condition rejected "+f(function(){return n.toString()}))})}function f(n,t){void 0===t&&(t=void 0);try{return n()}catch(n){return t}}var d=function(n){return n&&decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(n).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null};function v(){return m(function(){var n=new Function(document.querySelector('script[id="__st"]').textContent+";return __st.cid.toString()")();return n&&window.localStorage.setItem("vsly__st",n),!0}),f(function(){return window.__st.cid.toString()})||window.localStorage.getItem("vsly__st")}function m(n,t,e){void 0===t&&(t=5),void 0===e&&(e=500),t>=0&&!f(n)&&setTimeout(function(){f(n)||m(n,t-1)},e)}var w=/*#__PURE__*/function(){function n(n,t){this._value=void 0,this._addedAt=void 0,this._value=n,this._addedAt=t||(new Date).getTime()}var t=n.prototype;return t.value=function(){return this._value},t.addedAt=function(){return this._addedAt},n}(),g=/*#__PURE__*/function(){function n(n,t){this.backend=void 0,this.ttlMillis=void 0,this.backend=n,this.ttlMillis=t}var t=n.prototype;return t.isValid=function(n){return!!n&&(new Date).getTime()-n.addedAt()<=this.ttlMillis},t.get=function(n){var t=this.backend.get(n),e=this.isValid(t);if(t&&e)return t.value();e||this.backend.remove(n)},t.set=function(n,t,e){var r=new w(t,e);this.backend.set(n,r)},n}(),h=/*#__PURE__*/function(){function n(n){this.namespace=void 0,this.namespace="vsly_cache_"+n,window[this.namespace]={}}var t=n.prototype;return t.get=function(n){var t=this;return f(function(){return window[t.namespace][n]})},t.remove=function(n){var t=this;f(function(){return delete window[t.namespace][n]})},t.set=function(n,t){window[this.namespace][n]=t},n}(),p=/*#__PURE__*/function(){function n(n){this.namespace=void 0,this.namespace="vsly_cache_"+n}var t=n.prototype;return t.get=function(n){var t=this;return f(function(){var e=sessionStorage.getItem(t.namespace+"_"+n);if(e){var r=JSON.parse(e);return new w(r._value,r._addedAt)}})},t.remove=function(n){sessionStorage.removeItem(this.namespace+"_"+n)},t.set=function(n,t){sessionStorage.setItem(this.namespace+"_"+n,JSON.stringify(t))},n}(),_=/*#__PURE__*/function(n){function t(t,e){return n.call(this,new p(t),e)||this}return c(t,n),t}
23(g),y=/*#__PURE__*/function(n){function t(t,e){return n.call(this,new h(t),e)||this}return c(t,n),t}(g),S=function(n,t){void 0===t&&(t=8397271938200529);for(var e,r=3735928559^t,i=1103547991^t,o=0;o<n.length;o++)e=n.charCodeAt(o),r=Math.imul(r^e,2654435761),i=Math.imul(i^e,1597334677);return r=Math.imul(r^r>>>16,2246822507)^Math.imul(i^i>>>13,3266489909),""+(4294967296*(2097151&(i=Math.imul(i^i>>>16,2246822507)^Math.imul(r^r>>>13,3266489909)))+(r>>>0))};function I(){return f(function(){return window.Shopify.country})||f(function(){return window.visually.country})}var P,O="visually",b="widgets";function A(){var n=f(function(){return window.loomi_ctx.cart});if(n)return n;var t=localStorage.getItem("loomi-cart");if(t)try{return JSON.parse(t)}catch(n){}}window.IntersectionObserver&&new IntersectionObserver(function(n,t){n.forEach(function(n){if(n.isIntersecting){var e=n.target;(function(n){var t=n.getAttribute("lmw"),e=n.getAttribute("lmwv");if(t&&e){var r=t+e;return l(function(){return f(function(){return!!window[O][b][r]})&&f(function(){return!!window.preact})},50,500).then(function(){f(function(){return window[O][b][r]("#"+n.id)})}),!0}return!1})(e)&&t.unobserve(e)}})},{root:null,rootMargin:window.vslyDeferWidgetsMargin||"100px",threshold:.1}),function(n){n.CART_CHANGE="CART_CHANGE",n.LOYALTY_CHANGE="LOYALTY_CHANGE"}(P||(P={}));var E=function(){return window.loomi_ctx.session.id};function x(n){return JSON.parse(localStorage.getItem(n)||"[]")}function T(n,t,e,r){n=n||[],t=t||[];var i=f(function(){return t.filter(function(t){return!n.find(e(t))})})||[],o=[].concat(n,i).slice(0,25);return o.length>0&&localStorage.setItem(r,JSON.stringify(o)),o}var C,D="vsly_params_history",N="vsly_visited_pages";!function(n){n.MOBILE="MOBILE",n.DESKTOP="DESKTOP"}(C||(C={}));var k=function(){return edgetag("getUserId")},L="lmi_type",M="lmi_from",R="lmi_class",j="lmi_utm_data",U={utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},J=function(n,t){void 0===t&&(t=3);for(var e=n,r=0;r<t;r++)try{var i=decodeURIComponent(e);if(i===e)break;e=i}catch(n){break}return e};function F(){var n,t,e,r=(n=function(n){if(function(n){return!n||"{}"===JSON.stringify(n)}(n))return null;var t={};return n.campaign&&(t.campaign=n.campaign),n.medium&&(t.medium=n.medium),n.source&&(t.source=n.source),n.term&&(t.term=n.term),n.content&&(t.content=n.content),t}(f(function(){return function(n){void 0===n&&(n=window.location.search);var t={utm:{},lmi_params:{}};return f(function(){return new URLSearchParams(n)}).forEach(function(n,e){if(n){var r=U[e],i=J(n);r?t.utm[r]=i:function(n){return f(function(){return[R,M,L].includes(n)})}(e)&&(t.lmi_params[e]=i)}}),t}().utm})),t=[],null!=(e=localStorage.getItem(j))&&(t=[].concat(JSON.parse(e)).slice(0,20)),n&&(n.ts=s(),t=[n].concat(t)),t);return localStorage.setItem(j,JSON.stringify(r)),r}function B(){var n=f(function(){return F()},[]);if(!Array.isArray(n)||0===n.length)return"";var t=n.filter(function(n){return n.campaign});return 0===t.length?"":f(function(){return t.reduce(function(n,t){return t.ts>n.ts?t:n},t[0]).campaign},"")||""}var H=function(){try{var n=function(){if(!K)return Promise.resolve(new Promise(function(n,t){var e=indexedDB.open(q,1);e.onerror=function(n){t("IDB e:o"+n.target.error)},e.onsuccess=function(t){n(K=t.target.result)},e.onupgradeneeded=function(n){n.target.result.createObjectStore(G,{keyPath:"id"}).createIndex("id","id",{unique:!0})}})).then(function(){})}();return Promise.resolve(n&&n.then?n.then(function(){return K}):K)}catch(n){return Promise.reject(n)}},q="VISUALLY_IO",G=q,K=null;function V(){var n=new URL(window.location.href);return n.protocol+"//"+n.hostname+n.pathname}var Y="__eventn_id";function W(n,t,e){void 0===e&&(e=Y);var r=z(n,t);f(function(){return localStorage.setItem(e,r)}),function(n,t,e,r){f(function(){return window.loomi_ctx.cc})&&!f(function(){return(f(function(){return window.Shopify.customerPrivacy.analyticsProcessingAllowed})||f(function(){return window.Shopify.customerPrivacy.userCanBeTracked})||f(function(){return window.visually.analyticsProcessingAllowed}))()})||(document.cookie=encodeURIComponent(n)+"="+t+"; path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT"+(e?"; domain="+e:"")+(r?"; secure":""))}(e,r,document.location.hostname.replace("www.","").replace("checkout.",""),"http:"!==document.location.protocol)}function $(n){return{firstSeen:f(function(){return parseInt(n.split(".")[1])},null),id:f(function(){return n.split(".")[0]})}}function z(n,t){return n+"."+t}function Z(){return Math.trunc((new Date).getTime()/1e3)}var Q=function(n){return(new Date).getTime()/1e3-n<=7200},X="vsly_vid",nn="lmi_debug";function tn(n){return f(function(){return new URL(window.location.href).searchParams.get(n)||void 0})}function en(){try{var n=f(function(){return window.vslyAntiFlickerReveal},void 0);n&&n()}catch(n){}}new _("p",18e5),new y("recs_cache",300001);var rn,on=new Map;function cn(n){return an(n)?"http://localhost:8080":"https://"+function(n){return void 0===n&&(n=window.loomi_ctx.env),n===e.STAGE?"sdk.loomi-stg.xyz":"live.visually-io.com"}()}function an(n){return[e.TEST,e.LOCAL].includes(n)}!function(n){n.NONE="none",n.YOTPO="yotpo"}(rn||(rn={}));var un="vsly_session";function sn(n){return J((n||"").replace("+"," "))}function ln(){var n=window.loomi_ctx.storeAlias,t={id:S(n+window.loomi_ctx.userId+s()+B()+vn()),utm_campaign:B(),last_interaction:new Date,landing_page:f(function(){return location.href},""),start_at:new Date};return fn(t),t}function fn(n){var t=JSON.stringify(n);localStorage.setItem(un,t),window.loomi_ctx.session=n}function dn(){var n=function(){window.loomi_ctx=window.loomi_ctx||{};var n=window.loomi_ctx.session||f(function(){var n=JSON.parse(localStorage.getItem(un));return n.last_interaction=new Date(n.last_interaction),n.start_at=new Date(n.start_at),n})||ln();return function(n){var t=new Date,e=n.last_interaction;return(t.valueOf()-e.valueOf())/6e4>30||sn(B())!==sn(n.utm_campaign)||n.last_interaction.getDate()!==t.getDate()}(n)&&(n=ln()),window.loomi_ctx.session=n,n}();n.last_interaction=new Date,fn(n)}var vn=function(){return Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15)},mn=["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","NO","IS","LI"],wn=function(n){void 0===n&&(n=!0);var t=window.loomi_ctx.consent;t.allowed=n,t.fin||(t.fin=gn())},gn=function(){return(new Date).getTime()},hn=function(){return window.Shopify.customerPrivacy},pn=function(){return Promise.resolve()};(function(){try{if(window.vsly_init=!0,window.vslyIntegrationType="static","number"==typeof(w=f(function(){return window.loomi_ctx.ttl}))&&Number.isFinite(w)&&!(w<=0)&&w<Math.floor(Date.now()/1e3))return console.log("sdk blocked"),Promise.resolve();window.loomi_ctx.sdk_version="0.12.82";var n=window.loomi_ctx,t=n.env,r=function(n,t){try{return f(dn),f(function(){var n=window.loomi_ctx.ctags||[];0===n.length?window.loomi_ctx.ctags=JSON.parse(localStorage.getItem(u)||"[]"):localStorage.setItem(u,JSON.stringify(n)),f(function(){var n=JSON.parse(localStorage.getItem("vsl
23yCustomCtags")||"[]");n&&n.length>0&&(window.loomi_ctx.ctags=[].concat(window.loomi_ctx.ctags||[],n))})}),Promise.resolve(function(n,t){try{var e=(c=function(n){var t=function(n){try{var t=d(n),e=$(t);if(t)return{id:e.id,firstSeen:e.firstSeen||Z()}}catch(n){}}(n),e=function(n){var t=window.localStorage.getItem(n),e=$(t);if(t)return{id:e.id,firstSeen:e.firstSeen||Z()}}(n);if(!t&&!e){var r=function(){var n=Math.random().toString(36).substring(2,12),t=Z();return{newId:n,newEpoch:t,value:z(n,t)}}(),i=r.newId,o=r.newEpoch;return W(i,o,n),{id:i,firstSeen:o}}if(!e&&t)return W(t.id,t.firstSeen,n),t;if(!t&&e)return W(e.id,e.firstSeen,n),e;var c=Math.min(t.firstSeen,e.firstSeen),a=t.firstSeen<=e.firstSeen?t.id:e.id;return function(n,t){return n.firstSeen===t.firstSeen&&n.id!==t.id}(t,e)&&(a=t.id<=e.id?t.id:e.id),e.id==t.id&&e.firstSeen==t.firstSeen||W(a,c,n),{id:a,firstSeen:c}}(Y),{id:c.id,firstSession:Q(a=c.firstSeen),firstSeen:a}),r=function(n,t){var e=function(){var n=f(function(){return A().items.map(function(n){return{variantId:n.variant_id||0,quantity:n.quantity||0,productId:n.product_id||0,price:n.price||0}})})||[],t={path:window.location.pathname,host:window.location.hostname};f(function(){return n.length})>0&&(t.cartItems=n);var e=f(function(){return A().token});e&&(t.cartToken=e);var r=F();r&&(t.trafficSources=r),t.productsSeenInSession=function(){var n=f(function(){return window.loomi_ctx.sessionProducts});if(n)return n;var t=localStorage.getItem("loomi_session_products"),e=t?JSON.parse(t):[];return f(function(){return e.filter(function(n){return""!=n.handle}).reverse().slice(0,20)})}(),t.isCustomer=!!v(),t.query=window.location.search||"";var i=f(function(){return(("spa"==window.vslyIntegrationType?f(function(){return A().attributes.map(function(n){return n.key})}):f(function(){return Object.keys(A().attributes)}))||[]).filter(function(n){return!n.startsWith("vsly")&&n.length<20}).slice(0,15)});return i&&(t.cartAttributes=i),t}();e.storeAlias=n;var r=v();r&&(e.clientId=r),e.anonymousId=t.id,e.firstSeen=t.firstSeen,e.firstSession=t.firstSession,e.gaId=f(function(){return document.cookie.split(";").map(function(n){return n.split("=")}).find(function(n){return"_ga"==n[0].trim()})[1]},"");var i=window.loomi_ctx;e.customerTags=f(function(){return i.ctags.slice(0,20)}),e.landingPage=f(function(){return i.session.landing_page}),e.hasSubs=!!f(function(){return(n=A(),f(function(){return n.items.map(function(n){return f(function(){return n.selling_plan_allocation.selling_plan.name.toLowerCase()})}).filter(function(n){return!!n})},[])).length>0;var n});var c,a=(c="vsly_edgetag",m(function(){return k()&&localStorage.setItem(c,k()),!0}),f(k)||localStorage.getItem(c));a&&(e.edgetag=a);var u=function(){try{var n=f(function(){return new URL(window.location.href)});if(f(function(){return n.searchParams.get("forceOverride")})){var t=f(function(){return n.searchParams.get("targeting")});if(t)return JSON.parse(atob(t))}}catch(n){!function(){var n;(window.location.search.includes("lmi_debug")||f(function(){return window.vsly_fbs}))&&(n=console).error.apply(n,["loomi-editor"].concat([].slice.call(arguments)))}("preview overrides",n)}return{}}(),l=x(D),w=function(){var n,t=x(N);function e(n){return new Date(n.ts).valueOf()}function r(){var n=new URL(location.href);return["vslyvid","vslywgid","vslysid","lmi_preview","targeting","vsly_vid"].forEach(function(t){return n.searchParams.delete(t)}),n.search||""}return(n=N,Promise.resolve(H()).then(function(t){return new Promise(function(e,r){var i=t.transaction([G],"readonly").objectStore(G).get(n);i.onerror=function(n){r("IDB e:r"+n.target.error)},i.onsuccess=function(n){e(n.target.result)}})})).then(function(n){var i,o={ts:new Date,name:V(),search:f(r,"")},c=!!o.search,a=(f(function(){return n.visits})||t||[]).filter(function(n){return!c||!(n.name===o.name&&!n.search)}).filter(function(n){return!(n.name===o.name&&(o.search===n.search||c&&!n.search))}).sort(function(n,t){return e(t)-e(n)}).slice(0,500);a.unshift(o),(i={id:N,visits:a},Promise.resolve(H()).then(function(n){return new Promise(function(t,e){var r=n.transaction([G],"readwrite").objectStore(G).put(i);r.onerror=function(n){e("IDB e:w"+n.target.error)},r.onsuccess=function(){t("")}})})).catch()}).catch(),T([{ts:s(),name:V()}],t,function(n){return function(t){return n.name===t.name}},N)}(),g=JSON.parse(localStorage.getItem("loomi_purchased_products")||"[]"),h=o({deviceKind:f(function(){return window.loomi_ctx.deviceOverride},void 0)},{}),p=!!f(function(){return navigator.userAgent.includes("Macintosh")&&"ontouchend"in document}),_=f(function(){return window.innerWidth},0),y=f(function(){return window.vslyDesktopBreakpoint}
23)||960,S=f(function(){return d("cart_currency")})||f(function(){return A().currency})||"",I=f(function(){return i.current_product});if(I){e.oos=f(function(){return I.oos}),e.price=f(function(){return I.price}),e.iq=f(function(){return I.variants.reduce(function(n,t){return t.iq+n},0)}),e.productId=f(function(){var n=function(){var n={},t=window.loomi_ctx||{};t.productId&&(n.productId=t.productId);var e=f(function(){var n=new URL(location.href).searchParams,t="variant";return n.has(t)&&function(n){var t=Number(n),e=isNaN(t)?Number((""+n).replace(/[^\d.]+/g,""))||void 0:t;if(void 0!==e&&0!==e)return""+e}(n.get(t))})||t.variantId;return e&&(n.variantId=e),n}().productId;return Number.isFinite(Number(n))?n.toString():""},"");var P=1*i.variantId;Number.isFinite(P)&&(e.vid=P)}var O=f(E);"spa"==window.vslyIntegrationType&&(e.spa=!0);var b=f(function(){return i.ttl});return o({cartCurrency:S},e,{queryHistory:l,isIPadPro:p,windowInnerWidth:_,desktopBreakpoint:y,visitedPages:w,ttl:Number.isFinite(b)?b:0,purchasedLineItems:g,sid:O},h||{},u||{})}(n,e);return Promise.resolve(function(n,t){try{var e=function(n){return btoa(unescape(encodeURIComponent(JSON.stringify(n))))}(t),r=(u=function(n){var t="/api/allocator/web/public/v2/allocate";return an(n)&&(t="/allocate"),{cfgUrl:""+cn(n)+t}}(n).cfgUrl,s=function(){[i,X].map(function(n){var t=tn(n);t&&sessionStorage.setItem(n,t)});var n=sessionStorage.getItem(i),t=sessionStorage.getItem(X);return{previewKey:n,debugAllocator:tn(nn),previewVariantId:t}}(),l=s.previewKey,f=s.debugAllocator,d=s.previewVariantId,v=new URL(u),l&&v.searchParams.append(i,l),f&&v.searchParams.append(nn,"true"),d&&v.searchParams.append(X,d),v);r.searchParams.append("q",e);var o=S(r.href),c=window.vslyNativeFetch||window.fetch,a=on.has(o)?on.get(o):c(r.href).finally(function(){return on.delete(o)});return on.set(o,a),Promise.resolve(a).then(function(n){if(n.ok)return Promise.resolve(n.json());throw new Error("failed to load config: "+n.statusText)})}catch(n){return Promise.reject(n)}var u,s,l,f,d,v}(t,r)).then(function(n){return f(function(){window.loomi_ctx.audiences=n.audiences,f(function(){return n.audiences&&localStorage.setItem("vsly_audiences",JSON.stringify(n.audiences))}),window.loomi_ctx.testedThemes=n.testedThemes||[]}),function(n){var t=n.currentVariant;window.loomi_ctx=o({},window.loomi_ctx||{});var e=f(function(){return t.pid});e&&(window.loomi_ctx.productId=""+e);var r=f(function(){return t.vid});r&&(window.loomi_ctx.variantId=""+r);var i=f(function(){return t.price});i&&(window.loomi_ctx.variantPrice=i);var c=f(function(){return t.meta});c&&(window.loomi_ctx.productMeta=""+c)}(n),T(n.queryHistory,r.queryHistory,function(n){return function(t){return t.v===n.v&&t.k===n.k}},D),function(n){var t;(t=n.experiments)&&t.findIndex(function(n){var t=f(function(){return n.clientTargetingFormula.toString()},"")||"";return t.includes("CartItemHasTag")||t.includes("CartItemHasCollection")||t.includes("AllCartItemsHasTag")})>-1||!0===f(function(){return n.flags["sdk-enable-cart-enrichment"]},!1)&&(n.flags["sdk-enable-cart-enrichment"]=!1)}(n),{configuration:n,tracking:e}})}catch(n){return Promise.reject(n)}var c,a}(n,t))}catch(n){return Promise.reject(n)}}(n.storeAlias,t);(a=function(){var n=I();return!!n&&!mn.includes(n)},new Promise(function(n,t){var e,r=(e=window.loomi_ctx).consent||(e.consent={});r.init=gn(),(I()?pn():l(I,50,200)).then(function(){a()&&(wn(),n())}),(f(function(){return hn().analyticsProcessingAllowed})?pn():l(function(){return f(function(){return hn().analyticsProcessingAllowed})},50,200)).then(function(){var e=hn().analyticsProcessingAllowed()||a();wn(e),e?n():t()}),r.ccListener||(document.addEventListener("visitorConsentCollected",function(e){var r=e.detail.analyticsAllowed||a();wn(r),r?n():t()}),r.ccListener=!0)})).catch();var c=new Promise(function(n){"function"==typeof window.loomi_ctx.run?n():window.addEventListener("visually_loaded",function(){return n()},{once:!0})});return Promise.all([r,c]).then(function(n){var r=n[0],i=r.configuration,o=r.tracking;(function(n){return(t="vsly-a",r=function(n){return n==e.STAGE?"https://sdk.loomi-stg.xyz/":"https://assets.visually.io/"}(n)+"v/visually-a.js?cb="+window.loomi_ctx.sdk_version,void 0===i&&(i={async:!1,defer:!1}),new Promise(function(n,e){var o=document.getElementById(t);o?n(document.getElementById(t)):((o=document.createElement("script")).id=t,o.src=r,o.async=i.async||!1,o.defer=i.defer||!1,o.setAttribute("data-em-disable",""),o.onload=function(){return n(o)},o.onerror=function(){return e(new Error("Failed to load "+r))},document.head.appendChild(o))})).catch();var t,r,i})(t),window.loomi_ctx.run(i,o)}).catch(function(n){return console.error(n)}).finally(en)}catch(n){return Promise.reject(n)}var a,w}
23)().then(function(){return console.log("vsly sdk init")})}(); 24 25 })() 26</script>
26 27<link href="https://assets.visually.io/vsly/lib/visually.js?cb=8af8c396" rel="preload" as="script" data-em-disable>
28<script rel="prefetch" type="text/javascript" src="https://assets.visually.io/vsly/lib/visually.js?cb=8af8c396" data-em-disable></script>
28 29<link href="https://assets.visually.io/widgets/vsly-preact.min.js" rel="preload" as="script" data-em-disable>
30<script data-vsly="preact2" type="text/javascript" src="https://assets.visually.io/widgets/vsly-preact.min.js" data-em-disable></script>
30 31<!--LOOMI SDK--> 32 33 34 <meta charset="utf-8"> 35 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 36 <meta name="viewport" content="width=device-width,initial-scale=1"> 37 <meta name="theme-color" content=""> 38 <meta name="google-site-verification" content="BKkO6W9ka3m1PKF8Vu6as6gZEDE-j5dVCWQuEjhRnw0" /> 39 <meta name="google-site-verification" content="-8U7cayNcCV1kLQ-W6zQSz3FtIaJ3lTCqDKmRDuPcEE" /> 40 <!-- Google Tag Manager --> 41
41<script>
vendor: 335 bytes, lines 41-45
41(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 42 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 43 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 44 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 45 })(window,document,'script','dataLayer','
45GTM-P2X2969W
vendor: 3 bytes, line 45
45');
45</script>
45 46 <!-- End Google Tag Manager --> 47 <link rel="canonical" href="https://rendl.es/collections/garden-post-light"><link rel="icon" type="image/png" sizes="48x48" href="//rendl.es/cdn/shop/files/rendl-favicon.png?crop=center&height=48&v=1766056459&width=48"> 48 <link rel="icon" type="image/png" sizes="96x96" href="//rendl.es/cdn/shop/files/rendl-favicon.png?crop=center&height=96&v=1766056459&width=96"> 49 <link rel="icon" type="image/png" sizes="192x192" href="//rendl.es/cdn/shop/files/rendl-favicon.png?crop=center&height=192&v=1766056459&width=192"> 50 <link rel="apple-touch-icon" sizes="180x180" href="//rendl.es/cdn/shop/files/rendl-favicon.png?crop=center&height=180&v=1766056459&width=180"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><title> 51 Postes de jardÃn | Rendl Light Studio 52</title> 53 54 55 <meta name="description" content="Postes de jardÃn con iluminación segura para caminos y protección IP duradera â Muchas opciones de fácil instalación â Modelos de calidad disponibles â "> 56 57 58 59 60<meta property="og:site_name" content="Rendl Light Studio"> 61<meta property="og:url" content="https://rendl.es/collections/garden-post-light"> 62<meta property="og:title" content="Postes de jardÃn | Rendl Light Studio"> 63<meta property="og:type" content="website"> 64<meta property="og:description" content="Postes de jardÃn con iluminación segura para caminos y protección IP duradera â Muchas opciones de fácil instalación â Modelos de calidad disponibles â "><meta property="og:image" content="http://rendl.es/cdn/shop/collections/bollards_image_f841a070-d7cb-4a39-b045-425f442ae4cf.png?v=1788993126"> 65 <meta property="og:image:secure_url" content="https://rendl.es/cdn/shop/collections/bollards_image_f841a070-d7cb-4a39-b045-425f442ae4cf.png?v=1788993126"> 66 <meta property="og:image:width" content="3162"> 67 <meta property="og:image:height" content="3162"><meta name="twitter:card" content="summary_large_image"> 68<meta name="twitter:title" content="Postes de jardÃn | Rendl Light Studio"> 69<meta name="twitter:description" content="Postes de jardÃn con iluminación segura para caminos y protección IP duradera â Muchas opciones de fácil instalación â Modelos de calidad disponibles â "> 70 71 72
72<script src="//rendl.es/cdn/shop/t/33/assets/constants.js?v=132983761750457495441788953232" defer="defer"></script>
72 73
73<script src="//rendl.es/cdn/shop/t/33/assets/pubsub.js?v=158357773527763999511788953231" defer="defer"></script>
73 74
74<script src="//rendl.es/cdn/shop/t/33/assets/global.js?v=43406015157963273791788953231" defer="defer"></script>
74 75
75<script src="//rendl.es/cdn/shop/t/33/assets/cart-count-without-hanf.js?v=23211574973106420781788953233" defer="defer"></script>
75 76
76<script src="//rendl.es/cdn/shop/t/33/assets/details-disclosure.js?v=13653116266235556501788953233" defer="defer"></script>
76 77
77<script src="//rendl.es/cdn/shop/t/33/assets/details-modal.js?v=25581673532751508451788953234" defer="defer"></script>
77 78
78<script src="//rendl.es/cdn/shop/t/33/assets/search-form.js?v=133129549252120666541788953231" defer="defer"></script>
78 79 80
80<script src="//rendl.es/cdn/shop/t/33/assets/mobile-menu-fix.js?v=129136636972761987901788953230" defer="defer"></script>
80 81 82
82<script src="//rendl.es/cdn/shop/t/33/assets/remove-decimals.js?v=156196077543663326621788953231" defer="defer"></script>
82<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
82<meta name="google-site-verification" content="4hxGnmeiueQIb0AGvurcUTVLgg1AG6OKrwzvcGhyzUE"> 83<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/90979500330/digital_wallets/dialog"> 84<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" type="application/atom+xml" title="Feed" href="/collections/garden-post-light.atom" /> 85<link rel="alternate" hreflang="x-default" href="https://rendl.cz/collections/garden-post-light"> 86<link rel="alternate" hreflang="cs" href="https://rendl.cz/collections/garden-post-light"> 87<link rel="alternate" hreflang="de-AT" href="https://rendl.co.at/collections/garden-post-light"> 88<link rel="alternate" hreflang="nl-BE" href="https://rendl.be/collections/garden-post-light"> 89<link rel="alternate" hreflang="de-DE" href="https://rendl.com.de/collections/garden-post-light"> 90<link rel="alternate" hreflang="da-DK" href="https://rendl.dk/collections/garden-post-light"> 91<link rel="alternate" hreflang="es-ES" href="https://rendl.es/collections/garden-post-light"> 92<link rel="alternate" hreflang="fi-FI" href="https://rendl.fi/collections/garden-post-light"> 93<link rel="alternate" hreflang="fr-FR" href="https://rendl.fr/collections/garden-post-light"> 94<link rel="alternate" hreflang="cs-IE" href="https://testrendl2.myshopify.com/collections/garden-post-light"> 95<link rel="alternate" hreflang="en-IE" href="https://testrendl2.myshopify.com/en/collections/garden-post-light"> 96<link rel="alternate" hreflang="it-IT" href="https://rendl.it/collections/garden-post-light"> 97<link rel="alternate" hreflang="nl-NL" href="https://rendl.nl/collections/garden-post-light"> 98<link rel="alternate" hreflang="en-NO" href="https://rendl.com/collections/garden-post-light"> 99<link rel="alternate" hreflang="pl-PL" href="https://rendl.pl/collections/garden-post-light"> 100<link rel="alternate" hreflang="pt-PT" href="https://rendl.pt/collections/garden-post-light"> 101<link rel="alternate" hreflang="sv-SE" href="https://rendl.se/collections/garden-post-light"> 102<link rel="alternate" hreflang="hr-HR" href="https://rendl.hr/collections/garden-post-light"> 103<link rel="alternate" hreflang="hu-HU" href="https://rendl.hu/collections/garden-post-light"> 104<link rel="alternate" hreflang="ro-RO" href="https://rendl.ro/collections/garden-post-light"> 105<link rel="alternate" hreflang="bg-BG" href="https://rendl.bg/collections/garden-post-light"> 106<link rel="alternate" hreflang="et-EE" href="https://rendl.ee/collections/garden-post-light"> 107<link rel="alternate" hreflang="el-GR" href="https://rendl.gr/collections/garden-post-light"> 108<link rel="alternate" hreflang="en-LT" href="https://rendl.lt/collections/garden-post-light"> 109<link rel="alternate" hreflang="en-LU" href="https://rendl.com/collections/garden-post-light"> 110<link rel="alternate" hreflang="lv-LV" href="https://rendl.lv/collections/garden-post-light"> 111<link rel="alternate" hreflang="sk-SK" href="https://rendl.sk/collections/garden-post-light"> 112<link rel="alternate" hreflang="sl-SI" href="https://rendl.si/collections/garden-post-light"> 113<link rel="alternate" hreflang="en-AD" href="https://rendl.com/collections/garden-post-light"> 114<link rel="alternate" hreflang="en-SM" href="https://rendl.com/collections/garden-post-light"> 115<link rel="alternate" hreflang="en-VA" href="https://rendl.com/collections/garden-post-light"> 116<link rel="alternate" type="application/json+oembed" href="https://rendl.es/collections/garden-post-light.oembed">
117<script async="async" src="/checkouts/internal/preloads.js?locale=es-ES&default_configuration_id=5244059946"></script>
117 118<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
119<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=es-ES&default_configuration_id=5244059946&shop_id=90979500330" crossorigin="anonymous"></script>
vendor: 1 bytes, line 119
119
120<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":90979500330,"countryCode":"CZ","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/90979500330","merchantName":"Rendl Light Studio","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard"],"total":{"type":"pending","label":"Rendl Light Studio","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 120
120
121<script id="shopify-features" type="application/json">{"accessToken":"98f7c60fc639a87e76284ed1108b437c","betas":["rich-media-storefront-analytics"],"domain":"rendl.es","predictiveSearch":true,"shopId":90979500330,"locale":"es"}</script>
vendor: 1 bytes, line 121
121
122<script>var Shopify = Shopify || {}; 123Shopify.shop = "testrendl2.myshopify.com"; 124Shopify.locale = "es"; 125Shopify.currency = {"active":"EUR","rate":"1.0"}; 126Shopify.country = "ES"; 127Shopify.theme = {"name":"rendl-shopify-web\/main","id":190667424042,"schema_name":"Dawn","schema_version":"15.2.0","theme_store_id":null,"role":"main"}; 128Shopify.theme.handle = "null"; 129Shopify.theme.style = {"id":null,"handle":null}; 130Shopify.cdnHost = "rendl.es/cdn"; 131Shopify.routes = Shopify.routes || {}; 132Shopify.routes.root = "/"; 133Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 134Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 135Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 136Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 136
136
137<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 137
137
138<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 138
138
139<script> 140 window.ShopifyPay = window.ShopifyPay || {}; 141 window.ShopifyPay.apiHost = "shop.app\/pay"; 142 window.ShopifyPay.redirectState = null; 143</script>
vendor: 1 bytes, line 143
143
144<script> 145 window.Shopify = window.Shopify || {}; 146 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 147 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 148 window.Shopify.SignInWithShop.eligible = true; 149</script>
vendor: 1 bytes, line 149
149
150<script id="shop-js-analytics" type="application/json">{"pageType":"collection"}</script>
vendor: 1 bytes, line 150
150
151<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.es.esm.js"></script>
vendor: 1 bytes, line 151
151
152<script type="module"> 153 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.es.esm.js"); 154 155 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 156 157</script>
vendor: 1 bytes, line 157
157
158<script> 159 window.Shopify = window.Shopify || {}; 160 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 161 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.es.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.es.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.es.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.es.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.es.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.es.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.es.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.es.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.es.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.es.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.es.esm.js"],"listener":["modules/v2/loader.listener.es.esm.js"],"pay-button":["modules/v2/loader.pay-button.es.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.es.esm.js"],"shop-button":["modules/v2/loader.shop-button.es.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.es.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.es.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.es.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.es.esm.js"],"shop-login":["modules/v2/loader.shop-login.es.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.es.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.es.esm.js"]}; 162</script>
vendor: 1 bytes, line 162
162
163<script>(function() { 164 var isLoaded = false; 165 function asyncLoad() { 166 if (isLoaded) return; 167 isLoaded = true; 168 var urls = ["https:\/\/lac.sfapp.magefan.top\/js\/scripttags\/assistance\/init.js?shop=testrendl2.myshopify.com","https:\/\/cdn.nfcube.com\/instafeed-5bdb40d053ca0481523ce4f87d922a9b.js?shop=testrendl2.myshopify.com","https:\/\/tseish-app.connect.trustedshops.com\/esc.js?apiBaseUrl=aHR0cHM6Ly90c2Vpc2gtYXBwLmNvbm5lY3QudHJ1c3RlZHNob3BzLmNvbQ==\u0026instanceId=dGVzdHJlbmRsMi5teXNob3BpZnkuY29t\u0026shop=testrendl2.myshopify.com"]; 169 for (var i = 0; i < urls.length; i++) { 170 var s = document.createElement('script'); 171 s.type = 'text/javascript'; 172 s.async = true; 173 s.src = urls[i]; 174 var x = document.getElementsByTagName('script')[0]; 175 x.parentNode.insertBefore(s, x); 176 } 177 }; 178 if(window.attachEvent) { 179 window.attachEvent('onload', asyncLoad); 180 } else { 181 window.addEventListener('load', asyncLoad, false); 182 } 183})();</script>
vendor: 1 bytes, line 183
183
184<script id="__st">var __st={"a":90979500330,"offset":7200,"reqid":"55b2b479-e3dd-4613-be6f-0859cc247668-1791222112","pageurl":"rendl.es\/collections\/garden-post-light","u":"4370d0417fc4","p":"collection","rtyp":"collection","rid":500116816170};</script>
vendor: 1 bytes, line 184
184
185<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 185
185
186<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protegido por hCaptcha',privacyText:'Privacidad',termsText:'Términos'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 186
186
187<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//rendl.es/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 187
187
188<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//rendl.es/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
188<script crossorigin="anonymous" defer="defer" src="//rendl.es/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 188
188
189<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 189
189
190<script> 191 window.Shopify = window.Shopify || {}; 192 window.Shopify.MCP = window.Shopify.MCP || {}; 193 window.Shopify.MCP.enabled = true; 194 window.Shopify.MCP.shop = "testrendl2.myshopify.com"; 195 window.Shopify.MCP.mcpEndpoint = "https:\/\/rendl.es\/api\/mcp"; 196 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 197</script>
vendor: 1 bytes, line 197
197
198<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/rendl.es\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 199</script>
vendor: 1 bytes, line 199
199
200<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://rendl.es/cdn/shopifycloud/portable-wallets/latest/portable-wallets.es.js",t.type="module",document.head.appendChild(t)}}; 201</script>
vendor: 1 bytes, line 201
201
202<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 203 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 204</script>
vendor: 1 bytes, line 204
204
205<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 206</script>
vendor: 1 bytes, line 206
206
207<script id='scb4127' type='text/javascript' async='' src='https://rendl.es/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
207<script integrity="sha256-/LA1C2Bx6899fYCos0FS9qLj2opaGFm7AXrTUvBEb4s=" data-source-attribution="shopify.remote_product_tracking" data-shopify-remote-tracking="{"session_id":"01M46JGRTK0J68C9ZXG49XJKV6","publisher_shop_id":90979500330,"theme_id":190667424042,"theme_published":true,"theme_store_id":0,"placement":"collection","event_data":{"collection_id":500116816170,"collection_handle":"garden-post-light","total_products":19,"page_type":"collection"},"recommendations_tracking_enabled":true}" defer="defer" src="//rendl.es/cdn/shopifycloud/storefront/assets/storefront/remote_product_tracking-91d95044.js" crossorigin="anonymous"></script>
207 208<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://rendl.es/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 209<style id="shopify-accelerated-checkout-cart"> 210 #shopify-buyer-consent { 211 margin-top: 1em; 212 display: inline-block; 213 width: 100%; 214} 215 216#shopify-buyer-consent.hidden { 217 display: none; 218} 219 220#shopify-subscription-policy-button { 221 background: none; 222 border: none; 223 padding: 0; 224 text-decoration: underline; 225 font-size: inherit; 226 cursor: pointer; 227} 228 229#shopify-subscription-policy-button::before { 230 box-shadow: none; 231} 232 233 </style>
234<script id="sections-script" data-sections="header" defer="defer" src="//rendl.es/cdn/shop/t/33/compiled_assets/scripts.js?v=34764069574704968061788953306"></script>
vendor: 1 bytes, line 234
234
235<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
235 236 237 238 <style data-shopify> 239 @font-face { 240 font-family: Montserrat; 241 font-weight: 400; 242 font-style: normal; 243 font-display: swap; 244 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"), 245 url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff"); 246} 247 248 @font-face { 249 font-family: Montserrat; 250 font-weight: 700; 251 font-style: normal; 252 font-display: swap; 253 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n7.3c434e22befd5c18a6b4afadb1e3d77c128c7939.woff2") format("woff2"), 254 url("//rendl.es/cdn/fonts/montserrat/montserrat_n7.5d9fa6e2cae713c8fb539a9876489d86207fe957.woff") format("woff"); 255} 256 257 @font-face { 258 font-family: Montserrat; 259 font-weight: 400; 260 font-style: italic; 261 font-display: swap; 262 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_i4.5a4ea298b4789e064f62a29aafc18d41f09ae59b.woff2") format("woff2"), 263 url("//rendl.es/cdn/fonts/montserrat/montserrat_i4.072b5869c5e0ed5b9d2021e4c2af132e16681ad2.woff") format("woff"); 264} 265 266 @font-face { 267 font-family: Montserrat; 268 font-weight: 700; 269 font-style: italic; 270 font-display: swap; 271 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_i7.a0d4a463df4f146567d871890ffb3c80408e7732.woff2") format("woff2"), 272 url("//rendl.es/cdn/fonts/montserrat/montserrat_i7.f6ec9f2a0681acc6f8152c40921d2a4d2e1a2c78.woff") format("woff"); 273} 274 275 @font-face { 276 font-family: Montserrat; 277 font-weight: 400; 278 font-style: normal; 279 font-display: swap; 280 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"), 281 url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff"); 282} 283 284 285 @font-face { 286 font-family: Montserrat; 287 font-weight: 300; 288 font-style: normal; 289 font-display: swap; 290 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n3.29e699231893fd243e1620595067294bb067ba2a.woff2") format("woff2"), 291 url("//rendl.es/cdn/fonts/montserrat/montserrat_n3.64ed56f012a53c08a49d49bd7e0c8d2f46119150.woff") format("woff"); 292} 293 294 @font-face { 295 font-family: Montserrat; 296 font-weight: 400; 297 font-style: normal; 298 font-display: swap; 299 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2") format("woff2"), 300 url("//rendl.es/cdn/fonts/montserrat/montserrat_n4.a6c632ca7b62da89c3594789ba828388aac693fe.woff") format("woff"); 301} 302 303 @font-face { 304 font-family: Montserrat; 305 font-weight: 500; 306 font-style: normal; 307 font-display: swap; 308 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n5.07ef3781d9c78c8b93c98419da7ad4fbeebb6635.woff2") format("woff2"), 309 url("//rendl.es/cdn/fonts/montserrat/montserrat_n5.adf9b4bd8b0e4f55a0b203cdd84512667e0d5e4d.woff") format("woff"); 310} 311 312 @font-face { 313 font-family: Montserrat; 314 font-weight: 600; 315 font-style: normal; 316 font-display: swap; 317 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n6.1326b3e84230700ef15b3a29fb520639977513e0.woff2") format("woff2"), 318 url("//rendl.es/cdn/fonts/montserrat/montserrat_n6.652f051080eb14192330daceed8cd53dfdc5ead9.woff") format("woff"); 319} 320 321 @font-face { 322 font-family: Montserrat; 323 font-weight: 700; 324 font-style: normal; 325 font-display: swap; 326 src: url("//rendl.es/cdn/fonts/montserrat/montserrat_n7.3c434e22befd5c18a6b4afadb1e3d77c128c7939.woff2") format("woff2"), 327 url("//rendl.es/cdn/fonts/montserrat/montserrat_n7.5d9fa6e2cae713c8fb539a9876489d86207fe957.woff") format("woff"); 328} 329 330 331 332 :root, 333 .color-scheme-1 { 334 --color-background: 255,255,255; 335 336 --gradient-background: #ffffff; 337 338 339 340 341 --color-foreground: 18,18,18; 342 --color-background-contrast: 191,191,191; 343 --color-shadow: 18,18,18; 344 --color-button: 18,18,18; 345 --color-button-text: 255,255,255; 346 --color-secondary-button: 255,255,255; 347 --color-secondary-button-text: 18,18,18; 348 --color-link: 18,18,18; 349 --color-badge-foreground: 18,18,18; 350 --color-badge-background: 255,255,255; 351 --color-badge-border: 18,18,18; 352 --payment-terms-background-color: rgb(255 255 255); 353 --color-accent: rgba(255, 196, 82, 1); 354 } 355 356 357 .color-scheme-2 {
358 --color-background: 243,243,243; 359 360 --gradient-background: #f3f3f3; 361 362 363 364 365 --color-foreground: 18,18,18; 366 --color-background-contrast: 179,179,179; 367 --color-shadow: 18,18,18; 368 --color-button: 18,18,18; 369 --color-button-text: 243,243,243; 370 --color-secondary-button: 243,243,243; 371 --color-secondary-button-text: 18,18,18; 372 --color-link: 18,18,18; 373 --color-badge-foreground: 18,18,18; 374 --color-badge-background: 243,243,243; 375 --color-badge-border: 18,18,18; 376 --payment-terms-background-color: rgb(243 243 243); 377 --color-accent: rgba(255, 196, 82, 1); 378 } 379 380 381 .color-scheme-3 { 382 --color-background: 36,40,51; 383 384 --gradient-background: #242833; 385 386 387 388 389 --color-foreground: 255,255,255; 390 --color-background-contrast: 47,52,66; 391 --color-shadow: 18,18,18; 392 --color-button: 255,255,255; 393 --color-button-text: 0,0,0; 394 --color-secondary-button: 36,40,51; 395 --color-secondary-button-text: 255,255,255; 396 --color-link: 255,255,255; 397 --color-badge-foreground: 255,255,255; 398 --color-badge-background: 36,40,51; 399 --color-badge-border: 255,255,255; 400 --payment-terms-background-color: rgb(36 40 51); 401 --color-accent: rgba(255, 196, 82, 1); 402 } 403 404 405 .color-scheme-4 { 406 --color-background: 18,18,18; 407 408 --gradient-background: #121212; 409 410 411 412 413 --color-foreground: 255,255,255; 414 --color-background-contrast: 146,146,146; 415 --color-shadow: 18,18,18; 416 --color-button: 255,255,255; 417 --color-button-text: 18,18,18; 418 --color-secondary-button: 18,18,18; 419 --color-secondary-button-text: 255,255,255; 420 --color-link: 255,255,255; 421 --color-badge-foreground: 255,255,255; 422 --color-badge-background: 18,18,18; 423 --color-badge-border: 255,255,255; 424 --payment-terms-background-color: rgb(18 18 18); 425 --color-accent: rgba(255, 196, 82, 1); 426 } 427 428 429 .color-scheme-5 { 430 --color-background: 51,79,180; 431 432 --gradient-background: #334fb4; 433 434 435 436 437 --color-foreground: 255,255,255; 438 --color-background-contrast: 23,35,81; 439 --color-shadow: 18,18,18; 440 --color-button: 255,255,255; 441 --color-button-text: 51,79,180; 442 --color-secondary-button: 51,79,180; 443 --color-secondary-button-text: 255,255,255; 444 --color-link: 255,255,255; 445 --color-badge-foreground: 255,255,255; 446 --color-badge-background: 51,79,180; 447 --color-badge-border: 255,255,255; 448 --payment-terms-background-color: rgb(51 79 180); 449 --color-accent: rgba(255, 196, 82, 1); 450 } 451 452 453 .color-scheme-b7fd32f7-ad20-4618-9c60-c70ce84b3218 { 454 --color-background: 255,255,255; 455 456 --gradient-background: #ffffff; 457 458 459 460 461 --color-foreground: 18,18,18; 462 --color-background-contrast: 191,191,191; 463 --color-shadow: 18,18,18; 464 --color-button: 18,18,18; 465 --color-button-text: 255,255,255; 466 --color-secondary-button: 255,255,255; 467 --color-secondary-button-text: 18,18,18; 468 --color-link: 18,18,18; 469 --color-badge-foreground: 18,18,18; 470 --color-badge-background: 255,255,255; 471 --color-badge-border: 18,18,18; 472 --payment-terms-background-color: rgb(255 255 255); 473 --color-accent: rgba(255, 196, 82, 1); 474 } 475 476 477 body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-b7fd32f7-ad20-4618-9c60-c70ce84b3218 { 478 color: rgba(var(--color-foreground), 0.75); 479 background-color: rgb(var(--color-background)); 480 } 481 482 :root { 483 --font-body-family: Montserrat, sans-serif; 484 --font-body-style: normal; 485 --font-body-weight: 400; 486 --font-body-weight-bold: 700; 487 488 --font-heading-family: Montserrat, sans-serif; 489 --font-heading-style: normal; 490 --font-heading-weight: 400; 491 492 --font-body-scale: 1.0; 493 --font-heading-scale: 1.0; 494 495 --media-padding: px; 496 --media-border-opacity: 0.05; 497 --media-border-width: 1px; 498 --media-radius: 0px;
499 --media-shadow-opacity: 0.0; 500 --media-shadow-horizontal-offset: 0px; 501 --media-shadow-vertical-offset: 4px; 502 --media-shadow-blur-radius: 5px; 503 --media-shadow-visible: 0; 504 505 --page-width: 120rem; 506 --page-width-margin: 0rem; 507 508 --product-card-image-padding: 0.0rem; 509 --product-card-corner-radius: 0.0rem; 510 --product-card-text-alignment: left; 511 --product-card-border-width: 0.0rem; 512 --product-card-border-opacity: 0.1; 513 --product-card-shadow-opacity: 0.0; 514 --product-card-shadow-visible: 0; 515 --product-card-shadow-horizontal-offset: 0.0rem; 516 --product-card-shadow-vertical-offset: 0.4rem; 517 --product-card-shadow-blur-radius: 0.5rem; 518 519 --collection-card-image-padding: 0.0rem; 520 --collection-card-corner-radius: 0.0rem; 521 --collection-card-text-alignment: left; 522 --collection-card-border-width: 0.0rem; 523 --collection-card-border-opacity: 0.1; 524 --collection-card-shadow-opacity: 0.0; 525 --collection-card-shadow-visible: 0; 526 --collection-card-shadow-horizontal-offset: 0.0rem; 527 --collection-card-shadow-vertical-offset: 0.4rem; 528 --collection-card-shadow-blur-radius: 0.5rem; 529 530 --blog-card-image-padding: 0.0rem; 531 --blog-card-corner-radius: 0.0rem; 532 --blog-card-text-alignment: left; 533 --blog-card-border-width: 0.0rem; 534 --blog-card-border-opacity: 0.1; 535 --blog-card-shadow-opacity: 0.0; 536 --blog-card-shadow-visible: 0; 537 --blog-card-shadow-horizontal-offset: 0.0rem; 538 --blog-card-shadow-vertical-offset: 0.4rem; 539 --blog-card-shadow-blur-radius: 0.5rem; 540 541 --badge-corner-radius: 4.0rem; 542 543 --popup-border-width: 1px; 544 --popup-border-opacity: 0.1; 545 --popup-corner-radius: 0px; 546 --popup-shadow-opacity: 0.05; 547 --popup-shadow-horizontal-offset: 0px; 548 --popup-shadow-vertical-offset: 4px; 549 --popup-shadow-blur-radius: 5px; 550 551 --drawer-border-width: 1px; 552 --drawer-border-opacity: 0.1; 553 --drawer-shadow-opacity: 0.0; 554 --drawer-shadow-horizontal-offset: 0px; 555 --drawer-shadow-vertical-offset: 4px; 556 --drawer-shadow-blur-radius: 5px; 557 558 --spacing-sections-desktop: 0px; 559 --spacing-sections-mobile: 0px; 560 561 --grid-desktop-vertical-spacing: 8px; 562 --grid-desktop-horizontal-spacing: 8px; 563 --grid-mobile-vertical-spacing: 4px; 564 --grid-mobile-horizontal-spacing: 4px; 565 566 --text-boxes-border-opacity: 0.1; 567 --text-boxes-border-width: 0px; 568 --text-boxes-radius: 0px; 569 --text-boxes-shadow-opacity: 0.0; 570 --text-boxes-shadow-visible: 0; 571 --text-boxes-shadow-horizontal-offset: 0px; 572 --text-boxes-shadow-vertical-offset: 4px; 573 --text-boxes-shadow-blur-radius: 5px; 574 575 --buttons-radius: 0px; 576 --buttons-radius-outset: 0px; 577 --buttons-border-width: 1px; 578 --buttons-border-opacity: 1.0; 579 --buttons-shadow-opacity: 0.0; 580 --buttons-shadow-visible: 0; 581 --buttons-shadow-horizontal-offset: 0px; 582 --buttons-shadow-vertical-offset: 4px; 583 --buttons-shadow-blur-radius: 5px; 584 --buttons-border-offset: 0px; 585 586 --inputs-radius: 0px; 587 --inputs-border-width: 1px; 588 --inputs-border-opacity: 0.55; 589 --inputs-shadow-opacity: 0.0; 590 --inputs-shadow-horizontal-offset: 0px; 591 --inputs-margin-offset: 0px; 592 --inputs-shadow-vertical-offset: 4px; 593 --inputs-shadow-blur-radius: 5px; 594 --inputs-radius-outset: 0px; 595 596 --variant-pills-radius: 40px; 597 --variant-pills-border-width: 1px; 598 --variant-pills-border-opacity: 0.55; 599 --variant-pills-shadow-opacity: 0.0; 600 --variant-pills-shadow-horizontal-offset: 0px; 601 --variant-pills-shadow-vertical-offset: 4px; 602 --variant-pills-shadow-blur-radius: 5px; 603 --font-weight-light: 300; 604 --font-weight-regular: 400; 605 --font-weight-medium: 500; 606 --font-weight-semibold: 600; 607 --font-weight-bold: 700; 608 } 609 610 *, 611 *::before, 612 *::after { 613 box-sizing: inherit; 614 } 615 616 html { 617 box-sizing: border-box; 618 font-size: calc(var(--font-body-scale) * 62.5%); 619 height: 100%; 620 } 621 622 body { 623 display: grid; 624 grid-template-rows: auto auto 1fr auto; 625 grid-template-columns: 100%; 626 min-height: 100%; 627 margin: 0; 628 font-size: 1.5rem; 629 letter-spacing: 0.06rem; 630 line-height: calc(1 + 0.8 / var(--font-body-scale)); 631 font-family: var(--font-body-family); 632 font-style: var(--font-body-style); 633 font-weight: var(--font-body-weight); 634 } 635 636 @media screen and (min-width: 750px) { 637 body { 638 font-size: 1.6rem; 639 } 640 } 641 642 643 .font-light { 644 font-weight: var(--font-weight-light); 645 } 646 .font-regular { 647 font-weight: var(--font-weight-regular); 648 } 649 .font-medium { 650 font-weight: var(--font-weight-medium); 651 } 652 .font-semibold { 653 font-weight: var(--font-weight-semibold); 654 } 655 .font-bold { 656 font-weight: var(--font-weight-bold); 657 } 658 </style> 659 660 <link href="//rendl.es/cdn/shop/t/33/assets/base.css?v=6048713975046595741788953233" rel="stylesheet" type="text/css" media="all" /> 661 <link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-cart-items.css?v=123238115697927560811788953233" media="print" onload="this.media='all'"> 662 <link rel="preload" as="font" href="//rendl.es/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" type="font/woff2" crossorigin> 663 664 665 <link rel="preload" as="font" href="//rendl.es/cdn/fonts/montserrat/montserrat_n4.81949fa0ac9fd2021e16436151e8eaa539321637.woff2" type="font/woff2" crossorigin> 666 667<link href="//rendl.es/cdn/shop/t/33/assets/component-localization-form.css?v=170315343355214948141788953230" rel="stylesheet" type="text/css" media="all" /> 668
668<script src="//rendl.es/cdn/shop/t/33/assets/localization-form.js?v=144176611646395275351788953230" defer="defer"></script>
668<link 669 rel="stylesheet" 670 href="//rendl.es/cdn/shop/t/33/assets/component-predictive-search.css?v=118923337488134913561788953233" 671 media="print" 672 onload="this.media='all'" 673 >
673<script> 674 if (Shopify.designMode) { 675 document.documentElement.classList.add('shopify-design-mode'); 676 } 677 </script>
677 678 <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
679<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 90979500330,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "collection"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 679
679
680<script> 681 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 682</script>
vendor: 1 bytes, line 682
682
683<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
683).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 90979500330,storefrontBaseUrl: "https://rendl.cz",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://rendl.es/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2491679018","configuration":"{\"tagID\":\"2612484755010\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7ae565e198624b39e0856d352b9a6b4c","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2432336170","configuration":"{\"accountID\":\"testrendl2.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"61cdc6f66ca0193cd967e6edfba19bd3","type":"APP","apiClientId":201313320961,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]}
683,"dataSharingState":"unrestricted"},{"id":"1873543466","configuration":"{\"accountID\":\"testrendl2\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4f82d0323b06a4642fbff9b42c9979eb","type":"APP","apiClientId":12388204545,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1540522282","configuration":"{\"pixel_id\":\"381126055899649\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1444315434","configuration":"{\"accountID\":\"testrendl2.myshopify.com\",\"enabled\":\"true\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3311197d941bbf27e929f7ebdf03dfa2","type":"APP","apiClientId":233009709057,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1314455850","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\",\\\"G-KZP30P12D0\\\"],\\\"target_country\\\":\\\"DE\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/P5ObCMK1htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/YLu6CM61htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-0VPHL20KSY\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/hHW4CMu1htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-0VPHL20KSY\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/pmdWCL-1htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/g7oeCMi1htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-0VPHL20KSY\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/rSZOCPW4htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-0VPHL20KSY\\\",\\\"AW-811609763\\\/YVcTCMW1htoaEKPdgIMD\\\",\\\"G-KZP30P12D0\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-0VPHL20KSY\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Rendl Light Studio","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"testrendl2.myshopify.com","countryCode":"CZ","storefrontUrl":"https:\/\/rendl.es"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"9746642796842","handle":"torin-30-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387454583082","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746642469162","handle":"torin-60-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387453239594","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746991874346","handle":"brenda-60-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388168728874","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746991120682","handle":"jean-50-bollard-with-power-sockets-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388164895018","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746956288298","handle":"abax-65-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388007575850","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746921161002","handle":"ponder-65-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387877683498","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746936529194","handle":"clyde-60-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387977068842","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9785195528490","handle":"quinn-60","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388219093290","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746933023018","handle":"elia-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387954622762","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746921586986","handle":"ponder-20-wall-or-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387878601002","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746651185450","handle":"gardien-65-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387475128618","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746963398954","handle":"treeza-led-25-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388038312234","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746991612202","handle":"bonn-65-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388167581994","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746973196586","handle":"rina-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388078158122","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746962612522","handle":"sonet-450-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388029792554","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746991218986","handle":"king-30-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388164862250","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746963366186","handle":"treeza-65-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52388037427498","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746937053482","handle":"bonnie-80-bollard-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387977134378","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"9746931188010","handle":"bobo-rc-floor-lamp","isCollective":false,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52387944464682","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://rendl.es/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"190667424042","themePublished":"true","eventMetadataId":"200ef316-e7d4-438d-bead-b42cd876895e","pageType":"collection","resourceId":"500116816170","shopId":"90979500330","storefrontBaseUrl":"https:\/\/rendl.cz","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"collection_viewed\",{\"collection\":{\"id\":\"500116816170\",\"t
683itle\":\"Postes de jardÃn\",\"productVariants\":[{\"price\":{\"amount\":120.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"TORIN 30\",\"vendor\":\"Rendl\",\"id\":\"9746642796842\",\"untranslatedTitle\":\"TORIN 30\",\"url\":\"\/products\/torin-30-floor-lamp\",\"type\":\"\"},\"id\":\"52387454583082\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14169-1.jpg?v=1770944897\"},\"sku\":\"R14169\",\"title\":\"gris luminoso\",\"untranslatedTitle\":\"light grey\"},{\"price\":{\"amount\":178.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"TORIN 60\",\"vendor\":\"Rendl\",\"id\":\"9746642469162\",\"untranslatedTitle\":\"TORIN 60\",\"url\":\"\/products\/torin-60-floor-lamp\",\"type\":\"\"},\"id\":\"52387453239594\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14172-1.jpg?v=1770944896\"},\"sku\":\"R14172\",\"title\":\"negro\",\"untranslatedTitle\":\"black\"},{\"price\":{\"amount\":158.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"BRENDA 60\",\"vendor\":\"RENDL\",\"id\":\"9746991874346\",\"untranslatedTitle\":\"BRENDA 60\",\"url\":\"\/products\/brenda-60-floor-lamp\",\"type\":\"\"},\"id\":\"52388168728874\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14203-1.jpg?v=1745944128\"},\"sku\":\"R14203\",\"title\":\"negro\",\"untranslatedTitle\":\"black\"},{\"price\":{\"amount\":198.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"JEAN\",\"vendor\":\"RENDL\",\"id\":\"9746991120682\",\"untranslatedTitle\":\"JEAN\",\"url\":\"\/products\/jean-50-bollard-with-power-sockets-lamp\",\"type\":\"\"},\"id\":\"52388164895018\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14173-1.jpg?v=1745328075\"},\"sku\":\"R14173\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":268.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"ABAX 65\",\"vendor\":\"Rendl\",\"id\":\"9746956288298\",\"untranslatedTitle\":\"ABAX 65\",\"url\":\"\/products\/abax-65-bollard-lamp\",\"type\":\"\"},\"id\":\"52388007575850\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r12626-1.jpg?v=1767748665\"},\"sku\":\"R12626\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":158.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"PONDER 65\",\"vendor\":\"Rendl\",\"id\":\"9746921161002\",\"untranslatedTitle\":\"PONDER 65\",\"url\":\"\/products\/ponder-65-bollard-lamp\",\"type\":\"\"},\"id\":\"52387877683498\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r10433-1.jpg?v=1770945925\"},\"sku\":\"R10433\",\"title\":\"negro\",\"untranslatedTitle\":\"black\"},{\"price\":{\"amount\":98.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"CLYDE DE PIÃ\",\"vendor\":\"Rendl\",\"id\":\"9746936529194\",\"untranslatedTitle\":\"CLYDE BOLLARD\",\"url\":\"\/products\/clyde-60-bollard-lamp\",\"type\":\"\"},\"id\":\"52387977068842\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r13638-1.jpg?v=1745935426\"},\"sku\":\"R13638\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":158.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"QUINN 60\",\"vendor\":\"RENDL\",\"id\":\"9785195528490\",\"untranslatedTitle\":\"QUINN 60\",\"url\":\"\/products\/quinn-60\",\"type\":\"\"},\"id\":\"52388219093290\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14497-1.jpg?v=1749172938\"},\"sku\":\"R14497\",\"title\":\"negro \/ vidrio ámbar\",\"untranslatedTitle\":\"black ambercolored glass\"},{\"price\":{\"amount\":158.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"ELIA DE PIÃ\",\"vendor\":\"Rendl\",\"id\":\"9746933023018\",\"untranslatedTitle\":\"ELIA BOLLARD\",\"url\":\"\/products\/elia-floor-lamp\",\"type\":\"\"},\"id\":\"52387954622762\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r13932-1.jpg?v=1767662078\"},\"sku\":\"R13932\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":120.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"PONDER 20\",\"vendor\":\"Rendl\",\"id\":\"9746921586986\",\"untranslatedTitle\":\"PONDER 20\",\"url\":\"\/products\/ponder-20-wall-or-bollard-lamp\",\"type\":\"\"},\"id\":\"52387878601002\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r10367-1.jpg?v=1771032157\"},\"sku\":\"R10367\",\"title\":\"negro\",\"untranslatedTitle\":\"black\"},{\"price\":{\"amount\":178.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"GARDIEN 65\",\"vendor\":\"Rendl\",\"id\":\"9746651185450\",\"untranslatedTitle\":\"GARDIEN 65\",\"url\":\"\/products\/gardien-65-bollard-lamp\",\"type\":\"\"},\"id\":\"52387475128618\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r13758-1.jpg?v=1770772276\"},\"sku\":\"R13758\",\"title\":\"negro\",\"untranslatedTitle\":\"black\"},{\"price\":{\"amount\":138.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"TREEZA LED 25\",\"vendor\":\"Rendl\",\"id\":\"9746963398954\",\"untranslatedTitle\":\"TREEZA LED 25\",\"url\":\"\/products\/treeza-led-25-bollard-lamp\",\"type\":\"\"},\"id\":\"52388038312234\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r10380-1.jpg?v=1745940170\"},\"sku\":\"R10380\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":178.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"BONN\",\"vendor\":\"RENDL\",\"id\":\"9746991612202\",\"untranslatedTitle\":\"BONN\",\"url\":\"\/products\/bonn-65-floor-lamp\",\"type\":\"\"},\"id\":\"52388167581994\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14197-1.jpg?v=1745944104\"},\"sku\":\"R14197\",\"title\":\"gris negruzco\",\"untranslatedTitle\":\"black grey\"},{\"price\":{\"amount\":198.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"RINA DE PIÃ\",\"vendor\":\"RENDL\",\"id\":\"9746973196586\",\"untranslatedTitle\":\"RINA BOLLARD\",\"url\":\"\/products\/rina-bollard-lamp\",\"type\":\"\"},\"id\":\"52388078158122\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r12515-1.jpg?v=1745942076\"},\"sku\":\"R12515\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":188.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"SONET 450\",\"vendor\":\"Rendl\",\"id\":\"9746962612522\",\"untranslatedTitle\":\"SONET 450\",\"url\":\"\/products\/sonet-450-bollard-lamp\",\"type\":\"\"},\"id\":\"52388029792554\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r11171-1.jpg?v=1759108267\"}
683,\"sku\":\"R11171\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":229.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"KING 30\",\"vendor\":\"RENDL\",\"id\":\"9746991218986\",\"untranslatedTitle\":\"KING 30\",\"url\":\"\/products\/king-30-floor-lamp\",\"type\":\"\"},\"id\":\"52388164862250\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r14174-1.jpg?v=1776755117\"},\"sku\":\"R14174\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":150.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"TREEZA 65\",\"vendor\":\"Rendl\",\"id\":\"9746963366186\",\"untranslatedTitle\":\"TREEZA 65\",\"url\":\"\/products\/treeza-65-bollard-lamp\",\"type\":\"\"},\"id\":\"52388037427498\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r10441-1.jpg?v=1745940165\"},\"sku\":\"R10441\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":120.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"BONNIE DE PIÃ\",\"vendor\":\"Rendl\",\"id\":\"9746937053482\",\"untranslatedTitle\":\"BONNIE BOLLARD\",\"url\":\"\/products\/bonnie-80-bollard-lamp\",\"type\":\"\"},\"id\":\"52387977134378\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r13636-1.jpg?v=1745935423\"},\"sku\":\"R13636\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"},{\"price\":{\"amount\":138.0,\"currencyCode\":\"EUR\"},\"product\":{\"title\":\"BOBO RC DE PIÃ\",\"vendor\":\"Rendl\",\"id\":\"9746931188010\",\"untranslatedTitle\":\"BOBO RC BOLLARD\",\"url\":\"\/products\/bobo-rc-floor-lamp\",\"type\":\"\"},\"id\":\"52387944464682\",\"image\":{\"src\":\"\/\/rendl.es\/cdn\/shop\/files\/r13936-1.jpg?v=1745935192\"},\"sku\":\"R13936\",\"title\":\"gris antracita\",\"untranslatedTitle\":\"anthracite grey\"}]}}]]"});})();</script>
683<script> 684 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 685 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 686 window.ShopifyAnalytics.meta.currency = 'EUR'; 687 var meta = {"products":[{"id":9746642796842,"gid":"gid:\/\/shopify\/Product\/9746642796842","vendor":"Rendl","type":"","handle":"torin-30-floor-lamp","variants":[{"id":52387454583082,"price":12000,"name":"TORIN 30 - gris luminoso","public_title":"gris luminoso","sku":"R14169"},{"id":52387454615850,"price":12000,"name":"TORIN 30 - negro","public_title":"negro","sku":"R14170"}],"remote":false,"collective":false},{"id":9746642469162,"gid":"gid:\/\/shopify\/Product\/9746642469162","vendor":"Rendl","type":"","handle":"torin-60-floor-lamp","variants":[{"id":52387453239594,"price":17800,"name":"TORIN 60 - negro","public_title":"negro","sku":"R14172"},{"id":52387453272362,"price":17800,"name":"TORIN 60 - gris luminoso","public_title":"gris luminoso","sku":"R14171"}],"remote":false,"collective":false},{"id":9746991874346,"gid":"gid:\/\/shopify\/Product\/9746991874346","vendor":"RENDL","type":"","handle":"brenda-60-floor-lamp","variants":[{"id":52388168728874,"price":15800,"name":"BRENDA 60 - negro","public_title":"negro","sku":"R14203"}],"remote":false,"collective":false},{"id":9746991120682,"gid":"gid:\/\/shopify\/Product\/9746991120682","vendor":"RENDL","type":"","handle":"jean-50-bollard-with-power-sockets-lamp","variants":[{"id":52388164895018,"price":19800,"name":"JEAN - gris antracita","public_title":"gris antracita","sku":"R14173"}],"remote":false,"collective":false},{"id":9746956288298,"gid":"gid:\/\/shopify\/Product\/9746956288298","vendor":"Rendl","type":"","handle":"abax-65-bollard-lamp","variants":[{"id":52388007575850,"price":26800,"name":"ABAX 65 - gris antracita","public_title":"gris antracita","sku":"R12626"}],"remote":false,"collective":false},{"id":9746921161002,"gid":"gid:\/\/shopify\/Product\/9746921161002","vendor":"Rendl","type":"","handle":"ponder-65-bollard-lamp","variants":[{"id":52387877683498,"price":15800,"name":"PONDER 65 - negro","public_title":"negro","sku":"R10433"}],"remote":false,"collective":false},{"id":9746936529194,"gid":"gid:\/\/shopify\/Product\/9746936529194","vendor":"Rendl","type":"","handle":"clyde-60-bollard-lamp","variants":[{"id":52387977068842,"price":9800,"name":"CLYDE DE PIà - gris antracita","public_title":"gris antracita","sku":"R13638"}],"remote":false,"collective":false},{"id":9785195528490,"gid":"gid:\/\/shopify\/Product\/9785195528490","vendor":"RENDL","type":"","handle":"quinn-60","variants":[{"id":52388219093290,"price":15800,"name":"QUINN 60 - negro \/ vidrio ámbar","public_title":"negro \/ vidrio ámbar","sku":"R14497"}],"remote":false,"collective":false},{"id":9746933023018,"gid":"gid:\/\/shopify\/Product\/9746933023018","vendor":"Rendl","type":"","handle":"elia-floor-lamp","variants":[{"id":52387954622762,"price":15800,"name":"ELIA DE PIà - gris antracita","public_title":"gris antracita","sku":"R13932"}],"remote":false,"collective":false},{"id":9746921586986,"gid":"gid:\/\/shopify\/Product\/9746921586986","vendor":"Rendl","type":"","handle":"ponder-20-wall-or-bollard-lamp","variants":[{"id":52387878601002,"price":12000,"name":"PONDER 20 - negro","public_title":"negro","sku":"R10367"}],"remote":false,"collective":false},{"id":9746651185450,"gid":"gid:\/\/shopify\/Product\/9746651185450","vendor":"Rendl","type":"","handle":"gardien-65-bollard-lamp","variants":[{"id":52387475128618,"price":17800,"name":"GARDIEN 65 - negro","public_title":"negro","sku":"R13758"}],"remote":false,"collective":false},{"id":9746963398954,"gid":"gid:\/\/shopify\/Product\/9746963398954","vendor":"Rendl","type":"","handle":"treeza-led-25-bollard-lamp","variants":[{"id":52388038312234,"price":13800,"name":"TREEZA LED 25 - gris antracita","public_title":"gris antracita","sku":"R10380"}],"remote":false,"collective":false},{"id":9746991612202,"gid":"gid:\/\/shopify\/Product\/9746991612202","vendor":"RENDL","type":"","handle":"bonn-65-floor-lamp","variants":[{"id":52388167581994,"price":17800,"name":"BONN - gris negruzco","public_title":"gris negruzco","sku":"R14197"}],"remote":false,"collective":false}
687,{"id":9746973196586,"gid":"gid:\/\/shopify\/Product\/9746973196586","vendor":"RENDL","type":"","handle":"rina-bollard-lamp","variants":[{"id":52388078158122,"price":19800,"name":"RINA DE PIÃ - gris antracita","public_title":"gris antracita","sku":"R12515"}],"remote":false,"collective":false},{"id":9746962612522,"gid":"gid:\/\/shopify\/Product\/9746962612522","vendor":"Rendl","type":"","handle":"sonet-450-bollard-lamp","variants":[{"id":52388029792554,"price":18800,"name":"SONET 450 - gris antracita","public_title":"gris antracita","sku":"R11171"}],"remote":false,"collective":false},{"id":9746991218986,"gid":"gid:\/\/shopify\/Product\/9746991218986","vendor":"RENDL","type":"","handle":"king-30-floor-lamp","variants":[{"id":52388164862250,"price":22900,"name":"KING 30 - gris antracita","public_title":"gris antracita","sku":"R14174"}],"remote":false,"collective":false},{"id":9746963366186,"gid":"gid:\/\/shopify\/Product\/9746963366186","vendor":"Rendl","type":"","handle":"treeza-65-bollard-lamp","variants":[{"id":52388037427498,"price":15000,"name":"TREEZA 65 - gris antracita","public_title":"gris antracita","sku":"R10441"}],"remote":false,"collective":false},{"id":9746937053482,"gid":"gid:\/\/shopify\/Product\/9746937053482","vendor":"Rendl","type":"","handle":"bonnie-80-bollard-lamp","variants":[{"id":52387977134378,"price":12000,"name":"BONNIE DE PIÃ - gris antracita","public_title":"gris antracita","sku":"R13636"}],"remote":false,"collective":false},{"id":9746931188010,"gid":"gid:\/\/shopify\/Product\/9746931188010","vendor":"Rendl","type":"","handle":"bobo-rc-floor-lamp","variants":[{"id":52387944464682,"price":13800,"name":"BOBO RC DE PIÃ - gris antracita","public_title":"gris antracita","sku":"R13936"}],"remote":false,"collective":false}],"page":{"pageType":"collection","resourceType":"collection","resourceId":500116816170,"requestId":"55b2b479-e3dd-4613-be6f-0859cc247668-1791222112"}}; 688 for (var attr in meta) { 689 window.ShopifyAnalytics.meta[attr] = meta[attr]; 690 } 691</script>
vendor: 1 bytes, line 691
691
692<script class="analytics"> 693 (function () { 694 var customDocumentWrite = function(content) { 695 var jquery = null; 696 697 if (window.jQuery) { 698 jquery = window.jQuery; 699 } else if (window.Checkout && window.Checkout.$) { 700 jquery = window.Checkout.$; 701 } 702 703 if (jquery) { 704 jquery('body').append(content); 705 } 706 }; 707 708 var hasLoggedConversion = function(token) { 709 if (token) { 710 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 711 } 712 return false; 713 } 714 715 var setCookieIfConversion = function(token) { 716 if (token) { 717 var twoMonthsFromNow = new Date(Date.now()); 718 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 719 720 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 721 } 722 } 723 724 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 725 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 726 if (trekkie.integrations) { 727 return; 728 } 729 trekkie.methods = [ 730 'identify', 731 'page', 732 'ready', 733 'track', 734 'trackForm', 735 'trackLink' 736 ]; 737 trekkie.factory = function(method) { 738 return function() { 739 var args = Array.prototype.slice.call(arguments); 740 args.unshift(method); 741 trekkie.push(args); 742 if (method == 'track' || method == 'page') { 743 var pageUrl; 744 try { 745 pageUrl = window.location.href; 746 } catch (e) {} 747 var pageReferrer; 748 try { 749 pageReferrer = document.referrer; 750 } catch (e) {} 751 try { 752 if (window.__TREKKIE_SHIM_QUEUE == null) { 753 window.__TREKKIE_SHIM_QUEUE = []; 754 } 755 window.__TREKKIE_SHIM_QUEUE.push({ 756 from: 'trekkie-stub', 757 method: method, 758 args: args.slice(1), 759 pageContext: { 760 url: pageUrl, 761 referrer: pageReferrer 762 } 763 }); 764 } catch (e) { 765 // no-op 766 } 767 } 768 return trekkie; 769 }; 770 }; 771 for (var i = 0; i < trekkie.methods.length; i++) { 772 var key = trekkie.methods[i]; 773 trekkie[key] = trekkie.factory(key); 774 } 775 trekkie.load = function(config) { 776 trekkie.config = config || {}; 777 trekkie.config.initialDocumentCookie = document.cookie; 778 var first = document.getElementsByTagName('script')[0]; 779var script = document.createElement('script'); 780script.type = 'text/javascript'; 781script.onerror = function(e) { 782 var scriptFallback = document.createElement('script'); 783 scriptFallback.type = 'text/javascript'; 784 scriptFallback.onerror = function(error) { 785 var Monorail = { 786 produce: function produce(monorailDomain, schemaId, payload) { 787 var currentMs = new Date().getTime(); 788 var event = { 789 schema_id: schemaId, 790 payload: payload, 791 metadata: { 792 event_created_at_ms: currentMs, 793 event_sent_at_ms: currentMs 794 } 795 }; 796 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 797 }, 798 sendRequest: function sendRequest(endpointUrl, payload) { 799 // Try the sendBeacon API 800 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 801 var blobData = new window.Blob([payload], { 802 type: 'text/plain' 803 }); 804 805 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 806 return true; 807 } // sendBeacon was not successful 808 809 } // XHR beacon 810 811 var xhr = new XMLHttpRequest(); 812 813 try { 814 xhr.open('POST', endpointUrl); 815 xhr.setRequestHeader('Content-Type', 'text/plain'); 816 xhr.send(payload); 817 } catch (e) { 818 console.log(e); 819 } 820 821 return false; 822 }, 823 isIos12: function isIos12() { 824 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 825 } 826 }; 827 Monorail.produce('monorail-edge.shopifysvc.com', 828 'trekkie_storefront_load_errors/1.1', 829 {shop_id: 90979500330, 830 theme_id: 190667424042, 831 app_name: "storefront", 832 context_url: window.location.href, 833 source_url: "//rendl.es/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 834 835 }; 836 scriptFallback.async = true; 837 scriptFallback.src = '//rendl.es/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 838 first.parentNode.insertBefore(scriptFallback, first); 839}; 840script.async = true; 841script.src = '//rendl.es/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 842first.parentNode.insertBefore(script, first); 843 844 }; 845 trekkie.load( 846 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":90979500330,"isMerchantRequest":null,"themeId":190667424042,"themeCityHash":"785154359683724440","contentLanguage":"es","currency":"EUR","eventMetadataId":"200ef316-e7d4-438d-bead-b42cd876895e"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 847 ); 848 849 var loaded = false;
850 trekkie.ready(function() { 851 if (loaded) return; 852 loaded = true; 853 854 window.ShopifyAnalytics.lib = window.trekkie; 855 856 var originalDocumentWrite = document.write; 857 document.write = customDocumentWrite; 858 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 859 document.write = originalDocumentWrite; 860 861 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 862 var token = match? match[1]: undefined; 863 if (!hasLoggedConversion(token)) { 864 setCookieIfConversion(token); 865 window.ShopifyAnalytics.lib.track("Viewed Product Category",{"currency":"EUR","category":"Collection: garden-post-light","collectionName":"garden-post-light","collectionId":500116816170,"nonInteraction":true},undefined,undefined,{"shopifyEmitted":true}); 866 } 867 }); 868 869 window.ShopifyAnalytics.lib.page(null,{"pageType":"collection","resourceType":"collection","resourceId":500116816170,"requestId":"55b2b479-e3dd-4613-be6f-0859cc247668-1791222112","shopifyEmitted":true}); 870 871 var eventsListenerScript = document.createElement('script'); 872 eventsListenerScript.async = true; 873 eventsListenerScript.src = "//rendl.es/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 874 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 875})();</script>
vendor: 1 bytes, line 875
875
876<script 877 defer 878 src="https://rendl.es/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 879 data-application="storefront-renderer" 880 data-shop-id="90979500330" 881 data-render-region="gcp-us-central1" 882 data-page-type="collection" 883 data-theme-instance-id="190667424042" 884 data-theme-name="Dawn" 885 data-theme-version="15.2.0" 886 data-monorail-region="shop_domain" 887 data-resource-timing-sampling-rate="10" 888 data-shs="true" 889 data-shs-beacon="true" 890 data-shs-export-with-fetch="true" 891 data-shs-logs-sample-rate="1" 892 data-shs-beacon-endpoint="https://rendl.es/api/collect" 893></script>
893 894<meta name="shopify-y" content="7d0fbfbb-3807-45d4-a1d9-ac237529696d" data-expiration="1822779713000"><meta name="shopify-s" content="4d4592d5-363e-4fa0-8d73-ec126d7e3cc3" data-expiration="1791223913000"><meta name="new-cookie-storage-activated" content="t"> 895</head> 896 <!-- Google Tag Manager (noscript) -->
vendor: 70 bytes, lines 896-897
896 897 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
897GTM-P2X2969W
vendor: 87 bytes, lines 897-899
897" 898 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 899
899<!-- End Google Tag Manager (noscript) --> 900 <body class="gradient"> 901 <a class="skip-to-content-link button visually-hidden" href="#MainContent"> 902 Ir directamente al contenido 903 </a><!-- BEGIN sections: header-group --> 904<div id="shopify-section-sections--28113425695018__header" class="shopify-section shopify-section-group-header-group section-header"><link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-list-menu.css?v=151968516119678728991788953233" media="print" onload="this.media='all'"> 905<link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-search.css?v=165164710990765432851788953233" media="print" onload="this.media='all'"> 906<link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-menu-drawer.css?v=169695170300259980871788953231" media="print" onload="this.media='all'"> 907<link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-cart-notification.css?v=68547452378593066441788953234" media="print" onload="this.media='all'"><link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-price.css?v=55932055337519532011788953234" media="print" onload="this.media='all'"><link rel="stylesheet" href="//rendl.es/cdn/shop/t/33/assets/component-mega-menu.css?v=98444557934912130531788953231" media="print" onload="this.media='all'"><style> 908 /* Account badge styles */ 909 .header__icon--account { 910 position: relative; 911 } 912 913 .account-badge { 914 position: absolute; 915 top: -6px; 916 right: -8px; 917 background-color: #ed6346; 918 color: white; 919 border-radius: 50px; 920 padding: 10px; 921 font-size: 10px; 922 font-weight: normal; 923 line-height: 1; 924 width: 29px; 925 height: 29px; 926 display: flex; 927 align-items: center; 928 justify-content: center; 929 930 } 931 932 .account-badge__text { 933 font-size: 9px; 934 font-weight: 600; 935 color: white; 936 text-align: center; 937 line-height: 0.2; 938 } 939 940 /* Mobile badge styles */ 941 .account-badge--mobile { 942 top: -6px; 943 right: -6px; 944 font-size: 9px; 945 min-width: 14px; 946 height: 14px; 947 padding: 1px 4px; 948 } 949 950 .account-badge--mobile .account-badge__text { 951 font-size: 9px; 952 } 953 954 /* Responsive adjustments */ 955 @media screen and (max-width: 749px) { 956 .account-badge { 957 top: -6px; 958 right: -6px; 959 font-size: 9px; 960 min-width: 14px; 961 height: 14px; 962 padding: 1px 4px; 963 } 964 965 .account-badge__text { 966 font-size: 9px; 967 } 968 } 969 970 header-drawer { 971 justify-self: start; 972 margin-left: -1.2rem; 973 }@media screen and (min-width: 990px) { 974 header-drawer { 975 display: none; 976 } 977 }.menu-drawer-container { 978 display: flex; 979 } 980 981 .list-menu { 982 list-style: none; 983 padding: 0; 984 margin: 0; 985 } 986 987 .list-menu--gap { 988 gap: 1rem; 989 } 990 991 .list-menu--inline { 992 display: inline-flex; 993 flex-wrap: wrap; 994 } 995 996 .list-menu--inline--gap { 997 gap: 1rem; 998 } 999 1000 summary.list-menu__item { 1001 padding-right: 2.7rem; 1002 } 1003 1004 .list-menu__item { 1005 display: flex; 1006 align-items: center; 1007 line-height: calc(1 + 0.3 / var(--font-body-scale)); 1008 } 1009 1010 .list-menu__item--link { 1011 text-decoration: none; 1012 padding-bottom: 1rem; 1013 padding-top: 1rem; 1014 line-height: calc(1 + 0.8 / var(--font-body-scale)); 1015 } 1016 1017 .list-menu__item--svg-wrapper { 1018 padding: 0 12px; 1019 } 1020 1021 @media screen and (min-width: 750px) { 1022 .list-menu__item--link { 1023 padding-bottom: 0.5rem; 1024 padding-top: 0.5rem; 1025 } 1026 } 1027</style><style data-shopify>.header { 1028 padding: 10px 3rem 10px 3rem; 1029 } 1030 1031 .section-header { 1032 position: sticky; /* This is for fixing a Safari z-index issue. PR #2147 */ 1033 margin-bottom: 0px; 1034 z-index: 9999 !important; /* Added higher Z-index */ 1035 } 1036 1037 @media screen and (min-width: 750px) { 1038 .section-header { 1039 margin-bottom: 0px; 1040 z-index: 9999 !important; /* Added higher Z-index */ 1041 } 1042 } 1043 1044 @media screen and (min-width: 990px) { 1045 .header { 1046 padding-top: 20px; 1047 padding-bottom: 20px; 1048 } 1049 }</style>
1049<script src="//rendl.es/cdn/shop/t/33/assets/cart-notification.js?v=74254514470139533241788953234" defer="defer"></script>
1049<sticky-header data-sticky-type="always" class="header-wrapper color-scheme-1 gradient header-wrapper--border-bottom"><header class="header header--middle-left header--mobile-left page-width header--has-menu header--has-account header--has-localizations"> 1050 1051<style> 1052 .mega-menu__icon--mobile { 1053 display: flex; 1054 align-items: center; 1055 justify-content: center; 1056 margin-right: 8px; 1057 } 1058 1059 .mega-menu__icon--mobile svg { 1060 width: 24px; 1061 height: 24px; 1062 } 1063 1064 /* Mobile account section styles */ 1065 .menu-drawer__account-section { 1066 display: flex; 1067 flex-direction: column; 1068 gap: 1rem; 1069 padding-bottom: 30px; 1070 } 1071 1072 .menu-drawer__account-section .menu-drawer__account { 1073 margin-bottom: 0; 1074 font-size: 18px !important; 1075 } 1076 1077 .menu-drawer__account-section .menu-drawer__account:last-child { 1078 margin-bottom: 0; 1079 } 1080 1081 /* Ensure account buttons are visible on mobile and tablet */ 1082 @media screen and (max-width: 989px) { 1083 .menu-drawer__account { 1084 display: flex !important; 1085 visibility: visible !important; 1086 opacity: 1 !important; 1087 } 1088 1089 .menu-drawer__account-section { 1090 display: flex !important; 1091 visibility: visible !important; 1092 } 1093 1094 /* Reduce padding to minimize empty space */ 1095 .menu-drawer__utility-links { 1096 padding: 1rem 3rem !important; 1097 } 1098 } 1099 1100 /* Account icon styling for consistent spacing */ 1101 .menu-drawer__account-icon { 1102 display: flex; 1103 align-items: center; 1104 justify-content: center; 1105 width: 2rem; 1106 height: 2rem; 1107 margin-right: 1rem; 1108 flex-shrink: 0; 1109 } 1110 1111 .menu-drawer__account-icon img { 1112 width: 24px !important; 1113 height: 24px !important; 1114 margin: 0 !important; 1115 } 1116 1117 .menu-drawer__account-icon .svg-wrapper { 1118 width: 24px; 1119 height: 24px; 1120 display: flex; 1121 align-items: center; 1122 justify-content: center; 1123 } 1124</style> 1125 1126<header-drawer data-breakpoint="tablet"> 1127 <details id="Details-menu-drawer-container" class="menu-drawer-container"> 1128 <summary 1129 class="header__icon header__icon--menu header__icon--summary link focus-inset" 1130 aria-label="Menú" 1131 > 1132 <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-hamburger" viewBox="0 0 18 16"><path fill="currentColor" d="M1 .5a.5.5 0 1 0 0 1h15.71a.5.5 0 0 0 0-1zM.5 8a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1A.5.5 0 0 1 .5 8m0 7a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/></svg> 1133<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1134</span> 1135 </summary> 1136 <div id="menu-drawer" class="gradient menu-drawer motion-reduce color-scheme-1"> 1137 <div class="menu-drawer__inner-container"> 1138 <div class="menu-drawer__navigation-container"> 1139 <nav class="menu-drawer__navigation"> 1140 <ul class="menu-drawer__menu has-submenu list-menu" role="list"><li><a 1141 id="HeaderDrawer-downloads" 1142 href="/pages/downloads" 1143 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1144 1145 > 1146 Descargas 1147 </a></li><li><a 1148 id="HeaderDrawer-b2b-registration" 1149 href="/pages/b2b-registration-benefits" 1150 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1151 1152 > 1153 Registro B2B 1154 </a></li><li><a 1155 id="HeaderDrawer-blog" 1156 href="/blogs/news" 1157 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1158 1159 > 1160 Blog 1161 </a></li><li><a 1162 id="HeaderDrawer-contact" 1163 href="/pages/contact" 1164 class="menu-drawer__menu-item list-menu__item link link--text focus-inset" 1165 1166 > 1167 Contacto 1168 </a></li></ul> 1169 </nav> 1170 <div class="menu-drawer__utility-links"><!-- Login link for non-logged in users --> 1171 <a 1172 href="https://rendl.es/customer_authentication/redirect?locale=es®ion_country=ES" 1173 class="menu-drawer__account link focus-inset h5" 1174 rel="nofollow" 1175 >
1176 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg> 1177</span> 1178 Iniciar sesión 1179 </a><div class="menu-drawer__localization header-localization"><localization-form><form method="post" action="/localization" id="HeaderCountryMobileForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/collections/garden-post-light" /><div> 1180 <label class="visually-hidden" id="HeaderCountryMobileLabel" for="HeaderCountryMobileForm"> 1181 PaÃs/región 1182 </label> 1183 1184<div class="disclosure"> 1185 <button 1186 type="button" 1187 class="disclosure__button localization-form__select localization-selector link link--text caption-large" 1188 aria-expanded="false" 1189 aria-controls="HeaderCountryMobile-country-results" 1190 aria-describedby="HeaderCountryMobileLabel" 1191 > 1192 <span>España | 1193 EUR 1194 â¬</span> 1195 <svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 1196 1197 </button> 1198 <div class="disclosure__list-wrapper country-selector" hidden> 1199 <div class="country-filter"> 1200 1201 <div class="field"> 1202 <input 1203 class="country-filter__input field__input" 1204 id="country-filter-input" 1205 type="search" 1206 name="country_filter" 1207 value="" 1208 placeholder="Buscar" 1209 role="combobox" 1210 aria-owns="country-results" 1211 aria-controls="country-results" 1212 aria-haspopup="listbox" 1213 aria-autocomplete="list" 1214 autocorrect="off" 1215 autocomplete="off" 1216 autocapitalize="off" 1217 spellcheck="false" 1218 > 1219 <label class="field__label" for="country-filter-input">Buscar</label> 1220 <button 1221 type="reset" 1222 class="country-filter__reset-button field__button hidden" 1223 aria-label="Borrar término de búsqueda" 1224 ><svg fill="none" stroke="currentColor" class="icon icon-close" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8.5" stroke-opacity=".2"/><path stroke-linecap="round" stroke-linejoin="round" d="M11.83 11.83 6.172 6.17M6.229 11.885l5.544-5.77"/></svg> 1225</button> 1226 <div class="country-filter__search-icon field__button motion-reduce"><svg class="icon icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"> 1227 <circle cx="11" cy="11" r="8"/> 1228 <line x1="21" y1="21" x2="16.65" y2="16.65"/> 1229</svg></div> 1230 </div> 1231 1232 <button 1233 class="country-selector__close-button button--small link" 1234 type="button" 1235 aria-label="Cerrar" 1236 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1237</button> 1238 </div> 1239 <div id="sr-country-search-results" class="visually-hidden" aria-live="polite"></div> 1240 <div 1241 class="disclosure__list country-selector__list country-selector__list--with-multiple-currencies" 1242 id="HeaderCountryMobile-country-results" 1243 > 1244 1245 <ul role="list" class="list-unstyled countries"><li class="disclosure__item" tabindex="-1"> 1246 <a 1247 class="link link--text disclosure__link caption-large focus-inset" 1248 href="#" 1249 1250 data-value="DE" 1251 id="Alemania" 1252 >
1253 <span 1254 1255 class="visibility-hidden" 1256 1257 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1258</span> 1259 <span class="country">Alemania</span> 1260 <span class="localization-form__currency motion-reduce"> 1261 EUR 1262 â¬</span> 1263 </a> 1264 </li><li class="disclosure__item" tabindex="-1"> 1265 <a 1266 class="link link--text disclosure__link caption-large focus-inset" 1267 href="#" 1268 1269 data-value="AD" 1270 id="Andorra" 1271 > 1272 <span 1273 1274 class="visibility-hidden" 1275 1276 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1277</span> 1278 <span class="country">Andorra</span> 1279 <span class="localization-form__currency motion-reduce"> 1280 EUR 1281 â¬</span> 1282 </a> 1283 </li><li class="disclosure__item" tabindex="-1"> 1284 <a 1285 class="link link--text disclosure__link caption-large focus-inset" 1286 href="#" 1287 1288 data-value="AT" 1289 id="Austria" 1290 > 1291 <span 1292 1293 class="visibility-hidden" 1294 1295 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1296</span> 1297 <span class="country">Austria</span> 1298 <span class="localization-form__currency motion-reduce"> 1299 EUR 1300 â¬</span> 1301 </a> 1302 </li><li class="disclosure__item" tabindex="-1"> 1303 <a 1304 class="link link--text disclosure__link caption-large focus-inset" 1305 href="#" 1306 1307 data-value="BE" 1308 id="Bélgica" 1309 > 1310 <span 1311 1312 class="visibility-hidden" 1313 1314 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1315</span> 1316 <span class="country">Bélgica</span> 1317 <span class="localization-form__currency motion-reduce"> 1318 EUR 1319 â¬</span> 1320 </a> 1321 </li><li class="disclosure__item" tabindex="-1"> 1322 <a 1323 class="link link--text disclosure__link caption-large focus-inset" 1324 href="#" 1325 1326 data-value="BG" 1327 id="Bulgaria" 1328 > 1329 <span 1330 1331 class="visibility-hidden" 1332 1333 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1334</span> 1335 <span class="country">Bulgaria</span> 1336 <span class="localization-form__currency motion-reduce"> 1337 EUR 1338 â¬</span> 1339 </a> 1340 </li><li class="disclosure__item" tabindex="-1"> 1341 <a 1342 class="link link--text disclosure__link caption-large focus-inset" 1343 href="#" 1344 1345 data-value="CZ" 1346 id="Chequia" 1347 >
1348 <span 1349 1350 class="visibility-hidden" 1351 1352 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1353</span> 1354 <span class="country">Chequia</span> 1355 <span class="localization-form__currency motion-reduce"> 1356 CZK 1357 KÄ</span> 1358 </a> 1359 </li><li class="disclosure__item" tabindex="-1"> 1360 <a 1361 class="link link--text disclosure__link caption-large focus-inset" 1362 href="#" 1363 1364 data-value="VA" 1365 id="Ciudad del Vaticano" 1366 > 1367 <span 1368 1369 class="visibility-hidden" 1370 1371 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1372</span> 1373 <span class="country">Ciudad del Vaticano</span> 1374 <span class="localization-form__currency motion-reduce"> 1375 EUR 1376 â¬</span> 1377 </a> 1378 </li><li class="disclosure__item" tabindex="-1"> 1379 <a 1380 class="link link--text disclosure__link caption-large focus-inset" 1381 href="#" 1382 1383 data-value="HR" 1384 id="Croacia" 1385 > 1386 <span 1387 1388 class="visibility-hidden" 1389 1390 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1391</span> 1392 <span class="country">Croacia</span> 1393 <span class="localization-form__currency motion-reduce"> 1394 EUR 1395 â¬</span> 1396 </a> 1397 </li><li class="disclosure__item" tabindex="-1"> 1398 <a 1399 class="link link--text disclosure__link caption-large focus-inset" 1400 href="#" 1401 1402 data-value="DK" 1403 id="Dinamarca" 1404 > 1405 <span 1406 1407 class="visibility-hidden" 1408 1409 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1410</span> 1411 <span class="country">Dinamarca</span> 1412 <span class="localization-form__currency motion-reduce"> 1413 DKK 1414 kr.</span> 1415 </a> 1416 </li><li class="disclosure__item" tabindex="-1"> 1417 <a 1418 class="link link--text disclosure__link caption-large focus-inset" 1419 href="#" 1420 1421 data-value="SK" 1422 id="Eslovaquia" 1423 > 1424 <span 1425 1426 class="visibility-hidden" 1427 1428 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1429</span> 1430 <span class="country">Eslovaquia</span> 1431 <span class="localization-form__currency motion-reduce"> 1432 EUR 1433 â¬</span> 1434 </a> 1435 </li><li class="disclosure__item" tabindex="-1"> 1436 <a 1437 class="link link--text disclosure__link caption-large focus-inset" 1438 href="#" 1439 1440 data-value="SI" 1441 id="Eslovenia" 1442 >
1443 <span 1444 1445 class="visibility-hidden" 1446 1447 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1448</span> 1449 <span class="country">Eslovenia</span> 1450 <span class="localization-form__currency motion-reduce"> 1451 EUR 1452 â¬</span> 1453 </a> 1454 </li><li class="disclosure__item" tabindex="-1"> 1455 <a 1456 class="link link--text disclosure__link caption-large focus-inset" 1457 href="#" 1458 1459 aria-current="true" 1460 1461 data-value="ES" 1462 id="España" 1463 > 1464 <span 1465 1466 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1467</span> 1468 <span class="country">España</span> 1469 <span class="localization-form__currency motion-reduce"> 1470 EUR 1471 â¬</span> 1472 </a> 1473 </li><li class="disclosure__item" tabindex="-1"> 1474 <a 1475 class="link link--text disclosure__link caption-large focus-inset" 1476 href="#" 1477 1478 data-value="EE" 1479 id="Estonia" 1480 > 1481 <span 1482 1483 class="visibility-hidden" 1484 1485 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1486</span> 1487 <span class="country">Estonia</span> 1488 <span class="localization-form__currency motion-reduce"> 1489 EUR 1490 â¬</span> 1491 </a> 1492 </li><li class="disclosure__item" tabindex="-1"> 1493 <a 1494 class="link link--text disclosure__link caption-large focus-inset" 1495 href="#" 1496 1497 data-value="FI" 1498 id="Finlandia" 1499 > 1500 <span 1501 1502 class="visibility-hidden" 1503 1504 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1505</span> 1506 <span class="country">Finlandia</span> 1507 <span class="localization-form__currency motion-reduce"> 1508 EUR 1509 â¬</span> 1510 </a> 1511 </li><li class="disclosure__item" tabindex="-1"> 1512 <a 1513 class="link link--text disclosure__link caption-large focus-inset" 1514 href="#" 1515 1516 data-value="FR" 1517 id="Francia" 1518 > 1519 <span 1520 1521 class="visibility-hidden" 1522 1523 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1524</span> 1525 <span class="country">Francia</span> 1526 <span class="localization-form__currency motion-reduce"> 1527 EUR 1528 â¬</span> 1529 </a> 1530 </li><li class="disclosure__item" tabindex="-1"> 1531 <a 1532 class="link link--text disclosure__link caption-large focus-inset" 1533 href="#" 1534 1535 data-value="GR" 1536 id="Grecia" 1537 >
1538 <span 1539 1540 class="visibility-hidden" 1541 1542 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1543</span> 1544 <span class="country">Grecia</span> 1545 <span class="localization-form__currency motion-reduce"> 1546 EUR 1547 â¬</span> 1548 </a> 1549 </li><li class="disclosure__item" tabindex="-1"> 1550 <a 1551 class="link link--text disclosure__link caption-large focus-inset" 1552 href="#" 1553 1554 data-value="HU" 1555 id="HungrÃa" 1556 > 1557 <span 1558 1559 class="visibility-hidden" 1560 1561 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1562</span> 1563 <span class="country">HungrÃa</span> 1564 <span class="localization-form__currency motion-reduce"> 1565 HUF 1566 Ft</span> 1567 </a> 1568 </li><li class="disclosure__item" tabindex="-1"> 1569 <a 1570 class="link link--text disclosure__link caption-large focus-inset" 1571 href="#" 1572 1573 data-value="IE" 1574 id="Irlanda" 1575 > 1576 <span 1577 1578 class="visibility-hidden" 1579 1580 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1581</span> 1582 <span class="country">Irlanda</span> 1583 <span class="localization-form__currency motion-reduce"> 1584 EUR 1585 â¬</span> 1586 </a> 1587 </li><li class="disclosure__item" tabindex="-1"> 1588 <a 1589 class="link link--text disclosure__link caption-large focus-inset" 1590 href="#" 1591 1592 data-value="IT" 1593 id="Italia" 1594 > 1595 <span 1596 1597 class="visibility-hidden" 1598 1599 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1600</span> 1601 <span class="country">Italia</span> 1602 <span class="localization-form__currency motion-reduce"> 1603 EUR 1604 â¬</span> 1605 </a> 1606 </li><li class="disclosure__item" tabindex="-1"> 1607 <a 1608 class="link link--text disclosure__link caption-large focus-inset" 1609 href="#" 1610 1611 data-value="LV" 1612 id="Letonia" 1613 > 1614 <span 1615 1616 class="visibility-hidden" 1617 1618 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1619</span> 1620 <span class="country">Letonia</span> 1621 <span class="localization-form__currency motion-reduce"> 1622 EUR 1623 â¬</span> 1624 </a> 1625 </li><li class="disclosure__item" tabindex="-1"> 1626 <a 1627 class="link link--text disclosure__link caption-large focus-inset" 1628 href="#" 1629 1630 data-value="LT" 1631 id="Lituania" 1632 >
1633 <span 1634 1635 class="visibility-hidden" 1636 1637 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1638</span> 1639 <span class="country">Lituania</span> 1640 <span class="localization-form__currency motion-reduce"> 1641 EUR 1642 â¬</span> 1643 </a> 1644 </li><li class="disclosure__item" tabindex="-1"> 1645 <a 1646 class="link link--text disclosure__link caption-large focus-inset" 1647 href="#" 1648 1649 data-value="LU" 1650 id="Luxemburgo" 1651 > 1652 <span 1653 1654 class="visibility-hidden" 1655 1656 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1657</span> 1658 <span class="country">Luxemburgo</span> 1659 <span class="localization-form__currency motion-reduce"> 1660 EUR 1661 â¬</span> 1662 </a> 1663 </li><li class="disclosure__item" tabindex="-1"> 1664 <a 1665 class="link link--text disclosure__link caption-large focus-inset" 1666 href="#" 1667 1668 data-value="NO" 1669 id="Noruega" 1670 > 1671 <span 1672 1673 class="visibility-hidden" 1674 1675 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1676</span> 1677 <span class="country">Noruega</span> 1678 <span class="localization-form__currency motion-reduce"> 1679 EUR 1680 â¬</span> 1681 </a> 1682 </li><li class="disclosure__item" tabindex="-1"> 1683 <a 1684 class="link link--text disclosure__link caption-large focus-inset" 1685 href="#" 1686 1687 data-value="NL" 1688 id="PaÃses Bajos" 1689 > 1690 <span 1691 1692 class="visibility-hidden" 1693 1694 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1695</span> 1696 <span class="country">PaÃses Bajos</span> 1697 <span class="localization-form__currency motion-reduce"> 1698 EUR 1699 â¬</span> 1700 </a> 1701 </li><li class="disclosure__item" tabindex="-1"> 1702 <a 1703 class="link link--text disclosure__link caption-large focus-inset" 1704 href="#" 1705 1706 data-value="PL" 1707 id="Polonia" 1708 > 1709 <span 1710 1711 class="visibility-hidden" 1712 1713 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1714</span> 1715 <span class="country">Polonia</span> 1716 <span class="localization-form__currency motion-reduce"> 1717 PLN 1718 zÅ</span> 1719 </a> 1720 </li><li class="disclosure__item" tabindex="-1"> 1721 <a 1722 class="link link--text disclosure__link caption-large focus-inset" 1723 href="#" 1724 1725 data-value="PT" 1726 id="Portugal" 1727 >
1728 <span 1729 1730 class="visibility-hidden" 1731 1732 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1733</span> 1734 <span class="country">Portugal</span> 1735 <span class="localization-form__currency motion-reduce"> 1736 EUR 1737 â¬</span> 1738 </a> 1739 </li><li class="disclosure__item" tabindex="-1"> 1740 <a 1741 class="link link--text disclosure__link caption-large focus-inset" 1742 href="#" 1743 1744 data-value="RO" 1745 id="RumanÃa" 1746 > 1747 <span 1748 1749 class="visibility-hidden" 1750 1751 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1752</span> 1753 <span class="country">RumanÃa</span> 1754 <span class="localization-form__currency motion-reduce"> 1755 RON 1756 Lei</span> 1757 </a> 1758 </li><li class="disclosure__item" tabindex="-1"> 1759 <a 1760 class="link link--text disclosure__link caption-large focus-inset" 1761 href="#" 1762 1763 data-value="SM" 1764 id="San Marino" 1765 > 1766 <span 1767 1768 class="visibility-hidden" 1769 1770 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1771</span> 1772 <span class="country">San Marino</span> 1773 <span class="localization-form__currency motion-reduce"> 1774 EUR 1775 â¬</span> 1776 </a> 1777 </li><li class="disclosure__item" tabindex="-1"> 1778 <a 1779 class="link link--text disclosure__link caption-large focus-inset" 1780 href="#" 1781 1782 data-value="SE" 1783 id="Suecia" 1784 > 1785 <span 1786 1787 class="visibility-hidden" 1788 1789 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 1790</span> 1791 <span class="country">Suecia</span> 1792 <span class="localization-form__currency motion-reduce"> 1793 SEK 1794 kr</span> 1795 </a> 1796 </li></ul> 1797 </div> 1798 </div> 1799 <div class="country-selector__overlay"></div> 1800</div> 1801<input type="hidden" name="country_code" value="ES"> 1802</div></form></localization-form> 1803 1804</div><ul class="list list-social list-unstyled" role="list"></ul> 1805 </div> 1806 </div> 1807 </div> 1808 </div> 1809 </details> 1810</header-drawer> 1811<a href="/" class="header__heading-link link link--text focus-inset"><div class="header__heading-logo-wrapper"> 1812 1813 <img src="//rendl.es/cdn/shop/files/LOGO_RENDL.svg?v=1747306359&width=600" alt="Rendl Light Studio" srcset="//rendl.es/cdn/shop/files/LOGO_RENDL.svg?v=1747306359&width=180 180w, //rendl.es/cdn/shop/files/LOGO_RENDL.svg?v=1747306359&width=270 270w, //rendl.es/cdn/shop/files/LOGO_RENDL.svg?v=1747306359&width=360 360w" width="180" height="23.408071748878925" loading="eager" class="header__heading-logo motion-reduce" sizes="(max-width: 360px) 50vw, 180px"> 1814 </div></a> 1815 1816<nav class="header__inline-menu"> 1817 <ul class="list-menu list-menu--inline" role="list"><li><a 1818 id="HeaderMenu-downloads" 1819 href="/pages/downloads" 1820 class="header__menu-item list-menu__item link link--text focus-inset" 1821 1822 >
1823 <span 1824 >Descargas</span> 1825 </a></li><li><a 1826 id="HeaderMenu-b2b-registration" 1827 href="/pages/b2b-registration-benefits" 1828 class="header__menu-item list-menu__item link link--text focus-inset" 1829 1830 > 1831 <span 1832 >Registro B2B</span> 1833 </a></li><li><a 1834 id="HeaderMenu-blog" 1835 href="/blogs/news" 1836 class="header__menu-item list-menu__item link link--text focus-inset" 1837 1838 > 1839 <span 1840 >Blog</span> 1841 </a></li><li><a 1842 id="HeaderMenu-contact" 1843 href="/pages/contact" 1844 class="header__menu-item list-menu__item link link--text focus-inset" 1845 1846 > 1847 <span 1848 >Contacto</span> 1849 </a></li></ul> 1850</nav> 1851 1852<div class="header__icons header__icons--localization header-localization"> 1853 1854 1855<details-modal class="header__search"> 1856 <details> 1857 <summary 1858 class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle" 1859 aria-haspopup="dialog" 1860 aria-label="Búsqueda" 1861 > 1862 <span> 1863 <span class="svg-wrapper"><svg class="icon icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"> 1864 <circle cx="11" cy="11" r="8"/> 1865 <line x1="21" y1="21" x2="16.65" y2="16.65"/> 1866</svg></span> 1867 <span class="svg-wrapper header__icon-close"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1868</span> 1869 </span> 1870 </summary> 1871 <div 1872 class="search-modal modal__content gradient" 1873 role="dialog" 1874 aria-modal="true" 1875 aria-label="Búsqueda" 1876 > 1877 <div class="modal-overlay"></div> 1878 <div 1879 class="search-modal__content search-modal__content-bottom" 1880 tabindex="-1" 1881 ><predictive-search class="search-modal__form" data-loading-text="Cargando..."><form action="/search" method="get" role="search" class="search search-modal__form"> 1882 <div class="field"> 1883 <input 1884 class="search__input field__input" 1885 id="Search-In-Modal" 1886 type="search" 1887 name="q" 1888 value="" 1889 placeholder="Búsqueda"role="combobox" 1890 aria-expanded="false" 1891 aria-owns="predictive-search-results" 1892 aria-controls="predictive-search-results" 1893 aria-haspopup="listbox" 1894 aria-autocomplete="list" 1895 autocorrect="off" 1896 autocomplete="off" 1897 autocapitalize="off" 1898 spellcheck="false"> 1899 <label class="field__label" for="Search-In-Modal">Búsqueda</label> 1900 <input type="hidden" name="options[prefix]" value="last"> 1901 <button 1902 type="reset" 1903 class="reset__button field__button hidden" 1904 aria-label="Borrar término de búsqueda" 1905 > 1906 <span class="svg-wrapper"><svg fill="none" stroke="currentColor" class="icon icon-close" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8.5" stroke-opacity=".2"/><path stroke-linecap="round" stroke-linejoin="round" d="M11.83 11.83 6.172 6.17M6.229 11.885l5.544-5.77"/></svg> 1907</span> 1908 </button> 1909 <button class="search__button field__button" aria-label="Búsqueda"> 1910 <span class="svg-wrapper"><svg class="icon icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"> 1911 <circle cx="11" cy="11" r="8"/> 1912 <line x1="21" y1="21" x2="16.65" y2="16.65"/> 1913</svg></span> 1914 </button> 1915 </div><div class="predictive-search predictive-search--header" tabindex="-1" data-predictive-search> 1916 1917<div class="predictive-search__loading-state"> 1918 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 1919 1920</div> 1921</div> 1922
1923 <span class="predictive-search-status visually-hidden" role="status" aria-hidden="true"></span></form></predictive-search><button 1924 type="button" 1925 class="search-modal__close-button modal__close-button link link--text focus-inset" 1926 aria-label="Cerrar" 1927 > 1928 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1929</span> 1930 </button> 1931 </div> 1932 </div> 1933 </details> 1934</details-modal> 1935 1936 <div class="desktop-localization-wrapper"><localization-form class="small-hide medium-hide" data-prevent-hide><form method="post" action="/localization" id="HeaderCountryForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/collections/garden-post-light" /><div> 1937 <label class="visually-hidden" id="HeaderCountryLabel" for="HeaderCountryForm">PaÃs/región</label> 1938 1939<div class="disclosure"> 1940 <button 1941 type="button" 1942 class="disclosure__button localization-form__select localization-selector link link--text caption-large" 1943 aria-expanded="false" 1944 aria-controls="HeaderCountry-country-results" 1945 aria-describedby="HeaderCountryLabel" 1946 > 1947 <span>España | 1948 EUR 1949 â¬</span> 1950 <svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 1951 1952 </button> 1953 <div class="disclosure__list-wrapper country-selector" hidden> 1954 <div class="country-filter"> 1955 1956 <div class="field"> 1957 <input 1958 class="country-filter__input field__input" 1959 id="country-filter-input" 1960 type="search" 1961 name="country_filter" 1962 value="" 1963 placeholder="Buscar" 1964 role="combobox" 1965 aria-owns="country-results" 1966 aria-controls="country-results" 1967 aria-haspopup="listbox" 1968 aria-autocomplete="list" 1969 autocorrect="off" 1970 autocomplete="off" 1971 autocapitalize="off" 1972 spellcheck="false" 1973 > 1974 <label class="field__label" for="country-filter-input">Buscar</label> 1975 <button 1976 type="reset" 1977 class="country-filter__reset-button field__button hidden" 1978 aria-label="Borrar término de búsqueda" 1979 ><svg fill="none" stroke="currentColor" class="icon icon-close" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8.5" stroke-opacity=".2"/><path stroke-linecap="round" stroke-linejoin="round" d="M11.83 11.83 6.172 6.17M6.229 11.885l5.544-5.77"/></svg> 1980</button> 1981 <div class="country-filter__search-icon field__button motion-reduce"><svg class="icon icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"> 1982 <circle cx="11" cy="11" r="8"/> 1983 <line x1="21" y1="21" x2="16.65" y2="16.65"/> 1984</svg></div> 1985 </div> 1986 1987 <button 1988 class="country-selector__close-button button--small link" 1989 type="button" 1990 aria-label="Cerrar" 1991 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 1992</button> 1993 </div> 1994 <div id="sr-country-search-results" class="visually-hidden" aria-live="polite"></div> 1995 <div 1996 class="disclosure__list country-selector__list country-selector__list--with-multiple-currencies" 1997 id="HeaderCountry-country-results" 1998 > 1999 2000 <ul role="list" class="list-unstyled countries"><li class="disclosure__item" tabindex="-1"> 2001 <a 2002 class="link link--text disclosure__link caption-large focus-inset" 2003 href="#" 2004 2005 data-value="DE" 2006 id="Alemania" 2007 >
2008 <span 2009 2010 class="visibility-hidden" 2011 2012 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2013</span> 2014 <span class="country">Alemania</span> 2015 <span class="localization-form__currency motion-reduce"> 2016 EUR 2017 â¬</span> 2018 </a> 2019 </li><li class="disclosure__item" tabindex="-1"> 2020 <a 2021 class="link link--text disclosure__link caption-large focus-inset" 2022 href="#" 2023 2024 data-value="AD" 2025 id="Andorra" 2026 > 2027 <span 2028 2029 class="visibility-hidden" 2030 2031 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2032</span> 2033 <span class="country">Andorra</span> 2034 <span class="localization-form__currency motion-reduce"> 2035 EUR 2036 â¬</span> 2037 </a> 2038 </li><li class="disclosure__item" tabindex="-1"> 2039 <a 2040 class="link link--text disclosure__link caption-large focus-inset" 2041 href="#" 2042 2043 data-value="AT" 2044 id="Austria" 2045 > 2046 <span 2047 2048 class="visibility-hidden" 2049 2050 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2051</span> 2052 <span class="country">Austria</span> 2053 <span class="localization-form__currency motion-reduce"> 2054 EUR 2055 â¬</span> 2056 </a> 2057 </li><li class="disclosure__item" tabindex="-1"> 2058 <a 2059 class="link link--text disclosure__link caption-large focus-inset" 2060 href="#" 2061 2062 data-value="BE" 2063 id="Bélgica" 2064 > 2065 <span 2066 2067 class="visibility-hidden" 2068 2069 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2070</span> 2071 <span class="country">Bélgica</span> 2072 <span class="localization-form__currency motion-reduce"> 2073 EUR 2074 â¬</span> 2075 </a> 2076 </li><li class="disclosure__item" tabindex="-1"> 2077 <a 2078 class="link link--text disclosure__link caption-large focus-inset" 2079 href="#" 2080 2081 data-value="BG" 2082 id="Bulgaria" 2083 > 2084 <span 2085 2086 class="visibility-hidden" 2087 2088 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2089</span> 2090 <span class="country">Bulgaria</span> 2091 <span class="localization-form__currency motion-reduce"> 2092 EUR 2093 â¬</span> 2094 </a> 2095 </li><li class="disclosure__item" tabindex="-1"> 2096 <a 2097 class="link link--text disclosure__link caption-large focus-inset" 2098 href="#" 2099 2100 data-value="CZ" 2101 id="Chequia" 2102 >
2103 <span 2104 2105 class="visibility-hidden" 2106 2107 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2108</span> 2109 <span class="country">Chequia</span> 2110 <span class="localization-form__currency motion-reduce"> 2111 CZK 2112 KÄ</span> 2113 </a> 2114 </li><li class="disclosure__item" tabindex="-1"> 2115 <a 2116 class="link link--text disclosure__link caption-large focus-inset" 2117 href="#" 2118 2119 data-value="VA" 2120 id="Ciudad del Vaticano" 2121 > 2122 <span 2123 2124 class="visibility-hidden" 2125 2126 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2127</span> 2128 <span class="country">Ciudad del Vaticano</span> 2129 <span class="localization-form__currency motion-reduce"> 2130 EUR 2131 â¬</span> 2132 </a> 2133 </li><li class="disclosure__item" tabindex="-1"> 2134 <a 2135 class="link link--text disclosure__link caption-large focus-inset" 2136 href="#" 2137 2138 data-value="HR" 2139 id="Croacia" 2140 > 2141 <span 2142 2143 class="visibility-hidden" 2144 2145 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2146</span> 2147 <span class="country">Croacia</span> 2148 <span class="localization-form__currency motion-reduce"> 2149 EUR 2150 â¬</span> 2151 </a> 2152 </li><li class="disclosure__item" tabindex="-1"> 2153 <a 2154 class="link link--text disclosure__link caption-large focus-inset" 2155 href="#" 2156 2157 data-value="DK" 2158 id="Dinamarca" 2159 > 2160 <span 2161 2162 class="visibility-hidden" 2163 2164 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2165</span> 2166 <span class="country">Dinamarca</span> 2167 <span class="localization-form__currency motion-reduce"> 2168 DKK 2169 kr.</span> 2170 </a> 2171 </li><li class="disclosure__item" tabindex="-1"> 2172 <a 2173 class="link link--text disclosure__link caption-large focus-inset" 2174 href="#" 2175 2176 data-value="SK" 2177 id="Eslovaquia" 2178 > 2179 <span 2180 2181 class="visibility-hidden" 2182 2183 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2184</span> 2185 <span class="country">Eslovaquia</span> 2186 <span class="localization-form__currency motion-reduce"> 2187 EUR 2188 â¬</span> 2189 </a> 2190 </li><li class="disclosure__item" tabindex="-1"> 2191 <a 2192 class="link link--text disclosure__link caption-large focus-inset" 2193 href="#" 2194 2195 data-value="SI" 2196 id="Eslovenia" 2197 >
2198 <span 2199 2200 class="visibility-hidden" 2201 2202 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2203</span> 2204 <span class="country">Eslovenia</span> 2205 <span class="localization-form__currency motion-reduce"> 2206 EUR 2207 â¬</span> 2208 </a> 2209 </li><li class="disclosure__item" tabindex="-1"> 2210 <a 2211 class="link link--text disclosure__link caption-large focus-inset" 2212 href="#" 2213 2214 aria-current="true" 2215 2216 data-value="ES" 2217 id="España" 2218 > 2219 <span 2220 2221 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2222</span> 2223 <span class="country">España</span> 2224 <span class="localization-form__currency motion-reduce"> 2225 EUR 2226 â¬</span> 2227 </a> 2228 </li><li class="disclosure__item" tabindex="-1"> 2229 <a 2230 class="link link--text disclosure__link caption-large focus-inset" 2231 href="#" 2232 2233 data-value="EE" 2234 id="Estonia" 2235 > 2236 <span 2237 2238 class="visibility-hidden" 2239 2240 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2241</span> 2242 <span class="country">Estonia</span> 2243 <span class="localization-form__currency motion-reduce"> 2244 EUR 2245 â¬</span> 2246 </a> 2247 </li><li class="disclosure__item" tabindex="-1"> 2248 <a 2249 class="link link--text disclosure__link caption-large focus-inset" 2250 href="#" 2251 2252 data-value="FI" 2253 id="Finlandia" 2254 > 2255 <span 2256 2257 class="visibility-hidden" 2258 2259 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2260</span> 2261 <span class="country">Finlandia</span> 2262 <span class="localization-form__currency motion-reduce"> 2263 EUR 2264 â¬</span> 2265 </a> 2266 </li><li class="disclosure__item" tabindex="-1"> 2267 <a 2268 class="link link--text disclosure__link caption-large focus-inset" 2269 href="#" 2270 2271 data-value="FR" 2272 id="Francia" 2273 > 2274 <span 2275 2276 class="visibility-hidden" 2277 2278 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2279</span> 2280 <span class="country">Francia</span> 2281 <span class="localization-form__currency motion-reduce"> 2282 EUR 2283 â¬</span> 2284 </a> 2285 </li><li class="disclosure__item" tabindex="-1"> 2286 <a 2287 class="link link--text disclosure__link caption-large focus-inset" 2288 href="#" 2289 2290 data-value="GR" 2291 id="Grecia" 2292 >
2293 <span 2294 2295 class="visibility-hidden" 2296 2297 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2298</span> 2299 <span class="country">Grecia</span> 2300 <span class="localization-form__currency motion-reduce"> 2301 EUR 2302 â¬</span> 2303 </a> 2304 </li><li class="disclosure__item" tabindex="-1"> 2305 <a 2306 class="link link--text disclosure__link caption-large focus-inset" 2307 href="#" 2308 2309 data-value="HU" 2310 id="HungrÃa" 2311 > 2312 <span 2313 2314 class="visibility-hidden" 2315 2316 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2317</span> 2318 <span class="country">HungrÃa</span> 2319 <span class="localization-form__currency motion-reduce"> 2320 HUF 2321 Ft</span> 2322 </a> 2323 </li><li class="disclosure__item" tabindex="-1"> 2324 <a 2325 class="link link--text disclosure__link caption-large focus-inset" 2326 href="#" 2327 2328 data-value="IE" 2329 id="Irlanda" 2330 > 2331 <span 2332 2333 class="visibility-hidden" 2334 2335 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2336</span> 2337 <span class="country">Irlanda</span> 2338 <span class="localization-form__currency motion-reduce"> 2339 EUR 2340 â¬</span> 2341 </a> 2342 </li><li class="disclosure__item" tabindex="-1"> 2343 <a 2344 class="link link--text disclosure__link caption-large focus-inset" 2345 href="#" 2346 2347 data-value="IT" 2348 id="Italia" 2349 > 2350 <span 2351 2352 class="visibility-hidden" 2353 2354 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2355</span> 2356 <span class="country">Italia</span> 2357 <span class="localization-form__currency motion-reduce"> 2358 EUR 2359 â¬</span> 2360 </a> 2361 </li><li class="disclosure__item" tabindex="-1"> 2362 <a 2363 class="link link--text disclosure__link caption-large focus-inset" 2364 href="#" 2365 2366 data-value="LV" 2367 id="Letonia" 2368 > 2369 <span 2370 2371 class="visibility-hidden" 2372 2373 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2374</span> 2375 <span class="country">Letonia</span> 2376 <span class="localization-form__currency motion-reduce"> 2377 EUR 2378 â¬</span> 2379 </a> 2380 </li><li class="disclosure__item" tabindex="-1"> 2381 <a 2382 class="link link--text disclosure__link caption-large focus-inset" 2383 href="#" 2384 2385 data-value="LT" 2386 id="Lituania" 2387 >
2388 <span 2389 2390 class="visibility-hidden" 2391 2392 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2393</span> 2394 <span class="country">Lituania</span> 2395 <span class="localization-form__currency motion-reduce"> 2396 EUR 2397 â¬</span> 2398 </a> 2399 </li><li class="disclosure__item" tabindex="-1"> 2400 <a 2401 class="link link--text disclosure__link caption-large focus-inset" 2402 href="#" 2403 2404 data-value="LU" 2405 id="Luxemburgo" 2406 > 2407 <span 2408 2409 class="visibility-hidden" 2410 2411 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2412</span> 2413 <span class="country">Luxemburgo</span> 2414 <span class="localization-form__currency motion-reduce"> 2415 EUR 2416 â¬</span> 2417 </a> 2418 </li><li class="disclosure__item" tabindex="-1"> 2419 <a 2420 class="link link--text disclosure__link caption-large focus-inset" 2421 href="#" 2422 2423 data-value="NO" 2424 id="Noruega" 2425 > 2426 <span 2427 2428 class="visibility-hidden" 2429 2430 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2431</span> 2432 <span class="country">Noruega</span> 2433 <span class="localization-form__currency motion-reduce"> 2434 EUR 2435 â¬</span> 2436 </a> 2437 </li><li class="disclosure__item" tabindex="-1"> 2438 <a 2439 class="link link--text disclosure__link caption-large focus-inset" 2440 href="#" 2441 2442 data-value="NL" 2443 id="PaÃses Bajos" 2444 > 2445 <span 2446 2447 class="visibility-hidden" 2448 2449 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2450</span> 2451 <span class="country">PaÃses Bajos</span> 2452 <span class="localization-form__currency motion-reduce"> 2453 EUR 2454 â¬</span> 2455 </a> 2456 </li><li class="disclosure__item" tabindex="-1"> 2457 <a 2458 class="link link--text disclosure__link caption-large focus-inset" 2459 href="#" 2460 2461 data-value="PL" 2462 id="Polonia" 2463 > 2464 <span 2465 2466 class="visibility-hidden" 2467 2468 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2469</span> 2470 <span class="country">Polonia</span> 2471 <span class="localization-form__currency motion-reduce"> 2472 PLN 2473 zÅ</span> 2474 </a> 2475 </li><li class="disclosure__item" tabindex="-1"> 2476 <a 2477 class="link link--text disclosure__link caption-large focus-inset" 2478 href="#" 2479 2480 data-value="PT" 2481 id="Portugal" 2482 >
2483 <span 2484 2485 class="visibility-hidden" 2486 2487 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2488</span> 2489 <span class="country">Portugal</span> 2490 <span class="localization-form__currency motion-reduce"> 2491 EUR 2492 â¬</span> 2493 </a> 2494 </li><li class="disclosure__item" tabindex="-1"> 2495 <a 2496 class="link link--text disclosure__link caption-large focus-inset" 2497 href="#" 2498 2499 data-value="RO" 2500 id="RumanÃa" 2501 > 2502 <span 2503 2504 class="visibility-hidden" 2505 2506 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2507</span> 2508 <span class="country">RumanÃa</span> 2509 <span class="localization-form__currency motion-reduce"> 2510 RON 2511 Lei</span> 2512 </a> 2513 </li><li class="disclosure__item" tabindex="-1"> 2514 <a 2515 class="link link--text disclosure__link caption-large focus-inset" 2516 href="#" 2517 2518 data-value="SM" 2519 id="San Marino" 2520 > 2521 <span 2522 2523 class="visibility-hidden" 2524 2525 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2526</span> 2527 <span class="country">San Marino</span> 2528 <span class="localization-form__currency motion-reduce"> 2529 EUR 2530 â¬</span> 2531 </a> 2532 </li><li class="disclosure__item" tabindex="-1"> 2533 <a 2534 class="link link--text disclosure__link caption-large focus-inset" 2535 href="#" 2536 2537 data-value="SE" 2538 id="Suecia" 2539 > 2540 <span 2541 2542 class="visibility-hidden" 2543 2544 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2545</span> 2546 <span class="country">Suecia</span> 2547 <span class="localization-form__currency motion-reduce"> 2548 SEK 2549 kr</span> 2550 </a> 2551 </li></ul> 2552 </div> 2553 </div> 2554 <div class="country-selector__overlay"></div> 2555</div> 2556<input type="hidden" name="country_code" value="ES"> 2557</div></form></localization-form> 2558 2559</div> 2560 2561 2562 <!-- Comparison icon --> 2563 2564 2565 2566 <a href="/pages/my-comparasing" class="header__icon header__icon--comparison link focus-inset"> 2567 <span class="svg-wrapper comparison-icon"> 2568 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_header_v4.svg?v=1752491640" alt="Compare" width="24" height="24"> 2569 </span> 2570 <div class="comparison-count-bubble"> 2571 <span aria-hidden="true">0</span> 2572 </div> 2573 <span class="visually-hidden"> 2574 Compare 2575 2576 </span> 2577</a> 2578 2579 <!-- Wishlist icon --> 2580 <a href="/pages/my-wishlist" class="header__icon header__icon--wishlist link focus-inset"> 2581 <span class="svg-wrapper wishlist-icon"> 2582 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2583 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="currentColor" stroke-width="1.2"/> 2584 </svg> 2585 </span> 2586 <div class="wishlist-count-bubble"> 2587 <span aria-hidden="true">0</span> 2588 </div> 2589 <span class="visually-hidden">Translation missing: es.general.wishlist.title</span> 2590</a> 2591 2592<!-- CSS --> 2593<style> 2594/* Comparison icon styles */ 2595.header__icon--comparison { 2596 position: relative; 2597 display: flex; 2598 align-items: center; 2599 justify-content: center; 2600 padding: 0; 2601} 2602 2603.comparison-count-bubble { 2604 position: absolute; 2605 background-color: rgb(var(--color-button)); 2606 color: rgb(var(--color-button-text)); 2607 height: 1.7rem; 2608 width: 1.7rem; 2609 border-radius: 100%; 2610 display: none; 2611 justify-content: center; 2612 align-items: center; 2613 font-size: .9rem; 2614 bottom: .8rem; 2615 left: 2.2rem; 2616 line-height: calc(1 + .1 / var(--font-body-scale)); 2617} 2618 2619.comparison-icon { 2620 display: flex; 2621 align-items: center; 2622 justify-content: center; 2623 transition: transform 0.2s ease; 2624} 2625
2626.comparison-icon img { 2627 width: 24px; 2628 height: 24px; 2629} 2630 2631.header__icon--comparison:hover .comparison-icon { 2632 transform: scale(1.05); 2633} 2634 2635/* Wishlist icon styles */ 2636.header__icon--wishlist { 2637 position: relative; 2638 display: flex; 2639 align-items: center; 2640 justify-content: center; 2641 padding: 0; 2642} 2643 2644.wishlist-count-bubble { 2645 position: absolute; 2646 background-color: rgb(var(--color-button)); 2647 color: rgb(var(--color-button-text)); 2648 height: 1.7rem; 2649 width: 1.7rem; 2650 border-radius: 100%; 2651 display: flex; 2652 justify-content: center; 2653 align-items: center; 2654 font-size: .9rem; 2655 bottom: .8rem; 2656 left: 2.2rem; 2657 line-height: calc(1 + .1 / var(--font-body-scale)); 2658} 2659 2660.wishlist-icon { 2661 display: flex; 2662 align-items: center; 2663 justify-content: center; 2664 transition: transform 0.2s ease; 2665} 2666 2667.wishlist-icon svg { 2668 width: 24px; 2669 height: 24px; 2670} 2671 2672.header__icon--wishlist:hover .wishlist-icon { 2673 transform: scale(1.05); 2674} 2675 2676@media screen and (max-width: 989px) { 2677 .header__icon--comparison { 2678 2679 } 2680 2681 .comparison-icon img { 2682 width: 22px; 2683 height: 22px; 2684 } 2685 2686 .header__icon--wishlist { 2687 2688 } 2689 2690 .wishlist-icon svg { 2691 width: 22px; 2692 height: 22px; 2693 } 2694} 2695 2696/* Account menu popover styles */ 2697.account-menu-wrapper { 2698 position: relative; 2699 display: inline-block; 2700} 2701 2702.account-menu-trigger { 2703 background: none; 2704 border: none; 2705 cursor: pointer; 2706 display: flex; 2707 align-items: center; 2708 justify-content: center; 2709 padding: 0; 2710 position: relative; 2711} 2712 2713.account-menu-popover { 2714 position: absolute; 2715 top: calc(100% + 8px); 2716 right: 0; 2717 background: #ffffff; 2718 border: 1px solid #e0e0e0; 2719 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); 2720 min-width: 180px; 2721 z-index: 1000; 2722 opacity: 0; 2723 visibility: hidden; 2724 transform: translateY(-10px); 2725 transition: all 0.2s ease; 2726 width: max-content; 2727} 2728 2729.account-menu-popover[aria-hidden="false"] { 2730 opacity: 1; 2731 visibility: visible; 2732 transform: translateY(0); 2733} 2734 2735.account-menu-item { 2736 display: flex; 2737 align-items: center; 2738 gap: 8px; 2739 padding: 12px 16px; 2740 text-decoration: none; 2741 color: #232323; 2742 font-family: 'Montserrat', sans-serif; 2743 font-size: 14px; 2744 font-weight: normal; 2745 line-height: 1.4; 2746 transition: background-color 0.2s ease; 2747 border-bottom: 1px solid #f0f0f0; 2748} 2749 2750.account-menu-item-icon { 2751 width: 20px; 2752 height: 20px; 2753 flex-shrink: 0; 2754} 2755 2756.account-menu-item:last-child { 2757 border-bottom: none; 2758} 2759 2760.account-menu-item:hover { 2761 background-color: #f1f1f1; 2762 color: #232323; 2763} 2764 2765.account-menu-item-text { 2766 display: block; 2767 text-align: left; 2768} 2769 2770/* Mobile styles for account menu */ 2771@media screen and (max-width: 749px) { 2772 .account-menu-popover { 2773 right: -10px; 2774 min-width: 160px; 2775 top: calc(100% + 6px); 2776 } 2777 2778 .account-menu-item { 2779 padding: 10px 14px; 2780 font-size: 13px; 2781 } 2782} 2783 2784/* Ensure popover appears above other elements */ 2785.account-menu-wrapper .account-menu-popover { 2786 z-index: 10001; 2787} 2788</style><a 2789 href="https://rendl.es/customer_authentication/redirect?locale=es®ion_country=ES" 2790 class="header__icon header__icon--account link focus-inset small-hide medium-hide" 2791 rel="nofollow" 2792 > 2793 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg> 2794</span> 2795 <span class="visually-hidden">Iniciar sesión</span> 2796 </a><a href="/cart" class="header__icon header__icon--cart link focus-inset" id="cart-icon-bubble"> 2797 2798 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.7
27985 3.75 0 1 0 7.5 0z"/></svg> 2799</span> 2800 2801 <span class="visually-hidden">Carrito</span></a> 2802 </div> 2803 </header> 2804</sticky-header> 2805 2806<cart-notification> 2807 <div class="cart-notification-wrapper page-width"> 2808 <div 2809 id="cart-notification" 2810 class="cart-notification focus-inset color-scheme-1 gradient" 2811 aria-modal="true" 2812 aria-label="ArtÃculo agregado a tu carrito" 2813 role="dialog" 2814 tabindex="-1" 2815 > 2816 <div class="cart-notification__header"> 2817 <div class="cart-notification__heading caption-large text-body"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 2818ArtÃculo agregado a tu carrito 2819 </div> 2820 <button 2821 type="button" 2822 class="cart-notification__close modal__close-button link link--text focus-inset" 2823 aria-label="Cerrar" 2824 > 2825 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 2826</span> 2827 </button> 2828 </div> 2829 <div id="cart-notification-product" class="cart-notification-product"></div><div id="cart-notification-cz-summary" class="cart-notification-cz-summary"></div><div class="cart-notification__links"> 2830 <a 2831 href="/cart" 2832 id="cart-notification-button" 2833 class="button button--full-width cart-notification__view-cart" 2834 >Ver carrito</a> 2835 <button 2836 type="button" 2837 class="button button--full-width cart-notification__continue button-label" 2838 > 2839 Seguir comprando 2840 </button> 2841 </div> 2842 </div> 2843 </div> 2844</cart-notification> 2845<style data-shopify> 2846 .cart-notification:not(.active) { 2847 display: none !important; 2848 } 2849</style> 2850 2851
2852<script type="application/ld+json"> 2853 { 2854 "@context": "http://schema.org", 2855 "@type": "Organization", 2856 "name": "Rendl Light Studio", 2857 2858 "logo": "https:\/\/rendl.es\/cdn\/shop\/files\/LOGO_RENDL.svg?v=1747306359\u0026width=500", 2859 2860 "sameAs": [ 2861 "", 2862 "", 2863 "", 2864 "", 2865 "", 2866 "", 2867 "", 2868 "", 2869 "" 2870 ], 2871 "url": "https:\/\/rendl.es" 2872 } 2873</script>
2873 2874
2875<script> 2876document.addEventListener('DOMContentLoaded', function() { 2877 // Comparison functionality 2878 const comparisonCountBubble = document.querySelector('.comparison-count-bubble'); 2879 const comparisonCountSpan = comparisonCountBubble ? comparisonCountBubble.querySelector('span') : null; 2880 2881 function updateComparisonCount() { 2882 if (!comparisonCountBubble || !comparisonCountSpan) return; 2883 2884 let count = 0; 2885 2886 if (window.RdnlComparison && typeof window.RdnlComparison.getAll === 'function') { 2887 const items = window.RdnlComparison.getAll(); 2888 count = items.length; 2889 } else { 2890 // Check localStorage for comparison data 2891 const storedItems = localStorage.getItem('rendl_compare'); 2892 2893 if (storedItems) { 2894 try { 2895 const parsedItems = JSON.parse(storedItems); 2896 2897 if (Array.isArray(parsedItems)) { // Array format 2898 count = parsedItems.length; 2899 } else if (parsedItems && parsedItems.categories && Array.isArray(parsedItems.categories)) { // Categorized format 2900 count = parsedItems.categories.reduce((acc, category) => acc + (category.items ? category.items.length : 0), 0); 2901 } 2902 } catch (e) { 2903 console.error('Error parsing comparison from localStorage:', e); 2904 } 2905 } 2906 } 2907 2908 comparisonCountSpan.textContent = count; 2909 if (count > 0) { 2910 comparisonCountBubble.style.display = 'flex'; 2911 } else { 2912 comparisonCountBubble.style.display = 'none'; 2913 } 2914 } 2915 2916 // Wishlist functionality 2917 const wishlistCountBubble = document.querySelector('.wishlist-count-bubble'); 2918 const wishlistCountSpan = wishlistCountBubble ? wishlistCountBubble.querySelector('span') : null; 2919 2920 function updateWishlistCount() { 2921 if (!wishlistCountBubble || !wishlistCountSpan) return; 2922 2923 let count = 0; 2924 if (window.RdnlWishlist && typeof window.RdnlWishlist.getAll === 'function') { 2925 const items = window.RdnlWishlist.getAll(); 2926 count = items.length; 2927 } else { 2928 // Fallback if RdnlWishlist is not ready or available (though wishlist.liquid should provide it) 2929 const storedItems = localStorage.getItem('rendl_wishlist'); 2930 if (storedItems) { 2931 try { 2932 const parsedItems = JSON.parse(storedItems); 2933 if (Array.isArray(parsedItems)) { // Old format 2934 count = parsedItems.length; 2935 } else if (parsedItems && parsedItems.categories && Array.isArray(parsedItems.categories)) { // New format 2936 count = parsedItems.categories.reduce((acc, category) => acc + (category.items ? category.items.length : 0), 0); 2937 } 2938 } catch (e) { 2939 console.error('Error parsing wishlist from localStorage:', e); 2940 } 2941 } 2942 } 2943 2944 wishlistCountSpan.textContent = count; 2945 if (count > 0) { 2946 wishlistCountBubble.style.display = 'flex'; 2947 } else { 2948 wishlistCountBubble.style.display = 'none'; 2949 } 2950 } 2951 2952 // Initial updates 2953 updateComparisonCount(); 2954 updateWishlistCount(); 2955 2956 // Listen for updates 2957 document.addEventListener('comparison:updated', function() { 2958 updateComparisonCount(); 2959 }); 2960 2961 document.addEventListener('compare:updated', function() { 2962 updateComparisonCount(); 2963 }); 2964 2965 document.addEventListener('wishlist:updated', function() { 2966 updateWishlistCount(); 2967 }); 2968 2969 // Retry after delays in case scripts are not immediately available 2970 if (!window.RdnlComparison) { 2971 setTimeout(updateComparisonCount, 500); 2972 setTimeout(updateComparisonCount, 1500); 2973 } 2974 2975 if (!window.RdnlWishlist) { 2976 setTimeout(updateWishlistCount, 500); 2977 setTimeout(updateWishlistCount, 1500); 2978 } 2979}); 2980</script>
2980 2981
2982<script> 2983// Account menu popover functionality 2984document.addEventListener('DOMContentLoaded', function() { 2985 const accountMenuWrapper = document.querySelector('.account-menu-wrapper'); 2986 if (!accountMenuWrapper) return; 2987 2988 const trigger = accountMenuWrapper.querySelector('.account-menu-trigger'); 2989 const popover = accountMenuWrapper.querySelector('.account-menu-popover'); 2990 2991 if (!trigger || !popover) return; 2992 2993 let isOpen = false; 2994 2995 function openPopover() { 2996 isOpen = true; 2997 trigger.setAttribute('aria-expanded', 'true'); 2998 popover.setAttribute('aria-hidden', 'false'); 2999 // Add click outside listener 3000 setTimeout(() => { 3001 document.addEventListener('click', handleClickOutside); 3002 }, 10); 3003 } 3004 3005 function closePopover() { 3006 isOpen = false; 3007 trigger.setAttribute('aria-expanded', 'false'); 3008 popover.setAttribute('aria-hidden', 'true'); 3009 document.removeEventListener('click', handleClickOutside); 3010 } 3011 3012 function togglePopover() { 3013 if (isOpen) { 3014 closePopover(); 3015 } else { 3016 openPopover(); 3017 } 3018 } 3019 3020 function handleClickOutside(event) { 3021 if (!accountMenuWrapper.contains(event.target)) { 3022 closePopover(); 3023 } 3024 } 3025 3026 // Toggle on click 3027 trigger.addEventListener('click', function(event) { 3028 event.preventDefault(); 3029 event.stopPropagation(); 3030 togglePopover(); 3031 }); 3032 3033 // Close on escape key 3034 document.addEventListener('keydown', function(event) { 3035 if (event.key === 'Escape' && isOpen) { 3036 closePopover(); 3037 trigger.focus(); 3038 } 3039 }); 3040 3041 // Handle keyboard navigation within popover 3042 popover.addEventListener('keydown', function(event) { 3043 const menuItems = popover.querySelectorAll('.account-menu-item'); 3044 const currentIndex = Array.from(menuItems).indexOf(document.activeElement); 3045 3046 switch (event.key) { 3047 case 'ArrowDown': 3048 event.preventDefault(); 3049 const nextIndex = currentIndex < menuItems.length - 1 ? currentIndex + 1 : 0; 3050 menuItems[nextIndex].focus(); 3051 break; 3052 case 'ArrowUp': 3053 event.preventDefault(); 3054 const prevIndex = currentIndex > 0 ? currentIndex - 1 : menuItems.length - 1; 3055 menuItems[prevIndex].focus(); 3056 break; 3057 case 'Tab': 3058 if (event.shiftKey && currentIndex === 0) { 3059 closePopover(); 3060 trigger.focus(); 3061 } else if (!event.shiftKey && currentIndex === menuItems.length - 1) { 3062 closePopover(); 3063 } 3064 break; 3065 } 3066 }); 3067}); 3068</script>
3068 3069
3070<script> 3071document.addEventListener('DOMContentLoaded', function() { 3072 var badge = document.querySelector('.account-badge'); 3073 var tooltip = badge ? badge.querySelector('.account-badge-tooltip') : null; 3074 if (!badge || !tooltip) return; 3075 3076 var red = badge.querySelector('.account-badge__text')?.textContent.replace('%','').trim() || ''; 3077 var green = ''; 3078 try { 3079 green = "0"; 3080 } catch(e) { green = ''; } 3081 3082 var badgeTooltipTexts = { 3083 bg: "ÐаÑаÑа оÑÑÑÑпка RED е {red}%. Green оÑÑÑÑпка {green}%.", 3084 cs: "VaÅ¡e velkoobchodnà sleva RED je {red}%. Sleva Green {green}%.", 3085 da: "Din RED-rabat er {red}%. Green-rabat {green}%.", 3086 de: "Ihr RED-Rabatt beträgt {red}%. Green-Rabatt {green}%.", 3087 el: "Î ÎκÏÏÏÏη RED είναι {red}%. ÎκÏÏÏÏη Green {green}%.", 3088 en: "Your wholesale RED discount is {red}%. Green discount {green}%.", 3089 es: "Su descuento RED es {red}%. Descuento Green {green}%.", 3090 fi: "RED-alennuksesi on {red}%. Green-alennus {green}%.", 3091 fr: "Votre remise RED est de {red}%. Remise Green {green}%.", 3092 hr: "VaÅ¡ RED popust je {red}%. Green popust {green}%.", 3093 hu: "Az Ãn RED kedvezménye {red}%. Green kedvezmény {green}%.", 3094 it: "Il tuo sconto RED è {red}%. Sconto Green {green}%.", 3095 lt: "JÅ«sų RED nuolaida yra {red}%. Green nuolaida {green}%.", 3096 nl: "Uw RED-korting is {red}%. Green-korting {green}%.", 3097 pl: "Twój rabat RED to {red}%. Rabat Green {green}%.", 3098 'pt-PT': "O seu desconto RED é {red}%. Desconto Green {green}%.", 3099 ro: "Reducerea RED este {red}%. Reducere Green {green}%.", 3100 sk: "VaÅ¡a veľkoobchodná zľava RED je {red}%. Zľava Green {green}%.", 3101 sl: "VaÅ¡ RED popust je {red}%. Green popust {green}%.", 3102 sv: "Din RED-rabatt är {red}%. Green-rabatt {green}%.", 3103 }; 3104 var lang = (document.documentElement.lang || 'en').split('-')[0]; 3105 // Special case for pt-PT 3106 if(document.documentElement.lang && document.documentElement.lang.toLowerCase().startsWith('pt-pt')) lang = 'pt-PT'; 3107 var text = badgeTooltipTexts[lang] || badgeTooltipTexts['en']; 3108 text = text.replace('{red}', red).replace('{green}', green); 3109 tooltip.textContent = text; 3110 3111 badge.addEventListener('mouseenter', function() { 3112 tooltip.style.display = 'block'; 3113 tooltip.style.opacity = '1'; 3114 }); 3115 badge.addEventListener('mouseleave', function() { 3116 tooltip.style.display = 'none'; 3117 tooltip.style.opacity = '0'; 3118 }); 3119 badge.addEventListener('focus', function() { 3120 tooltip.style.display = 'block'; 3121 tooltip.style.opacity = '1'; 3122 }); 3123 badge.addEventListener('blur', function() { 3124 tooltip.style.display = 'none'; 3125 tooltip.style.opacity = '0'; 3126 }); 3127}); 3128</script>
3128 3129 3130<!-- Tooltip styles --> 3131<style> 3132.account-badge-tooltip { 3133 position: absolute; 3134 top: 110%; 3135 left: 50%; 3136 transform: translateX(-50%); 3137 min-width: 180px; 3138 background: #FFFFFF; 3139 color: #232323; 3140 border: 1px solid #EEEEEE; 3141 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 3142 padding: 12px 16px; 3143 font-size: 13px; 3144 font-family: 'Montserrat', sans-serif; 3145 z-index: 10000; 3146 pointer-events: none; 3147 opacity: 0; 3148 transition: opacity 0.18s; 3149 white-space: pre-line; 3150 text-align: left; 3151 border-radius: 0; 3152} 3153.account-badge:hover .account-badge-tooltip, 3154.account-badge:focus .account-badge-tooltip { 3155 display: block; 3156 opacity: 1; 3157 pointer-events: auto; 3158} 3159</style> 3160</div><div id="shopify-section-sections--28113425695018__main_mega_menu_rendl_HbffMH" class="shopify-section shopify-section-group-header-group"> 3161 3162<link href="//rendl.es/cdn/shop/t/33/assets/main-mega-menu.css?v=96765861429993695781788953232" rel="stylesheet" type="text/css" media="all" /> 3163 3164 3165
3166<script> 3167 // Mega Menu Cache Management 3168 (function() { 3169 'use strict'; 3170 3171 const CACHE_KEY = 'megamenu_cache'; 3172 const VERSION_KEY = 'megamenu_version'; 3173 const MENU_VERSION = '1.1'; 3174 const CACHE_DURATION = 7 * 24 * 60 * 60 * 1000; // 7 days 3175 3176 function getCachedMenu() { 3177 try { 3178 const cached = localStorage.getItem(CACHE_KEY); 3179 const version = localStorage.getItem(VERSION_KEY); 3180 const timestamp = localStorage.getItem(CACHE_KEY + '_time'); 3181 3182 if (!cached || version !== MENU_VERSION) { 3183 return null; 3184 } 3185 3186 // Check if cache expired 3187 if (timestamp && (Date.now() - parseInt(timestamp)) > CACHE_DURATION) { 3188 return null; 3189 } 3190 3191 return cached; 3192 } catch (e) { 3193 console.error('Error reading menu cache:', e); 3194 return null; 3195 } 3196 } 3197 3198 function saveCachedMenu(html) { 3199 try { 3200 localStorage.setItem(CACHE_KEY, html); 3201 localStorage.setItem(VERSION_KEY, MENU_VERSION); 3202 localStorage.setItem(CACHE_KEY + '_time', Date.now().toString()); 3203 } catch (e) { 3204 console.error('Error saving menu cache:', e); 3205 } 3206 } 3207 3208 function loadMenuFromCache() { 3209 const cachedHTML = getCachedMenu(); 3210 const menuContainer = document.getElementById('main-mega-menu-container'); 3211 3212 if (cachedHTML && menuContainer) { 3213 // Hide server-rendered menu 3214 const serverMenu = menuContainer.querySelector('.main-mega-menu-rendl'); 3215 if (serverMenu) { 3216 serverMenu.style.display = 'none'; 3217 } 3218 3219 // Insert cached menu 3220 const tempDiv = document.createElement('div'); 3221 tempDiv.innerHTML = cachedHTML; 3222 const cachedMenu = tempDiv.querySelector('.main-mega-menu-rendl'); 3223 3224 if (cachedMenu) { 3225 cachedMenu.classList.add('main-mega-menu-rendl--cached'); 3226 menuContainer.insertBefore(cachedMenu, menuContainer.firstChild); 3227 3228 // Reinitialize menu functionality 3229 if (window.initMegaMenu) { 3230 window.initMegaMenu(); 3231 } 3232 3233 return true; 3234 } 3235 } 3236 3237 return false; 3238 } 3239 3240 // Try to load from cache immediately 3241 const loadedFromCache = loadMenuFromCache(); 3242 3243 // After page fully loaded, cache the menu for next time 3244 window.addEventListener('load', function() { 3245 if (!loadedFromCache) { 3246 const menuContainer = document.getElementById('main-mega-menu-container'); 3247 const menu = menuContainer ? menuContainer.querySelector('.main-mega-menu-rendl') : null; 3248 3249 if (menu) { 3250 // Save menu HTML to cache 3251 saveCachedMenu(menu.outerHTML); 3252 } 3253 } 3254 }); 3255 3256 // Clear cache when menu version changes (can be called from admin) 3257 window.clearMegaMenuCache = function() { 3258 try { 3259 localStorage.removeItem(CACHE_KEY); 3260 localStorage.removeItem(VERSION_KEY); 3261 localStorage.removeItem(CACHE_KEY + '_time'); 3262 console.log('Mega menu cache cleared'); 3263 } catch (e) { 3264 console.error('Error clearing menu cache:', e); 3265 } 3266 }; 3267 })(); 3268 3269 // Main menu functionality 3270 window.initMegaMenu = function() { 3271 document.addEventListener('DOMContentLoaded', function() { 3272 var menu = document.querySelector('.main-mega-menu-rendl'); 3273 if (!menu) return; 3274 var items = menu.querySelectorAll('.main-mega-menu-rendl__item'); 3275 var openClass = 'main-mega-menu-rendl__item--open'; 3276 var opened = null; 3277 var lastScrollY = window.scrollY; 3278 var delta = 2; // reduced threshold for scroll down 3279 var pendingDropdownItem = null; 3280 3281 // Keep fixed mega-menu flush with viewport top 3282 function updateMegaMenuTop() { 3283 if (menu.classList.contains('main-mega-menu-rendl--fixed')) { 3284 menu.style.top = '0px'; 3285 } else { 3286 menu.style.top = ''; 3287 } 3288 } 3289 window.addEventListener('resize', updateMegaMenuTop); 3290 updateMegaMenuTop(); 3291 3292 function updateDropdownPosition() { 3293 var isFixed = menu.classList.contains('main-mega-menu-rendl--fixed'); 3294 var menuRect = menu.getBoundingClientRect(); 3295 var top = menuRect.bottom; 3296 document.querySelectorAll('.main-mega-menu-rendl__item.' + openClass + ' > .main-mega-menu-rendl__dropdown').forEach(function(dropdown) { 3297 if (isFixed) { 3298 dropdown.style.position = 'fixed'; 3299 dropdown.style.top = top + 'px'; 3300 dropdown.style.left = '0'; 3301 dropdown.style.width = '100vw'; 3302 dropdown.style.zIndex = '1000'; 3303 } else { 3304 dropdown.style.position = ''; 3305 dropdown.style.top = ''; 3306 dropdown.style.left = ''; 3307 dropdown.style.width = ''; 3308 dropdown.style.zIndex = ''; 3309 } 3310 }); 3311 } 3312 window.addEventListener('resize', updateDropdownPosition); 3313 window.addEventListener('scroll', updateDropdownPosition); 3314 3315 function updateMegaMenuDropdownTop() { 3316 var rect = menu.getBoundingClientRect(); 3317 var scrollY = window.scrollY || window.pageYOffset; 3318 var top = rect.bottom + scrollY; 3319 document.documentElement.style.setProperty('--main-mega-menu-rendl-top', top + 'px'); 3320 } 3321 window.addEventListener('resize', updateMegaMenuDropdownTop); 3322 window.addEventListener('scroll', updateMegaMenuDropdownTop); 3323 updateMegaMenuDropdownTop(); 3324 3325 window.addEventListener('scroll', function() { 3326 var scrollY = window.scrollY || window.pageYOffset; 3327 updateMegaMenuTop(); 3328 if (scrollY <= 0) { 3329 menu.classList.remove('main-mega-menu-rendl--fixed'); 3330 menu.classList.remove('main-mega-menu-rendl--hidden'); 3331 menu.style.top = ''; 3332 3333 if (pendingDropdownItem) { 3334 pendingDropdownItem.classList.add(openClass); 3335 updateMegaMenuDropdownTop(); 3336 lockBodyScroll(anyMenuOpen()); 3337 updateDropdownPosition(); 3338 pendingDropdownItem = null; 3339 } 3340 } else if (scrollY > lastScrollY + delta) { 3341 menu.classList.remove('main-mega-menu-rendl--fixed'); 3342 menu.classList.add('main-mega-menu-rendl--hidden'); 3343 menu.style.top = ''; 3344 } else if (scrollY < lastScrollY - delta) { 3345 menu.classList.add('main-mega-menu-rendl--fixed'); 3346 menu.classList.remove('main-mega-menu-rendl--hidden'); 3347 updateMegaMenuTop(); 3348
3349 items.forEach(function(item) { 3350 item.classList.remove(openClass); 3351 }); 3352 } 3353 lastScrollY = scrollY; 3354 updateDropdownPosition(); 3355 }); 3356 3357 function anyMenuOpen() { 3358 return Array.from(items).some(function(item) { 3359 return item.classList.contains(openClass); 3360 }); 3361 } 3362 3363 function lockBodyScroll(lock) { 3364 if (lock) { 3365 document.body.classList.add('megamenu-lock-scroll'); 3366 } else { 3367 document.body.classList.remove('megamenu-lock-scroll'); 3368 } 3369 } 3370 3371 items.forEach(function(item) { 3372 var btn = item.querySelector('button'); 3373 var dropdown = item.querySelector('.main-mega-menu-rendl__dropdown'); 3374 if (!btn || !dropdown) return; 3375 btn.addEventListener('click', function(e) { 3376 var dropdown = item.querySelector('.main-mega-menu-rendl__dropdown'); 3377 if (!dropdown) { 3378 // If no dropdown, navigate to link 3379 var link = item.querySelector('a'); 3380 if (link) { 3381 window.location.href = link.href; 3382 } 3383 return; 3384 } 3385 e.preventDefault(); 3386 3387 items.forEach(function(it) { 3388 if (it !== item) { 3389 it.classList.remove(openClass); 3390 } 3391 }); 3392 3393 var isOpen = item.classList.contains(openClass); 3394 if (isOpen) { 3395 item.classList.remove(openClass); 3396 } else { 3397 if (menu.classList.contains('main-mega-menu-rendl--fixed')) { 3398 window.scrollTo({top: 0, behavior: 'smooth'}); 3399 pendingDropdownItem = item; 3400 } else { 3401 item.classList.add(openClass); 3402 updateMegaMenuDropdownTop(); 3403 lockBodyScroll(anyMenuOpen()); 3404 updateDropdownPosition(); 3405 } 3406 } 3407 }); 3408 3409 document.addEventListener('click', function(e) { 3410 // Don't close menu if clicking on show-more buttons or their content 3411 if (e.target.closest('.main-mega-menu-rendl__show-more')) { 3412 return; 3413 } 3414 if (!item.contains(e.target)) { 3415 item.classList.remove(openClass); 3416 lockBodyScroll(anyMenuOpen()); 3417 updateDropdownPosition(); 3418 } 3419 }); 3420 }); 3421 }); 3422 }; // End initMegaMenu 3423 3424 // Initialize menu on page load 3425 window.initMegaMenu(); 3426</script>
3426 3427 3428 3429 3430 3431<div id="main-mega-menu-container"> 3432<nav class="main-mega-menu-rendl main-mega-menu-rendl--desktop" data-locale="es"> 3433 <div class="page-width"> 3434 <ul class="main-mega-menu-rendl__list"> 3435 <!-- Interiérová svÄtla --> 3436 <li class="main-mega-menu-rendl__item"> 3437 <button type="button" data-category-image="//rendl.es/cdn/shop/files/R14000_GLANS_RR2_150_na_uste_inna_u_bi_ula_u_Eco_PLA_230V_LED_G9_5W.jpg?v=1761826121&width=250"> 3438 Interior 3439 <span class="main-mega-menu-rendl__arrow"> 3440 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 3441 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 3442 </svg> 3443 </span> 3444 </button> 3445 <div class="main-mega-menu-rendl__dropdown"> 3446 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 3447 <!-- SvÄtla do kanceláÅe --> 3448 <div class="main-mega-menu-rendl__column"> 3449 3450 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Office_lighting.png?v=1751390220&width=300" alt="Iluminación de oficina" loading="lazy"> 3451 3452 <div class="main-mega-menu-rendl__column-content"> 3453 <div class="main-mega-menu-rendl__column-title"><a href="/collections/office-lighting" title="Iluminación de oficina">Iluminación de oficina</a></div> 3454 <ul> 3455 <li><a href="/collections/office-pendant-lights" title="Colgante">Colgante</a></li> 3456 <li><a href="/collections/office-ceiling-lights" title="Techo">Techo</a></li> 3457 <li><a href="/collections/office-lamps" title="Lámparas de mesa">Lámparas de mesa</a></li> 3458 <li><a href="/collections/3-circuit-spotlights" title="Focos 3F">Focos 3F</a></li> 3459 <li><a href="/collections/1-circuit-spotlights" title="Focos 1F">Focos 1F</a></li> 3460 </ul> 3461 </div> 3462 </div> 3463 3464 <!-- SvÄtla do koupelny --> 3465 <div class="main-mega-menu-rendl__column"> 3466 3467 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Bathroom_lightning.png?v=1751393525&width=300" alt="Iluminación de baño" loading="lazy"> 3468 3469 <div class="main-mega-menu-rendl__column-content"> 3470 <div class="main-mega-menu-rendl__column-title"><a href="/collections/bathroom-lighting" title="Iluminación de baño">Iluminación de baño</a></div> 3471 <ul> 3472 <li><a href="/collections/besides-mirror-light" title="Junto al espejo">Junto al espejo</a></li> 3473 <li><a href="/collections/above-mirror-lights" title="Encima del espejo">Encima del espejo</a></li> 3474 <li><a href="/collections/bathroom-wall-light" title="Pared">Pared</a></li> 3475 <li><a href="/collections/bathroom-ceiling-light" title="Techo">Techo</a></li> 3476 <li><a href="/collections/recessed-bathroom-spotlights" title="Focos empotrables">Focos empotrables</a></li> 3477 <div class="main-mega-menu-rendl__hidden-items"> 3478 <li><a href="/collections/bathroom-spotlights" title="Focos de superficie">Focos de superficie</a></li> 3479 <li><a href="/collections/bathroom-pendant-lights" title="Colgante">Colgante</a></li> 3480 </div> 3481 </ul> 3482 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3483 </div> 3484 </div> 3485 3486 <!-- SvÄtlo do kuchynÄ --> 3487 <div class="main-mega-menu-rendl__column"> 3488 3489 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Kitchen.png?v=1751392478&width=300" alt="Iluminación de cocina" loading="lazy"> 3490 3491 <div class="main-mega-menu-rendl__column-content"> 3492 <div class="main-mega-menu-rendl__column-title"><a href="/collections/kitchen" title="Iluminación de cocina">Iluminación de cocina</a></div> 3493 <ul> 3494 <li><a href="/collections/dining-table-lighting" title="Iluminación de comedor">Iluminación de comedor</a></li> 3495 <li><a href="/collections/kitchen-counter-lighting" title="Iluminación de encimera">Iluminación de encimera</a></li> 3496 <li><a href="/collections/under-cabinet-light-with-switch" title="Bajo encimera con interruptor">Bajo encimera con interruptor</a></li> 3497 <li><a href="/collections/led-under-cabinet-kitchen-lights" title="LED bajo encimera">LED bajo encimera</a></li> 3498 <li><a href="/collections/kitchen-ceiling-lights" title="Techo">Techo</a></li> 3499 <div class="main-mega-menu-rendl__hidden-items"> 3500 <li><a href="/collections/modern-kitchen-chandeliers" title="Lámparas de araña modernas">Lámparas de araña modernas</a></li> 3501 </div> 3502 </ul> 3503 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3504 </div> 3505 </div> 3506 3507 <!-- SvÄtlo do obývacÃho pokoje --> 3508 <div class="main-mega-menu-rendl__column"> 3509 3510 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Living_room.png?v=1751367187&width=300" alt="Iluminación de salón" loading="lazy"> 3511 3512 <div class="main-mega-menu-rendl__column-content"> 3513 <div class="main-mega-menu-rendl__column-title"><a href="/collections/living-room-lighting" title="Iluminación de salón">Iluminación de salón</a></div> 3514 <ul> 3515 <li><a href="/collections/living-room-ceiling-lights" title="Techo">Techo</a></li> 3516 <li><a href="/collections/modern-living-room-chandeliers" title="Lámparas modernas">Lámparas modernas</a></li> 3517 <li><a href="/collections/living-room-wall-light" title="Pared">Pared</a></li> 3518 <li><a href="/collections/living-room-table-lamp" title="Lámparas de mesa">Lámparas de mesa</a></li> 3519 <li><a href="/collections/living-room-floor-lamps" title="Lámparas de pie">Lámparas de pie</a></li> 3520 <div class="main-mega-menu-rendl__hidden-items"> 3521 <li><a href="/collections/above-painting-lights" title="Encima del cuadro">Encima del cuadro</a></li> 3522 <li><a href="/collections/living-room-wall-led-lighting" title="En pared del salón">En pared del salón</a></li> 3523 </div> 3524 </ul> 3525 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3526 </div> 3527 </div> 3528 3529 3530 <!-- SvÄtla do ložnice --> 3531 <div class="main-mega-menu-rendl__column"> 3532 3533 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Bedroom.png?v=1751366613&width=300" alt="Iluminación de dormitorio" loading="lazy"> 3534 3535 <div class="main-mega-menu-rendl__column-content"> 3536 <div class="main-mega-menu-rendl__column-title"><a href="/collections/bedroom-lighting" title="Iluminación de dormitorio">Iluminación de dormitorio</a></div> 3537 <ul> 3538 <li><a href="/collections/bedroom-ceiling-light" title="Techo">Techo</a></li> 3539 <li><a href="/collections/bedroom-wall-sconce" title="Pared">Pared</a></li> 3540 <li>
3540<a href="/collections/bedside-lamps" title="Mesita de noche">Mesita de noche</a></li> 3541 <li><a href="/collections/gooseneck-lamps" title="Tipo cuello de ganso">Tipo cuello de ganso</a></li> 3542 <li><a href="/collections/bedroom-table-lamp" title="Lámparas de mesa">Lámparas de mesa</a></li> 3543 <div class="main-mega-menu-rendl__hidden-items"> 3544 <li><a href="/collections/bedroom-chandelier" title="Lámparas modernas">Lámparas modernas</a></li> 3545 </div> 3546 </ul> 3547 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3548 </div> 3549 </div> 3550 3551 <!-- SvÄtlo do dÄtského pokoje --> 3552 <div class="main-mega-menu-rendl__column"> 3553 3554 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Kids_room.png?v=1751366724&width=300" alt="Iluminación infantil" loading="lazy"> 3555 3556 <div class="main-mega-menu-rendl__column-content"> 3557 <div class="main-mega-menu-rendl__column-title"><a href="/collections/lights-for-kids-rooms" title="Iluminación infantil">Iluminación infantil</a></div> 3558 <ul> 3559 <li><a href="/collections/childrens-ceiling-lights" title="Techo">Techo</a></li> 3560 <li><a href="/collections/childrens-wall-light" title="Pared">Pared</a></li> 3561 <li><a href="/collections/childrens-table-lamp" title="Lámparas de mesa">Lámparas de mesa</a></li> 3562 <li><a href="/collections/kids-room-floor-lamps" title="Lámparas de pie">Lámparas de pie</a></li> 3563 </ul> 3564 </div> 3565 </div> 3566 3567 <!-- luxusnà svÃtidla --> 3568 <div class="main-mega-menu-rendl__column"> 3569 3570 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Representative_areas.jpg?v=1760615034&width=300" alt="Iluminación de lujo" loading="lazy"> 3571 3572 <div class="main-mega-menu-rendl__column-content"> 3573 <div class="main-mega-menu-rendl__column-title"><a href="/collections/luxury-lights" title="Iluminación de lujo">Iluminación de lujo</a></div> 3574 <ul> 3575 <li><a href="/collections/luxury-chandeliers" title="Lámparas de techo">Lámparas de techo</a></li> 3576 <li><a href="/collections/luxury-pendant-lights" title="Colgante">Colgante</a></li> 3577 <li><a href="/collections/luxury-ceiling-lights" title="Techo">Techo</a></li> 3578 <li><a href="/collections/luxury-table-lamps" title="Mesa">Mesa</a></li> 3579 <li><a href="/collections/luxury-floor-lamps" title="Lámparas de pie">Lámparas de pie</a></li> 3580 </ul> 3581 </div> 3582 </div> 3583 3584 <!-- OsvÄtlenà schodiÅ¡tÄ --> 3585 <div class="main-mega-menu-rendl__column"> 3586 3587 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Stairway.png?v=1751366831&width=300" alt="Iluminación de escaleras" loading="lazy"> 3588 3589 <div class="main-mega-menu-rendl__column-content"> 3590 <div class="main-mega-menu-rendl__column-title"><a href="/collections/stairway-lighting" title="Iluminación de escaleras">Iluminación de escaleras</a></div> 3591 <ul> 3592 <li><a href="/collections/staircase-ceiling-lights" title="Techo">Techo</a></li> 3593 <li><a href="/collections/staircase-wall-lights" title="Pared">Pared</a></li> 3594 <li><a href="/collections/recessed-wall-spotlights" title="Empotrable en pared">Empotrable en pared</a></li> 3595 <li>
3595<a href="/collections/staircase-light-with-sensor" title="Con sensor">Con sensor</a></li> 3596 </ul> 3597 </div> 3598 </div> 3599 3600 3601 <!-- SvÄtlo do chodby --> 3602 <div class="main-mega-menu-rendl__column"> 3603 3604 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Hallway.png?v=1751367117&width=300" alt="Iluminación de pasillo" loading="lazy"> 3605 3606 <div class="main-mega-menu-rendl__column-content"> 3607 <div class="main-mega-menu-rendl__column-title"><a href="/collections/hallway-lighting" title="Iluminación de pasillo">Iluminación de pasillo</a></div> 3608 <ul> 3609 <li><a href="/collections/hallway-ceiling-lights" title="Techo">Techo</a></li> 3610 <li><a href="/collections/hallway-wall-light" title="Pared">Pared</a></li> 3611 <li><a href="/collections/recessed-wall-spotlights" title="Empotrable en pared">Empotrable en pared</a></li> 3612 </ul> 3613 </div> 3614 </div> 3615 3616 3617 <!-- Industriálnà svÃtidla --> 3618 <div class="main-mega-menu-rendl__column"> 3619 3620 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Lights_with_technical_design.jpg?v=1761038248&width=300" alt="Estilo industrial" loading="lazy"> 3621 3622 <div class="main-mega-menu-rendl__column-content"> 3623 <div class="main-mega-menu-rendl__column-title"><a href="/collections/industrial-lighting-fixtures" title="Estilo industrial">Estilo industrial</a></div> 3624 </div> 3625 </div> 3626 3627 3628 <!-- Průmyslová svÄtla --> 3629 <div class="main-mega-menu-rendl__column"> 3630 3631 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Industrial_lighting.png?v=1751390883&width=300" alt="Iluminación industrial" loading="lazy"> 3632 3633 <div class="main-mega-menu-rendl__column-content"> 3634 <div class="main-mega-menu-rendl__column-title"><a href="/collections/industrial-lighting" title="Iluminación industrial">Iluminación industrial</a></div> 3635 </div> 3636 </div> 3637 3638 3639 3640 <!-- SvÃtidla do sklepa --> 3641 <div class="main-mega-menu-rendl__column"> 3642 3643 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Cellar.jpg?v=1760962623&width=300" alt="Iluminación de sótano" loading="lazy"> 3644 3645 <div class="main-mega-menu-rendl__column-content"> 3646 <div class="main-mega-menu-rendl__column-title"><a href="/collections/lighting-for-the-basement" title="Iluminación de sótano">Iluminación de sótano</a></div> 3647 </div> 3648 </div> 3649 3650 <!-- SvÄtla do garáže --> 3651 <div class="main-mega-menu-rendl__column"> 3652 3653 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Garage_lighting.png?v=1751386467&width=300" alt="Iluminación de garaje" loading="lazy"> 3654 3655 <div class="main-mega-menu-rendl__column-content"> 3656 <div class="main-mega-menu-rendl__column-title"><a href="/collections/garage-lighting" title="Iluminación de garaje">Iluminación de garaje</a></div> 3657 <ul> 3658 </ul> 3659 </div> 3660 </div> 3661 3662 3663 3664 3665 3666 3667 </div> 3668 </div> 3669 </li> 3670 3671 <!-- Venkovnà svÄtla --> 3672 <li class="main-mega-menu-rendl__item"> 3673 <button type="button" data-category-image="//rendl.es/cdn/shop/files/R12561_HIDE_RC_na_uste_inna_u_antracitova_u_230V_LED_E27_15W_IP54.jpg?v=1761826131&width=250"> 3674 Exterior 3675 <span class="main-mega-menu-rendl__arrow"> 3676 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 3677 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 3678 </svg> 3679 </span> 3680 </button> 3681 <div class="main-mega-menu-rendl__dropdown"> 3682 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 3683 <!-- venkovnà svÃtidla --> 3684 <div class="main-mega-menu-rendl__column"> 3685 3686 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Exterior.jpg?v=1760706458&width=300" alt="Iluminación exterior" loading="lazy"> 3687 3688 <div class="main-mega-menu-rendl__column-content"> 3689 <div class="main-mega-menu-rendl__column-title"><a href="/collections/outdoor-lights" title="Iluminación exterior">Iluminación exterior</a></div> 3690 <ul> 3691 <li><a href="/collections/outdoor-lighting-families" title="Familias de iluminación exterior">Familias de iluminación exterior</a></li> 3692 <li><a href="/collections/decorative-outdoor-lamps" title="Lámparas decorativas de exterior">Lámparas decorativas de exterior</a></li> 3693 <li><a href="/collections/outdoor-linear-lights" title="Lineal">Lineal</a></li> 3694 <li><a href="/collections/outdoor-lamps-with-sensor" title="Lámparas con sensor">Lámparas con sensor</a></li> 3695 </ul> 3696 </div> 3697 </div> 3698 3699 <!-- venkovnà nástÄnná svÃtidla --> 3700 <div class="main-mega-menu-rendl__column"> 3701 3702 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Wall_lamps.jpg?v=1760354729&width=300" alt="Lámparas de pared" loading="lazy"> 3703 3704 <div class="main-mega-menu-rendl__column-content"> 3705 <div class="main-mega-menu-rendl__column-title"><a href="/collections/outdoor-wall-lights" title="Lámparas de pared">Lámparas de pared</a></div> 3706 <ul> 3707 <li><a href="/collections/updown-outdoor-lights" title="Arriba / Abajo">Arriba / Abajo</a></li> 3708 <li><a href="/collections/adjustable-wall-lights" title="Orientable">Orientable</a></li> 3709 <li><a href="/collections/one-way-luminaires" title="Unidireccional">Unidireccional</a></li> 3710 <li><a href="/collections/outdoor-indirect-lights" title="Indirecto">Indirecto</a></li> 3711 </ul> 3712 </div> 3713 </div> 3714 3715 <!-- venkovnà stropnà svÃtidla --> 3716 <div class="main-mega-menu-rendl__column"> 3717 3718 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Ceiling_lamps.jpg?v=1760354705&width=300" alt="Lámparas de techo" loading="lazy"> 3719 3720 <div class="main-mega-menu-rendl__column-content"> 3721 <div class="main-mega-menu-rendl__column-title"><a href="/collections/outdoor-ceiling-lights" title="Lámparas de techo">Lámparas de techo</a></div> 3722 <ul> 3723 <li><a href="/collections/outdoor-downlights" title="Downlights">Downlights</a></li> 3724 <li><a href="/collections/adjustable-ceiling-lights" title="Orientable">Orientable</a></li> 3725 </ul> 3726 </div> 3727 </div> 3728 3729 3730 <!-- venkovnà zápustné svÃtidla --> 3731 <div class="main-mega-menu-rendl__column"> 3732 3733 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/category-recessed-lighting-7.png?v=1744626878&width=300" alt="En techo" loading="lazy"> 3734 3735 <div class="main-mega-menu-rendl__column-content"> 3736 <div class="main-mega-menu-rendl__column-title"><a href="/collections/outdoor-recessed-luminaires" title="Luminarias empotrables">Luminarias empotrables</a></div> 3737 <ul> 3738 <li><a href="/collections/ground-lights" title="Luz de suelo">Luz de suelo</a></li> 3739 <li><a href="/collections/outdoor-wall-recessed" title="En pared">En pared</a></li> 3740 <li><a href="/collections/outdoor-recessed-lights" title="En techo">En techo</a></li> 3741 </ul> 3742 </div> 3743 </div> 3744 3745 <!-- závÄsná venkovnà svÃtidla --> 3746 <div class="main-mega-menu-rendl__column"> 3747 3748 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/category-pendants-1.png?v=1744626947&width=300" alt="Lámparas colgantes" loading="lazy"> 3749 3750 <div class="main-mega-menu-rendl__column-content"> 3751 <div class="main-mega-menu-rendl__column-title"><a href="/collections/outdoor-pendant-lights" title="Lámparas colgantes">Lámparas colgantes</a></div> 3752 <ul> 3753 <li><a href="/collections/outdoor-pergola-chandelier" title="Lámparas de techo para pérgola">Lámparas de techo para pérgola</a></li> 3754 </ul> 3755 </div> 3756 </div> 3757 3758 <!-- osvÄtlenà cest --> 3759 <div class="main-mega-menu-rendl__column"> 3760 3761 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Garden_lighting_df5ea347-2503-40ca-99db-9a73c3f25235.jpg?v=1760963189&width=300" alt="Iluminación de senderos" loading="lazy"> 3762 3763 <div class="main-mega-menu-rendl__column-content"> 3764 <div class="main-mega-menu-rendl__column-title"><a href="/collections/path-lighting" title="Iluminación de senderos">Iluminación de senderos</a></div> 3765 </div> 3766 </div> 3767 3768 <!-- zahradnà sloupky --> 3769 <div class="main-mega-menu-rendl__column"> 3770 3771 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/category-outdoor-lighting-10.png?v=1744626892&width=300" alt="Bolos de jardÃn" loading="lazy"> 3772 3773 <div class="main-mega-menu-rendl__column-content"> 3774 <div class="main-mega-menu-rendl__column-title"><a href="/collections/garden-post-light" title="Bolos de jardÃn">Bolos de jardÃn</a></div> 3775 <ul> 3776 <li><a href="/collections/bollards-round" title="Redondos">Redondos</a></li> 3777 <li><a href="/collections/bollards-angular" title="Cuadrados">Cuadrados</a></li> 3778 <li><a href="/collections/directional-light-columns" title="Orientables">Orientables</a></li> 3779 </ul> 3780 </div> 3781 </div> 3782 3783 <!-- na bodci --> 3784 <div class="main-mega-menu-rendl__column"> 3785 3786 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/On_spike.jpg?v=1760706287&width=300" alt="Luz de piquete" loading="lazy"> 3787 3788 <div class="main-mega-menu-rendl__column-content"> 3789 <div class="main-mega-menu-rendl__column-title"><a href="/collections/spike-lights" title="Luz de piquete">Luz de piquete</a></div> 3790 </div> 3791 </div> 3792 </div> 3793 </div> 3794 </li> 3795 3796 <!-- Systémy --> 3797 <li class="main-mega-menu-rendl__item"> 3798 <button type="button" data-category-image="//rendl.es/cdn/shop/files/Systems.jpg?v=1761042351&width=250"> 3799 Sistemas
3800 <span class="main-mega-menu-rendl__arrow"> 3801 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 3802 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 3803 </svg> 3804 </span> 3805 </button> 3806 <div class="main-mega-menu-rendl__dropdown"> 3807 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 3808 <!-- 1F liÅ¡tové systémy --> 3809 <div class="main-mega-menu-rendl__column"> 3810 3811 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/1-circuit-tack.svg?v=1742647158&width=300" alt="1F liÅ¡tové systémy" loading="lazy"> 3812 3813 <div class="main-mega-menu-rendl__column-content"> 3814 <div class="main-mega-menu-rendl__column-title"><a href="/collections/1-circuit-track-systems" title="Sistemas de carril monofásico">Sistemas de carril monofásico</a></div> 3815 <ul> 3816 <li><a href="/collections/1-circuit-pendants" title="Lámparas colgantes monofásicas">Lámparas colgantes monofásicas</a></li> 3817 <li><a href="/collections/1-circuit-spotlights" title="Focos monofásicos">Focos monofásicos</a></li> 3818 <li><a href="/collections/1f-tracks" title="Carriles monofásicos">Carriles monofásicos</a></li> 3819 <li><a href="/collections/1-circuit-components" title="Componentes monofásicos">Componentes monofásicos</a></li> 3820 <li><a href="/pages/1f-tracks-configurator" title="Configurador monofásico">Configurador monofásico<span class="menu-badge menu-badge--new">NEW</span></a></li> 3821 </ul> 3822 </div> 3823 </div> 3824 3825 <!-- 3F liÅ¡tové systémy --> 3826 <div class="main-mega-menu-rendl__column"> 3827 3828 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/3-circuit-track.svg?v=1742647322&width=300" alt="3F liÅ¡tové systémy" loading="lazy"> 3829 3830 <div class="main-mega-menu-rendl__column-content"> 3831 <div class="main-mega-menu-rendl__column-title"><a href="/collections/3-circuit-track-systems" title="Sistemas de carril trifásico">Sistemas de carril trifásico</a></div> 3832 <ul> 3833 <li><a href="/collections/3-circuit-pendants" title="Lámparas colgantes trifásicas">Lámparas colgantes trifásicas</a></li> 3834 <li><a href="/collections/3-circuit-spotlights" title="Focos trifásicos">Focos trifásicos</a></li> 3835 <li><a href="/collections/3-circuit-tracks" title="Carriles trifásicos">Carriles trifásicos</a></li> 3836 <li><a href="/collections/3-circuit-components" title="Componentes trifásicos">Componentes trifásicos</a></li> 3837 <li><a href="/collections/3-circuit-tracks-recessed" title="Carriles empotrables trifásicos">Carriles empotrables trifásicos</a></li> 3838 <div class="main-mega-menu-rendl__hidden-items"> 3839 <li><a href="/collections/3-circuit-recessed-track-components" title="Componentes empotrables trifásicos">Componentes empotrables trifásicos</a></li> 3840 </div> 3841 </ul> 3842 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3843 </div> 3844 </div> 3845 3846 <!-- LED pásky --> 3847 <div class="main-mega-menu-rendl__column"> 3848 3849 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/led-stripes-icon.svg?v=1742647723&width=300" alt="LED pásky" loading="lazy"> 3850 3851 <div class="main-mega-menu-rendl__column-content"> 3852 <div class="main-mega-menu-rendl__column-title"><a href="/collections/led-strips" title="Tiras LED">Tiras LED</a></div> 3853 <ul> 3854 <li><a href="/collections/only-strips" title="Tiras">Tiras</a></li> 3855 <li><a href="/collections/profiles-recessed" title="Perfiles empotrables">Perfiles empotrables</a></li> 3856 <li><a href="/collections/profiles-surface-mounted" title="Perfiles de superficie">Perfiles de superficie</a></li> 3857 <li><a href="/collections/led-components" title="Componentes para tiras LED">Componentes para tiras LED</a></li> 3858 </ul> 3859 </div> 3860 </div> 3861 3862 <!-- Ultra-thin systém --> 3863 <div class="main-mega-menu-rendl__column"> 3864 3865 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Ultra-thin_systems.jpg?v=1760096743&width=300" alt="Ultra-thin systém" loading="lazy"> 3866 3867 <div class="main-mega-menu-rendl__column-content"> 3868 <div class="main-mega-menu-rendl__column-title"><a href="/collections/ultra-thin-track-systems" title="Sistema ultra fino">Sistema ultra fino</a></div> 3869 <ul> 3870 <li><a href="/collections/lamps-for-vega-wave" title="Luminarias para sistema VEGA">Luminarias para sistema VEGA</a></li> 3871 <li><a href="/collections/vega-tracks" title="Carriles VEGA">Carriles VEGA</a></li> 3872 <li><a href="/collections/vega-components" title="Componentes VEGA">Componentes VEGA</a></li> 3873 </ul> 3874 </div> 3875 </div> 3876 3877 <!-- WAVE pásový systém --> 3878 <div class="main-mega-menu-rendl__column"> 3879 3880 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Pasovy_system.jpg?v=1760096752&width=300" alt="WAVE pásový systém" loading="lazy"> 3881 3882 <div class="main-mega-menu-rendl__column-content"> 3883 <div class="main-mega-menu-rendl__column-title"><a href="/collections/wave-belt-system" title="Sistema de banda WAVE">Sistema de banda WAVE</a></div> 3884 <ul> 3885 <li><a href="/collections/lamps-for-wave-system" title="Luminarias para sistema WAVE">Luminarias para sistema WAVE</a></li> 3886 <li><a href="/collections/wave-belt" title="Banda WAVE">Banda WAVE</a></li> 3887 <li><a href="/collections/wave-components" title="Componentes WAVE">Componentes WAVE</a></li> 3888 </ul> 3889 </div> 3890 </div> 3891 </div> 3892 </div> 3893 </li> 3894 3895 <!-- SvÄtla dle typu --> 3896 <li class="main-mega-menu-rendl__item"> 3897 <button type="button" data-category-image="//rendl.es/cdn/shop/files/Type_3dbf4f22-85bd-4c92-af98-df2aa030fe1a.jpg?v=1761041349&width=250"> 3898 Tipo
3899 <span class="main-mega-menu-rendl__arrow"> 3900 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 3901 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 3902 </svg> 3903 </span> 3904 </button> 3905 <div class="main-mega-menu-rendl__dropdown"> 3906 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 3907 3908 <!-- závÄsné svÃtidla --> 3909 <div class="main-mega-menu-rendl__column"> 3910 3911 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/pendants_icon_b6406059-b3ee-4b2a-b16e-6a772dd5571e.svg?v=1757416974&width=300" alt="Lámparas colgantes" loading="lazy"> 3912 3913 <div class="main-mega-menu-rendl__column-content"> 3914 <div class="main-mega-menu-rendl__column-title"><a href="/collections/pendants" title="Lámparas colgantes">Lámparas colgantes</a></div> 3915 <ul> 3916 <li><a href="/collections/pendant-chandelier" title="Lámparas de techo">Lámparas de techo</a></li> 3917 <li><a href="/collections/decorative-pendant-lights" title="Decorativas">Decorativas</a></li> 3918 <li><a href="/collections/luxury-pendant-lights" title="Lujo">Lujo</a></li> 3919 <li><a href="/collections/pendant-glass-sphere" title="Esfera de vidrio">Esfera de vidrio</a></li> 3920 <li><a href="/collections/dimmable-pendant-lights" title="Dimmable">Dimmable</a></li> 3921 <div class="main-mega-menu-rendl__hidden-items"> 3922 <li><a href="/collections/multiple-pendant-lights" title="Múltiple">Múltiple</a></li> 3923 <li><a href="/collections/linear-pendant-lights" title="Lineal">Lineal</a></li> 3924 <li><a href="/collections/pendants" title="Techo">Techo</a></li> 3925 </div> 3926 </ul> 3927 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3928 </div> 3929 </div> 3930 3931 3932 <!-- stropnà svÃtidla --> 3933 <div class="main-mega-menu-rendl__column"> 3934 3935 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Ceiling_lamps.jpg?v=1760354705&width=300" alt="Lámparas de techo" loading="lazy"> 3936 3937 <div class="main-mega-menu-rendl__column-content"> 3938 <div class="main-mega-menu-rendl__column-title"><a href="/collections/ceiling-lights" title="Lámparas de techo">Lámparas de techo</a></div> 3939 <ul> 3940 <li><a href="/collections/bathroom-ceiling-light" title="Para baño">Para baño</a></li> 3941 <li><a href="/collections/dimmable-ceiling-light" title="Dimmable">Dimmable</a></li> 3942 <li><a href="/collections/ceiling-spotlights" title="Focos">Focos</a></li> 3943 <li><a href="/collections/thin-ceiling-lights" title="Finas">Finas</a></li> 3944 <li><a href="/collections/decorative-ceiling-lights" title="Decorativas">Decorativas</a></li> 3945 <div class="main-mega-menu-rendl__hidden-items"> 3946 <li><a href="/collections/luxury-ceiling-lights" title="Diseño de lujo">Diseño de lujo</a></li> 3947 <li><a href="/collections/retro-ceiling-lights" title="Diseño retro">Diseño retro</a></li> 3948 <li><a href="/collections/plaster-ceiling-lights" title="Yeso">Yeso</a></li> 3949 <li><a href="/collections/linear-ceiling-lights" title="Lineal">Lineal</a></li> 3950 <li><a href="/collections/round-ceiling-lights" title="Redondas">Redondas</a></li> 3951 <li><a href="/collections/square-ceiling-lights" title="Cuadradas">Cuadradas</a></li> 3952 <li>
3952<a href="/collections/ceiling-light-with-sensor" title="Con sensor">Con sensor</a></li> 3953 <li><a href="/collections/ceiling-lights-with-remote-control" title="Con mando a distancia">Con mando a distancia</a></li> 3954 <li><a href="/collections/led-ceiling-panel" title="Panel LED de techo">Panel LED de techo</a></li> 3955 </div> 3956 </ul> 3957 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3958 </div> 3959 </div> 3960 3961 <!-- nástÄnná svÃtidla --> 3962 <div class="main-mega-menu-rendl__column"> 3963 3964 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Wall_lamps.jpg?v=1760354729&width=300" alt="Lámparas de pared" loading="lazy"> 3965 3966 <div class="main-mega-menu-rendl__column-content"> 3967 <div class="main-mega-menu-rendl__column-title"><a href="/collections/wall-lights" title="Lámparas de pared">Lámparas de pared</a></div> 3968 <ul> 3969 <li><a href="/collections/bathroom-wall-light" title="Para baño">Para baño</a></li> 3970 <li><a href="/collections/above-painting-lights" title="Encima del cuadro">Encima del cuadro</a></li> 3971 <li><a href="/collections/decorative-wall-lights" title="Decorativas">Decorativas</a></li> 3972 <li><a href="/collections/plaster-wall-lights" title="Yeso">Yeso</a></li> 3973 <li><a href="/collections/dimmable-wall-lights" title="Dimmable">Dimmable</a></li> 3974 <div class="main-mega-menu-rendl__hidden-items"> 3975 <li><a href="/collections/wall-lights-with-switch" title="Con interruptor">Con interruptor</a></li> 3976 <li><a href="/collections/wall-lights-on-arm" title="De brazo">De brazo</a></li> 3977 <li><a href="/collections/bedside-lamps" title="Mesita de noche">Mesita de noche</a></li> 3978 <li><a href="/collections/updown-wall-lights" title="Arriba/Abajo">Arriba/Abajo</a></li> 3979 <li><a href="/collections/linear-wall-lights" title="Lineal">Lineal</a></li> 3980 <li><a href="/collections/retro-wall-light" title="Diseño retro">Diseño retro</a></li> 3981 </div> 3982 </ul> 3983 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 3984 </div> 3985 </div> 3986 3987 <!-- zapuÅ¡tné bodovky --> 3988 <div class="main-mega-menu-rendl__column"> 3989 3990 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/category-recessed-lighting-7.png?v=1744626878&width=300" alt="Focos" loading="lazy"> 3991 3992 <div class="main-mega-menu-rendl__column-content"> 3993 <div class="main-mega-menu-rendl__column-title"><a href="/collections/recessed-lights" title="Luminarias empotrables">Luminarias empotrables</a></div> 3994 <ul> 3995 <li><a href="/collections/recessed-spotlights" title="Focos">Focos</a></li> 3996 <li><a href="/collections/recessed-bathroom-spotlights" title="Focos de baño">Focos de baño</a></li> 3997 <li><a href="/collections/thin-recessed-lights" title="Finas">Finas</a></li> 3998 <li><a href="/collections/recessed-wall-spotlights" title="En pared">En pared</a></li> 3999 <li><a href="/collections/dimmable-recessed-spotlights" title="Dimmable">Dimmable</a></li> 4000 <div class="main-mega-menu-rendl__hidden-items"> 4001 <li><a href="/collections/decorative-recessed-spotlights" title="Decorativas">Decorativas</a></li> 4002 <li><a href="/collections/recessed-plaster-spotlights" title="Yeso">Yeso</a></li> 4003 <li><a href="/collections/frameless-lights" title="Sin marco">Sin marco</a></li> 4004 <li><a href="/collections/semi-recessed-lights" title="Semi empotrables">Semi empotrables</a></li> 4005 <li><a href="/collections/multiple-recessed-lights" title="Múltiples">Múltiples</a></li> 4006 <li><a href="/collections/combinable-lights" title="Combinables">Combinables</a></li> 4007 <li><a href="/collections/recessed-spotlight-families" title="Familias de focos">Familias de focos</a></li> 4008 </div> 4009 </ul> 4010 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4011 </div> 4012 </div> 4013 4014 <!-- bodová svÃtidla --> 4015 <div class="main-mega-menu-rendl__column"> 4016 4017 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Spotlight.png?v=1751386668&width=300" alt="Focos" loading="lazy"> 4018 4019 <div class="main-mega-menu-rendl__column-content"> 4020 <div class="main-mega-menu-rendl__column-title"><a href="/collections/spotlights" title="Focos">Focos</a></div> 4021 <ul> 4022 <li><a href="/collections/bathroom-spotlights" title="Para baño">Para baño</a></li> 4023 <li>
4023<a href="/collections/bedside-lamps" title="Mesita de noche">Mesita de noche</a></li> 4024 <li><a href="/collections/ceiling-spotlights" title="Techo">Techo</a></li> 4025 <li><a href="/collections/multiple-spotlights" title="Múltiples">Múltiples</a></li> 4026 <li><a href="/collections/spotlight-families" title="Familias de focos">Familias de focos</a></li> 4027 </ul> 4028 </div> 4029 </div> 4030 4031 4032 <!-- stÃnidla a doplÅky --> 4033 <div class="main-mega-menu-rendl__column"> 4034 4035 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Shades_and_shade_accessories.jpg?v=1760613055&width=300" alt="Pantallas y accesorios" loading="lazy"> 4036 4037 <div class="main-mega-menu-rendl__column-content"> 4038 <div class="main-mega-menu-rendl__column-title"><a href="/collections/shades-and-shade-accessories" title="Pantallas y accesorios">Pantallas y accesorios</a></div> 4039 <ul> 4040 <li><a href="/collections/universal-shades" title="Pantallas universales">Pantallas universales</a></li> 4041 <li><a href="/collections/pendant-shades" title="Pantallas colgantes">Pantallas colgantes</a></li> 4042 <li><a href="/collections/table-lamp-shades" title="Pantallas para lámparas de mesa">Pantallas para lámparas de mesa</a></li> 4043 <li><a href="/collections/floor-lamp-shades" title="Pantallas para lámparas de pie">Pantallas para lámparas de pie</a></li> 4044 <li><a href="/collections/stands-tripods" title="Soportes y trÃpodes">Soportes y trÃpodes</a></li> 4045 <div class="main-mega-menu-rendl__hidden-items"> 4046 <li><a href="/collections/bases" title="Bases">Bases</a></li> 4047 <li><a href="/collections/suspensions-for-shades" title="Suspensiones para pantallas">Suspensiones para pantallas</a></li> 4048 </div> 4049 </ul> 4050 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4051 </div> 4052 </div> 4053 4054 4055 <!-- stojanové lampy --> 4056 <div class="main-mega-menu-rendl__column"> 4057 4058 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Floor_lamps.jpg?v=1760354742&width=300" alt="Lámparas de pie" loading="lazy"> 4059 4060 <div class="main-mega-menu-rendl__column-content"> 4061 <div class="main-mega-menu-rendl__column-title"><a href="/collections/floor-lamps" title="Lámparas de pie">Lámparas de pie</a></div> 4062 <ul> 4063 <li><a href="/collections/decorative-floor-lamps" title="Decorativas">Decorativas</a></li> 4064 <li><a href="/collections/arc-floor-lamp" title="Arco">Arco</a></li> 4065 <li><a href="/collections/luxury-floor-lamps" title="Pie">Pie</a></li> 4066 <li><a href="/collections/floor-lamps-for-reading" title="Para lectura">Para lectura</a></li> 4067 <li><a href="/collections/dimmable-floor-lamp" title="Dimmable">Dimmable</a></li> 4068 </ul> 4069 </div> 4070 </div> 4071 4072 <!-- stolnà lampy --> 4073 <div class="main-mega-menu-rendl__column"> 4074 4075 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Table_lamps.jpg?v=1760354755&width=300" alt="Lámparas de mesa" loading="lazy"> 4076 4077 <div class="main-mega-menu-rendl__column-content"> 4078 <div class="main-mega-menu-rendl__column-title"><a href="/collections/table-lamps" title="Lámparas de mesa">Lámparas de mesa</a></div> 4079 <ul> 4080 <li><a href="/collections/for-work" title="Para trabajo">Para trabajo</a></li> 4081 <li><a href="/collections/dimmable-table-lamp" title="Dimmable">Dimmable</a></li> 4082 <li><a href="/collections/touch-table-lamp" title="Táctil">Táctil</a></li> 4083 <li><a href="/collections/decorative-table-lamps" title="Diseño decorativo">Diseño decorativo</a></li> 4084 <li><a href="/collections/modern-table-lamps" title="Diseño moderno">Diseño moderno</a></li> 4085 <div class="main-mega-menu-rendl__hidden-items"> 4086 <li><a href="/collections/luxury-table-lamps" title="Diseño de lujo">Diseño de lujo</a></li> 4087 <li><a href="/collections/retro-table-lamp" title="Diseño retro">Diseño retro</a></li> 4088 </div> 4089 </ul> 4090 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4091 </div> 4092 </div> 4093 4094 4095 4096 <!-- svÄtelné zdroje --> 4097 <div class="main-mega-menu-rendl__column"> 4098 4099 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Bulbs.png?v=1760613111&width=300" alt="Fuentes de luz" loading="lazy"> 4100 4101 <div class="main-mega-menu-rendl__column-content"> 4102 <div class="main-mega-menu-rendl__column-title"><a href="/collections/light-sources" title="Fuentes de luz">Fuentes de luz</a></div> 4103 <ul> 4104 <li><a href="/collections/remote-control-bulbs" title="Bombillas con mando a distancia">Bombillas con mando a distancia</a></li> 4105 <li><a href="/collections/dimmable-led-bulbs" title="Bombillas dimmables">Bombillas dimmables</a></li> 4106 <li><a href="/collections/e27-bulbs" title="Bombillas E27">Bombillas E27</a></li> 4107 <li><a href="/collections/e14-bulbs" title="Bombillas E14">
4107Bombillas E14</a></li> 4108 <li><a href="/collections/gu10-bulbs" title="Bombillas GU10">Bombillas GU10</a></li> 4109 <div class="main-mega-menu-rendl__hidden-items"> 4110 <li><a href="/collections/g9-bulbs" title="Bombillas G9">Bombillas G9</a></li> 4111 <li><a href="/collections/linear-bulbs" title="Bombillas lineales">Bombillas lineales</a></li> 4112 <li><a href="/collections/globe-bulbs" title="Bombillas globo">Bombillas globo</a></li> 4113 <li><a href="/collections/led-modules" title="Módulos LED">Módulos LED</a></li> 4114 <li><a href="/collections/g4-12v-bulbs" title="Bombillas G4 12V">Bombillas G4 12V</a></li> 4115 <li><a href="/collections/g53-ar111-12v-bulbs" title="Bombillas G53 AR111 12V">Bombillas G53 AR111 12V</a></li> 4116 <li><a href="/collections/gu53-12v-bulbs" title="Bombillas GU5.3 12V">Bombillas GU5.3 12V</a></li> 4117 <li><a href="/collections/gx53-bulbs" title="Bombillas GX53">Bombillas GX53</a></li> 4118 <li><a href="/collections/b15d-bulbs" title="Bombillas B15d">Bombillas B15d</a></li> 4119 <li><a href="/collections/small-bulb" title="Bombilla pequeña">Bombilla pequeña</a></li> 4120 <li><a href="/collections/par-bulbs" title="Bombillas PAR">Bombillas PAR</a></li> 4121 <li><a href="/collections/t-shape-bulbs" title="Bombillas forma T">Bombillas forma T</a></li> 4122 <li><a href="/collections/plated-bulbs" title="Bombillas plateadas">Bombillas plateadas</a></li> 4123 </div> 4124 </ul> 4125 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4126 </div> 4127 </div> 4128 4129 <!-- nepÅÃmé osvÄtlenà --> 4130 <div class="main-mega-menu-rendl__column"> 4131 4132 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Indrect_162a3b64-2ec8-4e46-a2c8-b10dc9d6f8b1.jpg?v=1760962645&width=300" alt="Iluminación indirecta" loading="lazy"> 4133 4134 <div class="main-mega-menu-rendl__column-content"> 4135 <div class="main-mega-menu-rendl__column-title"><a href="/collections/indirect-lighting" title="Iluminación indirecta">Iluminación indirecta</a></div> 4136 </div> 4137 </div> 4138 4139 <!-- osvÄtlenà podlahy --> 4140 <div class="main-mega-menu-rendl__column"> 4141 4142 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Floor_lighting_0e47298f-3f27-4653-9f63-85815cf4d44f.jpg?v=1760962670&width=300" alt="Iluminación de suelo" loading="lazy"> 4143 4144 <div class="main-mega-menu-rendl__column-content"> 4145 <div class="main-mega-menu-rendl__column-title"><a href="/collections/floor-lighting" title="Iluminación de suelo">Iluminación de suelo</a></div> 4146 </div> 4147 </div> 4148 4149 <!-- pÅÃsluÅ¡enstvà --> 4150 <div class="main-mega-menu-rendl__column"> 4151 4152 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Chocolate.jpg?v=1760615017&width=300" alt="Accesorios" loading="lazy"> 4153 4154 <div class="main-mega-menu-rendl__column-content"> 4155 <div class="main-mega-menu-rendl__column-title"><a href="/collections/accessories" title="Accesorios">Accesorios</a></div> 4156 <ul> 4157 <li><a href="/collections/drivers" title="Drivers">Drivers</a></li> 4158 <li><a href="/collections/ip-terminal-blocks" title="Bornes IP">Bornes IP</a></li> 4159 <li><a href="/collections/cables" title="Cables">Cables</a></li> 4160 <li><a href="/collections/controllers" title="Controladores">Controladores</a></li> 4161 <li><a href="/collections/sensors" title="Sensores">Sensores</a></li> 4162 <div class="main-mega-menu-rendl__hidden-items"> 4163 <li><a href="/collections/components" title="Componentes">Componentes</a></li> 4164 </div> 4165 </ul> 4166 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4167 </div> 4168 </div> 4169 </div> 4170 </div> 4171 </li> 4172 4173 <!-- SvÄtla dle materiálu --> 4174 <li class="main-mega-menu-rendl__item"> 4175 <button type="button" data-category-image="//rendl.es/cdn/shop/files/Material.jpg?v=17610427
417559&width=250"> 4176 Material 4177 <span class="main-mega-menu-rendl__arrow"> 4178 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 4179 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 4180 </svg> 4181 </span> 4182 </button> 4183 <div class="main-mega-menu-rendl__dropdown"> 4184 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 4185 <!-- sádrové svÃtidla --> 4186 <div class="main-mega-menu-rendl__column"> 4187 4188 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Drywall_lights_0dbd0586-ad01-48ae-b48f-c0b7367a6b3d.jpg?v=1760440561&width=300" alt="Iluminación de yeso" loading="lazy"> 4189 4190 <div class="main-mega-menu-rendl__column-content"> 4191 <div class="main-mega-menu-rendl__column-title"><a href="/collections/plaster-lights" title="Iluminación de yeso">Iluminación de yeso</a></div> 4192 <ul> 4193 <li><a href="/collections/plaster-pendant-lights" title="Colgante">Colgante</a></li> 4194 <li><a href="/collections/plaster-ceiling-lights" title="Techo">Techo</a></li> 4195 <li><a href="/collections/plaster-wall-lights" title="Pared">Pared</a></li> 4196 <li><a href="/collections/recessed-plaster-spotlights" title="Focos empotrables">Focos empotrables</a></li> 4197 </ul> 4198 </div> 4199 </div> 4200 4201 <!-- SklenÄná svÃtidla --> 4202 <div class="main-mega-menu-rendl__column"> 4203 4204 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Glass_lightng.jpg?v=1760442658&width=300" alt="Iluminación de cristal" loading="lazy"> 4205 4206 <div class="main-mega-menu-rendl__column-content"> 4207 <div class="main-mega-menu-rendl__column-title"><a href="/collections/glass-lights" title="Iluminación de cristal">Iluminación de cristal</a></div> 4208 <ul> 4209 <li><a href="/collections/glass-chandelier" title="Lámparas de techo">Lámparas de techo</a></li> 4210 <li><a href="/collections/glass-ceiling-lights" title="Techo">Techo</a></li> 4211 <li><a href="/collections/glass-wall-lights" title="Pared">Pared</a></li> 4212 </ul> 4213 </div> 4214 </div> 4215 4216 <!-- dÅevÄná svÃtidla --> 4217 <div class="main-mega-menu-rendl__column"> 4218 4219 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Wooden_lights_fba88298-3bac-4308-8011-a84a96d94c99.jpg?v=1760439970&width=300" alt="Iluminación de madera" loading="lazy"> 4220 4221 <div class="main-mega-menu-rendl__column-content"> 4222 <div class="main-mega-menu-rendl__column-title"><a href="/collections/wooden-light" title="Iluminación de madera">Iluminación de madera</a></div> 4223 <ul> 4224 <li><a href="/collections/wooden-lamp" title="Lámparas de mesa">Lámparas de mesa</a></li> 4225 <li><a href="/collections/wooden-floor-lamp" title="Lámparas de pie">Lámparas de pie</a></li> 4226 </ul> 4227 </div> 4228 </div> 4229 4230 <!-- betonová svÃtidla --> 4231 <div class="main-mega-menu-rendl__column"> 4232 4233 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Concrete_lights_260ca202-9bac-43f3-859f-8cccdcb35b7d.jpg?v=1760440086&width=300" alt="Iluminación de hormigón" loading="lazy"> 4234 4235 <div class="main-mega-menu-rendl__column-content"> 4236 <div class="main-mega-menu-rendl__column-title"><a href="/collections/concrete-lights" title="Iluminación de hormigón">Iluminación de hormigón</a></div> 4237 <ul> 4238 <li><a href="/collections/concrete-lamp" title="Lámparas">Lámparas</a></li> 4239 <li><a href="/collections/concrete-wall-lamps" title="Pared">Pared</a></li> 4240 <li><a href="/collections/concrete-table-lamps" title="Mesa">Mesa</a></li> 4241 </ul> 4242 </div> 4243 </div> 4244 4245 <!-- Kovové svÃtidla --> 4246 <div class="main-mega-menu-rendl__column"> 4247 4248 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Metal_lights.jpg?v=1760373194&width=300" alt="Iluminación metálica" loading="lazy"> 4249 4250 <div class="main-mega-menu-rendl__column-content"> 4251 <div class="main-mega-menu-rendl__column-title"><a href="/collections/metal-lights" title="Iluminación metálica">Iluminación metálica</a></div> 4252 <ul> 4253 <li><a href="/collections/metal-chandelier" title="Lámparas de araña">Lámparas de araña</a></li> 4254 <li><a href="/collections/metal-pendant-lights" title="Colgante">Colgante</a></li> 4255 <li><a href="/collections/metal-ceiling-lamps" title="Techo">Techo</a></li> 4256 <li><a href="/collections/metal-table-lamps" title="Mesa">Mesa</a></li> 4257 <li><a href="/collections/metal-floor-lamps" title="De pie">De pie</a></li> 4258 </ul> 4259 </div> 4260 </div> 4261 4262 <!-- mÄdÄné svÃtidla --> 4263 <div class="main-mega-menu-rendl__column"> 4264 4265 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Copper_lights.jpg?v=1760373869&width=300" alt="mÄdÄné svÃtidla" loading="lazy"> 4266 4267 <div class="main-mega-menu-rendl__column-content"> 4268 <div class="main-mega-menu-rendl__column-title"><a href="/collections/copper-lamps" title="Iluminación de cobre">Iluminación de cobre</a></div> 4269 <ul> 4270 <li><a href="/collections/copper-chandeliers" title="Lámparas de araña">Lámparas de araña</a></li> 4271 </ul> 4272 </div> 4273 </div> 4274 4275 <!-- keramická svÃtidla --> 4276 <div class="main-mega-menu-rendl__column"> 4277 4278 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Ceramic_lights_aa508c49-eb48-4afd-9319-51f94c079178.jpg?v=1760439957&width=300" alt="Iluminación cerámica" loading="lazy"> 4279 4280 <div class="main-mega-menu-rendl__column-content"> 4281 <div class="main-mega-menu-rendl__column-title"><a href="/collections/ceramic-lights" title="Iluminación cerámica">Iluminación cerámica</a></div> 4282 <ul> 4283 <li><a href="/collections/ceramic-lamp" title="Lámparas">Lámparas</a></li> 4284 </ul> 4285 </div> 4286 </div> 4287 </div> 4288 </div> 4289 </li> 4290 4291 <!-- SvÄtla dle funkce --> 4292 <li class="main-mega-menu-rendl__item"> 4293 <button type="button" data-category-image="//rendl.es/cdn/shop/files/Function.jpg?v=1761043591&width=250"> 4294 Función
4295 <span class="main-mega-menu-rendl__arrow"> 4296 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor"> 4297 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 4298 </svg> 4299 </span> 4300 </button> 4301 <div class="main-mega-menu-rendl__dropdown"> 4302 <div class="main-mega-menu-rendl__dropdown-inner page-width"> 4303 <!-- stmÃvatelná svÄtla --> 4304 <div class="main-mega-menu-rendl__column"> 4305 4306 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Dimmable.jpg?v=1760354786&width=300" alt="Iluminación dimmable" loading="lazy"> 4307 4308 <div class="main-mega-menu-rendl__column-content"> 4309 <div class="main-mega-menu-rendl__column-title"><a href="/collections/dimmable-lights" title="Iluminación dimmable">Iluminación dimmable</a></div> 4310 <ul> 4311 <li><a href="/collections/dimmable-pendant-lights" title="Colgante">Colgante</a></li> 4312 <li><a href="/collections/dimmable-ceiling-light" title="Techo">Techo</a></li> 4313 <li><a href="/collections/dimmable-wall-lights" title="Pared">Pared</a></li> 4314 <li><a href="/collections/dimmable-recessed-spotlights" title="Focos empotrables">Focos empotrables</a></li> 4315 <li><a href="/collections/dimmable-table-lamp" title="Lámparas de mesa">Lámparas de mesa</a></li> 4316 <div class="main-mega-menu-rendl__hidden-items"> 4317 <li><a href="/collections/dimmable-led-floor-lamp" title="Lámparas de pie">Lámparas de pie</a></li> 4318 <li><a href="/collections/3-circuit-spotlights" title="Focos trifásicos">Focos trifásicos</a></li> 4319 <li><a href="/collections/dimmable-3-circuit-spotlights" title="Focos monofásicos">Focos monofásicos</a></li> 4320 <li><a href="/collections/dimmable-lamps-for-vega-wave" title="VEGA / WAVE">VEGA / WAVE</a></li> 4321 <li><a href="/collections/dimmable-led-bulbs" title="Bombillas">Bombillas</a></li> 4322 </div> 4323 </ul> 4324 <button class="main-mega-menu-rendl__show-more" data-show-text="más" data-hide-text="menos">más <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="arrow" style="width: 18px; height: 18px; margin-left: 4px; vertical-align: middle;"></button> 4325 </div> 4326 </div> 4327 4328 <!-- IP krytà --> 4329 <div class="main-mega-menu-rendl__column"> 4330 4331 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/IP-rate.jpg?v=1760611568&width=300" alt="Protección IP" loading="lazy"> 4332 4333 <div class="main-mega-menu-rendl__column-content"> 4334 <div class="main-mega-menu-rendl__column-title"><a href="/collections/ip-protection" title="Protección IP">Protección IP</a></div> 4335 <ul> 4336 <li><a href="/collections/ip44" title="IP44">IP44</a></li> 4337 <li><a href="/collections/ip54" title="IP54">IP54</a></li> 4338 <li><a href="/collections/ip65" title="IP65">IP65</a></li> 4339 <li><a href="/collections/ip67" title="IP67">IP67</a></li> 4340 </ul> 4341 </div> 4342 </div> 4343 4344 <!-- svÄtla na dálkové ovládánà --> 4345 <div class="main-mega-menu-rendl__column"> 4346 4347 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Remote_control.jpg?v=1760444653&width=300" alt="Iluminación con mando a distancia" loading="lazy"> 4348 4349 <div class="main-mega-menu-rendl__column-content"> 4350 <div class="main-mega-menu-rendl__column-title"><a href="/collections/remote-control-lights" title="Iluminación con mando a distancia">Iluminación con mando a distancia</a></div> 4351 <ul> 4352 <li><a href="/collections/ceiling-lights-with-remote-control" title="Lámparas de techo">Lámparas de techo</a></li> 4353 <li><a href="/collections/led-strip-with-remote" title="Tiras LED">Tiras LED</a></li> 4354 <li><a href="/collections/remote-control-bulbs" title="Bombillas">Bombillas</a></li> 4355 </ul> 4356 </div> 4357 </div> 4358 4359 <!-- Nastavitelná --> 4360 <div class="main-mega-menu-rendl__column"> 4361 4362 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Positionable_icon_a638012c-5ba7-44b6-8c63-492024071299.jpg?v=1760620779&width=300" alt="Ajustable" loading="lazy"> 4363 4364 <div class="main-mega-menu-rendl__column-content"> 4365 <div class="main-mega-menu-rendl__column-title"><a href="/collections/adjustable-lights" title="Ajustable">Ajustable</a></div> 4366 <ul> 4367 <li><a href="/collections/adjustable-position" title="Posición ajustable">Posición ajustable</a></li> 4368 <li><a href="/collections/adjustable-height" title="Altura ajustable">Altura ajustable</a></li> 4369 <li><a href="/collections/light-color-changing" title="Luz de color variable">Luz de color variable</a></li> 4370 </ul> 4371 </div> 4372 </div> 4373 4374 <!-- svÄtla s Äidlem --> 4375 <div class="main-mega-menu-rendl__column"> 4376 4377 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Lights_with_sensor.png?v=1751387239&width=300" alt="Lámparas con sensor" loading="lazy"> 4378 4379 <div class="main-mega-menu-rendl__column-content"> 4380 <div class="main-mega-menu-rendl__column-title"><a href="/collections/lights-with-sensor" title="Lámparas con sensor">Lámparas con sensor</a></div> 4381 <ul> 4382 <li>
4382<a href="/collections/ceiling-light-with-sensor" title="Lámparas de techo con sensor">Lámparas de techo con sensor</a></li> 4383 <li><a href="/collections/outdoor-lamps-with-sensor" title="Lámparas exterior con sensor">Lámparas exterior con sensor</a></li> 4384 <li><a href="/collections/light-with-motion-sensor" title="Con sensor de movimiento">Con sensor de movimiento</a></li> 4385 </ul> 4386 </div> 4387 </div> 4388 4389 <!-- PÅetÃratelná --> 4390 <div class="main-mega-menu-rendl__column"> 4391 4392 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/Paintable.jpg?v=1761078453&width=300" alt="Pintable" loading="lazy"> 4393 4394 <div class="main-mega-menu-rendl__column-content"> 4395 <div class="main-mega-menu-rendl__column-title"><a href="/collections/paintable-lights" title="Pintable">Pintable</a></div> 4396 <ul> 4397 </ul> 4398 </div> 4399 </div> 4400 4401 <!-- RGB --> 4402 <div class="main-mega-menu-rendl__column"> 4403 4404 <img class="main-mega-menu-rendl__column-image" src="//rendl.es/cdn/shop/files/RGB.jpg?v=1760621046&width=300" alt="RGB" loading="lazy"> 4405 4406 <div class="main-mega-menu-rendl__column-content"> 4407 <div class="main-mega-menu-rendl__column-title"><a href="/collections/rgb" title="RGB">RGB</a></div> 4408 </div> 4409 </div> 4410 </div> 4411 </div> 4412 </li> 4413 4414 <!-- News --> 4415 <li class="main-mega-menu-rendl__item main-mega-menu-rendl__item--news"> 4416 <a href="/collections/new" class="main-mega-menu-rendl__item-link"> 4417 News 4418 <span class="main-mega-menu-rendl__arrow main-mega-menu-rendl__arrow--right"> 4419 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" style="transform: rotate(-90deg);"> 4420 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 4421 </svg> 4422 </span> 4423 </a> 4424 </li> 4425 4426 <!-- Sale --> 4427 <li class="main-mega-menu-rendl__item main-mega-menu-rendl__item--sale"> 4428 <a href="/collections/sale" class="main-mega-menu-rendl__item-link"> 4429 Sale 4430 <span class="main-mega-menu-rendl__arrow main-mega-menu-rendl__arrow--right"> 4431 <svg viewBox="0 0 16 16" fill="none" stroke="currentColor" style="transform: rotate(-90deg);"> 4432 <path d="M3 6l5 5 5-5" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 4433 </svg> 4434 </span> 4435 </a> 4436 </li> 4437 4438 <!-- Outlet --> 4439 <li class="main-mega-menu-rendl__item main-mega-menu-rendl__item--extreme"> 4440 <a href="/collections/outlet" class="main-mega-menu-rendl__item-link main-mega-menu-rendl__item-link--extreme"> 4441 <span class="main-mega-menu-rendl__extreme-img-wrapper"> 4442 4443 <img class="main-mega-menu-rendl__extreme-img" src="//rendl.es/cdn/shop/files/outlet_icon_877b5ed1-dbcd-4165-80ad-bc2aff50f7bb.svg?crop=center&height=56&v=1748256019&width=56" alt="Extreme outlet"> 4444 4445 4446 <img class="main-mega-menu-rendl__extreme-img main-mega-menu-rendl__extreme-img--hover" src="//rendl.es/cdn/shop/files/outlet_icon_hover_6e4f4224-3cfb-47f1-b4bf-0cdd583f2fb1.svg?crop=center&height=56&v=1748256027&width=56" alt="Extreme outlet hover"> 4447 4448 </span> 4449 </a> 4450 </li> 4451 4452 4453 </ul> 4454 </div> 4455</nav> 4456</div> 4457 4458 4459 4460
4461<script> 4462window.collectionImagesData = 4463{ 4464 4465 4466 4467 4468 4469 "all": { 4470 4471 "image": "", 4472 4473 "title": "Popular ahora" 4474 }, 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 "kitchen": { 4486 4487 "image": "//rendl.es/cdn/shop/files/136_IMG_bdb59218-b8f3-4ef1-818d-d3c5fb3ba0bb.jpg?v=1787178621&width=250", 4488 4489 "title": "Iluminación de cocina" 4490 }, 4491 4492 4493 4494 4495 "luxury-chandeliers": { 4496 4497 "image": "//rendl.es/cdn/shop/files/124_IMG_9789cc9a-cc76-4530-ad80-80e8287ace97.jpg?v=1785882619&width=250", 4498 4499 "title": "Candelabro de lujo" 4500 }, 4501 4502 4503 4504 4505 "outdoor-recessed-luminaires": { 4506 4507 "image": "//rendl.es/cdn/shop/files/307_IMG.jpg?v=1760687109&width=250", 4508 4509 "title": "Lámparas empotrables exteriores" 4510 }, 4511 4512 4513 4514 4515 "pendants": { 4516 4517 "image": "//rendl.es/cdn/shop/files/58_IMG.jpg?v=1760004938&width=250", 4518 4519 "title": "Lámparas colgantes de techo" 4520 }, 4521 4522 4523 4524 4525 "kitchen-ceiling-lights": { 4526 4527 "image": "//rendl.es/cdn/shop/files/14_IMG_96c0542a-5f23-43f5-b34f-941f44215759.jpg?v=1760360710&width=250", 4528 4529 "title": "Lámparas de techo de cocina" 4530 }, 4531 4532 4533 4534 4535 "concrete-table-lamps": { 4536 4537 "image": "//rendl.es/cdn/shop/files/297_IMG_e238a85a-4dcd-46e6-b3f7-b3138cf61f7a.jpg?v=1787178621&width=250", 4538 4539 "title": "Lámparas de mesa de hormigón" 4540 }, 4541 4542 4543 4544 4545 "rgb": { 4546 4547 "image": "//rendl.es/cdn/shop/files/247_IMG.jpg?v=1760553749&width=250", 4548 4549 "title": "RGB" 4550 }, 4551 4552 4553 4554 4555 "metal-ceiling-lamps": { 4556 4557 "image": "//rendl.es/cdn/shop/files/295_IMG.jpg?v=1760971002&width=250", 4558 4559 "title": "Lámparas de techo de metal" 4560 }, 4561 4562 4563 4564 4565 "metal-table-lamps": { 4566 4567 "image": "//rendl.es/cdn/shop/files/294_IMG.jpg?v=1760972045&width=250", 4568 4569 "title": "Lámparas de mesa de metal" 4570 }, 4571 4572 4573 4574 4575 "metal-pendant-lights": { 4576 4577 "image": "//rendl.es/cdn/shop/files/293_IMG.jpg?v=1760971531&width=250", 4578 4579 "title": "Lámparas colgantes de metal" 4580 }, 4581 4582 4583 4584 4585 "metal-floor-lamps": { 4586 4587 "image": "//rendl.es/cdn/shop/files/318_IMG_8d002909-8fd0-4f66-a5e9-7cdf261d4df2.jpg?v=1787178623&width=250", 4588 4589 "title": "Lámparas de pie de metal" 4590 }, 4591 4592 4593 4594 4595 "metal-chandelier": { 4596 4597 "image": "//rendl.es/cdn/shop/files/319_IMG_8159efe0-05b1-4fad-8d44-7b4d3183e759.jpg?v=1787178621&width=250", 4598 4599 "title": "Candelabros de metal" 4600 }, 4601 4602 4603 4604 4605 "concrete-wall-lamps": { 4606 4607 "image": "//rendl.es/cdn/shop/files/298_IMG.jpg?v=1760972533&width=250", 4608 4609 "title": "Lámparas de pared de hormigón" 4610 }, 4611 4612 4613 4614 4615 "kids-room-floor-lamps": { 4616 4617 "image": "//rendl.es/cdn/shop/files/38_IMG.jpg?v=1760972080&width=250", 4618 4619 "title": "Lámparas de pie infantiles" 4620 }, 4621 4622 4623 4624 4625 "led-under-cabinet-kitchen-lights": { 4626 4627 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4628 4629 "title": "" 4630 }, 4631 4632 4633 4634 4635 "wooden-lamp": { 4636 4637 "image": "//rendl.es/cdn/shop/files/153_IMG.jpg?v=1760387340&width=250", 4638 4639 "title": "Lámparas de mesa de madera" 4640 }, 4641 4642 4643 4644 4645 "under-cabinet-light-with-switch": { 4646 4647 "image": "//rendl.es/cdn/shop/files/13_IMG_a5cef51b-da95-4965-84e3-446b6c9039cb.jpg?v=1785537024&width=250", 4648 4649 "title": "Lámpara bajo muebles con interruptor" 4650 }, 4651 4652 4653 4654 4655 "stands-tripods": { 4656 4657 "image": "//rendl.es/cdn/shop/files/206_IMG.jpg?v=1760445188&width=250", 4658 4659 "title": "Soportes\/bases" 4660 }, 4661 4662 4663 4664 4665 "kitchen-counter-lighting": { 4666 4667 "image": "//rendl.es/cdn/shop/files/10_IMG_607e3e2e-d431-4fe9-af59-5817f8276f84.jpg?v=1760388236&width=250", 4668 4669 "title": "Iluminación de encimera de cocina" 4670 }, 4671 4672 4673 4674 4675 "modern-kitchen-chandeliers": { 4676 4677 "image": "//rendl.es/cdn/shop/files/16_IMG_bc6ef757-b0e5-4f25-9c25-6c63f520da1b.jpg?v=1785796220&width=250", 4678 4679 "title": "Candelabros modernos de cocina" 4680 }, 4681 4682 4683 4684 4685 "led-kitchen-lights": { 4686 4687 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
4687d url input", 4688 4689 "title": "" 4690 }, 4691 4692 4693 4694 4695 "dining-table-lighting": { 4696 4697 "image": "//rendl.es/cdn/shop/files/310_IMG_8d887167-49ea-4882-80b8-e3922660a97f.jpg?v=1764936208&width=250", 4698 4699 "title": "Iluminación de mesa de comedor" 4700 }, 4701 4702 4703 4704 4705 "living-room-lighting": { 4706 4707 "image": "//rendl.es/cdn/shop/files/138_IMG_bed0af8a-68ff-4881-812a-8a7533baa0cd.jpg?v=1761031095&width=250", 4708 4709 "title": "Iluminación de salón" 4710 }, 4711 4712 4713 4714 4715 "living-room-ceiling-lights": { 4716 4717 "image": "//rendl.es/cdn/shop/files/24_IMG_b962c87c-affd-4b33-850a-5d69268dc1ac.jpg?v=1761031662&width=250", 4718 4719 "title": "Lámparas de techo de salón" 4720 }, 4721 4722 4723 4724 4725 "modern-living-room-chandeliers": { 4726 4727 "image": "//rendl.es/cdn/shop/files/26_IMG_645b9b81-8990-4d77-afaf-ae8fb62d0b31.jpg?v=1761031375&width=250", 4728 4729 "title": "Candelabros modernos de salón" 4730 }, 4731 4732 4733 4734 4735 "living-room-table-lamp": { 4736 4737 "image": "//rendl.es/cdn/shop/files/27_IMG_31feb274-e797-4d68-b17e-0f90e3fe5893.jpg?v=1782945020&width=250", 4738 4739 "title": "Lámpara de mesa de salón" 4740 }, 4741 4742 4743 4744 4745 "living-room-floor-lamps": { 4746 4747 "image": "//rendl.es/cdn/shop/files/28_IMG_efaeb36e-41e1-47ac-84f9-c03feb4f2b66.jpg?v=1762849903&width=250", 4748 4749 "title": "Lámparas de pie de salón" 4750 }, 4751 4752 4753 4754 4755 "living-room-wall-light": { 4756 4757 "image": "//rendl.es/cdn/shop/files/29_IMG.jpg?v=1760468797&width=250", 4758 4759 "title": "Lámparas de pared de salón" 4760 }, 4761 4762 4763 4764 4765 "living-room-wall-led-lighting": { 4766 4767 "image": "//rendl.es/cdn/shop/files/30_IMG_f93bfe37-2cf0-4e64-a398-770debd7febe.jpg?v=1761118741&width=250", 4768 4769 "title": "Iluminación LED de pared de salón" 4770 }, 4771 4772 4773 4774 4775 "above-painting-lights": { 4776 4777 "image": "//rendl.es/cdn/shop/files/264_IMG.jpg?v=1760553186&width=250", 4778 4779 "title": "Lámparas para cuadros" 4780 }, 4781 4782 4783 4784 4785 "hallway-lighting": { 4786 4787 "image": "//rendl.es/cdn/shop/files/140_IMG.jpg?v=1760084594&width=250", 4788 4789 "title": "Iluminación de pasillo" 4790 }, 4791 4792 4793 4794 4795 "lighting-for-the-basement": { 4796 4797 "image": "//rendl.es/cdn/shop/files/308_IMG.jpg?v=1760627570&width=250", 4798 4799 "title": "Iluminación de sótano" 4800 }, 4801 4802 4803 4804 4805 "hallway-ceiling-lights": { 4806 4807 "image": "//rendl.es/cdn/shop/files/33_IMG_2efc39ed-521b-4e26-ada4-e3e8a3584af5.jpg?v=1761317822&width=250", 4808 4809 "title": "Lámparas de techo de pasillo" 4810 }, 4811 4812 4813 4814 4815 "hallway-wall-light": { 4816 4817 "image": "//rendl.es/cdn/shop/files/34_IMG.jpg?v=1760468747&width=250", 4818 4819 "title": "Lámparas de pared de pasillo" 4820 }, 4821 4822 4823 4824 4825 "led-hallway-lighting": { 4826 4827 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4828 4829 "title": "" 4830 }, 4831 4832 4833 4834 4835 "bedroom-lighting": { 4836 4837 "image": "//rendl.es/cdn/shop/files/137_IMG_02e29117-8edd-4fc1-96db-0a62da5d7777.jpg?v=1787178621&width=250", 4838 4839 "title": "Iluminación de dormitorio" 4840 }, 4841 4842 4843 4844 4845 "bedroom-ceiling-light": { 4846 4847 "image": "//rendl.es/cdn/shop/files/22_IMG_3de059a6-b4fc-4068-af13-46fbc17db98d.jpg?v=1760360009&width=250", 4848 4849 "title": "Luz de techo de dormitorio" 4850 }, 4851 4852 4853 4854 4855 "bedroom-chandelier": { 4856 4857 "image": "//rendl.es/cdn/shop/files/23_IMG_fd470d0c-4a9d-4543-8d5e-d3d0b7aab1b3.jpg?v=1761118643&width=250", 4858 4859 "title": "Candelabro de dormitorio" 4860 }, 4861 4862 4863 4864 4865 "bedroom-wall-sconce": { 4866 4867 "image": "//rendl.es/cdn/shop/files/21_IMG_5295b3f5-f114-4ce7-9e61-afbae9bf2b23.jpg?v=1760359946&width=250", 4868 4869 "title": "Lámpara de pared de dormitorio" 4870 }, 4871 4872 4873 4874 4875 "bedroom-table-lamp": { 4876 4877 "image": "//rendl.es/cdn/shop/files/19_IMG_33dd6601-d118-431b-95a6-1bac8c2322ae.jpg?v=1760359212&width=250", 4878 4879 "title": "Lámpara de mesa de dormitorio" 4880 }, 4881 4882 4883 4884 4885 "bedroom-lamps": { 4886 4887 "image": "//rendl.es/cdn/shop/files/18_IMG_349aa543-6a59-4e67-be5a-354f369ca5e0.jpg?v=1760359467&width=250", 4888 4889 "title": "Lámparas de dormitorio" 4890 }, 4891 4892 4893 4894 4895 "bedside-lamps": { 4896 4897 "image": "//rendl.es/cdn/shop/files/269_IMG.jpg?v=1760552943&width=250", 4898
4899 "title": "Lámparas de mesita de noche" 4900 }, 4901 4902 4903 4904 4905 "lights-for-kids-rooms": { 4906 4907 "image": "//rendl.es/cdn/shop/files/141_IMG.jpg?v=1760468734&width=250", 4908 4909 "title": "Iluminación infantil" 4910 }, 4911 4912 4913 4914 4915 "kids-ceiling-lights": { 4916 4917 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4918 4919 "title": "" 4920 }, 4921 4922 4923 4924 4925 "kids-wall-light": { 4926 4927 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4928 4929 "title": "" 4930 }, 4931 4932 4933 4934 4935 "kids-floor-lamp": { 4936 4937 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4938 4939 "title": "" 4940 }, 4941 4942 4943 4944 4945 "childrens-ceiling-lights": { 4946 4947 "image": "//rendl.es/cdn/shop/files/35_IMG.jpg?v=1760971101&width=250", 4948 4949 "title": "Lámparas de techo infantiles" 4950 }, 4951 4952 4953 4954 4955 "childrens-wall-light": { 4956 4957 "image": "//rendl.es/cdn/shop/files/39_IMG.jpg?v=1760970897&width=250", 4958 4959 "title": "Lámparas de pared infantiles" 4960 }, 4961 4962 4963 4964 4965 "childrens-floor-lamp": { 4966 4967 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4968 4969 "title": "" 4970 }, 4971 4972 4973 4974 4975 "childrens-table-lamp": { 4976 4977 "image": "//rendl.es/cdn/shop/files/37_IMG.jpg?v=1760971567&width=250", 4978 4979 "title": "Lámparas de mesa infantiles" 4980 }, 4981 4982 4983 4984 4985 "kids-table-lamps": { 4986 4987 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 4988 4989 "title": "" 4990 }, 4991 4992 4993 4994 4995 "bathroom-lighting": { 4996 4997 "image": "//rendl.es/cdn/shop/files/135_IMG_b0b58b9a-e35f-42e6-8f5f-219b2ef0d853.jpg?v=1764936206&width=250", 4998 4999 "title": "Iluminación de baño" 5000 }, 5001 5002 5003 5004 5005 "above-mirror-lights": { 5006 5007 "image": "//rendl.es/cdn/shop/files/6_IMG_17185299-8e04-4699-b1ba-1100c2c446e4.jpg?v=1786573822&width=250", 5008 5009 "title": "Lámparas sobre espejo" 5010 }, 5011 5012 5013 5014 5015 "bathroom-ceiling-light": { 5016 5017 "image": "//rendl.es/cdn/shop/files/7_IMG_71149b14-3652-4a00-8756-88bf816acf55.jpg?v=1786487421&width=250", 5018 5019 "title": "Lámparas de techo de baño" 5020 }, 5021 5022 5023 5024 5025 "bathroom-wall-light": { 5026 5027 "image": "//rendl.es/cdn/shop/files/8_IMG.jpg?v=1760168215&width=250", 5028 5029 "title": "Lámparas de pared de baño" 5030 }, 5031 5032 5033 5034 5035 "bathroom-spotlights": { 5036 5037 "image": "//rendl.es/cdn/shop/files/9_IMG.jpg?v=1760369522&width=250", 5038 5039 "title": "Focos de baño" 5040 }, 5041 5042 5043 5044 5045 "recessed-bathroom-spotlights": { 5046 5047 "image": "//rendl.es/cdn/shop/files/277_IMG_3af20d85-0e5e-4be0-83f2-dd4f9cad2ae5.jpg?v=1771953427&width=250", 5048 5049 "title": "Lámparas LED empotrables de baño" 5050 }, 5051 5052 5053 5054 5055 "industrial-lighting-fixtures": { 5056 5057 "image": "//rendl.es/cdn/shop/files/42_IMG_72afa621-5442-420b-8d0f-562d884a993d.jpg?v=1760732498&width=250", 5058 5059 "title": "Estilo industrial" 5060 }, 5061 5062 5063 5064 5065 "bathroom-led-recessed-spotlights": { 5066 5067 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5068 5069 "title": "" 5070 }, 5071 5072 5073 5074 5075 "bathroom-pendant-lights": { 5076 5077 "image": "//rendl.es/cdn/shop/files/309_IMG_4ed57238-e476-4fe2-adff-fc426d3b3297.jpg?v=1779489023&width=250", 5078 5079 "title": "Lámparas colgantes de baño" 5080 }, 5081 5082 5083 5084 5085 "industrial-lighting": { 5086 5087 "image": "//rendl.es/cdn/shop/files/291_IMG_4421a10a-53a7-466d-b2e0-9f8097ecf88f.jpg?v=1779316225&width=250", 5088 5089 "title": "Iluminación industrial" 5090 }, 5091 5092 5093 5094 5095 "industrial-style-lights": { 5096 5097 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
5097d url input", 5098 5099 "title": "" 5100 }, 5101 5102 5103 5104 5105 "cellar-lights": { 5106 5107 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5108 5109 "title": "" 5110 }, 5111 5112 5113 5114 5115 "garage-lighting": { 5116 5117 "image": "//rendl.es/cdn/shop/files/r13527-2.jpg?v=1771406477&width=250", 5118 5119 "title": "Iluminación de garaje" 5120 }, 5121 5122 5123 5124 5125 "garage-led-light": { 5126 5127 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5128 5129 "title": "" 5130 }, 5131 5132 5133 5134 5135 "stairway-lighting": { 5136 5137 "image": "//rendl.es/cdn/shop/files/139_IMG_ef60a78f-5f75-443f-a0c0-4c3209326036.jpg?v=1787178621&width=250", 5138 5139 "title": "Iluminación de escalera" 5140 }, 5141 5142 5143 5144 5145 "staircase-light-with-sensor": { 5146 5147 "image": "//rendl.es/cdn/shop/files/109_IMG.jpg?v=1760085559&width=250", 5148 5149 "title": "Lámpara de escalera con sensor" 5150 }, 5151 5152 5153 5154 5155 "led-staircase-lighting": { 5156 5157 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5158 5159 "title": "" 5160 }, 5161 5162 5163 5164 5165 "luxury-lights": { 5166 5167 "image": "//rendl.es/cdn/shop/files/164_IMG.jpg?v=1760971163&width=250", 5168 5169 "title": "Lámparas de lujo" 5170 }, 5171 5172 5173 5174 5175 "luxury-chandeliers": { 5176 5177 "image": "//rendl.es/cdn/shop/files/124_IMG_9789cc9a-cc76-4530-ad80-80e8287ace97.jpg?v=1785882619&width=250", 5178 5179 "title": "Candelabro de lujo" 5180 }, 5181 5182 5183 5184 5185 "luxury-pendant-lights": { 5186 5187 "image": "//rendl.es/cdn/shop/files/123_IMG.jpg?v=1760470575&width=250", 5188 5189 "title": "Lámparas colgantes de lujo" 5190 }, 5191 5192 5193 5194 5195 "luxury-ceiling-lights": { 5196 5197 "image": "//rendl.es/cdn/shop/files/122_IMG.jpg?v=1760470559&width=250", 5198 5199 "title": "Lámparas de techo de lujo" 5200 }, 5201 5202 5203 5204 5205 "luxury-table-lamps": { 5206 5207 "image": "//rendl.es/cdn/shop/files/121_IMG.jpg?v=1760464736&width=250", 5208 5209 "title": "Lámparas de mesa de lujo" 5210 }, 5211 5212 5213 5214 5215 "luxury-floor-lamps": { 5216 5217 "image": "//rendl.es/cdn/shop/files/120_IMG_baaf58f8-24b0-4645-9a90-353792c4e012.jpg?v=1787178621&width=250", 5218 5219 "title": "Lámparas de pie de lujo" 5220 }, 5221 5222 5223 5224 5225 "office-lighting": { 5226 5227 "image": "//rendl.es/cdn/shop/files/143_IMG_e03774ed-ecf8-4a9d-9a42-101274a1922e.jpg?v=1761037852&width=250", 5228 5229 "title": "Iluminación de oficina" 5230 }, 5231 5232 5233 5234 5235 "office-pendant-lights": { 5236 5237 "image": "//rendl.es/cdn/shop/files/274_IMG.jpg?v=1760686926&width=250", 5238 5239 "title": "Lámparas colgantes de oficina" 5240 }, 5241 5242 5243 5244 5245 "office-ceiling-lights": { 5246 5247 "image": "//rendl.es/cdn/shop/files/41_IMG_6d9c9478-d770-4abb-93c1-2f81aba0dd15.jpg?v=1760862722&width=250", 5248 5249 "title": "Lámparas de techo de oficina" 5250 }, 5251 5252 5253 5254 5255 "office-lamps": { 5256 5257 "image": "//rendl.es/cdn/shop/files/275_IMG.jpg?v=1760686989&width=250", 5258 5259 "title": "Lámparas de oficina" 5260 }, 5261 5262 5263 5264 5265 "3f-spots": { 5266 5267 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5268 5269 "title": "" 5270 }, 5271 5272 5273 5274 5275 "1-circuit-spots": { 5276 5277 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5278 5279 "title": "" 5280 }, 5281 5282 5283 5284 5285 "outdoor-lights": { 5286 5287 "image": "//rendl.es/cdn/shop/files/284_IMG.jpg?v=1761123025&width=250", 5288 5289 "title": "Lámparas exteriores" 5290 }, 5291 5292 5293 5294 5295 "outdoor-led-lights": { 5296 5297 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
5297d url input", 5298 5299 "title": "" 5300 }, 5301 5302 5303 5304 5305 "outdoor-sensor-lamps": { 5306 5307 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5308 5309 "title": "" 5310 }, 5311 5312 5313 5314 5315 "outdoor-lights-with-sensor": { 5316 5317 "image": "//rendl.es/cdn/shop/files/43_IMG.jpg?v=1760470008&width=250", 5318 5319 "title": "Lámparas exteriores con sensor" 5320 }, 5321 5322 5323 5324 5325 "outdoor-lighting-families": { 5326 5327 "image": "//rendl.es/cdn/shop/files/231_IMG.jpg?v=1761041831&width=250", 5328 5329 "title": "Familias de lámparas exteriores" 5330 }, 5331 5332 5333 5334 5335 "decorative-outdoor-lamps": { 5336 5337 "image": "//rendl.es/cdn/shop/files/288_IMG.jpg?v=1760971195&width=250", 5338 5339 "title": "Lámparas exteriores decorativas" 5340 }, 5341 5342 5343 5344 5345 "outdoor-linear-lights": { 5346 5347 "image": "//rendl.es/cdn/shop/files/243_IMG_e2e26fa4-6698-47dc-90a2-01b44b1a5952.jpg?v=1781994622&width=250", 5348 5349 "title": "Lámparas exteriores lineales" 5350 }, 5351 5352 5353 5354 5355 "one-way-luminaires": { 5356 5357 "image": "//rendl.es/cdn/shop/files/305_IMG.jpg?v=1760686502&width=250", 5358 5359 "title": "Lámparas unidireccionales" 5360 }, 5361 5362 5363 5364 5365 "outdoor-wall-lights": { 5366 5367 "image": "//rendl.es/cdn/shop/files/preview_images/9f6d302c200d4a12b9843bff11963be4.thumbnail.0000000000.jpg?v=1761921682&width=250", 5368 5369 "title": "Lámparas de pared exteriores" 5370 }, 5371 5372 5373 5374 5375 "updown-outdoor-lights": { 5376 5377 "image": "//rendl.es/cdn/shop/files/267_IMG_f3d4862f-76f1-40f3-97df-c3a8e6a372ce.jpg?v=1760611544&width=250", 5378 5379 "title": "Lámparas exteriores Up\/Down" 5380 }, 5381 5382 5383 5384 5385 "outdoor-indirect-lights": { 5386 5387 "image": "//rendl.es/cdn/shop/files/302_IMG.jpg?v=1760963308&width=250", 5388 5389 "title": "Lámparas exteriores indirectas" 5390 }, 5391 5392 5393 5394 5395 "adjustable-wall-lights": { 5396 5397 "image": "//rendl.es/cdn/shop/files/303_IMG.jpg?v=1760958472&width=250", 5398 5399 "title": "Lámparas de pared ajustables" 5400 }, 5401 5402 5403 5404 5405 "unidirectional-lights": { 5406 5407 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5408 5409 "title": "" 5410 }, 5411 5412 5413 5414 5415 "outdoor-ceiling-lights": { 5416 5417 "image": "//rendl.es/cdn/shop/files/146_IMG.jpg?v=1760387261&width=250", 5418 5419 "title": "Lámparas de techo exteriores" 5420 }, 5421 5422 5423 5424 5425 "outdoor-downlights": { 5426 5427 "image": "//rendl.es/cdn/shop/files/301_IMG.jpg?v=1760971911&width=250", 5428 5429 "title": "Downlights exteriores" 5430 }, 5431 5432 5433 5434 5435 "adjustable-ceiling-lights": { 5436 5437 "image": "//rendl.es/cdn/shop/files/304_IMG.jpg?v=1760958544&width=250", 5438 5439 "title": "Lámparas de techo ajustables" 5440 }, 5441 5442 5443 5444 5445 "outdoor-pendant-lights": { 5446 5447 "image": "//rendl.es/cdn/shop/files/47_IMG.jpg?v=1760470308&width=250", 5448 5449 "title": "Lámparas colgantes exteriores" 5450 }, 5451 5452 5453 5454 5455 "outdoor-pergola-chandelier": { 5456 5457 "image": "//rendl.es/cdn/shop/files/48_IMG_b58f1104-0c15-4272-874e-91c193683c59.jpg?v=1785018621&width=250", 5458 5459 "title": "Candelabros exteriores para pérgola" 5460 }, 5461 5462 5463 5464 5465 "outdoor-recessed-lights": { 5466 5467 "image": "//rendl.es/cdn/shop/files/299_IMG.jpg?v=1760971734&width=250", 5468 5469 "title": "Luminarias empotrables exteriores" 5470 }, 5471 5472 5473 5474 5475 "ground-lights": { 5476 5477 "image": "//rendl.es/cdn/shop/files/311_IMG.jpg?v=1760629942&width=250", 5478 5479 "title": "Lámparas empotrables en suelo" 5480 }, 5481 5482 5483 5484 5485 "outdoor-wall-recessed": { 5486 5487 "image": "//rendl.es/cdn/shop/files/224_IMG_0f327a07-c334-4002-97e7-eda50e25b2be.jpg?v=1779316226&width=250", 5488 5489 "title": "Lámparas empotrables de pared exteriores" 5490 }, 5491 5492 5493 5494 5495 "outdoor-floor-recessed-lights": { 5496 5497 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
5497d url input", 5498 5499 "title": "" 5500 }, 5501 5502 5503 5504 5505 "path-lighting": { 5506 5507 "image": "//rendl.es/cdn/shop/files/290_IMG.jpg?v=1760625307&width=250", 5508 5509 "title": "Iluminación de caminos" 5510 }, 5511 5512 5513 5514 5515 "directional-light-columns": { 5516 5517 "image": "//rendl.es/cdn/shop/files/285_IMG_3c11483e-39ec-4f3d-8890-4351367df04a.jpg?v=1779316226&width=250", 5518 5519 "title": "Postes ajustables" 5520 }, 5521 5522 5523 5524 5525 "spike-lights": { 5526 5527 "image": "//rendl.es/cdn/shop/files/207_IMG_7cd1c79b-32e1-4295-93f4-68d8dea5c851.jpg?v=1764340430&width=250", 5528 5529 "title": "Proyectores con pincho" 5530 }, 5531 5532 5533 5534 5535 "garden-post-light": { 5536 5537 "image": "//rendl.es/cdn/shop/files/preview_images/586abaa3a90b41d9b97d18029201ca25.thumbnail.0000000000.jpg?v=1764340109&width=250", 5538 5539 "title": "Postes de jardÃn" 5540 }, 5541 5542 5543 5544 5545 "garden-posts": { 5546 5547 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5548 5549 "title": "" 5550 }, 5551 5552 5553 5554 5555 "adjustable-posts": { 5556 5557 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5558 5559 "title": "" 5560 }, 5561 5562 5563 5564 5565 "bollards-round": { 5566 5567 "image": "//rendl.es/cdn/shop/files/287_IMG_d2f6b7ac-46a7-4aa1-9197-f600da08d735.jpg?v=1783895422&width=250", 5568 5569 "title": "Postes redondos" 5570 }, 5571 5572 5573 5574 5575 "bollards-angular": { 5576 5577 "image": "//rendl.es/cdn/shop/files/286_IMG_4070dcf9-8b66-4ad6-ab64-ec41ff9b7b7b.jpg?v=1779316226&width=250", 5578 5579 "title": "Postes cuadrados" 5580 }, 5581 5582 5583 5584 5585 "round-posts": { 5586 5587 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5588 5589 "title": "" 5590 }, 5591 5592 5593 5594 5595 "square-posts": { 5596 5597 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5598 5599 "title": "" 5600 }, 5601 5602 5603 5604 5605 "1-circuit-track-systems": { 5606 5607 "image": "//rendl.es/cdn/shop/files/166_IMG_5bc41e39-2d56-40e6-9ec2-55e4ae3856e0.jpg?v=1760369301&width=250", 5608 5609 "title": "Sistemas de carril monofásico" 5610 }, 5611 5612 5613 5614 5615 "1f-tracks": { 5616 5617 "image": "//rendl.es/cdn/shop/files/185_IMG.jpg?v=1760369318&width=250", 5618 5619 "title": "Carriles monofásicos" 5620 }, 5621 5622 5623 5624 5625 "1-circuit-components": { 5626 5627 "image": "//rendl.es/cdn/shop/files/174_IMG.jpg?v=1760369284&width=250", 5628 5629 "title": "Componentes monofásicos" 5630 }, 5631 5632 5633 5634 5635 "1-circuit-spotlights": { 5636 5637 "image": "//rendl.es/cdn/shop/files/173_IMG_ba155e78-14b7-475e-8de2-a033756b21bf.jpg?v=1764936206&width=250", 5638 5639 "title": "Focos monofásicos" 5640 }, 5641 5642 5643 5644 5645 "1-circuit-pendants": { 5646 5647 "image": "//rendl.es/cdn/shop/files/186_IMG_2dd7ea41-19c6-4a76-bb6f-4967731ef98e.jpg?v=1784413819&width=250", 5648 5649 "title": "Lámparas colgantes monofásicas" 5650 }, 5651 5652 5653 5654 5655 "3-circuit-track-systems": { 5656 5657 "image": "//rendl.es/cdn/shop/files/167_IMG_e9fd29f3-800d-4da9-8e7b-26de7515447d.jpg?v=1760387443&width=250", 5658 5659 "title": "Sistemas de carril trifásico" 5660 }, 5661 5662 5663 5664 5665 "3-circuit-tracks": { 5666 5667 "image": "//rendl.es/cdn/shop/files/176_IMG.jpg?v=1760369418&width=250", 5668 5669 "title": "Carriles trifásicos" 5670 }, 5671 5672 5673 5674 5675 "3-circuit-tracks-recessed": { 5676 5677 "image": "//rendl.es/cdn/shop/files/182_IMG.jpg?v=1760369436&width=250", 5678 5679 "title": "Carriles empotrables" 5680 }, 5681 5682 5683 5684 5685 "3-circuit-spotlights": { 5686 5687 "image": "//rendl.es/cdn/shop/files/177_IMG.jpg?v=1760369453&width=250", 5688 5689 "title": "Focos trifásicos" 5690 }, 5691 5692 5693 5694 5695 "3-circuit-pendants": { 5696 5697 "image": "//rendl.es/cdn/shop/files/175_IMG.jpg?v=1760369471&width=250", 5698 5699 "title": "Lámparas colgantes trifásicas" 5700 }, 5701 5702 5703 5704 5705 "3-circuit-components": { 5706 5707 "image": "//rendl.es/cdn/shop/files/178_IMG_9b914f0f-5ab6-4bda-8716-a83f3a760439.jpg?v=1781303422&width=250", 5708 5709 "title": "Componentes trifásicos" 5710 }, 5711 5712 5713 5714 5715 "3-circuit-recessed-track-components": { 5716
5717 "image": "//rendl.es/cdn/shop/files/183_IMG.jpg?v=1760369385&width=250", 5718 5719 "title": "Componentes empotrables trifásicos" 5720 }, 5721 5722 5723 5724 5725 "ultra-thin-track-systems": { 5726 5727 "image": "//rendl.es/cdn/shop/files/171_IMG.jpg?v=1760387496&width=250", 5728 5729 "title": "Sistema ultra-thin" 5730 }, 5731 5732 5733 5734 5735 "vega-tracks": { 5736 5737 "image": "//rendl.es/cdn/shop/files/191_IMG_f35b45c1-6bbf-493d-954e-032eab4c7015.jpg?v=1764860140&width=250", 5738 5739 "title": "Carriles VEGA" 5740 }, 5741 5742 5743 5744 5745 "vega-components": { 5746 5747 "image": "//rendl.es/cdn/shop/files/181_IMG.jpg?v=1760387610&width=250", 5748 5749 "title": "Componentes VEGA" 5750 }, 5751 5752 5753 5754 5755 "vega-spotlight": { 5756 5757 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5758 5759 "title": "" 5760 }, 5761 5762 5763 5764 5765 "wave-belt-system-1": { 5766 5767 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5768 5769 "title": "" 5770 }, 5771 5772 5773 5774 5775 "wave-belt": { 5776 5777 "image": "//rendl.es/cdn/shop/files/180_IMG.jpg?v=1760387595&width=250", 5778 5779 "title": "Tira WAVE" 5780 }, 5781 5782 5783 5784 5785 "only-strips": { 5786 5787 "image": "//rendl.es/cdn/shop/files/273_IMG.jpg?v=1760610397&width=250", 5788 5789 "title": "Tiras LED" 5790 }, 5791 5792 5793 5794 5795 "lamps-for-wave-system": { 5796 5797 "image": "//rendl.es/cdn/shop/files/323_IMG.jpg?v=1764591192&width=250", 5798 5799 "title": "Lámparas para sistema WAVE" 5800 }, 5801 5802 5803 5804 5805 "wave-components": { 5806 5807 "image": "//rendl.es/cdn/shop/files/179_IMG.jpg?v=1760387582&width=250", 5808 5809 "title": "Componentes WAVE" 5810 }, 5811 5812 5813 5814 5815 "led-strips": { 5816 5817 "image": "//rendl.es/cdn/shop/files/184_IMG_4cf3db46-48a4-4239-b6ff-c72bba73d367.jpg?v=1760508022&width=250", 5818 5819 "title": "Tiras LED" 5820 }, 5821 5822 5823 5824 5825 "profiles-recessed": { 5826 5827 "image": "//rendl.es/cdn/shop/files/187_IMG.jpg?v=1760387677&width=250", 5828 5829 "title": "Perfiles empotrables" 5830 }, 5831 5832 5833 5834 5835 "profiles-surface-mounted": { 5836 5837 "image": "//rendl.es/cdn/shop/files/188_IMG.jpg?v=1760387691&width=250", 5838 5839 "title": "Perfiles de superficie" 5840 }, 5841 5842 5843 5844 5845 "led-components": { 5846 5847 "image": "//rendl.es/cdn/shop/files/189_IMG.jpg?v=1760387705&width=250", 5848 5849 "title": "Accesorios para tiras LED" 5850 }, 5851 5852 5853 5854 5855 "ceiling-lights": { 5856 5857 "image": "//rendl.es/cdn/shop/files/148_IMG_ec8e5798-9d49-4776-bf57-da425f768781.jpg?v=1760006773&width=250", 5858 5859 "title": "Lámparas de techo" 5860 }, 5861 5862 5863 5864 5865 "bathroom-ceiling-lights": { 5866 5867 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5868 5869 "title": "" 5870 }, 5871 5872 5873 5874 5875 "ceiling-spotlights": { 5876 5877 "image": "//rendl.es/cdn/shop/files/56_IMG.jpg?v=1760085329&width=250", 5878 5879 "title": "Focos de techo" 5880 }, 5881 5882 5883 5884 5885 "ceiling-light-with-sensor": { 5886 5887 "image": "//rendl.es/cdn/shop/files/64_IMG.jpg?v=1760470226&width=250", 5888 5889 "title": "Lámpara de techo con sensor" 5890 }, 5891 5892 5893 5894 5895 "round-ceiling-lights": { 5896 5897 "image": "//rendl.es/cdn/shop/files/65_IMG.jpg?v=1760469142&width=250", 5898 5899 "title": "Lámparas de techo redondas" 5900 }, 5901 5902 5903 5904 5905 "led-ceiling-panel": { 5906 5907 "image": "//rendl.es/cdn/shop/files/55_IMG.jpg?v=1760470351&width=250", 5908 5909 "title": "Paneles LED de techo" 5910 }, 5911 5912 5913 5914 5915 "linear-ceiling-lights": { 5916 5917 "image": "//rendl.es/cdn/shop/files/241_IMG.jpg?v=1760612963&width=250", 5918 5919 "title": "Lámparas de techo lineales" 5920 }, 5921 5922 5923 5924 5925 "decorative-ceiling-lights": { 5926 5927 "image": "//rendl.es/cdn/shop/files/226_IMG.jpg?v=1760617024&width=250", 5928 5929 "title": "Lámparas de techo decorativas" 5930 }, 5931 5932 5933 5934 5935 "square-ceiling-lights": { 5936 5937 "image": "//rendl.es/cdn/shop/files/263_IMG.jpg?v=1760686308&width=250", 5938 5939 "title": "Lámparas de techo cuadradas" 5940 }, 5941 5942 5943 5944 5945 "plaster-ceiling-lights": { 5946
5947 "image": "//rendl.es/cdn/shop/files/198_IMG.jpg?v=1760445036&width=250", 5948 5949 "title": "Lámparas de techo de yeso" 5950 }, 5951 5952 5953 5954 5955 "luxury-ceiling-lights": { 5956 5957 "image": "//rendl.es/cdn/shop/files/122_IMG.jpg?v=1760470559&width=250", 5958 5959 "title": "Lámparas de techo de lujo" 5960 }, 5961 5962 5963 5964 5965 "retro-ceiling-lights": { 5966 5967 "image": "//rendl.es/cdn/shop/files/60_IMG_f1bbd5fd-ea2b-42e6-a888-09e13e2feda2.jpg?v=1782945019&width=250", 5968 5969 "title": "Lámparas de techo retro" 5970 }, 5971 5972 5973 5974 5975 "dimmable-led-ceiling-lights": { 5976 5977 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 5978 5979 "title": "" 5980 }, 5981 5982 5983 5984 5985 "dimmable-ceiling-light": { 5986 5987 "image": "//rendl.es/cdn/shop/files/59_IMG_b18ba933-637c-4464-8bc8-3b333067efa2.jpg?v=1782945021&width=250", 5988 5989 "title": "Lámpara de techo regulable" 5990 }, 5991 5992 5993 5994 5995 "led-ceiling-lights": { 5996 5997 "image": "//rendl.es/cdn/shop/files/r12843-4.jpg?v=1783738830&width=250", 5998 5999 "title": "Lámparas LED de techo" 6000 }, 6001 6002 6003 6004 6005 "ceiling-lights-with-remote-control": { 6006 6007 "image": "//rendl.es/cdn/shop/files/110_IMG_53669b59-a8f5-4033-b6b1-4b574967da2c.jpg?v=1763039373&width=250", 6008 6009 "title": "Lámpara LED de techo con mando a distancia" 6010 }, 6011 6012 6013 6014 6015 "thin-ceiling-lights": { 6016 6017 "image": "//rendl.es/cdn/shop/files/225_IMG.jpg?v=1760445518&width=250", 6018 6019 "title": "Lámparas de techo finas" 6020 }, 6021 6022 6023 6024 6025 "recessed-spotlights": { 6026 6027 "image": "//rendl.es/cdn/shop/files/97_IMG.jpg?v=1760006390&width=250", 6028 6029 "title": "Focos para pladur" 6030 }, 6031 6032 6033 6034 6035 "recessed-lights": { 6036 6037 "image": "//rendl.es/cdn/shop/files/61_IMG_fb8c3b06-532b-4bdd-a66e-fd5b212f6e59.jpg?v=1760958795&width=250", 6038 6039 "title": "Lámparas empotrables " 6040 }, 6041 6042 6043 6044 6045 "recessed-bathroom-spotlights": { 6046 6047 "image": "//rendl.es/cdn/shop/files/277_IMG_3af20d85-0e5e-4be0-83f2-dd4f9cad2ae5.jpg?v=1771953427&width=250", 6048 6049 "title": "Lámparas LED empotrables de baño" 6050 }, 6051 6052 6053 6054 6055 "recessed-bathroom-led-spotlights": { 6056 6057 "image": "//rendl.es/cdn/shop/files/221_IMG.jpg?v=1760686769&width=250", 6058 6059 "title": "Lámparas empotrables de baño" 6060 }, 6061 6062 6063 6064 6065 "recessed-plaster-spotlights": { 6066 6067 "image": "//rendl.es/cdn/shop/files/199_IMG.jpg?v=1760445055&width=250", 6068 6069 "title": "Lámparas empotrables de yeso" 6070 }, 6071 6072 6073 6074 6075 "dimmable-recessed-spotlights": { 6076 6077 "image": "//rendl.es/cdn/shop/files/194_IMG.jpg?v=1760444963&width=250", 6078 6079 "title": "Lámparas empotrables regulables" 6080 }, 6081 6082 6083 6084 6085 "dimmable-led-recessed-spotlights": { 6086 6087 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6088 6089 "title": "" 6090 }, 6091 6092 6093 6094 6095 "decorative-recessed-spotlights": { 6096 6097 "image": "//rendl.es/cdn/shop/files/222_IMG.jpg?v=1760686811&width=250", 6098 6099 "title": "Lámparas empotrables decorativas" 6100 }, 6101 6102 6103 6104 6105 "multiple-recessed-lights": { 6106 6107 "image": "//rendl.es/cdn/shop/files/238_IMG.jpg?v=1760469415&width=250", 6108 6109 "title": "Lámparas empotrables múltiples" 6110 }, 6111 6112 6113 6114 6115 "recessed-spotlight-families": { 6116 6117 "image": "//rendl.es/cdn/shop/collections/missing-title_image_e367da85-dafb-48cf-8be7-e09f1c803775.jpg?v=1788993024&width=250", 6118 6119 "title": "Familias de lámparas empotrables" 6120 }, 6121 6122 6123 6124 6125 "recessed-wall-spotlights": { 6126 6127 "image": "//rendl.es/cdn/shop/files/223_IMG_2cba8d35-d74c-4aaa-9117-dc596a7d5724.jpg?v=1760552969&width=250", 6128 6129 "title": "Lámparas empotrables de pared" 6130 }, 6131 6132 6133 6134 6135 "frameless-lights": { 6136 6137 "image": "//rendl.es/cdn/shop/files/220_IMG.jpg?v=1760469507&width=250", 6138 6139 "title": "Lámparas sin marco" 6140 }, 6141 6142 6143 6144 6145 "combinable-lights": { 6146 6147 "image": "//rendl.es/cdn/shop/files/278_IMG.jpg?v=1760614196&width=250", 6148 6149 "title": "Lámparas combinables" 6150 }, 6151 6152 6153 6154 6155 "semi-recessed-lights": { 6156 6157 "image": "//rendl.es/cdn/shop/files/219_IMG.jpg?v=1760470167&width=250", 6158 6159 "title": "Lámparas semiempotrables" 6160 }, 6161 6162 6163 6164 6165 "thin-recessed-lights": { 6166 6167 "image": "//rendl.es/cdn/shop/files/279_IMG.jpg?v=1760971988&width=250", 6168 6169 "title": "Lámparas empotrables finas" 6170 }, 6171 6172 6173 6174 6175 "recessed-led-spotlights": { 6176 6177 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
6177d url input", 6178 6179 "title": "" 6180 }, 6181 6182 6183 6184 6185 "wall-lights": { 6186 6187 "image": "//rendl.es/cdn/shop/files/149_IMG_75c69cce-f409-435d-baad-1c86d79aaf8d.jpg?v=1782426969&width=250", 6188 6189 "title": "Lámparas de pared" 6190 }, 6191 6192 6193 6194 6195 "bathroom-wall-light": { 6196 6197 "image": "//rendl.es/cdn/shop/files/8_IMG.jpg?v=1760168215&width=250", 6198 6199 "title": "Lámparas de pared de baño" 6200 }, 6201 6202 6203 6204 6205 "wall-lights-with-switch": { 6206 6207 "image": "//rendl.es/cdn/shop/files/70_IMG.jpg?v=1760469263&width=250", 6208 6209 "title": "Lámparas de pared con interruptor" 6210 }, 6211 6212 6213 6214 6215 "updown-wall-lights": { 6216 6217 "image": "//rendl.es/cdn/shop/files/268_IMG_1e4ac617-c82f-444d-8935-fe26789cbc10.jpg?v=1784845823&width=250", 6218 6219 "title": "Lámparas de pared Up\/Down" 6220 }, 6221 6222 6223 6224 6225 "dimmable-wall-lights": { 6226 6227 "image": "//rendl.es/cdn/shop/files/249_IMG.jpg?v=1760683340&width=250", 6228 6229 "title": "Lámparas de pared regulables" 6230 }, 6231 6232 6233 6234 6235 "dimmable-led-wall-lights": { 6236 6237 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6238 6239 "title": "" 6240 }, 6241 6242 6243 6244 6245 "linear-wall-lights": { 6246 6247 "image": "//rendl.es/cdn/shop/files/242_IMG.jpg?v=1760469310&width=250", 6248 6249 "title": "Lámparas de pared lineales" 6250 }, 6251 6252 6253 6254 6255 "decorative-wall-lights": { 6256 6257 "image": "//rendl.es/cdn/shop/files/228_IMG.jpg?v=1760612176&width=250", 6258 6259 "title": "Lámparas de pared decorativas" 6260 }, 6261 6262 6263 6264 6265 "plaster-wall-lights": { 6266 6267 "image": "//rendl.es/cdn/shop/files/197_IMG.jpg?v=1760445017&width=250", 6268 6269 "title": "Lámparas de pared de yeso" 6270 }, 6271 6272 6273 6274 6275 "retro-wall-light": { 6276 6277 "image": "//rendl.es/cdn/shop/files/71_IMG.jpg?v=1760686254&width=250", 6278 6279 "title": "Lámparas de pared retro" 6280 }, 6281 6282 6283 6284 6285 "led-wall-lights": { 6286 6287 "image": "//rendl.es/cdn/shop/files/67_IMG.jpg?v=1760084844&width=250", 6288 6289 "title": "Lámparas de pared LED" 6290 }, 6291 6292 6293 6294 6295 "wall-lights-on-arm": { 6296 6297 "image": "//rendl.es/cdn/shop/files/265_IMG.jpg?v=1760553611&width=250", 6298 6299 "title": "Lámparas de pared con brazo" 6300 }, 6301 6302 6303 6304 6305 "bedside-lights": { 6306 6307 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6308 6309 "title": "" 6310 }, 6311 6312 6313 6314 6315 "picture-lights": { 6316 6317 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6318 6319 "title": "" 6320 }, 6321 6322 6323 6324 6325 "hanging-ceiling-lights": { 6326 6327 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6328 6329 "title": "" 6330 }, 6331 6332 6333 6334 6335 "pendant-lamps": { 6336 6337 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6338 6339 "title": "" 6340 }, 6341 6342 6343 6344 6345 "pendant-led-lights": { 6346 6347 "image": "//rendl.es/cdn/shop/files/74_IMG.jpg?v=1760470484&width=250", 6348 6349 "title": "Lámparas colgantes LED" 6350 }, 6351 6352 6353 6354 6355 "pendant-chandelier": { 6356 6357 "image": "//rendl.es/cdn/shop/files/75_IMG_d60a61ea-5ff3-4fe6-a95d-33f7bd01547f.jpg?v=1760085149&width=250", 6358 6359 "title": "Candelabros colgantes" 6360 }, 6361 6362 6363 6364 6365 "pendant-glass-sphere": { 6366 6367 "image": "//rendl.es/cdn/shop/files/77_IMG.jpg?v=1760470514&width=250", 6368 6369 "title": "Bola de cristal colgante" 6370 }, 6371 6372 6373 6374 6375 "luxury-pendant-lights": { 6376 6377 "image": "//rendl.es/cdn/shop/files/123_IMG.jpg?v=1760470575&width=250", 6378 6379 "title": "Lámparas colgantes de lujo" 6380 }, 6381 6382 6383 6384 6385 "dimmable-pendant-lights": { 6386 6387 "image": "//rendl.es/cdn/shop/files/192_IMG.jpg?v=1760444924&width=250", 6388 6389 "title": "Lámparas colgantes regulables" 6390 }, 6391 6392 6393 6394 6395 "dimmable-led-pendant-lights": { 6396 6397 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
6397d url input", 6398 6399 "title": "" 6400 }, 6401 6402 6403 6404 6405 "decorative-pendant-lights": { 6406 6407 "image": "//rendl.es/cdn/shop/files/227_IMG.jpg?v=1760686639&width=250", 6408 6409 "title": "Lámparas colgantes decorativas" 6410 }, 6411 6412 6413 6414 6415 "multiple-pendant-lights": { 6416 6417 "image": "//rendl.es/cdn/shop/files/237_IMG.jpg?v=1760469127&width=250", 6418 6419 "title": "Lámparas colgantes múltiples" 6420 }, 6421 6422 6423 6424 6425 "linear-pendant-lights": { 6426 6427 "image": "//rendl.es/cdn/shop/files/240_IMG_973a4fce-ad57-4a4f-9c6d-a903dfaab9b3.jpg?v=1764936206&width=250", 6428 6429 "title": "Lámparas colgantes lineales" 6430 }, 6431 6432 6433 6434 6435 "floor-lamps": { 6436 6437 "image": "//rendl.es/cdn/shop/files/151_IMG_a271f151-7830-40a0-9eff-558efefac04d.jpg?v=1760007935&width=250", 6438 6439 "title": "Lámparas de pie" 6440 }, 6441 6442 6443 6444 6445 "floor-led-lamps": { 6446 6447 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6448 6449 "title": "" 6450 }, 6451 6452 6453 6454 6455 "dimmable-floor-lamp": { 6456 6457 "image": "//rendl.es/cdn/shop/files/117_IMG_5666ecad-baa6-4c98-820e-bdd8a28aee02.jpg?v=1787178623&width=250", 6458 6459 "title": "Lámpara de pie regulable" 6460 }, 6461 6462 6463 6464 6465 "dimmable-led-floor-lamp": { 6466 6467 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6468 6469 "title": "" 6470 }, 6471 6472 6473 6474 6475 "luxury-floor-lamps": { 6476 6477 "image": "//rendl.es/cdn/shop/files/120_IMG_baaf58f8-24b0-4645-9a90-353792c4e012.jpg?v=1787178621&width=250", 6478 6479 "title": "Lámparas de pie de lujo" 6480 }, 6481 6482 6483 6484 6485 "decorative-floor-lamps": { 6486 6487 "image": "//rendl.es/cdn/shop/files/230_IMG.jpg?v=1760611564&width=250", 6488 6489 "title": "Lámparas de pie decorativas" 6490 }, 6491 6492 6493 6494 6495 "arc-floor-lamp": { 6496 6497 "image": "//rendl.es/cdn/shop/files/83_IMG.jpg?v=1760470379&width=250", 6498 6499 "title": "Lámpara de arco" 6500 }, 6501 6502 6503 6504 6505 "floor-lamps-for-reading": { 6506 6507 "image": "//rendl.es/cdn/shop/files/276_IMG.jpg?v=1760972104&width=250", 6508 6509 "title": "Lámparas de lectura" 6510 }, 6511 6512 6513 6514 6515 "table-lamps": { 6516 6517 "image": "//rendl.es/cdn/shop/files/152_IMG.jpg?v=1760007275&width=250", 6518 6519 "title": "Lámparas de mesa" 6520 }, 6521 6522 6523 6524 6525 "decorative-table-lamps": { 6526 6527 "image": "//rendl.es/cdn/shop/files/229_IMG.jpg?v=1760611265&width=250", 6528 6529 "title": "Lámparas de mesa decorativas" 6530 }, 6531 6532 6533 6534 6535 "luxury-table-lamps": { 6536 6537 "image": "//rendl.es/cdn/shop/files/121_IMG.jpg?v=1760464736&width=250", 6538 6539 "title": "Lámparas de mesa de lujo" 6540 }, 6541 6542 6543 6544 6545 "dimmable-table-lamp": { 6546 6547 "image": "//rendl.es/cdn/shop/files/93_IMG_0c30ba9c-e219-457a-b9a6-1d260624353d.jpg?v=1787697023&width=250", 6548 6549 "title": "Lámpara de mesa regulable" 6550 }, 6551 6552 6553 6554 6555 "dimmable-led-table-lamp": { 6556 6557 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6558 6559 "title": "" 6560 }, 6561 6562 6563 6564 6565 "touch-table-lamp": { 6566 6567 "image": "//rendl.es/cdn/shop/files/92_IMG.jpg?v=1760464692&width=250", 6568 6569 "title": "Lámpara de mesa táctil" 6570 }, 6571 6572 6573 6574 6575 "table-led-lamp": { 6576 6577 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6578 6579 "title": "" 6580 }, 6581 6582 6583 6584 6585 "for-work": { 6586 6587 "image": "//rendl.es/cdn/shop/files/88_IMG.jpg?v=1760464641&width=250", 6588 6589 "title": "Lámparas de escritorio" 6590 }, 6591 6592 6593 6594 6595 "desk-lamps": { 6596 6597 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
6597d url input", 6598 6599 "title": "" 6600 }, 6601 6602 6603 6604 6605 "modern-table-lamps": { 6606 6607 "image": "//rendl.es/cdn/shop/files/90_IMG_4dc2976e-5b6e-4270-a0eb-b3fc7c205b76.jpg?v=1760464664&width=250", 6608 6609 "title": "Lámparas de mesa modernas" 6610 }, 6611 6612 6613 6614 6615 "retro-table-lamp": { 6616 6617 "image": "//rendl.es/cdn/shop/files/89_IMG.jpg?v=1760686551&width=250", 6618 6619 "title": "Lámpara de mesa retro" 6620 }, 6621 6622 6623 6624 6625 "light-sources": { 6626 6627 "image": "//rendl.es/cdn/shop/files/253_IMG.jpg?v=1760687051&width=250", 6628 6629 "title": "Fuentes de luz" 6630 }, 6631 6632 6633 6634 6635 "e27-bulbs": { 6636 6637 "image": "//rendl.es/cdn/shop/files/252_IMG.jpg?v=1760611967&width=250", 6638 6639 "title": "Bombillas E27" 6640 }, 6641 6642 6643 6644 6645 "e14-bulbs": { 6646 6647 "image": "//rendl.es/cdn/shop/files/251_IMG_fa7caa0c-8550-42a1-aa69-d06c0a573261.jpg?v=1781908224&width=250", 6648 6649 "title": "Bombillas E14" 6650 }, 6651 6652 6653 6654 6655 "globe-bulbs": { 6656 6657 "image": "//rendl.es/cdn/shop/files/244_IMG.jpg?v=1760553737&width=250", 6658 6659 "title": "Bombillas globo" 6660 }, 6661 6662 6663 6664 6665 "gu10-bulbs": { 6666 6667 "image": "//rendl.es/cdn/shop/files/255_IMG.jpg?v=1760612096&width=250", 6668 6669 "title": "Bombillas GU10" 6670 }, 6671 6672 6673 6674 6675 "g9-bulbs": { 6676 6677 "image": "//rendl.es/cdn/shop/files/256_IMG.jpg?v=1760612868&width=250", 6678 6679 "title": "Bombillas G9" 6680 }, 6681 6682 6683 6684 6685 "gx53-bulbs": { 6686 6687 "image": "//rendl.es/cdn/shop/files/257_IMG.jpg?v=1760613350&width=250", 6688 6689 "title": "Bombillas GX53" 6690 }, 6691 6692 6693 6694 6695 "b15d-bulbs": { 6696 6697 "image": "//rendl.es/cdn/shop/files/270_IMG.jpg?v=1760554029&width=250", 6698 6699 "title": "Bombillas B15d" 6700 }, 6701 6702 6703 6704 6705 "linear-bulbs": { 6706 6707 "image": "//rendl.es/cdn/shop/files/261_IMG.jpg?v=1760687027&width=250", 6708 6709 "title": "Bombillas lineales" 6710 }, 6711 6712 6713 6714 6715 "par-bulbs": { 6716 6717 "image": "//rendl.es/cdn/shop/files/253_IMG.jpg?v=1760687051&width=250", 6718 6719 "title": "Bombillas PAR" 6720 }, 6721 6722 6723 6724 6725 "t-shape-bulbs": { 6726 6727 "image": "//rendl.es/cdn/shop/files/254_IMG.jpg?v=1760613077&width=250", 6728 6729 "title": "Bombillas tipo T" 6730 }, 6731 6732 6733 6734 6735 "g4-12v-bulbs": { 6736 6737 "image": "//rendl.es/cdn/shop/files/260_IMG.jpg?v=1760625739&width=250", 6738 6739 "title": "Bombillas G4 12V" 6740 }, 6741 6742 6743 6744 6745 "gu53-12v-bulbs": { 6746 6747 "image": "//rendl.es/cdn/shop/files/246_IMG.jpg?v=1760618021&width=250", 6748 6749 "title": "Bombillas GU5,3 12V" 6750 }, 6751 6752 6753 6754 6755 "g53-ar111-12v-bulbs": { 6756 6757 "image": "//rendl.es/cdn/shop/files/258_IMG.jpg?v=1760612721&width=250", 6758 6759 "title": "Bombillas G53 AR 111 12V" 6760 }, 6761 6762 6763 6764 6765 "plated-bulbs": { 6766 6767 "image": "//rendl.es/cdn/shop/files/262_IMG.jpg?v=1760618136&width=250", 6768 6769 "title": "Bombillas plateadas" 6770 }, 6771 6772 6773 6774 6775 "dimmable-led-bulbs": { 6776 6777 "image": "//rendl.es/cdn/shop/files/248_IMG.jpg?v=1760611454&width=250", 6778 6779 "title": "Bombillas LED regulables" 6780 }, 6781 6782 6783 6784 6785 "remote-control-bulbs": { 6786 6787 "image": "//rendl.es/cdn/shop/files/196_IMG.jpg?v=1760617075&width=250", 6788 6789 "title": "Bombillas con mando a distancia" 6790 }, 6791 6792 6793 6794 6795 "small-bulb": { 6796 6797 "image": "//rendl.es/cdn/shop/files/280_IMG.jpg?v=1760617593&width=250", 6798 6799 "title": "Bombilla pequeña" 6800 }, 6801 6802 6803 6804 6805 "accessories": { 6806 6807 "image": "//rendl.es/cdn/shop/files/169_IMG.jpg?v=1760387470&width=250", 6808 6809 "title": "ACCESORIOS" 6810 }, 6811 6812 6813 6814 6815 "cables": { 6816 6817 "image": "//rendl.es/cdn/shop/files/245_IMG.jpg?v=1760553874&width=250", 6818 6819 "title": "Cables" 6820 }, 6821 6822 6823 6824 6825 "ip-terminal-blocks": { 6826 6827 "image": "//rendl.es/cdn/shop/files/209_IMG.jpg?v=1760463842&width=250", 6828 6829 "title": "Terminales IP" 6830 }, 6831 6832 6833 6834 6835 "drivers": { 6836 6837 "image": "//rendl.es/cdn/shop/files/215_IMG.jpg?v=1760445351&width=250", 6838 6839 "title": "Drivers" 6840 }, 6841 6842 6843 6844 6845 "controllers": { 6846 6847 "image": "//rendl.es/cdn/shop/files/216_IMG.jpg?v=1760445370&width=250", 6848 6849 "title": "Controladores" 6850 }, 6851 6852 6853 6854 6855 "components": { 6856 6857 "image": "//rendl.es/cdn/shop/files/217_IMG.jpg?v=1760445389&width=250", 6858 6859 "title": "Componentes" 6860 }, 6861 6862 6863 6864 6865 "sensors": { 6866 6867 "image": "//rendl.es/cdn/shop/files/208_IMG.jpg?v=1760445223&width=250", 6868 6869 "title": "Sensores" 6870 }, 6871 6872 6873 6874 6875 "shades-accessories": { 6876 6877 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
6877d url input", 6878 6879 "title": "" 6880 }, 6881 6882 6883 6884 6885 "shades-and-shade-accessories": { 6886 6887 "image": "//rendl.es/cdn/shop/files/202_IMG.jpg?v=1760445111&width=250", 6888 6889 "title": "Pantallas y accesorios" 6890 }, 6891 6892 6893 6894 6895 "pendant-shades": { 6896 6897 "image": "//rendl.es/cdn/shop/files/204_IMG.jpg?v=1760445149&width=250", 6898 6899 "title": "Pantallas colgantes" 6900 }, 6901 6902 6903 6904 6905 "suspensions-for-shades": { 6906 6907 "image": "//rendl.es/cdn/shop/files/203_IMG.jpg?v=1760445130&width=250", 6908 6909 "title": "Suspensiones para pantallas" 6910 }, 6911 6912 6913 6914 6915 "universal-shades": { 6916 6917 "image": "//rendl.es/cdn/shop/files/205_IMG.jpg?v=1760445169&width=250", 6918 6919 "title": "Pantallas universales" 6920 }, 6921 6922 6923 6924 6925 "table-lamp-shades": { 6926 6927 "image": "//rendl.es/cdn/shop/files/91_IMG_cd7c474e-7ace-47a9-ac7e-0f77abe19ce3.jpg?v=1760464679&width=250", 6928 6929 "title": "Pantallas para lámparas de mesa" 6930 }, 6931 6932 6933 6934 6935 "floor-lamp-shades": { 6936 6937 "image": "//rendl.es/cdn/shop/files/84_IMG.jpg?v=1760469939&width=250", 6938 6939 "title": "Pantallas para lámparas de pie" 6940 }, 6941 6942 6943 6944 6945 "stands-bases": { 6946 6947 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6948 6949 "title": "" 6950 }, 6951 6952 6953 6954 6955 "bases": { 6956 6957 "image": "//rendl.es/cdn/shop/files/322_IMG.jpg?v=1764591178&width=250", 6958 6959 "title": "Bases" 6960 }, 6961 6962 6963 6964 6965 "spotlights": { 6966 6967 "image": "//rendl.es/cdn/shop/files/72_IMG_6ee1abcf-c44c-4f43-9e18-ded32ee09165.jpg?v=1760469087&width=250", 6968 6969 "title": "Focos" 6970 }, 6971 6972 6973 6974 6975 "ceiling-spotlights": { 6976 6977 "image": "//rendl.es/cdn/shop/files/56_IMG.jpg?v=1760085329&width=250", 6978 6979 "title": "Focos de techo" 6980 }, 6981 6982 6983 6984 6985 "led-spotlights": { 6986 6987 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 6988 6989 "title": "" 6990 }, 6991 6992 6993 6994 6995 "multiple-spotlights": { 6996 6997 "image": "//rendl.es/cdn/shop/files/239_IMG.jpg?v=1760686879&width=250", 6998 6999 "title": "Focos múltiples" 7000 }, 7001 7002 7003 7004 7005 "spotlight-families": { 7006 7007 "image": "//rendl.es/cdn/shop/collections/missing-title_image_2809a816-a254-4eae-b471-1edd1e2dfb87.jpg?v=1788993025&width=250", 7008 7009 "title": "Familias de focos" 7010 }, 7011 7012 7013 7014 7015 "bathroom-spotlights": { 7016 7017 "image": "//rendl.es/cdn/shop/files/9_IMG.jpg?v=1760369522&width=250", 7018 7019 "title": "Focos de baño" 7020 }, 7021 7022 7023 7024 7025 "gooseneck-lamps": { 7026 7027 "image": "//rendl.es/cdn/shop/files/271_IMG.jpg?v=1760553259&width=250", 7028 7029 "title": "Lámparas de cuello de cisne" 7030 }, 7031 7032 7033 7034 7035 "besides-mirror-light": { 7036 7037 "image": "//rendl.es/cdn/shop/files/316_IMG_d6da17d5-3cd4-478d-85db-57aeb64c193c.jpg?v=1761123380&width=250", 7038 7039 "title": "Lámparas junto al espejo" 7040 }, 7041 7042 7043 7044 7045 "indirect-lighting": { 7046 7047 "image": "//rendl.es/cdn/shop/files/266_IMG.jpg?v=1760553761&width=250", 7048 7049 "title": "Iluminación indirecta" 7050 }, 7051 7052 7053 7054 7055 "floor-lighting": { 7056 7057 "image": "//rendl.es/cdn/shop/files/289_IMG.jpg?v=1760625425&width=250", 7058 7059 "title": "Iluminación de suelo" 7060 }, 7061 7062 7063 7064 7065 "wooden-light": { 7066 7067 "image": "//rendl.es/cdn/shop/files/95_IMG_da3ce70c-c16a-4f25-8564-578a1d54c4fe.jpg?v=1785969021&width=250", 7068 7069 "title": "Lámparas de madera" 7070 }, 7071 7072 7073 7074 7075 "wooden-floor-lamp": { 7076 7077 "image": "//rendl.es/cdn/shop/files/96_IMG.jpg?v=1760470181&width=250", 7078 7079 "title": "Lámpara de pie de madera" 7080 }, 7081 7082 7083 7084 7085 "plaster-lights": { 7086 7087 "image": "//rendl.es/cdn/shop/files/201_IMG.jpg?v=1760445093&width=250", 7088
7089 "title": "Lámparas de yeso" 7090 }, 7091 7092 7093 7094 7095 "plaster-pendant-lights": { 7096 7097 "image": "//rendl.es/cdn/shop/files/283_IMG.jpg?v=1760972483&width=250", 7098 7099 "title": "Lámparas colgantes de yeso" 7100 }, 7101 7102 7103 7104 7105 "plaster-ceiling-lights": { 7106 7107 "image": "//rendl.es/cdn/shop/files/198_IMG.jpg?v=1760445036&width=250", 7108 7109 "title": "Lámparas de techo de yeso" 7110 }, 7111 7112 7113 7114 7115 "plaster-wall-lights": { 7116 7117 "image": "//rendl.es/cdn/shop/files/197_IMG.jpg?v=1760445017&width=250", 7118 7119 "title": "Lámparas de pared de yeso" 7120 }, 7121 7122 7123 7124 7125 "recessed-plaster-spotlights": { 7126 7127 "image": "//rendl.es/cdn/shop/files/199_IMG.jpg?v=1760445055&width=250", 7128 7129 "title": "Lámparas empotrables de yeso" 7130 }, 7131 7132 7133 7134 7135 "ceramic-lights": { 7136 7137 "image": "//rendl.es/cdn/shop/files/99_IMG_d0c9c2cb-ff7e-4be6-b73c-b34d7478e708.jpg?v=1788820216&width=250", 7138 7139 "title": "Lámparas de cerámica" 7140 }, 7141 7142 7143 7144 7145 "ceramic-lamp": { 7146 7147 "image": "//rendl.es/cdn/shop/files/156_IMG.jpg?v=1760387362&width=250", 7148 7149 "title": "Lámpara de cerámica" 7150 }, 7151 7152 7153 7154 7155 "metal-lights": { 7156 7157 "image": "//rendl.es/cdn/shop/files/100_IMG.jpg?v=1760084750&width=250", 7158 7159 "title": "Lámparas de metal" 7160 }, 7161 7162 7163 7164 7165 "glass-lights": { 7166 7167 "image": "//rendl.es/cdn/shop/files/157_IMG_483d3386-e7b1-4452-b6f1-0d8e245a40e3.jpg?v=1781130624&width=250", 7168 7169 "title": "Lámparas de vidrio" 7170 }, 7171 7172 7173 7174 7175 "glass-ceiling-lights": { 7176 7177 "image": "//rendl.es/cdn/shop/files/281_IMG.jpg?v=1760971704&width=250", 7178 7179 "title": "Lámparas de techo de vidrio" 7180 }, 7181 7182 7183 7184 7185 "glass-wall-lights": { 7186 7187 "image": "//rendl.es/cdn/shop/files/282_IMG.jpg?v=1760972444&width=250", 7188 7189 "title": "Lámparas de pared de vidrio" 7190 }, 7191 7192 7193 7194 7195 "glass-chandelier": { 7196 7197 "image": "//rendl.es/cdn/shop/files/101_IMG_b7ed04cb-3480-4921-b4d7-ae86b3743178.jpg?v=1783463422&width=250", 7198 7199 "title": "Candelabros de vidrio" 7200 }, 7201 7202 7203 7204 7205 "copper-lamps": { 7206 7207 "image": "//rendl.es/cdn/shop/files/103_IMG.jpg?v=1760469380&width=250", 7208 7209 "title": "Lámparas de cobre" 7210 }, 7211 7212 7213 7214 7215 "copper-chandeliers": { 7216 7217 "image": "//rendl.es/cdn/shop/files/102_IMG.jpg?v=1760469827&width=250", 7218 7219 "title": "Candelabros de cobre" 7220 }, 7221 7222 7223 7224 7225 "concrete-lights": { 7226 7227 "image": "//rendl.es/cdn/shop/files/160_IMG.jpg?v=1760369505&width=250", 7228 7229 "title": "Lámparas de hormigón" 7230 }, 7231 7232 7233 7234 7235 "concrete-lamp": { 7236 7237 "image": "//rendl.es/cdn/shop/files/105_IMG_e7dc7029-523d-4d05-98f1-d28c35989472.jpg?v=1762348161&width=250", 7238 7239 "title": "Lámpara de hormigón" 7240 }, 7241 7242 7243 7244 7245 "dimmable-lights": { 7246 7247 "image": "//rendl.es/cdn/shop/files/163_IMG_4e379e45-1c0f-4c02-b9e8-b2232b484eb2.jpg?v=1760615401&width=250", 7248 7249 "title": "Lámparas regulables" 7250 }, 7251 7252 7253 7254 7255 "dimmable-led-bulbs": { 7256 7257 "image": "//rendl.es/cdn/shop/files/248_IMG.jpg?v=1760611454&width=250", 7258 7259 "title": "Bombillas LED regulables" 7260 }, 7261 7262 7263 7264 7265 "dimmable-pendant-lights": { 7266 7267 "image": "//rendl.es/cdn/shop/files/192_IMG.jpg?v=1760444924&width=250", 7268 7269 "title": "Lámparas colgantes regulables" 7270 }, 7271 7272 7273 7274 7275 "dimmable-led-pendant-lights": { 7276 7277 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 7278 7279 "title": "" 7280 }, 7281 7282 7283 7284 7285 "dimmable-ceiling-light": { 7286 7287 "image": "//rendl.es/cdn/shop/files/59_IMG_b18ba933-637c-4464-8bc8-3b333067efa2.jpg?v=1782945021&width=250", 7288 7289 "title": "Lámpara de techo regulable" 7290 }, 7291 7292 7293 7294 7295 "dimmable-led-ceiling-lights": { 7296 7297 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invali
7297d url input", 7298 7299 "title": "" 7300 }, 7301 7302 7303 7304 7305 "dimmable-wall-lights": { 7306 7307 "image": "//rendl.es/cdn/shop/files/249_IMG.jpg?v=1760683340&width=250", 7308 7309 "title": "Lámparas de pared regulables" 7310 }, 7311 7312 7313 7314 7315 "dimmable-led-wall-lights": { 7316 7317 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 7318 7319 "title": "" 7320 }, 7321 7322 7323 7324 7325 "dimmable-recessed-spotlights": { 7326 7327 "image": "//rendl.es/cdn/shop/files/194_IMG.jpg?v=1760444963&width=250", 7328 7329 "title": "Lámparas empotrables regulables" 7330 }, 7331 7332 7333 7334 7335 "dimmable-led-recessed-spotlights": { 7336 7337 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 7338 7339 "title": "" 7340 }, 7341 7342 7343 7344 7345 "dimmable-table-lamp": { 7346 7347 "image": "//rendl.es/cdn/shop/files/93_IMG_0c30ba9c-e219-457a-b9a6-1d260624353d.jpg?v=1787697023&width=250", 7348 7349 "title": "Lámpara de mesa regulable" 7350 }, 7351 7352 7353 7354 7355 "dimmable-led-table-lamp": { 7356 7357 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 7358 7359 "title": "" 7360 }, 7361 7362 7363 7364 7365 "dimmable-led-floor-lamp": { 7366 7367 "image": "Liquid error (sections/main-mega-menu-rendl line 1340): invalid url input", 7368 7369 "title": "" 7370 }, 7371 7372 7373 7374 7375 "adjustable-lights": { 7376 7377 "image": "//rendl.es/cdn/shop/files/235_IMG.jpg?v=1760470085&width=250", 7378 7379 "title": "Lámparas ajustables" 7380 }, 7381 7382 7383 7384 7385 "adjustable-position": { 7386 7387 "image": "//rendl.es/cdn/shop/files/218_IMG.jpg?v=1760445408&width=250", 7388 7389 "title": "Posición ajustable" 7390 }, 7391 7392 7393 7394 7395 "adjustable-height": { 7396 7397 "image": "//rendl.es/cdn/shop/files/236_IMG.jpg?v=1760469521&width=250", 7398 7399 "title": "Altura ajustable" 7400 }, 7401 7402 7403 7404 7405 "light-color-changing": { 7406 7407 "image": "//rendl.es/cdn/shop/collections/Color_changng_icon_85b80523-ff20-481e-a627-ada12ae55e32.png?v=1758545070&width=250", 7408 7409 "title": "Light color changing" 7410 }, 7411 7412 7413 7414 7415 "paintable-lights": { 7416 7417 "image": "//rendl.es/cdn/shop/files/315_IMG.jpg?v=1761045423&width=250", 7418 7419 "title": "Lámparas pintables" 7420 }, 7421 7422 7423 7424 7425 "rgb": { 7426 7427 "image": "//rendl.es/cdn/shop/files/247_IMG.jpg?v=1760553749&width=250", 7428 7429 "title": "RGB" 7430 }, 7431 7432 7433 7434 7435 "lights-with-sensor": { 7436 7437 "image": "//rendl.es/cdn/shop/files/161_IMG.jpg?v=1760387392&width=250", 7438 7439 "title": "Lámpara con sensor de movimiento" 7440 }, 7441 7442 7443 7444 7445 "ceiling-light-with-sensor": { 7446 7447 "image": "//rendl.es/cdn/shop/files/64_IMG.jpg?v=1760470226&width=250", 7448 7449 "title": "Lámpara de techo con sensor" 7450 }, 7451 7452 7453 7454 7455 "outdoor-lamps-with-sensor": { 7456 7457 "image": "//rendl.es/cdn/shop/files/144_IMG.jpg?v=1760387232&width=250", 7458 7459 "title": "Luces exteriores con sensor" 7460 }, 7461 7462 7463 7464 7465 "light-with-motion-sensor": { 7466 7467 "image": "//rendl.es/cdn/shop/files/108_IMG_0cbb339b-f63a-45b6-af80-6143df1b2c3b.jpg?v=1779575423&width=250", 7468 7469 "title": "Lámparas con sensor" 7470 }, 7471 7472 7473 7474 7475 "remote-control-lights": { 7476 7477 "image": "//rendl.es/cdn/shop/files/162_IMG.jpg?v=1760553467&width=250", 7478 7479 "title": "Lámparas con mando a distancia" 7480 }, 7481 7482 7483 7484 7485 "ceiling-lights-with-remote-control": { 7486 7487 "image": "//rendl.es/cdn/shop/files/110_IMG_53669b59-a8f5-4033-b6b1-4b574967da2c.jpg?v=1763039373&width=250", 7488 7489 "title": "Lámpara LED de techo con mando a distancia" 7490 }, 7491 7492 7493 7494 7495 "led-strip-with-remote": { 7496 7497 "image": "//rendl.es/cdn/shop/files/113_IMG.jpg?v=1760469535&width=250", 7498 7499 "title": "Tira LED con mando a distancia" 7500 }, 7501 7502 7503 7504 7505 "remote-control-bulbs": { 7506 7507 "image": "//rendl.es/cdn/shop/files/196_IMG.jpg?v=1760617075&width=250", 7508 7509 "title": "Bombillas con mando a distancia" 7510 }, 7511 7512 7513 7514 7515 "ip-protection": { 7516 7517 "image": "//rendl.es/cdn/shop/files/210_IMG.jpg?v=1760620511&width=250", 7518 7519 "title": "Protección IP" 7520 }, 7521 7522 7523 7524 7525 "ip44": { 7526 7527 "image": "//rendl.es/cdn/shop/files/211_IMG_db866cdc-9b01-44cb-a7ff-02ee31852695.jpg?v=1760620532&width=250", 7528 7529 "title": "IP44" 7530 }, 7531 7532 7533 7534 7535 "ip54": { 7536 7537 "image": "//rendl.es/cdn/shop/files/212_IMG.jpg?v=1760445293&width=250", 7538 7539 "title": "IP54" 7540 }, 7541 7542 7543 7544 7545 "ip65": { 7546 7547 "image": "//rendl.es/cdn/shop/files/213_IMG.jpg?v=1760445313&width=250", 7548 7549 "title": "IP65" 7550 }, 7551 7552 7553 7554 7555 "ip67": { 7556 7557 "image": "//rendl.es/cdn/shop/files/214_IMG.jpg?v=1760445332&width=250", 7558 7559 "title": "IP67" 7560 }, 7561 7562 7563 "dummy": {} 7564} 7565; 7566 7567document.addEventListener('DOMContentLoaded', function() { 7568 // Show more functionality 7569 const showMoreBtns = document.querySelectorAll('.main-mega-menu-rendl__show-more'); 7570 showMoreBtns.forEach(btn => { 7571 btn.addEventListener('click', function(e) { 7572 e.preventDefault(); 7573 e.stopPropagation(); 7574 const column = this.closest('.main-mega-menu-rendl__column-content'); 7575 const hiddenItems = column.querySelector('.main-mega-menu-rendl__hidden-items'); 7576 7577 if (hiddenItems.classList.contains('show')) { 7578 hiddenItems.classList.remove('show'); 7579 const showText = this.getAttribute('data-show-text'); 7580 const arrowImg = this.querySelector('img'); 7581 if (arrowImg) { 7582 arrowImg.style.transform = 'rotate(0deg)'; 7583 }
7584 this.innerHTML = showText + (arrowImg ? arrowImg.outerHTML : ''); 7585 } else { 7586 hiddenItems.classList.add('show'); 7587 const hideText = this.getAttribute('data-hide-text'); 7588 const arrowImg = this.querySelector('img'); 7589 if (arrowImg) { 7590 arrowImg.style.transform = 'rotate(180deg)'; 7591 } 7592 this.innerHTML = hideText + (arrowImg ? arrowImg.outerHTML : ''); 7593 } 7594 }); 7595 }); 7596 7597 // Collection image tooltip functionality 7598 const tooltip = document.createElement('div'); 7599 tooltip.className = 'main-mega-menu-rendl__tooltip'; 7600 tooltip.style.cssText = 'position: fixed; opacity: 0; visibility: hidden; z-index: 10000; pointer-events: none; transition: opacity 0.3s ease, visibility 0.3s ease; cursor: pointer;'; 7601 document.body.appendChild(tooltip); 7602 7603 const tooltipImg = document.createElement('img'); 7604 tooltipImg.style.cssText = 'width: 170px; height: 170px; object-fit: cover; display: block; box-shadow: 0 4px 20px rgba(0,0,0,0.15);'; 7605 tooltip.appendChild(tooltipImg); 7606 7607 let hideTimeout = null; 7608 let currentLink = null; 7609 let currentCategoryButton = null; 7610 7611 // Add click handler to tooltip for category buttons 7612 tooltip.addEventListener('click', function(e) { 7613 if (currentCategoryButton) { 7614 e.preventDefault(); 7615 e.stopPropagation(); 7616 // Hide tooltip immediately 7617 tooltip.style.opacity = '0'; 7618 tooltip.style.visibility = 'hidden'; 7619 tooltip.style.pointerEvents = 'none'; 7620 // Trigger click on the category button to open menu 7621 currentCategoryButton.click(); 7622 currentCategoryButton = null; 7623 currentLink = null; 7624 } 7625 }); 7626 7627 // Keep tooltip visible when hovering over it (for category tooltips) 7628 tooltip.addEventListener('mouseenter', function() { 7629 if (hideTimeout) { 7630 clearTimeout(hideTimeout); 7631 hideTimeout = null; 7632 } 7633 }); 7634 7635 tooltip.addEventListener('mouseleave', function() { 7636 hideTooltip(); 7637 }); 7638 7639 function extractCollectionHandle(url) { 7640 if (!url || !url.includes('/collections/')) return null; 7641 const parts = url.split('/collections/')[1]; 7642 if (!parts) return null; 7643 return parts.split('/')[0].split('?')[0].split('#')[0]; 7644 } 7645 7646 function showTooltip(link, handle) { 7647 if (hideTimeout) { 7648 clearTimeout(hideTimeout); 7649 hideTimeout = null; 7650 } 7651 7652 const collectionData = window.collectionImagesData[handle]; 7653 if (!collectionData || !collectionData.image) return; 7654 7655 currentLink = link; 7656 currentCategoryButton = null; 7657 tooltipImg.src = collectionData.image; 7658 updateTooltipPosition(link, 'left'); 7659 7660 // Disable pointer events for regular collection tooltips 7661 tooltip.style.pointerEvents = 'none'; 7662 7663 // Trigger animation after position is set 7664 setTimeout(() => { 7665 tooltip.style.opacity = '1'; 7666 tooltip.style.visibility = 'visible'; 7667 }, 10); 7668 } 7669 7670 function hideTooltip() { 7671 hideTimeout = setTimeout(() => { 7672 tooltip.style.opacity = '0'; 7673 tooltip.style.visibility = 'hidden'; 7674 tooltip.style.pointerEvents = 'none'; 7675 currentLink = null; 7676 currentCategoryButton = null; 7677 }, 100); 7678 } 7679 7680 function updateTooltipPosition(link, mode) { 7681 const rect = link.getBoundingClientRect(); 7682 const tooltipWidth = 170; 7683 const tooltipHeight = 170; 7684 const offset = 12; 7685 7686 let left, top; 7687 7688 if (mode === 'below') { 7689 // First-level category buttons: show below, aligned to left of button 7690 left = rect.left; 7691 top = rect.bottom + offset; 7692 7693 if (left + tooltipWidth > window.innerWidth - 10) { 7694 left = window.innerWidth - tooltipWidth - 10; 7695 } 7696 if (left < 10) left = 10; 7697 if (top + tooltipHeight > window.innerHeight - 10) { 7698 top = rect.top - tooltipHeight - offset; 7699 } 7700 if (top < 10) top = 10; 7701 } else { 7702 // Sub-items: show to the left, vertically centered 7703 left = rect.left - tooltipWidth - offset; 7704 const linkMid = rect.top + rect.height / 2; 7705 top = linkMid - tooltipHeight / 2; 7706 7707 if (left < 10) { 7708 left = rect.right + offset; 7709 } 7710 if (left + tooltipWidth > window.innerWidth - 10) { 7711 left = window.innerWidth - tooltipWidth - 10; 7712 } 7713 if (top + tooltipHeight > window.innerHeight - 10) { 7714 top = window.innerHeight - tooltipHeight - 10; 7715 } 7716 if (top < 10) top = 10; 7717 } 7718 7719 tooltip.style.left = left + 'px'; 7720 tooltip.style.top = top + 'px'; 7721 } 7722 7723 // Add hover listeners to all collection links in mega menu 7724 const menuLinks = document.querySelectorAll('.main-mega-menu-rendl__column li a, .main-mega-menu-rendl__column h3 a'); 7725 7726 menuLinks.forEach(link => { 7727 const handle = extractCollectionHandle(link.getAttribute('href')); 7728 if (!handle) return; 7729 7730 link.addEventListener('mouseenter', function() { 7731 showTooltip(this, handle); 7732 }); 7733 7734 link.addEventListener('mouseleave', function() { 7735 hideTooltip(); 7736 }); 7737 }); 7738 7739 // Add hover listeners to category buttons 7740 const categoryButtons = document.querySelectorAll('.main-mega-menu-rendl__item > button[data-category-image]'); 7741 7742 categoryButtons.forEach(button => { 7743 const imageUrl = button.getAttribute('data-category-image'); 7744 if (!imageUrl) return; 7745 7746 button.addEventListener('mouseenter', function() { 7747 showCategoryTooltip(this, imageUrl); 7748 }); 7749 7750 button.addEventListener('mouseleave', function() { 7751 hideTooltip(); 7752 }); 7753 }); 7754 7755 function showCategoryTooltip(button, imageUrl) { 7756 if (hideTimeout) { 7757 clearTimeout(hideTimeout); 7758 hideTimeout = null; 7759 } 7760 7761 currentLink = button; 7762 currentCategoryButton = button; 7763 tooltipImg.src = imageUrl; 7764 updateTooltipPosition(button, 'below'); 7765 7766 // Enable pointer events for category tooltips 7767 tooltip.style.pointerEvents = 'auto'; 7768 7769 // Trigger animation after position is set 7770 setTimeout(() => { 7771 tooltip.style.opacity = '1'; 7772 tooltip.style.visibility = 'visible'; 7773 }, 10); 7774 } 7775 7776 // Update tooltip position on scroll 7777 window.addEventListener('scroll', function() { 7778 if (currentLink && tooltip.style.opacity === '1') { 7779 updateTooltipPosition(currentLink, currentCategoryButton ? 'below' : 'left'); 7780 } 7781 }, { passive: true }); 7782}); 7783</script>
7783 7784 7785 7786</div><div id="shopify-section-sections--28113425695018__main_mega_menu_rendl_mobile_7Utknp" class="shopify-section shopify-section-group-header-group"><style> 7787@media (max-width: 989px) { 7788 body.mobile-menu-open { 7789 overflow: hidden !important; 7790 position: fixed; 7791 width: 100%; 7792 height: 100%; 7793 touch-action: none; 7794 } 7795 .main-mega-menu-mobile-overlay { 7796 display: none; 7797 position: fixed; 7798 top: 0; 7799 left: 0; 7800 width: 100vw; 7801 height: 100vh; 7802 background: rgba(30, 30, 30, 0.38); 7803 backdrop-filter: blur(4px); 7804 z-index: 9999; 7805 transition: opacity 0.3s; 7806 opacity: 0; 7807 } 7808 .main-mega-menu-mobile-overlay.open { 7809 display: block; 7810 opacity: 1; 7811 } 7812 .main-mega-menu-mobile { 7813 display: none; 7814 background: #fff; 7815 width: 85vw; 7816 position: fixed; 7817 top: 0; 7818 left: 0; 7819 z-index: 9999; 7820 height: 100vh; 7821 overflow-y: auto; 7822 overflow-x: hidden; 7823 -webkit-overflow-scrolling: touch; 7824 overscroll-behavior: contain; 7825 transition: opacity 0.35s cubic-bezier(.4,0,.2,1), transform 0.35s cubic-bezier(.4,0,.2,1); 7826 transform: translateX(-100%); 7827 opacity: 0; 7828 pointer-events: none; 7829 } 7830 .main-mega-menu-mobile.open { 7831 display: block; 7832 transform: translateX(0); 7833 opacity: 1; 7834 pointer-events: auto; 7835 } 7836 .main-mega-menu-mobile.dissolve-in { 7837 animation: megaMenuDissolveIn 0.15s cubic-bezier(.4,0,.2,1); 7838 } 7839 .main-mega-menu-mobile.dissolve-out { 7840 animation: megaMenuDissolveOut 0.15s cubic-bezier(.4,0,.2,1); 7841 } 7842 .main-mega-menu-mobile__header { 7843 display: flex; 7844 align-items: center; 7845 padding: 1.2rem 1.5rem; 7846 border-bottom: 1px solid #eee; 7847 font-size: 1.0rem; 7848 font-weight: 400; 7849 font-family: 'Montserrat', sans-serif; 7850 letter-spacing: 0.08em; 7851 text-transform: uppercase; 7852 background: #fff; 7853 } 7854 .main-mega-menu-mobile__back { 7855 margin-right: 1rem; 7856 font-size: 1.7rem; 7857 background: none; 7858 border: none; 7859 cursor: pointer; 7860 color: #232323; 7861 display: none; 7862 display: flex; 7863 align-items: center; 7864 justify-content: center; 7865 height: 100%; 7866 padding: 0; 7867 } 7868 .main-mega-menu-mobile__back.visible { 7869 display: inline-block; 7870 } 7871 .main-mega-menu-mobile__title { 7872 font-family: 'Montserrat', sans-serif; 7873 font-size: 1.4rem; 7874 font-weight: 400; 7875 letter-spacing: 0.08em; 7876 text-transform: uppercase; 7877 flex: 1; 7878 text-align: left; 7879 cursor: pointer; 7880 } 7881 .main-mega-menu-mobile__close { 7882 background: none; 7883 border: none; 7884 padding: 0 0.2rem; 7885 margin-left: 0.5rem; 7886 cursor: pointer; 7887 color: #232323; 7888 display: flex; 7889 align-items: center; 7890 justify-content: center; 7891 transition: color 0.2s; 7892 } 7893 .main-mega-menu-mobile__close:hover, 7894 .main-mega-menu-mobile__close:focus { 7895 color: #111; 7896 } 7897 .main-mega-menu-mobile__close-icon { 7898 width: 32px; 7899 height: 32px; 7900 display: block; 7901 } 7902 .main-mega-menu-mobile__list { 7903 list-style: none; 7904 margin: 0; 7905 padding: 0; 7906 } 7907 .main-mega-menu-mobile__item { 7908 padding: 1.3rem 1.5rem; 7909 border-bottom: 1px solid #f2f2f2; 7910 font-size: 1.7rem; 7911 font-weight: 400; 7912 font-family: 'Montserrat', sans-serif; 7913 display: flex; 7914 align-items: center; 7915 justify-content: space-between; 7916 background: #fff; 7917 cursor: pointer; 7918 } 7919 .main-mega-menu-mobile__item > span { 7920 display: flex; 7921 align-items: center; 7922 justify-content: space-between; 7923 width: 100%; 7924 gap: 0; 7925 } 7926 .main-mega-menu-mobile__item span.menu-arrow { 7927 display: flex; 7928 align-items: center; 7929 justify-content: flex-end; 7930 margin-left: auto; 7931 width: 22px; 7932 height: 22px; 7933 font-size: 22px; 7934 line-height: 1; 7935 color: #ababab; 7936 } 7937 .main-mega-menu-mobile__item--link { 7938 background: #fff; 7939 color: #232323; 7940 } 7941 .main-mega-menu-mobile__item--news { 7942 background: #8ed081; 7943 color: #fff; 7944 } 7945 .main-mega-menu-mobile__item--sale { 7946 background: #ED6346; 7947 color: #fff; 7948 } 7949 .main-mega-menu-mobile__item--extreme { 7950 background: #fff; 7951 color: #ED6346; 7952 } 7953 .main-mega-menu-mobile__item--showall { 7954 background: #fff; 7955 color: #232323; 7956 } 7957 .main-mega-menu-mobile__item--special { 7958 display: flex; 7959 align-items: center; 7960 width: 100%; 7961 min-width: 0; 7962 max-width: 100%; 7963 margin: 0; 7964 padding: 0 1.2rem; 7965 height: 48px; 7966 border-radius: 0; 7967 font-size: 1.7rem; 7968 font-weight: 400; 7969 font-family: 'Montserrat', sans-serif; 7970 border: 1px solid #d1d1d1; 7971 background: #fff; 7972 color: #232323; 7973 cursor: pointer; 7974 transition: background 0.2s, color 0.2s, border 0.2s; 7975 box-shadow: none; 7976 gap: 0.5rem; 7977 } 7978 .main-mega-menu-mobile__item--special.main-mega-menu-mobile__item--news { 7979 background: #8ed081; 7980 color: #fff; 7981 border: 1px solid #8ed081; 7982 } 7983 .main-mega-menu-mobile__item--special.main-mega-menu-mobile__item--sale { 7984 background: #ED6346; 7985 color: #fff; 7986 border: 1px solid #ED6346; 7987 } 7988 .main-mega-menu-mobile__item--special.main-mega-menu-mobile__item--showall { 7989 background: #fff; 7990 color: #232323; 7991 border: 1px solid #d1d1d1; 7992 } 7993 .main-mega-menu-mobile__item--special.main-mega-menu-mobile__item--extreme { 7994 background: #fff; 7995 color: #ED6346; 7996 border: 1px solid #ED6346; 7997 } 7998 .main-mega-menu-mobile__item--special.main-mega-menu-mobile__item--all { 7999 height: auto; 8000 min-height: 48px; 8001 white-space: normal; 8002 line-height: 1.3; 8003 padding-top: 0.7rem; 8004 padding-bottom: 0.7rem; 8005 padding-left: 1.5rem; 8006 padding-right: 1.5rem; 8007 margin-bottom: 0.7rem; 8008 margin-top: 0.9rem; 8009 box-sizing: border-box; 8010 max-width: 90%; 8011 margin-left: auto; 8012 margin-right: auto; 8013 } 8014 .main-mega-menu-mobile__item--special a, 8015 .main-mega-menu-mobile__item--special span { 8016 display: flex; 8017 align-items: center; 8018 gap: 0.4rem; 8019 font-size: 1.7rem; 8020 color: inherit; 8021 text-decoration: none; 8022 font-family: inherit; 8023 font-weight: 400; 8024 } 8025 .main-mega-menu-mobile__style-grid { 8026 display: flex; 8027 flex-direction: column; 8028 gap: 0; 8029 padding: 1.5rem; 8030 padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); 8031 } 8032 .main-mega-menu-mobile__style-item { 8033 display: flex; 8034 flex-direction: column; 8035 background: #fff; 8036 border: 1px solid #eee; 8037 border-radius: 0; 8038 overflow: hidden; 8039 text-decoration: none; 8040 color: #232323; 8041 margin-bottom: 1.5rem; 8042 box-shadow: none; 8043 padding: 0; 8044 transition: box-shadow 0.2s; 8045 } 8046 .main-mega-menu-mobile__style-item:last-child { 8047 margin-bottom: 0; 8048 } 8049 .main-mega-menu-mobile__style-img { 8050 width: 100%; 8051 height: 160px; 8052 object-fit: cover; 8053 background: #f5f5f5; 8054 border-radius: 0; 8055 display: block; 8056 } 8057 .main-mega-menu-mobile__style-title { 8058 padding: 1rem 1.2rem; 8059 font-size: 1.7rem; 8060 color: #232323; 8061 font-weight: 500; 8062 text-align: left; 8063 background: #fff; 8064 border: none; 8065 margin: 0; 8066 } 8067 .main-mega-menu-mobile__style-item, 8068 .main-mega-menu-mobile__style-item:visited, 8069 .main-mega-menu-mobile__style-item:active { 8070 text-decoration: none; 8071 color: #232323; 8072 } 8073 .main-mega-menu-mobile__style-item:hover { 8074 color: #444; 8075 text-decoration: underline; 8076 box-shadow: 0 2px 8px rgba(0,0,0,0.06); 8077 } 8078 .main-mega-menu-mobile-catalog-container { 8079 width: 100%; 8080 padding: 1.2rem 1.5rem 0.8rem 1.5rem; 8081 background: transparent; 8082 box-sizing: border-box; 8083 } 8084 .main-mega-menu-mobile-catalog-btn { 8085 display: flex; 8086 align-items: center; 8087 justify-content: space-between; 8088 width: 100%; 8089 height: 52px; 8090 background: #fff; 8091 color: #111; 8092 font-size: 1.4rem; 8093 font-weight: 400; 8094 font-family: 'Montserrat', sans-serif; 8095 border: 1px solid #d1d1d1; 8096 border-radius: 0; 8097 margin: 0; 8098 padding: 0 1.5rem; 8099 text-align: left; 8100 line-height: 52px; 8101 cursor: pointer; 8102 letter-spacing: 0.08em; 8103 text-transform: uppercase; 8104 transition: background 0.2s, color 0.2s, border 0.2s; 8105 box-shadow: none; 8106 gap: 1.2rem; 8107 } 8108 .main-mega-menu-mobile-catalog-btn:hover, 8109 .main-mega-menu-mobile-catalog-btn:focus { 8110 background: #111; 8111 color: #fff; 8112 border: 1px solid #d1d1d1; 8113 outline: none; 8114 } 8115 .main-mega-menu-mobile-catalog-btn__text { 8116 flex: 1 1 auto; 8117 font-family: 'Montserrat', sans-serif; 8118 text-align: left; 8119 font-size: 1.4rem; 8120 font-weight: 400; 8121 letter-spacing: 0.08em; 8122 text-transform: uppercase; 8123 white-space: nowrap; 8124 overflow: hidden; 8125 text-overflow: ellipsis; 8126 } 8127 .main-mega-menu-mobile-catalog-btn__arrow { 8128 display: flex; 8129 align-items: center; 8130 justify-content: flex-end; 8131 width: 18px; 8132 height: 18px; 8133 margin-left: 0.5rem; 8134 flex-shrink: 0; 8135 } 8136 .main-mega-menu-mobile__special-list { 8137 display: flex; 8138 flex-direction: column; 8139 gap: 1.5rem; 8140 padding: 4rem 1.5rem calc(80px + env(safe-area-inset-bottom, 0px)) 1.5rem; 8141 } 8142 .menu-arrow::before, 8143 .menu-arrow::after { 8144 content: none !important; 8145 } 8146 .main-mega-menu-mobile__content { 8147 position: relative; 8148 min-height: 100px; 8149 padding-bottom: calc(80px + env(safe-area-inset-bottom, 0px)); 8150 } 8151 .main-mega-menu-mobile__content.slide-in { 8152 animation: megaMenuSlideIn 0.35s cubic-bezier(.4,0,.2,1); 8153 } 8154 .main-mega-menu-mobile__content.slide-out { 8155 animation: megaMenuSlideOut 0.35s cubic-bezier(.4,0,.2,1); 8156 } 8157 .main-mega-menu-mobile__content.slide-in-reverse { 8158 animation: megaMenuSlideInReverse 0.35s cubic-bezier(.4,0,.2,1); 8159 } 8160 .main-mega-menu-mobile__content.slide-out-reverse { 8161 animation: megaMenuSlideOutReverse 0.35s cubic-bezier(.4,0,.2,1); 8162 } 8163 @keyframes megaMenuSlideIn { 8164 from { opacity: 0; transform: translateX(40px); } 8165 to { opacity: 1; transform: translateX(0); } 8166 } 8167 @keyframes megaMenuSlideOut { 8168 from { opacity: 1; transform: translateX(0); } 8169 to { opacity: 0; transform: translateX(-40px); } 8170 } 8171 @keyframes megaMenuSlideInReverse { 8172 from { opacity: 0; transform: translateX(-40px); } 8173 to { opacity: 1; transform: translateX(0); } 8174 } 8175 @keyframes megaMenuSlideOutReverse { 8176 from { opacity: 1; transform: translateX(0); } 8177 to { opacity: 0; transform: translateX(40px); } 8178 } 8179 @keyframes megaMenuDissolveIn { 8180 from { opacity: 0; } 8181 to { opacity: 1; } 8182 } 8183 @keyframes megaMenuDissolveOut { 8184 from { opacity: 1; } 8185 to { opacity: 0; } 8186 } 8187} 8188@media (min-width: 990px) { 8189 .main-mega-menu-mobile, 8190 .main-mega-menu-mobile-catalog-container, 8191 .main-mega-menu-mobile-overlay { 8192 display: none !important; 8193 } 8194} 8195</style> 8196 8197<div class="main-mega-menu-mobile-catalog-container"> 8198 <button class="main-mega-menu-mobile-catalog-btn" type="button" onclick="openMegaMenuMobile()" id="main-mega-menu-mobile-catalog-btn"> 8199 <span class="main-mega-menu-mobile-catalog-btn__text"></span> 8200 <span class="main-mega-menu-mobile-catalog-btn__arrow"> 8201 <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg"> 8202 <path d="M4 7L9 12L14 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 8203 </svg> 8204 </span> 8205 </button> 8206</div> 8207<div class="main-mega-menu-mobile-overlay" id="main-mega-menu-mobile-overlay" onclick="closeMegaMenuMobile()"></div> 8208 8209<div class="main-mega-menu-mobile" id="main-mega-menu-mobile"> 8210 <div class="main-mega-menu-mobile__header"> 8211 <button class="main-mega-menu-mobile__back" id="main-mega-menu-mobile-back"> 8212 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" style="display:block;" xmlns="http://www.w3.org/2000/svg"> 8213 <path d="M15 6L9 12L15 18" stroke="currentColor" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/> 8214 </svg> 8215 </button> 8216 <span class="main-mega-menu-mobile__title" id="main-mega-menu-mobile-title"></span> 8217 <button class="main-mega-menu-mobile__close" onclick="closeMegaMenuMobile()" aria-label="Close"> 8218 <svg class="main-mega-menu-mobile__close-icon" width="32" height="32" viewBox="0 0 32 32" fill="none"> 8219 <line x1="9" y1="9" x2="23" y2="23" stroke="currentColor" stroke-width="1" stroke-linecap="round"/> 8220 <line x1="23" y1="9" x2="9" y2="23" stroke="currentColor" stroke-width="1" stroke-linecap="round"/> 8221 </svg> 8222 </button> 8223 </div> 8224 <div class="main-mega-menu-mobile__content" id="main-mega-menu-mobile-content"> 8225 8226 </div> 8227</div> 8228
8229<script> 8230 8231var catalogText = { 8232 cs: 'Katalog', sk: 'Katalóg', de: 'Katalog', fr: 'Catalogue', it: 'Catalogo', es: 'Catálogo', nl: 'Catalogus', pl: 'Katalog', hu: 'Katalógus', ro: 'Catalog', bg: 'ÐаÑалог', hr: 'Katalog', fi: 'Tuotteet', el: 'ÎαÏάλογοÏ', no: 'Katalog', pt: 'Catálogo', sl: 'Katalog', sv: 'Produkter', lv: 'Katalogs', lt: 'Katalogas', et: 'Kataloog', da: 'Produkter', en: 'Products' 8233}; 8234var lang = (document.documentElement.lang || 'en').split('-')[0]; 8235var catalogBtnText = catalogText[lang] ? catalogText[lang].toUpperCase() : catalogText['en'].toUpperCase(); 8236window.__megaMenuMobileCatalogText = catalogBtnText; 8237document.addEventListener('DOMContentLoaded', function() { 8238 var btnText = document.querySelector('#main-mega-menu-mobile-catalog-btn .main-mega-menu-mobile-catalog-btn__text'); 8239 if (btnText) btnText.textContent = window.__megaMenuMobileCatalogText || 'CATALOG'; 8240 var title = document.getElementById('main-mega-menu-mobile-title'); 8241 if (title) title.textContent = window.__megaMenuMobileCatalogText || 'CATALOG'; 8242}); 8243</script>
8243 8244
8245<script> 8246(function() { 8247 8248 // СÑаÑиÑеÑÐºÐ°Ñ ÑÑÑÑкÑÑÑа Ð¼ÐµÐ½Ñ Ñ Ð¿ÐµÑеводами 8249 var megaMenu = [ 8250 // Interiérová svÄtla 8251 { 8252 "title": "Interior", 8253 "handle": "interior", 8254 "url": "/collections/interior-lights", 8255 "style": false, 8256 "links": [ 8257 { 8258 "title": "Iluminación de oficina", 8259 "handle": "office-lighting", 8260 "url": "/collections/office-lighting", 8261 "image": "\/\/rendl.es\/cdn\/shop\/files\/Office_lighting.png?v=1751390220\u0026width=320", 8262 "links": [ 8263 { "title": "Colgante", "url": "/collections/office-pendant-lights" }, 8264 { "title": "Techo", "url": "/collections/office-ceiling-lights" }, 8265 { "title": "Lámparas de mesa", "url": "/collections/office-lamps" }, 8266 { "title": "Focos 3F", "url": "/collections/3-circuit-spotlights" }, 8267 { "title": "Focos 1F", "url": "/collections/1-circuit-spotlights" } 8268 ] 8269 }, 8270 { 8271 "title": "Iluminación de baño", 8272 "handle": "bathroom-lighting", 8273 "url": "/collections/bathroom-lighting", 8274 "image": "\/\/rendl.es\/cdn\/shop\/files\/Bathroom_lightning.png?v=1751393525\u0026width=320", 8275 "links": [ 8276 { "title": "Junto al espejo", "url": "/collections/besides-mirror-light" }, 8277 { "title": "Encima del espejo", "url": "/collections/above-mirror-lights" }, 8278 { "title": "Pared", "url": "/collections/bathroom-wall-light" }, 8279 { "title": "Techo", "url": "/collections/bathroom-ceiling-light" }, 8280 { "title": "Focos empotrables", "url": "/collections/recessed-bathroom-spotlights" }, 8281 { "title": "Focos de superficie", "url": "/collections/bathroom-spotlights" }, 8282 { "title": "Colgante", "url": "/collections/bathroom-pendant-lights" } 8283 ] 8284 }, 8285 { 8286 "title": "Iluminación de dormitorio", 8287 "handle": "bedroom-lighting", 8288 "url": "/collections/bedroom-lighting", 8289 "image": "\/\/rendl.es\/cdn\/shop\/files\/Bedroom.png?v=1751366613\u0026width=320", 8290 "links": [ 8291 { "title": "Techo", "url": "/collections/bedroom-ceiling-light" }, 8292 { "title": "Pared", "url": "/collections/bedroom-wall-sconce" }, 8293 { "title": "Mesita de noche", "url": "/collections/bedside-lamps" }, 8294 { "title": "Tipo cuello de ganso", "url": "/collections/gooseneck-lamps" }, 8295 { "title": "Lámparas de mesa", "url": "/collections/bedroom-table-lamp" }, 8296 { "title": "Lámparas modernas", "url": "/collections/bedroom-chandelier" } 8297 ] 8298 }, 8299 { 8300 "title": "Iluminación de salón", 8301 "handle": "living-room-lighting", 8302 "url": "/collections/living-room-lighting", 8303 "image": "\/\/rendl.es\/cdn\/shop\/files\/Living_room.png?v=1751367187\u0026width=320", 8304 "links": [ 8305 { "title": "Techo", "url": "/collections/living-room-ceiling-lights" }, 8306 { "title": "Lámparas modernas", "url": "/collections/modern-living-room-chandeliers" }, 8307 { "title": "Pared", "url": "/collections/living-room-wall-light" }, 8308 { "title": "Lámparas de mesa", "url": "/collections/living-room-table-lamp" }, 8309 { "title": "Lámparas de pie", "url": "/collections/living-room-floor-lamps" }, 8310 { "title": "Encima del cuadro", "url": "/collections/above-painting-lights" }, 8311 { "title": "En pared del salón", "url": "/collections/living-room-wall-led-lighting" } 8312 ] 8313 }, 8314 { 8315 "title": "Iluminación de cocina", 8316 "handle": "kitchen", 8317 "url": "/collections/kitchen", 8318 "image": "\/\/rendl.es\/cdn\/shop\/files\/Kitchen.png?v=1751392478\u0026width=320", 8319 "links": [ 8320 { "title": "Iluminación de comedor", "url": "/collections/dining-table-lighting" }, 8321 { "title": "Iluminación de encimera", "url": "/collections/kitchen-counter-lighting" }, 8322 { "title": "Bajo encimera con interruptor", "url": "/collections/under-cabinet-light-with-switch" }, 8323 { "title": "LED bajo encimera", "url": "/collections/led-under-cabinet-kitchen-lights" }, 8324 { "title": "Techo", "url": "/collections/kitchen-ceiling-lights" }, 8325 { "title": "Lámparas de araña modernas", "url": "/collections/modern-kitchen-chandeliers" } 8326 ] 8327 }, 8328 { 8329 "title": "Iluminación de pasillo", 8330 "handle": "hallway-lighting", 8331 "url": "/collections/hallway-lighting", 8332 "image": "\/\/rendl.es\/cdn\/shop\/files\/Hallway.png?v=1751367117\u0026width=320", 8333 "links": [ 8334 { "title": "Techo", "url": "/collections/hallway-ceiling-lights" }, 8335 { "title": "Pared", "url": "/collections/hallway-wall-light" }, 8336 { "title": "Empotrable en pared", "url": "/collections/recessed-wall-spotlights" } 8337 ] 8338 }, 8339 { 8340 "title": "Iluminación infantil", 8341 "handle": "lights-for-kids-rooms", 8342 "url": "/collections/lights-for-kids-rooms", 8343 "image": "\/\/rendl.es\/cdn\/shop\/files\/Kids_room.png?v=1751366724\u0026width=320", 8344 "links": [ 8345 { "title": "Techo", "url": "/collections/childrens-ceiling-lights" }, 8346 { "title": "Pared", "url": "/collections/childrens-wall-light" }, 8347 { "title": "Lámparas de mesa", "url": "/collections/childrens-table-lamp" }, 8348 { "title": "Lámparas de pie", "url": "/collections/kids-room-floor-lamps" } 8349 ] 8350 }, 8351 { 8352 "title": "Iluminación de lujo", 8353 "handle": "luxury-lights", 8354 "url": "/collections/luxury-lights", 8355 "image": "\/\/rendl.es\/cdn\/shop\/files\/Representative_areas.jpg?v=1760615034\u0026width=320", 8356 "links": [ 8357 { "title": "Lámparas de techo", "url": "/collections/luxury-chandeliers" }, 8358 { "title": "Colgante", "url": "/collections/luxury-pendant-lights" }, 8359 { "title": "Techo", "url": "/collections/luxury-ceiling-lights" }, 8360 { "title": "Mesa", "url": "/collections/luxury-table-lamps" }, 8361 { "title": "Lámparas de pie", "url": "/collections/luxury-floor-lamps" } 8362 ] 8363 }, 8364 { 8365 "title": "Iluminación de escaleras", 8366 "handle": "stairway-lighting", 8367 "url": "/collections/stairway-lighting", 8368 "image": "\/\/rendl.es\/cdn\/shop\/files\/Stairway.png?v=1751366831\u0026width=320", 8369 "links": [ 8370 { "title": "Techo", "url": "/collections/staircase-ceiling-lights" }, 8371 { "title": "Pared", "url": "/collections/staircase-wall-lights" }, 8372 { "title": "Empotrable en pared", "url": "/collections/recessed-wall-spotlights" }, 8373 { "title": "Con sensor", "url": "/collections/staircase-light-with-se
8373nsor" } 8374 ] 8375 }, 8376 { 8377 "title": "Estilo industrial", 8378 "handle": "industrial-lighting-fixtures", 8379 "url": "/collections/industrial-lighting-fixtures", 8380 "image": "\/\/rendl.es\/cdn\/shop\/files\/Lights_with_technical_design.jpg?v=1761038248\u0026width=320", 8381 "links": [] 8382 }, 8383 { 8384 "title": "Iluminación industrial", 8385 "handle": "industrial-lighting", 8386 "url": "/collections/industrial-lighting", 8387 "image": "\/\/rendl.es\/cdn\/shop\/files\/Industrial_lighting.png?v=1751390883\u0026width=320", 8388 "links": [] 8389 }, 8390 { 8391 "title": "Iluminación de sótano", 8392 "handle": "lighting-for-the-basement", 8393 "url": "/collections/lighting-for-the-basement", 8394 "image": "\/\/rendl.es\/cdn\/shop\/files\/Cellar.jpg?v=1760962623\u0026width=320", 8395 "links": [] 8396 }, 8397 { 8398 "title": "Iluminación de garaje", 8399 "handle": "garage-lighting", 8400 "url": "/collections/garage-lighting", 8401 "image": "\/\/rendl.es\/cdn\/shop\/files\/Garage_lighting.png?v=1751386467\u0026width=320", 8402 "links": [] 8403 } 8404 ] 8405 }, 8406 // Venkovnà svÄtla 8407 { 8408 "title": "Exterior", 8409 "handle": "outdoor", 8410 "url": "/collections/outdoor-lights", 8411 "style": false, 8412 "links": [ 8413 { 8414 "title": "Iluminación exterior", 8415 "handle": "outdoor-lights", 8416 "url": "/collections/outdoor-lights", 8417 "image": "\/\/rendl.es\/cdn\/shop\/files\/Exterior.jpg?v=1760706458\u0026width=320", 8418 "links": [ 8419 { "title": "Familias de iluminación exterior", "url": "/collections/outdoor-lighting-families" }, 8420 { "title": "Lámparas decorativas de exterior", "url": "/collections/decorative-outdoor-lamps" }, 8421 { "title": "Lineal", "url": "/collections/outdoor-linear-lights" }, 8422 { "title": "Lámparas con sensor", "url": "/collections/outdoor-lamps-with-sensor" } 8423 ] 8424 }, 8425 { 8426 "title": "Lámparas de pared", 8427 "handle": "outdoor-wall-lights", 8428 "url": "/collections/outdoor-wall-lights", 8429 "image": "\/\/rendl.es\/cdn\/shop\/files\/Wall_lamps.jpg?v=1760354729\u0026width=320", 8430 "links": [ 8431 { "title": "Arriba \/ Abajo", "url": "/collections/updown-outdoor-lights" }, 8432 { "title": "Orientable", "url": "/collections/adjustable-wall-lights" }, 8433 { "title": "Unidireccional", "url": "/collections/one-way-luminaires" }, 8434 { "title": "Indirecto", "url": "/collections/outdoor-indirect-lights" } 8435 ] 8436 }, 8437 { 8438 "title": "Lámparas de techo", 8439 "handle": "outdoor-ceiling-lights", 8440 "url": "/collections/outdoor-ceiling-lights", 8441 "image": "\/\/rendl.es\/cdn\/shop\/files\/Ceiling_lamps.jpg?v=1760354705\u0026width=320", 8442 "links": [ 8443 { "title": "Downlights", "url": "/collections/outdoor-downlights" }, 8444 { "title": "Orientable", "url": "/collections/adjustable-ceiling-lights" } 8445 ] 8446 }, 8447 { 8448 "title": "Luminarias empotrables", 8449 "handle": "outdoor-recessed-luminaires", 8450 "url": "/collections/outdoor-recessed-luminaires", 8451 "image": "\/\/rendl.es\/cdn\/shop\/files\/category-recessed-lighting-7.png?v=1744626878\u0026width=320", 8452 "links": [ 8453 { "title": "Luz de suelo", "url": "/collections/ground-lights" }, 8454 { "title": "En pared", "url": "/collections/outdoor-wall-recessed" }, 8455 { "title": "En techo", "url": "/collections/outdoor-recessed-lights" } 8456 ] 8457 }, 8458 { 8459 "title": "Lámparas colgantes", 8460 "handle": "outdoor-pendant-lights", 8461 "url": "/collections/outdoor-pendant-lights", 8462 "image": "\/\/rendl.es\/cdn\/shop\/files\/pendants_icon_b6406059-b3ee-4b2a-b16e-6a772dd5571e.svg?v=1757416974\u0026width=320", 8463 "links": [ 8464 { "title": "Lámparas de techo para pérgola", "url": "/collections/outdoor-pergola-chandelier" } 8465 ] 8466 }, 8467 { 8468 "title": "Iluminación de senderos", 8469 "handle": "path-lighting", 8470 "url": "/collections/path-lighting", 8471 "image": "\/\/rendl.es\/cdn\/shop\/files\/Garden_lighting_df5ea347-2503-40ca-99db-9a73c3f25235.jpg?v=1760963189\u0026width=320", 8472 "links": [] 8473 }, 8474 { 8475 "title": "Bolos de jardÃn", 8476 "handle": "garden-post-light", 8477 "url": "/collections/garden-post-light", 8478 "image": "\/\/rendl.es\/cdn\/shop\/files\/category-outdoor-lighting-10.png?v=1744626892\u0026width=320", 8479 "links": [ 8480 { "title": "Redondos", "url": "/collections/bollards-round" }, 8481 { "title": "Cuadrados", "url": "/collections/bollards-angular" }, 8482 { "title": "Orientables", "url": "/collections/directional-light-columns" } 8483 ] 8484 }, 8485 { 8486 "title": "Luz de piquete", 8487 "handle": "spike-lights", 8488 "url": "/collections/spike-lights", 8489 "image": "\/\/rendl.es\/cdn\/shop\/files\/On_spike.jpg?v=1760706287\u0026width=320", 8490 "links": [] 8491 } 8492 ] 8493 }, 8494 // Systémy 8495 { 8496 "title": "Sistemas", 8497 "handle": "systems", 8498 "url": "/collections/systems", 8499 "style": false, 8500 "links": [ 8501 { 8502 "title": "Sistemas de carril monofásico", 8503 "handle": "1-circuit-track-systems", 8504 "url": "/collections/1-circuit-track-systems", 8505 "image": "\/\/rendl.es\/cdn\/shop\/files\/1-circuit-tack.svg?v=1742647158\u0026width=320", 8506 "links": [ 8507 { "title": "Lámparas colgantes monofásicas", "url": "/collections/1-circuit-pendants" }, 8508 { "title": "Focos monofásicos", "url": "/collections/1-circuit-spotlights" }, 8509 { "title": "Carriles monofásicos", "url": "/collections/1f-tracks" }, 8510 { "title": "Componentes monofásicos", "url": "/collections/1-circuit-components" } 8511 ] 8512 }, 8513 { 8514 "title": "Sistemas de carril trifásico", 8515 "handle": "3-circuit-track-systems", 8516 "url": "/collections/3-circuit-track-systems", 8517 "image": "\/\/rendl.es\/cdn\/shop\/files\/3-circuit-track.svg?v=1742647322\u0026width=320", 8518 "links": [ 8519 { "title": "Lámparas colgantes trifásicas", "url": "/collections/3-circuit-pendants" }, 8520 { "title": "Focos trifásicos", "url": "/collections/3-circuit-spotlights" }, 8521 { "title": "Carriles trifásicos", "url": "/collections/3-circuit-tracks" }, 8522 { "title": "Componentes trifásicos", "url": "/collections/3-circuit-components" }, 8523 { "title": "Carriles empotrables trifásicos", "url": "/collections/3-circuit-tracks-recessed" }, 8524 { "title": "Componentes empotrables trifásicos", "url": "/collections/3-circuit-recessed-track-components" } 8525 ] 8526 }, 8527 { 8528 "title": "Tiras LED", 8529 "handle": "led-strips", 8530 "url": "/collections/led-strips", 8531 "image": "\/\/rendl.es\/cdn\/shop\/files\/led-stripes-icon.svg?v=1742647723\u0026width=320", 8532 "links": [ 8533 { "title": "Tiras", "url": "/collections/only-strips" }, 8534 { "title": "Perfiles empotrables", "url": "/collections/profiles-recessed" }, 8535 { "title": "Perfiles de superficie", "url": "/collections/profiles-surface-mounted" }, 8536 { "title": "Componentes para tiras LED", "url": "/collections/led-components" } 8537 ] 8538 }, 8539 { 8540 "title": "Sistema ultra fino", 8541 "handle": "ultra-thin-track-systems", 8542 "url": "/collections/ultra-thin-track-systems", 8543 "image": "\/\/rendl.es\/cdn\/shop\/files\/Ultra-thin_systems.jpg?v=1760096743\u0026width=320", 8544 "links": [ 8545 { "title": "Luminarias para sistema VEGA", "url": "/collections/lamps-for-vega-wave" }, 8546 { "title": "Carriles VEGA", "url": "/collections/vega-tracks" }, 8547 { "title": "Componentes VEGA", "url": "/collections/vega-components" } 8548 ] 8549 }, 8550 { 8551 "title": "Sistema de banda WAVE", 8552 "handle": "wave-belt-system", 8553 "url": "/collections/wave-belt-system", 8554 "image": "\/\/rendl.es\/cdn\/shop\/files\/Pasovy_system.jpg?v=1760096752\u0026width=320", 8555 "links": [ 8556 { "title": "Luminarias para sistema WAVE", "url": "/collections/lamps-for-wave-system" }, 8557 { "title": "Banda WAVE", "url": "/collections/wave-belt" }, 8558 { "title": "Componentes WAVE", "url": "/collections/wave-components" } 8559 ] 8560 } 8561 ] 8562 }, 8563 // SvÄtla dle typu 8564 { 8565 "title": "Tipo", 8566 "handle": "by-type", 8567 "url": "/collections/all-lights", 8568 "style": false, 8569 "links": [ 8570 { 8571 "title": "Lámparas colgantes", 8572 "handle": "pendant-lights", 8573 "url": "/collections/pendants", 8574 "image": "\/\/rendl.es\/cdn\/shop\/files\/pendants_icon_b6406059-b3ee-4b2a-b16e-6a772dd5571e.svg?v=1757416974\u0026width=320", 8575 "links": [ 8576 { "title": "Lámparas de techo", "url": "/collections/pendant-chandelier" }, 8577 { "title": "Decorativas", "url": "/collections/decorative-pendant-lights" }, 8578 { "title": "Lujo", "url": "/collections/luxury-pendant-lights" }, 8579 { "title": "Esfera de vidrio", "url": "/collections/pendant-glass-sphere" }, 8580 { "title": "Dimmable", "url": "/collections/dimmable-pendant-lights" },
8581 { "title": "Múltiple", "url": "/collections/multiple-pendant-lights" }, 8582 { "title": "Lineal", "url": "/collections/linear-pendant-lights" }, 8583 { "title": "Techo", "url": "/collections/pendants" } 8584 ] 8585 }, 8586 { 8587 "title": "Lámparas de techo", 8588 "handle": "ceiling-lights", 8589 "url": "/collections/ceiling-lights", 8590 "image": "\/\/rendl.es\/cdn\/shop\/files\/Ceiling_lamps.jpg?v=1760354705\u0026width=320", 8591 "links": [ 8592 { "title": "Para baño", "url": "/collections/bathroom-ceiling-light" }, 8593 { "title": "Dimmable", "url": "/collections/dimmable-ceiling-light" }, 8594 { "title": "Focos", "url": "/collections/ceiling-spotlights" }, 8595 { "title": "Finas", "url": "/collections/thin-ceiling-lights" }, 8596 { "title": "Decorativas", "url": "/collections/decorative-ceiling-lights" }, 8597 { "title": "Diseño de lujo", "url": "/collections/luxury-ceiling-lights" }, 8598 { "title": "Diseño retro", "url": "/collections/retro-ceiling-lights" }, 8599 { "title": "Yeso", "url": "/collections/plaster-ceiling-lights" }, 8600 { "title": "Lineal", "url": "/collections/linear-ceiling-lights" }, 8601 { "title": "Redondas", "url": "/collections/round-ceiling-lights" }, 8602 { "title": "Cuadradas", "url": "/collections/square-ceiling-lights" }, 8603 { "title": "Con sensor", "url": "/collections/ceiling-light-with-sensor" }, 8604 { "title": "Con mando a distancia", "url": "/collections/ceiling-lights-with-remote-control" }, 8605 { "title": "Panel LED de techo", "url": "/collections/led-ceiling-panel" } 8606 ] 8607 }, 8608 { 8609 "title": "Lámparas de pared", 8610 "handle": "wall-lights", 8611 "url": "/collections/wall-lights", 8612 "image": "\/\/rendl.es\/cdn\/shop\/files\/Wall_lamps.jpg?v=1760354729\u0026width=320", 8613 "links": [ 8614 { "title": "Para baño", "url": "/collections/bathroom-wall-light" }, 8615 { "title": "Encima del cuadro", "url": "/collections/above-painting-lights" }, 8616 { "title": "Decorativas", "url": "/collections/decorative-wall-lights" }, 8617 { "title": "Yeso", "url": "/collections/plaster-wall-lights" }, 8618 { "title": "Dimmable", "url": "/collections/dimmable-wall-lights" }, 8619 { "title": "Con interruptor", "url": "/collections/wall-lights-with-switch" }, 8620 { "title": "De brazo", "url": "/collections/wall-lights-on-arm" }, 8621 { "title": "Mesita de noche", "url": "/collections/bedside-lamps" }, 8622 { "title": "Arriba\/Abajo", "url": "/collections/updown-wall-lights" }, 8623 { "title": "Lineal", "url": "/collections/linear-wall-lights" }, 8624 { "title": "Diseño retro", "url": "/collections/retro-wall-light" } 8625 ] 8626 }, 8627 { 8628 "title": "Luminarias empotrables", 8629 "handle": "recessed-lights", 8630 "url": "/collections/recessed-lights", 8631 "image": "\/\/rendl.es\/cdn\/shop\/files\/category-recessed-lighting-7.png?v=1744626878\u0026width=320", 8632 "links": [ 8633 { "title": "Focos", "url": "/collections/recessed-spotlights" }, 8634 { "title": "Focos de baño", "url": "/collections/recessed-bathroom-spotlights" }, 8635 { "title": "Finas", "url": "/collections/thin-recessed-lights" }, 8636 { "title": "En pared", "url": "/collections/recessed-wall-spotlights" }, 8637 { "title": "Dimmable", "url": "/collections/dimmable-recessed-spotlights" }, 8638 { "title": "Decorativas", "url": "/collections/decorative-recessed-spotlights" }, 8639 { "title": "Yeso", "url": "/collections/recessed-plaster-spotlights" }, 8640 { "title": "Sin marco", "url": "/collections/frameless-lights" }, 8641 { "title": "Semi empotrables", "url": "/collections/semi-recessed-lights" }, 8642 { "title": "Múltiples", "url": "/collections/multiple-recessed-lights" }, 8643 { "title": "Combinables", "url": "/collections/combinable-lights" }, 8644 { "title": "Familias de focos", "url": "/collections/recessed-spotlight-families" } 8645 ] 8646 }, 8647 { 8648 "title": "Focos", 8649 "handle": "spotlights", 8650 "url": "/collections/spotlights",
8651 "image": "\/\/rendl.es\/cdn\/shop\/files\/Spotlight.png?v=1751386668\u0026width=320", 8652 "links": [ 8653 { "title": "Para baño", "url": "/collections/bathroom-spotlights" }, 8654 { "title": "Mesita de noche", "url": "/collections/bedside-lamps" }, 8655 { "title": "Techo", "url": "/collections/ceiling-spotlights" }, 8656 { "title": "Múltiples", "url": "/collections/multiple-spotlights" }, 8657 { "title": "Familias de focos", "url": "/collections/spotlight-families" } 8658 ] 8659 }, 8660 { 8661 "title": "Pantallas y accesorios", 8662 "handle": "shades-accessories", 8663 "url": "/collections/shades-and-shade-accessories", 8664 "image": "\/\/rendl.es\/cdn\/shop\/files\/Shades_and_shade_accessories.jpg?v=1760613055\u0026width=320", 8665 "links": [ 8666 { "title": "Pantallas universales", "url": "/collections/universal-shades" }, 8667 { "title": "Pantallas colgantes", "url": "/collections/pendant-shades" }, 8668 { "title": "Pantallas para lámparas de mesa", "url": "/collections/table-lamp-shades" }, 8669 { "title": "Pantallas para lámparas de pie", "url": "/collections/floor-lamp-shades" }, 8670 { "title": "Soportes y trÃpodes", "url": "/collections/stands-tripods" }, 8671 { "title": "Bases", "url": "/collections/bases" }, 8672 { "title": "Suspensiones para pantallas", "url": "/collections/suspensions-for-shades" } 8673 ] 8674 }, 8675 { 8676 "title": "Lámparas de pie", 8677 "handle": "floor-lamps", 8678 "url": "/collections/floor-lamps", 8679 "image": "\/\/rendl.es\/cdn\/shop\/files\/Floor_lamps.jpg?v=1760354742\u0026width=320", 8680 "links": [ 8681 { "title": "Decorativas", "url": "/collections/decorative-floor-lamps" }, 8682 { "title": "Arco", "url": "/collections/arc-floor-lamp" }, 8683 { "title": "Pie", "url": "/collections/luxury-floor-lamps" }, 8684 { "title": "Para lectura", "url": "/collections/floor-lamps-for-reading" }, 8685 { "title": "Dimmable", "url": "/collections/dimmable-floor-lamp" } 8686 ] 8687 }, 8688 { 8689 "title": "Lámparas de mesa", 8690 "handle": "table-lamps", 8691 "url": "/collections/table-lamps", 8692 "image": "\/\/rendl.es\/cdn\/shop\/files\/Table_lamps.jpg?v=1760354755\u0026width=320", 8693 "links": [ 8694 { "title": "Para trabajo", "url": "/collections/for-work" }, 8695 { "title": "Dimmable", "url": "/collections/dimmable-table-lamp" }, 8696 { "title": "Táctil", "url": "/collections/touch-table-lamp" }, 8697 { "title": "Diseño decorativo", "url": "/collections/decorative-table-lamps" }, 8698 { "title": "Diseño moderno", "url": "/collections/modern-table-lamps" }, 8699 { "title": "Diseño de lujo", "url": "/collections/luxury-table-lamps" }, 8700 { "title": "Diseño retro", "url": "/collections/retro-table-lamp" } 8701 ] 8702 }, 8703 { 8704 "title": "Fuentes de luz", 8705 "handle": "light-sources", 8706 "url": "/collections/light-sources", 8707 "image": "\/\/rendl.es\/cdn\/shop\/files\/Bulbs.png?v=1760613111\u0026width=320", 8708 "links": [ 8709 { "title": "Bombillas con mando a distancia", "url": "/collections/remote-control-bulbs" }, 8710 { "title": "Bombillas dimmables", "url": "/collections/dimmable-led-bulbs" }, 8711 { "title": "Bombillas E27", "url": "/collections/e27-bulbs" }, 8712 { "title": "Bombillas E14", "url": "/collections/e14-bulbs" }, 8713 { "title": "Bombillas GU10", "url": "/collections/gu10-bulbs" }, 8714 { "title": "Bombillas G9", "url": "/collections/g9-bulbs" }, 8715 { "title": "Bombillas lineales", "url": "/collections/linear-bulbs" }, 8716 { "title": "Bombillas globo", "url": "/collections/globe-bulbs" }, 8717 { "title": "Módulos LED", "url": "/collections/led-modules" }, 8718 { "title": "Bombillas G4 12V", "url": "/collections/g4-12v-bulbs" }, 8719 { "title": "Bombillas G53 AR111 12V", "url": "/collections/g53-ar111-12v-bulbs" }, 8720 { "title": "Bombillas GU5.3 12V", "url": "/collections/gu53-12v-bulbs" }, 8721 { "title": "Bombillas GX53", "url": "/collections/gx53-bulbs" },
8722 { "title": "Bombillas B15d", "url": "/collections/b15d-bulbs" }, 8723 { "title": "Bombilla pequeña", "url": "/collections/small-bulb" }, 8724 { "title": "Bombillas PAR", "url": "/collections/par-bulbs" }, 8725 { "title": "Bombillas forma T", "url": "/collections/t-shape-bulbs" }, 8726 { "title": "Bombillas plateadas", "url": "/collections/plated-bulbs" } 8727 ] 8728 }, 8729 { 8730 "title": "Iluminación indirecta", 8731 "handle": "indirect-lighting", 8732 "url": "/collections/indirect-lighting", 8733 "image": "\/\/rendl.es\/cdn\/shop\/files\/Indrect_162a3b64-2ec8-4e46-a2c8-b10dc9d6f8b1.jpg?v=1760962645\u0026width=320", 8734 "links": [] 8735 }, 8736 { 8737 "title": "Iluminación de suelo", 8738 "handle": "floor-lighting", 8739 "url": "/collections/floor-lighting", 8740 "image": "\/\/rendl.es\/cdn\/shop\/files\/Floor_lighting_0e47298f-3f27-4653-9f63-85815cf4d44f.jpg?v=1760962670\u0026width=320", 8741 "links": [] 8742 }, 8743 { 8744 "title": "Accesorios", 8745 "handle": "accessories", 8746 "url": "/collections/accessories", 8747 "image": "\/\/rendl.es\/cdn\/shop\/files\/Chocolate.jpg?v=1760615017\u0026width=320", 8748 "links": [ 8749 { "title": "Drivers", "url": "/collections/drivers" }, 8750 { "title": "Bornes IP", "url": "/collections/ip-terminal-blocks" }, 8751 { "title": "Cables", "url": "/collections/cables" }, 8752 { "title": "Controladores", "url": "/collections/controllers" }, 8753 { "title": "Sensores", "url": "/collections/sensors" }, 8754 { "title": "Componentes", "url": "/collections/components" } 8755 ] 8756 } 8757 ] 8758 }, 8759 // SvÄtla dle materiálu 8760 { 8761 "title": "Material", 8762 "handle": "by-material", 8763 "url": "/collections/all-lights", 8764 "style": false, 8765 "links": [ 8766 { 8767 "title": "Iluminación de yeso", 8768 "handle": "plaster-lights", 8769 "url": "/collections/plaster-lights", 8770 "image": "\/\/rendl.es\/cdn\/shop\/files\/Drywall_lights_0dbd0586-ad01-48ae-b48f-c0b7367a6b3d.jpg?v=1760440561\u0026width=320", 8771 "links": [ 8772 { "title": "Colgante", "url": "/collections/plaster-pendant-lights" }, 8773 { "title": "Techo", "url": "/collections/plaster-ceiling-lights" }, 8774 { "title": "Pared", "url": "/collections/plaster-wall-lights" }, 8775 { "title": "Focos empotrables", "url": "/collections/recessed-plaster-spotlights" } 8776 ] 8777 }, 8778 { 8779 "title": "Iluminación de cristal", 8780 "handle": "glass-lights", 8781 "url": "/collections/glass-lights", 8782 "image": "\/\/rendl.es\/cdn\/shop\/files\/Glass_lightng.jpg?v=1760442658\u0026width=320", 8783 "links": [ 8784 { "title": "Lámparas de techo", "url": "/collections/glass-chandelier" }, 8785 { "title": "Techo", "url": "/collections/glass-ceiling-lights" }, 8786 { "title": "Pared", "url": "/collections/glass-wall-lights" } 8787 ] 8788 }, 8789 { 8790 "title": "Iluminación de madera", 8791 "handle": "wood-lights", 8792 "url": "/collections/wooden-lamp", 8793 "image": "\/\/rendl.es\/cdn\/shop\/files\/Wooden_lights_fba88298-3bac-4308-8011-a84a96d94c99.jpg?v=1760439970\u0026width=320", 8794 "links": [ 8795 { "title": "Lámparas de mesa", "url": "/collections/wooden-light" }, 8796 { "title": "Lámparas de pie", "url": "/collections/wooden-floor-lamp" } 8797 ] 8798 }, 8799 { 8800 "title": "Iluminación de hormigón", 8801 "handle": "concrete-lights", 8802 "url": "/collections/concrete-lights", 8803 "image": "\/\/rendl.es\/cdn\/shop\/files\/Concrete_lights_260ca202-9bac-43f3-859f-8cccdcb35b7d.jpg?v=1760440086\u0026width=320", 8804 "links": [ 8805 { "title": "Lámparas", "url": "/collections/concrete-lamp" }, 8806 { "title": "Pared", "url": "/collections/concrete-wall-lamps" }, 8807 { "title": "Mesa", "url": "/collections/concrete-table-lamps" } 8808 ] 8809 }, 8810 { 8811 "title": "Iluminación metálica", 8812 "handle": "metal-lights", 8813 "url": "/collections/metal-lights", 8814 "image": "\/\/rendl.es\/cdn\/shop\/files\/Metal_lights.jpg?v=1760373194\u0026width=320", 8815 "links": [ 8816 { "title": "Lámparas de metal", "url": "/collections/metal-lights" }, 8817 { "title": "Lámparas de araña", "url": "/collections/metal-chandelier" }, 8818 { "title": "Colgante", "url": "/collections/metal-pendant-lights" }, 8819 { "title": "Techo", "url": "/collections/metal-ceiling-lamps" }, 8820 { "title": "Mesa", "url": "/collections/metal-table-lamps" }, 8821 { "title": "De pie", "url": "/collections/metal-floor-lamps" } 8822 ] 8823 }, 8824 { 8825 "title": "Iluminación de cobre", 8826 "handle": "copper-lights", 8827 "url": "/collections/copper-lamps", 8828 "image": "\/\/rendl.es\/cdn\/shop\/files\/Copper_lights.jpg?v=1760373869\u0026width=320", 8829 "links": [ 8830 { "title": "Lámparas de araña", "url": "/collections/copper-chandeliers" } 8831 ] 8832 }, 8833 { 8834 "title": "Iluminación cerámica", 8835 "handle": "ceramic-lights", 8836 "url": "/collections/ceramic-lights", 8837 "image": "\/\/rendl.es\/cdn\/shop\/files\/Ceramic_lights_aa508c49-eb48-4afd-9319-51f94c079178.jpg?v=1760439957\u0026width=320", 8838 "links": [ 8839 { "title": "Lámparas", "url": "/collections/ceramic-lamp" } 8840 ] 8841 } 8842 ] 8843 }, 8844 // SvÄtla dle funkce 8845 { 8846 "title": "Función", 8847 "handle": "by-function", 8848 "url": "/collections/all-lights", 8849 "style": false, 8850 "links": [ 8851 { 8852 "title": "Iluminación dimmable", 8853 "handle": "dimmable-lights", 8854 "url": "/collections/dimmable-lights", 8855 "image": "\/\/rendl.es\/cdn\/shop\/files\/Dimmable.jpg?v=1760354786\u0026width=320", 8856 "links": [ 8857 { "title": "Colgante", "url": "/collections/dimmable-pendant-lights" }, 8858 { "title": "Techo", "url": "/collections/dimmable-ceiling-light" }, 8859 { "title": "Pared", "url": "/collections/dimmable-wall-lights" }, 8860 { "title": "Focos empotrables", "url": "/collections/dimmable-recessed-spotlights" }, 8861 { "title": "Lámparas de mesa", "url": "/collections/dimmable-table-lamp" }, 8862 { "title": "Lámparas de pie", "url": "/collections/dimmable-led-floor-lamp" }, 8863 { "title": "Focos trifásicos", "url": "/collections/3-circuit-spotlights" }, 8864 { "title": "Focos monofásicos", "url": "/collections/dimmable-3-circuit-spotlights" }, 8865 { "title": "VEGA \/ WAVE", "url": "/collections/dimmable-lamps-for-vega-wave" }, 8866 { "title": "Bombillas", "url": "/collections/dimmable-led-bulbs" } 8867 ] 8868 }, 8869 { 8870 "title": "Protección IP", 8871 "handle": "ip-protection", 8872 "url": "/collections/ip-protection", 8873 "image": "\/\/rendl.es\/cdn\/shop\/files\/IP-rate.jpg?v=1760611568\u0026width=320", 8874 "links": [ 8875 { "title": "IP44", "url": "/collections/ip44" }, 8876 { "title": "IP54", "url": "/collections/ip54" }, 8877 { "title": "IP65", "url": "/collections/ip65" }, 8878 { "title": "IP67", "url": "/collections/ip67" } 8879 ] 8880 }, 8881 { 8882 "title": "Iluminación con mando a distancia", 8883 "handle": "remote-control-lights", 8884 "url": "/collections/remote-control-lights", 8885 "image": "\/\/rendl.es\/cdn\/shop\/files\/Remote_control.jpg?v=1760444653\u0026width=320", 8886 "links": [ 8887 { "title": "Lámparas de techo", "url": "/collections/ceiling-lights-with-remote-control" }, 8888 { "title": "Tiras LED", "url": "/collections/led-strip-with-remote" }, 8889 { "title": "Bombillas", "url": "/collections/remote-control-bulbs" } 8890 ] 8891 }, 8892 { 8893 "title": "Ajustable", 8894 "handle": "adjustable-lights", 8895 "url": "/collections/adjustable-lights", 8896 "image": "\/\/rendl.es\/cdn\/shop\/files\/Positionable_icon_a638012c-5ba7-44b6-8c63-492024071299.jpg?v=1760620779\u0026width=320", 8897 "links": [ 8898 { "title": "Posición ajustable", "url": "/collections/adjustable-position" }, 8899 { "title": "Altura ajustable", "url": "/collections/adjustable-height" }, 8900 { "title": "Luz de color variable", "url": "/collections/light-color-changing" } 8901 ] 8902 }, 8903 { 8904 "title": "Lámparas con sensor", 8905 "handle": "lights-with-sensor", 8906 "url": "/collections/lights-with-sensor", 8907 "image": "\/\/rendl.es\/cdn\/shop\/files\/Lights_with_sensor.png?v=1751387239\u0026width=320", 8908 "links": [ 8909 { "title": "Lámparas de techo con sensor", "url": "/collections/ceiling-light-with-se
8909nsor" }, 8910 { "title": "Lámparas exterior con sensor", "url": "/collections/outdoor-lamps-with-sensor" }, 8911 { "title": "Con sensor de movimiento", "url": "/collections/light-with-motion-sensor" } 8912 ] 8913 }, 8914 { 8915 "title": "Pintable", 8916 "handle": "paintable-lights", 8917 "url": "/collections/paintable-lights", 8918 "image": "\/\/rendl.es\/cdn\/shop\/files\/Paintable.jpg?v=1761078453\u0026width=320", 8919 "links": [] 8920 }, 8921 { 8922 "title": "RGB", 8923 "handle": "rgb-lights", 8924 "url": "/collections/rgb", 8925 "image": "\/\/rendl.es\/cdn\/shop\/files\/RGB.jpg?v=1760621046\u0026width=320", 8926 "links": [] 8927 } 8928 ] 8929 } 8930 ]; 8931 8932 var secondMenu = [ 8933 8934 8935 { 8936 "title": "Novedades", 8937 "handle": "news", 8938 "url": "\/collections\/new", 8939 "extreme_image": null, 8940 "extreme_image_hover": null 8941 }, 8942 8943 { 8944 "title": "Promociones", 8945 "handle": "sale", 8946 "url": "\/collections\/sale", 8947 "extreme_image": null, 8948 "extreme_image_hover": null 8949 }, 8950 8951 { 8952 "title": "Ofertas especiales", 8953 "handle": "extreme-outlet", 8954 "url": "\/collections\/outlet", 8955 "extreme_image": "\/\/rendl.es\/cdn\/shop\/files\/outlet_icon_877b5ed1-dbcd-4165-80ad-bc2aff50f7bb.svg?height=56\u0026v=1748256019\u0026width=56", 8956 "extreme_image_hover": "\/\/rendl.es\/cdn\/shop\/files\/outlet_icon_hover_6e4f4224-3cfb-47f1-b4bf-0cdd583f2fb1.svg?height=56\u0026v=1748256027\u0026width=56" 8957 }, 8958 8959 { 8960 "title": "Ver todo", 8961 "handle": "show-all", 8962 "url": "\/collections\/all", 8963 "extreme_image": null, 8964 "extreme_image_hover": null 8965 } 8966 8967 ]; 8968 8969 var menuEl = document.getElementById('main-mega-menu-mobile'); 8970 var contentEl = document.getElementById('main-mega-menu-mobile-content'); 8971 var backBtn = document.getElementById('main-mega-menu-mobile-back'); 8972 var titleEl = document.getElementById('main-mega-menu-mobile-title'); 8973 var stack = []; 8974 8975 var allText = { 8976 bg: 'ÐÑиÑки', cs: 'VÅ¡e', da: 'Alle', de: 'Alle', el: 'Îλα', en: 'All', es: 'Todo', fi: 'Kaikki', fr: 'Tout', hr: 'Sve', hu: 'Mind', it: 'Tutti', lt: 'Visi', nl: 'Alles', pl: 'Wszystko', 'pt-pt': 'Todos', ro: 'Toate', sk: 'VÅ¡etko', sl: 'Vse', sv: 'Alla' 8977 }; 8978 var allBtnText = allText[lang] ? allText[lang] : allText['en']; 8979 8980 var isFirstOpen = true; 8981 function dissolveMenu(direction, cb) { 8982 var menu = menuEl; 8983 menu.classList.remove('dissolve-in', 'dissolve-out'); 8984 void menu.offsetWidth; 8985 if (direction === 'in') { 8986 menu.classList.add('dissolve-in'); 8987 setTimeout(function() { menu.classList.remove('dissolve-in'); if(cb)cb(); }, 150); 8988 } else if (direction === 'out') { 8989 menu.classList.add('dissolve-out'); 8990 setTimeout(function() { menu.classList.remove('dissolve-out'); if(cb)cb(); }, 150); 8991 } 8992 } 8993 8994 function animateContent(direction, cb) { 8995 var content = contentEl; 8996 content.classList.remove('slide-in', 'slide-out', 'slide-in-reverse', 'slide-out-reverse'); 8997 void content.offsetWidth; // reflow 8998 if (direction === 'in') { 8999 content.classList.add('slide-in'); 9000 setTimeout(function() { content.classList.remove('slide-in'); if(cb)cb(); }, 350); 9001 } else if (direction === 'out') { 9002 content.classList.add('slide-out'); 9003 setTimeout(function() { content.classList.remove('slide-out'); if(cb)cb(); }, 350); 9004 } else if (direction === 'in-reverse') { 9005 content.classList.add('slide-in-reverse'); 9006 setTimeout(function() { content.classList.remove('slide-in-reverse'); if(cb)cb(); }, 350); 9007 } else if (direction === 'out-reverse') { 9008 content.classList.add('slide-out-reverse'); 9009 setTimeout(function() { content.classList.remove('slide-out-reverse'); if(cb)cb(); }, 350); 9010 } 9011 } 9012 9013 function renderList(list, parentTitle, animate) { 9014 if (animate === 'in') animateContent('in'); 9015 if (animate === 'out') animateContent('out'); 9016 if (animate === 'in-reverse') animateContent('in-reverse'); 9017 if (animate === 'out-reverse') animateContent('out-reverse'); 9018 9019 var superCategoryHandle = stack.length > 0 ? stack[0].handle : null; 9020 if ( 9021 list.length && 9022 list[0] && 9023 list[0].handle !== 'all-btn' && 9024 list.every(function(item){return !item.links || item.links.length === 0;}) && 9025 superCategoryHandle 9026 ) { 9027 9028 var allBtnLabel = allBtnText + (parentTitle ? ' ' + parentTitle : ''); 9029 var allBtnUrl = ''; 9030 9031 // Try to get the parent URL from the stack 9032 if (stack.length > 0 && stack[stack.length - 1] && stack[stack.length - 1].url) { 9033 allBtnUrl = stack[stack.length - 1].url; 9034 } else if (list[0] && list[0].url) { 9035 // Fallback: try to extract parent URL from first item 9036 var urlParts = list[0].url.split('/'); 9037 if (urlParts.length > 2) { 9038 allBtnUrl = '/' + urlParts[1] + '/' + urlParts[2]; 9039 } else { 9040 allBtnUrl = list[0].url; 9041 } 9042 } 9043 9044 // Create "All" button and place it at the beginning of the list 9045 var allBtn = { 9046 handle: 'all-btn', 9047 title: allBtnLabel, 9048 url: allBtnUrl, 9049 subcatTitle: parentTitle 9050 }; 9051 list = [allBtn].concat(list); 9052 } 9053 var html = '<ul class="main-mega-menu-mobile__list">'; 9054 var specialItemsHtml = []; 9055 list.forEach(function(item, idx) { 9056 var isStyle = item.style; 9057 var hasChildren = item.links && item.links.length > 0; 9058 var isLink = !hasChildren && !isStyle; 9059 var classes = 'main-mega-menu-mobile__item'; 9060 if (item.handle === 'news') classes += ' main-mega-menu-mobile__item--news'; 9061 if (item.handle === 'sale') classes += ' main-mega-menu-mobile__item--sale'; 9062 if (item.handle === 'extreme-outlet') classes += ' main-mega-menu-mobile__item--extreme'; 9063 if (item.handle === 'show-all') classes += ' main-mega-menu-mobile__item--showall'; 9064 if (isLink) classes += ' main-mega-menu-mobile__item--link'; 9065 if (item.handle === 'all-btn') classes += ' main-mega-menu-mobile__item--all'; 9066 9067 if (["news", "sale", "extreme-outlet", "show-all"].includes(item.handle)) { 9068 var specialClass = 'main-mega-menu-mobile__item--special main-mega-menu-mobile__item--'
9068+ item.handle; 9069 var specialHtml = '<li class="' + classes + ' ' + specialClass + '" data-handle="' + item.handle + '">'; 9070 if (item.handle === 'extreme-outlet' && item.extreme_image) { 9071 specialHtml += '<a href="' + item.url + '"><span>' + item.title + '</span>'; 9072 specialHtml += '<span style="display:inline-block;width:24px;height:24px;position:relative;">'; 9073 specialHtml += '<img src="' + item.extreme_image + '" style="width:24px;height:24px;object-fit:contain;">'; 9074 if (item.extreme_image_hover) { 9075 specialHtml += '<img src="' + item.extreme_image_hover + '" style="width:24px;height:24px;object-fit:contain;position:absolute;top:0;left:0;opacity:0;transition:opacity 0.2s;" class="extreme-hover">'; 9076 } 9077 specialHtml += '</span></a>'; 9078 } else if (isLink) { 9079 specialHtml += '<a href="' + item.url + '" style="display:flex;align-items:center;justify-content:space-between;width:100%;color:inherit;text-decoration:none;">'; 9080 if (item.handle === 'all-btn') { 9081 var allBtnLabel = allBtnText + (item.subcatTitle ? ' ' + item.subcatTitle : (item.title ? ' ' + item.title : '')); 9082 specialHtml += '<span>' + allBtnLabel + '</span>'; 9083 } else { 9084 specialHtml += '<span>' + item.title + '</span>'; 9085 } 9086 specialHtml += '<svg style="transform:rotate(270deg);display:block;width:18px;height:18px;color:#ababab;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">'; 9087 specialHtml += '<path d="M4 7L9 12L14 7" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>'; 9088 specialHtml += '</svg>'; 9089 specialHtml += '</a>'; 9090 } else { 9091 if (item.handle === 'all-btn') { 9092 var allBtnLabel = allBtnText + (item.subcatTitle ? ' ' + item.subcatTitle : (item.title ? ' ' + item.title : '')); 9093 specialHtml += '<span>' + allBtnLabel + '</span>'; 9094 } else { 9095 specialHtml += '<span>' + item.title + '</span>'; 9096 } 9097 } 9098 specialHtml += '</li>'; 9099 specialItemsHtml.push(specialHtml); 9100 return; 9101 } 9102 9103 9104 html += '<li class="' + classes; 9105 if (item.handle === 'all-btn') html += ' main-mega-menu-mobile__item--special main-mega-menu-mobile__item--all'; 9106 html += '" data-handle="' + item.handle + '">'; 9107 if (item.handle === 'all-btn') { 9108 var allBtnLabel = allBtnText + (item.subcatTitle ? ' ' + item.subcatTitle : (item.title ? ' ' + item.title : '')); 9109 html += '<a href="' + item.url + '" style="display:flex;align-items:center;justify-content:space-between;width:100%;color:inherit;text-decoration:none;">'; 9110 html += '<span>' + allBtnLabel + '</span>'; 9111 html += '<svg style="transform:rotate(270deg);display:block;width:18px;height:18px;color:#ababab;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">'; 9112 html += '<path d="M4 7L9 12L14 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>'; 9113 html += '</svg>'; 9114 html += '</a>'; 9115 } else if (hasChildren || isStyle) { 9116 html += '<span style="display:flex;align-items:center;justify-content:space-between;width:100%;">'; 9117 if (item.image && item.handle !== 'extreme-outlet') { 9118 html += '<img src="' + item.image + '" style="width:32px;height:32px;object-fit:cover;border-radius:0.3rem;flex-shrink:0;margin-right:1.2rem;">'; 9119 } 9120 html += '<span>' + item.title + '</span>'; 9121 html += '<span class="menu-arrow" style="margin-left:auto;display:flex;align-items:center;justify-content:flex-end;width:22px;height:22px;color:#ababab;">' 9122 + '<svg style="transform:rotate(270deg);display:block;" width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">' 9123 + '<path d="M4 7L9 12L14 7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>' 9124 + '</svg>' 9125 + '</span>'; 9126 html += '</span>'; 9127 } else { 9128 html += '<a href="' + item.url + '" style="display:flex;align-items:center;gap:0.7rem;width:100%;color:inherit;text-decoration:none;">'; 9129 if (item.image && item.handle !== 'extreme-outlet') { 9130 html += '<img src="' + item.image + '" style="width:32px;height:32px;object-fit:cover;border-radius:0.3rem;flex-shrink:0;margin-right:1.2rem;">'; 9131 } 9132 html += '<span>' + item.title + '</span>'; 9133 html += '</a>'; 9134 } 9135 html += '</li>'; 9136 }); 9137 html += '</ul>'; 9138 if (specialItemsHtml.length) html += '<div class="main-mega-menu-mobile__special-list">' + specialItemsHtml.join('') + '</div>'; 9139 contentEl.innerHTML = html; 9140 titleEl.textContent = parentTitle || window.__megaMenuMobileCatalogText || 'CATALOG'; 9141 if (stack.length > 0) { 9142 backBtn.style.display = 'flex'; 9143 titleEl.classList.add('clickable'); 9144 titleEl.style.pointerEvents = 'auto'; 9145 titleEl.onclick = function() { backBtn.onclick(); }; 9146 } else { 9147 backBtn.style.display = 'none'; 9148 titleEl.classList.remove('clickable'); 9149 titleEl.style.pointerEvents = 'none'; 9150 titleEl.onclick = null; 9151 } 9152 9153 Array.from(contentEl.querySelectorAll('.main-mega-menu-mobile__item')).forEac
9153h(function(el, idx) { 9154 var item = list[idx]; 9155 if (item.links && item.links.length > 0) { 9156 el.onclick = function() { 9157 stack.push({list: list, title: parentTitle, handle: item.handle, url: item.url}); 9158 if (item.style) { 9159 renderStyleGrid(item.links, item.title, 'in'); 9160 } else { 9161 renderList(item.links, item.title, 'in'); 9162 } 9163 }; 9164 } else if (!item.style) { 9165 // For items without children (like "All" button), navigate to URL if available 9166 el.onclick = function() { 9167 if (item.url && item.url !== '#') { 9168 window.location.href = item.url; 9169 } 9170 closeMegaMenuMobile(); 9171 }; 9172 } 9173 }); 9174 9175 var extremeLinks = contentEl.querySelectorAll('.main-mega-menu-mobile__item--extreme a'); 9176 extremeLinks.forEach(function(link) { 9177 var imgs = link.querySelectorAll('img'); 9178 if (imgs.length > 1) { 9179 link.addEventListener('touchstart', function() { imgs[1].style.opacity = 1; }); 9180 link.addEventListener('touchend', function() { imgs[1].style.opacity = 0; }); 9181 link.addEventListener('mouseenter', function() { imgs[1].style.opacity = 1; }); 9182 link.addEventListener('mouseleave', function() { imgs[1].style.opacity = 0; }); 9183 } 9184 }); 9185 9186 Array.from(contentEl.querySelectorAll('.main-mega-menu-mobile__item--special')).forEach(function(el) { 9187 el.addEventListener('click', function(e) { 9188 9189 if (e.target.tagName.toLowerCase() === 'a') return; 9190 var a = el.querySelector('a'); 9191 if (a) { 9192 a.click(); 9193 } else { 9194 closeMegaMenuMobile(); 9195 } 9196 }); 9197 }); 9198 } 9199
9200 function renderStyleGrid(list, parentTitle, animate) { 9201 if (animate === 'in') animateContent('in'); 9202 if (animate === 'out') animateContent('out'); 9203 if (animate === 'in-reverse') animateContent('in-reverse'); 9204 if (animate === 'out-reverse') animateContent('out-reverse'); 9205 var html = '<div class="main-mega-menu-mobile__style-grid">'; 9206 list.forEach(function(item) { 9207 html += '<a href="' + item.url + '" class="main-mega-menu-mobile__style-item">'; 9208 if (item.image) { 9209 html += '<img class="main-mega-menu-mobile__style-img" src="' + item.image + '" alt="' + item.title + '">'; 9210 } 9211 html += '<div class="main-mega-menu-mobile__style-title">' + item.title + '</div>'; 9212 html += '</a>'; 9213 }); 9214 html += '</div>'; 9215 contentEl.innerHTML = html; 9216 titleEl.textContent = parentTitle; 9217 if (stack.length > 0) { 9218 backBtn.style.display = 'flex'; 9219 titleEl.classList.add('clickable'); 9220 titleEl.style.pointerEvents = 'auto'; 9221 titleEl.onclick = function() { backBtn.onclick(); }; 9222 } else { 9223 backBtn.style.display = 'none'; 9224 titleEl.classList.remove('clickable'); 9225 titleEl.style.pointerEvents = 'none'; 9226 titleEl.onclick = null; 9227 } 9228 } 9229 9230 backBtn.onclick = function() { 9231 if (stack.length) { 9232 var prev = stack.pop(); 9233 9234 var isPrevStyle = false; 9235 if (prev.list && prev.list.length && prev.list[0] && prev.list[0].image && !prev.list[0].links) { 9236 9237 isPrevStyle = true; 9238 } 9239 if (isPrevStyle) { 9240 renderStyleGrid(prev.list, prev.title, 'in-reverse'); 9241 } else { 9242 renderList(prev.list, prev.title, 'in-reverse'); 9243 } 9244 } 9245 }; 9246 9247 var overlayEl = document.getElementById('main-mega-menu-mobile-overlay'); 9248 window.openMegaMenuMobile = function() { 9249 menuEl.classList.add('open'); 9250 if (overlayEl) overlayEl.classList.add('open'); 9251 document.body.classList.add('mobile-menu-open'); 9252 stack = []; 9253 dissolveMenu('in'); 9254 9255 renderList(megaMenu.concat(secondMenu), window.__megaMenuMobileCatalogText || 'CATALOG', isFirstOpen ? null : 'in'); 9256 isFirstOpen = false; 9257 }; 9258 window.closeMegaMenuMobile = function() { 9259 dissolveMenu('out'); 9260 setTimeout(function() { 9261 menuEl.classList.remove('open'); 9262 if (overlayEl) overlayEl.classList.remove('open'); 9263 document.body.classList.remove('mobile-menu-open'); 9264 }, 150); 9265 }; 9266})(); 9267</script>
9267 9268 9269 </div><section id="shopify-section-sections--28113425695018__custom_liquid_hWr7aF" class="shopify-section shopify-section-group-header-group section"><style data-shopify>.section-sections--28113425695018__custom_liquid_hWr7aF-padding { 9270 padding-top: calc(20px * 0.75); 9271 padding-bottom: calc(0px * 0.75); 9272 } 9273 9274 @media screen and (min-width: 750px) { 9275 .section-sections--28113425695018__custom_liquid_hWr7aF-padding { 9276 padding-top: 20px; 9277 padding-bottom: 0px; 9278 } 9279 }</style><div class="color-scheme-1 gradient"> 9280 <div class="section-sections--28113425695018__custom_liquid_hWr7aF-padding"> 9281 9282<div 9283 id="cz-promo-banner" 9284 class="cz-promo-banner" 9285 role="region" 9286 aria-label="Promo banner" 9287 data-label-more="más" 9288 data-label-less="menos" 9289 > 9290 <div class="cz-promo-banner__bar"> 9291 <span class="cz-promo-banner__percent" aria-label="30%"><svg class="cz-promo-banner__percent-mark" viewBox="0 0 45 16" width="68" height="24" aria-hidden="true"> 9292 <defs> 9293 <linearGradient id="cz-promo-percent-shine" x1="0" y1="0" x2="1" y2="0"> 9294 <stop offset="0" stop-color="#ffffff" stop-opacity="0"/> 9295 <stop offset="0.5" stop-color="#ffffff" stop-opacity="0.75"/> 9296 <stop offset="1" stop-color="#ffffff" stop-opacity="0"/> 9297 </linearGradient> 9298 <clipPath id="cz-promo-clip-3" clipPathUnits="userSpaceOnUse"> 9299 <path d="M7.3656 6.4584C8.7624 6.6312 9.828 7.1064 10.5624 7.884C11.2968 8.6616 11.664 9.6336 11.664 10.8C11.664 11.6784 11.4408 12.4776 10.9944 13.1976C10.548 13.9176 9.8712 14.4936 8.964 14.9256C8.0712 15.3432 6.9768 15.552 5.6808 15.552C4.6008 15.552 3.5568 15.4008 2.5488 15.0984C1.5552 14.7816 0.7056 14.3496 0 13.8024L1.2096 11.6208C1.7568 12.0816 2.4192 12.4488 3.1968 12.7224C3.9888 12.9816 4.8024 13.1112 5.6376 13.1112C6.6312 13.1112 7.4088 12.9096 7.9704 12.5064C8.5464 12.0888 8.8344 11.5272 8.8344 10.8216C8.8344 10.116 8.5608 9.5688 8.0136 9.18C7.4808 8.7768 6.66 8.5752 5.5512 8.5752H4.1688V6.6528L7.6032 2.5704H0.7344V0.216H11.0376V2.0952L7.3656 6.4584Z"></path> 9300 </clipPath> 9301 <clipPath id="cz-promo-clip-0" clipPathUnits="userSpaceOnUse" clip-rule="evenodd"> 9302 <path d="M19.8079 15.552C18.5983 15.552 17.5183 15.2496 16.5679 14.6448C15.6175 14.0256 14.8687 13.1328 14.3215 11.9664C13.7743 10.7856 13.5007 9.3888 13.5007 7.776C13.5007 6.1632 13.7743 4.7736 14.3215 3.6072C14.8687 2.4264 15.6175 1.5336 16.5679 0.9288C17.5183 0.3096 18.5983 0 19.8079 0C21.0175 0 22.0975 0.3096 23.0479 0.9288C24.0127 1.5336 24.7687 2.4264 25.3159 3.6072C25.8631 4.7736 26.1367 6.1632 26.1367 7.776C26.1367 9.3888 25.8631 10.7856 25.3159 11.9664C24.7687 13.1328 24.0127 14.0256 23.0479 14.6448C22.0975 15.2496 21.0175 15.552 19.8079 15.552ZM19.8079 13.1112C20.8879 13.1112 21.7375 12.6648 22.3567 11.772C22.9903 10.8792 23.3071 9.5472 23.3071 7.776C23.3071 6.0048 22.9903 4.6728 22.3567 3.78C21.7375 2.8872 20.8879 2.4408 19.8079 2.4408C18.7423 2.4408 17.8927 2.8872 17.2591 3.78C16.6399 4.6728 16.3303 6.0048 16.3303 7.776C16.3303 9.5472 16.6399 10.8792 17.2591 11.772C17.8927 12.6648 18.7423 13.1112 19.8079 13.1112Z" fill-rule="evenodd"></path> 9303 </clipPath> 9304 <clipPath id="cz-promo-clip-pct" clipPathUnits="userSpaceOnUse" clip-rule="evenodd"> 9305 <path d="M31.4039 8.3592C30.3239 8.3592 29.4527 7.9776 28.7903 7.2144C28.1279 6.4512 27.7967 5.4504 27.7967 4.212C27.7967 2.9736 28.1279 1.9728 28.7903 1.2096C29.4527 0.4464 30.3239 0.0648005 31.4039 0.0648005C32.4839 0.0648005 33.3551 0.4464 34.0175 1.2096C34.6943 1.9584 35.0327 2.9592 35.0327 4.212C35.0327 5.4648 34.6943 6.4728 34.0175 7.236C33.3551 7.9848 32.4839 8.3592 31.4039 8.3592ZM40.4759 0.216H42.5927L32.2679 15.336H30.1511L40.4759 0.216ZM31.4039 6.8472C31.9943 6.8472 32.4479 6.6168 32.7647 6.156C33.0959 5.6952 33.2615 5.0472 33.2615 4.212C33.2615 3.3768 33.0959 2.7288 32.7647 2.268C32.4479 1.8072 31.9943 1.5768 31.4039 1.5768C30.8423 1.5768 30.3887 1.8144 30.0431 2.2896C29.7119 2.7504 29.5463 3.3912 29.5463 4.212C29.5463 5.0328 29.7119 5.6808 30.0431 6.156C30.3887 6.6168 30.8423 6.8472 31.4039 6.8472ZM41.3183 15.4872C40.2383 15.4872 39.3671 15.1056 38.7047 14.3424C38.0423 13.5792 37.7111 12.5784 37.7111 11.34C37.7111 10.1016 38.0423 9.1008 38.7047 8.3376C39.3671 7.5744 40.2383 7.1928 41.3183 7.1928C42.3983 7.1928 43.2695 7.5744 43.9319 8.3376C44.6087 9.1008 44.9471 10.1016 44.9471 11.34C44.9471 12.5784 44.6087 13.5792 43.9319 14.3424C43.2695 15.1056 42.3983 15.4872 41.3183 15.4872ZM41.3183 13.9752C41.8943 13.9752 42.3479 13.7448 42.6791 13.284C43.0103 12.8088 43.1759 12.1608 43.1759 11.34C43.1759 10.5192 43.0103 9.8784 42.6791 9.4176C42.3479 8.9424 41.8943 8.7048 41.3183 8.7048C40.7423 8.7048 40.2887 8.9352 39.9575 9.396C39.6263 9.8568 39.4607 10.5048 39.4607 11.34C39.4607 12.1752 39.6263 12.8232 39.9575 13.284C40.2887 13.7448 40.7423 13.9752 41.3183 13.9752Z" fill-rule="evenodd"></path> 9306 </clipPath> 9307 <clipPath id="cz-promo-clip-all" clipPathUnits="userSpaceOnUse" clip-rule="evenodd"> 9308 <path d="M7.3656 6.4584C8.7624 6.6312 9.828 7.1064 10.5624 7.884C11.2968 8.6616 11.664 9.6336 11.664 10.8C11.664 11.6784 11.4408 12.4776 10.9944 13.1976C10.548 13.9176 9.8712 14.4936 8.964 14.9256C8.0712 15.3432 6.9768 15.552 5.6808 15.552C4.6008 15.552 3.5568 15.4008 2.5488 15.0984C1.5552 14.7816 0.7056 14.3496 0 13.8024L1.2096 11.6208C1.7568 12.0816 2.4192 12.4488 3.1968 12.7224C3.9888 12.9816 4.8024 13.1112 5.6376 13.1112C6.6312 13.1112 7.4088 12.9096 7.9704 12.5064C8.5464 12.0888 8.8344 11.5272 8.8344 10.8216C8.8344 10.116 8.5608 9.5688 8.0136 9.18C7.4808 8.7768 6.66 8.5752 5.5512 8.5752H4.1688V6.6528L7.6032 2.5704H0.7344V0.216H11.0376V2.0952L7.3656 6.4584Z"></path> 9309 <path d="M19.8079 15.552C18.5983 15.552 17.5183 15.2496 16.5679 14.6448C15.6175 14.0256 14.8687 13.1328 14.3215 11.9664C13.7743 10.7856 13.5007 9.3888 13.5007 7.776C13.5007 6.1632 13.7743 4.7736 14.3215 3.6072C14.8687 2.4264 15.6175 1.5336 16.5679 0.9288C17.5183 0.3096 18.5983 0 19.8079 0C21.01
930975 0 22.0975 0.3096 23.0479 0.9288C24.0127 1.5336 24.7687 2.4264 25.3159 3.6072C25.8631 4.7736 26.1367 6.1632 26.1367 7.776C26.1367 9.3888 25.8631 10.7856 25.3159 11.9664C24.7687 13.1328 24.0127 14.0256 23.0479 14.6448C22.0975 15.2496 21.0175 15.552 19.8079 15.552ZM19.8079 13.1112C20.8879 13.1112 21.7375 12.6648 22.3567 11.772C22.9903 10.8792 23.3071 9.5472 23.3071 7.776C23.3071 6.0048 22.9903 4.6728 22.3567 3.78C21.7375 2.8872 20.8879 2.4408 19.8079 2.4408C18.7423 2.4408 17.8927 2.8872 17.2591 3.78C16.6399 4.6728 16.3303 6.0048 16.3303 7.776C16.3303 9.5472 16.6399 10.8792 17.2591 11.772C17.8927 12.6648 18.7423 13.1112 19.8079 13.1112Z" fill-rule="evenodd"></path> 9310 <path d="M31.4039 8.3592C30.3239 8.3592 29.4527 7.9776 28.7903 7.2144C28.1279 6.4512 27.7967 5.4504 27.7967 4.212C27.7967 2.9736 28.1279 1.9728 28.7903 1.2096C29.4527 0.4464 30.3239 0.0648005 31.4039 0.0648005C32.4839 0.0648005 33.3551 0.4464 34.0175 1.2096C34.6943 1.9584 35.0327 2.9592 35.0327 4.212C35.0327 5.4648 34.6943 6.4728 34.0175 7.236C33.3551 7.9848 32.4839 8.3592 31.4039 8.3592ZM40.4759 0.216H42.5927L32.2679 15.336H30.1511L40.4759 0.216ZM31.4039 6.8472C31.9943 6.8472 32.4479 6.6168 32.7647 6.156C33.0959 5.6952 33.2615 5.0472 33.2615 4.212C33.2615 3.3768 33.0959 2.7288 32.7647 2.268C32.4479 1.8072 31.9943 1.5768 31.4039 1.5768C30.8423 1.5768 30.3887 1.8144 30.0431 2.2896C29.7119 2.7504 29.5463 3.3912 29.5463 4.212C29.5463 5.0328 29.7119 5.6808 30.0431 6.156C30.3887 6.6168 30.8423 6.8472 31.4039 6.8472ZM41.3183 15.4872C40.2383 15.4872 39.3671 15.1056 38.7047 14.3424C38.0423 13.5792 37.7111 12.5784 37.7111 11.34C37.7111 10.1016 38.0423 9.1008 38.7047 8.3376C39.3671 7.5744 40.2383 7.1928 41.3183 7.1928C42.3983 7.1928 43.2695 7.5744 43.9319 8.3376C44.6087 9.1008 44.9471 10.1016 44.9471 11.34C44.9471 12.5784 44.6087 13.5792 43.9319 14.3424C43.2695 15.1056 42.3983 15.4872 41.3183 15.4872ZM41.3183 13.9752C41.8943 13.9752 42.3479 13.7448 42.6791 13.284C43.0103 12.8088 43.1759 12.1608 43.1759 11.34C43.1759 10.5192 43.0103 9.8784 42.6791 9.4176C42.3479 8.9424 41.8943 8.7048 41.3183 8.7048C40.7423 8.7048 40.2887 8.9352 39.9575 9.396C39.6263 9.8568 39.4607 10.5048 39.4607 11.34C39.4607 12.1752 39.6263 12.8232 39.9575 13.284C40.2887 13.7448 40.7423 13.9752 41.3183 13.9752Z" fill-rule="evenodd"></path> 9311 </clipPath> 9312 </defs> 9313 <g class="cz-promo-banner__percent-solid" fill="#ffffff" fill-rule="evenodd"> 9314 <path d="M7.3656 6.4584C8.7624 6.6312 9.828 7.1064 10.5624 7.884C11.2968 8.6616 11.664 9.6336 11.664 10.8C11.664 11.6784 11.4408 12.4776 10.9944 13.1976C10.548 13.9176 9.8712 14.4936 8.964 14.9256C8.0712 15.3432 6.9768 15.552 5.6808 15.552C4.6008 15.552 3.5568 15.4008 2.5488 15.0984C1.5552 14.7816 0.7056 14.3496 0 13.8024L1.2096 11.6208C1.7568 12.0816 2.4192 12.4488 3.1968 12.7224C3.9888 12.9816 4.8024 13.1112 5.6376 13.1112C6.6312 13.1112 7.4088 12.9096 7.9704 12.5064C8.5464 12.0888 8.8344 11.5272 8.8344 10.8216C8.8344 10.116 8.5608 9.5688 8.0136 9.18C7.4808 8.7768 6.66 8.5752 5.5512 8.5752H4.1688V6.6528L7.6032 2.5704H0.7344V0.216H11.0376V2.0952L7.3656 6.4584Z"></path> 9315 <path d="M19.8079 15.552C18.5983 15.552 17.5183 15.2496 16.5679 14.6448C15.6175 14.0256 14.8687 13.1328 14.3215 11.9664C13.7743 10.7856 13.5007 9.3888 13.5007 7.776C13.5007 6.1632 13.7743 4.7736 14.3215 3.6072C14.8687 2.4264 15.6175 1.5336 16.5679 0.9288C17.5183 0.3096 18.5983 0 19.8079 0C21.0175 0 22.0975 0.3096 23.0479 0.9288C24.0127 1.5336 24.7687 2.4264 25.3159 3.6072C25.8631 4.7736 26.1367 6.1632 26.1367 7.776C26.1367 9.3888 25.8631 10.7856 25.3159 11.9664C24.7687 13.1328 24.0127 14.0256 23.0479 14.6448C22.0975 15.2496 21.0175 15.552 19.8079 15.552ZM19.8079 13.1112C20.8879 13.1112 21.7375 12.6648 22.3567 11.772C22.9903 10.8792 23.3071 9.5472 23.3071 7.776C23.3071 6.0048 22.9903 4.6728 22.3567 3.78C21.7375 2.8872 20.8879 2.4408 19.8079 2.4408C18.7423 2.4408 17.8927 2.8872 17.2591 3.78C16.6399 4.6728 16.3303 6.0048 16.3303 7.776C16.3303 9.5472 16.6399 10.8792 17.2591 11.772C17.8927 12.6648 18.7423 13.1112 19.8079 13.1112Z"></path> 9316 <path d="M31.4039 8.3592C30.3239 8.3592 29.4527 7.9776 28.7903 7.2144C28.1279 6.4512 27.7967 5.4504 27.7967 4.212C27.7967 2.9736 28.1279 1.9728 28.7903 1.2096C29.4527 0.4464 30.3239 0.0648005 31.4039 0.0648005C32.4839 0.0648005 33.3551 0.4464 34.0175 1.2096C34.6943 1.9584 35.0327 2.9592 35.0327 4.212C35.0327 5.4648 34.6943 6.4728 34.0175 7.236C33.3551 7.9848 32.4839 8.3592 31.4039 8.3592ZM40.4759 0.216H42.5927L32.2679 15.336H30.1511L40.4759 0.216ZM31.4039 6.8472C31.9943 6.8472 32.4479 6.6168 32.7647 6.156C33.0959 5.6952 33.2615 5.0472 33.2615 4.212C33.2615 3.3768 33.0959 2.7288 32.7647 2.268C32.4479 1.8072 31.9943 1.5768 31.4039 1.5768C30.8423 1.5768 30.3887 1.8144 30.0431 2.2896C29.7119 2.7504 29.5463 3.3912 29.5463 4.212C29.5463 5.0328 29.7119 5.6808 30.0431 6.156C30.3887 6.6168 30.8423 6.8472 31.4039 6.8472ZM41.3183 15.4872C40.2383 15.4872 39.3671 15.1056 38.7047 14.3424C38.0423 13.5792 37.7111 12.5784 37.7111 11.34C37.7111 10.1016 38.0423 9.1008 38.7047 8.3376C39.3671 7.5744 40.2383 7.1928 41.3183 7.1928C42.3983 7.1928 43.2695 7.5744 43.9319 8.3376C44.6087 9.1008 44.9471 10.1016 44.9471 11.34C44.9471 12.5784 44.6087 13.5792 43.9319 14.3424C43.2695 15.1056 42.3983 15.4872 41.3183 15.4872ZM41.3183 13.9752C41.8943 13.9752 42.3479 13.7448 42.6791 13.284C43.0103 12.8088 43.1759 12.1608 43.1759 11.34C43.1759 10.5192 43.0103 9.8784 42.6791 9.4176C42.3479 8.9424 41.8943 8.7048 41.3183 8.7048C40.7423 8.7048 40.2887 8.9352 39.9575 9.396C39.6263 9.8568 39.4607 10.5048 39.4607 11.34C39.4607 12.1752 39.6263 12.8232 39.9575 13.284C40.2887 13.7448 40.7423 13.9752 41.3183 13.9752Z"></path> 9317 </g> 9318 <g class="cz-promo-banner__percent-draw"> 9319 <g class="cz-promo-banner__percent-char cz-promo-banner__percent-char--3"> 9320 <g clip-path="url(#cz-promo-clip-3)"> 9321 <path class="cz-promo-banner__percent-ghost" d="M7.3656 6.4584C8.7624 6.6312 9.828 7.1064 10.5624 7.884C11.2968 8.6616 11.664 9.6336 11.664 10.8C11.664 11.6784 11.4408 12.4776 10.9944 13.1976C10.548 13.9176 9.8712 14.4936 8.964 14.9256C8.0712 15.3432 6.9768 15.552 5.6808 15.552C4.6008 15.552 3.5568 15.4008 2.5488 15.0984C1.5552 14.7816 0.7056 14.3496 0 13.8024L1.2096 11.6208C1.7568 12.0816 2.4192 12.4488 3.1968 12.7224C3.9888 12.9816 4.8024 13.1112 5.6376 13.1112C6.6312 13.1112 7.4088 12.9096 7.9704 12.5064C8.5464 12.0888 8.8344 11.5272 8.8344 10.8216C8.8344 10.116 8.5608 9.5688 8.0136 9.18C7.4808 8.7768 6.66 8.5752 5.5512 8.5752H4.1688V6.6528L7.6032 2.5704H0.7344V0.216H11.0376V2.0952L7.3656 6.4584Z"></path> 9322 <path class="cz-promo-banner__percent-scribble cz-promo-banner__percent-scribble--3" pathLength="1" d="M-1 1H13V2.6H-1V4.2H13V5.8H-1V7.4H13V9H-1V10.6H13V12.2H-1V13.8H13V15.4H-1V16"></path> 9323 <path class="cz-promo-banner__percent-fill cz-promo-banner__percent-fill--3" d="M7.3656 6.4584C8.7624 6.6312 9.828 7.1064 10.5624 7.884C11.2968 8.6616 11.664 9.6336 11.664 10.8C11.664 11.6784 11.4408 12.4776 10.9944 13.1976C10.548 13.9176 9.8712 14.4936 8.964 14.9256C8.0712 15.3432 6.9768 15.552 5.6808 15.552C4.6008 15.552 3.5568 15.4008 2.5488 15.0984C1.5552 14.7816 0.7056 14.3496 0 13.8024L1.2096 11.6208C1.7568 12.0816 2.4192 12.4488 3.1968 12.7224C3.9888 12.9816 4.8024 13.1112 5.6376 13.1112C6.6312 13.1112 7.4088 12.9096 7.9704 12.5064C8.5464 12.0888 8.8344 11.5272 8.8344 10.8216C8.8344 10.116 8.5608 9.5688 8.0136 9.18C7.4808 8.7768 6.66 8.5752 5.5512 8.5752H4.1688V6.6528L7.6032 2.5704H0.7344V0.216H11.0376V2.0952L7.3656 6.4584Z"></path> 9324 </g> 9325 </g> 9326 <g class="cz-promo-banner__percent-char cz-promo-banner__percent-char--0"> 9327 <g clip-path="url(#cz-promo-clip-0)"> 9328 <path class="cz-promo-banner__percent-ghost" d="M19.8079 15.552C18.5983 15.552 17.5183 15.2496 16.5679 14.6448C15.6175 14.0256 14.8687 13.1328 14.3215 11.9664C13.7743 10.7856 13.5007 9.3888 13.5007 7.776C13.5007 6.1632 13.7743 4.7736 14.3215 3.6072C14.8687 2.4264 15.6175 1.5336 16.5679 0.9288C17.5183 0.3096 18.5983 0 19.8079 0C21.01
932875 0 22.0975 0.3096 23.0479 0.9288C24.0127 1.5336 24.7687 2.4264 25.3159 3.6072C25.8631 4.7736 26.1367 6.1632 26.1367 7.776C26.1367 9.3888 25.8631 10.7856 25.3159 11.9664C24.7687 13.1328 24.0127 14.0256 23.0479 14.6448C22.0975 15.2496 21.0175 15.552 19.8079 15.552ZM19.8079 13.1112C20.8879 13.1112 21.7375 12.6648 22.3567 11.772C22.9903 10.8792 23.3071 9.5472 23.3071 7.776C23.3071 6.0048 22.9903 4.6728 22.3567 3.78C21.7375 2.8872 20.8879 2.4408 19.8079 2.4408C18.7423 2.4408 17.8927 2.8872 17.2591 3.78C16.6399 4.6728 16.3303 6.0048 16.3303 7.776C16.3303 9.5472 16.6399 10.8792 17.2591 11.772C17.8927 12.6648 18.7423 13.1112 19.8079 13.1112Z"></path> 9329 <path class="cz-promo-banner__percent-scribble cz-promo-banner__percent-scribble--0" pathLength="1" d="M12 1H27V2.6H12V4.2H27V5.8H12V7.4H27V9H12V10.6H27V12.2H12V13.8H27V15.4H12V16"></path> 9330 <path class="cz-promo-banner__percent-fill cz-promo-banner__percent-fill--0" d="M19.8079 15.552C18.5983 15.552 17.5183 15.2496 16.5679 14.6448C15.6175 14.0256 14.8687 13.1328 14.3215 11.9664C13.7743 10.7856 13.5007 9.3888 13.5007 7.776C13.5007 6.1632 13.7743 4.7736 14.3215 3.6072C14.8687 2.4264 15.6175 1.5336 16.5679 0.9288C17.5183 0.3096 18.5983 0 19.8079 0C21.0175 0 22.0975 0.3096 23.0479 0.9288C24.0127 1.5336 24.7687 2.4264 25.3159 3.6072C25.8631 4.7736 26.1367 6.1632 26.1367 7.776C26.1367 9.3888 25.8631 10.7856 25.3159 11.9664C24.7687 13.1328 24.0127 14.0256 23.0479 14.6448C22.0975 15.2496 21.0175 15.552 19.8079 15.552ZM19.8079 13.1112C20.8879 13.1112 21.7375 12.6648 22.3567 11.772C22.9903 10.8792 23.3071 9.5472 23.3071 7.776C23.3071 6.0048 22.9903 4.6728 22.3567 3.78C21.7375 2.8872 20.8879 2.4408 19.8079 2.4408C18.7423 2.4408 17.8927 2.8872 17.2591 3.78C16.6399 4.6728 16.3303 6.0048 16.3303 7.776C16.3303 9.5472 16.6399 10.8792 17.2591 11.772C17.8927 12.6648 18.7423 13.1112 19.8079 13.1112Z"></path> 9331 </g> 9332 </g> 9333 <g class="cz-promo-banner__percent-char cz-promo-banner__percent-char--pct"> 9334 <g clip-path="url(#cz-promo-clip-pct)"> 9335 <path class="cz-promo-banner__percent-ghost" d="M31.4039 8.3592C30.3239 8.3592 29.4527 7.9776 28.7903 7.2144C28.1279 6.4512 27.7967 5.4504 27.7967 4.212C27.7967 2.9736 28.1279 1.9728 28.7903 1.2096C29.4527 0.4464 30.3239 0.0648005 31.4039 0.0648005C32.4839 0.0648005 33.3551 0.4464 34.0175 1.2096C34.6943 1.9584 35.0327 2.9592 35.0327 4.212C35.0327 5.4648 34.6943 6.4728 34.0175 7.236C33.3551 7.9848 32.4839 8.3592 31.4039 8.3592ZM40.4759 0.216H42.5927L32.2679 15.336H30.1511L40.4759 0.216ZM31.4039 6.8472C31.9943 6.8472 32.4479 6.6168 32.7647 6.156C33.0959 5.6952 33.2615 5.0472 33.2615 4.212C33.2615 3.3768 33.0959 2.7288 32.7647 2.268C32.4479 1.8072 31.9943 1.5768 31.4039 1.5768C30.8423 1.5768 30.3887 1.8144 30.0431 2.2896C29.7119 2.7504 29.5463 3.3912 29.5463 4.212C29.5463 5.0328 29.7119 5.6808 30.0431 6.156C30.3887 6.6168 30.8423 6.8472 31.4039 6.8472ZM41.3183 15.4872C40.2383 15.4872 39.3671 15.1056 38.7047 14.3424C38.0423 13.5792 37.7111 12.5784 37.7111 11.34C37.7111 10.1016 38.0423 9.1008 38.7047 8.3376C39.3671 7.5744 40.2383 7.1928 41.3183 7.1928C42.3983 7.1928 43.2695 7.5744 43.9319 8.3376C44.6087 9.1008 44.9471 10.1016 44.9471 11.34C44.9471 12.5784 44.6087 13.5792 43.9319 14.3424C43.2695 15.1056 42.3983 15.4872 41.3183 15.4872ZM41.3183 13.9752C41.8943 13.9752 42.3479 13.7448 42.6791 13.284C43.0103 12.8088 43.1759 12.1608 43.1759 11.34C43.1759 10.5192 43.0103 9.8784 42.6791 9.4176C42.3479 8.9424 41.8943 8.7048 41.3183 8.7048C40.7423 8.7048 40.2887 8.9352 39.9575 9.396C39.6263 9.8568 39.4607 10.5048 39.4607 11.34C39.4607 12.1752 39.6263 12.8232 39.9575 13.284C40.2887 13.7448 40.7423 13.9752 41.3183 13.9752Z"></path> 9336 <path class="cz-promo-banner__percent-scribble cz-promo-banner__percent-scribble--pct" pathLength="1" d="M26 1H46V2.6H26V4.2H46V5.8H26V7.4H46V9H26V10.6H46V12.2H26V13.8H46V15.4H26V16"></path> 9337 <path class="cz-promo-banner__percent-fill cz-promo-banner__percent-fill--pct" d="M31.4039 8.3592C30.3239 8.3592 29.4527 7.9776 28.7903 7.2144C28.1279 6.4512 27.7967 5.4504 27.7967 4.212C27.7967 2.9736 28.1279 1.9728 28.7903 1.2096C29.4527 0.4464 30.3239 0.0648005 31.4039 0.0648005C32.4839 0.0648005 33.3551 0.4464 34.0175 1.2096C34.6943 1.9584 35.0327 2.9592 35.0327 4.212C35.0327 5.4648 34.6943 6.4728 34.0175 7.236C33.3551 7.9848 32.4839 8.3592 31.4039 8.3592ZM40.4759 0.216H42.5927L32.2679 15.336H30.1511L40.4759 0.216ZM31.4039 6.8472C31.9943 6.8472 32.4479 6.6168 32.7647 6.156C33.0959 5.6952 33.2615 5.0472 33.2615 4.212C33.2615 3.3768 33.0959 2.7288 32.7647 2.268C32.4479 1.8072 31.9943 1.5768 31.4039 1.5768C30.8423 1.5768 30.3887 1.8144 30.0431 2.2896C29.7119 2.7504 29.5463 3.3912 29.5463 4.212C29.5463 5.0328 29.7119 5.6808 30.0431 6.156C30.3887 6.6168 30.8423 6.8472 31.4039 6.8472ZM41.3183 15.4872C40.2383 15.4872 39.3671 15.1056 38.7047 14.3424C38.0423 13.5792 37.7111 12.5784 37.7111 11.34C37.7111 10.1016 38.0423 9.1008 38.7047 8.3376C39.3671 7.5744 40.2383 7.1928 41.3183 7.1928C42.3983 7.1928 43.2695 7.5744 43.9319 8.3376C44.6087 9.1008 44.9471 10.1016 44.9471 11.34C44.9471 12.5784 44.6087 13.5792 43.9319 14.3424C43.2695 15.1056 42.3983 15.4872 41.3183 15.4872ZM41.3183 13.9752C41.8943 13.9752 42.3479 13.7448 42.6791 13.284C43.0103 12.8088 43.1759 12.1608 43.1759 11.34C43.1759 10.5192 43.0103 9.8784 42.6791 9.4176C42.3479 8.9424 41.8943 8.7048 41.3183 8.7048C40.7423 8.7048 40.2887 8.9352 39.9575 9.396C39.6263 9.8568 39.4607 10.5048 39.4607 11.34C39.4607 12.1752 39.6263 12.8232 39.9575 13.284C40.2887 13.7448 40.7423 13.9752 41.3183 13.9752Z"></path> 9338 </g> 9339 </g> 9340 <rect class="cz-promo-banner__percent-shine" x="-6" y="0" width="6" height="16" fill="url(#cz-promo-percent-shine)" clip-path="url(#cz-promo-clip-all)"></rect> 9341 </g> 9342 </svg> 9343 </span>
9344 <span class="cz-promo-banner__text">¡30% de descuento para todos en todo!</span> 9345 <button type="button" class="cz-promo-banner__more" aria-expanded="false" aria-controls="cz-promo-banner-details"> 9346 <span data-more-label>más</span> 9347 <svg width="18" height="18" viewBox="0 0 24 24" fill="none" aria-hidden="true"> 9348 <path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/> 9349 </svg> 9350 </button> 9351 <span class="cz-promo-banner__arrow" aria-hidden="true"> 9352 <svg width="18" height="18" viewBox="0 0 24 24" fill="none"> 9353 <path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/> 9354 </svg> 9355 </span> 9356 </div> 9357 9358 <div id="cz-promo-banner-details" class="cz-promo-banner__details"> 9359 <div class="cz-promo-banner__details-clip"> 9360 <div class="cz-promo-banner__details-inner"> 9361 <p class="cz-promo-banner__intro"> 9362 ¿Pedido más grande? 9363 Compra 9364 <span class="cz-promo-banner__intro-accent">con descuento por volumen:</span> 9365 </p> 9366 9367 <div class="cz-promo-banner__tiers"> 9368 <div class="cz-promo-banner__tier"> 9369 <span class="cz-promo-banner__tier-pct" data-count="10">10%</span> 9370 <span class="cz-promo-banner__tier-over">más de 400 â¬</span> 9371 </div> 9372 <span class="cz-promo-banner__tier-dash" aria-hidden="true"></span> 9373 <div class="cz-promo-banner__tier"> 9374 <span class="cz-promo-banner__tier-pct" data-count="20">20%</span> 9375 <span class="cz-promo-banner__tier-over">más de 800 â¬</span> 9376 </div> 9377 <span class="cz-promo-banner__tier-dash" aria-hidden="true"></span> 9378 <div class="cz-promo-banner__tier"> 9379 <span class="cz-promo-banner__tier-pct" data-count="30">30%</span> 9380 <span class="cz-promo-banner__tier-over">más de 1 200 â¬</span> 9381 </div> 9382 </div> 9383 9384 <p class="cz-promo-banner__note"> 9385 <span>No hace falta ningún código, el descuento se calcula automáticamente.</span> 9386 <span>Aplica a todo, incluidos los productos rebajados y el outlet.</span> 9387 </p> 9388 9389 <div class="cz-promo-banner__footnotes"> 9390 <p class="cz-promo-banner__footnote"> 9391 <svg class="cz-promo-banner__footnote-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"> 9392 <circle cx="12" cy="8" r="3.2" stroke="currentColor" stroke-width="1.75"/> 9393 <path d="M5 19c.8-3.2 3.2-5 7-5s6.2 1.8 7 5" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/> 9394 </svg> 9395 <span>Solo para clientes finales</span> 9396 </p> 9397 9398 <div class="cz-promo-banner__footnote cz-promo-banner__disclaimer"> 9399 <button 9400 type="button" 9401 class="cz-promo-banner__disclaimer-trigger" 9402 aria-expanded="false" 9403 aria-controls="cz-promo-disclaimer-tip" 9404 aria-describedby="cz-promo-disclaimer-tip" 9405 > 9406 <svg class="cz-promo-banner__footnote-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"> 9407 <path d="M12 4l9 16H3L12 4z" stroke="currentColor" stroke-width="1.75" stroke-linejoin="round"/> 9408 <path d="M12 10v5M12 17.5h.01" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/> 9409 </svg> 9410 <span>Nota en caso de devolución parcial...</span> 9411 </button> 9412 <div id="cz-promo-disclaimer-tip" class="cz-promo-banner__tooltip" role="tooltip"> 9413 <p class="cz-promo-banner__tooltip-text">Una devolución parcial recalcula el descuento y afecta al importe reembolsado.</p> 9414 <a href="/pages/terms-conditions#volume-discounts-partial-withdrawal" class="cz-promo-banner__tooltip-more">Más...</a> 9415 </div> 9416 </div> 9417 </div> 9418 </div> 9419 </div> 9420 </div> 9421 </div> 9422 9423 <style> 9424 .cz-promo-banner { 9425 width: 100%; 9426 max-width: 1100px; 9427 margin: 0 auto; 9428 box-sizing: border-box; 9429 position: relative; 9430 z-index: 99; 9431 font-family: Montserrat, sans-serif; 9432 font-weight: 400; 9433 cursor: pointer; 9434 transition: box-shadow 200ms ease, outline-color 200ms ease; 9435 } 9436 9437 .cz-promo-banner.is-expanded { 9438 outline: 1px solid #f84200; 9439 box-shadow: 0 8px 28px rgba(17, 17, 17, 0.1); 9440 } 9441 9442 .cz-promo-banner__bar { 9443 display: grid; 9444 grid-template-columns: auto minmax(0, 1fr) auto; 9445 align-items: center; 9446 min-height: 52px; 9447 padding: 0 0 0 24px; 9448 background: #f84200; 9449 color: #ffffff; 9450 box-sizing: border-box; 9451 transition: background-color 200ms ease, color 200ms ease; 9452 } 9453 9454 .cz-promo-banner.is-expanded .cz-promo-banner__bar { 9455 grid-template-columns: 1fr auto 1fr; 9456 padding: 0; 9457 background: #ffffff; 9458 color: #111111; 9459 } 9460 9461 .cz-promo-banner__percent { 9462 grid-column: 1; 9463 grid-row: 1; 9464 z-index: 1; 9465 display: block; 9466 line-height: 0; 9467 } 9468 9469 .cz-promo-banner.is-expanded .cz-promo-banner__percent { 9470 display: none; 9471 } 9472 9473 .cz-promo-banner__percent-mark { 9474 display: block; 9475 width: 67.5px; 9476 height: 24px; 9477 overflow: visible; 9478 contain: layout style; 9479 pointer-events: none; 9480 } 9481 9482 .cz-promo-banner__percent-solid, 9483 .cz-promo-banner__percent-ghost, 9484 .cz-promo-banner__percent-fill { 9485 fill: #ffffff; 9486 fill-rule: evenodd; 9487 } 9488 9489 .cz-promo-banner__percent-solid { 9490 opacity: 1; 9491 } 9492 9493 .cz-promo-banner.is-animating .cz-promo-banner__percent-solid { 9494 opacity: 0; 9495 } 9496 9497 .cz-promo-banner__percent-draw { 9498 opacity: 0; 9499 } 9500 9501 .cz-promo-banner.is-animating .cz-promo-banner__percent-draw { 9502 opacity: 1; 9503 animation: cz-promo-percent-leave 2.2s ease-in-out infinite; 9504 } 9505 9506 .cz-promo-banner__percent-char { 9507 transform-box: fill-box; 9508 transform-origin: center; 9509 } 9510 9511 .cz-promo-banner.is-animating .cz-promo-banner__percent-char--3 { 9512 animation: cz-promo-percent-pop 2.2s cubic-bezier(0.34, 1.3, 0.64, 1) infinite; 9513 } 9514 9515 .cz-promo-banner.is-animating .cz-promo-banner__percent-char--0 { 9516 animation: cz-promo-percent-pop 2.2s cubic-bezier(0.34, 1.3, 0.64, 1) 0.1s infinite; 9517 } 9518 9519 .cz-promo-banner.is-animating .cz-promo-banner__percent-char--pct { 9520 animation: cz-promo-percent-pop 2.2s cubic-bezier(0.34, 1.3, 0.64, 1) 0.2s infinite; 9521 } 9522 9523 .cz-promo-banner__percent-ghost { 9524 fill: rgba(255, 255, 255, 0.2); 9525 } 9526 9527 .cz-promo-banner__percent-scribble { 9528 fill: none; 9529 stroke: #ffffff; 9530 stroke-width: 1.8; 9531 stroke-linejoin: miter; 9532 stroke-dasharray: 1; 9533 stroke-dashoffset: 1; 9534 } 9535 9536 .cz-promo-banner__percent-fill { 9537 opacity: 0; 9538 } 9539 9540 .cz-promo-banner.is-animating .cz-promo-banner__percent-scribble--3 { 9541 animation: cz-promo-percent-write 2.2s cubic-bezier(0.45, 0.05, 0.15, 1) infinite; 9542 } 9543 9544 .cz-promo-banner.is-animating .cz-promo-banner__percent-scribble--0 { 9545 animation: cz-promo-percent-write 2.2s cubic-bezier(0.45, 0.05, 0.15, 1) 0.1s infinite; 9546 } 9547 9548 .cz-promo-banner.is-animating .cz-promo-banner__percent-scribble--pct { 9549 animation: cz-promo-percent-write 2.2s cubic-bezier(0.45, 0.05, 0.15, 1) 0.2s infinite; 9550 } 9551 9552 .cz-promo-banner.is-animating .cz-promo-banner__percent-fill--3 { 9553 animation: cz-promo-percent-fill 2.2s ease-out infinite; 9554 } 9555 9556 .cz-promo-banner.is-animating .cz-promo-banner__percent-fill--0 { 9557 animation: cz-promo-percent-fill 2.2s ease-out 0.1s infinite; 9558 } 9559 9560 .cz-promo-banner.is-animating .cz-promo-banner__percent-fill--pct { 9561 animation: cz-promo-percent-fill 2.2s ease-out 0.2s infinite; 9562 } 9563 9564 .cz-promo-banner__percent-shine { 9565 opacity: 0; 9566 transform: translateX(0); 9567 } 9568 9569 .cz-promo-banner.is-animating .cz-promo-banner__percent-shine { 9570 animation: cz-promo-percent-shine 2.2s ease-in-out infinite; 9571 } 9572
9573 @keyframes cz-promo-percent-write { 9574 0% { stroke-dashoffset: 1; } 9575 14% { stroke-dashoffset: 0; } 9576 72% { stroke-dashoffset: 0; } 9577 72.01% { stroke-dashoffset: 1; } 9578 100% { stroke-dashoffset: 1; } 9579 } 9580 9581 @keyframes cz-promo-percent-fill { 9582 0%, 10% { opacity: 0; } 9583 18%, 72% { opacity: 1; } 9584 72.01%, 100% { opacity: 0; } 9585 } 9586 9587 @keyframes cz-promo-percent-pop { 9588 0%, 12% { transform: scale(1); } 9589 16% { transform: scale(1.06); } 9590 22% { transform: scale(1); } 9591 } 9592 9593 @keyframes cz-promo-percent-shine { 9594 0%, 28% { transform: translateX(0); opacity: 0; } 9595 36% { opacity: 0.9; } 9596 50% { transform: translateX(52px); opacity: 0; } 9597 100% { transform: translateX(52px); opacity: 0; } 9598 } 9599 9600 @keyframes cz-promo-percent-leave { 9601 0%, 72% { opacity: 1; } 9602 86% { opacity: 0; } 9603 100% { opacity: 0; } 9604 } 9605 9606 .cz-promo-banner__text { 9607 grid-column: 2; 9608 grid-row: 1; 9609 justify-self: start; 9610 padding: 0 20px; 9611 font-size: 24px; 9612 line-height: 1.2; 9613 font-weight: 400; 9614 text-align: left; 9615 white-space: nowrap; 9616 transform: translateX(0); 9617 color: inherit; 9618 transition: transform 320ms cubic-bezier(0.4, 0, 0.2, 1), color 200ms ease; 9619 } 9620 9621 .cz-promo-banner.is-expanded .cz-promo-banner__text { 9622 grid-column: 2; 9623 justify-self: center; 9624 padding: 0; 9625 text-align: center; 9626 color: #111111; 9627 transform: none !important; 9628 } 9629 9630 .cz-promo-banner.is-expanded .cz-promo-banner__more { 9631 grid-column: 3; 9632 justify-self: end; 9633 } 9634 9635 .cz-promo-banner__more { 9636 grid-column: 3; 9637 grid-row: 1; 9638 z-index: 1; 9639 display: inline-flex; 9640 align-items: center; 9641 justify-content: center; 9642 gap: 8px; 9643 align-self: stretch; 9644 margin: 0; 9645 padding: 0 24px; 9646 border: 1px solid #f84200; 9647 background: #ffffff; 9648 color: #f84200; 9649 font-family: inherit; 9650 font-size: 18px; 9651 font-weight: 500; 9652 line-height: 1; 9653 cursor: pointer; 9654 transition: background-color 160ms ease, color 160ms ease, border-color 160ms ease; 9655 } 9656 9657 .cz-promo-banner__more:hover { 9658 background: #fff4ef; 9659 } 9660 9661 .cz-promo-banner.is-expanded .cz-promo-banner__more { 9662 background: transparent; 9663 color: #111111; 9664 border-color: transparent; 9665 } 9666 9667 .cz-promo-banner.is-expanded .cz-promo-banner__more:hover { 9668 background: transparent; 9669 color: #111111; 9670 opacity: 0.7; 9671 } 9672 9673 .cz-promo-banner__more svg { 9674 display: block; 9675 width: 18px; 9676 height: 18px; 9677 transition: transform 200ms ease; 9678 } 9679 9680 .cz-promo-banner.is-expanded .cz-promo-banner__more svg { 9681 transform: rotate(180deg); 9682 } 9683 9684 .cz-promo-banner__arrow { 9685 display: none; 9686 color: inherit; 9687 pointer-events: none; 9688 } 9689 9690 .cz-promo-banner.is-expanded .cz-promo-banner__arrow { 9691 color: #111111; 9692 } 9693 9694 .cz-promo-banner__arrow svg { 9695 display: block; 9696 transition: transform 200ms ease; 9697 } 9698 9699 .cz-promo-banner.is-expanded .cz-promo-banner__arrow svg { 9700 transform: rotate(180deg); 9701 } 9702 9703 .cz-promo-banner__details { 9704 display: grid; 9705 grid-template-rows: 0fr; 9706 background: #f84200; 9707 color: #ffffff; 9708 transition: grid-template-rows 320ms cubic-bezier(0.4, 0, 0.2, 1); 9709 } 9710 9711 .cz-promo-banner.is-expanded .cz-promo-banner__details { 9712 grid-template-rows: 1fr; 9713 } 9714 9715 .cz-promo-banner__details-clip { 9716 min-height: 0; 9717 overflow: hidden; 9718 } 9719 9720 .cz-promo-banner.is-expanded .cz-promo-banner__details-clip.is-open { 9721 overflow: visible; 9722 } 9723 9724 .cz-promo-banner__details-inner { 9725 padding: 36px 40px 32px; 9726 box-sizing: border-box; 9727 } 9728 9729 @keyframes cz-promo-fade-up { 9730 from { 9731 opacity: 0; 9732 transform: translateY(12px); 9733 } 9734 to { 9735 opacity: 1; 9736 transform: translateY(0); 9737 } 9738 } 9739 9740 .cz-promo-banner.is-expanded .cz-promo-banner__intro, 9741 .cz-promo-banner.is-expanded .cz-promo-banner__tier, 9742 .cz-promo-banner.is-expanded .cz-promo-banner__tier-dash, 9743 .cz-promo-banner.is-expanded .cz-promo-banner__note, 9744 .cz-promo-banner.is-expanded .cz-promo-banner__footnotes { 9745 animation: cz-promo-fade-up 360ms cubic-bezier(0.4, 0, 0.2, 1) both; 9746 } 9747 9748 .cz-promo-banner.is-expanded .cz-promo-banner__intro { 9749 animation-delay: 40ms; 9750 } 9751 9752 .cz-promo-banner.is-expanded .cz-promo-banner__tier:nth-child(1) { 9753 animation-delay: 90ms; 9754 } 9755 9756 .cz-promo-banner.is-expanded .cz-promo-banner__tier-dash:nth-child(2) { 9757 animation-delay: 120ms; 9758 } 9759 9760 .cz-promo-banner.is-expanded .cz-promo-banner__tier:nth-child(3) { 9761 animation-delay: 150ms; 9762 } 9763 9764 .cz-promo-banner.is-expanded .cz-promo-banner__tier-dash:nth-child(4) { 9765 animation-delay: 180ms; 9766 } 9767 9768 .cz-promo-banner.is-expanded .cz-promo-banner__tier:nth-child(5) { 9769 animation-delay: 210ms; 9770 } 9771 9772 .cz-promo-banner.is-expanded .cz-promo-banner__note { 9773 animation-delay: 280ms; 9774 } 9775 9776 .cz-promo-banner.is-expanded .cz-promo-banner__footnotes { 9777 animation-delay: 340ms; 9778 } 9779 9780 .cz-promo-banner__intro { 9781 margin: 0 0 36px; 9782 font-size: 20px; 9783 line-height: 1.4; 9784 font-weight: 500; 9785 text-align: center; 9786 color: #ffffff; 9787 } 9788 9789 .cz-promo-banner__intro-accent { 9790 color: #ffffff; 9791 } 9792 9793 .cz-promo-banner__tiers { 9794 display: flex; 9795 align-items: center; 9796 justify-content: center; 9797 gap: 0; 9798 } 9799 9800 .cz-promo-banner__tier { 9801 position: relative; 9802 box-sizing: border-box; 9803 padding: 30px 40px; 9804 border: 0; 9805 color: #ffffff; 9806 text-align: left; 9807 } 9808 9809 .cz-promo-banner__tier-pct { 9810 display: block; 9811 font-size: 80px; 9812 line-height: 1; 9813 font-weight: 400; 9814 text-align: center; 9815 } 9816 9817 .cz-promo-banner__tier-over { 9818 display: block; 9819 margin-top: 10px; 9820 font-size: 18px; 9821 line-height: 1.3; 9822 font-weight: 500; 9823 text-align: center; 9824 } 9825 9826 .cz-promo-banner__tier-dash { 9827 width: 1px; 9828 height: 100px; 9829 align-self: center; 9830 margin: 0; 9831 background: #ffffff; 9832 } 9833 9834 .cz-promo-banner__note { 9835 display: table; 9836 box-sizing: border-box; 9837 width: auto; 9838 max-width: 100%; 9839 margin: 36px auto 0; 9840 padding: 10px 20px; 9841 font-size: 20px; 9842 line-height: 1.4; 9843 font-weight: 500; 9844 text-align: center; 9845 color: #ffffff; 9846 } 9847 9848 .cz-promo-banner__note span { 9849 display: block; 9850 } 9851 9852 .cz-promo-banner__footnotes { 9853 display: flex; 9854 justify-content: space-between; 9855 gap: 24px; 9856 margin-top: 40px; 9857 } 9858 9859 .cz-promo-banner__footnote { 9860 display: inline-flex; 9861 align-items: center; 9862 gap: 8px; 9863 margin: 0; 9864 color: rgba(255, 255, 255, 0.88); 9865 font-size: 14px; 9866 line-height: 1.3; 9867 font-weight: 400; 9868 } 9869 9870 .cz-promo-banner__footnote-icon { 9871 display: block; 9872 flex-shrink: 0; 9873 width: 16px; 9874 height: 16px; 9875 } 9876 9877 .cz-promo-banner__disclaimer { 9878 position: relative; 9879 } 9880 9881 .cz-promo-banner__disclaimer-trigger { 9882 display: inline-flex; 9883 align-items: center; 9884 gap: 8px; 9885 margin: 0; 9886 padding: 0; 9887 border: 0; 9888 background: none; 9889 color: inherit; 9890 font: inherit; 9891 cursor: pointer; 9892 text-align: left; 9893 transition: color 160ms ease; 9894 } 9895 9896 .cz-promo-banner__disclaimer-trigger:hover { 9897 color: #ffffff; 9898 opacity: 0.75; 9899 } 9900 9901 .cz-promo-banner__tooltip { 9902 position: absolute; 9903 right: 0; 9904 bottom: calc(100% + 8px); 9905 width: min(280px, calc(100vw - 32px)); 9906 padding: 12px 14px; 9907 background: #ffffff; 9908 color: #1a1a1a; 9909 font-size: 12px; 9910 font-weight: 400; 9911 line-height: 1.4; 9912 text-align: left; 9913 outline: 1px solid #d8d8d8; 9914 opacity: 0; 9915 visibility: hidden; 9916 pointer-events: none; 9917 transform: translateY(4px); 9918 transition: opacity 160ms ease, visibility 160ms ease, transform 160ms ease; 9919 z-index: 5; 9920 } 9921 9922 .cz-promo-banner__tooltip::after { 9923 content: ''; 9924 position: absolute; 9925 left: 0; 9926 right: 0; 9927 top: 100%; 9928 height: 10px; 9929 } 9930 9931 .cz-promo-banner__disclaimer:hover .cz-promo-banner__tooltip, 9932 .cz-promo-banner__disclaimer:focus-within .cz-promo-banner__tooltip, 9933 .cz-promo-banner__disclaimer.is-open .cz-promo-banner__tooltip { 9934 opacity: 1; 9935 visibility: visible; 9936 pointer-events: auto; 9937 transform: translateY(0); 9938 } 9939 9940 .cz-promo-banner__tooltip-text { 9941 margin: 0 0 8px; 9942 } 9943 9944 .cz-promo-banner__tooltip-more { 9945 color: #f84200; 9946 text-decoration: underline; 9947 text-underline-offset: 2px; 9948 font-weight: 400; 9949 transition: opacity 160ms ease; 9950 } 9951 9952 .cz-promo-banner__tooltip-more:hover { 9953 opacity: 0.7; 9954 } 9955 9956 @media (max-width: 900px) { 9957 .cz-promo-banner { 9958 max-width: calc(100% - 3rem); 9959 width: calc(100% - 3rem); 9960 margin-left: 1.5rem; 9961 margin-right: 1.5rem; 9962 } 9963 9964 .cz-promo-banner__bar, 9965 .cz-promo-banner.is-expanded .cz-promo-banner__bar { 9966 grid-template-columns: minmax(0, 1fr) auto; 9967 min-height: 48px; 9968 padding: 0 14px 0 16px; 9969 } 9970 9971 .cz-promo-banner__percent, 9972 .cz-promo-banner__more { 9973 display: none; 9974 } 9975 9976 .cz-promo-banner__arrow { 9977 display: flex; 9978 align-items: center; 9979 justify-content: center; 9980 grid-column: 2; 9981 grid-row: 1; 9982 } 9983 9984 .cz-promo-banner__text, 9985 .cz-promo-banner.is-expanded .cz-promo-banner__text { 9986 grid-column: 1; 9987 justify-self: start; 9988 padding: 0 10px 0 0; 9989 font-size: 15px; 9990 text-align: left; 9991 white-space: normal; 9992 transform: none !important; 9993 } 9994 9995 .cz-promo-banner__details-inner { 9996 padding: 28px 16px 24px; 9997 } 9998 9999 .cz-promo-banner__intro { 10000 margin-bottom: 28px; 10001 font-size: 16px; 10002 } 10003 10004 .cz-promo-banner__tiers { 10005 flex-direction: column; 10006 gap: 14px; 10007 } 10008 10009 .cz-promo-banner__tier-dash { 10010 display: none; 10011 } 10012 10013 .cz-promo-banner__tier { 10014 width: 100%; 10015 padding: 30px; 10016 } 10017 10018 .cz-promo-banner__note { 10019 margin-top: 28px; 10020 font-size: 13px; 10021 } 10022 10023 .cz-promo-banner__footnotes { 10024 flex-direction: column; 10025 align-items: flex-start; 10026 gap: 12px; 10027 margin-top: 28px; 10028 } 10029 10030 .cz-promo-banner__tooltip { 10031 right: auto; 10032 left: 0; 10033 } 10034 } 10035 10036 @media (prefers-reduced-motion: reduce) { 10037 .cz-promo-banner, 10038 .cz-promo-banner__text, 10039 .cz-promo-banner__details, 10040 .cz-promo-banner__more, 10041 .cz-promo-banner__more svg, 10042 .cz-promo-banner__arrow svg, 10043 .cz-promo-banner__tooltip { 10044 transition: none; 10045 } 10046 10047 .cz-promo-banner.is-expanded .cz-promo-banner__intro, 10048 .cz-promo-banner.is-expanded .cz-promo-banner__tier, 10049 .cz-promo-banner.is-expanded .cz-promo-banner__tier-dash, 10050 .cz-promo-banner.is-expanded .cz-promo-banner__note, 10051 .cz-promo-banner.is-expanded .cz-promo-banner__footnotes, 10052 .cz-promo-banner__percent-draw, 10053 .cz-promo-banner__percent-scribble, 10054 .cz-promo-banner__percent-fill, 10055 .cz-promo-banner__percent-char, 10056 .cz-promo-banner__percent-shine { 10057 animation: none; 10058 } 10059 10060 .cz-promo-banner__percent-draw { 10061 opacity: 0; 10062 } 10063 10064 .cz-promo-banner__percent-solid { 10065 opacity: 1; 10066 transform: none; 10067 } 10068 } 10069 </style> 10070 10071
10071<script> 10072 (function () { 10073 var banner = document.getElementById('cz-promo-banner'); 10074 if (!banner) return; 10075 10076 var moreButtons = banner.querySelectorAll('.cz-promo-banner__more'); 10077 var details = document.getElementById('cz-promo-banner-details'); 10078 var detailsClip = banner.querySelector('.cz-promo-banner__details-clip'); 10079 var titleEl = banner.querySelector('.cz-promo-banner__text'); 10080 var barEl = banner.querySelector('.cz-promo-banner__bar'); 10081 var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; 10082 var titleTimer; 10083 var percentVisible = false; 10084 var resizeTick = 0; 10085 10086 function setPercentAnimating(on) { 10087 banner.classList.toggle('is-animating', !!on && !banner.classList.contains('is-expanded')); 10088 } 10089 10090 function syncPercentLoop() { 10091 if (reduceMotion || prefersMobile() || document.hidden || !percentVisible) { 10092 setPercentAnimating(false); 10093 return; 10094 } 10095 setPercentAnimating(true); 10096 } 10097 10098 function prefersMobile() { 10099 return window.matchMedia('(max-width: 900px)').matches; 10100 } 10101 10102 function shiftTitle(expanded) { 10103 if (!titleEl || !barEl) return; 10104 titleEl.style.transform = ''; 10105 } 10106 10107 function countUp(el, to) { 10108 if (reduceMotion) { 10109 el.textContent = to + '%'; 10110 return; 10111 } 10112 var duration = 700; 10113 var start = performance.now(); 10114 function tick(now) { 10115 var p = Math.min(1, (now - start) / duration); 10116 var eased = 1 - Math.pow(1 - p, 3); 10117 el.textContent = Math.round(to * eased) + '%'; 10118 if (p < 1) window.requestAnimationFrame(tick); 10119 } 10120 window.requestAnimationFrame(tick); 10121 } 10122 10123 function playCounts() { 10124 banner.querySelectorAll('[data-count]').forEach(function (el) { 10125 countUp(el, parseInt(el.getAttribute('data-count'), 10) || 0); 10126 }); 10127 } 10128 10129 function resetCounts() { 10130 banner.querySelectorAll('[data-count]').forEach(function (el) { 10131 el.textContent = (el.getAttribute('data-count') || '0') + '%'; 10132 }); 10133 } 10134 10135 function setExpanded(expanded) { 10136 banner.classList.toggle('is-expanded', expanded); 10137 moreButtons.forEach(function (btn) { 10138 btn.setAttribute('aria-expanded', expanded ? 'true' : 'false'); 10139 var label = btn.querySelector('[data-more-label]'); 10140 if (label) { 10141 label.textContent = expanded 10142 ? (banner.dataset.labelLess || 'less') 10143 : (banner.dataset.labelMore || 'more'); 10144 } 10145 }); 10146 window.clearTimeout(titleTimer); 10147 if (detailsClip) detailsClip.classList.toggle('is-open', false); 10148 if (expanded) { 10149 setPercentAnimating(false); 10150 shiftTitle(true); 10151 playCounts(); 10152 titleTimer = window.setTimeout(function () { 10153 if (banner.classList.contains('is-expanded') && detailsClip) { 10154 detailsClip.classList.add('is-open'); 10155 } 10156 }, 320); 10157 } else { 10158 shiftTitle(false); 10159 resetCounts(); 10160 syncPercentLoop(); 10161 } 10162 } 10163 10164 var disclaimer = banner.querySelector('.cz-promo-banner__disclaimer'); 10165 var disclaimerTrigger = banner.querySelector('.cz-promo-banner__disclaimer-trigger'); 10166 10167 function setDisclaimerOpen(open) { 10168 if (!disclaimer || !disclaimerTrigger) return; 10169 disclaimer.classList.toggle('is-open', open); 10170 disclaimerTrigger.setAttribute('aria-expanded', open ? 'true' : 'false'); 10171 } 10172 10173 if (disclaimerTrigger) { 10174 disclaimerTrigger.addEventListener('click', function (event) { 10175 event.stopPropagation(); 10176 setDisclaimerOpen(!disclaimer.classList.contains('is-open')); 10177 }); 10178 } 10179 10180 document.addEventListener('click', function (event) { 10181 if (disclaimer && !disclaimer.contains(event.target)) { 10182 setDisclaimerOpen(false); 10183 } 10184 }); 10185 10186 document.addEventListener('keydown', function (event) { 10187 if (event.key === 'Escape') setDisclaimerOpen(false); 10188 }); 10189 10190 banner.addEventListener('click', function (event) { 10191 if (event.target.closest('a, .cz-promo-banner__disclaimer')) return; 10192 setExpanded(!banner.classList.contains('is-expanded')); 10193 }); 10194 10195 window.addEventListener('resize', function () { 10196 if (resizeTick) return; 10197 resizeTick = window.requestAnimationFrame(function () { 10198 resizeTick = 0; 10199 if (banner.classList.contains('is-expanded')) shiftTitle(true); 10200 syncPercentLoop(); 10201 }); 10202 }); 10203 10204 document.addEventListener('visibilitychange', syncPercentLoop); 10205 10206 if ('IntersectionObserver' in window) { 10207 var io = new IntersectionObserver(function (entries) { 10208 percentVisible = entries.some(function (entry) { return entry.isIntersecting; }); 10209 syncPercentLoop(); 10210 }, { threshold: 0.2 }); 10211 io.observe(banner); 10212 } else { 10213 percentVisible = true; 10214 syncPercentLoop(); 10215 } 10216 })(); 10217 </script>
10217 10218 </div> 10219</div> 10220 10221 10222</section> 10223<!-- END sections: header-group --> 10224 10225 <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1"> 10226 <div id="shopify-section-template--28113427169578__collection_breadcrumbs_hFY3t9" class="shopify-section"> 10227<div class="collection-breadcrumbs-section"> 10228 <nav class="collection-breadcrumbs" aria-label="Breadcrumb" id="collection-breadcrumbs-nav" 10229 data-collection-handle="garden-post-light" 10230 data-collection-title="Postes de jardÃn"> 10231 <a href="/" class="collection-breadcrumbs__home-link"> 10232 10233 <img 10234 src="//rendl.es/cdn/shop/files/rendl-home-icon.svg?crop=center&height=24&v=1765275870&width=24" 10235 alt="Home" 10236 width="24" 10237 height="24" 10238 class="collection-breadcrumbs__home-icon" 10239 > 10240 10241 </a> 10242 10243 </nav> 10244</div> 10245 10246 10247<style> 10248.collection-breadcrumbs-section { 10249 max-width: 1100px; 10250 margin: 0 auto; 10251 padding: 20px 20px 20px 20px; 10252} 10253.collection-breadcrumbs { 10254 font-size: 15px; 10255 color: #888888; 10256 display: flex; 10257 align-items: center; 10258 flex-wrap: wrap; 10259 gap: 4px; 10260} 10261.collection-breadcrumbs a { 10262 color: #353535; 10263 text-decoration: none; 10264 transition: color 0.2s; 10265 display: flex; 10266 align-items: center; 10267} 10268.collection-breadcrumbs a:hover { 10269 color: #191919; 10270 text-decoration: underline; 10271} 10272.collection-breadcrumbs__home-link { 10273 display: flex; 10274 align-items: center; 10275} 10276.collection-breadcrumbs__home-link:hover { 10277 text-decoration: none; 10278} 10279.collection-breadcrumbs__home-icon { 10280 width: 24px; 10281 height: 24px; 10282 display: block; 10283 object-fit: contain; 10284 transition: opacity 0.2s; 10285} 10286.collection-breadcrumbs__home-link:hover .collection-breadcrumbs__home-icon { 10287 opacity: 0.4; 10288} 10289.collection-breadcrumbs__divider { 10290 color: #bbbbbb; 10291 margin: 0 6px; 10292 font-size: 15px; 10293 white-space: nowrap; 10294} 10295.collection-breadcrumbs__current { 10296 white-space: nowrap; 10297} 10298.collection-breadcrumbs__link { 10299 white-space: nowrap; 10300} 10301</style> 10302
10303<script> 10304(function() { 10305 'use strict'; 10306 10307 // Translations from locales (passed from Liquid) 10308 const translations = { 10309 // Interior categories 10310 'bathroom_lights': "Iluminación de baño", 10311 'office_lights': "Iluminación de oficina", 10312 'kitchen_lights': "Iluminación de cocina", 10313 'living_room_lights': "Iluminación de salón", 10314 'bedroom_lights': "Iluminación de dormitorio", 10315 'kids_lights': "Iluminación infantil", 10316 'luxury_lights': "Iluminación de lujo", 10317 'staircase_lights': "Iluminación de escaleras", 10318 'hallway_lights': "Iluminación de pasillo", 10319 'industrial_lights': "Iluminación industrial", 10320 'industrial_style_lights': "Estilo industrial", 10321 'cellar_lights': "Iluminación de sótano", 10322 'garage_lights': "Iluminación de garaje", 10323 // Outdoor categories 10324 'outdoor_lights': "Iluminación exterior", 10325 'outdoor_wall': "Lámparas de pared", 10326 'outdoor_ceiling': "Lámparas de techo", 10327 'outdoor_recessed': "En techo", 10328 'outdoor_pendant': "Lámparas colgantes", 10329 'outdoor_path': "Iluminación de senderos", 10330 'garden_posts': "Bolos de jardÃn", 10331 'outdoor_spike': "Luz de piquete", 10332 // Systems 10333 'track_1f': "Sistemas de carril monofásico", 10334 'track_3f': "Sistemas de carril trifásico", 10335 'led_strips': "Tiras LED", 10336 'ultra_thin': "Sistema ultra fino", 10337 'wave_system': "Sistema de banda WAVE", 10338 // By type (dle typu) 10339 'ceiling_lights': "Lámparas de techo", 10340 'recessed_lights': "Luminarias empotrables", 10341 'wall_lights': "Lámparas de pared", 10342 'pendant_lights': "Lámparas colgantes", 10343 'floor_lamps': "Lámparas de pie", 10344 'table_lamps': "Lámparas de mesa", 10345 'spotlights': "Focos", 10346 'light_sources': "Fuentes de luz", 10347 // By material (dle materiálu) 10348 'plaster_lights': "Iluminación de yeso", 10349 'glass_lights': "Iluminación de cristal", 10350 'wood_lights': "Iluminación de madera", 10351 'concrete_lights': "Iluminación de hormigón", 10352 'metal_lights': "Iluminación metálica", 10353 'copper_lights': "Iluminación de cobre", 10354 'ceramic_lights': "Iluminación cerámica" 10355 }; 10356 10357 // Menu structure mapping based on main-mega-menu-rendl.liquid structure 10358 // Format: 'collection-handle': { parent: 'parent-collection-handle', parentTitleKey: 'translation_key' } 10359 const menuStructure = { 10360 // === INTERIOR LIGHTS (Interiérová svÄtla) === 10361 'bathroom-lighting': { parent: 'interior', parentTitleKey: 'bathroom_lights' }, 10362 'above-mirror-lights': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10363 'besides-mirror-light': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10364 'bathroom-ceiling-light': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10365 'bathroom-wall-light': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10366 'bathroom-spotlights': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10367 'recessed-bathroom-spotlights': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10368 'recessed-bathroom-led-spotlights': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10369 'bathroom-pendant-lights': { parent: 'bathroom-lighting', parentTitleKey: 'bathroom_lights' }, 10370 10371 'office-lighting': { parent: 'interior', parentTitleKey: 'office_lights' }, 10372 'office-pendant-lights': { parent: 'office-lighting', parentTitleKey: 'office_lights' }, 10373 'office-ceiling-lights': { parent: 'office-lighting', parentTitleKey: 'office_lights' }, 10374 'office-lamps': { parent: 'office-lighting', parentTitleKey: 'office_lights' }, 10375 10376 'kitchen': { parent: 'interior', parentTitleKey: 'kitchen_lights' }, 10377 'kitchen-ceiling-lights': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10378 'led-under-cabinet-kitchen-lights': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10379 'under-cabinet-light-with-switch': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10380 'kitchen-counter-lighting': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10381 'modern-kitchen-chandeliers': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10382 'led-kitchen-lights': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10383 'dining-table-lighting': { parent: 'kitchen', parentTitleKey: 'kitchen_lights' }, 10384 10385 'living-room-lighting': { parent: 'interior', parentTitleKey: 'living_room_lights' }, 10386 'living-room-ceiling-lights': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10387 'modern-living-room-chandeliers': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10388 'living-room-table-lamp': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10389 'living-room-floor-lamps': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10390 'living-room-wall-light': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10391 'living-room-wall-led-lighting': { parent: 'living-room-lighting', parentTitleKey: 'living_room_lights' }, 10392 10393 'bedroom-lighting': { parent: 'interior', parentTitleKey: 'bedroom_lights' }, 10394 'bedroom-ceiling-light': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10395 'bedroom-chandelier': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10396 'bedroom-wall-sconce': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10397 'bedroom-table-lamp': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10398 'bedroom-lamps': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10399 'bedside-lamps': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10400 'gooseneck-lamps': { parent: 'bedroom-lighting', parentTitleKey: 'bedroom_lights' }, 10401 10402 'lights-for-kids-rooms': { parent: 'interior', parentTitleKey: 'kids_lights' }, 10403 'childrens-ceiling-lights': { parent: 'lights-for-kids-rooms', parentTitleKey: 'kids_lights' }, 10404 'childrens-wall-light': { parent: 'lights-for-kids-rooms', parentTitleKey: 'kids_lights' }, 10405 'childrens-floor-lamp': { parent: 'lights-for-kids-rooms', parentTitleKey: 'kids_lights' }, 10406 'childrens-table-lamp': { parent: 'lights-for-kids-rooms', parentTitleKey: 'kids_lights' }, 10407 'kids-room-floor-lamps': { parent: 'lights-for-kids-rooms', parentTitleKey: 'kids_lights' }, 10408 10409 'luxury-lights': { parent: 'interior', parentTitleKey: 'luxury_lights' }, 10410 'luxury-chandeliers': { parent: 'luxury-lights', parentTitleKey: 'luxury_lights' }, 10411 'luxury-pendant-lights': { parent: 'luxury-lights', parentTitleKey: 'luxury_lights' }, 10412 'luxury-ceiling-lights': { parent: 'luxury-lights', parentTitleKey: 'luxury_lights' }, 10413 'luxury-table-lamps': { parent: 'luxury-lights', parentTitleKey: 'luxury_lights' }, 10414 'luxury-floor-lamps': { parent: 'luxury-lights', parentTitleKey: 'luxury_lights' }, 10415 10416 'stairway-lighting': { parent: 'interior', parentTitleKey: 'staircase_lights' }, 10417 'staircase-ceiling-lights': { parent: 'stairway-lighting', parentTitleKey: 'staircase_lights' }, 10418 'staircase-wall-lights': { parent: 'stairway-lighting', parentTitleKey: 'staircase_lights' },
10419 'staircase-light-with-sensor': { parent: 'stairway-lighting', parentTitleKey: 'staircase_lights' }, 10420 'led-staircase-lighting': { parent: 'stairway-lighting', parentTitleKey: 'staircase_lights' }, 10421 10422 'hallway-lighting': { parent: 'interior', parentTitleKey: 'hallway_lights' }, 10423 'hallway-ceiling-lights': { parent: 'hallway-lighting', parentTitleKey: 'hallway_lights' }, 10424 'hallway-wall-light': { parent: 'hallway-lighting', parentTitleKey: 'hallway_lights' }, 10425 'recessed-wall-spotlights': { parent: 'hallway-lighting', parentTitleKey: 'hallway_lights' }, 10426 'led-hallway-lighting': { parent: 'hallway-lighting', parentTitleKey: 'hallway_lights' }, 10427 10428 'industrial-lighting-fixtures': { parent: 'interior', parentTitleKey: 'industrial_style_lights' }, 10429 'industrial-lighting': { parent: 'interior', parentTitleKey: 'industrial_lights' }, 10430 'lighting-for-the-basement': { parent: 'interior', parentTitleKey: 'cellar_lights' }, 10431 10432 'garage-lighting': { parent: 'interior', parentTitleKey: 'garage_lights' }, 10433 10434 // === OUTDOOR LIGHTS (Venkovnà svÄtla) === 10435 'outdoor-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_lights' }, 10436 'outdoor-lamps-with-sensor': { parent: 'outdoor-lights', parentTitleKey: 'outdoor_lights' }, 10437 'outdoor-lighting-families': { parent: 'outdoor-lights', parentTitleKey: 'outdoor_lights' }, 10438 'decorative-outdoor-lamps': { parent: 'outdoor-lights', parentTitleKey: 'outdoor_lights' }, 10439 'outdoor-linear-lights': { parent: 'outdoor-lights', parentTitleKey: 'outdoor_lights' }, 10440 10441 'outdoor-wall-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_wall' }, 10442 'updown-outdoor-lights': { parent: 'outdoor-wall-lights', parentTitleKey: 'outdoor_wall' }, 10443 'outdoor-indirect-lights': { parent: 'outdoor-wall-lights', parentTitleKey: 'outdoor_wall' }, 10444 'adjustable-wall-lights': { parent: 'outdoor-wall-lights', parentTitleKey: 'outdoor_wall' }, 10445 'one-way-luminaires': { parent: 'outdoor-wall-lights', parentTitleKey: 'outdoor_wall' }, 10446 10447 'outdoor-ceiling-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_ceiling' }, 10448 'outdoor-downlights': { parent: 'outdoor-ceiling-lights', parentTitleKey: 'outdoor_ceiling' }, 10449 'adjustable-ceiling-lights': { parent: 'outdoor-ceiling-lights', parentTitleKey: 'outdoor_ceiling' }, 10450 10451 'outdoor-recessed-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_recessed' }, 10452 'ground-lights': { parent: 'outdoor-recessed-lights', parentTitleKey: 'outdoor_recessed' }, 10453 'outdoor-wall-recessed': { parent: 'outdoor-recessed-lights', parentTitleKey: 'outdoor_recessed' }, 10454 'outdoor-recessed-luminaires': { parent: 'outdoor-recessed-lights', parentTitleKey: 'outdoor_recessed' }, 10455 10456 'outdoor-pendant-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_pendant' }, 10457 'outdoor-pergola-chandelier': { parent: 'outdoor-pendant-lights', parentTitleKey: 'outdoor_pendant' }, 10458 10459 'path-lighting': { parent: 'outdoor', parentTitleKey: 'outdoor_path' }, 10460 10461 'garden-post-light': { parent: 'outdoor', parentTitleKey: 'garden_posts' }, 10462 'directional-light-columns': { parent: 'garden-post-light', parentTitleKey: 'garden_posts' }, 10463 'bollards-round': { parent: 'garden-post-light', parentTitleKey: 'garden_posts' }, 10464 'bollards-angular': { parent: 'garden-post-light', parentTitleKey: 'garden_posts' }, 10465 10466 'spike-lights': { parent: 'outdoor', parentTitleKey: 'outdoor_spike' }, 10467 10468 // === SYSTEMS (Systémy) === 10469 '1-circuit-track-systems': { parent: 'systems', parentTitleKey: 'track_1f' }, 10470 '1f-tracks': { parent: '1-circuit-track-systems', parentTitleKey: 'track_1f' }, 10471 '1-circuit-components': { parent: '1-circuit-track-systems', parentTitleKey: 'track_1f' }, 10472 '1-circuit-spotlights': { parent: '1-circuit-track-systems', parentTitleKey: 'track_1f' }, 10473 '1-circuit-pendants': { parent: '1-circuit-track-systems', parentTitleKey: 'track_1f' }, 10474 10475 '3-circuit-track-systems': { parent: 'systems', parentTitleKey: 'track_3f' }, 10476 '3-circuit-tracks': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10477 '3-circuit-tracks-recessed': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10478 '3-circuit-spotlights': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10479 '3-circuit-pendants': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10480 '3-circuit-components': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10481 '3-circuit-recessed-track-components': { parent: '3-circuit-track-systems', parentTitleKey: 'track_3f' }, 10482 10483 'led-strips': { parent: 'systems', parentTitleKey: 'led_strips' }, 10484 'profiles-recessed': { parent: 'led-strips', parentTitleKey: 'led_strips' }, 10485 'profiles-surface-mounted': { parent: 'led-strips', parentTitleKey: 'led_strips' }, 10486 'led-components': { parent: 'led-strips', parentTitleKey: 'led_strips' }, 10487 10488 'ultra-thin-track-systems': { parent: 'systems', parentTitleKey: 'ultra_thin' }, 10489 'vega-tracks': { parent: 'ultra-thin-track-systems', parentTitleKey: 'ultra_thin' }, 10490 'vega-components': { parent: 'ultra-thin-track-systems', parentTitleKey: 'ultra_thin' }, 10491 'lamps-for-vega-wave': { parent: 'ultra-thin-track-systems', parentTitleKey: 'ultra_thin' }, 10492 'lamps-for-wave-system': { parent: 'wave-belt-system', parentTitleKey: 'wave_system' }, 10493 10494 'wave-belt-system': { parent: 'systems', parentTitleKey: 'wave_system' }, 10495 'wave-belt': { parent: 'wave-belt-system', parentTitleKey: 'wave_system' }, 10496 'wave-components': { parent: 'wave-belt-system', parentTitleKey: 'wave_system' }, 10497 10498 // === BY TYPE (SvÄtla dle typu) === 10499 // Ceiling lights 10500 'ceiling-lights': { parent: 'by-type', parentTitleKey: 'ceiling_lights' }, 10501 'round-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10502 'led-ceiling-panel': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10503 'linear-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10504 'decorative-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10505 'square-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10506 'plaster-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10507 'retro-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10508 'dimmable-led-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10509 'dimmable-ceiling-light': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10510 'ceiling-led-light-with-remote-control': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10511 'thin-ceiling-lights': { parent: 'ceiling-lights', parentTitleKey: 'ceiling_lights' }, 10512 10513 // Recessed lights 10514 'recessed-lights': { parent: 'by-type', parentTitleKey: 'recessed_lights' }, 10515 'recessed-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10516 'recessed-plaster-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10517 'dimmable-recessed-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10518 'dimmable-led-recessed-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10519 'decorative-recessed-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10520 'multiple-recessed-lights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10521 'recessed-spotlight-families': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10522 'recessed-wall-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10523 'frameless-lights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10524 'combinable-lights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10525 'semi-recessed-lights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10526 'thin-recessed-lights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10527 'recessed-led-spotlights': { parent: 'recessed-lights', parentTitleKey: 'recessed_lights' }, 10528 10529 // Wall lights 10530 'wall-lights': { parent: 'by-type', parentTitleKey: 'wall_lights' }, 10531 'wall-lights-with-switch': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10532 'updown-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10533 'dimmable-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10534 'dimmable-led-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10535 'linear-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10536 'decorative-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10537 'plaster-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10538 'retro-wall-light': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10539 'led-wall-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10540 'wall-lights-on-arm': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10541 'bedside-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10542 'picture-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10543 'above-painting-lights': { parent: 'wall-lights', parentTitleKey: 'wall_lights' }, 10544 10545 // Pendant lights 10546 'pendants': { parent: 'by-type', parentTitleKey: 'pendant_lights' }, 10547 'hanging-ceiling-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10548 'pendant-lamps': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10549 'pendant-led-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10550 'pendant-chandelier': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10551 'pendant-glass-sphere': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10552 'dimmable-pendant-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10553 'dimmable-led-pendant-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10554 'decorative-pendant-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10555 'multiple-pendant-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10556 'linear-pendant-lights': { parent: 'pendants', parentTitleKey: 'pendant_lights' }, 10557 10558 // Floor lamps 10559 'floor-lamps': { parent: 'by-type', parentTitleKey: 'floor_lamps' }, 10560 'floor-led-lamps': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10561 'dimmable-floor-lamp': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10562 'dimmable-led-floor-lamp': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10563 'decorative-floor-lamps': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10564 'arc-floor-lamp': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10565 'floor-lamps-for-reading': { parent: 'floor-lamps', parentTitleKey: 'floor_lamps' }, 10566 10567 // Table lamps 10568 'table-lamps': { parent: 'by-type', parentTitleKey: 'table_lamps' }, 10569 'decorative-table-lamps': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10570 'dimmable-table-lamp': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10571 'dimmable-led-table-lamp': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10572 'touch-table-lamp': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10573 'table-led-lamp': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10574 'desk-lamps': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10575 'modern-table-lamps': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10576 'retro-table-lamp': { parent: 'table-lamps', parentTitleKey: 'table_lamps' }, 10577 10578 // Spotlights 10579 'spotlights': { parent: 'by-type', parentTitleKey: 'spotlights' }, 10580 'ceiling-spotlights': { parent: 'spotlights', parentTitleKey: 'spotlights' }, 10581 'led-spotlights': { parent: 'spotlights', parentTitleKey: 'spotlights' }, 10582 'multiple-spotlights': { parent: 'spotlights', parentTitleKey: 'spotlights' }, 10583 'spotlight-families': { parent: 'spotlights', parentTitleKey: 'spotlights' }, 10584 'gooseneck-lamps': { parent: 'spotlights', parentTitleKey: 'spotlights' }, 10585 10586 // Accessories 10587 'accessories': { parent: 'by-type', parentTitleKey: 'accessories' }, 10588 'sensors': { parent: 'accessories', parentTitleKey: 'accessories' }, 10589 10590 // Shades and accessories 10591 'shades-and-shade-accessories': { parent: 'by-type', parentTitleKey: 'shades_accessories' }, 10592 'bases': { parent: 'shades-and-shade-accessories', parentTitleKey: 'shades_accessories' }, 10593 10594 // Light sources 10595 'light-sources': { parent: 'by-type', parentTitleKey: 'light_sources' }, 10596 'e27-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10597 'e14-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10598 'globe-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10599 'gu10-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10600 'g9-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10601 'gx53-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10602 'b15d-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10603 'linear-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10604 'par-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10605 't-shape-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10606 'g4-12v-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10607 'gu53-12v-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10608 'g53-ar111-12v-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10609 'plated-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10610 'dimmable-led-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10611 'remote-control-bulbs': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10612 'small-bulb': { parent: 'light-sources', parentTitleKey: 'light_sources' }, 10613 10614 // === BY FUNCTION (SvÄtla dle funkce) === 10615 // Dimmable lights 10616 'dimmable-lights': { parent: 'by-function', parentTitleKey: 'dimmable_lights' }, 10617 '3-circuit-spotlights': { parent: 'dimmable-lights', parentTitleKey: 'dimmable_lights' }, 10618 'dimmable-3-circuit-spotlights': { parent: 'dimmable-lights', parentTitleKey: 'dimmable_lights' }, 10619 'dimmable-lamps-for-vega-wave': { parent: 'dimmable-lights', parentTitleKey: 'dimmable_lights' }, 10620 10621 // === BY MATERIAL (SvÄtla dle materiálu) === 10622 // Plaster 10623 'plaster-lights': { parent: 'by-material', parentTitleKey: 'plaster_lights' }, 10624 'plaster-pendant-lights': { parent: 'plaster-lights', parentTitleKey: 'plaster_lights' }, 10625 'plaster-ceiling-lights': { parent: 'plaster-lights', parentTitleKey: 'plaster_lights' }, 10626 'plaster-wall-lights': { parent: 'plaster-lights', parentTitleKey: 'plaster_lights' }, 10627 'recessed-plaster-spotlights': { parent: 'plaster-lights', parentTitleKey: 'plaster_lights' }, 10628 10629 // Glass 10630 'glass-lights': { parent: 'by-material', parentTitleKey: 'glass_lights' }, 10631 'glass-ceiling-lights': { parent: 'glass-lights', parentTitleKey: 'glass_lights' }, 10632 'glass-wall-lights': { parent: 'glass-lights', parentTitleKey: 'glass_lights' }, 10633 'glass-chandelier': { parent: 'glass-lights', parentTitleKey: 'glass_lights' }, 10634 10635 // Wood 10636 'wooden-light': { parent: 'by-material', parentTitleKey: 'wood_lights' }, 10637 'wooden-lamp': { parent: 'wooden-light', parentTitleKey: 'wood_lights' }, 10638 'wooden-floor-lamp': { parent: 'wooden-light', parentTitleKey: 'wood_lights' }, 10639 10640 // Concrete 10641 'concrete-lights': { parent: 'by-material', parentTitleKey: 'concrete_lights' }, 10642 'concrete-lamp': { parent: 'concrete-lights', parentTitleKey: 'concrete_lights' }, 10643 'concrete-table-lamps': { parent: 'concrete-lights', parentTitleKey: 'concrete_lights' }, 10644 'concrete-wall-lamps': { parent: 'concrete-lights', parentTitleKey: 'concrete_lights' }, 10645 10646 // Metal 10647 'metal-lights': { parent: 'by-material', parentTitleKey: 'metal_lights' }, 10648 'metal-pendant-lights': { parent: 'metal-lights', parentTitleKey: 'metal_lights' }, 10649 'metal-table-lamps': { parent: 'metal-lights', parentTitleKey: '
10649metal_lights' }, 10650 'metal-ceiling-lamps': { parent: 'metal-lights', parentTitleKey: 'metal_lights' }, 10651 'metal-floor-lamps': { parent: 'metal-lights', parentTitleKey: 'metal_lights' }, 10652 'metal-chandelier': { parent: 'metal-lights', parentTitleKey: 'metal_lights' }, 10653 10654 // Copper 10655 'copper-lamps': { parent: 'by-material', parentTitleKey: 'copper_lights' }, 10656 'copper-chandeliers': { parent: 'copper-lamps', parentTitleKey: 'copper_lights' }, 10657 10658 // Ceramic 10659 'ceramic-lights': { parent: 'by-material', parentTitleKey: 'ceramic_lights' }, 10660 'ceramic-lamp': { parent: 'ceramic-lights', parentTitleKey: 'ceramic_lights' }, 10661 10662 // === NEW & SALE (not translated, always "New" and "Sale") === 10663 'new': { parent: null, parentTitleKey: null }, 10664 'sale': { parent: null, parentTitleKey: null } 10665 }; 10666 10667 // Format text: capitalize first letter, lowercase rest, but keep LED in uppercase 10668 function formatBreadcrumbText(text) { 10669 if (!text) return text; 10670 10671 // First, replace all variations of "led" with a placeholder 10672 const placeholder = '___LED___'; 10673 text = text.replace(/\bLED\b/gi, placeholder); 10674 text = text.replace(/\bled\b/gi, placeholder); 10675 10676 // Capitalize first letter, lowercase the rest 10677 text = text.charAt(0).toUpperCase() + text.slice(1).toLowerCase(); 10678 10679 // Replace placeholder back with uppercase LED 10680 text = text.replace(new RegExp(placeholder, 'gi'), 'LED'); 10681 10682 return text; 10683 } 10684 10685 // Resolve collection title from rendered mega menu by handle. 10686 // This avoids stale collection.title translations in breadcrumbs. 10687 function getCollectionTitleFromMegaMenu(handle, fallback) { 10688 if (!handle) return fallback; 10689 const links = document.querySelectorAll('.main-mega-menu-rendl a[href*="/collections/"]'); 10690 for (const link of links) { 10691 const href = link.getAttribute('href') || ''; 10692 let matchedHandle = null; 10693 try { 10694 const url = new URL(href, window.location.origin); 10695 const match = url.pathname.match(/\/collections\/([^/?#]+)/); 10696 if (match) matchedHandle = match[1]; 10697 } catch (e) { 10698 const match = href.match(/\/collections\/([^/?#]+)/); 10699 if (match) matchedHandle = match[1]; 10700 } 10701 if (matchedHandle === handle) { 10702 const txt = (link.textContent || '').trim(); 10703 return txt || fallback; 10704 } 10705 } 10706 return fallback; 10707 } 10708 10709 // Build breadcrumb hierarchy for a collection 10710 function buildHierarchy(collectionHandle) { 10711 const hierarchy = []; 10712 let currentHandle = collectionHandle; 10713 10714 while (currentHandle && menuStructure[currentHandle]) { 10715 const info = menuStructure[currentHandle]; 10716 10717 // For new and sale, use hardcoded values (no translation) 10718 let title; 10719 if (currentHandle === 'new') { 10720 title = 'New'; 10721 } else if (currentHandle === 'sale') { 10722 title = 'Sale'; 10723 } else { 10724 title = translations[info.parentTitleKey] || info.parentTitleKey; 10725 } 10726 10727 hierarchy.unshift({ 10728 handle: currentHandle, 10729 parent: info.parent, 10730 parentTitle: title 10731 }); 10732 currentHandle = info.parent; 10733 } 10734 10735 return hierarchy; 10736 } 10737 10738 // Render breadcrumbs for collection page 10739 function renderCollectionBreadcrumbs() { 10740 const nav = document.getElementById('collection-breadcrumbs-nav'); 10741 if (!nav) return; 10742 10743 const collectionHandle = nav.dataset.collectionHandle; 10744 const collectionTitle = nav.dataset.collectionTitle; 10745 10746 if (!collectionHandle || !collectionTitle) return; 10747 10748 // Build the hierarchy 10749 const hierarchy = buildHierarchy(collectionHandle); 10750 10751 let breadcrumbHTML = ''; 10752 10753 if (hierarchy.length > 0) { 10754 // Add parent categories from hierarchy (skip the last one which is current collection) 10755 for (let i = 0; i < hierarchy.length - 1; i++) { 10756 const level = hierarchy[i]; 10757 breadcrumbHTML += `<span class="collection-breadcrumbs__divider">âº</span>`; 10758 breadcrumbHTML += `<a href="/collections/${level.handle}" class="collection-breadcrumbs__link">${formatBreadcrumbText(level.parentTitle)}</a>`; 10759 } 10760 } 10761 10762 const resolvedCollectionTitle = getCollectionTitleFromMegaMenu(collectionHandle, collectionTitle); 10763 10764 // Add current collection as text (not link) 10765 breadcrumbHTML += `<span class="collection-breadcrumbs__divider">âº</span>`;
10766 breadcrumbHTML += `<span class="collection-breadcrumbs__current">${resolvedCollectionTitle}</span>`; 10767 10768 // Insert breadcrumbs directly into nav after home link 10769 const homeLink = nav.querySelector('.collection-breadcrumbs__home-link'); 10770 if (homeLink) { 10771 homeLink.insertAdjacentHTML('afterend', breadcrumbHTML); 10772 } 10773 } 10774 10775 // Initialize 10776 if (document.readyState === 'loading') { 10777 document.addEventListener('DOMContentLoaded', renderCollectionBreadcrumbs); 10778 } else { 10779 renderCollectionBreadcrumbs(); 10780 } 10781})(); 10782</script>
10782 10783 10784 10785 10786</div><div id="shopify-section-template--28113427169578__random_background_collection_banner_6EzpR9" class="shopify-section section"> 10787<link rel="dns-prefetch" href="https://cdn.shopify.com"> 10788<link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 10789<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 10790 10791 10792 10793 10794<link rel="preload" href="//rendl.es/cdn/shop/t/33/assets/random-background-collection-banner.css?v=141236626201348110761788953234" as="style" onload="this.onload=null;this.rel='stylesheet'"> 10795<noscript><link href="//rendl.es/cdn/shop/t/33/assets/random-background-collection-banner.css?v=141236626201348110761788953234" rel="stylesheet" type="text/css" media="all" /></noscript>
10796<script> 10797 /* CSS preload polyfill for older browsers */ 10798 !function(e){"use strict";var t=function(t,n,r){var o,i=e.document,s=i.createElement("link");if(n)o=n;else{var a=(i.body||i.getElementsByTagName("head")[0]).childNodes;o=a[a.length-1]}var l=i.styleSheets;s.rel="stylesheet",s.href=t,s.media="only x",function e(t){if(i.body)return t();setTimeout(function(){e(t)})}(function(){o.parentNode.insertBefore(s,n?o:o.nextSibling)});var d=function(e){for(var t=s.href,n=l.length;n--;)if(l[n].href===t)return e();setTimeout(function(){d(e)})};return s.addEventListener&&s.addEventListener("load",d),s.onloadcssdefined=d,d(function(){s.media=r||"all"}),s};"undefined"!=typeof exports?exports.loadCSS=t:e.loadCSS=t}("undefined"!=typeof global?global:this); 10799</script>
10799<style> 10800 /* Critical CSS for banner - immediate render without FOUC */ 10801 .random-banner { 10802 position: relative; 10803 width: 100%; 10804 padding: 0; 10805 margin: 0; 10806 overflow: hidden; 10807 } 10808 .random-banner__container { 10809 max-width: 1100px; 10810 margin: 0 auto; 10811 padding-left: 15px; 10812 padding-right: 15px; 10813 box-sizing: border-box; 10814 opacity: 1; 10815 transition: opacity 0.3s ease; 10816 } 10817 .random-banner__inner { 10818 display: flex; 10819 justify-content: space-between; 10820 align-items: flex-start; 10821 position: relative; 10822 } 10823 .random-banner__text { 10824 width: 50%; 10825 padding: 4rem 0; 10826 z-index: 2; 10827 } 10828 /* Reserve space for image to prevent layout shift */ 10829 .random-banner__image { 10830 width: 500px; 10831 height: 500px; 10832 position: absolute; 10833 right: 0; 10834 top: 4rem; 10835 } 10836 .random-banner__image-container { 10837 width: 100%; 10838 height: 100%; 10839 background: #f5f5f5; 10840 } 10841 .random-banner__title { 10842 margin: 0 0 2rem; 10843 font-size: 45px; 10844 line-height: 1.2; 10845 color: #191919; 10846 font-weight: 350; 10847 font-family: Montserrat, sans-serif; 10848 } 10849 /* Force Montserrat font for all description content */ 10850 .random-banner__description, 10851 .random-banner__description * { 10852 font-family: Montserrat, sans-serif !important; 10853 } 10854 .random-banner__description { 10855 font-size: 16px; 10856 line-height: 1.6; 10857 color: #191919; 10858 } 10859 /* Headings in description */ 10860 .random-banner__description h1, 10861 .random-banner__description h2, 10862 .random-banner__description h3, 10863 .random-banner__description h4, 10864 .random-banner__description h5, 10865 .random-banner__description h6 { 10866 font-family: Montserrat, sans-serif !important; 10867 color: #191919; 10868 margin: 1.5em 0 0.75em 0; 10869 line-height: 1.3; 10870 font-weight: 600; 10871 } 10872 .random-banner__description h1 { font-size: 32px; } 10873 .random-banner__description h2 { font-size: 28px; } 10874 .random-banner__description h3 { font-size: 24px; } 10875 .random-banner__description h4 { font-size: 20px; } 10876 .random-banner__description h5 { font-size: 18px; } 10877 .random-banner__description h6 { font-size: 16px; } 10878 /* First heading has no top margin */ 10879 .random-banner__description h1:first-child, 10880 .random-banner__description h2:first-child, 10881 .random-banner__description h3:first-child, 10882 .random-banner__description h4:first-child, 10883 .random-banner__description h5:first-child, 10884 .random-banner__description h6:first-child { 10885 margin-top: 0; 10886 } 10887 /* Paragraphs */ 10888 .random-banner__description p { 10889 margin: 0 0 1em 0; 10890 } 10891 .random-banner__description p:last-child { 10892 margin-bottom: 0; 10893 } 10894 /* Lists */ 10895 .random-banner__description ul, 10896 .random-banner__description ol { 10897 margin: 1em 0; 10898 padding-left: 2em; 10899 } 10900 .random-banner__description li { 10901 margin: 0.5em 0; 10902 } 10903 /* Links */ 10904 .random-banner__description a { 10905 color: #191919; 10906 text-decoration: underline; 10907 } 10908 .random-banner__description a:hover { 10909 opacity: 0.7; 10910 } 10911 /* Strong and emphasis */ 10912 .random-banner__description strong, 10913 .random-banner__description b { 10914 font-weight: 600; 10915 } 10916 .random-banner__description em, 10917 .random-banner__description i { 10918 font-style: italic; 10919 } 10920 /* Blockquotes */ 10921 .random-banner__description blockquote { 10922 margin: 1.5em 0; 10923 padding-left: 1.5em; 10924 border-left: 3px solid #191919; 10925 font-style: italic; 10926 } 10927 /* Code */ 10928 .random-banner__description code { 10929 background: #f5f5f5; 10930 padding: 0.2em 0.4em; 10931 font-family: monospace; 10932 font-size: 0.9em; 10933 } 10934 .random-banner__description pre { 10935 background: #f5f5f5; 10936 padding: 1em; 10937 overflow-x: auto; 10938 margin: 1em 0; 10939 } 10940 .random-banner__description pre code { 10941 background: none; 10942 padding: 0; 10943 } 10944 /* Tables */ 10945 .random-banner__description table { 10946 width: 100%; 10947 border-collapse: collapse; 10948 margin: 1.5em 0; 10949 } 10950 .random-banner__description th, 10951 .random-banner__description td { 10952 padding: 0.75em; 10953 text-align: left; 10954 border: 1px solid #e5e5e5; 10955 } 10956 .random-banner__description th { 10957 font-weight: 600; 10958 background: #f9f9f9; 10959 } 10960 /* Images in description */ 10961 .random-banner__description img { 10962 max-width: 100%; 10963 height: auto; 10964 margin: 1em 0; 10965 } 10966 @media screen and (max-width: 749px) { 10967 .random-banner__inner { 10968 flex-direction: column-reverse; 10969 min-height: auto; 10970 } 10971 .random-banner__title { 10972 font-size: 35px !important; 10973 } 10974 .random-banner__text { 10975 width: 100%; 10976 padding: 0rem 15px; 10977 } 10978 .random-banner__image { 10979 position: relative; 10980 width: 100%; 10981 height: 100%; 10982 top: 0; 10983 margin: 0 auto 20px; 10984 } 10985 /* Responsive description styles */ 10986 .random-banner__description { 10987 font-size: 14px; 10988 } 10989 .random-banner__description h1 { font-size: 26px; } 10990 .random-banner__description h2 { font-size: 22px; } 10991 .random-banner__description h3 { font-size: 20px; } 10992 .random-banner__description h4 { font-size: 18px; } 10993 .random-banner__description h5 { font-size: 16px; } 10994 .random-banner__description h6 { font-size: 14px; } 10995 .random-banner__description ul, 10996 .random-banner__description ol { 10997 padding-left: 1.5em; 10998 } 10999 .random-banner__description table { 11000 font-size: 13px; 11001 } 11002 .random-banner__description th, 11003 .random-banner__description td { 11004 padding: 0.5em; 11005 } 11006 } 11007</style> 11008
11009<script> 11010document.addEventListener('DOMContentLoaded', function() { 11011 11012 const backgroundColors = [ 11013 11014 11015 "#ffffff", 11016 11017 11018 ].filter(Boolean); 11019 11020 if (backgroundColors.length > 0) { 11021 const randomColor = backgroundColors[Math.floor(Math.random() * backgroundColors.length)]; 11022 const banner = document.querySelector('.random-banner'); 11023 banner.style.backgroundColor = randomColor; 11024 banner.style.setProperty('--banner-bg', randomColor); 11025 } 11026 11027 // Video playback handling 11028 const video = document.querySelector('.random-banner__video'); 11029 if (video) { 11030 video.play().catch(function(error) { 11031 console.log("Video autoplay failed:", error); 11032 }); 11033 11034 // Ensure video is playing after user interaction 11035 document.addEventListener('click', function() { 11036 video.play().catch(function(error) { 11037 console.log("Video play after click failed:", error); 11038 }); 11039 }, { once: true }); 11040 } 11041 11042 // Notify that banner is ready for performance optimization 11043 function signalBannerReady() { 11044 const banner = document.querySelector('.random-banner'); 11045 if (banner) { 11046 banner.setAttribute('data-banner-loaded', 'true'); 11047 const event = new CustomEvent('banner:loaded'); 11048 document.dispatchEvent(event); 11049 } 11050 } 11051 11052 // Wait for all banner media to load 11053 const bannerImages = document.querySelectorAll('.random-banner img'); 11054 const bannerVideos = document.querySelectorAll('.random-banner video'); 11055 11056 if (bannerImages.length === 0 && bannerVideos.length === 0) { 11057 signalBannerReady(); 11058 } else { 11059 let loadedCount = 0; 11060 const totalMedia = bannerImages.length + bannerVideos.length; 11061 11062 function checkMediaLoaded() { 11063 loadedCount++; 11064 if (loadedCount >= totalMedia) { 11065 signalBannerReady(); 11066 } 11067 } 11068 11069 bannerImages.forEach(function(img) { 11070 if (img.complete) { 11071 checkMediaLoaded(); 11072 } else { 11073 img.addEventListener('load', checkMediaLoaded); 11074 img.addEventListener('error', checkMediaLoaded); 11075 } 11076 }); 11077 11078 bannerVideos.forEach(function(video) { 11079 if (video.readyState >= 3) { 11080 checkMediaLoaded(); 11081 } else { 11082 video.addEventListener('loadeddata', checkMediaLoaded); 11083 video.addEventListener('error', checkMediaLoaded); 11084 } 11085 }); 11086 } 11087 11088 // Check description height and set truncated class 11089 const description = document.querySelector('.random-banner__description'); 11090 const toggleButton = document.querySelector('.random-banner__description-toggle'); 11091 const bannerInner = document.querySelector('.random-banner__inner'); 11092 11093 if (description && toggleButton) { 11094 const HEIGHT_LIMIT = 400; // Height limit in pixels for "Show more" button 11095 11096 // Get the actual height of the description 11097 const descriptionHeight = description.scrollHeight; 11098 11099 if (descriptionHeight > HEIGHT_LIMIT) { 11100 description.classList.add('truncated'); 11101 toggleButton.style.display = 'flex'; 11102 11103 toggleButton.addEventListener('click', function() { 11104 description.classList.toggle('expanded'); 11105 toggleButton.classList.toggle('expanded'); 11106 if (description.classList.contains('expanded')) { 11107 toggleButton.querySelector('.toggle-text').textContent = "Mostrar menos"; 11108 if (bannerInner) bannerInner.classList.add('expanded'); 11109 } else { 11110 toggleButton.querySelector('.toggle-text').textContent = "Mostrar más"; 11111 if (bannerInner) bannerInner.classList.remove('expanded'); 11112 } 11113 }); 11114 } else { 11115 // Hide button if text is short 11116 toggleButton.style.display = 'none'; 11117 } 11118 } 11119}); 11120</script>
11120 11121 11122<div class="random-banner"> 11123 <div class="random-banner__container"> 11124 <div class="random-banner__inner text-first "> 11125 <div class="random-banner__text"> 11126 <div class="random-banner__title-with-icon"> 11127 11128 <div class="random-banner__collection-icon"> 11129 <img 11130 src="//rendl.es/cdn/shop/collections/bollards_image_f841a070-d7cb-4a39-b045-425f442ae4cf.png?v=1788993126&width=100" 11131 alt="Postes de jardÃn" 11132 width="100" 11133 height="100" 11134 > 11135 </div> 11136 11137 <h1 class="random-banner__title">Postes de jardÃn</h1> 11138 </div><div class="random-banner__description"><p><strong>Lámparas de poste</strong> son elementos esenciales de la iluminación exterior que garantizan un desplazamiento seguro por senderos de jardÃn, entradas y alrededor de terrazas. Gracias a su altura y dirección de luz, las <strong>lámparas de poste</strong> iluminan uniformemente las superficies sin deslumbrar y crean una orientación clara en el espacio exterior. Un correcto diseño de las <strong>lámparas de poste para exterior</strong> asegura un rendimiento lumÃnico estable incluso en uso prolongado al aire libre.</p>��<p>Las modernas <strong>lámparas de poste para exterior</strong> usan tecnologÃa LED, que combina eficiencia con larga duración y estabilidad en el flujo luminoso. En el paisajismo, las <strong>lámparas de poste para jardÃn</strong> no solo sirven de guÃa, sino también para resaltar suavemente caminos, parterres o elementos arquitectónicos. La construcción está adaptada a las condiciones exteriores para asegurar una luz fiable durante todo el año.</p>��<h2>Función de las lámparas de poste en el jardÃn</h2>��<p>Las <strong>lámparas de poste</strong> se diseñan principalmente para iluminación de orientación y navegación. Su función principal es iluminar con seguridad los caminos del jardÃn: senderos, entradas, escaleras o accesos a la casa. Gracias a su baja altura y luz dirigida hacia abajo, evitan haces molestos y contribuyen a mantener un ambiente agradable por la noche.</p>��<p>Las <strong>lámparas de poste para exterior</strong> se suelen colocar a lo largo de senderos o terrazas con separaciones regulares. De este modo, la luz marca un ritmo y facilita el movimiento en el jardÃn tras el anochecer.</p>��<p>Un error común es usar luminarias demasiado altas o intensas. Si las <strong>lámparas de poste para jardÃn</strong> son muy brillantes pueden deslumbrar al caminar o romper la atmósfera natural. En ese tipo de iluminación, es preferible la uniformidad a la máxima intensidad.</p>��<h2>CaracterÃsticas técnicas de las lámparas de poste para exterior</h2>��<p>El parámetro más importante es el flujo luminoso, que indica la cantidad de luz emitida. Para iluminación orientativa de jardÃn, se suelen usar valores entre 300 y 700 lúmenes por lámpara. Esta potencia es suficiente para un tránsito seguro sin ser molesta en la oscuridad.</p>��<p>También es clave la distribución de la luz. Las buenas <strong>lámparas de poste</strong> emplean ópticas que dirigen la luz principalmente hacia abajo o a los lados. Este sistema minimiza el deslumbramiento y reduce la contaminación lumÃnica en el jardÃn.</p>��<p>La temperatura de color es otro aspecto relevante. En jardines se prefieren tonos cálidos alrededor de 2700â3000 K, que crean un ambiente acogedor y armonizan con la vegetación y la arquitectura.</p>��<p>El Ãndice de reproducción cromática (CRI) de las luces exteriores suele estar cerca de 80, valor adecuado para apreciar los colores de plantas, madera o piedra de forma natural.</p>��<p>Un parámetro crucial es el grado de protección IP. Las <strong>lámparas de poste para exterior</strong> de calidad cuentan normalmente con IP44 o IP65, que protegen contra humedad, lluvia y polvo.</p>��<p>En modelos LED, la disipación térmica es fundamental. El cuerpo de aluminio extrae calor del módulo LED para mantener un rendimiento luminoso constante en uso prolongado al exterior.</p>��<p>Algunas <strong>lámparas de poste para jardÃn</strong> incluyen regulación de intensidad o detectores de movimiento, para ajustar la luz con presencia o mantenerla tenue en modo nocturno.</p>��<h2>Ejemplo práctico para iluminar un camino de jardÃn</h2>��<p>Imaginemos un sendero de jardÃn de 10 metros de largo y 1,5 metros de ancho. Para iluminarlo de forma homogénea es aconsejable usar cuatro <strong>lámparas de poste</strong> con una potencia de unos 400 lúmenes cada una.</p>��<p>Se instalan normalmente cada 2,5 a 3 metros a lo largo del borde. Esta disposición permite que las <strong>lámparas de poste para exterior</strong> iluminen todo el trayecto sin crear zonas oscuras notables.</p>��<p>Un error común es colocar solo una lámpara al inicio del camino. Esta solución no ofrece suficie
11138nte orientación y la intensidad decae rápidamente hacia el final.</p>��<p>Al planificar la instalación eléctrica, es recomendable un circuito independiente para la iluminación de jardÃn y canalizaciones protegidas bajo tierra, garantizando seguridad y ampliaciones futuras.</p>��<h2>Diseño, proporciones e integración en el jardÃn</h2>��<p>El diseño de las <strong>lámparas de poste</strong> debe armonizar con el estilo de la casa y el jardÃn. Jardines modernos suelen preferir formas minimalistas y cuadradas, mientras que los clásicos optan por estilos redondeados o decorativos.</p>��<p>La altura varÃa generalmente entre 40 y 100 cm según el espacio. Las <strong>lámparas de poste para jardÃn</strong> más bajas son ideales para guÃa sutil, y las más altas para iluminar áreas mayores.</p>��<p>Los materiales mayormente usados son aluminio, acero inoxidable o composites resistentes, que aseguran durabilidad y robustez en exteriores.</p>��<p>Algunos modelos permiten dirigir la luz o combinar múltiples fuentes, para destacar árboles, elementos arquitectónicos o bordes de parterres.</p>��<h2>Control de luz y valor a largo plazo</h2>��<p>Las modernas <strong>lámparas de poste para exterior</strong> pueden integrarse en sistemas inteligentes. Las lámparas regulables permiten ajustar la iluminación según hora del dÃa o necesidad.</p>��<p>También es posible conectar sensores de movimiento o crepusculares, de modo que la luz se enciende automáticamente al anochecer o al detectar presencia en el jardÃn.</p>��<p>Una construcción sólida y materiales resistentes garantizan que las <strong>lámparas de poste para jardÃn</strong> mantengan un rendimiento estable frente a condiciones climáticas adversas. La estabilidad del módulo LED y la estructura robusta prolongan la vida útil de todo el sistema.</p>��<p>Combinando función orientativa, resistencia y luz equilibrada, las <strong>lámparas de poste</strong> son un componente básico en la iluminación moderna de jardines, que une seguridad y estética en el espacio exterior.</p> 11139</div><button class="random-banner__description-toggle" style="display: none;"> 11140 <span class="toggle-text">Mostrar más</span> 11141 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"> 11142 <path d="M19 9l-7 7-7-7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> 11143 </svg> 11144 </button> 11145</div><div class="random-banner__image"> 11146 <div class="random-banner__image-container"><video 11147 autoplay 11148 loop 11149 muted 11150 playsinline 11151 preload="metadata" 11152 class="random-banner__video" 11153 > 11154 <source src="https://cdn.shopify.com/videos/c/o/v/586abaa3a90b41d9b97d18029201ca25.mp4" type="video/mp4"> 11155 Your browser does not support the video tag. 11156 </video></div> 11157 </div></div> 11158 </div> 11159</div> 11160 11161 </div><section id="shopify-section-template--28113427169578__collection_subcategories_Rq4CTB" class="shopify-section section-collection-subcategories"> 11162 11163 11164<link rel="preload" href="//rendl.es/cdn/shop/t/33/assets/collection-subcategories.css?v=21681036003623388091788953231" as="style" onload="this.onload=null;this.rel='stylesheet'"> 11165<noscript><link href="//rendl.es/cdn/shop/t/33/assets/collection-subcategories.css?v=21681036003623388091788953231" rel="stylesheet" type="text/css" media="all" /></noscript> 11166 11167 11168 11169 11170 11171 11172 11173<div class="collection-subcategories page-width"> 11174 <div class="collection-subcategories__inner"> 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 <div class="collection-subcategories__card" data-index="1"> 11189 <a href="/collections/bollards-round" class="collection-subcategories__link"> 11190 <div class="collection-subcategories__image-wrapper"> 11191 11192 <img 11193 src="//rendl.es/cdn/shop/files/287_IMG_d2f6b7ac-46a7-4aa1-9197-f600da08d735.jpg?v=1783895422&width=400" 11194 alt="Postes redondos" 11195 loading="lazy" 11196 decoding="async" 11197 width="100" 11198 height="100" 11199 class="collection-subcategories__image" 11200 > 11201 11202 </div> 11203 11204 <div class="collection-subcategories__content"> 11205 <div class="collection-subcategories__title">Redondos</div> 11206 </div> 11207 </a> 11208 </div> 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 <div class="collection-subcategories__card" data-index="2"> 11221 <a href="/collections/bollards-angular" class="collection-subcategories__link"> 11222 <div class="collection-subcategories__image-wrapper"> 11223 11224 <img 11225 src="//rendl.es/cdn/shop/files/286_IMG_4070dcf9-8b66-4ad6-ab64-ec41ff9b7b7b.jpg?v=1779316226&width=400" 11226 alt="Postes cuadrados" 11227 loading="lazy" 11228 decoding="async" 11229 width="100" 11230 height="100" 11231 class="collection-subcategories__image" 11232 > 11233 11234 </div> 11235 11236 <div class="collection-subcategories__content"> 11237 <div class="collection-subcategories__title">Cuadrados</div> 11238 </div> 11239 </a> 11240 </div> 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 <div class="collection-subcategories__card" data-index="3"> 11253 <a href="/collections/directional-light-columns" class="collection-subcategories__link"> 11254 <div class="collection-subcategories__image-wrapper"> 11255 11256 <img 11257 src="//rendl.es/cdn/shop/files/285_IMG_3c11483e-39ec-4f3d-8890-4351367df04a.jpg?v=1779316226&width=400" 11258 alt="Postes ajustables" 11259 loading="lazy" 11260 decoding="async" 11261 width="100" 11262 height="100" 11263 class="collection-subcategories__image" 11264 > 11265 11266 </div> 11267 11268 <div class="collection-subcategories__content"> 11269 <div class="collection-subcategories__title">Orientables</div> 11270 </div> 11271 </a> 11272 </div> 11273 11274 11275 </div> 11276 11277 11278 <button class="collection-subcategories__show-more" data-total="3" data-text="Mostrar más" style="display: none;"> 11279 Mostrar más 11280 11281 <img src="//rendl.es/cdn/shop/files/arrow_01573e16-e194-42e1-a353-ca36d8e5e17b.svg?crop=center&height=18&v=1757422092&width=18" alt="" width="18" height="18" class="collection-subcategories__show-more-icon"> 11282 11283 </button> 11284</div> 11285
11286<script> 11287 document.addEventListener('DOMContentLoaded', function() { 11288 const containers = document.querySelectorAll('.collection-subcategories'); 11289 11290 containers.forEach(container => { 11291 const button = container.querySelector('.collection-subcategories__show-more'); 11292 if (!button) return; 11293 11294 const cards = container.querySelectorAll('.collection-subcategories__card'); 11295 const totalCards = parseInt(button.getAttribute('data-total')) || cards.length; 11296 11297 function updateVisibility() { 11298 const isMobile = window.innerWidth <= 749; 11299 const visibleCount = isMobile ? 4 : 8; 11300 11301 // Show/hide cards based on screen size 11302 cards.forEach((card, index) => { 11303 const cardIndex = parseInt(card.getAttribute('data-index')); 11304 if (cardIndex > visibleCount) { 11305 card.classList.add('collection-subcategories__card--hidden'); 11306 card.classList.remove('collection-subcategories__card--visible'); 11307 } else { 11308 card.classList.remove('collection-subcategories__card--hidden'); 11309 card.classList.add('collection-subcategories__card--visible'); 11310 } 11311 }); 11312 11313 // Show button if there are hidden cards 11314 if (totalCards > visibleCount) { 11315 button.style.display = 'flex'; 11316 button.classList.remove('hidden'); 11317 } else { 11318 button.style.display = 'none'; 11319 } 11320 } 11321 11322 // Initial visibility check 11323 updateVisibility(); 11324 11325 // Update on resize 11326 let resizeTimer; 11327 window.addEventListener('resize', function() { 11328 clearTimeout(resizeTimer); 11329 resizeTimer = setTimeout(updateVisibility, 100); 11330 }); 11331 11332 // Show more button click handler 11333 button.addEventListener('click', function() { 11334 const hiddenCards = container.querySelectorAll('.collection-subcategories__card--hidden'); 11335 11336 // Show hidden cards with animation 11337 hiddenCards.forEach((card, index) => { 11338 setTimeout(() => { 11339 card.classList.remove('collection-subcategories__card--hidden'); 11340 card.classList.add('collection-subcategories__card--visible'); 11341 }, index * 50); 11342 }); 11343 11344 // Hide button after a short delay 11345 setTimeout(() => { 11346 this.classList.add('hidden'); 11347 setTimeout(() => { 11348 this.style.display = 'none'; 11349 }, 300); 11350 }, hiddenCards.length * 50 + 100); 11351 }); 11352 }); 11353 }); 11354</script>
11354 11355 11356 11357 11358 11359</section><div id="shopify-section-template--28113427169578__1f_button_iQ3kxB" class="shopify-section"> 11360 11361 11362 11363 11364 11365 11366 11367 11368 11369 11370 11371 11372 11373 11374 11375 11376 11377 11378 11379 11380<style> 11381.configurator-button-section { 11382 max-width: 1100px; 11383 margin: 0 auto; 11384} 11385 11386.configurator-button-container { 11387 display: flex; 11388 justify-content: flex-end; 11389 align-items: center; 11390} 11391 11392.configurator-button { 11393 display: inline-block; 11394 padding: 12px 24px 12px 24px; 11395 background-color: #262626; 11396 color: #ffffff; 11397 text-decoration: none; 11398 border-radius: 0px; 11399 font-size: 14px; 11400 font-weight: 500; 11401 text-align: center; 11402 transition: all 0.3s ease; 11403 border: 1px solid #121212; 11404} 11405 11406.configurator-button:hover { 11407 background-color: #ffffff; 11408 color: #121212; 11409 border-color: #0e0e0e; 11410} 11411 11412.configurator-button:active { 11413 transform: translateY(0); 11414} 11415 11416@media (max-width: 1024px) { 11417 .configurator-button-section { 11418 display: none; 11419 } 11420} 11421</style> 11422 11423 11424 11425</div><div id="shopify-section-template--28113427169578__product-grid" class="shopify-section section"> 11426<link href="//rendl.es/cdn/shop/t/33/assets/template-collection.css?v=58558206033505836701788953231" rel="stylesheet" type="text/css" media="all" /> 11427<link href="//rendl.es/cdn/shop/t/33/assets/component-card.css?v=5578354909434046961788953233" rel="stylesheet" type="text/css" media="all" /> 11428<link href="//rendl.es/cdn/shop/t/33/assets/component-price.css?v=55932055337519532011788953234" rel="stylesheet" type="text/css" media="all" /> 11429<link href="//rendl.es/cdn/shop/t/33/assets/main-collection-product-grid.css?v=60067204488583006381788953231" rel="stylesheet" type="text/css" media="all" /> 11430 11431<link href="//rendl.es/cdn/shop/t/33/assets/quick-add.css?v=106147676685185623711788953232" rel="stylesheet" type="text/css" media="all" />
11432<script src="//rendl.es/cdn/shop/t/33/assets/quick-add.js?v=73073840428863680991788953233" defer="defer"></script>
11432 11433
11433<script src="//rendl.es/cdn/shop/t/33/assets/product-form.js?v=82553749319723712671788953233" defer="defer"></script>
11433<style data-shopify>.section-template--28113427169578__product-grid-padding { 11434 padding-top: 27px; 11435 padding-bottom: 27px; 11436 } 11437 11438 @media screen and (min-width: 750px) { 11439 .section-template--28113427169578__product-grid-padding { 11440 padding-top: 36px; 11441 padding-bottom: 36px; 11442 } 11443 } 11444 11445 /* Critical CSS for shimmer - instant render without waiting for CSS files */ 11446 .product-grid-container[data-defer-load] { 11447 position: relative; 11448 margin-top: 20px; 11449 min-height: 1000px; 11450 } 11451 .product-grid-container[data-defer-load]::before { 11452 content: ''; 11453 display: block; 11454 width: 100%; 11455 height: var(--defer-grid-height, 1000px); 11456 background: linear-gradient(110deg, #f8f8f8 8%, #ffffff 18%, #f8f8f8 33%); 11457 background-size: 200% 100%; 11458 animation: shimmer 1.2s linear infinite; 11459 } 11460 @keyframes shimmer { 11461 0% { background-position: -200% 0; } 11462 100% { background-position: 200% 0; } 11463 } 11464 11465 /* Prevent layout shift from filters */ 11466 11467 .facets-vertical { 11468 display: flex; 11469 gap: 3rem; 11470 } 11471 .facets-vertical .facets-wrapper { 11472 flex: 0 0 250px; 11473 } 11474 .facets-vertical .product-grid-container { 11475 flex: 1; 11476 } 11477 11478 /* Mobile: Stack filters vertically */ 11479 @media screen and (max-width: 989px) { 11480 .facets-vertical { 11481 flex-direction: column; 11482 gap: 1rem; 11483 } 11484 .facets-vertical .facets-wrapper { 11485 flex: 0 0 auto; 11486 width: 100%; 11487 } 11488 .facets-vertical .product-grid-container { 11489 width: 100%; 11490 } 11491 }</style><div class="section-template--28113427169578__product-grid-padding gradient color-scheme-1"> 11492<facet-filters-form class="facets facets-vertical-sort page-width small-hide"> 11493 <form class="facets-vertical-form" id="FacetSortForm"> 11494 <div class="facet-filters sorting caption"> 11495 <div class="facet-filters__field"> 11496 <h2 class="facet-filters__label caption-large text-body"> 11497 <label for="SortBy">Ordenar por:</label> 11498 </h2> 11499 <div class="select"><select 11500 name="sort_by" 11501 class="facet-filters__sort select__select caption-large" 11502 id="SortBy" 11503 aria-describedby="a11y-refresh-page-message" 11504 ><option 11505 value="manual" 11506 11507 > 11508 CaracterÃsticas 11509 </option><option 11510 value="most-relevant" 11511 11512 > 11513 Más relevantes 11514 </option><option 11515 value="best-selling" 11516 11517 selected="selected" 11518 11519 > 11520 Más vendidos 11521 </option><option 11522 value="title-ascending" 11523 11524 > 11525 Alfabéticamente, A-Z 11526 </option><option 11527 value="title-descending" 11528 11529 > 11530 Alfabéticamente, Z-A 11531 </option><option 11532 value="price-ascending" 11533 11534 > 11535 Precio, menor a mayor 11536 </option><option 11537 value="price-descending" 11538 11539 > 11540 Precio, mayor a menor 11541 </option><option 11542 value="created-ascending" 11543 11544 > 11545 Fecha: antiguo(a) a reciente 11546 </option><option 11547 value="created-descending" 11548 11549 > 11550 Fecha: reciente a antiguo(a) 11551 </option></select> 11552 <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 11553</span> 11554 </div> 11555 </div> 11556 </div> 11557 11558 <div class="product-count-vertical light" role="status"> 11559 <h2 class="product-count__text text-body">
11560 <span id="ProductCountDesktop">19 productos 11561</span> 11562 </h2> 11563 11564<div class="loading__spinner hidden"> 11565 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 11566 11567</div> 11568</div> 11569 </form> 11570 </facet-filters-form><div class=" facets-vertical page-width" style="min-height: 200px;"> 11571 11572 <link rel="preload" href="//rendl.es/cdn/shop/t/33/assets/component-facets.css?v=169802269105075162841788953232" as="style" onload="this.onload=null;this.rel='stylesheet'"> 11573 <noscript><link href="//rendl.es/cdn/shop/t/33/assets/component-facets.css?v=169802269105075162841788953232" rel="stylesheet" type="text/css" media="all" /></noscript> 11574
11574<script src="//rendl.es/cdn/shop/t/33/assets/facets.js?v=42798985796066624181788953231" defer="defer"></script>
11574<aside 11575 aria-labelledby="verticalTitle" 11576 class="facets-wrapper" 11577 id="main-collection-filters" 11578 data-id="template--28113427169578__product-grid" 11579 > 11580 11581 11582<link href="//rendl.es/cdn/shop/t/33/assets/component-show-more.css?v=139536189637226996221788953233" rel="stylesheet" type="text/css" media="all" /> 11583<link href="//rendl.es/cdn/shop/t/33/assets/component-swatch-input.css?v=61683592951238328641788953234" rel="stylesheet" type="text/css" media="all" /> 11584<link href="//rendl.es/cdn/shop/t/33/assets/component-swatch.css?v=6811383713633888781788953231" rel="stylesheet" type="text/css" media="all" /> 11585<div class="facets-container"><facet-filters-form class="facets small-hide"> 11586 <form 11587 id="FacetFiltersForm" 11588 class="facets__form-vertical" 11589 > 11590 11591 <div 11592 id="FacetsWrapperDesktop" 11593 11594 > 11595<div class="active-facets active-facets-desktop"> 11596 <div class="active-facets-vertical-filter"><h2 11597 class="facets__heading facets__heading--vertical caption-large text-body" 11598 id="verticalTitle" 11599 tabindex="-1" 11600 > 11601 Filtrar: 11602 </h2><facet-remove class="active-facets__button-wrapper"> 11603 <a href="/collections/garden-post-light" class="active-facets__button-remove underlined-link"> 11604 <span>Eliminar todos</span> 11605 </a> 11606 </facet-remove> 11607 </div> 11608 11609 11610 11611 11612 11613 11614 11615 11616 11617 11618 11619 11620 11621 11622 11623</div>
11623<script src="//rendl.es/cdn/shop/t/33/assets/show-more.js?v=135784227224860024771788953234" defer="defer"></script>
11623 11624 11625 11626 11627 11628 <details 11629 id="Details-custom-price-filter-template--28113427169578__product-grid" 11630 class=" facets__disclosure-vertical js-filter custom-price-filter" 11631 data-index="14" 11632 > 11633 <summary class="facets__summary caption-large focus-offset"> 11634 <div> 11635 <span>Precio</span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 11636</div> 11637 </summary> 11638 <div 11639 id="Facet-custom-price-template--28113427169578__product-grid" 11640 class="facets__display-vertical" 11641 > 11642 <div class="facets__header-vertical"> 11643 <span class="facets__selected">0.00 EUR</span> 11644 </div> 11645 11646 <div class="custom-price-range-container"> 11647 <!-- Price input fields --> 11648 <div class="custom-price-input"> 11649 <div class="custom-price-field"> 11650 <span>â¬</span> 11651 <input type="number" class="custom-min-input" id="Filter-Price-GTE" name="filter.v.price.gte" value="0" min="0"> 11652 </div> 11653 <div class="custom-price-field"> 11654 <span>â¬</span> 11655 <input type="number" class="custom-max-input" id="Filter-Price-LTE" name="filter.v.price.lte" value="835" max="1000"> 11656 </div> 11657 </div> 11658 11659 <!-- Slider bar with progress --> 11660 <div class="custom-slider"> 11661 <div class="custom-progress"></div> 11662 </div> 11663 11664 <!-- Range input sliders --> 11665 <div class="custom-range-input"> 11666 <input type="range" class="custom-range-min" min="0" max="835" value="0" step="5"> 11667 <input type="range" class="custom-range-max" min="0" max="835" value="835" step="5"> 11668 </div> 11669 11670 <button type="submit" class="button button--tertiary custom-price-filter-button">Filtro</button> 11671 </div> 11672 </div> 11673 </details> 11674 11675 11676 11677 11678 <details 11679 id="Details-filter.p.m.product_options.color_and_material-template--28113427169578__product-grid" 11680 class=" facets__disclosure-vertical js-filter" 11681 data-index="2" 11682 > 11683 <summary 11684 class="facets__summary caption-large focus-offset" 11685 aria-label="Color y material (0 seleccionado)" 11686 > 11687 <div> 11688 <span class="facets__summary-label">Color y material 11689<span class="facets__selected hidden"> 11690 (0)</span 11691 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 11692</div> 11693 </summary> 11694 <div 11695 id="Facet-2-template--28113427169578__product-grid" 11696 class="parent-display facets__display-vertical" 11697 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 11698 <legend class="visually-hidden">Color y material</legend><ul 11699 class="facets-layout facets-layout-list facets-layout-list--swatch facets__list--vertical list-unstyled" 11700 role="list" 11701 > 11702<li class="list-menu__item facets__item"><div class="facets__label facet-checkbox 11703"> 11704 <div class="swatch-input-wrapper"> 11705 11706 11707<input
11708 type="checkbox" 11709 id="Filter-filter.p.m.product_options.color_and_material-1" 11710 name="filter.p.m.product_options.color_and_material" 11711 value="gid://shopify/Metaobject/73915138346" 11712 form="FacetFiltersForm" 11713 class="swatch-input__input" 11714 11715 11716 11717> 11718<label 11719 for="Filter-filter.p.m.product_options.color_and_material-1" 11720 title="gid://shopify/Metaobject/73915138346" 11721 class="swatch-input__label" 11722 data-option-value="gid://shopify/Metaobject/73915138346" 11723> 11724 11725<span 11726 11727 class="swatch" 11728 style="--swatch--background: url(//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=50); --swatch-focal-point: 50.0% 50.0%;" 11729 11730></span> 11731 11732 11733 11734</label> 11735 11736 </div> 11737 11738 <span class="facet-checkbox__text" aria-hidden="true"> 11739 <span class="facet-checkbox__text-label">gris antracita</span> (11) 11740 </span> 11741 <span class="visually-hidden">gris antracita (11 productos) 11742 </span> 11743 </div></li> 11744<li class="list-menu__item facets__item"><div class="facets__label facet-checkbox 11745"> 11746 <div class="swatch-input-wrapper"> 11747 11748 11749<input 11750 type="checkbox" 11751 id="Filter-filter.p.m.product_options.color_and_material-2" 11752 name="filter.p.m.product_options.color_and_material" 11753 value="gid://shopify/Metaobject/73915466026" 11754 form="FacetFiltersForm" 11755 class="swatch-input__input" 11756 11757 11758 11759> 11760<label 11761 for="Filter-filter.p.m.product_options.color_and_material-2" 11762 title="gid://shopify/Metaobject/73915466026" 11763 class="swatch-input__label" 11764 data-option-value="gid://shopify/Metaobject/73915466026" 11765> 11766 11767<span 11768 11769 class="swatch" 11770 style="--swatch--background: url(//rendl.es/cdn/shop/files/55_light-grey.jpg?v=1739538326&width=50); --swatch-focal-point: 50.0% 50.0%;" 11771 11772></span> 11773 11774 11775 11776</label> 11777 11778 </div> 11779 11780 <span class="facet-checkbox__text" aria-hidden="true"> 11781 <span class="facet-checkbox__text-label">gris luminoso</span> (2) 11782 </span> 11783 <span class="visually-hidden">gris luminoso (2 productos) 11784 </span> 11785 </div></li> 11786<li class="list-menu__item facets__item"><div class="facets__label facet-checkbox 11787"> 11788 <div class="swatch-input-wrapper"> 11789 11790 11791<input 11792 type="checkbox" 11793 id="Filter-filter.p.m.product_options.color_and_material-3" 11794 name="filter.p.m.product_options.color_and_material" 11795 value="gid://shopify/Metaobject/73915367722" 11796 form="FacetFiltersForm" 11797 class="swatch-input__input" 11798 11799 11800 11801> 11802<label 11803 for="Filter-filter.p.m.product_options.color_and_material-3" 11804 title="gid://shopify/Metaobject/73915367722" 11805 class="swatch-input__label" 11806 data-option-value="gid://shopify/Metaobject/73915367722" 11807> 11808 11809<span 11810 11811 class="swatch" 11812 style="--swatch--background: url(//rendl.es/cdn/shop/files/52_black-grey.jpg?v=1739538319&width=50); --swatch-focal-point: 50.0% 50.0%;" 11813 11814></span> 11815 11816 11817 11818</label> 11819 11820 </div> 11821 11822 <span class="facet-checkbox__text" aria-hidden="true"> 11823 <span class="facet-checkbox__text-label">gris negruzco</span> (1) 11824 </span> 11825 <span class="visually-hidden">gris negruzco (1 producto) 11826 </span> 11827 </div></li> 11828<li class="list-menu__item facets__item"><div class="facets__label facet-checkbox 11829"> 11830 <div class="swatch-input-wrapper"> 11831 11832 11833<input 11834 type="checkbox" 11835 id="Filter-filter.p.m.product_options.color_and_material-4" 11836 name="filter.p.m.product_options.color_and_material" 11837 value="gid://shopify/Metaobject/73916317994" 11838 form="FacetFiltersForm" 11839 class="swatch-input__input" 11840 11841 11842 11843> 11844<label 11845 for="Filter-filter.p.m.product_options.color_and_material-4" 11846 title="gid://shopify/Metaobject/73916317994" 11847 class="swatch-input__label" 11848 data-option-value="gid://shopify/Metaobject/73916317994" 11849> 11850 11851<span 11852 11853 class="swatch" 11854 style="--swatch--background: url(//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=50); --swatch-focal-point: 50.0% 50.0%;" 11855 11856></span> 11857 11858 11859 11860</label> 11861 11862 </div> 11863
11864 <span class="facet-checkbox__text" aria-hidden="true"> 11865 <span class="facet-checkbox__text-label">negro</span> (6) 11866 </span> 11867 <span class="visually-hidden">negro (6 productos) 11868 </span> 11869 </div></li> 11870<li class="list-menu__item facets__item"><div class="facets__label facet-checkbox 11871"> 11872 <div class="swatch-input-wrapper"> 11873 11874 11875<input 11876 type="checkbox" 11877 id="Filter-filter.p.m.product_options.color_and_material-5" 11878 name="filter.p.m.product_options.color_and_material" 11879 value="gid://shopify/Metaobject/73916547370" 11880 form="FacetFiltersForm" 11881 class="swatch-input__input" 11882 11883 11884 11885> 11886<label 11887 for="Filter-filter.p.m.product_options.color_and_material-5" 11888 title="gid://shopify/Metaobject/73916547370" 11889 class="swatch-input__label" 11890 data-option-value="gid://shopify/Metaobject/73916547370" 11891> 11892 11893<span 11894 11895 class="swatch" 11896 style="--swatch--background: url(//rendl.es/cdn/shop/files/88_black-ambercolored-glass.jpg?v=1739538420&width=50); --swatch-focal-point: 50.0% 50.0%;" 11897 11898></span> 11899 11900 11901 11902</label> 11903 11904 </div> 11905 11906 <span class="facet-checkbox__text" aria-hidden="true"> 11907 <span class="facet-checkbox__text-label">negro / vidrio ámbar</span> (1) 11908 </span> 11909 <span class="visually-hidden">negro / vidrio ámbar (1 producto) 11910 </span> 11911 </div></li></ul> 11912 </fieldset> 11913 </div> 11914 </details> 11915 11916 11917 11918 11919 <details 11920 id="Details-filter.v.availability-template--28113427169578__product-grid" 11921 class=" facets__disclosure-vertical js-filter" 11922 data-index="3" 11923 > 11924 <summary 11925 class="facets__summary caption-large focus-offset" 11926 aria-label="Disponibilidad (0 seleccionado)" 11927 > 11928 <div> 11929 <span class="facets__summary-label">Disponibilidad 11930<span class="facets__selected hidden"> 11931 (0)</span 11932 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 11933</div> 11934 </summary> 11935 <div 11936 id="Facet-3-template--28113427169578__product-grid" 11937 class="parent-display facets__display-vertical" 11938 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 11939 <legend class="visually-hidden">Disponibilidad</legend><ul 11940 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 11941 role="list" 11942 > 11943<li class="list-menu__item facets__item"><label for="Filter-filter.v.availability-1" class="facets__label facet-checkbox 11944"> 11945 <input 11946 type="checkbox" 11947 name="filter.v.availability" 11948 value="1" 11949 id="Filter-filter.v.availability-1" 11950 11951 11952 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 11953<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 11954</div><span class="facet-checkbox__text" aria-hidden="true">
11955 <span class="facet-checkbox__text-label">En existencia</span> (16) 11956 </span> 11957 <span class="visually-hidden">En existencia (16 productos) 11958 </span> 11959 </label></li> 11960<li class="list-menu__item facets__item"><label for="Filter-filter.v.availability-2" class="facets__label facet-checkbox 11961"> 11962 <input 11963 type="checkbox" 11964 name="filter.v.availability" 11965 value="0" 11966 id="Filter-filter.v.availability-2" 11967 11968 11969 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 11970<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 11971</div><span class="facet-checkbox__text" aria-hidden="true"> 11972 <span class="facet-checkbox__text-label">Agotado</span> (3) 11973 </span> 11974 <span class="visually-hidden">Agotado (3 productos) 11975 </span> 11976 </label></li></ul> 11977 </fieldset> 11978 </div> 11979 </details> 11980 11981 11982 11983 11984 <details 11985 id="Details-filter.v.m.product_attributes.status_in_sortiment-template--28113427169578__product-grid" 11986 class=" facets__disclosure-vertical js-filter" 11987 data-index="4" 11988 > 11989 <summary 11990 class="facets__summary caption-large focus-offset" 11991 aria-label="NUEVO/OFERTA (0 seleccionado)" 11992 > 11993 <div> 11994 <span class="facets__summary-label">NUEVO/OFERTA 11995<span class="facets__selected hidden"> 11996 (0)</span 11997 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 11998</div> 11999 </summary> 12000 <div 12001 id="Facet-4-template--28113427169578__product-grid" 12002 class="parent-display facets__display-vertical" 12003 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12004 <legend class="visually-hidden">NUEVO/OFERTA</legend><ul 12005 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12006 role="list" 12007 > 12008<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.status_in_sortiment-1" class="facets__label facet-checkbox 12009"> 12010 <input 12011 type="checkbox" 12012 name="filter.v.m.product_attributes.status_in_sortiment" 12013 value="NEW" 12014 id="Filter-filter.v.m.product_attributes.status_in_sortiment-1" 12015 12016 12017 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12018<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12018<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12019</div><span class="facet-checkbox__text" aria-hidden="true"> 12020 <span class="facet-checkbox__text-label">NEW</span> (7) 12021 </span> 12022 <span class="visually-hidden">NEW (7 productos) 12023 </span> 12024 </label></li> 12025<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.status_in_sortiment-2" class="facets__label facet-checkbox 12026"> 12027 <input 12028 type="checkbox" 12029 name="filter.v.m.product_attributes.status_in_sortiment" 12030 value="VYB" 12031 id="Filter-filter.v.m.product_attributes.status_in_sortiment-2" 12032 12033 12034 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12035<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12036</div><span class="facet-checkbox__text" aria-hidden="true"> 12037 <span class="facet-checkbox__text-label">VYB</span> (2) 12038 </span> 12039 <span class="visually-hidden">VYB (2 productos) 12040 </span> 12041 </label></li></ul> 12042 </fieldset> 12043 </div> 12044 </details> 12045 12046 12047 12048 12049 <details 12050 id="Details-filter.v.m.product_attributes.ip_rate-template--28113427169578__product-grid" 12051 class=" facets__disclosure-vertical js-filter" 12052 data-index="5" 12053 > 12054 <summary 12055 class="facets__summary caption-large focus-offset" 12056 aria-label="Clasificación IP (0 seleccionado)" 12057 > 12058 <div> 12059 <span class="facets__summary-label">Clasificación IP 12060<span class="facets__selected hidden"> 12061 (0)</span 12062 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12063</div> 12064 </summary> 12065 <div 12066 id="Facet-5-template--28113427169578__product-grid" 12067 class="parent-display facets__display-vertical" 12068 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12069 <legend class="visually-hidden">Clasificación IP</legend><ul 12070 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12071 role="list" 12072 > 12073<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.ip_rate-1" class="facets__label facet-checkbox 12074"> 12075 <input 12076 type="checkbox" 12077 name="filter.v.m.product_attributes.ip_rate" 12078 value="IP44" 12079 id="Filter-filter.v.m.product_attributes.ip_rate-1" 12080 12081 12082 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12083<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12083<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12084</div><span class="facet-checkbox__text" aria-hidden="true"> 12085 <span class="facet-checkbox__text-label">IP44</span> (6) 12086 </span> 12087 <span class="visually-hidden">IP44 (6 productos) 12088 </span> 12089 </label></li> 12090<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.ip_rate-2" class="facets__label facet-checkbox 12091"> 12092 <input 12093 type="checkbox" 12094 name="filter.v.m.product_attributes.ip_rate" 12095 value="IP54" 12096 id="Filter-filter.v.m.product_attributes.ip_rate-2" 12097 12098 12099 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12100<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12101</div><span class="facet-checkbox__text" aria-hidden="true"> 12102 <span class="facet-checkbox__text-label">IP54</span> (7) 12103 </span> 12104 <span class="visually-hidden">IP54 (7 productos) 12105 </span> 12106 </label></li> 12107<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.ip_rate-3" class="facets__label facet-checkbox 12108"> 12109 <input 12110 type="checkbox" 12111 name="filter.v.m.product_attributes.ip_rate" 12112 value="IP65" 12113 id="Filter-filter.v.m.product_attributes.ip_rate-3" 12114 12115 12116 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12117<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12118</div><span class="facet-checkbox__text" aria-hidden="true"> 12119 <span class="facet-checkbox__text-label">IP65</span> (6) 12120 </span> 12121 <span class="visually-hidden">IP65 (6 productos) 12122 </span> 12123 </label></li></ul> 12124 </fieldset> 12125 </div> 12126 </details> 12127 12128 12129 12130 12131 <details 12132 id="Details-filter.v.m.product_attributes.Watt-template--28113427169578__product-grid" 12133 class=" facets__disclosure-vertical js-filter" 12134 data-index="6" 12135 > 12136 <summary 12137 class="facets__summary caption-large focus-offset" 12138 aria-label="Vatio (0 seleccionado)" 12139 > 12140 <div> 12141 <span class="facets__summary-label">Vatio 12142<span class="facets__selected hidden"> 12143 (0)</span 12144 ></span><svg class="icon icon-caret" viewBox="0 0 10 6">
12144<path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12145</div> 12146 </summary> 12147 <div 12148 id="Facet-6-template--28113427169578__product-grid" 12149 class="parent-display facets__display-vertical" 12150 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12151 <legend class="visually-hidden">Vatio</legend><ul 12152 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12153 role="list" 12154 > 12155<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-1" class="facets__label facet-checkbox 12156"> 12157 <input 12158 type="checkbox" 12159 name="filter.v.m.product_attributes.Watt" 12160 value="5.0" 12161 id="Filter-filter.v.m.product_attributes.Watt-1" 12162 12163 12164 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12165<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12166</div><span class="facet-checkbox__text" aria-hidden="true"> 12167 <span class="facet-checkbox__text-label">5.0</span> (1) 12168 </span> 12169 <span class="visually-hidden">5.0 (1 producto) 12170 </span> 12171 </label></li> 12172<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-2" class="facets__label facet-checkbox 12173"> 12174 <input 12175 type="checkbox" 12176 name="filter.v.m.product_attributes.Watt" 12177 value="7.0" 12178 id="Filter-filter.v.m.product_attributes.Watt-2" 12179 12180 12181 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12182<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12183</div><span class="facet-checkbox__text" aria-hidden="true"> 12184 <span class="facet-checkbox__text-label">7.0</span> (6) 12185 </span> 12186 <span class="visually-hidden">7.0 (6 productos) 12187 </span> 12188 </label></li> 12189<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-3" class="facets__label facet-checkbox 12190"> 12191 <input 12192 type="checkbox" 12193 name="filter.v.m.product_attributes.Watt" 12194 value="8.0" 12195 id="Filter-filter.v.m.product_attributes.Watt-3" 12196 12197 12198 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12199<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12199<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12200</div><span class="facet-checkbox__text" aria-hidden="true"> 12201 <span class="facet-checkbox__text-label">8.0</span> (1) 12202 </span> 12203 <span class="visually-hidden">8.0 (1 producto) 12204 </span> 12205 </label></li> 12206<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-4" class="facets__label facet-checkbox 12207"> 12208 <input 12209 type="checkbox" 12210 name="filter.v.m.product_attributes.Watt" 12211 value="9.0" 12212 id="Filter-filter.v.m.product_attributes.Watt-4" 12213 12214 12215 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12216<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12217</div><span class="facet-checkbox__text" aria-hidden="true"> 12218 <span class="facet-checkbox__text-label">9.0</span> (2) 12219 </span> 12220 <span class="visually-hidden">9.0 (2 productos) 12221 </span> 12222 </label></li> 12223<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-5" class="facets__label facet-checkbox 12224"> 12225 <input 12226 type="checkbox" 12227 name="filter.v.m.product_attributes.Watt" 12228 value="10.0" 12229 id="Filter-filter.v.m.product_attributes.Watt-5" 12230 12231 12232 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12233<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12234</div><span class="facet-checkbox__text" aria-hidden="true"> 12235 <span class="facet-checkbox__text-label">10.0</span> (1) 12236 </span> 12237 <span class="visually-hidden">10.0 (1 producto) 12238 </span> 12239 </label></li> 12240<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-6" class="facets__label facet-checkbox 12241"> 12242 <input 12243 type="checkbox" 12244 name="filter.v.m.product_attributes.Watt" 12245 value="11.0" 12246 id="Filter-filter.v.m.product_attributes.Watt-6" 12247 12248 12249 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12250<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12250<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12251</div><span class="facet-checkbox__text" aria-hidden="true"> 12252 <span class="facet-checkbox__text-label">11.0</span> (3) 12253 </span> 12254 <span class="visually-hidden">11.0 (3 productos) 12255 </span> 12256 </label></li> 12257<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-7" class="facets__label facet-checkbox 12258"> 12259 <input 12260 type="checkbox" 12261 name="filter.v.m.product_attributes.Watt" 12262 value="12.0" 12263 id="Filter-filter.v.m.product_attributes.Watt-7" 12264 12265 12266 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12267<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12268</div><span class="facet-checkbox__text" aria-hidden="true"> 12269 <span class="facet-checkbox__text-label">12.0</span> (1) 12270 </span> 12271 <span class="visually-hidden">12.0 (1 producto) 12272 </span> 12273 </label></li> 12274<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Watt-8" class="facets__label facet-checkbox 12275"> 12276 <input 12277 type="checkbox" 12278 name="filter.v.m.product_attributes.Watt" 12279 value="15.0" 12280 id="Filter-filter.v.m.product_attributes.Watt-8" 12281 12282 12283 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12284<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12285</div><span class="facet-checkbox__text" aria-hidden="true"> 12286 <span class="facet-checkbox__text-label">15.0</span> (4) 12287 </span> 12288 <span class="visually-hidden">15.0 (4 productos) 12289 </span> 12290 </label></li></ul> 12291 </fieldset> 12292 </div> 12293 </details> 12294 12295 12296 12297 12298 <details 12299 id="Details-filter.v.m.product_attributes.socket-template--28113427169578__product-grid" 12300 class=" facets__disclosure-vertical js-filter" 12301 data-index="7" 12302 > 12303 <summary 12304 class="facets__summary caption-large focus-offset" 12305 aria-label="Casquillo (0 seleccionado)" 12306 > 12307 <div> 12308 <span class="facets__summary-label">Casquillo 12309<span class="facets__selected hidden"> 12310 (0)</span 12311 ></span><svg class="icon icon-caret" viewBox="0 0 10 6">
12311<path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12312</div> 12313 </summary> 12314 <div 12315 id="Facet-7-template--28113427169578__product-grid" 12316 class="parent-display facets__display-vertical" 12317 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12318 <legend class="visually-hidden">Casquillo</legend><ul 12319 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12320 role="list" 12321 > 12322<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.socket-1" class="facets__label facet-checkbox 12323"> 12324 <input 12325 type="checkbox" 12326 name="filter.v.m.product_attributes.socket" 12327 value="LED" 12328 id="Filter-filter.v.m.product_attributes.socket-1" 12329 12330 12331 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12332<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12333</div><span class="facet-checkbox__text" aria-hidden="true"> 12334 <span class="facet-checkbox__text-label">LED</span> (1) 12335 </span> 12336 <span class="visually-hidden">LED (1 producto) 12337 </span> 12338 </label></li> 12339<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.socket-2" class="facets__label facet-checkbox 12340"> 12341 <input 12342 type="checkbox" 12343 name="filter.v.m.product_attributes.socket" 12344 value="LED E27" 12345 id="Filter-filter.v.m.product_attributes.socket-2" 12346 12347 12348 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12349<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12350</div><span class="facet-checkbox__text" aria-hidden="true"> 12351 <span class="facet-checkbox__text-label">LED E27</span> (6) 12352 </span> 12353 <span class="visually-hidden">LED E27 (6 productos) 12354 </span> 12355 </label></li> 12356<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.socket-3" class="facets__label facet-checkbox 12357"> 12358 <input 12359 type="checkbox" 12360 name="filter.v.m.product_attributes.socket" 12361 value="LED G9" 12362 id="Filter-filter.v.m.product_attributes.socket-3" 12363 12364 12365 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12366<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12366<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12367</div><span class="facet-checkbox__text" aria-hidden="true"> 12368 <span class="facet-checkbox__text-label">LED G9</span> (1) 12369 </span> 12370 <span class="visually-hidden">LED G9 (1 producto) 12371 </span> 12372 </label></li> 12373<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.socket-4" class="facets__label facet-checkbox 12374"> 12375 <input 12376 type="checkbox" 12377 name="filter.v.m.product_attributes.socket" 12378 value="LED R7s 78mm" 12379 id="Filter-filter.v.m.product_attributes.socket-4" 12380 12381 12382 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12383<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12384</div><span class="facet-checkbox__text" aria-hidden="true"> 12385 <span class="facet-checkbox__text-label">LED R7s 78mm</span> (1) 12386 </span> 12387 <span class="visually-hidden">LED R7s 78mm (1 producto) 12388 </span> 12389 </label></li></ul> 12390 </fieldset> 12391 </div> 12392 </details> 12393 12394 12395 12396 12397 <details 12398 id="Details-filter.v.m.custom.led-template--28113427169578__product-grid" 12399 class=" facets__disclosure-vertical js-filter" 12400 data-index="8" 12401 > 12402 <summary 12403 class="facets__summary caption-large focus-offset" 12404 aria-label="LED integrado (0 seleccionado)" 12405 > 12406 <div> 12407 <span class="facets__summary-label">LED integrado 12408<span class="facets__selected hidden"> 12409 (0)</span 12410 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12411</div> 12412 </summary> 12413 <div 12414 id="Facet-8-template--28113427169578__product-grid" 12415 class="parent-display facets__display-vertical" 12416 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12417 <legend class="visually-hidden">LED integrado</legend><ul 12418 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12419 role="list" 12420 > 12421<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.custom.led-1" class="facets__label facet-checkbox 12422"> 12423 <input 12424 type="checkbox" 12425 name="filter.v.m.custom.led" 12426 value="LED" 12427 id="Filter-filter.v.m.custom.led-1" 12428 12429 12430 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12431<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12431<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12432</div><span class="facet-checkbox__text" aria-hidden="true"> 12433 <span class="facet-checkbox__text-label">SÃ</span> (11) 12434 </span> 12435 <span class="visually-hidden">Sà (11 productos) 12436 </span> 12437 </label></li></ul> 12438 </fieldset> 12439 </div> 12440 </details> 12441 12442 12443 12444 12445 <details 12446 id="Details-filter.v.m.product_attributes.Diameter-template--28113427169578__product-grid" 12447 class=" facets__disclosure-vertical js-filter" 12448 data-index="9" 12449 > 12450 <summary 12451 class="facets__summary caption-large focus-offset" 12452 aria-label="Diámetro (0 seleccionado)" 12453 > 12454 <div> 12455 <span class="facets__summary-label">Diámetro 12456<span class="facets__selected hidden"> 12457 (0)</span 12458 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12459</div> 12460 </summary> 12461 <div 12462 id="Facet-9-template--28113427169578__product-grid" 12463 class="parent-display facets__display-vertical" 12464 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12465 <legend class="visually-hidden">Diámetro</legend><ul 12466 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12467 role="list" 12468 > 12469<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-1" class="facets__label facet-checkbox 12470"> 12471 <input 12472 type="checkbox" 12473 name="filter.v.m.product_attributes.Diameter" 12474 value="8.0" 12475 id="Filter-filter.v.m.product_attributes.Diameter-1" 12476 12477 12478 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12479<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12480</div><span class="facet-checkbox__text" aria-hidden="true"> 12481 <span class="facet-checkbox__text-label">8.0</span> (1) 12482 </span> 12483 <span class="visually-hidden">8.0 (1 producto) 12484 </span> 12485 </label></li> 12486<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-2" class="facets__label facet-checkbox 12487"> 12488 <input 12489 type="checkbox" 12490 name="filter.v.m.product_attributes.Diameter" 12491 value="9.0" 12492 id="Filter-filter.v.m.product_attributes.Diameter-2" 12493 12494 12495 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12496<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12496<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12497</div><span class="facet-checkbox__text" aria-hidden="true"> 12498 <span class="facet-checkbox__text-label">9.0</span> (1) 12499 </span> 12500 <span class="visually-hidden">9.0 (1 producto) 12501 </span> 12502 </label></li> 12503<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-3" class="facets__label facet-checkbox 12504"> 12505 <input 12506 type="checkbox" 12507 name="filter.v.m.product_attributes.Diameter" 12508 value="10.0" 12509 id="Filter-filter.v.m.product_attributes.Diameter-3" 12510 12511 12512 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12513<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12514</div><span class="facet-checkbox__text" aria-hidden="true"> 12515 <span class="facet-checkbox__text-label">10.0</span> (1) 12516 </span> 12517 <span class="visually-hidden">10.0 (1 producto) 12518 </span> 12519 </label></li> 12520<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-4" class="facets__label facet-checkbox 12521"> 12522 <input 12523 type="checkbox" 12524 name="filter.v.m.product_attributes.Diameter" 12525 value="11.0" 12526 id="Filter-filter.v.m.product_attributes.Diameter-4" 12527 12528 12529 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12530<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12531</div><span class="facet-checkbox__text" aria-hidden="true"> 12532 <span class="facet-checkbox__text-label">11.0</span> (1) 12533 </span> 12534 <span class="visually-hidden">11.0 (1 producto) 12535 </span> 12536 </label></li> 12537<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-5" class="facets__label facet-checkbox 12538"> 12539 <input 12540 type="checkbox" 12541 name="filter.v.m.product_attributes.Diameter" 12542 value="11.8" 12543 id="Filter-filter.v.m.product_attributes.Diameter-5" 12544 12545 12546 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12547<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12547<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12548</div><span class="facet-checkbox__text" aria-hidden="true"> 12549 <span class="facet-checkbox__text-label">11.8</span> (1) 12550 </span> 12551 <span class="visually-hidden">11.8 (1 producto) 12552 </span> 12553 </label></li> 12554<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.Diameter-6" class="facets__label facet-checkbox 12555"> 12556 <input 12557 type="checkbox" 12558 name="filter.v.m.product_attributes.Diameter" 12559 value="12.0" 12560 id="Filter-filter.v.m.product_attributes.Diameter-6" 12561 12562 12563 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12564<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12565</div><span class="facet-checkbox__text" aria-hidden="true"> 12566 <span class="facet-checkbox__text-label">12.0</span> (1) 12567 </span> 12568 <span class="visually-hidden">12.0 (1 producto) 12569 </span> 12570 </label></li></ul> 12571 </fieldset> 12572 </div> 12573 </details> 12574 12575 12576 12577 12578 <details 12579 id="Details-filter.v.m.product_attributes.lumens-template--28113427169578__product-grid" 12580 class=" facets__disclosure-vertical js-filter" 12581 data-index="10" 12582 > 12583 <summary 12584 class="facets__summary caption-large focus-offset" 12585 aria-label="Lumen (0 seleccionado)" 12586 > 12587 <div> 12588 <span class="facets__summary-label">Lumen 12589<span class="facets__selected hidden"> 12590 (0)</span 12591 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12592</div> 12593 </summary> 12594 <div 12595 id="Facet-10-template--28113427169578__product-grid" 12596 class="parent-display facets__display-vertical" 12597 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12598 <legend class="visually-hidden">Lumen</legend><ul 12599 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12600 role="list" 12601 > 12602<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-1" class="facets__label facet-checkbox 12603"> 12604 <input 12605 type="checkbox" 12606 name="filter.v.m.product_attributes.lumens" 12607 value="123" 12608 id="Filter-filter.v.m.product_attributes.lumens-1" 12609 12610 12611 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12612<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12612<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12613</div><span class="facet-checkbox__text" aria-hidden="true"> 12614 <span class="facet-checkbox__text-label">123</span> (1) 12615 </span> 12616 <span class="visually-hidden">123 (1 producto) 12617 </span> 12618 </label></li> 12619<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-2" class="facets__label facet-checkbox 12620"> 12621 <input 12622 type="checkbox" 12623 name="filter.v.m.product_attributes.lumens" 12624 value="423" 12625 id="Filter-filter.v.m.product_attributes.lumens-2" 12626 12627 12628 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12629<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12630</div><span class="facet-checkbox__text" aria-hidden="true"> 12631 <span class="facet-checkbox__text-label">423</span> (1) 12632 </span> 12633 <span class="visually-hidden">423 (1 producto) 12634 </span> 12635 </label></li> 12636<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-3" class="facets__label facet-checkbox 12637"> 12638 <input 12639 type="checkbox" 12640 name="filter.v.m.product_attributes.lumens" 12641 value="477" 12642 id="Filter-filter.v.m.product_attributes.lumens-3" 12643 12644 12645 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12646<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12647</div><span class="facet-checkbox__text" aria-hidden="true"> 12648 <span class="facet-checkbox__text-label">477</span> (1) 12649 </span> 12650 <span class="visually-hidden">477 (1 producto) 12651 </span> 12652 </label></li> 12653<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-4" class="facets__label facet-checkbox 12654"> 12655 <input 12656 type="checkbox" 12657 name="filter.v.m.product_attributes.lumens" 12658 value="580" 12659 id="Filter-filter.v.m.product_attributes.lumens-4" 12660 12661 12662 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12663<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12663<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12664</div><span class="facet-checkbox__text" aria-hidden="true"> 12665 <span class="facet-checkbox__text-label">580</span> (3) 12666 </span> 12667 <span class="visually-hidden">580 (3 productos) 12668 </span> 12669 </label></li> 12670<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-5" class="facets__label facet-checkbox 12671"> 12672 <input 12673 type="checkbox" 12674 name="filter.v.m.product_attributes.lumens" 12675 value="640" 12676 id="Filter-filter.v.m.product_attributes.lumens-5" 12677 12678 12679 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12680<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12681</div><span class="facet-checkbox__text" aria-hidden="true"> 12682 <span class="facet-checkbox__text-label">640</span> (1) 12683 </span> 12684 <span class="visually-hidden">640 (1 producto) 12685 </span> 12686 </label></li> 12687<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-6" class="facets__label facet-checkbox 12688"> 12689 <input 12690 type="checkbox" 12691 name="filter.v.m.product_attributes.lumens" 12692 value="720" 12693 id="Filter-filter.v.m.product_attributes.lumens-6" 12694 12695 12696 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12697<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12698</div><span class="facet-checkbox__text" aria-hidden="true"> 12699 <span class="facet-checkbox__text-label">720</span> (1) 12700 </span> 12701 <span class="visually-hidden">720 (1 producto) 12702 </span> 12703 </label></li> 12704<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-7" class="facets__label facet-checkbox 12705"> 12706 <input 12707 type="checkbox" 12708 name="filter.v.m.product_attributes.lumens" 12709 value="730" 12710 id="Filter-filter.v.m.product_attributes.lumens-7" 12711 12712 12713 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12714<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12714<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12715</div><span class="facet-checkbox__text" aria-hidden="true"> 12716 <span class="facet-checkbox__text-label">730</span> (1) 12717 </span> 12718 <span class="visually-hidden">730 (1 producto) 12719 </span> 12720 </label></li> 12721<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-8" class="facets__label facet-checkbox 12722"> 12723 <input 12724 type="checkbox" 12725 name="filter.v.m.product_attributes.lumens" 12726 value="1000" 12727 id="Filter-filter.v.m.product_attributes.lumens-8" 12728 12729 12730 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12731<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12732</div><span class="facet-checkbox__text" aria-hidden="true"> 12733 <span class="facet-checkbox__text-label">1000</span> (1) 12734 </span> 12735 <span class="visually-hidden">1000 (1 producto) 12736 </span> 12737 </label></li> 12738<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.lumens-9" class="facets__label facet-checkbox 12739"> 12740 <input 12741 type="checkbox" 12742 name="filter.v.m.product_attributes.lumens" 12743 value="1010" 12744 id="Filter-filter.v.m.product_attributes.lumens-9" 12745 12746 12747 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12748<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12749</div><span class="facet-checkbox__text" aria-hidden="true"> 12750 <span class="facet-checkbox__text-label">1010</span> (1) 12751 </span> 12752 <span class="visually-hidden">1010 (1 producto) 12753 </span> 12754 </label></li></ul> 12755 </fieldset> 12756 </div> 12757 </details> 12758 12759 12760 12761 12762 <details 12763 id="Details-filter.v.m.product_attributes.kelvin-template--28113427169578__product-grid" 12764 class=" facets__disclosure-vertical js-filter" 12765 data-index="11" 12766 > 12767 <summary 12768 class="facets__summary caption-large focus-offset" 12769 aria-label="Kelvin (0 seleccionado)" 12770 > 12771 <div> 12772 <span class="facets__summary-label">Kelvin 12773<span class="facets__selected hidden"> 12774 (0)</span 12775 ></span><svg class="icon icon-caret" viewBox="0 0 10 6">
12775<path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12776</div> 12777 </summary> 12778 <div 12779 id="Facet-11-template--28113427169578__product-grid" 12780 class="parent-display facets__display-vertical" 12781 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12782 <legend class="visually-hidden">Kelvin</legend><ul 12783 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12784 role="list" 12785 > 12786<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.kelvin-1" class="facets__label facet-checkbox 12787"> 12788 <input 12789 type="checkbox" 12790 name="filter.v.m.product_attributes.kelvin" 12791 value="3000" 12792 id="Filter-filter.v.m.product_attributes.kelvin-1" 12793 12794 12795 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12796<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12797</div><span class="facet-checkbox__text" aria-hidden="true"> 12798 <span class="facet-checkbox__text-label">3000</span> (11) 12799 </span> 12800 <span class="visually-hidden">3000 (11 productos) 12801 </span> 12802 </label></li></ul> 12803 </fieldset> 12804 </div> 12805 </details> 12806 12807 12808 12809 12810 <details 12811 id="Details-filter.v.m.product_attributes.dimming-template--28113427169578__product-grid" 12812 class=" facets__disclosure-vertical js-filter" 12813 data-index="12" 12814 > 12815 <summary 12816 class="facets__summary caption-large focus-offset" 12817 aria-label="Regulable (0 seleccionado)" 12818 > 12819 <div> 12820 <span class="facets__summary-label">Regulable 12821<span class="facets__selected hidden"> 12822 (0)</span 12823 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12824</div> 12825 </summary> 12826 <div 12827 id="Facet-12-template--28113427169578__product-grid" 12828 class="parent-display facets__display-vertical" 12829 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12830 <legend class="visually-hidden">Regulable</legend><ul 12831 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12832 role="list" 12833 > 12834<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.dimming-1" class="facets__label facet-checkbox 12835"> 12836 <input 12837 type="checkbox" 12838 name="filter.v.m.product_attributes.dimming" 12839 value="dimmable with suitable light source" 12840 id="Filter-filter.v.m.product_attributes.dimming-1" 12841 12842 12843 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12844<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12844<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12845</div><span class="facet-checkbox__text" aria-hidden="true"> 12846 <span class="facet-checkbox__text-label">Regulable con fuente de luz adecuada</span> (5) 12847 </span> 12848 <span class="visually-hidden">Regulable con fuente de luz adecuada (5 productos) 12849 </span> 12850 </label></li></ul> 12851 </fieldset> 12852 </div> 12853 </details> 12854 12855 12856 12857 12858 <details 12859 id="Details-filter.v.m.product_attributes.beam_angle-template--28113427169578__product-grid" 12860 class=" facets__disclosure-vertical js-filter" 12861 data-index="13" 12862 > 12863 <summary 12864 class="facets__summary caption-large focus-offset" 12865 aria-label="Beam angle (0 seleccionado)" 12866 > 12867 <div> 12868 <span class="facets__summary-label">Beam angle 12869<span class="facets__selected hidden"> 12870 (0)</span 12871 ></span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 12872</div> 12873 </summary> 12874 <div 12875 id="Facet-13-template--28113427169578__product-grid" 12876 class="parent-display facets__display-vertical" 12877 ><fieldset class="facets-wrap parent-wrap facets-wrap-vertical"> 12878 <legend class="visually-hidden">Beam angle</legend><ul 12879 class="facets-layout facets-layout-list facets-layout-list--text facets__list--vertical list-unstyled" 12880 role="list" 12881 > 12882<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.beam_angle-1" class="facets__label facet-checkbox 12883"> 12884 <input 12885 type="checkbox" 12886 name="filter.v.m.product_attributes.beam_angle" 12887 value="55" 12888 id="Filter-filter.v.m.product_attributes.beam_angle-1" 12889 12890 12891 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12892<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12893</div><span class="facet-checkbox__text" aria-hidden="true"> 12894 <span class="facet-checkbox__text-label">55</span> (1) 12895 </span> 12896 <span class="visually-hidden">55 (1 producto) 12897 </span> 12898 </label></li> 12899<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.beam_angle-2" class="facets__label facet-checkbox 12900"> 12901 <input 12902 type="checkbox" 12903 name="filter.v.m.product_attributes.beam_angle" 12904 value="60" 12905 id="Filter-filter.v.m.product_attributes.beam_angle-2" 12906 12907 12908 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12909<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
12909<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12910</div><span class="facet-checkbox__text" aria-hidden="true"> 12911 <span class="facet-checkbox__text-label">60</span> (1) 12912 </span> 12913 <span class="visually-hidden">60 (1 producto) 12914 </span> 12915 </label></li> 12916<li class="list-menu__item facets__item"><label for="Filter-filter.v.m.product_attributes.beam_angle-3" class="facets__label facet-checkbox 12917"> 12918 <input 12919 type="checkbox" 12920 name="filter.v.m.product_attributes.beam_angle" 12921 value="120" 12922 id="Filter-filter.v.m.product_attributes.beam_angle-3" 12923 12924 12925 ><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 12926<div class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 12927</div><span class="facet-checkbox__text" aria-hidden="true"> 12928 <span class="facet-checkbox__text-label">120</span> (3) 12929 </span> 12930 <span class="visually-hidden">120 (3 productos) 12931 </span> 12932 </label></li></ul> 12933 </fieldset> 12934 </div> 12935 </details> 12936 12937</div> 12938 12939 12940 12941 12942</form> 12943 </facet-filters-form> 12944 <menu-drawer 12945 class="mobile-facets__wrapper medium-hide large-up-hide" 12946 data-breakpoint="mobile" 12947 > 12948 <details class="mobile-facets__disclosure disclosure-has-popup"> 12949 <summary class="mobile-facets__open-wrapper focus-offset"> 12950 <span class="mobile-facets__open"> 12951 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-filter" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M4.833 6.5a1.667 1.667 0 1 1 3.334 0 1.667 1.667 0 0 1-3.334 0M4.05 7H2.5a.5.5 0 0 1 0-1h1.55a2.5 2.5 0 0 1 4.9 0h8.55a.5.5 0 0 1 0 1H8.95a2.5 2.5 0 0 1-4.9 0m11.
12951117 6.5a1.667 1.667 0 1 0-3.334 0 1.667 1.667 0 0 0 3.334 0M13.5 11a2.5 2.5 0 0 1 2.45 2h1.55a.5.5 0 0 1 0 1h-1.55a2.5 2.5 0 0 1-4.9 0H2.5a.5.5 0 0 1 0-1h8.55a2.5 2.5 0 0 1 2.45-2"/></svg> 12952</span> 12953 <span class="mobile-facets__open-label button-label medium-hide large-up-hide">Filtrar y ordenar 12954</span> 12955 <span class="mobile-facets__open-label button-label small-hide">Filtro 12956</span> 12957 </span> 12958 <span tabindex="0" class="mobile-facets__close"> 12959 <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 12960</span> 12961 </span> 12962 </summary> 12963 <facet-filters-form> 12964 <form id="FacetFiltersFormMobile" class="mobile-facets"> 12965 <div class="mobile-facets__inner gradient"> 12966 <div class="mobile-facets__header"> 12967 <div class="mobile-facets__header-inner"> 12968 <h2 class="mobile-facets__heading medium-hide large-up-hide">Filtrar y ordenar 12969</h2> 12970 <h2 class="mobile-facets__heading small-hide">Filtro 12971</h2> 12972 <p class="mobile-facets__count">19 productos 12973</p> 12974 </div> 12975 </div> 12976 <div 12977 id="FacetsWrapperMobile" 12978 class="mobile-facets__main has-submenu gradient" 12979 > 12980 12981 12982 <details 12983 id="Details-Mobile-filter.v.price-template--28113427169578__product-grid" 12984 class="mobile-facets__details js-filter" 12985 data-index="mobile-1" 12986 > 12987 <summary class="mobile-facets__summary focus-inset"> 12988 <div> 12989 <span>Precio</span> 12990 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
12990ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 12991</span> 12992 </div> 12993 </summary> 12994 <div 12995 id="FacetMobile-1-template--28113427169578__product-grid" 12996 class="mobile-facets__submenu gradient" 12997 > 12998 <button 12999 class="mobile-facets__close-button link link--text focus-inset" 13000 aria-expanded="true" 13001 type="button" 13002 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13003Precio 13004 </button><p class="mobile-facets__info"> 13005 El precio más alto es 268.00 EUR 13006 </p> 13007 13008 <price-range class="facets__price"> 13009 <span class="field-currency">â¬</span> 13010 13011<div class="field"> 13012 <input 13013 class="field__input" 13014 name="filter.v.price.gte" 13015 id="Mobile-Filter-Precio-GTE"type="text" 13016 inputmode="decimal" 13017 placeholder="0" 13018 data-pattern="\d| |,|\." 13019 data-min="0" 13020 data-max="268.00" 13021 > 13022 <label class="field__label" for="Mobile-Filter-Precio-GTE">De</label> 13023</div><span class="field-currency">â¬</span><div class="field"> 13024 <input 13025 class="field__input" 13026 name="filter.v.price.lte" 13027 id="Mobile-Filter-Precio-LTE"type="text" 13028 inputmode="decimal" 13029 placeholder="268.00" 13030 data-pattern="\d| |,|\." 13031 data-min="0" 13032 data-max="268.00" 13033 > 13034 <label class="field__label" for="Mobile-Filter-Precio-LTE">Para</label> 13035</div> 13036 13037 </price-range> 13038 <div class="mobile-facets__footer"> 13039 <facet-remove class="mobile-facets__clear-wrapper"> 13040 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13041 </facet-remove> 13042 <button 13043 type="button" 13044 class="button button--primary" 13045 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13046 > 13047 Aplicar 13048 </button> 13049 </div> 13050 </div> 13051 </details> 13052 13053 13054 13055 13056 <details 13057 id="Details-Mobile-filter.p.m.product_options.color_and_material-template--28113427169578__product-grid" 13058 class="mobile-facets__details js-filter" 13059 data-index="mobile-2" 13060 > 13061 <summary class="mobile-facets__summary focus-inset"> 13062 <div> 13063 <span>Color y material</span> 13064 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13064ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13065</span> 13066 </div> 13067 </summary> 13068 <div 13069 id="FacetMobile-2-template--28113427169578__product-grid" 13070 class="mobile-facets__submenu gradient" 13071 > 13072 <button 13073 class="mobile-facets__close-button link link--text focus-inset" 13074 aria-expanded="true" 13075 type="button" 13076 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13077<span>Color y material</span></button> 13078 <ul class="facets-layout facets-layout-list facets-layout-list--swatch mobile-facets__list list-unstyled" role="list"> 13079<li class="mobile-facets__item list-menu__item"> 13080 13081 <div class="facets__label mobile-facets__label 13082"> 13083 <div class="swatch-input-wrapper"> 13084 13085 13086<input 13087 type="checkbox" 13088 id="Filter-filter.p.m.product_options.color_and_material-mobile-1" 13089 name="filter.p.m.product_options.color_and_material" 13090 value="gid://shopify/Metaobject/73915138346" 13091 form="FacetFiltersFormMobile" 13092 class="swatch-input__input" 13093 13094 13095 13096> 13097<label 13098 for="Filter-filter.p.m.product_options.color_and_material-mobile-1" 13099 title="gid://shopify/Metaobject/73915138346" 13100 class="swatch-input__label" 13101 data-option-value="gid://shopify/Metaobject/73915138346" 13102> 13103 13104<span 13105 13106 class="swatch" 13107 style="--swatch--background: url(//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=50); --swatch-focal-point: 50.0% 50.0%;" 13108 13109></span> 13110 13111 13112 13113</label> 13114 13115 </div> 13116 13117 <span class="facet-checkbox__text" aria-hidden="true"> 13118 <span class="facet-checkbox__text-label">gris antracita</span> (11) 13119 </span> 13120 <span class="visually-hidden">gris antracita (11 productos) 13121 </span> 13122 </div> 13123 13124 </li> 13125<li class="mobile-facets__item list-menu__item"> 13126 13127 <div class="facets__label mobile-facets__label 13128"> 13129 <div class="swatch-input-wrapper"> 13130 13131 13132<input 13133 type="checkbox" 13134 id="Filter-filter.p.m.product_options.color_and_material-mobile-2" 13135 name="filter.p.m.product_options.color_and_material" 13136 value="gid://shopify/Metaobject/73915466026" 13137 form="FacetFiltersFormMobile" 13138 class="swatch-input__input" 13139 13140 13141 13142> 13143<label 13144 for="Filter-filter.p.m.product_options.color_and_material-mobile-2" 13145 title="gid://shopify/Metaobject/73915466026" 13146 class="swatch-input__label" 13147 data-option-value="gid://shopify/Metaobject/73915466026" 13148> 13149 13150<span 13151 13152 class="swatch" 13153 style="--swatch--background: url(//rendl.es/cdn/shop/files/55_light-grey.jpg?v=1739538326&width=50); --swatch-focal-point: 50.0% 50.0%;" 13154 13155></span> 13156 13157 13158 13159</label> 13160 13161 </div> 13162 13163 <span class="facet-checkbox__text" aria-hidden="true"> 13164 <span class="facet-checkbox__text-label">gris luminoso</span> (2) 13165 </span> 13166 <span class="visually-hidden">gris luminoso (2 productos) 13167 </span> 13168 </div> 13169 13170 </li> 13171<li class="mobile-facets__item list-menu__item"> 13172 13173 <div class="facets__label mobile-facets__label 13174"> 13175 <div class="swatch-input-wrapper"> 13176 13177 13178<input
13179 type="checkbox" 13180 id="Filter-filter.p.m.product_options.color_and_material-mobile-3" 13181 name="filter.p.m.product_options.color_and_material" 13182 value="gid://shopify/Metaobject/73915367722" 13183 form="FacetFiltersFormMobile" 13184 class="swatch-input__input" 13185 13186 13187 13188> 13189<label 13190 for="Filter-filter.p.m.product_options.color_and_material-mobile-3" 13191 title="gid://shopify/Metaobject/73915367722" 13192 class="swatch-input__label" 13193 data-option-value="gid://shopify/Metaobject/73915367722" 13194> 13195 13196<span 13197 13198 class="swatch" 13199 style="--swatch--background: url(//rendl.es/cdn/shop/files/52_black-grey.jpg?v=1739538319&width=50); --swatch-focal-point: 50.0% 50.0%;" 13200 13201></span> 13202 13203 13204 13205</label> 13206 13207 </div> 13208 13209 <span class="facet-checkbox__text" aria-hidden="true"> 13210 <span class="facet-checkbox__text-label">gris negruzco</span> (1) 13211 </span> 13212 <span class="visually-hidden">gris negruzco (1 productos) 13213 </span> 13214 </div> 13215 13216 </li> 13217<li class="mobile-facets__item list-menu__item"> 13218 13219 <div class="facets__label mobile-facets__label 13220"> 13221 <div class="swatch-input-wrapper"> 13222 13223 13224<input 13225 type="checkbox" 13226 id="Filter-filter.p.m.product_options.color_and_material-mobile-4" 13227 name="filter.p.m.product_options.color_and_material" 13228 value="gid://shopify/Metaobject/73916317994" 13229 form="FacetFiltersFormMobile" 13230 class="swatch-input__input" 13231 13232 13233 13234> 13235<label 13236 for="Filter-filter.p.m.product_options.color_and_material-mobile-4" 13237 title="gid://shopify/Metaobject/73916317994" 13238 class="swatch-input__label" 13239 data-option-value="gid://shopify/Metaobject/73916317994" 13240> 13241 13242<span 13243 13244 class="swatch" 13245 style="--swatch--background: url(//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=50); --swatch-focal-point: 50.0% 50.0%;" 13246 13247></span> 13248 13249 13250 13251</label> 13252 13253 </div> 13254 13255 <span class="facet-checkbox__text" aria-hidden="true"> 13256 <span class="facet-checkbox__text-label">negro</span> (6) 13257 </span> 13258 <span class="visually-hidden">negro (6 productos) 13259 </span> 13260 </div> 13261 13262 </li> 13263<li class="mobile-facets__item list-menu__item"> 13264 13265 <div class="facets__label mobile-facets__label 13266"> 13267 <div class="swatch-input-wrapper"> 13268 13269 13270<input 13271 type="checkbox" 13272 id="Filter-filter.p.m.product_options.color_and_material-mobile-5" 13273 name="filter.p.m.product_options.color_and_material" 13274 value="gid://shopify/Metaobject/73916547370" 13275 form="FacetFiltersFormMobile" 13276 class="swatch-input__input" 13277 13278 13279 13280> 13281<label 13282 for="Filter-filter.p.m.product_options.color_and_material-mobile-5" 13283 title="gid://shopify/Metaobject/73916547370" 13284 class="swatch-input__label" 13285 data-option-value="gid://shopify/Metaobject/73916547370" 13286> 13287 13288<span 13289 13290 class="swatch" 13291 style="--swatch--background: url(//rendl.es/cdn/shop/files/88_black-ambercolored-glass.jpg?v=1739538420&width=50); --swatch-focal-point: 50.0% 50.0%;" 13292 13293></span> 13294 13295 13296 13297</label> 13298 13299 </div> 13300 13301 <span class="facet-checkbox__text" aria-hidden="true"> 13302 <span class="facet-checkbox__text-label">negro / vidrio ámbar</span> (1) 13303 </span> 13304 <span class="visually-hidden">negro / vidrio ámbar (1 productos) 13305 </span> 13306 </div> 13307 13308 </li></ul> 13309 13310 <div class="mobile-facets__footer gradient"> 13311 <facet-remove class="mobile-facets__clear-wrapper"> 13312 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13313 </facet-remove> 13314 <button 13315 type="button" 13316 class="button button--primary" 13317 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13318 > 13319 Aplicar 13320 </button> 13321 </div> 13322 </div> 13323 </details> 13324 13325 13326 13327 13328 <details 13329 id="Details-Mobile-filter.v.availability-template--28113427169578__product-grid" 13330 class="mobile-facets__details js-filter" 13331 data-index="mobile-3" 13332 > 13333 <summary class="mobile-facets__summary focus-inset"> 13334 <div>
13335 <span>Disponibilidad</span> 13336 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13337</span> 13338 </div> 13339 </summary> 13340 <div 13341 id="FacetMobile-3-template--28113427169578__product-grid" 13342 class="mobile-facets__submenu gradient" 13343 > 13344 <button 13345 class="mobile-facets__close-button link link--text focus-inset" 13346 aria-expanded="true" 13347 type="button" 13348 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13348ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13349<span>Disponibilidad</span></button> 13350 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 13351<li class="mobile-facets__item list-menu__item"> 13352 13353 <label for="Filter-filter.v.availability-mobile-1" class="facets__label mobile-facets__label 13354"> 13355 <input 13356 class="mobile-facets__checkbox" 13357 type="checkbox" 13358 name="filter.v.availability" 13359 value="1" 13360 id="Filter-filter.v.availability-mobile-1" 13361 13362 13363 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13364<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13365 13366 13367 <span class="facet-checkbox__text" aria-hidden="true"> 13368 <span class="facet-checkbox__text-label">En existencia</span> (16) 13369 </span> 13370 <span class="visually-hidden">En existencia (16 productos) 13371 </span> 13372 </label> 13373 13374 </li> 13375<li class="mobile-facets__item list-menu__item"> 13376 13377 <label for="Filter-filter.v.availability-mobile-2" class="facets__label mobile-facets__label 13378"> 13379 <input 13380 class="mobile-facets__checkbox" 13381 type="checkbox" 13382 name="filter.v.availability" 13383 value="0" 13384 id="Filter-filter.v.availability-mobile-2" 13385 13386 13387 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13388<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13389 13390 13391 <span class="facet-checkbox__text" aria-hidden="true"> 13392 <span class="facet-checkbox__text-label">Agotado</span> (3) 13393 </span> 13394 <span class="visually-hidden">Agotado (3 productos) 13395 </span> 13396 </label> 13397 13398 </li></ul> 13399 13400 <div class="mobile-facets__footer gradient"> 13401 <facet-remove class="mobile-facets__clear-wrapper"> 13402 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13403 </facet-remove> 13404 <button 13405 type="button" 13406 class="button button--primary" 13407 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13408 > 13409 Aplicar 13410 </button> 13411 </div> 13412 </div> 13413 </details> 13414 13415 13416 13417 13418 <details 13419 id="Details-Mobile-filter.v.m.product_attributes.status_in_sortiment-template--28113427169578__product-grid" 13420 class="mobile-facets__details js-filter" 13421 data-index="mobile-4" 13422 > 13423 <summary class="mobile-facets__summary focus-inset"> 13424 <div>
13425 <span>NUEVO/OFERTA</span> 13426 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13427</span> 13428 </div> 13429 </summary> 13430 <div 13431 id="FacetMobile-4-template--28113427169578__product-grid" 13432 class="mobile-facets__submenu gradient" 13433 > 13434 <button 13435 class="mobile-facets__close-button link link--text focus-inset" 13436 aria-expanded="true" 13437 type="button" 13438 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13438ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13439<span>NUEVO/OFERTA</span></button> 13440 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 13441<li class="mobile-facets__item list-menu__item"> 13442 13443 <label for="Filter-filter.v.m.product_attributes.status_in_sortiment-mobile-1" class="facets__label mobile-facets__label 13444"> 13445 <input 13446 class="mobile-facets__checkbox" 13447 type="checkbox" 13448 name="filter.v.m.product_attributes.status_in_sortiment" 13449 value="NEW" 13450 id="Filter-filter.v.m.product_attributes.status_in_sortiment-mobile-1" 13451 13452 13453 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13454<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13455 13456 13457 <span class="facet-checkbox__text" aria-hidden="true"> 13458 <span class="facet-checkbox__text-label">NEW</span> (7) 13459 </span> 13460 <span class="visually-hidden">NEW (7 productos) 13461 </span> 13462 </label> 13463 13464 </li> 13465<li class="mobile-facets__item list-menu__item"> 13466 13467 <label for="Filter-filter.v.m.product_attributes.status_in_sortiment-mobile-2" class="facets__label mobile-facets__label 13468"> 13469 <input 13470 class="mobile-facets__checkbox" 13471 type="checkbox" 13472 name="filter.v.m.product_attributes.status_in_sortiment" 13473 value="VYB" 13474 id="Filter-filter.v.m.product_attributes.status_in_sortiment-mobile-2" 13475 13476 13477 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13478<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13479 13480 13481 <span class="facet-checkbox__text" aria-hidden="true"> 13482 <span class="facet-checkbox__text-label">VYB</span> (2) 13483 </span> 13484 <span class="visually-hidden">VYB (2 productos) 13485 </span> 13486 </label> 13487 13488 </li></ul> 13489 13490 <div class="mobile-facets__footer gradient"> 13491 <facet-remove class="mobile-facets__clear-wrapper"> 13492 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13493 </facet-remove> 13494 <button 13495 type="button" 13496 class="button button--primary" 13497 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13498 > 13499 Aplicar 13500 </button> 13501 </div> 13502 </div> 13503 </details> 13504 13505 13506 13507 13508 <details 13509 id="Details-Mobile-filter.v.m.product_attributes.ip_rate-template--28113427169578__product-grid" 13510 class="mobile-facets__details js-filter" 13511 data-index="mobile-5" 13512 > 13513 <summary class="mobile-facets__summary focus-inset"> 13514 <div>
13515 <span>Clasificación IP</span> 13516 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13517</span> 13518 </div> 13519 </summary> 13520 <div 13521 id="FacetMobile-5-template--28113427169578__product-grid" 13522 class="mobile-facets__submenu gradient" 13523 > 13524 <button 13525 class="mobile-facets__close-button link link--text focus-inset" 13526 aria-expanded="true" 13527 type="button" 13528 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13528ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13529<span>Clasificación IP</span></button> 13530 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 13531<li class="mobile-facets__item list-menu__item"> 13532 13533 <label for="Filter-filter.v.m.product_attributes.ip_rate-mobile-1" class="facets__label mobile-facets__label 13534"> 13535 <input 13536 class="mobile-facets__checkbox" 13537 type="checkbox" 13538 name="filter.v.m.product_attributes.ip_rate" 13539 value="IP44" 13540 id="Filter-filter.v.m.product_attributes.ip_rate-mobile-1" 13541 13542 13543 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13544<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13545 13546 13547 <span class="facet-checkbox__text" aria-hidden="true"> 13548 <span class="facet-checkbox__text-label">IP44</span> (6) 13549 </span> 13550 <span class="visually-hidden">IP44 (6 productos) 13551 </span> 13552 </label> 13553 13554 </li> 13555<li class="mobile-facets__item list-menu__item"> 13556 13557 <label for="Filter-filter.v.m.product_attributes.ip_rate-mobile-2" class="facets__label mobile-facets__label 13558"> 13559 <input 13560 class="mobile-facets__checkbox" 13561 type="checkbox" 13562 name="filter.v.m.product_attributes.ip_rate" 13563 value="IP54" 13564 id="Filter-filter.v.m.product_attributes.ip_rate-mobile-2" 13565 13566 13567 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13568<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13569 13570 13571 <span class="facet-checkbox__text" aria-hidden="true"> 13572 <span class="facet-checkbox__text-label">IP54</span> (7) 13573 </span> 13574 <span class="visually-hidden">IP54 (7 productos) 13575 </span> 13576 </label> 13577 13578 </li> 13579<li class="mobile-facets__item list-menu__item"> 13580 13581 <label for="Filter-filter.v.m.product_attributes.ip_rate-mobile-3" class="facets__label mobile-facets__label 13582"> 13583 <input 13584 class="mobile-facets__checkbox" 13585 type="checkbox" 13586 name="filter.v.m.product_attributes.ip_rate" 13587 value="IP65" 13588 id="Filter-filter.v.m.product_attributes.ip_rate-mobile-3" 13589 13590 13591 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13592<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
13592<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13593 13594 13595 <span class="facet-checkbox__text" aria-hidden="true"> 13596 <span class="facet-checkbox__text-label">IP65</span> (6) 13597 </span> 13598 <span class="visually-hidden">IP65 (6 productos) 13599 </span> 13600 </label> 13601 13602 </li></ul> 13603 13604 <div class="mobile-facets__footer gradient"> 13605 <facet-remove class="mobile-facets__clear-wrapper"> 13606 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13607 </facet-remove> 13608 <button 13609 type="button" 13610 class="button button--primary" 13611 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13612 > 13613 Aplicar 13614 </button> 13615 </div> 13616 </div> 13617 </details> 13618 13619 13620 13621 13622 <details 13623 id="Details-Mobile-filter.v.m.product_attributes.Watt-template--28113427169578__product-grid" 13624 class="mobile-facets__details js-filter" 13625 data-index="mobile-6" 13626 > 13627 <summary class="mobile-facets__summary focus-inset"> 13628 <div> 13629 <span>Vatio</span> 13630 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13630ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13631</span> 13632 </div> 13633 </summary> 13634 <div 13635 id="FacetMobile-6-template--28113427169578__product-grid" 13636 class="mobile-facets__submenu gradient" 13637 > 13638 <button 13639 class="mobile-facets__close-button link link--text focus-inset" 13640 aria-expanded="true" 13641 type="button" 13642 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13643<span>Vatio</span></button> 13644 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 13645<li class="mobile-facets__item list-menu__item"> 13646 13647 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-1" class="facets__label mobile-facets__label 13648"> 13649 <input 13650 class="mobile-facets__checkbox" 13651 type="checkbox" 13652 name="filter.v.m.product_attributes.Watt" 13653 value="5.0" 13654 id="Filter-filter.v.m.product_attributes.Watt-mobile-1" 13655 13656 13657 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13658<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13659 13660 13661 <span class="facet-checkbox__text" aria-hidden="true"> 13662 <span class="facet-checkbox__text-label">5.0</span> (1) 13663 </span> 13664 <span class="visually-hidden">5.0 (1 productos) 13665 </span> 13666 </label> 13667 13668 </li> 13669<li class="mobile-facets__item list-menu__item"> 13670 13671 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-2" class="facets__label mobile-facets__label 13672"> 13673 <input 13674 class="mobile-facets__checkbox" 13675 type="checkbox" 13676 name="filter.v.m.product_attributes.Watt" 13677 value="7.0" 13678 id="Filter-filter.v.m.product_attributes.Watt-mobile-2" 13679 13680 13681 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13682<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13683 13684
13685 <span class="facet-checkbox__text" aria-hidden="true"> 13686 <span class="facet-checkbox__text-label">7.0</span> (6) 13687 </span> 13688 <span class="visually-hidden">7.0 (6 productos) 13689 </span> 13690 </label> 13691 13692 </li> 13693<li class="mobile-facets__item list-menu__item"> 13694 13695 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-3" class="facets__label mobile-facets__label 13696"> 13697 <input 13698 class="mobile-facets__checkbox" 13699 type="checkbox" 13700 name="filter.v.m.product_attributes.Watt" 13701 value="8.0" 13702 id="Filter-filter.v.m.product_attributes.Watt-mobile-3" 13703 13704 13705 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13706<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13707 13708 13709 <span class="facet-checkbox__text" aria-hidden="true"> 13710 <span class="facet-checkbox__text-label">8.0</span> (1) 13711 </span> 13712 <span class="visually-hidden">8.0 (1 productos) 13713 </span> 13714 </label> 13715 13716 </li> 13717<li class="mobile-facets__item list-menu__item"> 13718 13719 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-4" class="facets__label mobile-facets__label 13720"> 13721 <input 13722 class="mobile-facets__checkbox" 13723 type="checkbox" 13724 name="filter.v.m.product_attributes.Watt" 13725 value="9.0" 13726 id="Filter-filter.v.m.product_attributes.Watt-mobile-4" 13727 13728 13729 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13730<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13731 13732 13733 <span class="facet-checkbox__text" aria-hidden="true"> 13734 <span class="facet-checkbox__text-label">9.0</span> (2) 13735 </span> 13736 <span class="visually-hidden">9.0 (2 productos) 13737 </span> 13738 </label> 13739 13740 </li> 13741<li class="mobile-facets__item list-menu__item"> 13742 13743 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-5" class="facets__label mobile-facets__label 13744"> 13745 <input 13746 class="mobile-facets__checkbox" 13747 type="checkbox" 13748 name="filter.v.m.product_attributes.Watt" 13749 value="10.0" 13750 id="Filter-filter.v.m.product_attributes.Watt-mobile-5" 13751 13752 13753 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13754<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
13754<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13755 13756 13757 <span class="facet-checkbox__text" aria-hidden="true"> 13758 <span class="facet-checkbox__text-label">10.0</span> (1) 13759 </span> 13760 <span class="visually-hidden">10.0 (1 productos) 13761 </span> 13762 </label> 13763 13764 </li> 13765<li class="mobile-facets__item list-menu__item"> 13766 13767 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-6" class="facets__label mobile-facets__label 13768"> 13769 <input 13770 class="mobile-facets__checkbox" 13771 type="checkbox" 13772 name="filter.v.m.product_attributes.Watt" 13773 value="11.0" 13774 id="Filter-filter.v.m.product_attributes.Watt-mobile-6" 13775 13776 13777 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13778<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13779 13780 13781 <span class="facet-checkbox__text" aria-hidden="true"> 13782 <span class="facet-checkbox__text-label">11.0</span> (3) 13783 </span> 13784 <span class="visually-hidden">11.0 (3 productos) 13785 </span> 13786 </label> 13787 13788 </li> 13789<li class="mobile-facets__item list-menu__item"> 13790 13791 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-7" class="facets__label mobile-facets__label 13792"> 13793 <input 13794 class="mobile-facets__checkbox" 13795 type="checkbox" 13796 name="filter.v.m.product_attributes.Watt" 13797 value="12.0" 13798 id="Filter-filter.v.m.product_attributes.Watt-mobile-7" 13799 13800 13801 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13802<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13803 13804 13805 <span class="facet-checkbox__text" aria-hidden="true"> 13806 <span class="facet-checkbox__text-label">12.0</span> (1) 13807 </span> 13808 <span class="visually-hidden">12.0 (1 productos) 13809 </span> 13810 </label> 13811 13812 </li> 13813<li class="mobile-facets__item list-menu__item"> 13814 13815 <label for="Filter-filter.v.m.product_attributes.Watt-mobile-8" class="facets__label mobile-facets__label 13816"> 13817 <input 13818 class="mobile-facets__checkbox" 13819 type="checkbox" 13820 name="filter.v.m.product_attributes.Watt" 13821 value="15.0" 13822 id="Filter-filter.v.m.product_attributes.Watt-mobile-8" 13823 13824 13825 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13826<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
13826<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13827 13828 13829 <span class="facet-checkbox__text" aria-hidden="true"> 13830 <span class="facet-checkbox__text-label">15.0</span> (4) 13831 </span> 13832 <span class="visually-hidden">15.0 (4 productos) 13833 </span> 13834 </label> 13835 13836 </li></ul> 13837 13838 <div class="mobile-facets__footer gradient"> 13839 <facet-remove class="mobile-facets__clear-wrapper"> 13840 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13841 </facet-remove> 13842 <button 13843 type="button" 13844 class="button button--primary" 13845 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13846 > 13847 Aplicar 13848 </button> 13849 </div> 13850 </div> 13851 </details> 13852 13853 13854 13855 13856 <details 13857 id="Details-Mobile-filter.v.m.product_attributes.socket-template--28113427169578__product-grid" 13858 class="mobile-facets__details js-filter" 13859 data-index="mobile-7" 13860 > 13861 <summary class="mobile-facets__summary focus-inset"> 13862 <div> 13863 <span>Casquillo</span> 13864 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
13864ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13865</span> 13866 </div> 13867 </summary> 13868 <div 13869 id="FacetMobile-7-template--28113427169578__product-grid" 13870 class="mobile-facets__submenu gradient" 13871 > 13872 <button 13873 class="mobile-facets__close-button link link--text focus-inset" 13874 aria-expanded="true" 13875 type="button" 13876 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 13877<span>Casquillo</span></button> 13878 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 13879<li class="mobile-facets__item list-menu__item"> 13880 13881 <label for="Filter-filter.v.m.product_attributes.socket-mobile-1" class="facets__label mobile-facets__label 13882"> 13883 <input 13884 class="mobile-facets__checkbox" 13885 type="checkbox" 13886 name="filter.v.m.product_attributes.socket" 13887 value="LED" 13888 id="Filter-filter.v.m.product_attributes.socket-mobile-1" 13889 13890 13891 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13892<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13893 13894 13895 <span class="facet-checkbox__text" aria-hidden="true"> 13896 <span class="facet-checkbox__text-label">LED</span> (1) 13897 </span> 13898 <span class="visually-hidden">LED (1 productos) 13899 </span> 13900 </label> 13901 13902 </li> 13903<li class="mobile-facets__item list-menu__item"> 13904 13905 <label for="Filter-filter.v.m.product_attributes.socket-mobile-2" class="facets__label mobile-facets__label 13906"> 13907 <input 13908 class="mobile-facets__checkbox" 13909 type="checkbox" 13910 name="filter.v.m.product_attributes.socket" 13911 value="LED E27" 13912 id="Filter-filter.v.m.product_attributes.socket-mobile-2" 13913 13914 13915 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13916<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13917 13918
13919 <span class="facet-checkbox__text" aria-hidden="true"> 13920 <span class="facet-checkbox__text-label">LED E27</span> (6) 13921 </span> 13922 <span class="visually-hidden">LED E27 (6 productos) 13923 </span> 13924 </label> 13925 13926 </li> 13927<li class="mobile-facets__item list-menu__item"> 13928 13929 <label for="Filter-filter.v.m.product_attributes.socket-mobile-3" class="facets__label mobile-facets__label 13930"> 13931 <input 13932 class="mobile-facets__checkbox" 13933 type="checkbox" 13934 name="filter.v.m.product_attributes.socket" 13935 value="LED G9" 13936 id="Filter-filter.v.m.product_attributes.socket-mobile-3" 13937 13938 13939 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13940<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13941 13942 13943 <span class="facet-checkbox__text" aria-hidden="true"> 13944 <span class="facet-checkbox__text-label">LED G9</span> (1) 13945 </span> 13946 <span class="visually-hidden">LED G9 (1 productos) 13947 </span> 13948 </label> 13949 13950 </li> 13951<li class="mobile-facets__item list-menu__item"> 13952 13953 <label for="Filter-filter.v.m.product_attributes.socket-mobile-4" class="facets__label mobile-facets__label 13954"> 13955 <input 13956 class="mobile-facets__checkbox" 13957 type="checkbox" 13958 name="filter.v.m.product_attributes.socket" 13959 value="LED R7s 78mm" 13960 id="Filter-filter.v.m.product_attributes.socket-mobile-4" 13961 13962 13963 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 13964<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 13965 13966 13967 <span class="facet-checkbox__text" aria-hidden="true"> 13968 <span class="facet-checkbox__text-label">LED R7s 78mm</span> (1) 13969 </span> 13970 <span class="visually-hidden">LED R7s 78mm (1 productos) 13971 </span> 13972 </label> 13973 13974 </li></ul> 13975 13976 <div class="mobile-facets__footer gradient"> 13977 <facet-remove class="mobile-facets__clear-wrapper"> 13978 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 13979 </facet-remove> 13980 <button 13981 type="button" 13982 class="button button--primary" 13983 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 13984 > 13985 Aplicar 13986 </button> 13987 </div> 13988 </div> 13989 </details> 13990 13991 13992 13993 13994 <details 13995 id="Details-Mobile-filter.v.m.custom.led-template--28113427169578__product-grid" 13996 class="mobile-facets__details js-filter" 13997 data-index="mobile-8" 13998 > 13999 <summary class="mobile-facets__summary focus-inset"> 14000 <div>
14001 <span>LED integrado</span> 14002 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14003</span> 14004 </div> 14005 </summary> 14006 <div 14007 id="FacetMobile-8-template--28113427169578__product-grid" 14008 class="mobile-facets__submenu gradient" 14009 > 14010 <button 14011 class="mobile-facets__close-button link link--text focus-inset" 14012 aria-expanded="true" 14013 type="button" 14014 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14014ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14015<span>LED integrado</span></button> 14016 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14017<li class="mobile-facets__item list-menu__item"> 14018 14019 <label for="Filter-filter.v.m.custom.led-mobile-1" class="facets__label mobile-facets__label 14020"> 14021 <input 14022 class="mobile-facets__checkbox" 14023 type="checkbox" 14024 name="filter.v.m.custom.led" 14025 value="LED" 14026 id="Filter-filter.v.m.custom.led-mobile-1" 14027 14028 14029 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14030<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14031 14032 14033 <span class="facet-checkbox__text" aria-hidden="true"> 14034 <span class="facet-checkbox__text-label">SÃ</span> (11) 14035 </span> 14036 <span class="visually-hidden">Sà (11 productos) 14037 </span> 14038 </label> 14039 14040 </li></ul> 14041 14042 <div class="mobile-facets__footer gradient"> 14043 <facet-remove class="mobile-facets__clear-wrapper"> 14044 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14045 </facet-remove> 14046 <button 14047 type="button" 14048 class="button button--primary" 14049 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14050 > 14051 Aplicar 14052 </button> 14053 </div> 14054 </div> 14055 </details> 14056 14057 14058 14059 14060 <details 14061 id="Details-Mobile-filter.v.m.product_attributes.Diameter-template--28113427169578__product-grid" 14062 class="mobile-facets__details js-filter" 14063 data-index="mobile-9" 14064 > 14065 <summary class="mobile-facets__summary focus-inset"> 14066 <div> 14067 <span>Diámetro</span> 14068 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14068ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14069</span> 14070 </div> 14071 </summary> 14072 <div 14073 id="FacetMobile-9-template--28113427169578__product-grid" 14074 class="mobile-facets__submenu gradient" 14075 > 14076 <button 14077 class="mobile-facets__close-button link link--text focus-inset" 14078 aria-expanded="true" 14079 type="button" 14080 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14081<span>Diámetro</span></button> 14082 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14083<li class="mobile-facets__item list-menu__item"> 14084 14085 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-1" class="facets__label mobile-facets__label 14086"> 14087 <input 14088 class="mobile-facets__checkbox" 14089 type="checkbox" 14090 name="filter.v.m.product_attributes.Diameter" 14091 value="8.0" 14092 id="Filter-filter.v.m.product_attributes.Diameter-mobile-1" 14093 14094 14095 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14096<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14097 14098 14099 <span class="facet-checkbox__text" aria-hidden="true"> 14100 <span class="facet-checkbox__text-label">8.0</span> (1) 14101 </span> 14102 <span class="visually-hidden">8.0 (1 productos) 14103 </span> 14104 </label> 14105 14106 </li> 14107<li class="mobile-facets__item list-menu__item"> 14108 14109 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-2" class="facets__label mobile-facets__label 14110"> 14111 <input 14112 class="mobile-facets__checkbox" 14113 type="checkbox" 14114 name="filter.v.m.product_attributes.Diameter" 14115 value="9.0" 14116 id="Filter-filter.v.m.product_attributes.Diameter-mobile-2" 14117 14118 14119 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14120<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14121 14122
14123 <span class="facet-checkbox__text" aria-hidden="true"> 14124 <span class="facet-checkbox__text-label">9.0</span> (1) 14125 </span> 14126 <span class="visually-hidden">9.0 (1 productos) 14127 </span> 14128 </label> 14129 14130 </li> 14131<li class="mobile-facets__item list-menu__item"> 14132 14133 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-3" class="facets__label mobile-facets__label 14134"> 14135 <input 14136 class="mobile-facets__checkbox" 14137 type="checkbox" 14138 name="filter.v.m.product_attributes.Diameter" 14139 value="10.0" 14140 id="Filter-filter.v.m.product_attributes.Diameter-mobile-3" 14141 14142 14143 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14144<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14145 14146 14147 <span class="facet-checkbox__text" aria-hidden="true"> 14148 <span class="facet-checkbox__text-label">10.0</span> (1) 14149 </span> 14150 <span class="visually-hidden">10.0 (1 productos) 14151 </span> 14152 </label> 14153 14154 </li> 14155<li class="mobile-facets__item list-menu__item"> 14156 14157 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-4" class="facets__label mobile-facets__label 14158"> 14159 <input 14160 class="mobile-facets__checkbox" 14161 type="checkbox" 14162 name="filter.v.m.product_attributes.Diameter" 14163 value="11.0" 14164 id="Filter-filter.v.m.product_attributes.Diameter-mobile-4" 14165 14166 14167 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14168<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14169 14170 14171 <span class="facet-checkbox__text" aria-hidden="true"> 14172 <span class="facet-checkbox__text-label">11.0</span> (1) 14173 </span> 14174 <span class="visually-hidden">11.0 (1 productos) 14175 </span> 14176 </label> 14177 14178 </li> 14179<li class="mobile-facets__item list-menu__item"> 14180 14181 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-5" class="facets__label mobile-facets__label 14182"> 14183 <input 14184 class="mobile-facets__checkbox" 14185 type="checkbox" 14186 name="filter.v.m.product_attributes.Diameter" 14187 value="11.8" 14188 id="Filter-filter.v.m.product_attributes.Diameter-mobile-5" 14189 14190 14191 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14192<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
14192<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14193 14194 14195 <span class="facet-checkbox__text" aria-hidden="true"> 14196 <span class="facet-checkbox__text-label">11.8</span> (1) 14197 </span> 14198 <span class="visually-hidden">11.8 (1 productos) 14199 </span> 14200 </label> 14201 14202 </li> 14203<li class="mobile-facets__item list-menu__item"> 14204 14205 <label for="Filter-filter.v.m.product_attributes.Diameter-mobile-6" class="facets__label mobile-facets__label 14206"> 14207 <input 14208 class="mobile-facets__checkbox" 14209 type="checkbox" 14210 name="filter.v.m.product_attributes.Diameter" 14211 value="12.0" 14212 id="Filter-filter.v.m.product_attributes.Diameter-mobile-6" 14213 14214 14215 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14216<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14217 14218 14219 <span class="facet-checkbox__text" aria-hidden="true"> 14220 <span class="facet-checkbox__text-label">12.0</span> (1) 14221 </span> 14222 <span class="visually-hidden">12.0 (1 productos) 14223 </span> 14224 </label> 14225 14226 </li></ul> 14227 14228 <div class="mobile-facets__footer gradient"> 14229 <facet-remove class="mobile-facets__clear-wrapper"> 14230 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14231 </facet-remove> 14232 <button 14233 type="button" 14234 class="button button--primary" 14235 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14236 > 14237 Aplicar 14238 </button> 14239 </div> 14240 </div> 14241 </details> 14242 14243 14244 14245 14246 <details 14247 id="Details-Mobile-filter.v.m.product_attributes.lumens-template--28113427169578__product-grid" 14248 class="mobile-facets__details js-filter" 14249 data-index="mobile-10" 14250 > 14251 <summary class="mobile-facets__summary focus-inset"> 14252 <div> 14253 <span>Lumen</span> 14254 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14254ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14255</span> 14256 </div> 14257 </summary> 14258 <div 14259 id="FacetMobile-10-template--28113427169578__product-grid" 14260 class="mobile-facets__submenu gradient" 14261 > 14262 <button 14263 class="mobile-facets__close-button link link--text focus-inset" 14264 aria-expanded="true" 14265 type="button" 14266 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14267<span>Lumen</span></button> 14268 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14269<li class="mobile-facets__item list-menu__item"> 14270 14271 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-1" class="facets__label mobile-facets__label 14272"> 14273 <input 14274 class="mobile-facets__checkbox" 14275 type="checkbox" 14276 name="filter.v.m.product_attributes.lumens" 14277 value="123" 14278 id="Filter-filter.v.m.product_attributes.lumens-mobile-1" 14279 14280 14281 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14282<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14283 14284 14285 <span class="facet-checkbox__text" aria-hidden="true"> 14286 <span class="facet-checkbox__text-label">123</span> (1) 14287 </span> 14288 <span class="visually-hidden">123 (1 productos) 14289 </span> 14290 </label> 14291 14292 </li> 14293<li class="mobile-facets__item list-menu__item"> 14294 14295 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-2" class="facets__label mobile-facets__label 14296"> 14297 <input 14298 class="mobile-facets__checkbox" 14299 type="checkbox" 14300 name="filter.v.m.product_attributes.lumens" 14301 value="423" 14302 id="Filter-filter.v.m.product_attributes.lumens-mobile-2" 14303 14304 14305 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14306<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14307 14308
14309 <span class="facet-checkbox__text" aria-hidden="true"> 14310 <span class="facet-checkbox__text-label">423</span> (1) 14311 </span> 14312 <span class="visually-hidden">423 (1 productos) 14313 </span> 14314 </label> 14315 14316 </li> 14317<li class="mobile-facets__item list-menu__item"> 14318 14319 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-3" class="facets__label mobile-facets__label 14320"> 14321 <input 14322 class="mobile-facets__checkbox" 14323 type="checkbox" 14324 name="filter.v.m.product_attributes.lumens" 14325 value="477" 14326 id="Filter-filter.v.m.product_attributes.lumens-mobile-3" 14327 14328 14329 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14330<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14331 14332 14333 <span class="facet-checkbox__text" aria-hidden="true"> 14334 <span class="facet-checkbox__text-label">477</span> (1) 14335 </span> 14336 <span class="visually-hidden">477 (1 productos) 14337 </span> 14338 </label> 14339 14340 </li> 14341<li class="mobile-facets__item list-menu__item"> 14342 14343 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-4" class="facets__label mobile-facets__label 14344"> 14345 <input 14346 class="mobile-facets__checkbox" 14347 type="checkbox" 14348 name="filter.v.m.product_attributes.lumens" 14349 value="580" 14350 id="Filter-filter.v.m.product_attributes.lumens-mobile-4" 14351 14352 14353 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14354<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14355 14356 14357 <span class="facet-checkbox__text" aria-hidden="true"> 14358 <span class="facet-checkbox__text-label">580</span> (3) 14359 </span> 14360 <span class="visually-hidden">580 (3 productos) 14361 </span> 14362 </label> 14363 14364 </li> 14365<li class="mobile-facets__item list-menu__item"> 14366 14367 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-5" class="facets__label mobile-facets__label 14368"> 14369 <input 14370 class="mobile-facets__checkbox" 14371 type="checkbox" 14372 name="filter.v.m.product_attributes.lumens" 14373 value="640" 14374 id="Filter-filter.v.m.product_attributes.lumens-mobile-5" 14375 14376 14377 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14378<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
14378<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14379 14380 14381 <span class="facet-checkbox__text" aria-hidden="true"> 14382 <span class="facet-checkbox__text-label">640</span> (1) 14383 </span> 14384 <span class="visually-hidden">640 (1 productos) 14385 </span> 14386 </label> 14387 14388 </li> 14389<li class="mobile-facets__item list-menu__item"> 14390 14391 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-6" class="facets__label mobile-facets__label 14392"> 14393 <input 14394 class="mobile-facets__checkbox" 14395 type="checkbox" 14396 name="filter.v.m.product_attributes.lumens" 14397 value="720" 14398 id="Filter-filter.v.m.product_attributes.lumens-mobile-6" 14399 14400 14401 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14402<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14403 14404 14405 <span class="facet-checkbox__text" aria-hidden="true"> 14406 <span class="facet-checkbox__text-label">720</span> (1) 14407 </span> 14408 <span class="visually-hidden">720 (1 productos) 14409 </span> 14410 </label> 14411 14412 </li> 14413<li class="mobile-facets__item list-menu__item"> 14414 14415 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-7" class="facets__label mobile-facets__label 14416"> 14417 <input 14418 class="mobile-facets__checkbox" 14419 type="checkbox" 14420 name="filter.v.m.product_attributes.lumens" 14421 value="730" 14422 id="Filter-filter.v.m.product_attributes.lumens-mobile-7" 14423 14424 14425 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14426<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14427 14428 14429 <span class="facet-checkbox__text" aria-hidden="true"> 14430 <span class="facet-checkbox__text-label">730</span> (1) 14431 </span> 14432 <span class="visually-hidden">730 (1 productos) 14433 </span> 14434 </label> 14435 14436 </li> 14437<li class="mobile-facets__item list-menu__item"> 14438 14439 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-8" class="facets__label mobile-facets__label 14440"> 14441 <input 14442 class="mobile-facets__checkbox" 14443 type="checkbox" 14444 name="filter.v.m.product_attributes.lumens" 14445 value="1000" 14446 id="Filter-filter.v.m.product_attributes.lumens-mobile-8" 14447 14448 14449 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14450<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
14450<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14451 14452 14453 <span class="facet-checkbox__text" aria-hidden="true"> 14454 <span class="facet-checkbox__text-label">1000</span> (1) 14455 </span> 14456 <span class="visually-hidden">1000 (1 productos) 14457 </span> 14458 </label> 14459 14460 </li> 14461<li class="mobile-facets__item list-menu__item"> 14462 14463 <label for="Filter-filter.v.m.product_attributes.lumens-mobile-9" class="facets__label mobile-facets__label 14464"> 14465 <input 14466 class="mobile-facets__checkbox" 14467 type="checkbox" 14468 name="filter.v.m.product_attributes.lumens" 14469 value="1010" 14470 id="Filter-filter.v.m.product_attributes.lumens-mobile-9" 14471 14472 14473 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14474<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14475 14476 14477 <span class="facet-checkbox__text" aria-hidden="true"> 14478 <span class="facet-checkbox__text-label">1010</span> (1) 14479 </span> 14480 <span class="visually-hidden">1010 (1 productos) 14481 </span> 14482 </label> 14483 14484 </li></ul> 14485 14486 <div class="mobile-facets__footer gradient"> 14487 <facet-remove class="mobile-facets__clear-wrapper"> 14488 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14489 </facet-remove> 14490 <button 14491 type="button" 14492 class="button button--primary" 14493 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14494 > 14495 Aplicar 14496 </button> 14497 </div> 14498 </div> 14499 </details> 14500 14501 14502 14503 14504 <details 14505 id="Details-Mobile-filter.v.m.product_attributes.kelvin-template--28113427169578__product-grid" 14506 class="mobile-facets__details js-filter" 14507 data-index="mobile-11" 14508 > 14509 <summary class="mobile-facets__summary focus-inset"> 14510 <div> 14511 <span>Kelvin</span> 14512 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14512ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14513</span> 14514 </div> 14515 </summary> 14516 <div 14517 id="FacetMobile-11-template--28113427169578__product-grid" 14518 class="mobile-facets__submenu gradient" 14519 > 14520 <button 14521 class="mobile-facets__close-button link link--text focus-inset" 14522 aria-expanded="true" 14523 type="button" 14524 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14525<span>Kelvin</span></button> 14526 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14527<li class="mobile-facets__item list-menu__item"> 14528 14529 <label for="Filter-filter.v.m.product_attributes.kelvin-mobile-1" class="facets__label mobile-facets__label 14530"> 14531 <input 14532 class="mobile-facets__checkbox" 14533 type="checkbox" 14534 name="filter.v.m.product_attributes.kelvin" 14535 value="3000" 14536 id="Filter-filter.v.m.product_attributes.kelvin-mobile-1" 14537 14538 14539 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14540<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14541 14542 14543 <span class="facet-checkbox__text" aria-hidden="true"> 14544 <span class="facet-checkbox__text-label">3000</span> (11) 14545 </span> 14546 <span class="visually-hidden">3000 (11 productos) 14547 </span> 14548 </label> 14549 14550 </li></ul> 14551 14552 <div class="mobile-facets__footer gradient"> 14553 <facet-remove class="mobile-facets__clear-wrapper"> 14554 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14555 </facet-remove> 14556 <button 14557 type="button" 14558 class="button button--primary" 14559 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14560 > 14561 Aplicar 14562 </button> 14563 </div> 14564 </div> 14565 </details> 14566 14567 14568 14569 14570 <details 14571 id="Details-Mobile-filter.v.m.product_attributes.dimming-template--28113427169578__product-grid" 14572 class="mobile-facets__details js-filter" 14573 data-index="mobile-12" 14574 > 14575 <summary class="mobile-facets__summary focus-inset"> 14576 <div>
14577 <span>Regulable</span> 14578 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14579</span> 14580 </div> 14581 </summary> 14582 <div 14583 id="FacetMobile-12-template--28113427169578__product-grid" 14584 class="mobile-facets__submenu gradient" 14585 > 14586 <button 14587 class="mobile-facets__close-button link link--text focus-inset" 14588 aria-expanded="true" 14589 type="button" 14590 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14590ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14591<span>Regulable</span></button> 14592 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14593<li class="mobile-facets__item list-menu__item"> 14594 14595 <label for="Filter-filter.v.m.product_attributes.dimming-mobile-1" class="facets__label mobile-facets__label 14596"> 14597 <input 14598 class="mobile-facets__checkbox" 14599 type="checkbox" 14600 name="filter.v.m.product_attributes.dimming" 14601 value="dimmable with suitable light source" 14602 id="Filter-filter.v.m.product_attributes.dimming-mobile-1" 14603 14604 14605 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14606<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14607 14608 14609 <span class="facet-checkbox__text" aria-hidden="true"> 14610 <span class="facet-checkbox__text-label">Regulable con fuente de luz adecuada</span> (5) 14611 </span> 14612 <span class="visually-hidden">Regulable con fuente de luz adecuada (5 productos) 14613 </span> 14614 </label> 14615 14616 </li></ul> 14617 14618 <div class="mobile-facets__footer gradient"> 14619 <facet-remove class="mobile-facets__clear-wrapper"> 14620 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14621 </facet-remove> 14622 <button 14623 type="button" 14624 class="button button--primary" 14625 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14626 > 14627 Aplicar 14628 </button> 14629 </div> 14630 </div> 14631 </details> 14632 14633 14634 14635 14636 <details 14637 id="Details-Mobile-filter.v.m.product_attributes.beam_angle-template--28113427169578__product-grid" 14638 class="mobile-facets__details js-filter" 14639 data-index="mobile-13" 14640 > 14641 <summary class="mobile-facets__summary focus-inset"> 14642 <div> 14643 <span>Beam angle</span> 14644 <span class="mobile-facets__arrow"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
14644ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14645</span> 14646 </div> 14647 </summary> 14648 <div 14649 id="FacetMobile-13-template--28113427169578__product-grid" 14650 class="mobile-facets__submenu gradient" 14651 > 14652 <button 14653 class="mobile-facets__close-button link link--text focus-inset" 14654 aria-expanded="true" 14655 type="button" 14656 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg> 14657<span>Beam angle</span></button> 14658 <ul class="facets-layout facets-layout-list facets-layout-list--text mobile-facets__list list-unstyled" role="list"> 14659<li class="mobile-facets__item list-menu__item"> 14660 14661 <label for="Filter-filter.v.m.product_attributes.beam_angle-mobile-1" class="facets__label mobile-facets__label 14662"> 14663 <input 14664 class="mobile-facets__checkbox" 14665 type="checkbox" 14666 name="filter.v.m.product_attributes.beam_angle" 14667 value="55" 14668 id="Filter-filter.v.m.product_attributes.beam_angle-mobile-1" 14669 14670 14671 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14672<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14673 14674 14675 <span class="facet-checkbox__text" aria-hidden="true"> 14676 <span class="facet-checkbox__text-label">55</span> (1) 14677 </span> 14678 <span class="visually-hidden">55 (1 productos) 14679 </span> 14680 </label> 14681 14682 </li> 14683<li class="mobile-facets__item list-menu__item"> 14684 14685 <label for="Filter-filter.v.m.product_attributes.beam_angle-mobile-2" class="facets__label mobile-facets__label 14686"> 14687 <input 14688 class="mobile-facets__checkbox" 14689 type="checkbox" 14690 name="filter.v.m.product_attributes.beam_angle" 14691 value="60" 14692 id="Filter-filter.v.m.product_attributes.beam_angle-mobile-2" 14693 14694 14695 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14696<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14697 14698
14699 <span class="facet-checkbox__text" aria-hidden="true"> 14700 <span class="facet-checkbox__text-label">60</span> (1) 14701 </span> 14702 <span class="visually-hidden">60 (1 productos) 14703 </span> 14704 </label> 14705 14706 </li> 14707<li class="mobile-facets__item list-menu__item"> 14708 14709 <label for="Filter-filter.v.m.product_attributes.beam_angle-mobile-3" class="facets__label mobile-facets__label 14710"> 14711 <input 14712 class="mobile-facets__checkbox" 14713 type="checkbox" 14714 name="filter.v.m.product_attributes.beam_angle" 14715 value="120" 14716 id="Filter-filter.v.m.product_attributes.beam_angle-mobile-3" 14717 14718 14719 ><span class="mobile-facets__highlight"></span><svg width="16px" height="16px" viewBox="0 0 16 16"><rect width="16" height="16" fill="none" stroke="currentColor"/></svg> 14720<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9"><path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg> 14721 14722 14723 <span class="facet-checkbox__text" aria-hidden="true"> 14724 <span class="facet-checkbox__text-label">120</span> (3) 14725 </span> 14726 <span class="visually-hidden">120 (3 productos) 14727 </span> 14728 </label> 14729 14730 </li></ul> 14731 14732 <div class="mobile-facets__footer gradient"> 14733 <facet-remove class="mobile-facets__clear-wrapper"> 14734 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Borrar</a> 14735 </facet-remove> 14736 <button 14737 type="button" 14738 class="button button--primary" 14739 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14740 > 14741 Aplicar 14742 </button> 14743 </div> 14744 </div> 14745 </details> 14746 14747<div 14748 id="Details-Mobile-SortBy-template--28113427169578__product-grid" 14749 class="mobile-facets__details js-filter" 14750 data-index="mobile-" 14751 > 14752 <div class="mobile-facets__summary"> 14753 <div class="mobile-facets__sort"> 14754 <label for="SortBy-mobile">Ordenar por:</label> 14755 <div class="select"> 14756 <select 14757 name="sort_by" 14758 class="select__select" 14759 id="SortBy-mobile" 14760 aria-describedby="a11y-refresh-page-message" 14761 ><option 14762 value="manual" 14763 14764 > 14765 CaracterÃsticas 14766 </option><option 14767 value="most-relevant" 14768 14769 > 14770 Más relevantes 14771 </option><option 14772 value="best-selling" 14773 14774 selected="selected" 14775 14776 > 14777 Más vendidos 14778 </option><option 14779 value="title-ascending" 14780 14781 > 14782 Alfabéticamente, A-Z 14783 </option><option 14784 value="title-descending" 14785 14786 > 14787 Alfabéticamente, Z-A 14788 </option><option 14789 value="price-ascending" 14790 14791 > 14792 Precio, menor a mayor 14793 </option><option 14794 value="price-descending" 14795 14796 > 14797 Precio, mayor a menor 14798 </option><option 14799 value="created-ascending" 14800 14801 >
14802 Fecha: antiguo(a) a reciente 14803 </option><option 14804 value="created-descending" 14805 14806 > 14807 Fecha: reciente a antiguo(a) 14808 </option></select> 14809 <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg> 14810</span> 14811 </div> 14812 </div> 14813 </div> 14814 </div><div class="mobile-facets__footer"> 14815 <facet-remove class="mobile-facets__clear-wrapper"> 14816 <a href="/collections/garden-post-light" class="mobile-facets__clear underlined-link">Eliminar todos</a> 14817 </facet-remove> 14818 <button 14819 type="button" 14820 class="button button--primary" 14821 onclick="this.closest('.mobile-facets__wrapper').querySelector('summary').click()" 14822 > 14823 Aplicar 14824 </button> 14825 </div> 14826 </div> 14827 14828 14829</div> 14830 </form> 14831 </facet-filters-form> 14832 </details> 14833 </menu-drawer> 14834 14835 <div class="active-facets active-facets-mobile medium-hide large-up-hide"> 14836 14837<facet-remove class="active-facets__button-wrapper"> 14838 <a href="/collections/garden-post-light" class="active-facets__button-remove underlined-link"> 14839 <span>Eliminar todos</span> 14840 </a> 14841 </facet-remove> 14842 </div> 14843 14844<div 14845 class="product-count light medium-hide large-up-hide" 14846 role="status" 14847 > 14848 <h2 class="product-count__text text-body"> 14849 <span id="ProductCount">19 productos 14850</span> 14851 </h2> 14852 14853<div class="loading__spinner hidden"> 14854 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 14855 14856</div> 14857</div></div> 14858 14859<style> 14860 .custom-price-range-container { 14861 width: 100%; 14862 padding: 20px 10px; 14863 box-sizing: border-box; 14864 font-family: 'Montserrat', sans-serif; 14865 } 14866 14867 .facets__disclosure-vertical .facets__selected { 14868 display: none; 14869 } 14870 14871 .facets__header-vertical { 14872 display: none; 14873 } 14874 14875 .custom-price-input { 14876 display: flex; 14877 justify-content: space-between; 14878 margin-bottom: 20px; 14879 font-family: 'Montserrat', sans-serif; 14880 } 14881 14882 .custom-price-field { 14883 display: flex; 14884 align-items: center; 14885 } 14886 14887 .custom-price-field span { 14888 margin-right: 5px; 14889 font-size: 16px; 14890 font-family: 'Montserrat', sans-serif; 14891 } 14892 14893 .custom-price-field input { 14894 width: 80px; 14895 height: 35px; 14896 text-align: center; 14897 border: 1px solid #ddd; 14898 outline: none; 14899 -moz-appearance: textfield; 14900 font-family: 'Montserrat', sans-serif; 14901 } 14902 14903 /* Remove arrows/spinners from number inputs */ 14904 .custom-price-field input::-webkit-outer-spin-button, 14905 .custom-price-field input::-webkit-inner-spin-button { 14906 -webkit-appearance: none; 14907 margin: 0; 14908 } 14909 14910 .custom-slider { 14911 height: 4px; 14912 position: relative; 14913 background: #e4e4e4; 14914 margin: 15px 0 25px; 14915 } 14916 14917 .custom-slider .custom-progress { 14918 height: 100%; 14919 position: absolute; 14920 background: #000; 14921 left: 0%; 14922 right: 0%; 14923 } 14924 14925 .custom-range-input { 14926 position: relative; 14927 height: 4px; 14928 margin-top: -29px; 14929 margin-bottom: 20px; 14930 } 14931 14932 .custom-range-input input { 14933 position: absolute; 14934 width: 100%; 14935 height: 4px; 14936 top: 0; 14937 background: none; 14938 pointer-events: none; 14939 -webkit-appearance: none; 14940 z-index: 5; 14941 } 14942 14943 /* Styling the thumb for webkit browsers */ 14944 .custom-range-input input::-webkit-slider-thumb { 14945 height: 15px; 14946 width: 15px; 14947 border-radius: 50%; 14948 background: #000; 14949 cursor: pointer; 14950 pointer-events: auto; 14951 -webkit-appearance: none; 14952 border: 2px solid #fff; 14953 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); 14954 z-index: 10; 14955 } 14956 14957 /* Styling the thumb for Firefox */ 14958 .custom-range-input input::-moz-range-thumb { 14959 height: 15px; 14960 width: 15px; 14961 border-radius: 50%; 14962 background: #000; 14963 cursor: pointer; 14964 pointer-events: auto; 14965 border: 2px solid #fff; 14966 box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); 14967 z-index: 10; 14968 } 14969 14970 .custom-price-filter-button { 14971 display: block; 14972 margin: 20px auto 0; 14973 padding: 10px 30px; 14974 font-family: 'Montserrat', sans-serif; 14975 border-radius: 0; 14976 background-color: #121212; 14977 color: #fff; 14978 border: 1px solid #121212; 14979 text-transform: uppercase; 14980 transition: all 0.3s; 14981 cursor: pointer; 14982 font-size: 14px; 14983 font-weight: 500; 14984 outline: none; 14985 width: 100%; 14986 14987 } 14988 14989 .custom-price-filter-button:hover { 14990 background-color: #fff; 14991 color: #121212; 14992 } 14993</style> 14994
14995<script> 14996 document.addEventListener('DOMContentLoaded', function() { 14997 console.log('Adding GeeksForGeeks style price range slider (custom version)'); 14998 14999 setTimeout(function() { 15000 // Initialize elements with more specific selectors 15001 const rangeInput = document.querySelectorAll(".custom-range-input input"); 15002 const priceInput = document.querySelectorAll(".custom-price-input input"); 15003 const progress = document.querySelector(".custom-slider .custom-progress"); 15004 const submitButton = document.querySelector(".custom-price-filter-button"); 15005 15006 // Debug information 15007 console.log('Range inputs found:', rangeInput.length); 15008 console.log('Price inputs found:', priceInput.length); 15009 console.log('Progress element found:', progress !== null); 15010 console.log('Submit button found:', submitButton !== null); 15011 15012 // Exit if elements not found 15013 if (!rangeInput.length || !priceInput.length || !progress || !submitButton) { 15014 console.error('Required elements not found for price range slider'); 15015 return; 15016 } 15017 15018 // Set price gap 15019 const priceGap = 20; 15020 15021 // Set max price manually (since results.products_max_price seems to be 0) 15022 const maxPrice = 835; 15023 console.log('Max price set manually:', maxPrice); 15024 15025 // Get URL parameters to set initial values 15026 const urlParams = new URLSearchParams(window.location.search); 15027 const gteParam = urlParams.get('filter.v.price.gte'); 15028 const lteParam = urlParams.get('filter.v.price.lte'); 15029 15030 // Set initial values 15031 if (gteParam) { 15032 priceInput[0].value = gteParam; 15033 rangeInput[0].value = gteParam; 15034 } 15035 15036 if (lteParam) { 15037 priceInput[1].value = lteParam; 15038 rangeInput[1].value = lteParam; 15039 } else { 15040 priceInput[1].value = maxPrice; 15041 rangeInput[1].value = maxPrice; 15042 } 15043 15044 // Force range min/max attributes 15045 rangeInput[0].setAttribute('max', maxPrice); 15046 rangeInput[1].setAttribute('max', maxPrice); 15047 15048 // Update progress on load 15049 updateProgress(); 15050 15051 // Function to update progress bar 15052 function updateProgress() { 15053 try { 15054 const minVal = parseInt(rangeInput[0].value) || 0; 15055 const maxVal = parseInt(rangeInput[1].value) || maxPrice; 15056 15057 if (maxVal - minVal < priceGap) { 15058 return; 15059 } 15060 15061 const percent1 = (minVal / maxPrice) * 100; 15062 const percent2 = 100 - ((maxVal / maxPrice) * 100); 15063 15064 console.log(`Setting progress bar: left ${percent1}%, right ${percent2}%`); 15065 progress.style.left = percent1 + "%"; 15066 progress.style.right = percent2 + "%"; 15067 } catch (e) { 15068 console.error('Error updating progress:', e); 15069 } 15070 } 15071 15072 // Add event listeners to range inputs 15073 rangeInput.forEach(input => { 15074 input.addEventListener("input", (e) => { 15075 const minVal = parseInt(rangeInput[0].value) || 0; 15076 const maxVal = parseInt(rangeInput[1].value) || maxPrice; 15077 15078 if (maxVal - minVal < priceGap) { 15079 if (e.target.className === "custom-range-min") { 15080 rangeInput[0].value = maxVal - priceGap; 15081 } else { 15082 rangeInput[1].value = minVal + priceGap; 15083 } 15084 } else { 15085 priceInput[0].value = minVal; 15086 priceInput[1].value = maxVal; 15087 updateProgress(); 15088 } 15089 }); 15090 }); 15091 15092 // Add event listeners to price inputs 15093 priceInput.forEach(input => { 15094 input.addEventListener("input", (e) => { 15095 let minVal = parseInt(priceInput[0].value) || 0; 15096 let maxVal = parseInt(priceInput[1].value) || maxPrice; 15097 15098 15099 minVal = Math.round(minVal / 5) * 5; 15100 maxVal = Math.round(maxVal / 5) * 5; 15101 15102 15103 if (e.target.className === "custom-min-input") { 15104 priceInput[0].value = minVal; 15105 } else { 15106 priceInput[1].value = maxVal; 15107 } 15108 15109 if ((maxVal - minVal >= priceGap) && maxVal <= maxPrice) { 15110 if (e.target.className === "custom-min-input") { 15111 rangeInput[0].value = minVal; 15112 updateProgress(); 15113 } else { 15114 rangeInput[1].value = maxVal; 15115 updateProgress(); 15116 } 15117 } 15118 }); 15119 }); 15120 15121 // Handle submit button click 15122 if (submitButton) { 15123 submitButton.addEventListener('click', function(e) { 15124 e.preventDefault(); 15125 15126 // Get current URL and create a new URL object 15127 const currentUrl = new URL(window.location.href); 15128 15129 // Reset existing price filter parameters 15130 currentUrl.searchParams.delete('filter.v.price.gte'); 15131 currentUrl.searchParams.delete('filter.v.price.lte'); 15132 15133 // Add new price filter parameters 15134 const minVal = parseInt(priceInput[0].value) || 0; 15135 const maxVal = parseInt(priceInput[1].value) || maxPrice; 15136 15137 if (minVal > 0) { 15138 currentUrl.searchParams.set('filter.v.price.gte', minVal); 15139 } 15140 15141 if (maxVal < maxPrice) { 15142 currentUrl.searchParams.set('filter.v.price.lte', maxVal); 15143 } 15144 15145 // Force page reload with new URL 15146 window.location.href = currentUrl.toString(); 15147 }); 15148 } 15149 15150 // Also handle the Enter key press on input fields 15151 priceInput.forEach(input => { 15152 if (input) { 15153 input.addEventListener('keypress', function(e) { 15154 if (e.key === 'Enter') { 15155 e.preventDefault(); 15156 submitButton?.click(); 15157 } 15158 }); 15159 } 15160 }); 15161 15162 console.log('Price range slider initialization complete'); 15163 }, 500); 15164 }); 15165</script>
15165 15166 15167 15168 </aside><div 15169 class="product-grid-container" 15170 id="ProductGridContainer" 15171 data-defer-load="true" 15172 15173 ><div class="collection"> 15174 <div class="loading-overlay gradient"></div> 15175 <ul 15176 id="product-grid" 15177 data-id="template--28113427169578__product-grid" 15178 class="grid product-grid grid--2-col-tablet-down grid--3-col-desktop" 15179 > 15180 15181 15182 <li 15183 class="grid__item" 15184 15185 > 15186 15187<link href="//rendl.es/cdn/shop/t/33/assets/component-rating.css?v=179577762467860590411788953233" rel="stylesheet" type="text/css" media="all" /> 15188 <link href="//rendl.es/cdn/shop/t/33/assets/component-volume-pricing.css?v=111870094811454961941788953232" rel="stylesheet" type="text/css" media="all" /> 15189 15190 <link href="//rendl.es/cdn/shop/t/33/assets/component-price.css?v=55932055337519532011788953234" rel="stylesheet" type="text/css" media="all" /> 15191 <link href="//rendl.es/cdn/shop/t/33/assets/quick-order-list.css?v=129932180309343703061788953233" rel="stylesheet" type="text/css" media="all" /> 15192 <link href="//rendl.es/cdn/shop/t/33/assets/quantity-popover.css?v=129068967981937647381788953231" rel="stylesheet" type="text/css" media="all" /> 15193 15194 <style> 15195 /* Styles for product status badge */ 15196 .product-status-badge { 15197 position: absolute; 15198 top: 10px; 15199 left: 10px; 15200 z-index: 20; 15201 padding: 4px 10px; 15202 font-size: 12px; 15203 font-weight: 500; 15204 line-height: 1.2; 15205 background-color: #ffffff; 15206 text-transform: uppercase; 15207 display: inline-block; 15208 width: auto; 15209 height: auto; 15210 max-width: 90px; 15211 pointer-events: none; 15212 } 15213 15214 /* IP rating badge styles */ 15215 .ip-rate-badge { 15216 position: absolute; 15217 top: 10px; 15218 right: 10px; 15219 z-index: 20; 15220 padding: 4px 10px; 15221 font-size: 12px; 15222 font-weight: 500; 15223 line-height: 1.2; 15224 color: #4891d0; 15225 background-color: #ffffff; 15226 border: 1px solid #4891d0; 15227 text-transform: uppercase; 15228 display: inline-block; 15229 width: auto; 15230 height: auto; 15231 max-width: 90px; 15232 pointer-events: none; 15233 } 15234 15235 /* Compare icon styles */ 15236 /* Do not force .media { position: relative } â it collapses absolute product images to 0 height */ 15237 .compare-icon { 15238 position: absolute; 15239 bottom: 8px; 15240 left: 8px; 15241 z-index: 25; 15242 width: 24px; 15243 height: 24px; 15244 background-color: rgba(255, 255, 255, 0.95); 15245 border-radius: 50%; 15246 display: flex; 15247 align-items: center; 15248 justify-content: center; 15249 cursor: pointer; 15250 transition: all 0.3s ease; 15251 opacity: 0; 15252 transform: scale(0.8); 15253 pointer-events: none; 15254 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 15255 } 15256 .card-wrapper:hover .compare-icon { 15257 opacity: 1; 15258 transform: scale(1); 15259 pointer-events: auto; 15260 } 15261 .compare-icon img { 15262 width: 12px; 15263 height: 12px; 15264 object-fit: contain; 15265 } 15266 @media screen and (max-width: 768px) { 15267 .compare-icon { 15268 width: 20px; 15269 height: 20px; 15270 bottom: 6px; 15271 left: 6px; 15272 } 15273 .compare-icon img { 15274 width: 10px; 15275 height: 10px; 15276 } 15277 } 15278 15279 /* Media icons stack (Energy label above DIMM) */ 15280 .card-media-icons { 15281 position: absolute; 15282 bottom: 10px; 15283 right: 10px; 15284 z-index: 20; 15285 display: flex; 15286 flex-direction: column; 15287 align-items: flex-end; 15288 gap: 6px; 15289 pointer-events: none; 15290 } 15291 15292 /* Dimmable / Energy label icon styles */ 15293 .dimmable-icon, 15294 .energy-label-icon { 15295 position: relative; 15296 width: 46px; 15297 height: 46px; 15298 display: flex; 15299 align-items: center; 15300 justify-content: center; 15301 font-weight: 500; 15302 cursor: help; 15303 transition: all 0.3s ease; 15304 opacity: 0; 15305 transform: scale(0.8); 15306 pointer-events: none; 15307 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 15308 background: white; 15309 } 15310 .card-wrapper:hover .dimmable-icon, 15311 .card-wrapper:hover .energy-label-icon { 15312 opacity: 1; 15313 transform: scale(1); 15314 pointer-events: auto; 15315 } 15316 .dimmable-icon img, 15317 .energy-label-icon img { 15318 width: 32px; 15319 height: 32px; 15320 object-fit: contain; 15321 } 15322 15323 .card-variant-swatches { 15324 position: absolute; 15325 left: 10px; 15326 bottom: 10px; 15327 z-index: 30; 15328 display: flex; 15329 align-items: center; 15330 gap: 6px; 15331 pointer-events: auto; 15332 } 15333 15334 .card-variant-swatch { 15335 position: relative; 15336 display: block; 15337 width: 18px; 15338 height: 18px; 15339 border-radius: 50%; 15340 border: 1px solid #aaaaaa; 15341 background-size: cover; 15342 background-position: center; 15343 background-repeat: no-repeat; 15344 flex: 0 0 18px; 15345 pointer-events: auto; 15346 cursor: pointer; 15347 text-decoration: none; 15348 } 15349 15350 .card-variant-swatch--empty { 15351 background: #f0f0f0; 15352 } 15353 15354 .card-variant-swatch-tooltip { 15355 position: absolute; 15356 left: 50%; 15357 bottom: calc(100% + 6px); 15358 transform: translateX(-50%); 15359 font-family: 'Montserrat', sans-serif; 15360 font-size: 11px; 15361 font-weight: 400; 15362 line-height: 1.2; 15363 color: #232323; 15364 background: #ffffff; 15365 border: 1px solid #eeeeee; 15366 padding: 3px 7px; 15367 white-space: nowrap; 15368 opacity: 0; 15369 visibility: hidden; 15370 transition: opacity 0.18s ease; 15371 pointer-events: none; 15372 z-index: 31; 15373 } 15374 15375 .card-variant-swatch:hover .card-variant-swatch-tooltip { 15376 opacity: 1; 15377 visibility: visible; 15378 } 15379 15380 .card-variant-swatch-discount { 15381 position: absolute; 15382 top: -12px; 15383 right: -10px; 15384 width: 18px; 15385 height: 18px; 15386 display: flex; 15387 align-items: center; 15388 justify-content: center; 15389 font-family: 'Montserrat', sans-serif; 15390 font-size: 12px; 15391 font-weight: 600; 15392 line-height: 1; 15393 color: white; 15394 background: #fc8453; 15395 border-radius: 50%; 15396 pointer-events: none; 15397 } 15398 15399 .card-variant-swatch-more { 15400 font-family: 'Montserrat', sans-serif; 15401 font-size: 11px; 15402 font-weight: 400; 15403 line-height: 1; 15404 color: #232323; 15405 background: rgba(255, 255, 255, 0.92); 15406 padding: 2px 6px; 15407 border: 1px solid rgba(0, 0, 0, 0.1); 15408 white-space: nowrap; 15409 } 15410 15411 @media screen and (max-width: 768px) { 15412 .card-media-icons { 15413 bottom: 8px; 15414 right: 8px; 15415 gap: 4px; 15416 } 15417 .dimmable-icon, 15418 .energy-label-icon { 15419 width: 36px; 15420 height: 36px; 15421 } 15422 .dimmable-icon img, 15423 .energy-label-icon img { 15424 width: 24px; 15425 height: 24px; 15426 } 15427 15428 .card-variant-swatches { 15429 left: 8px; 15430 bottom: 8px; 15431 gap: 5px; 15432 } 15433 15434 .card-variant-swatch { 15435 width: 18px; 15436 height: 18px; 15437 flex: 0 0 18px; 15438 } 15439 15440 .card-variant-swatch-more { 15441 font-size: 10px; 15442 padding: 2px 5px; 15443 } 15444 } 15445 15446 /* Dimmable / Energy label tooltip styles */ 15447 .dimmable-tooltip, 15448 .energy-label-tooltip { 15449 position: absolute; 15450 bottom: 120%; 15451 right: 0; 15452 background: #FFFFFF; 15453 color: #232323; 15454 border: 1px solid #EEEEEE; 15455 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 15456 padding: 8px 10px; 15457 font-size: 12px; 15458 font-weight: 400; 15459 line-height: 1.3; 15460 font-family: 'Montserrat', sans-serif; 15461 z-index: 10000; 15462 opacity: 0; 15463 transition: opacity 0.18s; 15464 white-space: normal; 15465 text-align: left; 15466 border-radius: 0; 15467 visibility: hidden; 15468 max-width: 180px; 15469 width: max-content; 15470 word-wrap: break-word; 15471 overflow-wrap: break-word; 15472 } 15473 .dimmable-icon:hover .dimmable-tooltip, 15474 .energy-label-icon:hover .energy-label-tooltip { 15475 visibility: visible; 15476 opacity: 1; 15477 } 15478 15479 /* Wishlist button styles for product cards */
15480 .card-wishlist-button { 15481 width: 42px; 15482 height: 42px; 15483 display: flex; 15484 align-items: center; 15485 justify-content: center; 15486 border: 1px solid #e0e0e0; 15487 background: rgba(255, 255, 255, 0.95); 15488 backdrop-filter: blur(4px); 15489 cursor: pointer; 15490 padding: 0; 15491 transition: background 0.2s ease, border-color 0.2s ease; 15492 opacity: 0; 15493 transform: scale(0.8); 15494 pointer-events: none; 15495 } 15496 15497 .card-wrapper:hover .compare-button-container .card-wishlist-button { 15498 opacity: 1; 15499 transform: scale(1); 15500 pointer-events: auto; 15501 } 15502 15503 .card-wishlist-button:hover { 15504 background: #fff; 15505 border-color: #ccc; 15506 } 15507 15508 .card-wishlist-button svg { 15509 width: 24px; 15510 height: 24px; 15511 } 15512 15513 .card-wishlist-button path { 15514 transition: fill 0.3s ease; 15515 } 15516 15517 /* Wishlist popup styles */ 15518 .wishlist-category-popup { 15519 position: fixed; 15520 top: 0; 15521 left: 0; 15522 width: 100%; 15523 height: 100%; 15524 background: rgba(0, 0, 0, 0.5); 15525 z-index: 9999; 15526 display: flex; 15527 justify-content: center; 15528 align-items: center; 15529 font-family: 'Montserrat', sans-serif; 15530 } 15531 15532 .wishlist-category-popup-content { 15533 background: white; 15534 padding: 25px; 15535 width: 90%; 15536 max-width: 500px; 15537 position: relative; 15538 border: none; 15539 border-radius: 0; 15540 box-shadow: 0 2px 8px rgba(0,0,0,0.1); 15541 max-height: 90vh; 15542 display: flex; 15543 flex-direction: column; 15544 } 15545 15546 .wishlist-category-popup h2 { 15547 margin: 0 0 20px; 15548 font-size: 20px; 15549 font-weight: 400; 15550 font-family: 'Montserrat', sans-serif; 15551 color: #333; 15552 } 15553 15554 .wishlist-category-popup button { 15555 font-family: 'Montserrat', sans-serif; 15556 } 15557 15558 .wishlist-category-popup button:focus { 15559 outline: none !important; 15560 } 15561 15562 .wishlist-category-popup input { 15563 width: 100%; 15564 padding: 10px; 15565 border: 1px solid #ddd; 15566 margin-bottom: 20px; 15567 font-family: 'Montserrat', sans-serif; 15568 font-size: 14px; 15569 border-radius: 0; 15570 height: 44px; 15571 box-sizing: border-box; 15572 box-shadow: none; 15573 } 15574 15575 .wishlist-category-popup input:focus { 15576 outline: none; 15577 border-color: #999; 15578 } 15579 15580 .wishlist-category-list { 15581 margin-bottom: 20px; 15582 max-height: 300px; 15583 overflow-y: auto; 15584 padding-right: 5px; 15585 } 15586 15587 /* Add scrollbar styling for better appearance */ 15588 .wishlist-category-list::-webkit-scrollbar {
15589 width: 6px; 15590 } 15591 15592 .wishlist-category-list::-webkit-scrollbar-track { 15593 background: #f1f1f1; 15594 } 15595 15596 .wishlist-category-list::-webkit-scrollbar-thumb { 15597 background: #888; 15598 border-radius: 0; 15599 } 15600 15601 .wishlist-category-list::-webkit-scrollbar-thumb:hover { 15602 background: #555; 15603 } 15604 15605 .wishlist-category-option { 15606 padding: 12px 15px; 15607 border: 1px solid #eee; 15608 margin-bottom: 8px; 15609 cursor: pointer; 15610 font-family: 'Montserrat', sans-serif; 15611 font-size: 14px; 15612 border-radius: 0; 15613 transition: background 0.2s; 15614 } 15615 15616 .wishlist-category-option:hover { 15617 background-color: #f9f9f9; 15618 } 15619 15620 button.create-category-button { 15621 background: #1b1b1b; 15622 color: white; 15623 border: 1px solid #1b1b1b; 15624 padding: 10px 15px; 15625 cursor: pointer; 15626 width: 100%; 15627 text-transform: uppercase; 15628 letter-spacing: 0.5px; 15629 font-size: 14px; 15630 height: 44px; 15631 border-radius: 0; 15632 transition: all 0.3s; 15633 } 15634 15635 button.create-category-button:hover { 15636 background: white; 15637 color: #1b1b1b; 15638 } 15639 15640 .wishlist-category-popup label { 15641 display: block; 15642 margin-bottom: 5px; 15643 font-size: 14px; 15644 font-family: 'Montserrat', sans-serif; 15645 } 15646 15647 .wishlist-category-popup-close { 15648 position: absolute; 15649 top: 20px; 15650 right: 20px; 15651 background: none; 15652 border: none; 15653 font-size: 22px; 15654 cursor: pointer; 15655 padding: 0; 15656 line-height: 1; 15657 width: 22px; 15658 height: 22px; 15659 display: flex; 15660 align-items: center; 15661 justify-content: center; 15662 } 15663 15664 .wishlist-category-popup-close::before { 15665 content: 'Ã'; 15666 font-weight: 300; 15667 } 15668 15669 /* Toast styles */ 15670 #wishlist-toast { 15671 position: fixed; 15672 bottom: 20px; 15673 right: 20px; 15674 z-index: 9999; 15675 } 15676 15677 #wishlist-toast div { 15678 background-color: #333; 15679 color: white; 15680 padding: 12px 20px; 15681 border-radius: 0; 15682 margin-top: 10px; 15683 box-shadow: 0 2px 5px rgba(0,0,0,0.2); 15684 transition: all 0.3s ease; 15685 opacity: 0; 15686 font-family: 'Montserrat', sans-serif; 15687 } 15688 15689 @media (max-width: 768px) { 15690 .card-wishlist-button { 15691 width: 42px; 15692 height: 42px; 15693 } 15694 15695 .card-wishlist-button svg { 15696 width: 24px; 15697 height: 24px; 15698 } 15699 15700 .wishlist-category-popup-content { 15701 padding: 20px; 15702 width: 95%; 15703 } 15704 15705 .wishlist-category-popup h2 { 15706 font-size: 18px; 15707 } 15708 } 15709 15710 /* Different colors for badges - outline style matching product page gallery */ 15711 .product-status-badge.status-NEW { 15712 color: #8ED081; 15713 border: 1px solid #8ED081; 15714 } 15715 15716 .product-status-badge.status-SALE { 15717 color: #ed6346; 15718 border: 1px solid #ed6346; 15719 } 15720 15721 .product-status-badge.status-OUTLET { 15722 color: #FC8453; 15723 border: 1px solid #FC8453; 15724 } 15725 15726 /* Styles for inner containers */ 15727 .card__inner { 15728 position: relative; /* Required for absolute positioning of badge */ 15729 z-index: 1; 15730 overflow: visible; 15731 } 15732 15733 .product-card-wrapper .card.card--extend-height.card--media .card__inner, 15734 .product-card-wrapper .card.card--standard.card--media .card__inner { 15735 overflow: visible !important; 15736 } 15737 15738 .product-card-wrapper .card__heading .full-unstyled-link::after { 15739 display: none !important; 15740 } 15741 15742 .card__media-link-content { 15743 display: block; 15744 text-decoration: none; 15745 color: inherit; 15746 position: absolute; 15747 inset: 0; 15748 width: 100%; 15749 height: 100%; 15750 } 15751 15752 /* Fill ratio box so grid images are visible even if card.css cascade breaks */ 15753 .product-card-wrapper .card__inner .card__media { 15754 position: absolute !important; 15755 inset: 0; 15756 width: 100%; 15757 height: 100%; 15758 margin: 0; 15759 z-index: 5; 15760 overflow: hidden; 15761 } 15762 15763 .product-card-wrapper .card__inner .card__media .media { 15764 position: absolute !important; 15765 inset: 0; 15766 width: 100%; 15767 height: 100%; 15768 } 15769 15770 .product-card-wrapper .card__inner .card__media .media > img { 15771 position: absolute !important; 15772 inset: 0; 15773 width: 100% !important; 15774 height: 100% !important; 15775 object-fit: cover; 15776 visibility: visible !important; 15777 } 15778 15779 .product-card-wrapper .card__inner .card__media .media > img:first-child { 15780 opacity: 1 !important; 15781 } 15782 15783 .product-card-wrapper .card__inner .card__media .media > img + img { 15784 opacity: 0 !important; 15785 } 15786 15787 .product-card-wrapper:hover .card__inner .card__media .media > img:first-child:not(:only-child) { 15788 opacity: 0 !important; 15789 } 15790 15791 .product-card-wrapper:hover .card__inner .card__media .media > img + img { 15792 opacity: 1 !important; 15793 } 15794 15795 /* Keep image-area badges on the media box (not at card footer) */ 15796 .product-card-wrapper .card { 15797 position: relative !important; 15798 } 15799 15800 .product-card-wrapper .card__inner { 15801 position: relative !important; 15802 z-index: 1; 15803 } 15804 15805 .product-card-wrapper .product-status-badge { 15806 position: absolute !important; 15807 top: 10px !important; 15808 left: 10px !important; 15809 right: auto !important; 15810 bottom: auto !important; 15811 z-index: 20 !important; 15812 } 15813 15814 .product-card-wrapper .ip-rate-badge { 15815 position: absolute !important; 15816 top: 10px !important; 15817 right: 10px !important; 15818 left: auto !important; 15819 bottom: auto !important; 15820 z-index: 20 !important; 15821 } 15822 15823 /* Dawn sold-out/sale badge: pin to image top-left (was under the button) */ 15824 .product-card-wrapper .card > .card__content > .card__badge { 15825 display: block !important; 15826 position: absolute !important; 15827 top: 10px !important; 15828 left: 10px !important; 15829 right: auto !important; 15830 bottom: auto !important; 15831 margin: 0 !important; 15832 z-index: 19 !important; 15833 grid-row: auto !important; 15834 align-self: auto !important; 15835 justify-self: auto !important; 15836 } 15837 15838 /* Avoid duplicate when custom status badge already shows on the image */ 15839 .product-card-wrapper .card:has(.product-status-badge) > .card__content > .card__badge { 15840 display: none !important; 15841 } 15842 15843 /* Hide the card content inside card__inner */ 15844 .card__inner .card__content { 15845 display: none; /* Hide the gray content area */ 15846 } 15847 15848 /* Product description styles */ 15849 .card__description { 15850 margin: 8px 0 12px 0; 15851 font-size: 13px; 15852 line-height: 1.4; 15853 color: #666; 15854 font-family: 'Montserrat', sans-serif; 15855 font-weight: 400; 15856 overflow: hidden; 15857 display: -webkit-box; 15858 -webkit-line-clamp: 3; 15859 -webkit-box-orient: vertical; 15860 min-height:50px; 15861 } 15862 15863 /* Show MC price only on hover with smooth height transition */ 15864 .card-wrapper:hover .mc-price-container { 15865 max-height: 30px !important; 15866 } 15867 15868 /* Compare and wishlist buttons hidden from product cards */ 15869 .compare-button-container { 15870 display: none; 15871 } 15872 15873 .compare-button-simple { 15874 background: rgba(255, 255, 255, 0.95); 15875 border: 1px solid #e0e0e0; 15876 padding: 8px 12px; 15877 border-radius: 0; /* Remove border radius */ 15878 font-size: 13px; 15879 font-family: 'Montserrat', sans-serif; 15880 backdrop-filter: blur(4px); 15881 cursor: pointer; 15882 display: inline-flex; 15883 align-items: center; 15884 justify-content: center; 15885 gap: 6px; 15886 transition: background 0.2s ease, border-color 0.2s ease; 15887 text-decoration: none; 15888 color: inherit; 15889 position: relative; 15890 z-index: 11; 15891 min-width: 100px; /* Ensure consistent button width */ 15892 } 15893 15894 .compare-button-simple:hover { 15895 background: #fff; 15896 border-color: #ccc; 15897 } 15898 15899 .compare-button-content { 15900 display: flex; 15901 align-items: center; 15902 gap: 6px; 15903 transition: opacity 0.2s ease; 15904 } 15905 15906 .compare-text { 15907 font-weight: 400; 15908 color: #333; 15909 font-family: 'Montserrat', sans-serif; 15910 } 15911 15912 .compare-icon-small { 15913 width: 24px; 15914 height: 24px; 15915 opacity: 1; 15916 transition: opacity 0.2s; 15917 } 15918 15919 .compare-button-simple:hover .compare-icon-small { 15920 opacity: 1; 15921 } 15922 15923 .compare-spinner-small {
15924 display: none; 15925 align-items: center; 15926 justify-content: center; 15927 position: absolute; 15928 top: 50%; 15929 left: 50%; 15930 transform: translate(-50%, -50%); 15931 } 15932 15933 .spinner-svg-small { 15934 display: block; 15935 } 15936 15937 /* When spinner is active, hide text and icon */ 15938 .compare-button-simple.loading .compare-button-content { 15939 opacity: 0; 15940 } 15941 15942 .compare-button-simple.loading .compare-spinner-small { 15943 display: flex; 15944 } 15945 15946 /* Success state for button text */ 15947 .compare-button-simple.success .compare-text { 15948 color: #28a745; /* Green color for success */ 15949 font-weight: 500; 15950 } 15951 15952 /* Remove state styles - red color */ 15953 .compare-button-simple.in-comparison { 15954 border-color: #dc3545; /* Red border */ 15955 background: rgba(220, 53, 69, 0.1); /* Light red background */ 15956 } 15957 15958 .compare-button-simple.in-comparison:hover { 15959 background: rgba(220, 53, 69, 0.2); /* Darker red on hover */ 15960 border-color: #c82333; /* Darker red border on hover */ 15961 } 15962 15963 .compare-button-simple.in-comparison .compare-text { 15964 color: #dc3545; /* Red text color */ 15965 font-weight: 500; 15966 } 15967 15968 .compare-button-container.in-comparison { 15969 opacity: 1; /* Always visible when item is in comparison */ 15970 max-height: 50px; 15971 pointer-events: auto; 15972 } 15973 .compare-button-simple.in-comparison .compare-icon-small { 15974 /* Red filter */ 15975 filter: brightness(0) saturate(100%) invert(19%) sepia(97%) saturate(7482%) hue-rotate(357deg) brightness(97%) contrast(119%); 15976 } 15977 </style> 15978 15979<div class="card-wrapper product-card-wrapper underline-links-hover"> 15980 15981 <div 15982 class=" 15983 card card--standard 15984 card--media 15985 15986 15987 15988 15989 15990 " 15991 style="--ratio-percent: 100.0%;" 15992 data-product-id="9746642796842" 15993 data-description="Bolardo LED para exteriores fabricado en aluminio lacado con luz orientada hacia abajo. Adecuado para iluminar pasarelas y caminos." 15994 data-status-in-sortiment="NEW" 15995 data-ip-rate="IP65" 15996 15997 data-variant-id="52387454583082" 15998 data-price="120.00 EUR" 15999 data-compare-at-price="" 16000 data-available="false" 16001 data-barcode="8595685429137" 16002 data-ip-rate="IP65" 16003 data-lumens="580" 16004 data-power-source="" 16005 data-watt="7.0" 16006 data-kelvin="3000" 16007 data-light-color="" 16008 data-diameter="" 16009 data-weight-netto="1115.0" 16010 data-weight-unit="g" 16011 data-mounting-hole-size="" 16012 data-recess-depth="" 16013 data-suspension-lenght="" 16014 data-turn-angle="" 16015 data-tilt-angle="" 16016 data-switch="" 16017 data-socket="" 16018 data-light-source-recomended="" 16019 data-height="30" 16020 data-length="7.5" 16021 data-Length="" 16022 > 16023 <div 16024 class="card__inner color-scheme-2 gradient ratio" 16025 style="--ratio-percent: 100.0%;" 16026 > 16027 16028<div class="product-status-badge status-NEW"> 16029 <span>NEW</span> 16030 </div> 16031<div class="ip-rate-badge"> 16032 <span>IP65</span> 16033 </div><div class="card__media"> 16034 <a class="card__media-link-content" href="/products/torin-30-floor-lamp" aria-label="TORIN 30"> 16035 <div class="media media--transparent media--hover-effect"> 16036 16037 <img 16038 class="product-image motion-reduce" 16039 srcset="//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=165 165w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=360 360w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=533 533w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=720 720w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=940 940w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=1066 1066w,//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897 3162w 16040 " 16041 src="//rendl.es/cdn/shop/files/r14169-1.jpg?v=1770944897&width=533" 16042 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 16043 alt="RENDL outdoor lamp TORIN 30 floor light grey 230V LED 7W 120° IP65 3000K R14169 1" 16044 16045 width="3162" 16046 height="3162" 16047 > 16048 16049<img 16050 class="product-image motion-reduce" 16051 srcset="//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=165 165w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=360 360w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=533 533w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=720 720w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=940 940w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=1066 1066w,//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240 3162w 16052 " 16053 src="//rendl.es/cdn/shop/files/r14169-3.jpg?v=1783732240&width=533" 16054 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 16055 alt="" 16056 loading="lazy" 16057 width="3162" 16058 height="3162" 16059 ></div> 16060 </a> 16061 16062<div class="card-media-icons"><div class="energy-label-icon"> 16063 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 16064 <div class="energy-label-tooltip">Clase energética G 16065</div> 16066 </div></div><div class="card-variant-swatches"><a 16067 class="card-variant-swatch" 16068 href="/products/torin-30-floor-lamp?variant=52387454583082" 16069 16070 style="background-image: url('//rendl.es/cdn/shop/files/55_light-grey.jpg?v=1739538326&width=64');" 16071 16072 aria-label="gris luminoso" 16073 >
16074 <span class="card-variant-swatch-tooltip">gris luminoso</span></a><a 16075 class="card-variant-swatch" 16076 href="/products/torin-30-floor-lamp?variant=52387454615850" 16077 16078 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 16079 16080 aria-label="negro" 16081 > 16082 <span class="card-variant-swatch-tooltip">negro</span></a></div></div><div class="card__content"> 16083 <div class="card__information"> 16084 <h3 16085 class="card__heading" 16086 16087 > 16088 <a 16089 href="/products/torin-30-floor-lamp" 16090 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746642796842" 16091 class="full-unstyled-link" 16092 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746642796842 NoMediaStandardBadge-template--28113427169578__product-grid-9746642796842" 16093 > 16094 TORIN 30 16095 </a> 16096 </h3> 16097 </div> 16098 <div class="card__badge bottom left"><span 16099 id="NoMediaStandardBadge-template--28113427169578__product-grid-9746642796842" 16100 class="badge badge--bottom-left color-scheme-3" 16101 >En camino</span></div> 16102 </div> 16103 </div> 16104 <div class="card__content"> 16105 <div class="card__information"> 16106 <h3 16107 class="card__heading h5" 16108 16109 id="title-template--28113427169578__product-grid-9746642796842" 16110 16111 > 16112 <a 16113 href="/products/torin-30-floor-lamp" 16114 id="CardLink-template--28113427169578__product-grid-9746642796842" 16115 class="full-unstyled-link" 16116 aria-labelledby="CardLink-template--28113427169578__product-grid-9746642796842 Badge-template--28113427169578__product-grid-9746642796842" 16117 > 16118 TORIN 30 16119 </a> 16120 </h3><div class="card__description"> 16121 Bolardo LED para exteriores fabricado en aluminio lacado con luz orientada hacia abajo. Adecuado para iluminar pasarelas y caminos. 16122 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 16123 16124<div 16125 class=" 16126 price price--sold-out" 16127 > 16128 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 16129 <span class="price-item price-item--regular"> 16130 120.00 EUR 16131 </span></div> 16132 <div class="price__sale"> 16133 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 16134 <span> 16135 <s class="price-item price-item--regular"> 16136 16137 16138 16139 </s> 16140 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 16141 <span class="price-item price-item--sale price-item--last"> 16142 120.00 EUR 16143 </span> 16144 </div> 16145 <small class="unit-price caption hidden"> 16146 <span class="visually-hidden">Precio unitario</span> 16147 <span class="price-item price-item--last"> 16148 <span></span> 16149 <span aria-hidden="true">/</span> 16150 <span class="visually-hidden"> por </span> 16151 <span> 16152 </span> 16153 </span> 16154 </small> 16155 </div></div> 16156 16157 16158</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 16159 <button class="compare-button-simple" 16160 data-product-id="9746642796842" 16161 data-product-title="TORIN 30" 16162 data-product-handle="torin-30-floor-lamp"> 16163 <span class="compare-button-content"> 16164 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24">
16165 <span class="compare-text" data-translate="compare">compare</span> 16166 </span> 16167 <span class="compare-spinner-small"> 16168 <!-- Small spinner for button --> 16169 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 16170 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 16171 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 16172 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indefinite"/> 16173 </path> 16174 </svg> 16175 </span> 16176 </button> 16177 16178 <!-- Wishlist button next to compare button --> 16179 <button type="button" class="card-wishlist-button" data-wishlist-product="9746642796842"> 16180 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 16181 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 16182 </svg> 16183 </button> 16184 </div></div> 16185 </div> 16186 16187 16188 16189 <div class="quick-add no-js-hidden"><modal-opener data-modal="#QuickAdd-9746642796842"> 16190 <button 16191 id="quick-add-template--28113427169578__product-grid9746642796842-submit" 16192 type="submit" 16193 name="add" 16194 class="quick-add__submit button button--full-width button--secondary" 16195 aria-haspopup="dialog" 16196 aria-labelledby="quick-add-template--28113427169578__product-grid9746642796842-submit title-template--28113427169578__product-grid-9746642796842" 16197 data-product-url="/products/torin-30-floor-lamp" 16198 > 16199 Seleccionar opciones 16200 16201 16202<div class="loading__spinner hidden"> 16203 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 16204 16205</div> 16206</button> 16207 </modal-opener> 16208 <quick-add-modal id="QuickAdd-9746642796842" class="quick-add-modal"> 16209 <div 16210 role="dialog" 16211 aria-label="Elegir opciones para TORIN 30" 16212 aria-modal="true" 16213 class="quick-add-modal__content global-settings-popup" 16214 tabindex="-1" 16215 > 16216 <button 16217 id="ModalClose-9746642796842" 16218 type="button" 16219 class="quick-add-modal__toggle" 16220 aria-label="Cerrar" 16221 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 16222</button> 16223 <div id="QuickAddInfo-9746642796842" class="quick-add-modal__content-info"></div> 16224 </div> 16225 </quick-add-modal></div> 16226 16227 <div class="card__badge bottom left"><span 16228 id="Badge-template--28113427169578__product-grid-9746642796842" 16229 class="badge badge--bottom-left color-scheme-3" 16230 >En camino</span></div> 16231 </div> 16232 </div> 16233 </div>
16233<script> 16234 // Initialize global compare translations only once 16235 if (typeof window.compareButtonTranslations === 'undefined') { 16236 window.compareButtonTranslations = { 16237 compare: { 16238 en: 'compare', 16239 cs: 'porovnat', 16240 sk: 'porovnaÅ¥', 16241 de: 'vergleichen', 16242 at: 'vergleichen', 16243 ch: 'vergleichen', 16244 fr: 'comparer', 16245 be: 'comparer', 16246 lu: 'comparer', 16247 it: 'confronta', 16248 es: 'comparar', 16249 nl: 'vergelijken', 16250 pl: 'porównaj', 16251 hu: 'összehasonlÃt', 16252 ro: 'comparÄ', 16253 bg: 'ÑÑавни', 16254 hr: 'usporedi', 16255 fi: 'vertaile', 16256 gr: 'ÏÏγκÏιÏη', 16257 el: 'ÏÏγκÏιÏη', 16258 no: 'sammenlign', 16259 'pt-PT': 'comparar', 16260 sl: 'primerjaj', 16261 sv: 'jämför', 16262 lv: 'salÄ«dzinÄt', 16263 lt: 'palyginti', 16264 ee: 'võrdle', 16265 dk: 'sammenlign', 16266 gb: 'compare', 16267 uk: 'compare', 16268 ie: 'compare', 16269 us: 'compare', 16270 ca: 'compare', 16271 au: 'compare', 16272 nz: 'compare', 16273 ru: 'ÑÑавниÑÑ' 16274 }, 16275 remove: { 16276 en: 'remove', 16277 cs: 'odebrat', 16278 sk: 'odobraÅ¥', 16279 de: 'entfernen', 16280 at: 'entfernen', 16281 ch: 'entfernen', 16282 fr: 'supprimer', 16283 be: 'supprimer', 16284 lu: 'supprimer', 16285 it: 'rimuovi', 16286 es: 'eliminar', 16287 nl: 'verwijderen', 16288 pl: 'usuÅ', 16289 hu: 'eltávolÃt', 16290 ro: 'eliminÄ', 16291 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 16292 hr: 'ukloni', 16293 fi: 'poista', 16294 gr: 'αÏαίÏεÏη', 16295 el: 'αÏαίÏεÏη', 16296 no: 'fjern', 16297 'pt-PT': 'remover', 16298 sl: 'odstrani', 16299 sv: 'ta bort', 16300 lv: 'noÅemt', 16301 lt: 'paÅ¡alinti', 16302 ee: 'eemalda', 16303 dk: 'fjern', 16304 gb: 'remove', 16305 uk: 'remove', 16306 ie: 'remove', 16307 us: 'remove', 16308 ca: 'remove', 16309 au: 'remove', 16310 nz: 'remove', 16311 ru: 'ÑдалиÑÑ' 16312 }, 16313 added: { 16314 en: 'Added!', 16315 cs: 'PÅidáno!', 16316 sk: 'Pridané!', 16317 de: 'Hinzugefügt!', 16318 at: 'Hinzugefügt!', 16319 ch: 'Hinzugefügt!', 16320 fr: 'Ajouté!', 16321 be: 'Ajouté!', 16322 lu: 'Ajouté!', 16323 it: 'Aggiunto!', 16324 es: '¡Añadido!', 16325 nl: 'Toegevoegd!', 16326 pl: 'Dodano!', 16327 hu: 'Hozzáadva!', 16328 ro: 'AdÄugat!', 16329 bg: 'Ðобавено!', 16330 hr: 'Dodano!', 16331 fi: 'Lisätty!', 16332 gr: 'Î ÏοÏÏÎθηκε!', 16333 el: 'Î ÏοÏÏÎθηκε!', 16334 no: 'Lagt til!', 16335 'pt-PT': 'Adicionado!', 16336 sl: 'Dodano!', 16337 sv: 'Tillagd!', 16338 lv: 'Pievienots!', 16339 lt: 'PridÄta!', 16340 ee: 'Lisatud!', 16341 dk: 'Tilføjet!', 16342 gb: 'Added!', 16343 uk: 'Added!', 16344 ie: 'Added!', 16345 us: 'Added!', 16346 ca: 'Added!', 16347 au: 'Added!', 16348 nz: 'Added!', 16349 ru: 'Ðобавлено!' 16350 }, 16351 removed: { 16352 en: 'Removed!', 16353 cs: 'Odebráno!', 16354 sk: 'Odobrané!', 16355 de: 'Entfernt!', 16356 at: 'Entfernt!', 16357 ch: 'Entfernt!', 16358 fr: 'Supprimé!', 16359 be: 'Supprimé!', 16360 lu: 'Supprimé!', 16361 it: 'Rimosso!', 16362 es: '¡Eliminado!', 16363 nl: 'Verwijderd!', 16364 pl: 'UsuniÄto!', 16365 hu: 'EltávolÃtva!', 16366 ro: 'Eliminat!', 16367 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 16368 hr: 'Uklonjeno!', 16369 fi: 'Poistettu!', 16370 gr: 'ÎÏαιÏÎθηκε!', 16371 el: 'ÎÏαιÏÎθηκε!', 16372 no: 'Fjernet!', 16373 'pt-PT': 'Removido!', 16374 sl: 'Odstranjeno!', 16375 sv: 'Borttaget!', 16376 lv: 'NoÅemts!', 16377 lt: 'PaÅ¡alinta!', 16378 ee: 'Eemaldatud!', 16379 dk: 'Fjernet!', 16380 gb: 'Removed!', 16381 uk: 'Removed!', 16382 ie: 'Removed!', 16383 us: 'Removed!', 16384 ca: 'Removed!', 16385 au: 'Removed!', 16386 nz: 'Removed!', 16387 ru: 'Удалено!' 16388 } 16389 }; 16390 16391 // Tooltip translations for price info 16392 window.tooltipTranslations = { 16393 tooltipPrice: { 16394 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16395 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 16396 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 16397 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 16398 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 16399 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 16400 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 16401 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 16402 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 16403 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 16404 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 16405 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 16406 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 16407 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 16408 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 16409 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 16410 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 16411 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 16412 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 16413 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 16414 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 16415 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 16416 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 16417 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 16418 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
16418iks atskaitÄ«ts, ja piemÄrojams.", 16419 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 16420 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 16421 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 16422 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16423 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16424 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16425 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16426 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16427 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16428 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 16429 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 16430 }, 16431 tooltipOutlet: { 16432 en: "We do not provide additional wholesale discounts on outlet products.", 16433 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 16434 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 16435 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 16436 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 16437 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 16438 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 16439 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 16440 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 16441 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 16442 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 16443 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 16444 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 16445 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 16446 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 16447 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 16448 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 16449 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 16450 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 16451 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 16452 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 16453 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 16454 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 16455 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 16456 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 16457 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 16458 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 16459 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 16460 gb: "We do not provide additional wholesale discounts on outlet products.", 16461 uk: "We do not provide additional wholesale discounts on outlet products.", 16462 ie: "We do not provide additional wholesale discounts on outlet products.", 16463 us: "We do not provide additional wholesale discounts on outlet products.", 16464 ca: "We do not provide additional wholesale discounts on outlet products.", 16465 au: "We do not provide additional wholesale discounts on outlet products.", 16466 nz: "We do not provide additional wholesale discounts on outlet products.", 16467 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 16468 } 16469 }; 16470 16471 // Get current locale from document 16472 window.currentLocale = document.documentElement.lang || 'en'; 16473 16474 // Function to translate compare buttons 16475 window.translateCompareButtons = function() { 16476 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
16477 compareTexts.forEach(function(textEl) { 16478 const button = textEl.closest('.compare-button-simple'); 16479 const isInComparison = button && button.hasAttribute('data-in-comparison'); 16480 16481 if (isInComparison) { 16482 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 16483 textEl.textContent = translation; 16484 } else { 16485 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 16486 textEl.textContent = translation; 16487 } 16488 }); 16489 }; 16490 16491 // Function to format price with space as thousands separator (only for tooltip) 16492 function formatTooltipPrice(price) { 16493 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 16494 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 16495 } 16496 16497 // Function to translate tooltips with price 16498 window.translateTooltips = function() { 16499 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 16500 tooltips.forEach(function(tooltip) { 16501 const icon = tooltip.closest('.price-info-icon'); 16502 if (icon) { 16503 const status = icon.getAttribute('data-status'); 16504 // Check if this is an outlet product 16505 if (status === 'outlet') { 16506 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 16507 tooltip.textContent = translation; 16508 return; // Exit early for outlet products 16509 } 16510 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 16511 // Get wholesale price from the actual price display on the card 16512 const card = icon.closest('[data-product-id]'); 16513 let wholesalePrice = ''; 16514 if (card) { 16515 // Find the main price element on the card 16516 const priceElement = card.querySelector('.price .price-item--regular'); 16517 if (priceElement) { 16518 wholesalePrice = priceElement.textContent.trim(); 16519 } 16520 } 16521 if (retailPrice && wholesalePrice) { 16522 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 16523 let formattedRetailPrice = formatTooltipPrice(retailPrice); 16524 let formattedWholesalePrice = wholesalePrice; 16525 if (window.formatPriceText) { 16526 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 16527 } 16528 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 16529 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 16530 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 16531 tooltip.textContent = translatedText; 16532 } 16533 } 16534 }); 16535 }; 16536 16537 // Function to update button state based on comparison status 16538 window.updateCompareButtonState = function(productId, isInComparison) { 16539 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 16540 buttons.forEach(function(button) { 16541 const buttonContainer = button.closest('.compare-button-container'); 16542 const compareText = button.querySelector('.compare-text'); 16543 16544 if (isInComparison) { 16545 button.setAttribute('data-in-comparison', 'true'); 16546 button.classList.add('in-comparison'); 16547 buttonContainer.classList.add('in-comparison'); 16548 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 16549 compareText.textContent = removeText; 16550 } else { 16551 button.removeAttribute('data-in-comparison'); 16552 button.classList.remove('in-comparison'); 16553 buttonContainer.classList.remove('in-comparison'); 16554 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 16555 compareText.textContent = compareTextTranslation; 16556 } 16557 }); 16558 }; 16559 } 16560 16561 // Initialize compare button states based on localStorage 16562 window.initializeCompareButtonStates = function() {
16563 if (typeof window.RendlCompare !== 'undefined') { 16564 const compareItems = window.RendlCompare.getItems(); 16565 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 16566 const productId = button.getAttribute('data-product-id'); 16567 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 16568 window.updateCompareButtonState(productId, isInComparison); 16569 }); 16570 } 16571 }; 16572 16573 // Compare button UI animation - the actual functionality is handled by compare-system.js 16574 document.addEventListener('DOMContentLoaded', function() { 16575 // Apply translations on page load 16576 if (window.translateCompareButtons) { 16577 window.translateCompareButtons(); 16578 } 16579 16580 // Initialize button states based on comparison data 16581 setTimeout(function() { 16582 if (window.initializeCompareButtonStates) { 16583 window.initializeCompareButtonStates(); 16584 } 16585 }, 100); // Small delay to ensure compare system is loaded 16586 16587 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 16588 // Skip if already has event listener 16589 if (button.hasAttribute('data-compare-initialized')) { 16590 return; 16591 } 16592 button.setAttribute('data-compare-initialized', 'true'); 16593 16594 button.addEventListener('click', function(e) { 16595 var buttonContainer = button.closest('.compare-button-container'); 16596 var compareText = button.querySelector('.compare-text'); 16597 var isInComparison = button.hasAttribute('data-in-comparison'); 16598 var productId = button.getAttribute('data-product-id'); 16599 16600 // Prevent multiple clicks during loading 16601 if (button.classList.contains('loading')) { 16602 return; 16603 } 16604 16605 // Make button always visible during the process 16606 buttonContainer.classList.add('active'); 16607 16608 // Add loading class to show spinner 16609 button.classList.add('loading'); 16610 16611 // UI feedback timing 16612 setTimeout(function() { 16613 // Remove loading class and show success message 16614 button.classList.remove('loading'); 16615 button.classList.add('success'); 16616 16617 if (isInComparison) { 16618 // Removing from comparison 16619 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 16620 16621 // Update button state after removal 16622 setTimeout(function() { 16623 button.classList.remove('success'); 16624 window.updateCompareButtonState(productId, false); 16625 buttonContainer.classList.remove('active'); 16626 }, 1500); 16627 } else { 16628 // Adding to comparison 16629 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 16630 16631 // Update button state after addition 16632 setTimeout(function() { 16633 button.classList.remove('success'); 16634 window.updateCompareButtonState(productId, true); 16635 buttonContainer.classList.remove('active'); 16636 }, 1500); 16637 } 16638 }, 1200); 16639 }); 16640 }); 16641 16642 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 16643 setTimeout(function() { 16644 if (window.translateTooltips) { 16645 window.translateTooltips(); 16646 } 16647 }, 100); 16648 }); 16649 16650 // Ensure compare button states are initialized after RendlCompare is available 16651 document.addEventListener('DOMContentLoaded', function() { 16652 function tryInitCompareButtons() { 16653 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 16654 window.initializeCompareButtonStates(); 16655 } else { 16656 setTimeout(tryInitCompareButtons, 100); 16657 } 16658 } 16659 tryInitCompareButtons(); 16660 }); 16661 16662 // Self-contained wishlist functionality for card-product 16663 (function() { 16664 // Wishlist translations 16665 var wishlistTranslations = { 16666 'en': { 16667 addToWishlist: 'Add to My Favorites', 16668 createCategory: 'Create new category:', 16669 categoryPlaceholder: 'Category name', 16670 createAndAdd: 'Create & Add Item', 16671 alreadyAdded: '(Already added)', 16672 addedToWishlist: 'added to My Favorites', 16673 removedFromWishlist: 'removed from My Favorites', 16674 allFavorites: 'All Favorites' 16675 }, 16676 'cs': { 16677 addToWishlist: 'PÅidat do oblÃbených', 16678 createCategory: 'VytvoÅit novou skupinu:', 16679 categoryPlaceholder: 'Název nové skupiny', 16680 createAndAdd: 'VytvoÅit a pÅidat skupinu', 16681 alreadyAdded: '(Již pÅidáno)', 16682 addedToWishlist: 'pÅidáno do oblÃbených', 16683 removedFromWishlist: 'odebráno z oblÃbených', 16684 allFavorites: 'VÅ¡echny oblÃbené' 16685 }, 16686 'sk': { 16687 addToWishlist: 'PridaÅ¥ do obľúbených', 16688 createCategory: 'VytvoriÅ¥ novú kategóriu:', 16689 categoryPlaceholder: 'Názov kategórie', 16690 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 16691 alreadyAdded: '(Už pridané)', 16692 addedToWishlist: 'pridané do obľúbených', 16693 removedFromWishlist: 'odstránené z obľúbených', 16694 allFavorites: 'VÅ¡etky obľúbené' 16695 }, 16696 'de': { 16697 addToWishlist: 'Zu meinen Favoriten hinzufügen', 16698 createCategory: 'Neue Kategorie erstellen:', 16699 categoryPlaceholder: 'Kategoriename', 16700 createAndAdd: 'Erstellen & hinzufügen', 16701 alreadyAdded: '(Bereits hinzugefügt)', 16702 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 16703 removedFromWishlist: 'aus meinen Favoriten entfernt', 16704 allFavorites: 'Alle Favoriten' 16705 }, 16706 'fr': { 16707 addToWishlist: 'Ajouter à mes favoris', 16708 createCategory: 'Créer une nouvelle catégorie :', 16709 categoryPlaceholder: 'Nom de la catégorie', 16710 createAndAdd: 'Créer et ajouter', 16711 alreadyAdded: '(Déjà ajouté)', 16712 addedToWishlist: 'ajouté à mes favoris', 16713 removedFromWishlist: 'retiré de mes favoris', 16714 allFavorites: 'Tous les favoris' 16715 }, 16716 'it': { 16717 addToWishlist: 'Aggiungi ai preferiti', 16718 createCategory: 'Crea nuova categoria:', 16719 categoryPlaceholder: 'Nome categoria', 16720 createAndAdd: 'Crea e aggiungi', 16721 alreadyAdded: '(Già aggiunto)', 16722 addedToWishlist: 'aggiunto ai preferiti', 16723 removedFromWishlist: 'rimosso dai preferiti', 16724 allFavorites: 'Tutti i preferiti' 16725 }, 16726 'es': { 16727 addToWishlist: 'Añadir a mis favoritos', 16728 createCategory: 'Crear nueva categorÃa:', 16729 categoryPlaceholder: 'Nombre de la categorÃa', 16730 createAndAdd: 'Crear y añadir', 16731 alreadyAdded: '(Ya añadido)', 16732 addedToWishlist: 'añadido a mis favoritos', 16733 removedFromWishlist: 'eliminado de mis favoritos', 16734 allFavorites: 'Todos los favoritos' 16735 }, 16736 'nl': { 16737 addToWishlist: 'Toevoegen aan mijn favorieten', 16738 createCategory: 'Nieuwe categorie aanmaken:', 16739 categoryPlaceholder: 'Categorienaam', 16740 createAndAdd: 'Aanmaken & toevoegen', 16741 alreadyAdded: '(Al toegevoegd)', 16742 addedToWishlist: 'toegevoegd aan mijn favorieten', 16743 removedFromWishlist: 'verwijderd uit mijn favorieten', 16744 allFavorites: 'Alle favorieten' 16745 }, 16746 'pl': { 16747 addToWishlist: 'Dodaj do ulubionych', 16748 createCategory: 'Utwórz nowÄ kategoriÄ:', 16749 categoryPlaceholder: 'Nazwa kategorii', 16750 createAndAdd: 'Utwórz i dodaj', 16751 alreadyAdded: '(Już dodane)', 16752 addedToWishlist: 'dodano do ulubionych', 16753 removedFromWishlist: 'usuniÄto z ulubionych', 16754 allFavorites: 'Wszystkie ulubione' 16755 }, 16756 'hu': { 16757 addToWishlist: 'Hozzáadás a kedvencekhez', 16758 createCategory: 'Ãj kategória létrehozása:', 16759 categoryPlaceholder: 'Kategória neve', 16760 createAndAdd: 'Létrehozás és hozzáadás', 16761 alreadyAdded: '(Már hozzáadva)', 16762 addedToWishlist: 'hozzáadva a kedvencekhez', 16763 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 16764 allFavorites: 'Minden kedvenc' 16765 }, 16766 'ro': { 16767 addToWishlist: 'AdaugÄ la favorite', 16768 createCategory: 'CreeazÄ o nouÄ categorie:', 16769 categoryPlaceholder: 'Nume categorie', 16770 createAndAdd: 'CreeazÄ Èi adaugÄ', 16771 alreadyAdded: '(Deja adÄugat)', 16772 addedToWishlist: 'adÄugat la favorite', 16773 removedFromWishlist: 'eliminat din favorite', 16774 allFavorites: 'Toate preferinÈele' 16775 }, 16776 'bg': { 16777 addToWishlist: 'Ðобави в лÑбими', 16778 createCategory: 'СÑздай нова каÑегоÑиÑ:', 16779 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 16780 createAndAdd: 'СÑздай и добави', 16781 alreadyAdded: '(ÐеÑе добавено)', 16782 addedToWishlist: 'добавено в лÑбими', 16783 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 16784 allFavorites: 'ÐÑиÑки лÑбими' 16785 }, 16786 'hr': { 16787 addToWishlist: 'Dodaj u favorite', 16788 createCategory: 'Kreiraj novu kategoriju:', 16789 categoryPlaceholder: 'Naziv kategorije', 16790 createAndAdd: 'Kreiraj i dodaj', 16791 alreadyAdded: '(VeÄ dodano)', 16792 addedToWishlist: 'dodano u favorite', 16793 removedFromWishlist: 'uklonjeno iz favorita', 16794 allFavorites: 'Sva omiljena' 16795 }, 16796 'fi': { 16797 addToWishlist: 'Lisää suosikkeihin', 16798 createCategory: 'Luo uusi kategoria:', 16799 categoryPlaceholder: 'Kategorian nimi', 16800 createAndAdd: 'Luo ja lisää', 16801 alreadyAdded: '(Jo lisätty)', 16802 addedToWishlist: 'lisätty suosikkeihin', 16803 removedFromWishlist: 'poistettu suosikeista',
16804 allFavorites: 'Kaikki suosikit' 16805 }, 16806 'gr': { 16807 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 16808 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 16809 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 16810 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 16811 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 16812 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 16813 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 16814 allFavorites: 'Îλα Ïα αγαÏημÎνα' 16815 }, 16816 'no': { 16817 addToWishlist: 'Legg til i favoritter', 16818 createCategory: 'Opprett ny kategori:', 16819 categoryPlaceholder: 'Kategorinavn', 16820 createAndAdd: 'Opprett og legg til', 16821 alreadyAdded: '(Allerede lagt til)', 16822 addedToWishlist: 'lagt til i favoritter', 16823 removedFromWishlist: 'fjernet fra favoritter', 16824 allFavorites: 'Alle favoritter' 16825 }, 16826 'pt-PT': { 16827 addToWishlist: 'Adicionar aos favoritos', 16828 createCategory: 'Criar nova categoria:', 16829 categoryPlaceholder: 'Nome da categoria', 16830 createAndAdd: 'Criar e adicionar', 16831 alreadyAdded: '(Já adicionado)', 16832 addedToWishlist: 'adicionado aos favoritos', 16833 removedFromWishlist: 'removido dos favoritos', 16834 allFavorites: 'Todos os favoritos' 16835 }, 16836 'sl': { 16837 addToWishlist: 'Dodaj med priljubljene', 16838 createCategory: 'Ustvari novo kategorijo:', 16839 categoryPlaceholder: 'Ime kategorije', 16840 createAndAdd: 'Ustvari in dodaj', 16841 alreadyAdded: '(Že dodano)', 16842 addedToWishlist: 'dodano med priljubljene', 16843 removedFromWishlist: 'odstranjeno iz priljubljenih', 16844 allFavorites: 'Vsi priljubljeni' 16845 }, 16846 'sv': { 16847 addToWishlist: 'Lägg till i favoriter', 16848 createCategory: 'Skapa ny kategori:', 16849 categoryPlaceholder: 'Kategorinamn', 16850 createAndAdd: 'Skapa och lägg till', 16851 alreadyAdded: '(Redan tillagd)', 16852 addedToWishlist: 'tillagd i favoriter', 16853 removedFromWishlist: 'borttagen frÃ¥n favoriter', 16854 allFavorites: 'Alla favoriter' 16855 }, 16856 'lv': { 16857 addToWishlist: 'Pievienot favorÄ«tiem', 16858 createCategory: 'Izveidot jaunu kategoriju:', 16859 categoryPlaceholder: 'Kategorijas nosaukums', 16860 createAndAdd: 'Izveidot un pievienot', 16861 alreadyAdded: '(Jau pievienots)', 16862 addedToWishlist: 'pievienots favorÄ«tiem', 16863 removedFromWishlist: 'noÅemts no favorÄ«tiem', 16864 allFavorites: 'Visas favorÄ«tus' 16865 }, 16866 'lt': { 16867 addToWishlist: 'PridÄti į mÄgstamiausius', 16868 createCategory: 'Sukurti naujÄ kategorijÄ :', 16869 categoryPlaceholder: 'Kategorijos pavadinimas', 16870 createAndAdd: 'Sukurti ir pridÄti', 16871 alreadyAdded: '(Jau pridÄta)', 16872 addedToWishlist: 'pridÄta į mÄgstamiausius', 16873 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 16874 allFavorites: 'Visos mÄgstamiausios' 16875 }, 16876 'ee': { 16877 addToWishlist: 'Lisa lemmikutesse', 16878 createCategory: 'Loo uus kategooria:', 16879 categoryPlaceholder: 'Kategooria nimi', 16880 createAndAdd: 'Loo ja lisa', 16881 alreadyAdded: '(Juba lisatud)', 16882 addedToWishlist: 'lisatud lemmikutesse', 16883 removedFromWishlist: 'eemaldatud lemmikutest', 16884 allFavorites: 'Kõik lemmikud' 16885 }, 16886 'dk': { 16887 addToWishlist: 'Tilføj til favoritter', 16888 createCategory: 'Opret ny kategori:', 16889 categoryPlaceholder: 'Kategorinavn', 16890 createAndAdd: 'Opret og tilføj', 16891 alreadyAdded: '(Allerede tilføjet)', 16892 addedToWishlist: 'tilføjet til favoritter', 16893 removedFromWishlist: 'fjernet fra favoritter', 16894 allFavorites: 'Alle favoritter' 16895 } 16896 }; 16897 16898 function getWishlistLang() { 16899 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 16900 // Normalize for region codes (e.g., pt-PT, sl) 16901 if (lang.startsWith('pt-PT')) return 'pt-PT'; 16902 if (lang.startsWith('sl')) return 'sl'; 16903 if (lang.startsWith('cs')) return 'cs'; 16904 if (lang.startsWith('sk')) return 'sk'; 16905 if (lang.startsWith('de')) return 'de'; 16906 if (lang.startsWith('fr')) return 'fr'; 16907 if (lang.startsWith('it')) return 'it'; 16908 if (lang.startsWith('es')) return 'es'; 16909 if (lang.startsWith('nl')) return 'nl'; 16910 if (lang.startsWith('pl')) return 'pl'; 16911 if (lang.startsWith('hu')) return 'hu'; 16912 if (lang.startsWith('ro')) return 'ro'; 16913 if (lang.startsWith('bg')) return 'bg'; 16914 if (lang.startsWith('hr')) return 'hr'; 16915 if (lang.startsWith('fi')) return 'fi'; 16916 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 16917 if (lang.startsWith('no')) return 'no'; 16918 if (lang.startsWith('sv')) return 'sv'; 16919 if (lang.startsWith('lv')) return 'lv'; 16920 if (lang.startsWith('lt')) return 'lt'; 16921 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 16922 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 16923 return 'en'; 16924 } 16925 16926 // Get or initialize the wishlist array in localStorage 16927 function getWishlist() { 16928 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 16929 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 16930 categories: [ 16931 { 16932 id: 'all-favorites', 16933 name: 'All Favorites', 16934 items: [] 16935 } 16936 ], 16937 version: 2 16938 }; 16939 16940 // Handle migration from old format (array of items) to new format (categories) 16941 if (Array.isArray(wishlist)) { 16942 return { 16943 categories: [ 16944 { 16945 id: 'all-favorites', 16946 name: 'All Favorites', 16947 items: wishlist 16948 } 16949 ], 16950 version: 2 16951 }; 16952 } 16953 16954 return wishlist; 16955 } 16956 16957 // Save wishlist to localStorage 16958 function saveWishlist(wishlist) { 16959 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 16960 // Dispatch an event so other parts of the site can react to wishlist changes 16961 document.dispatchEvent(new CustomEvent('wishlist:updated', { 16962 detail: { wishlist: wishlist } 16963 })); 16964 16965 // Count total items across all categories 16966 const totalItems = wishlist.categories.reduce((total, category) => { 16967 return total + category.items.length; 16968 }, 0); 16969 16970 // Update all wishlist counters 16971 updateWishlistCounters(totalItems); 16972 } 16973 16974 // Update all wishlist counters on the page 16975 function updateWishlistCounters(count) { 16976 const counters = document.querySelectorAll('.wishlist-count');
16977 counters.forEach(counter => { 16978 counter.textContent = count; 16979 16980 // If the counter is hidden and count > 0, show it 16981 if (count > 0 && counter.hasAttribute('hidden')) { 16982 counter.removeAttribute('hidden'); 16983 } 16984 // If the counter is visible and count = 0, hide it 16985 else if (count === 0 && !counter.hasAttribute('hidden')) { 16986 counter.setAttribute('hidden', 'true'); 16987 } 16988 }); 16989 } 16990 16991 // Check if a product is in the wishlist (in any category) 16992 function isInWishlist(productId) { 16993 const wishlist = getWishlist(); 16994 return wishlist.categories.some(category => 16995 category.items.some(item => item.id === productId) 16996 ); 16997 } 16998 16999 // Get all categories 17000 function getCategories() { 17001 return getWishlist().categories; 17002 } 17003 17004 // Create a new category 17005 function createCategory(name) { 17006 const wishlist = getWishlist(); 17007 const categoryId = 'category-' + Date.now(); 17008 17009 wishlist.categories.push({ 17010 id: categoryId, 17011 name: name, 17012 items: [] 17013 }); 17014 17015 saveWishlist(wishlist); 17016 return categoryId; 17017 } 17018 17019 // Add a product to a specific category 17020 function addToCategory(product, categoryId) { 17021 const wishlist = getWishlist(); 17022 const category = wishlist.categories.find(cat => cat.id === categoryId); 17023 17024 if (!category) return false; 17025 17026 // Check if product already exists in ANY category (not just this one) 17027 if (isInWishlist(product.id)) { 17028 return false; // Product already in wishlist 17029 } 17030 17031 // Add product to category 17032 category.items.push(product); 17033 saveWishlist(wishlist); 17034 17035 // Dispatch event for global sync 17036 document.dispatchEvent(new CustomEvent('wishlist:updated', { 17037 detail: { productId: product.id, added: true } 17038 })); 17039 17040 return true; 17041 } 17042 17043 // Add a product to the default "All Favorites" category 17044 function addToWishlist(product) { 17045 return addToCategory(product, 'all-favorites'); 17046 } 17047 17048 // Remove a product from all categories 17049 function removeFromWishlist(productId) { 17050 const wishlist = getWishlist(); 17051 let removed = false; 17052 17053 wishlist.categories.forEach(category => { 17054 const initialLength = category.items.length; 17055 category.items = category.items.filter(item => item.id !== productId); 17056 if (category.items.length !== initialLength) { 17057 removed = true; 17058 } 17059 }); 17060 17061 if (removed) { 17062 saveWishlist(wishlist); 17063 } 17064 17065 return removed; 17066 } 17067 17068 // Toggle a product in the wishlist 17069 function toggleWishlistItem(product) { 17070 if (isInWishlist(product.id)) { 17071 // If already in wishlist, remove it 17072 const wasRemoved = removeFromWishlist(product.id); 17073 17074 // Update heart icon if the product was successfully removed 17075 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 17076 if (heartIcon && wasRemoved) { 17077 heartIcon.setAttribute('fill', 'none'); 17078 showWishlistToast(false, product.title); 17079 17080 // Dispatch event for global sync 17081 document.dispatchEvent(new CustomEvent('wishlist:updated', { 17082 detail: { productId: product.id, added: false } 17083 })); 17084 } 17085 return wasRemoved; 17086 } else { 17087 // If not in wishlist, show category selection popup 17088 showCategorySelectionPopup(product); 17089 return false; // Don't return true unless we actually add the product 17090 } 17091 } 17092 17093 // Show wishlist category selection popup 17094 function showCategorySelectionPopup(product) { 17095 // Remove any existing popup 17096 const existingPopup = document.getElementById('wishlist-category-popup'); 17097 if (existingPopup) { 17098 existingPopup.remove(); 17099 } 17100 17101 const lang = getWishlistLang(); 17102 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 17103 17104 // Create popup container 17105 const popup = document.createElement('div'); 17106 popup.id = 'wishlist-category-popup'; 17107 popup.className = 'wishlist-category-popup'; 17108 17109 // Create popup content 17110 const content = document.createElement('div'); 17111 content.className = 'wishlist-category-popup-content'; 17112 17113 // Create header 17114 const title = document.createElement('h2'); 17115 title.textContent = translations.addToWishlist; // Translate 17116 17117 const closeButton = document.createElement('button'); 17118 closeButton.className = 'wishlist-category-popup-close'; 17119 closeButton.setAttribute('aria-label', 'Close'); 17120 closeButton.addEventListener('click', () => { 17121 popup.remove(); 17122 }); 17123 17124 // Create category list 17125 const categoryList = document.createElement('div'); 17126 categoryList.className = 'wishlist-category-list'; 17127 17128 // Get categories 17129 const categories = getCategories(); 17130 17131 // Add category options
17132 categories.forEach(category => { 17133 const categoryOption = document.createElement('div'); 17134 categoryOption.className = 'wishlist-category-option'; 17135 17136 // Use translation for default category name 17137 categoryOption.textContent = category.id === 'all-favorites' 17138 ? (translations.allFavorites || category.name) 17139 : category.name; 17140 17141 // Highlight if product already in this category 17142 if (category.items.some(item => item.id === product.id)) { 17143 categoryOption.style.backgroundColor = '#f0f0f0'; 17144 categoryOption.style.color = '#999'; 17145 categoryOption.style.fontStyle = 'italic'; 17146 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 17147 categoryOption.style.cursor = 'default'; 17148 } else { 17149 categoryOption.addEventListener('click', () => { 17150 const wasAdded = addToCategory(product, category.id); 17151 17152 if (wasAdded) { 17153 // Update heart icon after successful addition 17154 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 17155 if (heartIcon) { 17156 heartIcon.setAttribute('fill', '#333333'); 17157 } 17158 17159 showWishlistToast(true, product.title); 17160 popup.remove(); 17161 } 17162 }); 17163 } 17164 17165 categoryList.appendChild(categoryOption); 17166 }); 17167 17168 // Create "add new category" section 17169 const newCategorySection = document.createElement('div'); 17170 newCategorySection.style.borderTop = '1px solid #eee'; 17171 newCategorySection.style.paddingTop = '15px'; 17172 newCategorySection.style.marginTop = '10px'; 17173 17174 const newCategoryLabel = document.createElement('label'); 17175 newCategoryLabel.textContent = translations.createCategory; // Translate 17176 17177 const newCategoryInput = document.createElement('input'); 17178 newCategoryInput.type = 'text'; 17179 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 17180 17181 const createButton = document.createElement('button'); 17182 createButton.className = 'create-category-button'; 17183 createButton.textContent = translations.createAndAdd; // Translate 17184 17185 createButton.addEventListener('click', () => { 17186 const categoryName = newCategoryInput.value.trim(); 17187 if (categoryName) { 17188 const categoryId = createCategory(categoryName); 17189 const wasAdded = addToCategory(product, categoryId); 17190 17191 if (wasAdded) { 17192 // Update heart icon after successful addition 17193 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 17194 if (heartIcon) { 17195 heartIcon.setAttribute('fill', '#333333'); 17196 } 17197 17198 showWishlistToast(true, product.title); 17199 popup.remove(); 17200 } 17201 } 17202 }); 17203 17204 newCategorySection.appendChild(newCategoryLabel); 17205 newCategorySection.appendChild(newCategoryInput); 17206 newCategorySection.appendChild(createButton); 17207 17208 // Assemble popup 17209 content.appendChild(title); 17210 content.appendChild(closeButton); 17211 content.appendChild(categoryList); 17212 content.appendChild(newCategorySection); 17213 popup.appendChild(content); 17214 17215 // Add to document 17216 document.body.appendChild(popup); 17217 17218 // Focus the input 17219 setTimeout(() => { 17220 newCategoryInput.focus(); 17221 }, 100); 17222 17223 // Close when clicking outside content 17224 popup.addEventListener('click', (e) => { 17225 if (e.target === popup) { 17226 popup.remove(); 17227 } 17228 }); 17229 } 17230 17231 // Show a toast notification 17232 function showWishlistToast(added, productTitle) { 17233 // Create or get toast container 17234 let toastContainer = document.getElementById('wishlist-toast'); 17235 if (!toastContainer) { 17236 toastContainer = document.createElement('div'); 17237 toastContainer.id = 'wishlist-toast'; 17238 toastContainer.style.position = 'fixed'; 17239 toastContainer.style.bottom = '20px'; 17240 toastContainer.style.right = '20px'; 17241 toastContainer.style.zIndex = '9999'; 17242 document.body.appendChild(toastContainer); 17243 } 17244 17245 // Create toast 17246 const toast = document.createElement('div'); 17247 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 17248 toast.style.color = 'white'; 17249 toast.style.padding = '12px 20px'; 17250 toast.style.borderRadius = '0'; 17251 toast.style.marginTop = '10px'; 17252 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 17253 toast.style.transition = 'all 0.3s ease'; 17254 toast.style.opacity = '0'; 17255 toast.style.fontFamily = 'Montserrat, sans-serif'; 17256 17257 // Choose text based on action 17258 const lang = getWishlistLang(); 17259 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 17260 toast.textContent = added 17261 ? `${productTitle} ${translations.addedToWishlist}` // Translate 17262 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 17263 17264 // Add to container 17265 toastContainer.appendChild(toast); 17266 17267 // Animate in 17268 setTimeout(() => { 17269 toast.style.opacity = '1'; 17270 }, 10); 17271 17272 // Animate out and remove 17273 setTimeout(() => { 17274 toast.style.opacity = '0'; 17275 setTimeout(() => { 17276 toastContainer.removeChild(toast); 17277 }, 300); 17278 }, 3000); 17279 } 17280 17281 // Initialize wishlist buttons 17282 function initCardWishlistButtons() { 17283 const wishlistButtons = document.querySelectorAll('.card-wis
17283hlist-button'); 17284 17285 wishlistButtons.forEach(button => { 17286 // Skip if already initialized 17287 if (button.dataset.initializedWishlist === 'true') return; 17288 button.dataset.initializedWishlist = 'true'; 17289 17290 const productId = button.getAttribute('data-wishlist-product'); 17291 if (!productId) return; 17292 17293 // Get product details from the card 17294 const card = button.closest('.card-wrapper'); 17295 const productDetails = { 17296 id: productId, 17297 title: card.querySelector('.card__heading')?.textContent.trim() || '', 17298 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 17299 price: card.querySelector('.price')?.textContent.trim() || '', 17300 image: card.querySelector('img')?.src || '', 17301 url: card.querySelector('a[href*="/products/"]')?.href || '' 17302 }; 17303 17304 // Set initial state using global function 17305 const heartIcon = button.querySelector('path'); 17306 if (heartIcon) { 17307 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 17308 heartIcon.setAttribute('fill', '#333333'); 17309 } else { 17310 heartIcon.setAttribute('fill', 'none'); 17311 } 17312 } 17313 17314 // Add click handler 17315 button.addEventListener('click', function(e) { 17316 e.preventDefault(); 17317 e.stopPropagation(); 17318 e.stopImmediatePropagation(); 17319 toggleWishlistItem(productDetails); 17320 }); 17321 17322 // Prevent navigation on mousedown/touchstart 17323 button.addEventListener('mousedown', function(e) { 17324 e.preventDefault(); 17325 e.stopPropagation(); 17326 }); 17327 17328 button.addEventListener('touchstart', function(e) { 17329 e.preventDefault(); 17330 e.stopPropagation(); 17331 }); 17332 }); 17333 } 17334 17335 // Initialize the wishlist counter on page load 17336 const wishlist = getWishlist(); 17337 const totalItems = wishlist.categories.reduce((total, category) => { 17338 return total + category.items.length; 17339 }, 0); 17340 updateWishlistCounters(totalItems); 17341 17342 // Initialize on DOM ready 17343 if (document.readyState === 'loading') { 17344 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 17345 } else { 17346 initCardWishlistButtons(); 17347 } 17348 17349 // Reinitialize on Shopify section load 17350 document.addEventListener('shopify:section:load', function() { 17351 setTimeout(initCardWishlistButtons, 100); 17352 }); 17353 17354 // Listen for wishlist updates from other parts of the site 17355 document.addEventListener('wishlist:updated', function() { 17356 setTimeout(initCardWishlistButtons, 100); 17357 }); 17358 })(); 17359</script>
17359 17360 17361<!-- Price info icon styles --> 17362<style> 17363 /* Price container with icon */ 17364 .price-container-with-info { 17365 position: relative; 17366 display: flex; 17367 align-items: center; 17368 gap: 8px; 17369 } 17370 17371 /* Info icon - hidden by default, shown on card hover */ 17372 .price-info-icon { 17373 position: relative; 17374 display: inline-flex; 17375 align-items: center; 17376 justify-content: center; 17377 color: #666; 17378 cursor: help; 17379 opacity: 0; 17380 transition: opacity 0.3s ease; 17381 17382 padding: 4px; /* Add padding to increase clickable area */ 17383 min-width: 20px; /* Ensure minimum clickable area */ 17384 min-height: 20px; 17385 z-index: 15; /* Above everything else including compare button */ 17386 pointer-events: auto; /* Allow interaction */ 17387 } 17388 17389 /* Show icon on card hover */ 17390 .card-wrapper:hover .price-info-icon { 17391 opacity: 1; 17392 } 17393 17394 .price-info-icon svg { 17395 width: 14px; 17396 height: 14px; 17397 stroke-width: 1.5; 17398 } 17399 17400 /* Tooltip styles */ 17401 .price-info-tooltip { 17402 position: absolute; 17403 bottom: calc(100% + 6px); 17404 top: auto; 17405 left: 0; 17406 transform: none; 17407 min-width: 310px; 17408 background: #FFFFFF; 17409 color: #232323; 17410 border: 1px solid #EEEEEE; 17411 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 17412 padding: 12px 16px; 17413 font-size: 13px; 17414 font-family: 'Montserrat', sans-serif; 17415 z-index: 10000; 17416 opacity: 0; 17417 transition: opacity 0.18s; 17418 white-space: pre-line; 17419 text-align: left; 17420 border-radius: 0; 17421 visibility: hidden; 17422 pointer-events: none; 17423 } 17424 17425 /* Show tooltip on icon hover */ 17426 .price-info-icon:hover .price-info-tooltip { 17427 visibility: visible; 17428 opacity: 1; 17429 } 17430 17431 /* Ensure tooltip is never clipped */ 17432 .price-container-with-info, 17433 .card-information, 17434 .card__content { 17435 overflow: visible !important; 17436 } 17437 17438 /* Mobile adjustments */ 17439 @media screen and (max-width: 768px) { 17440 .price-info-tooltip { 17441 min-width: 200px; 17442 font-size: 12px; 17443 padding: 10px 12px; 17444 } 17445 } 17446</style> 17447 17448 </li> 17449 <li 17450 class="grid__item" 17451 17452 > 17453 17454<div class="card-wrapper product-card-wrapper underline-links-hover"> 17455 17456 <div 17457 class=" 17458 card card--standard 17459 card--media 17460 17461 17462 17463 17464 17465 " 17466 style="--ratio-percent: 100.0%;" 17467 data-product-id="9746642469162" 17468 data-description="Bolardo LED para exteriores fabricado en aluminio lacado con luz orientada hacia abajo. Adecuado para iluminar pasarelas y caminos." 17469 data-status-in-sortiment="NEW" 17470 data-ip-rate="IP65" 17471 17472 data-variant-id="52387453239594" 17473 data-price="178.00 EUR" 17474 data-compare-at-price="" 17475 data-available="true" 17476 data-barcode="8595685429168" 17477 data-ip-rate="IP65" 17478 data-lumens="580" 17479 data-power-source="" 17480 data-watt="7.0" 17481 data-kelvin="3000" 17482 data-light-color="" 17483 data-diameter="" 17484 data-weight-netto="1955.0" 17485 data-weight-unit="g" 17486 data-mounting-hole-size="" 17487 data-recess-depth="" 17488 data-suspension-lenght="" 17489 data-turn-angle="" 17490 data-tilt-angle="" 17491 data-switch="" 17492 data-socket="" 17493 data-light-source-recomended="" 17494 data-height="60" 17495 data-length="7.5" 17496 data-Length="" 17497 > 17498 <div 17499 class="card__inner color-scheme-2 gradient ratio" 17500 style="--ratio-percent: 100.0%;" 17501 > 17502 17503<div class="product-status-badge status-NEW"> 17504 <span>NEW</span> 17505 </div> 17506<div class="ip-rate-badge"> 17507 <span>IP65</span> 17508 </div><div class="card__media"> 17509 <a class="card__media-link-content" href="/products/torin-60-floor-lamp" aria-label="TORIN 60"> 17510 <div class="media media--transparent media--hover-effect"> 17511 17512 <img 17513 class="product-image motion-reduce" 17514 srcset="//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=165 165w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=360 360w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=533 533w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=720 720w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=940 940w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=1066 1066w,//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896 3162w 17515 " 17516 src="//rendl.es/cdn/shop/files/r14172-1.jpg?v=1770944896&width=533" 17517 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 17518 alt="RENDL outdoor lamp TORIN 60 floor black 230V LED 7W 120° IP65 3000K R14172 1" 17519 17520 width="3162" 17521 height="3162" 17522 > 17523 17524<img 17525 class="product-image motion-reduce" 17526 srcset="//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=165 165w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=360 360w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=533 533w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=720 720w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=940 940w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=1066 1066w,//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626 3162w 17527 " 17528 src="//rendl.es/cdn/shop/files/r14172-3.jpg?v=1783818626&width=533" 17529 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 17530 alt="" 17531 loading="lazy" 17532 width="3162" 17533 height="3162" 17534 ></div> 17535 </a> 17536 17537<div class="card-media-icons"><div class="energy-label-icon"> 17538 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 17539 <div class="energy-label-tooltip">Clase energética G 17540</div> 17541 </div></div><div class="card-variant-swatches"><a 17542 class="card-variant-swatch" 17543 href="/products/torin-60-floor-lamp?variant=52387453239594" 17544 17545 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 17546 17547 aria-label="negro" 17548 >
17549 <span class="card-variant-swatch-tooltip">negro</span></a><a 17550 class="card-variant-swatch" 17551 href="/products/torin-60-floor-lamp?variant=52387453272362" 17552 17553 style="background-image: url('//rendl.es/cdn/shop/files/55_light-grey.jpg?v=1739538326&width=64');" 17554 17555 aria-label="gris luminoso" 17556 > 17557 <span class="card-variant-swatch-tooltip">gris luminoso</span></a></div></div><div class="card__content"> 17558 <div class="card__information"> 17559 <h3 17560 class="card__heading" 17561 17562 > 17563 <a 17564 href="/products/torin-60-floor-lamp" 17565 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746642469162" 17566 class="full-unstyled-link" 17567 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746642469162 NoMediaStandardBadge-template--28113427169578__product-grid-9746642469162" 17568 > 17569 TORIN 60 17570 </a> 17571 </h3> 17572 </div> 17573 <div class="card__badge bottom left"></div> 17574 </div> 17575 </div> 17576 <div class="card__content"> 17577 <div class="card__information"> 17578 <h3 17579 class="card__heading h5" 17580 17581 id="title-template--28113427169578__product-grid-9746642469162" 17582 17583 > 17584 <a 17585 href="/products/torin-60-floor-lamp" 17586 id="CardLink-template--28113427169578__product-grid-9746642469162" 17587 class="full-unstyled-link" 17588 aria-labelledby="CardLink-template--28113427169578__product-grid-9746642469162 Badge-template--28113427169578__product-grid-9746642469162" 17589 > 17590 TORIN 60 17591 </a> 17592 </h3><div class="card__description"> 17593 Bolardo LED para exteriores fabricado en aluminio lacado con luz orientada hacia abajo. Adecuado para iluminar pasarelas y caminos. 17594 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 17595 17596<div 17597 class=" 17598 price " 17599 > 17600 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 17601 <span class="price-item price-item--regular"> 17602 178.00 EUR 17603 </span></div> 17604 <div class="price__sale"> 17605 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 17606 <span> 17607 <s class="price-item price-item--regular"> 17608 17609 17610 17611 </s> 17612 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 17613 <span class="price-item price-item--sale price-item--last"> 17614 178.00 EUR 17615 </span> 17616 </div> 17617 <small class="unit-price caption hidden"> 17618 <span class="visually-hidden">Precio unitario</span> 17619 <span class="price-item price-item--last"> 17620 <span></span> 17621 <span aria-hidden="true">/</span> 17622 <span class="visually-hidden"> por </span> 17623 <span> 17624 </span> 17625 </span> 17626 </small> 17627 </div></div> 17628 17629 17630</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 17631 <button class="compare-button-simple" 17632 data-product-id="9746642469162" 17633 data-product-title="TORIN 60" 17634 data-product-handle="torin-60-floor-lamp"> 17635 <span class="compare-button-content"> 17636 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 17637 <span class="compare-text" data-translate="compare">compare</span> 17638 </span> 17639 <span class="compare-spinner-small"> 17640 <!-- Small spinner for button -->
17641 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 17642 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 17643 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 17644 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indefinite"/> 17645 </path> 17646 </svg> 17647 </span> 17648 </button> 17649 17650 <!-- Wishlist button next to compare button --> 17651 <button type="button" class="card-wishlist-button" data-wishlist-product="9746642469162"> 17652 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 17653 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 17654 </svg> 17655 </button> 17656 </div></div> 17657 </div> 17658 17659 17660 17661 <div class="quick-add no-js-hidden"><modal-opener data-modal="#QuickAdd-9746642469162"> 17662 <button 17663 id="quick-add-template--28113427169578__product-grid9746642469162-submit" 17664 type="submit" 17665 name="add" 17666 class="quick-add__submit button button--full-width button--secondary" 17667 aria-haspopup="dialog" 17668 aria-labelledby="quick-add-template--28113427169578__product-grid9746642469162-submit title-template--28113427169578__product-grid-9746642469162" 17669 data-product-url="/products/torin-60-floor-lamp" 17670 > 17671 Seleccionar opciones 17672 17673 17674<div class="loading__spinner hidden"> 17675 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 17676 17677</div> 17678</button> 17679 </modal-opener> 17680 <quick-add-modal id="QuickAdd-9746642469162" class="quick-add-modal"> 17681 <div 17682 role="dialog" 17683 aria-label="Elegir opciones para TORIN 60" 17684 aria-modal="true" 17685 class="quick-add-modal__content global-settings-popup" 17686 tabindex="-1" 17687 > 17688 <button 17689 id="ModalClose-9746642469162" 17690 type="button" 17691 class="quick-add-modal__toggle" 17692 aria-label="Cerrar" 17693 ><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg> 17694</button> 17695 <div id="QuickAddInfo-9746642469162" class="quick-add-modal__content-info"></div> 17696 </div> 17697 </quick-add-modal></div> 17698 17699 <div class="card__badge bottom left"></div> 17700 </div> 17701 </div> 17702 </div>
17702<script> 17703 // Initialize global compare translations only once 17704 if (typeof window.compareButtonTranslations === 'undefined') { 17705 window.compareButtonTranslations = { 17706 compare: { 17707 en: 'compare', 17708 cs: 'porovnat', 17709 sk: 'porovnaÅ¥', 17710 de: 'vergleichen', 17711 at: 'vergleichen', 17712 ch: 'vergleichen', 17713 fr: 'comparer', 17714 be: 'comparer', 17715 lu: 'comparer', 17716 it: 'confronta', 17717 es: 'comparar', 17718 nl: 'vergelijken', 17719 pl: 'porównaj', 17720 hu: 'összehasonlÃt', 17721 ro: 'comparÄ', 17722 bg: 'ÑÑавни', 17723 hr: 'usporedi', 17724 fi: 'vertaile', 17725 gr: 'ÏÏγκÏιÏη', 17726 el: 'ÏÏγκÏιÏη', 17727 no: 'sammenlign', 17728 'pt-PT': 'comparar', 17729 sl: 'primerjaj', 17730 sv: 'jämför', 17731 lv: 'salÄ«dzinÄt', 17732 lt: 'palyginti', 17733 ee: 'võrdle', 17734 dk: 'sammenlign', 17735 gb: 'compare', 17736 uk: 'compare', 17737 ie: 'compare', 17738 us: 'compare', 17739 ca: 'compare', 17740 au: 'compare', 17741 nz: 'compare', 17742 ru: 'ÑÑавниÑÑ' 17743 }, 17744 remove: { 17745 en: 'remove', 17746 cs: 'odebrat', 17747 sk: 'odobraÅ¥', 17748 de: 'entfernen', 17749 at: 'entfernen', 17750 ch: 'entfernen', 17751 fr: 'supprimer', 17752 be: 'supprimer', 17753 lu: 'supprimer', 17754 it: 'rimuovi', 17755 es: 'eliminar', 17756 nl: 'verwijderen', 17757 pl: 'usuÅ', 17758 hu: 'eltávolÃt', 17759 ro: 'eliminÄ', 17760 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 17761 hr: 'ukloni', 17762 fi: 'poista', 17763 gr: 'αÏαίÏεÏη', 17764 el: 'αÏαίÏεÏη', 17765 no: 'fjern', 17766 'pt-PT': 'remover', 17767 sl: 'odstrani', 17768 sv: 'ta bort', 17769 lv: 'noÅemt', 17770 lt: 'paÅ¡alinti', 17771 ee: 'eemalda', 17772 dk: 'fjern', 17773 gb: 'remove', 17774 uk: 'remove', 17775 ie: 'remove', 17776 us: 'remove', 17777 ca: 'remove', 17778 au: 'remove', 17779 nz: 'remove', 17780 ru: 'ÑдалиÑÑ' 17781 }, 17782 added: { 17783 en: 'Added!', 17784 cs: 'PÅidáno!', 17785 sk: 'Pridané!', 17786 de: 'Hinzugefügt!', 17787 at: 'Hinzugefügt!', 17788 ch: 'Hinzugefügt!', 17789 fr: 'Ajouté!', 17790 be: 'Ajouté!', 17791 lu: 'Ajouté!', 17792 it: 'Aggiunto!', 17793 es: '¡Añadido!', 17794 nl: 'Toegevoegd!', 17795 pl: 'Dodano!', 17796 hu: 'Hozzáadva!', 17797 ro: 'AdÄugat!', 17798 bg: 'Ðобавено!', 17799 hr: 'Dodano!', 17800 fi: 'Lisätty!', 17801 gr: 'Î ÏοÏÏÎθηκε!', 17802 el: 'Î ÏοÏÏÎθηκε!', 17803 no: 'Lagt til!', 17804 'pt-PT': 'Adicionado!', 17805 sl: 'Dodano!', 17806 sv: 'Tillagd!', 17807 lv: 'Pievienots!', 17808 lt: 'PridÄta!', 17809 ee: 'Lisatud!', 17810 dk: 'Tilføjet!', 17811 gb: 'Added!', 17812 uk: 'Added!', 17813 ie: 'Added!', 17814 us: 'Added!', 17815 ca: 'Added!', 17816 au: 'Added!', 17817 nz: 'Added!', 17818 ru: 'Ðобавлено!' 17819 }, 17820 removed: { 17821 en: 'Removed!', 17822 cs: 'Odebráno!', 17823 sk: 'Odobrané!', 17824 de: 'Entfernt!', 17825 at: 'Entfernt!', 17826 ch: 'Entfernt!', 17827 fr: 'Supprimé!', 17828 be: 'Supprimé!', 17829 lu: 'Supprimé!', 17830 it: 'Rimosso!', 17831 es: '¡Eliminado!', 17832 nl: 'Verwijderd!', 17833 pl: 'UsuniÄto!', 17834 hu: 'EltávolÃtva!', 17835 ro: 'Eliminat!', 17836 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 17837 hr: 'Uklonjeno!', 17838 fi: 'Poistettu!', 17839 gr: 'ÎÏαιÏÎθηκε!', 17840 el: 'ÎÏαιÏÎθηκε!', 17841 no: 'Fjernet!', 17842 'pt-PT': 'Removido!', 17843 sl: 'Odstranjeno!', 17844 sv: 'Borttaget!', 17845 lv: 'NoÅemts!', 17846 lt: 'PaÅ¡alinta!', 17847 ee: 'Eemaldatud!', 17848 dk: 'Fjernet!', 17849 gb: 'Removed!', 17850 uk: 'Removed!', 17851 ie: 'Removed!', 17852 us: 'Removed!', 17853 ca: 'Removed!', 17854 au: 'Removed!', 17855 nz: 'Removed!', 17856 ru: 'Удалено!' 17857 } 17858 }; 17859 17860 // Tooltip translations for price info 17861 window.tooltipTranslations = { 17862 tooltipPrice: { 17863 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17864 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 17865 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 17866 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 17867 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 17868 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 17869 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 17870 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 17871 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 17872 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 17873 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 17874 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 17875 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 17876 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 17877 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 17878 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 17879 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 17880 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 17881 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 17882 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 17883 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 17884 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 17885 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 17886 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 17887 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
17887iks atskaitÄ«ts, ja piemÄrojams.", 17888 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 17889 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 17890 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 17891 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17892 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17893 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17894 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17895 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17896 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17897 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 17898 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 17899 }, 17900 tooltipOutlet: { 17901 en: "We do not provide additional wholesale discounts on outlet products.", 17902 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 17903 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 17904 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 17905 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 17906 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 17907 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 17908 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 17909 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 17910 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 17911 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 17912 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 17913 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 17914 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 17915 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 17916 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 17917 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 17918 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 17919 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 17920 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 17921 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 17922 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 17923 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 17924 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 17925 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 17926 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 17927 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 17928 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 17929 gb: "We do not provide additional wholesale discounts on outlet products.", 17930 uk: "We do not provide additional wholesale discounts on outlet products.", 17931 ie: "We do not provide additional wholesale discounts on outlet products.", 17932 us: "We do not provide additional wholesale discounts on outlet products.", 17933 ca: "We do not provide additional wholesale discounts on outlet products.", 17934 au: "We do not provide additional wholesale discounts on outlet products.", 17935 nz: "We do not provide additional wholesale discounts on outlet products.", 17936 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 17937 } 17938 }; 17939 17940 // Get current locale from document 17941 window.currentLocale = document.documentElement.lang || 'en'; 17942 17943 // Function to translate compare buttons 17944 window.translateCompareButtons = function() { 17945 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
17946 compareTexts.forEach(function(textEl) { 17947 const button = textEl.closest('.compare-button-simple'); 17948 const isInComparison = button && button.hasAttribute('data-in-comparison'); 17949 17950 if (isInComparison) { 17951 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 17952 textEl.textContent = translation; 17953 } else { 17954 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 17955 textEl.textContent = translation; 17956 } 17957 }); 17958 }; 17959 17960 // Function to format price with space as thousands separator (only for tooltip) 17961 function formatTooltipPrice(price) { 17962 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 17963 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 17964 } 17965 17966 // Function to translate tooltips with price 17967 window.translateTooltips = function() { 17968 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 17969 tooltips.forEach(function(tooltip) { 17970 const icon = tooltip.closest('.price-info-icon'); 17971 if (icon) { 17972 const status = icon.getAttribute('data-status'); 17973 // Check if this is an outlet product 17974 if (status === 'outlet') { 17975 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 17976 tooltip.textContent = translation; 17977 return; // Exit early for outlet products 17978 } 17979 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 17980 // Get wholesale price from the actual price display on the card 17981 const card = icon.closest('[data-product-id]'); 17982 let wholesalePrice = ''; 17983 if (card) { 17984 // Find the main price element on the card 17985 const priceElement = card.querySelector('.price .price-item--regular'); 17986 if (priceElement) { 17987 wholesalePrice = priceElement.textContent.trim(); 17988 } 17989 } 17990 if (retailPrice && wholesalePrice) { 17991 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 17992 let formattedRetailPrice = formatTooltipPrice(retailPrice); 17993 let formattedWholesalePrice = wholesalePrice; 17994 if (window.formatPriceText) { 17995 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 17996 } 17997 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 17998 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 17999 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 18000 tooltip.textContent = translatedText; 18001 } 18002 } 18003 }); 18004 }; 18005 18006 // Function to update button state based on comparison status 18007 window.updateCompareButtonState = function(productId, isInComparison) { 18008 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 18009 buttons.forEach(function(button) { 18010 const buttonContainer = button.closest('.compare-button-container'); 18011 const compareText = button.querySelector('.compare-text'); 18012 18013 if (isInComparison) { 18014 button.setAttribute('data-in-comparison', 'true'); 18015 button.classList.add('in-comparison'); 18016 buttonContainer.classList.add('in-comparison'); 18017 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 18018 compareText.textContent = removeText; 18019 } else { 18020 button.removeAttribute('data-in-comparison'); 18021 button.classList.remove('in-comparison'); 18022 buttonContainer.classList.remove('in-comparison'); 18023 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 18024 compareText.textContent = compareTextTranslation; 18025 } 18026 }); 18027 }; 18028 } 18029 18030 // Initialize compare button states based on localStorage 18031 window.initializeCompareButtonStates = function() {
18032 if (typeof window.RendlCompare !== 'undefined') { 18033 const compareItems = window.RendlCompare.getItems(); 18034 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 18035 const productId = button.getAttribute('data-product-id'); 18036 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 18037 window.updateCompareButtonState(productId, isInComparison); 18038 }); 18039 } 18040 }; 18041 18042 // Compare button UI animation - the actual functionality is handled by compare-system.js 18043 document.addEventListener('DOMContentLoaded', function() { 18044 // Apply translations on page load 18045 if (window.translateCompareButtons) { 18046 window.translateCompareButtons(); 18047 } 18048 18049 // Initialize button states based on comparison data 18050 setTimeout(function() { 18051 if (window.initializeCompareButtonStates) { 18052 window.initializeCompareButtonStates(); 18053 } 18054 }, 100); // Small delay to ensure compare system is loaded 18055 18056 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 18057 // Skip if already has event listener 18058 if (button.hasAttribute('data-compare-initialized')) { 18059 return; 18060 } 18061 button.setAttribute('data-compare-initialized', 'true'); 18062 18063 button.addEventListener('click', function(e) { 18064 var buttonContainer = button.closest('.compare-button-container'); 18065 var compareText = button.querySelector('.compare-text'); 18066 var isInComparison = button.hasAttribute('data-in-comparison'); 18067 var productId = button.getAttribute('data-product-id'); 18068 18069 // Prevent multiple clicks during loading 18070 if (button.classList.contains('loading')) { 18071 return; 18072 } 18073 18074 // Make button always visible during the process 18075 buttonContainer.classList.add('active'); 18076 18077 // Add loading class to show spinner 18078 button.classList.add('loading'); 18079 18080 // UI feedback timing 18081 setTimeout(function() { 18082 // Remove loading class and show success message 18083 button.classList.remove('loading'); 18084 button.classList.add('success'); 18085 18086 if (isInComparison) { 18087 // Removing from comparison 18088 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 18089 18090 // Update button state after removal 18091 setTimeout(function() { 18092 button.classList.remove('success'); 18093 window.updateCompareButtonState(productId, false); 18094 buttonContainer.classList.remove('active'); 18095 }, 1500); 18096 } else { 18097 // Adding to comparison 18098 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 18099 18100 // Update button state after addition 18101 setTimeout(function() { 18102 button.classList.remove('success'); 18103 window.updateCompareButtonState(productId, true); 18104 buttonContainer.classList.remove('active'); 18105 }, 1500); 18106 } 18107 }, 1200); 18108 }); 18109 }); 18110 18111 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 18112 setTimeout(function() { 18113 if (window.translateTooltips) { 18114 window.translateTooltips(); 18115 } 18116 }, 100); 18117 }); 18118 18119 // Ensure compare button states are initialized after RendlCompare is available 18120 document.addEventListener('DOMContentLoaded', function() { 18121 function tryInitCompareButtons() { 18122 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 18123 window.initializeCompareButtonStates(); 18124 } else { 18125 setTimeout(tryInitCompareButtons, 100); 18126 } 18127 } 18128 tryInitCompareButtons(); 18129 }); 18130 18131 // Self-contained wishlist functionality for card-product 18132 (function() { 18133 // Wishlist translations 18134 var wishlistTranslations = { 18135 'en': { 18136 addToWishlist: 'Add to My Favorites', 18137 createCategory: 'Create new category:', 18138 categoryPlaceholder: 'Category name', 18139 createAndAdd: 'Create & Add Item', 18140 alreadyAdded: '(Already added)', 18141 addedToWishlist: 'added to My Favorites', 18142 removedFromWishlist: 'removed from My Favorites', 18143 allFavorites: 'All Favorites' 18144 }, 18145 'cs': { 18146 addToWishlist: 'PÅidat do oblÃbených', 18147 createCategory: 'VytvoÅit novou skupinu:', 18148 categoryPlaceholder: 'Název nové skupiny', 18149 createAndAdd: 'VytvoÅit a pÅidat skupinu', 18150 alreadyAdded: '(Již pÅidáno)', 18151 addedToWishlist: 'pÅidáno do oblÃbených', 18152 removedFromWishlist: 'odebráno z oblÃbených', 18153 allFavorites: 'VÅ¡echny oblÃbené' 18154 }, 18155 'sk': { 18156 addToWishlist: 'PridaÅ¥ do obľúbených', 18157 createCategory: 'VytvoriÅ¥ novú kategóriu:', 18158 categoryPlaceholder: 'Názov kategórie', 18159 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 18160 alreadyAdded: '(Už pridané)', 18161 addedToWishlist: 'pridané do obľúbených', 18162 removedFromWishlist: 'odstránené z obľúbených', 18163 allFavorites: 'VÅ¡etky obľúbené' 18164 }, 18165 'de': { 18166 addToWishlist: 'Zu meinen Favoriten hinzufügen', 18167 createCategory: 'Neue Kategorie erstellen:', 18168 categoryPlaceholder: 'Kategoriename', 18169 createAndAdd: 'Erstellen & hinzufügen', 18170 alreadyAdded: '(Bereits hinzugefügt)', 18171 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 18172 removedFromWishlist: 'aus meinen Favoriten entfernt', 18173 allFavorites: 'Alle Favoriten' 18174 }, 18175 'fr': { 18176 addToWishlist: 'Ajouter à mes favoris', 18177 createCategory: 'Créer une nouvelle catégorie :', 18178 categoryPlaceholder: 'Nom de la catégorie', 18179 createAndAdd: 'Créer et ajouter', 18180 alreadyAdded: '(Déjà ajouté)', 18181 addedToWishlist: 'ajouté à mes favoris', 18182 removedFromWishlist: 'retiré de mes favoris', 18183 allFavorites: 'Tous les favoris' 18184 }, 18185 'it': { 18186 addToWishlist: 'Aggiungi ai preferiti', 18187 createCategory: 'Crea nuova categoria:', 18188 categoryPlaceholder: 'Nome categoria', 18189 createAndAdd: 'Crea e aggiungi', 18190 alreadyAdded: '(Già aggiunto)', 18191 addedToWishlist: 'aggiunto ai preferiti', 18192 removedFromWishlist: 'rimosso dai preferiti', 18193 allFavorites: 'Tutti i preferiti' 18194 }, 18195 'es': { 18196 addToWishlist: 'Añadir a mis favoritos', 18197 createCategory: 'Crear nueva categorÃa:', 18198 categoryPlaceholder: 'Nombre de la categorÃa', 18199 createAndAdd: 'Crear y añadir', 18200 alreadyAdded: '(Ya añadido)', 18201 addedToWishlist: 'añadido a mis favoritos', 18202 removedFromWishlist: 'eliminado de mis favoritos', 18203 allFavorites: 'Todos los favoritos' 18204 }, 18205 'nl': { 18206 addToWishlist: 'Toevoegen aan mijn favorieten', 18207 createCategory: 'Nieuwe categorie aanmaken:', 18208 categoryPlaceholder: 'Categorienaam', 18209 createAndAdd: 'Aanmaken & toevoegen', 18210 alreadyAdded: '(Al toegevoegd)', 18211 addedToWishlist: 'toegevoegd aan mijn favorieten', 18212 removedFromWishlist: 'verwijderd uit mijn favorieten', 18213 allFavorites: 'Alle favorieten' 18214 }, 18215 'pl': { 18216 addToWishlist: 'Dodaj do ulubionych', 18217 createCategory: 'Utwórz nowÄ kategoriÄ:', 18218 categoryPlaceholder: 'Nazwa kategorii', 18219 createAndAdd: 'Utwórz i dodaj', 18220 alreadyAdded: '(Już dodane)', 18221 addedToWishlist: 'dodano do ulubionych', 18222 removedFromWishlist: 'usuniÄto z ulubionych', 18223 allFavorites: 'Wszystkie ulubione' 18224 }, 18225 'hu': { 18226 addToWishlist: 'Hozzáadás a kedvencekhez', 18227 createCategory: 'Ãj kategória létrehozása:', 18228 categoryPlaceholder: 'Kategória neve', 18229 createAndAdd: 'Létrehozás és hozzáadás', 18230 alreadyAdded: '(Már hozzáadva)', 18231 addedToWishlist: 'hozzáadva a kedvencekhez', 18232 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 18233 allFavorites: 'Minden kedvenc' 18234 }, 18235 'ro': { 18236 addToWishlist: 'AdaugÄ la favorite', 18237 createCategory: 'CreeazÄ o nouÄ categorie:', 18238 categoryPlaceholder: 'Nume categorie', 18239 createAndAdd: 'CreeazÄ Èi adaugÄ', 18240 alreadyAdded: '(Deja adÄugat)', 18241 addedToWishlist: 'adÄugat la favorite', 18242 removedFromWishlist: 'eliminat din favorite', 18243 allFavorites: 'Toate preferinÈele' 18244 }, 18245 'bg': { 18246 addToWishlist: 'Ðобави в лÑбими', 18247 createCategory: 'СÑздай нова каÑегоÑиÑ:', 18248 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 18249 createAndAdd: 'СÑздай и добави', 18250 alreadyAdded: '(ÐеÑе добавено)', 18251 addedToWishlist: 'добавено в лÑбими', 18252 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 18253 allFavorites: 'ÐÑиÑки лÑбими' 18254 }, 18255 'hr': { 18256 addToWishlist: 'Dodaj u favorite', 18257 createCategory: 'Kreiraj novu kategoriju:', 18258 categoryPlaceholder: 'Naziv kategorije', 18259 createAndAdd: 'Kreiraj i dodaj', 18260 alreadyAdded: '(VeÄ dodano)', 18261 addedToWishlist: 'dodano u favorite', 18262 removedFromWishlist: 'uklonjeno iz favorita', 18263 allFavorites: 'Sva omiljena' 18264 }, 18265 'fi': { 18266 addToWishlist: 'Lisää suosikkeihin', 18267 createCategory: 'Luo uusi kategoria:', 18268 categoryPlaceholder: 'Kategorian nimi', 18269 createAndAdd: 'Luo ja lisää', 18270 alreadyAdded: '(Jo lisätty)', 18271 addedToWishlist: 'lisätty suosikkeihin', 18272 removedFromWishlist: 'poistettu suosikeista',
18273 allFavorites: 'Kaikki suosikit' 18274 }, 18275 'gr': { 18276 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 18277 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 18278 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 18279 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 18280 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 18281 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 18282 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 18283 allFavorites: 'Îλα Ïα αγαÏημÎνα' 18284 }, 18285 'no': { 18286 addToWishlist: 'Legg til i favoritter', 18287 createCategory: 'Opprett ny kategori:', 18288 categoryPlaceholder: 'Kategorinavn', 18289 createAndAdd: 'Opprett og legg til', 18290 alreadyAdded: '(Allerede lagt til)', 18291 addedToWishlist: 'lagt til i favoritter', 18292 removedFromWishlist: 'fjernet fra favoritter', 18293 allFavorites: 'Alle favoritter' 18294 }, 18295 'pt-PT': { 18296 addToWishlist: 'Adicionar aos favoritos', 18297 createCategory: 'Criar nova categoria:', 18298 categoryPlaceholder: 'Nome da categoria', 18299 createAndAdd: 'Criar e adicionar', 18300 alreadyAdded: '(Já adicionado)', 18301 addedToWishlist: 'adicionado aos favoritos', 18302 removedFromWishlist: 'removido dos favoritos', 18303 allFavorites: 'Todos os favoritos' 18304 }, 18305 'sl': { 18306 addToWishlist: 'Dodaj med priljubljene', 18307 createCategory: 'Ustvari novo kategorijo:', 18308 categoryPlaceholder: 'Ime kategorije', 18309 createAndAdd: 'Ustvari in dodaj', 18310 alreadyAdded: '(Že dodano)', 18311 addedToWishlist: 'dodano med priljubljene', 18312 removedFromWishlist: 'odstranjeno iz priljubljenih', 18313 allFavorites: 'Vsi priljubljeni' 18314 }, 18315 'sv': { 18316 addToWishlist: 'Lägg till i favoriter', 18317 createCategory: 'Skapa ny kategori:', 18318 categoryPlaceholder: 'Kategorinamn', 18319 createAndAdd: 'Skapa och lägg till', 18320 alreadyAdded: '(Redan tillagd)', 18321 addedToWishlist: 'tillagd i favoriter', 18322 removedFromWishlist: 'borttagen frÃ¥n favoriter', 18323 allFavorites: 'Alla favoriter' 18324 }, 18325 'lv': { 18326 addToWishlist: 'Pievienot favorÄ«tiem', 18327 createCategory: 'Izveidot jaunu kategoriju:', 18328 categoryPlaceholder: 'Kategorijas nosaukums', 18329 createAndAdd: 'Izveidot un pievienot', 18330 alreadyAdded: '(Jau pievienots)', 18331 addedToWishlist: 'pievienots favorÄ«tiem', 18332 removedFromWishlist: 'noÅemts no favorÄ«tiem', 18333 allFavorites: 'Visas favorÄ«tus' 18334 }, 18335 'lt': { 18336 addToWishlist: 'PridÄti į mÄgstamiausius', 18337 createCategory: 'Sukurti naujÄ kategorijÄ :', 18338 categoryPlaceholder: 'Kategorijos pavadinimas', 18339 createAndAdd: 'Sukurti ir pridÄti', 18340 alreadyAdded: '(Jau pridÄta)', 18341 addedToWishlist: 'pridÄta į mÄgstamiausius', 18342 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 18343 allFavorites: 'Visos mÄgstamiausios' 18344 }, 18345 'ee': { 18346 addToWishlist: 'Lisa lemmikutesse', 18347 createCategory: 'Loo uus kategooria:', 18348 categoryPlaceholder: 'Kategooria nimi', 18349 createAndAdd: 'Loo ja lisa', 18350 alreadyAdded: '(Juba lisatud)', 18351 addedToWishlist: 'lisatud lemmikutesse', 18352 removedFromWishlist: 'eemaldatud lemmikutest', 18353 allFavorites: 'Kõik lemmikud' 18354 }, 18355 'dk': { 18356 addToWishlist: 'Tilføj til favoritter', 18357 createCategory: 'Opret ny kategori:', 18358 categoryPlaceholder: 'Kategorinavn', 18359 createAndAdd: 'Opret og tilføj', 18360 alreadyAdded: '(Allerede tilføjet)', 18361 addedToWishlist: 'tilføjet til favoritter', 18362 removedFromWishlist: 'fjernet fra favoritter', 18363 allFavorites: 'Alle favoritter' 18364 } 18365 }; 18366 18367 function getWishlistLang() { 18368 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 18369 // Normalize for region codes (e.g., pt-PT, sl) 18370 if (lang.startsWith('pt-PT')) return 'pt-PT'; 18371 if (lang.startsWith('sl')) return 'sl'; 18372 if (lang.startsWith('cs')) return 'cs'; 18373 if (lang.startsWith('sk')) return 'sk'; 18374 if (lang.startsWith('de')) return 'de'; 18375 if (lang.startsWith('fr')) return 'fr'; 18376 if (lang.startsWith('it')) return 'it'; 18377 if (lang.startsWith('es')) return 'es'; 18378 if (lang.startsWith('nl')) return 'nl'; 18379 if (lang.startsWith('pl')) return 'pl'; 18380 if (lang.startsWith('hu')) return 'hu'; 18381 if (lang.startsWith('ro')) return 'ro'; 18382 if (lang.startsWith('bg')) return 'bg'; 18383 if (lang.startsWith('hr')) return 'hr'; 18384 if (lang.startsWith('fi')) return 'fi'; 18385 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 18386 if (lang.startsWith('no')) return 'no'; 18387 if (lang.startsWith('sv')) return 'sv'; 18388 if (lang.startsWith('lv')) return 'lv'; 18389 if (lang.startsWith('lt')) return 'lt'; 18390 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 18391 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 18392 return 'en'; 18393 } 18394 18395 // Get or initialize the wishlist array in localStorage 18396 function getWishlist() { 18397 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 18398 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 18399 categories: [ 18400 { 18401 id: 'all-favorites', 18402 name: 'All Favorites', 18403 items: [] 18404 } 18405 ], 18406 version: 2 18407 }; 18408 18409 // Handle migration from old format (array of items) to new format (categories) 18410 if (Array.isArray(wishlist)) { 18411 return { 18412 categories: [ 18413 { 18414 id: 'all-favorites', 18415 name: 'All Favorites', 18416 items: wishlist 18417 } 18418 ], 18419 version: 2 18420 }; 18421 } 18422 18423 return wishlist; 18424 } 18425 18426 // Save wishlist to localStorage 18427 function saveWishlist(wishlist) { 18428 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 18429 // Dispatch an event so other parts of the site can react to wishlist changes 18430 document.dispatchEvent(new CustomEvent('wishlist:updated', { 18431 detail: { wishlist: wishlist } 18432 })); 18433 18434 // Count total items across all categories 18435 const totalItems = wishlist.categories.reduce((total, category) => { 18436 return total + category.items.length; 18437 }, 0); 18438 18439 // Update all wishlist counters 18440 updateWishlistCounters(totalItems); 18441 } 18442 18443 // Update all wishlist counters on the page 18444 function updateWishlistCounters(count) { 18445 const counters = document.querySelectorAll('.wishlist-count');
18446 counters.forEach(counter => { 18447 counter.textContent = count; 18448 18449 // If the counter is hidden and count > 0, show it 18450 if (count > 0 && counter.hasAttribute('hidden')) { 18451 counter.removeAttribute('hidden'); 18452 } 18453 // If the counter is visible and count = 0, hide it 18454 else if (count === 0 && !counter.hasAttribute('hidden')) { 18455 counter.setAttribute('hidden', 'true'); 18456 } 18457 }); 18458 } 18459 18460 // Check if a product is in the wishlist (in any category) 18461 function isInWishlist(productId) { 18462 const wishlist = getWishlist(); 18463 return wishlist.categories.some(category => 18464 category.items.some(item => item.id === productId) 18465 ); 18466 } 18467 18468 // Get all categories 18469 function getCategories() { 18470 return getWishlist().categories; 18471 } 18472 18473 // Create a new category 18474 function createCategory(name) { 18475 const wishlist = getWishlist(); 18476 const categoryId = 'category-' + Date.now(); 18477 18478 wishlist.categories.push({ 18479 id: categoryId, 18480 name: name, 18481 items: [] 18482 }); 18483 18484 saveWishlist(wishlist); 18485 return categoryId; 18486 } 18487 18488 // Add a product to a specific category 18489 function addToCategory(product, categoryId) { 18490 const wishlist = getWishlist(); 18491 const category = wishlist.categories.find(cat => cat.id === categoryId); 18492 18493 if (!category) return false; 18494 18495 // Check if product already exists in ANY category (not just this one) 18496 if (isInWishlist(product.id)) { 18497 return false; // Product already in wishlist 18498 } 18499 18500 // Add product to category 18501 category.items.push(product); 18502 saveWishlist(wishlist); 18503 18504 // Dispatch event for global sync 18505 document.dispatchEvent(new CustomEvent('wishlist:updated', { 18506 detail: { productId: product.id, added: true } 18507 })); 18508 18509 return true; 18510 } 18511 18512 // Add a product to the default "All Favorites" category 18513 function addToWishlist(product) { 18514 return addToCategory(product, 'all-favorites'); 18515 } 18516 18517 // Remove a product from all categories 18518 function removeFromWishlist(productId) { 18519 const wishlist = getWishlist(); 18520 let removed = false; 18521 18522 wishlist.categories.forEach(category => { 18523 const initialLength = category.items.length; 18524 category.items = category.items.filter(item => item.id !== productId); 18525 if (category.items.length !== initialLength) { 18526 removed = true; 18527 } 18528 }); 18529 18530 if (removed) { 18531 saveWishlist(wishlist); 18532 } 18533 18534 return removed; 18535 } 18536 18537 // Toggle a product in the wishlist 18538 function toggleWishlistItem(product) { 18539 if (isInWishlist(product.id)) { 18540 // If already in wishlist, remove it 18541 const wasRemoved = removeFromWishlist(product.id); 18542 18543 // Update heart icon if the product was successfully removed 18544 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 18545 if (heartIcon && wasRemoved) { 18546 heartIcon.setAttribute('fill', 'none'); 18547 showWishlistToast(false, product.title); 18548 18549 // Dispatch event for global sync 18550 document.dispatchEvent(new CustomEvent('wishlist:updated', { 18551 detail: { productId: product.id, added: false } 18552 })); 18553 } 18554 return wasRemoved; 18555 } else { 18556 // If not in wishlist, show category selection popup 18557 showCategorySelectionPopup(product); 18558 return false; // Don't return true unless we actually add the product 18559 } 18560 } 18561 18562 // Show wishlist category selection popup 18563 function showCategorySelectionPopup(product) { 18564 // Remove any existing popup 18565 const existingPopup = document.getElementById('wishlist-category-popup'); 18566 if (existingPopup) { 18567 existingPopup.remove(); 18568 } 18569 18570 const lang = getWishlistLang(); 18571 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 18572 18573 // Create popup container 18574 const popup = document.createElement('div'); 18575 popup.id = 'wishlist-category-popup'; 18576 popup.className = 'wishlist-category-popup'; 18577 18578 // Create popup content 18579 const content = document.createElement('div'); 18580 content.className = 'wishlist-category-popup-content'; 18581 18582 // Create header 18583 const title = document.createElement('h2'); 18584 title.textContent = translations.addToWishlist; // Translate 18585 18586 const closeButton = document.createElement('button'); 18587 closeButton.className = 'wishlist-category-popup-close'; 18588 closeButton.setAttribute('aria-label', 'Close'); 18589 closeButton.addEventListener('click', () => { 18590 popup.remove(); 18591 }); 18592 18593 // Create category list 18594 const categoryList = document.createElement('div'); 18595 categoryList.className = 'wishlist-category-list'; 18596 18597 // Get categories 18598 const categories = getCategories(); 18599 18600 // Add category options
18601 categories.forEach(category => { 18602 const categoryOption = document.createElement('div'); 18603 categoryOption.className = 'wishlist-category-option'; 18604 18605 // Use translation for default category name 18606 categoryOption.textContent = category.id === 'all-favorites' 18607 ? (translations.allFavorites || category.name) 18608 : category.name; 18609 18610 // Highlight if product already in this category 18611 if (category.items.some(item => item.id === product.id)) { 18612 categoryOption.style.backgroundColor = '#f0f0f0'; 18613 categoryOption.style.color = '#999'; 18614 categoryOption.style.fontStyle = 'italic'; 18615 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 18616 categoryOption.style.cursor = 'default'; 18617 } else { 18618 categoryOption.addEventListener('click', () => { 18619 const wasAdded = addToCategory(product, category.id); 18620 18621 if (wasAdded) { 18622 // Update heart icon after successful addition 18623 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 18624 if (heartIcon) { 18625 heartIcon.setAttribute('fill', '#333333'); 18626 } 18627 18628 showWishlistToast(true, product.title); 18629 popup.remove(); 18630 } 18631 }); 18632 } 18633 18634 categoryList.appendChild(categoryOption); 18635 }); 18636 18637 // Create "add new category" section 18638 const newCategorySection = document.createElement('div'); 18639 newCategorySection.style.borderTop = '1px solid #eee'; 18640 newCategorySection.style.paddingTop = '15px'; 18641 newCategorySection.style.marginTop = '10px'; 18642 18643 const newCategoryLabel = document.createElement('label'); 18644 newCategoryLabel.textContent = translations.createCategory; // Translate 18645 18646 const newCategoryInput = document.createElement('input'); 18647 newCategoryInput.type = 'text'; 18648 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 18649 18650 const createButton = document.createElement('button'); 18651 createButton.className = 'create-category-button'; 18652 createButton.textContent = translations.createAndAdd; // Translate 18653 18654 createButton.addEventListener('click', () => { 18655 const categoryName = newCategoryInput.value.trim(); 18656 if (categoryName) { 18657 const categoryId = createCategory(categoryName); 18658 const wasAdded = addToCategory(product, categoryId); 18659 18660 if (wasAdded) { 18661 // Update heart icon after successful addition 18662 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 18663 if (heartIcon) { 18664 heartIcon.setAttribute('fill', '#333333'); 18665 } 18666 18667 showWishlistToast(true, product.title); 18668 popup.remove(); 18669 } 18670 } 18671 }); 18672 18673 newCategorySection.appendChild(newCategoryLabel); 18674 newCategorySection.appendChild(newCategoryInput); 18675 newCategorySection.appendChild(createButton); 18676 18677 // Assemble popup 18678 content.appendChild(title); 18679 content.appendChild(closeButton); 18680 content.appendChild(categoryList); 18681 content.appendChild(newCategorySection); 18682 popup.appendChild(content); 18683 18684 // Add to document 18685 document.body.appendChild(popup); 18686 18687 // Focus the input 18688 setTimeout(() => { 18689 newCategoryInput.focus(); 18690 }, 100); 18691 18692 // Close when clicking outside content 18693 popup.addEventListener('click', (e) => { 18694 if (e.target === popup) { 18695 popup.remove(); 18696 } 18697 }); 18698 } 18699 18700 // Show a toast notification 18701 function showWishlistToast(added, productTitle) { 18702 // Create or get toast container 18703 let toastContainer = document.getElementById('wishlist-toast'); 18704 if (!toastContainer) { 18705 toastContainer = document.createElement('div'); 18706 toastContainer.id = 'wishlist-toast'; 18707 toastContainer.style.position = 'fixed'; 18708 toastContainer.style.bottom = '20px'; 18709 toastContainer.style.right = '20px'; 18710 toastContainer.style.zIndex = '9999'; 18711 document.body.appendChild(toastContainer); 18712 } 18713 18714 // Create toast 18715 const toast = document.createElement('div'); 18716 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 18717 toast.style.color = 'white'; 18718 toast.style.padding = '12px 20px'; 18719 toast.style.borderRadius = '0'; 18720 toast.style.marginTop = '10px'; 18721 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 18722 toast.style.transition = 'all 0.3s ease'; 18723 toast.style.opacity = '0'; 18724 toast.style.fontFamily = 'Montserrat, sans-serif'; 18725 18726 // Choose text based on action 18727 const lang = getWishlistLang(); 18728 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 18729 toast.textContent = added 18730 ? `${productTitle} ${translations.addedToWishlist}` // Translate 18731 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 18732 18733 // Add to container 18734 toastContainer.appendChild(toast); 18735 18736 // Animate in 18737 setTimeout(() => { 18738 toast.style.opacity = '1'; 18739 }, 10); 18740 18741 // Animate out and remove 18742 setTimeout(() => { 18743 toast.style.opacity = '0'; 18744 setTimeout(() => { 18745 toastContainer.removeChild(toast); 18746 }, 300); 18747 }, 3000); 18748 } 18749 18750 // Initialize wishlist buttons 18751 function initCardWishlistButtons() { 18752 const wishlistButtons = document.querySelectorAll('.card-wis
18752hlist-button'); 18753 18754 wishlistButtons.forEach(button => { 18755 // Skip if already initialized 18756 if (button.dataset.initializedWishlist === 'true') return; 18757 button.dataset.initializedWishlist = 'true'; 18758 18759 const productId = button.getAttribute('data-wishlist-product'); 18760 if (!productId) return; 18761 18762 // Get product details from the card 18763 const card = button.closest('.card-wrapper'); 18764 const productDetails = { 18765 id: productId, 18766 title: card.querySelector('.card__heading')?.textContent.trim() || '', 18767 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 18768 price: card.querySelector('.price')?.textContent.trim() || '', 18769 image: card.querySelector('img')?.src || '', 18770 url: card.querySelector('a[href*="/products/"]')?.href || '' 18771 }; 18772 18773 // Set initial state using global function 18774 const heartIcon = button.querySelector('path'); 18775 if (heartIcon) { 18776 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 18777 heartIcon.setAttribute('fill', '#333333'); 18778 } else { 18779 heartIcon.setAttribute('fill', 'none'); 18780 } 18781 } 18782 18783 // Add click handler 18784 button.addEventListener('click', function(e) { 18785 e.preventDefault(); 18786 e.stopPropagation(); 18787 e.stopImmediatePropagation(); 18788 toggleWishlistItem(productDetails); 18789 }); 18790 18791 // Prevent navigation on mousedown/touchstart 18792 button.addEventListener('mousedown', function(e) { 18793 e.preventDefault(); 18794 e.stopPropagation(); 18795 }); 18796 18797 button.addEventListener('touchstart', function(e) { 18798 e.preventDefault(); 18799 e.stopPropagation(); 18800 }); 18801 }); 18802 } 18803 18804 // Initialize the wishlist counter on page load 18805 const wishlist = getWishlist(); 18806 const totalItems = wishlist.categories.reduce((total, category) => { 18807 return total + category.items.length; 18808 }, 0); 18809 updateWishlistCounters(totalItems); 18810 18811 // Initialize on DOM ready 18812 if (document.readyState === 'loading') { 18813 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 18814 } else { 18815 initCardWishlistButtons(); 18816 } 18817 18818 // Reinitialize on Shopify section load 18819 document.addEventListener('shopify:section:load', function() { 18820 setTimeout(initCardWishlistButtons, 100); 18821 }); 18822 18823 // Listen for wishlist updates from other parts of the site 18824 document.addEventListener('wishlist:updated', function() { 18825 setTimeout(initCardWishlistButtons, 100); 18826 }); 18827 })(); 18828</script>
18828 18829 18830<!-- Price info icon styles --> 18831<style> 18832 /* Price container with icon */ 18833 .price-container-with-info { 18834 position: relative; 18835 display: flex; 18836 align-items: center; 18837 gap: 8px; 18838 } 18839 18840 /* Info icon - hidden by default, shown on card hover */ 18841 .price-info-icon { 18842 position: relative; 18843 display: inline-flex; 18844 align-items: center; 18845 justify-content: center; 18846 color: #666; 18847 cursor: help; 18848 opacity: 0; 18849 transition: opacity 0.3s ease; 18850 18851 padding: 4px; /* Add padding to increase clickable area */ 18852 min-width: 20px; /* Ensure minimum clickable area */ 18853 min-height: 20px; 18854 z-index: 15; /* Above everything else including compare button */ 18855 pointer-events: auto; /* Allow interaction */ 18856 } 18857 18858 /* Show icon on card hover */ 18859 .card-wrapper:hover .price-info-icon { 18860 opacity: 1; 18861 } 18862 18863 .price-info-icon svg { 18864 width: 14px; 18865 height: 14px; 18866 stroke-width: 1.5; 18867 } 18868 18869 /* Tooltip styles */ 18870 .price-info-tooltip { 18871 position: absolute; 18872 bottom: calc(100% + 6px); 18873 top: auto; 18874 left: 0; 18875 transform: none; 18876 min-width: 310px; 18877 background: #FFFFFF; 18878 color: #232323; 18879 border: 1px solid #EEEEEE; 18880 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 18881 padding: 12px 16px; 18882 font-size: 13px; 18883 font-family: 'Montserrat', sans-serif; 18884 z-index: 10000; 18885 opacity: 0; 18886 transition: opacity 0.18s; 18887 white-space: pre-line; 18888 text-align: left; 18889 border-radius: 0; 18890 visibility: hidden; 18891 pointer-events: none; 18892 } 18893 18894 /* Show tooltip on icon hover */ 18895 .price-info-icon:hover .price-info-tooltip { 18896 visibility: visible; 18897 opacity: 1; 18898 } 18899 18900 /* Ensure tooltip is never clipped */ 18901 .price-container-with-info, 18902 .card-information, 18903 .card__content { 18904 overflow: visible !important; 18905 } 18906 18907 /* Mobile adjustments */ 18908 @media screen and (max-width: 768px) { 18909 .price-info-tooltip { 18910 min-width: 200px; 18911 font-size: 12px; 18912 padding: 10px 12px; 18913 } 18914 } 18915</style> 18916 18917 </li> 18918 <li 18919 class="grid__item" 18920 18921 > 18922 18923<div class="card-wrapper product-card-wrapper underline-links-hover"> 18924 18925 <div 18926 class=" 18927 card card--standard 18928 card--media 18929 18930 18931 18932 18933 18934 " 18935 style="--ratio-percent: 100.0%;" 18936 data-product-id="9746991874346" 18937 data-description="Bolardo LED de exterior con suave emisión de luz que irradia uniformemente hacia los lados. " 18938 data-status-in-sortiment="NEW" 18939 data-ip-rate="IP65" 18940 18941 data-variant-id="52388168728874" 18942 data-price="158.00 EUR" 18943 data-compare-at-price="" 18944 data-available="false" 18945 data-barcode="8595685429472" 18946 data-ip-rate="IP65" 18947 data-lumens="1010" 18948 data-power-source="" 18949 data-watt="9.0" 18950 data-kelvin="3000" 18951 data-light-color="" 18952 data-diameter="11.8" 18953 data-weight-netto="1835.0" 18954 data-weight-unit="g" 18955 data-mounting-hole-size="" 18956 data-recess-depth="" 18957 data-suspension-lenght="" 18958 data-turn-angle="" 18959 data-tilt-angle="" 18960 data-switch="" 18961 data-socket="LED" 18962 data-light-source-recomended="" 18963 data-height="60" 18964 data-length="" 18965 data-Length="" 18966 > 18967 <div 18968 class="card__inner color-scheme-2 gradient ratio" 18969 style="--ratio-percent: 100.0%;" 18970 > 18971 18972<div class="product-status-badge status-NEW"> 18973 <span>NEW</span> 18974 </div> 18975<div class="ip-rate-badge"> 18976 <span>IP65</span> 18977 </div><div class="card__media"> 18978 <a class="card__media-link-content" href="/products/brenda-60-floor-lamp" aria-label="BRENDA 60"> 18979 <div class="media media--transparent media--hover-effect"> 18980 18981 <img 18982 class="product-image motion-reduce" 18983 srcset="//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=165 165w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=360 360w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=533 533w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=720 720w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=940 940w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=1066 1066w,//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128 4899w 18984 " 18985 src="//rendl.es/cdn/shop/files/r14203-1.jpg?v=1745944128&width=533" 18986 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 18987 alt="RENDL outdoor lamp BRENDA 60 floor black 230V LED LED 9W IP65 3000K R14203 1" 18988 18989 loading="lazy" 18990 18991 width="4899" 18992 height="4899" 18993 > 18994 18995<img 18996 class="product-image motion-reduce" 18997 srcset="//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=165 165w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=360 360w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=533 533w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=720 720w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=940 940w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=1066 1066w,//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045 3162w 18998 " 18999 src="//rendl.es/cdn/shop/files/r14203-3.jpg?v=1783740045&width=533" 19000 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 19001 alt="" 19002 loading="lazy" 19003 width="3162" 19004 height="3162" 19005 ></div> 19006 </a> 19007 19008<div class="card-media-icons"><div class="energy-label-icon"> 19009 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_F.svg?v=1785350126" alt="Energy class F" width="32" height="32" loading="lazy"> 19010 <div class="energy-label-tooltip">Clase energética F 19011</div> 19012 </div></div><div class="card-variant-swatches"><a 19013 class="card-variant-swatch" 19014 href="/products/brenda-60-floor-lamp?variant=52388168728874" 19015 19016 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 19017 19018 aria-label="negro" 19019 >
19020 <span class="card-variant-swatch-tooltip">negro</span></a></div></div><div class="card__content"> 19021 <div class="card__information"> 19022 <h3 19023 class="card__heading" 19024 19025 > 19026 <a 19027 href="/products/brenda-60-floor-lamp" 19028 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991874346" 19029 class="full-unstyled-link" 19030 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991874346 NoMediaStandardBadge-template--28113427169578__product-grid-9746991874346" 19031 > 19032 BRENDA 60 19033 </a> 19034 </h3> 19035 </div> 19036 <div class="card__badge bottom left"><span 19037 id="NoMediaStandardBadge-template--28113427169578__product-grid-9746991874346" 19038 class="badge badge--bottom-left color-scheme-3" 19039 >En camino</span></div> 19040 </div> 19041 </div> 19042 <div class="card__content"> 19043 <div class="card__information"> 19044 <h3 19045 class="card__heading h5" 19046 19047 id="title-template--28113427169578__product-grid-9746991874346" 19048 19049 > 19050 <a 19051 href="/products/brenda-60-floor-lamp" 19052 id="CardLink-template--28113427169578__product-grid-9746991874346" 19053 class="full-unstyled-link" 19054 aria-labelledby="CardLink-template--28113427169578__product-grid-9746991874346 Badge-template--28113427169578__product-grid-9746991874346" 19055 > 19056 BRENDA 60 19057 </a> 19058 </h3><div class="card__description"> 19059 Bolardo LED de exterior con suave emisión de luz que irradia uniformemente hacia los lados. 19060 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 19061 19062<div 19063 class=" 19064 price price--sold-out" 19065 > 19066 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 19067 <span class="price-item price-item--regular"> 19068 158.00 EUR 19069 </span></div> 19070 <div class="price__sale"> 19071 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 19072 <span> 19073 <s class="price-item price-item--regular"> 19074 19075 19076 19077 </s> 19078 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 19079 <span class="price-item price-item--sale price-item--last"> 19080 158.00 EUR 19081 </span> 19082 </div> 19083 <small class="unit-price caption hidden"> 19084 <span class="visually-hidden">Precio unitario</span> 19085 <span class="price-item price-item--last"> 19086 <span></span> 19087 <span aria-hidden="true">/</span> 19088 <span class="visually-hidden"> por </span> 19089 <span> 19090 </span> 19091 </span> 19092 </small> 19093 </div></div> 19094 19095 19096</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 19097 <button class="compare-button-simple" 19098 data-product-id="9746991874346" 19099 data-product-title="BRENDA 60" 19100 data-product-handle="brenda-60-floor-lamp"> 19101 <span class="compare-button-content"> 19102 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 19103 <span class="compare-text" data-translate="compare">compare</span> 19104 </span> 19105 <span class="compare-spinner-small"> 19106 <!-- Small spinner for button --> 19107 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 19108 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 19109 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 19110 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
19110inite"/> 19111 </path> 19112 </svg> 19113 </span> 19114 </button> 19115 19116 <!-- Wishlist button next to compare button --> 19117 <button type="button" class="card-wishlist-button" data-wishlist-product="9746991874346"> 19118 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 19119 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 19120 </svg> 19121 </button> 19122 </div></div> 19123 </div> 19124 19125 19126 19127 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746991874346" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 19128 type="hidden" 19129 name="id" 19130 value="52388168728874" 19131 class="product-variant-id" 19132 19133 disabled 19134 19135 > 19136 <button 19137 id="quick-add-template--28113427169578__product-grid9746991874346-submit" 19138 type="submit" 19139 name="add" 19140 class="quick-add__submit button button--full-width button--secondary" 19141 aria-haspopup="dialog" 19142 aria-labelledby="quick-add-template--28113427169578__product-grid9746991874346-submit title-template--28113427169578__product-grid-9746991874346" 19143 aria-live="polite" 19144 data-sold-out-message="true" 19145 19146 disabled 19147 19148 > 19149 <span>En camino 19150</span> 19151 <span class="sold-out-message hidden"> 19152 En camino 19153 </span> 19154 19155<div class="loading__spinner hidden"> 19156 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 19157 19158</div> 19159</button><input type="hidden" name="product-id" value="9746991874346" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 19160 19161 <div class="card__badge bottom left"><span 19162 id="Badge-template--28113427169578__product-grid-9746991874346" 19163 class="badge badge--bottom-left color-scheme-3" 19164 >En camino</span></div> 19165 </div> 19166 </div> 19167 </div>
19167<script> 19168 // Initialize global compare translations only once 19169 if (typeof window.compareButtonTranslations === 'undefined') { 19170 window.compareButtonTranslations = { 19171 compare: { 19172 en: 'compare', 19173 cs: 'porovnat', 19174 sk: 'porovnaÅ¥', 19175 de: 'vergleichen', 19176 at: 'vergleichen', 19177 ch: 'vergleichen', 19178 fr: 'comparer', 19179 be: 'comparer', 19180 lu: 'comparer', 19181 it: 'confronta', 19182 es: 'comparar', 19183 nl: 'vergelijken', 19184 pl: 'porównaj', 19185 hu: 'összehasonlÃt', 19186 ro: 'comparÄ', 19187 bg: 'ÑÑавни', 19188 hr: 'usporedi', 19189 fi: 'vertaile', 19190 gr: 'ÏÏγκÏιÏη', 19191 el: 'ÏÏγκÏιÏη', 19192 no: 'sammenlign', 19193 'pt-PT': 'comparar', 19194 sl: 'primerjaj', 19195 sv: 'jämför', 19196 lv: 'salÄ«dzinÄt', 19197 lt: 'palyginti', 19198 ee: 'võrdle', 19199 dk: 'sammenlign', 19200 gb: 'compare', 19201 uk: 'compare', 19202 ie: 'compare', 19203 us: 'compare', 19204 ca: 'compare', 19205 au: 'compare', 19206 nz: 'compare', 19207 ru: 'ÑÑавниÑÑ' 19208 }, 19209 remove: { 19210 en: 'remove', 19211 cs: 'odebrat', 19212 sk: 'odobraÅ¥', 19213 de: 'entfernen', 19214 at: 'entfernen', 19215 ch: 'entfernen', 19216 fr: 'supprimer', 19217 be: 'supprimer', 19218 lu: 'supprimer', 19219 it: 'rimuovi', 19220 es: 'eliminar', 19221 nl: 'verwijderen', 19222 pl: 'usuÅ', 19223 hu: 'eltávolÃt', 19224 ro: 'eliminÄ', 19225 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 19226 hr: 'ukloni', 19227 fi: 'poista', 19228 gr: 'αÏαίÏεÏη', 19229 el: 'αÏαίÏεÏη', 19230 no: 'fjern', 19231 'pt-PT': 'remover', 19232 sl: 'odstrani', 19233 sv: 'ta bort', 19234 lv: 'noÅemt', 19235 lt: 'paÅ¡alinti', 19236 ee: 'eemalda', 19237 dk: 'fjern', 19238 gb: 'remove', 19239 uk: 'remove', 19240 ie: 'remove', 19241 us: 'remove', 19242 ca: 'remove', 19243 au: 'remove', 19244 nz: 'remove', 19245 ru: 'ÑдалиÑÑ' 19246 }, 19247 added: { 19248 en: 'Added!', 19249 cs: 'PÅidáno!', 19250 sk: 'Pridané!', 19251 de: 'Hinzugefügt!', 19252 at: 'Hinzugefügt!', 19253 ch: 'Hinzugefügt!', 19254 fr: 'Ajouté!', 19255 be: 'Ajouté!', 19256 lu: 'Ajouté!', 19257 it: 'Aggiunto!', 19258 es: '¡Añadido!', 19259 nl: 'Toegevoegd!', 19260 pl: 'Dodano!', 19261 hu: 'Hozzáadva!', 19262 ro: 'AdÄugat!', 19263 bg: 'Ðобавено!', 19264 hr: 'Dodano!', 19265 fi: 'Lisätty!', 19266 gr: 'Î ÏοÏÏÎθηκε!', 19267 el: 'Î ÏοÏÏÎθηκε!', 19268 no: 'Lagt til!', 19269 'pt-PT': 'Adicionado!', 19270 sl: 'Dodano!', 19271 sv: 'Tillagd!', 19272 lv: 'Pievienots!', 19273 lt: 'PridÄta!', 19274 ee: 'Lisatud!', 19275 dk: 'Tilføjet!', 19276 gb: 'Added!', 19277 uk: 'Added!', 19278 ie: 'Added!', 19279 us: 'Added!', 19280 ca: 'Added!', 19281 au: 'Added!', 19282 nz: 'Added!', 19283 ru: 'Ðобавлено!' 19284 }, 19285 removed: { 19286 en: 'Removed!', 19287 cs: 'Odebráno!', 19288 sk: 'Odobrané!', 19289 de: 'Entfernt!', 19290 at: 'Entfernt!', 19291 ch: 'Entfernt!', 19292 fr: 'Supprimé!', 19293 be: 'Supprimé!', 19294 lu: 'Supprimé!', 19295 it: 'Rimosso!', 19296 es: '¡Eliminado!', 19297 nl: 'Verwijderd!', 19298 pl: 'UsuniÄto!', 19299 hu: 'EltávolÃtva!', 19300 ro: 'Eliminat!', 19301 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 19302 hr: 'Uklonjeno!', 19303 fi: 'Poistettu!', 19304 gr: 'ÎÏαιÏÎθηκε!', 19305 el: 'ÎÏαιÏÎθηκε!', 19306 no: 'Fjernet!', 19307 'pt-PT': 'Removido!', 19308 sl: 'Odstranjeno!', 19309 sv: 'Borttaget!', 19310 lv: 'NoÅemts!', 19311 lt: 'PaÅ¡alinta!', 19312 ee: 'Eemaldatud!', 19313 dk: 'Fjernet!', 19314 gb: 'Removed!', 19315 uk: 'Removed!', 19316 ie: 'Removed!', 19317 us: 'Removed!', 19318 ca: 'Removed!', 19319 au: 'Removed!', 19320 nz: 'Removed!', 19321 ru: 'Удалено!' 19322 } 19323 }; 19324 19325 // Tooltip translations for price info 19326 window.tooltipTranslations = { 19327 tooltipPrice: { 19328 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19329 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 19330 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 19331 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 19332 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 19333 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 19334 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 19335 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 19336 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 19337 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 19338 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 19339 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 19340 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 19341 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 19342 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 19343 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 19344 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 19345 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 19346 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 19347 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 19348 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 19349 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 19350 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 19351 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 19352 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
19352iks atskaitÄ«ts, ja piemÄrojams.", 19353 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 19354 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 19355 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 19356 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19357 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19358 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19359 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19360 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19361 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19362 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 19363 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 19364 }, 19365 tooltipOutlet: { 19366 en: "We do not provide additional wholesale discounts on outlet products.", 19367 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 19368 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 19369 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 19370 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 19371 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 19372 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 19373 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 19374 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 19375 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 19376 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 19377 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 19378 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 19379 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 19380 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 19381 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 19382 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 19383 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 19384 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 19385 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 19386 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 19387 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 19388 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 19389 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 19390 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 19391 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 19392 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 19393 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 19394 gb: "We do not provide additional wholesale discounts on outlet products.", 19395 uk: "We do not provide additional wholesale discounts on outlet products.", 19396 ie: "We do not provide additional wholesale discounts on outlet products.", 19397 us: "We do not provide additional wholesale discounts on outlet products.", 19398 ca: "We do not provide additional wholesale discounts on outlet products.", 19399 au: "We do not provide additional wholesale discounts on outlet products.", 19400 nz: "We do not provide additional wholesale discounts on outlet products.", 19401 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 19402 } 19403 }; 19404 19405 // Get current locale from document 19406 window.currentLocale = document.documentElement.lang || 'en'; 19407 19408 // Function to translate compare buttons 19409 window.translateCompareButtons = function() { 19410 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
19411 compareTexts.forEach(function(textEl) { 19412 const button = textEl.closest('.compare-button-simple'); 19413 const isInComparison = button && button.hasAttribute('data-in-comparison'); 19414 19415 if (isInComparison) { 19416 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 19417 textEl.textContent = translation; 19418 } else { 19419 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 19420 textEl.textContent = translation; 19421 } 19422 }); 19423 }; 19424 19425 // Function to format price with space as thousands separator (only for tooltip) 19426 function formatTooltipPrice(price) { 19427 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 19428 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 19429 } 19430 19431 // Function to translate tooltips with price 19432 window.translateTooltips = function() { 19433 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 19434 tooltips.forEach(function(tooltip) { 19435 const icon = tooltip.closest('.price-info-icon'); 19436 if (icon) { 19437 const status = icon.getAttribute('data-status'); 19438 // Check if this is an outlet product 19439 if (status === 'outlet') { 19440 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 19441 tooltip.textContent = translation; 19442 return; // Exit early for outlet products 19443 } 19444 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 19445 // Get wholesale price from the actual price display on the card 19446 const card = icon.closest('[data-product-id]'); 19447 let wholesalePrice = ''; 19448 if (card) { 19449 // Find the main price element on the card 19450 const priceElement = card.querySelector('.price .price-item--regular'); 19451 if (priceElement) { 19452 wholesalePrice = priceElement.textContent.trim(); 19453 } 19454 } 19455 if (retailPrice && wholesalePrice) { 19456 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 19457 let formattedRetailPrice = formatTooltipPrice(retailPrice); 19458 let formattedWholesalePrice = wholesalePrice; 19459 if (window.formatPriceText) { 19460 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 19461 } 19462 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 19463 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 19464 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 19465 tooltip.textContent = translatedText; 19466 } 19467 } 19468 }); 19469 }; 19470 19471 // Function to update button state based on comparison status 19472 window.updateCompareButtonState = function(productId, isInComparison) { 19473 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 19474 buttons.forEach(function(button) { 19475 const buttonContainer = button.closest('.compare-button-container'); 19476 const compareText = button.querySelector('.compare-text'); 19477 19478 if (isInComparison) { 19479 button.setAttribute('data-in-comparison', 'true'); 19480 button.classList.add('in-comparison'); 19481 buttonContainer.classList.add('in-comparison'); 19482 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 19483 compareText.textContent = removeText; 19484 } else { 19485 button.removeAttribute('data-in-comparison'); 19486 button.classList.remove('in-comparison'); 19487 buttonContainer.classList.remove('in-comparison'); 19488 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 19489 compareText.textContent = compareTextTranslation; 19490 } 19491 }); 19492 }; 19493 } 19494 19495 // Initialize compare button states based on localStorage 19496 window.initializeCompareButtonStates = function() {
19497 if (typeof window.RendlCompare !== 'undefined') { 19498 const compareItems = window.RendlCompare.getItems(); 19499 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 19500 const productId = button.getAttribute('data-product-id'); 19501 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 19502 window.updateCompareButtonState(productId, isInComparison); 19503 }); 19504 } 19505 }; 19506 19507 // Compare button UI animation - the actual functionality is handled by compare-system.js 19508 document.addEventListener('DOMContentLoaded', function() { 19509 // Apply translations on page load 19510 if (window.translateCompareButtons) { 19511 window.translateCompareButtons(); 19512 } 19513 19514 // Initialize button states based on comparison data 19515 setTimeout(function() { 19516 if (window.initializeCompareButtonStates) { 19517 window.initializeCompareButtonStates(); 19518 } 19519 }, 100); // Small delay to ensure compare system is loaded 19520 19521 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 19522 // Skip if already has event listener 19523 if (button.hasAttribute('data-compare-initialized')) { 19524 return; 19525 } 19526 button.setAttribute('data-compare-initialized', 'true'); 19527 19528 button.addEventListener('click', function(e) { 19529 var buttonContainer = button.closest('.compare-button-container'); 19530 var compareText = button.querySelector('.compare-text'); 19531 var isInComparison = button.hasAttribute('data-in-comparison'); 19532 var productId = button.getAttribute('data-product-id'); 19533 19534 // Prevent multiple clicks during loading 19535 if (button.classList.contains('loading')) { 19536 return; 19537 } 19538 19539 // Make button always visible during the process 19540 buttonContainer.classList.add('active'); 19541 19542 // Add loading class to show spinner 19543 button.classList.add('loading'); 19544 19545 // UI feedback timing 19546 setTimeout(function() { 19547 // Remove loading class and show success message 19548 button.classList.remove('loading'); 19549 button.classList.add('success'); 19550 19551 if (isInComparison) { 19552 // Removing from comparison 19553 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 19554 19555 // Update button state after removal 19556 setTimeout(function() { 19557 button.classList.remove('success'); 19558 window.updateCompareButtonState(productId, false); 19559 buttonContainer.classList.remove('active'); 19560 }, 1500); 19561 } else { 19562 // Adding to comparison 19563 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 19564 19565 // Update button state after addition 19566 setTimeout(function() { 19567 button.classList.remove('success'); 19568 window.updateCompareButtonState(productId, true); 19569 buttonContainer.classList.remove('active'); 19570 }, 1500); 19571 } 19572 }, 1200); 19573 }); 19574 }); 19575 19576 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 19577 setTimeout(function() { 19578 if (window.translateTooltips) { 19579 window.translateTooltips(); 19580 } 19581 }, 100); 19582 }); 19583 19584 // Ensure compare button states are initialized after RendlCompare is available 19585 document.addEventListener('DOMContentLoaded', function() { 19586 function tryInitCompareButtons() { 19587 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 19588 window.initializeCompareButtonStates(); 19589 } else { 19590 setTimeout(tryInitCompareButtons, 100); 19591 } 19592 } 19593 tryInitCompareButtons(); 19594 }); 19595 19596 // Self-contained wishlist functionality for card-product 19597 (function() { 19598 // Wishlist translations 19599 var wishlistTranslations = { 19600 'en': { 19601 addToWishlist: 'Add to My Favorites', 19602 createCategory: 'Create new category:', 19603 categoryPlaceholder: 'Category name', 19604 createAndAdd: 'Create & Add Item', 19605 alreadyAdded: '(Already added)', 19606 addedToWishlist: 'added to My Favorites', 19607 removedFromWishlist: 'removed from My Favorites', 19608 allFavorites: 'All Favorites' 19609 }, 19610 'cs': { 19611 addToWishlist: 'PÅidat do oblÃbených', 19612 createCategory: 'VytvoÅit novou skupinu:', 19613 categoryPlaceholder: 'Název nové skupiny', 19614 createAndAdd: 'VytvoÅit a pÅidat skupinu', 19615 alreadyAdded: '(Již pÅidáno)', 19616 addedToWishlist: 'pÅidáno do oblÃbených', 19617 removedFromWishlist: 'odebráno z oblÃbených', 19618 allFavorites: 'VÅ¡echny oblÃbené' 19619 }, 19620 'sk': { 19621 addToWishlist: 'PridaÅ¥ do obľúbených', 19622 createCategory: 'VytvoriÅ¥ novú kategóriu:', 19623 categoryPlaceholder: 'Názov kategórie', 19624 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 19625 alreadyAdded: '(Už pridané)', 19626 addedToWishlist: 'pridané do obľúbených', 19627 removedFromWishlist: 'odstránené z obľúbených', 19628 allFavorites: 'VÅ¡etky obľúbené' 19629 }, 19630 'de': { 19631 addToWishlist: 'Zu meinen Favoriten hinzufügen', 19632 createCategory: 'Neue Kategorie erstellen:', 19633 categoryPlaceholder: 'Kategoriename', 19634 createAndAdd: 'Erstellen & hinzufügen', 19635 alreadyAdded: '(Bereits hinzugefügt)', 19636 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 19637 removedFromWishlist: 'aus meinen Favoriten entfernt', 19638 allFavorites: 'Alle Favoriten' 19639 }, 19640 'fr': { 19641 addToWishlist: 'Ajouter à mes favoris', 19642 createCategory: 'Créer une nouvelle catégorie :', 19643 categoryPlaceholder: 'Nom de la catégorie', 19644 createAndAdd: 'Créer et ajouter', 19645 alreadyAdded: '(Déjà ajouté)', 19646 addedToWishlist: 'ajouté à mes favoris', 19647 removedFromWishlist: 'retiré de mes favoris', 19648 allFavorites: 'Tous les favoris' 19649 }, 19650 'it': { 19651 addToWishlist: 'Aggiungi ai preferiti', 19652 createCategory: 'Crea nuova categoria:', 19653 categoryPlaceholder: 'Nome categoria', 19654 createAndAdd: 'Crea e aggiungi', 19655 alreadyAdded: '(Già aggiunto)', 19656 addedToWishlist: 'aggiunto ai preferiti', 19657 removedFromWishlist: 'rimosso dai preferiti', 19658 allFavorites: 'Tutti i preferiti' 19659 }, 19660 'es': { 19661 addToWishlist: 'Añadir a mis favoritos', 19662 createCategory: 'Crear nueva categorÃa:', 19663 categoryPlaceholder: 'Nombre de la categorÃa', 19664 createAndAdd: 'Crear y añadir', 19665 alreadyAdded: '(Ya añadido)', 19666 addedToWishlist: 'añadido a mis favoritos', 19667 removedFromWishlist: 'eliminado de mis favoritos', 19668 allFavorites: 'Todos los favoritos' 19669 }, 19670 'nl': { 19671 addToWishlist: 'Toevoegen aan mijn favorieten', 19672 createCategory: 'Nieuwe categorie aanmaken:', 19673 categoryPlaceholder: 'Categorienaam', 19674 createAndAdd: 'Aanmaken & toevoegen', 19675 alreadyAdded: '(Al toegevoegd)', 19676 addedToWishlist: 'toegevoegd aan mijn favorieten', 19677 removedFromWishlist: 'verwijderd uit mijn favorieten', 19678 allFavorites: 'Alle favorieten' 19679 }, 19680 'pl': { 19681 addToWishlist: 'Dodaj do ulubionych', 19682 createCategory: 'Utwórz nowÄ kategoriÄ:', 19683 categoryPlaceholder: 'Nazwa kategorii', 19684 createAndAdd: 'Utwórz i dodaj', 19685 alreadyAdded: '(Już dodane)', 19686 addedToWishlist: 'dodano do ulubionych', 19687 removedFromWishlist: 'usuniÄto z ulubionych', 19688 allFavorites: 'Wszystkie ulubione' 19689 }, 19690 'hu': { 19691 addToWishlist: 'Hozzáadás a kedvencekhez', 19692 createCategory: 'Ãj kategória létrehozása:', 19693 categoryPlaceholder: 'Kategória neve', 19694 createAndAdd: 'Létrehozás és hozzáadás', 19695 alreadyAdded: '(Már hozzáadva)', 19696 addedToWishlist: 'hozzáadva a kedvencekhez', 19697 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 19698 allFavorites: 'Minden kedvenc' 19699 }, 19700 'ro': { 19701 addToWishlist: 'AdaugÄ la favorite', 19702 createCategory: 'CreeazÄ o nouÄ categorie:', 19703 categoryPlaceholder: 'Nume categorie', 19704 createAndAdd: 'CreeazÄ Èi adaugÄ', 19705 alreadyAdded: '(Deja adÄugat)', 19706 addedToWishlist: 'adÄugat la favorite', 19707 removedFromWishlist: 'eliminat din favorite', 19708 allFavorites: 'Toate preferinÈele' 19709 }, 19710 'bg': { 19711 addToWishlist: 'Ðобави в лÑбими', 19712 createCategory: 'СÑздай нова каÑегоÑиÑ:', 19713 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 19714 createAndAdd: 'СÑздай и добави', 19715 alreadyAdded: '(ÐеÑе добавено)', 19716 addedToWishlist: 'добавено в лÑбими', 19717 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 19718 allFavorites: 'ÐÑиÑки лÑбими' 19719 }, 19720 'hr': { 19721 addToWishlist: 'Dodaj u favorite', 19722 createCategory: 'Kreiraj novu kategoriju:', 19723 categoryPlaceholder: 'Naziv kategorije', 19724 createAndAdd: 'Kreiraj i dodaj', 19725 alreadyAdded: '(VeÄ dodano)', 19726 addedToWishlist: 'dodano u favorite', 19727 removedFromWishlist: 'uklonjeno iz favorita', 19728 allFavorites: 'Sva omiljena' 19729 }, 19730 'fi': { 19731 addToWishlist: 'Lisää suosikkeihin', 19732 createCategory: 'Luo uusi kategoria:', 19733 categoryPlaceholder: 'Kategorian nimi', 19734 createAndAdd: 'Luo ja lisää', 19735 alreadyAdded: '(Jo lisätty)', 19736 addedToWishlist: 'lisätty suosikkeihin', 19737 removedFromWishlist: 'poistettu suosikeista',
19738 allFavorites: 'Kaikki suosikit' 19739 }, 19740 'gr': { 19741 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 19742 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 19743 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 19744 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 19745 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 19746 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 19747 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 19748 allFavorites: 'Îλα Ïα αγαÏημÎνα' 19749 }, 19750 'no': { 19751 addToWishlist: 'Legg til i favoritter', 19752 createCategory: 'Opprett ny kategori:', 19753 categoryPlaceholder: 'Kategorinavn', 19754 createAndAdd: 'Opprett og legg til', 19755 alreadyAdded: '(Allerede lagt til)', 19756 addedToWishlist: 'lagt til i favoritter', 19757 removedFromWishlist: 'fjernet fra favoritter', 19758 allFavorites: 'Alle favoritter' 19759 }, 19760 'pt-PT': { 19761 addToWishlist: 'Adicionar aos favoritos', 19762 createCategory: 'Criar nova categoria:', 19763 categoryPlaceholder: 'Nome da categoria', 19764 createAndAdd: 'Criar e adicionar', 19765 alreadyAdded: '(Já adicionado)', 19766 addedToWishlist: 'adicionado aos favoritos', 19767 removedFromWishlist: 'removido dos favoritos', 19768 allFavorites: 'Todos os favoritos' 19769 }, 19770 'sl': { 19771 addToWishlist: 'Dodaj med priljubljene', 19772 createCategory: 'Ustvari novo kategorijo:', 19773 categoryPlaceholder: 'Ime kategorije', 19774 createAndAdd: 'Ustvari in dodaj', 19775 alreadyAdded: '(Že dodano)', 19776 addedToWishlist: 'dodano med priljubljene', 19777 removedFromWishlist: 'odstranjeno iz priljubljenih', 19778 allFavorites: 'Vsi priljubljeni' 19779 }, 19780 'sv': { 19781 addToWishlist: 'Lägg till i favoriter', 19782 createCategory: 'Skapa ny kategori:', 19783 categoryPlaceholder: 'Kategorinamn', 19784 createAndAdd: 'Skapa och lägg till', 19785 alreadyAdded: '(Redan tillagd)', 19786 addedToWishlist: 'tillagd i favoriter', 19787 removedFromWishlist: 'borttagen frÃ¥n favoriter', 19788 allFavorites: 'Alla favoriter' 19789 }, 19790 'lv': { 19791 addToWishlist: 'Pievienot favorÄ«tiem', 19792 createCategory: 'Izveidot jaunu kategoriju:', 19793 categoryPlaceholder: 'Kategorijas nosaukums', 19794 createAndAdd: 'Izveidot un pievienot', 19795 alreadyAdded: '(Jau pievienots)', 19796 addedToWishlist: 'pievienots favorÄ«tiem', 19797 removedFromWishlist: 'noÅemts no favorÄ«tiem', 19798 allFavorites: 'Visas favorÄ«tus' 19799 }, 19800 'lt': { 19801 addToWishlist: 'PridÄti į mÄgstamiausius', 19802 createCategory: 'Sukurti naujÄ kategorijÄ :', 19803 categoryPlaceholder: 'Kategorijos pavadinimas', 19804 createAndAdd: 'Sukurti ir pridÄti', 19805 alreadyAdded: '(Jau pridÄta)', 19806 addedToWishlist: 'pridÄta į mÄgstamiausius', 19807 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 19808 allFavorites: 'Visos mÄgstamiausios' 19809 }, 19810 'ee': { 19811 addToWishlist: 'Lisa lemmikutesse', 19812 createCategory: 'Loo uus kategooria:', 19813 categoryPlaceholder: 'Kategooria nimi', 19814 createAndAdd: 'Loo ja lisa', 19815 alreadyAdded: '(Juba lisatud)', 19816 addedToWishlist: 'lisatud lemmikutesse', 19817 removedFromWishlist: 'eemaldatud lemmikutest', 19818 allFavorites: 'Kõik lemmikud' 19819 }, 19820 'dk': { 19821 addToWishlist: 'Tilføj til favoritter', 19822 createCategory: 'Opret ny kategori:', 19823 categoryPlaceholder: 'Kategorinavn', 19824 createAndAdd: 'Opret og tilføj', 19825 alreadyAdded: '(Allerede tilføjet)', 19826 addedToWishlist: 'tilføjet til favoritter', 19827 removedFromWishlist: 'fjernet fra favoritter', 19828 allFavorites: 'Alle favoritter' 19829 } 19830 }; 19831 19832 function getWishlistLang() { 19833 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 19834 // Normalize for region codes (e.g., pt-PT, sl) 19835 if (lang.startsWith('pt-PT')) return 'pt-PT'; 19836 if (lang.startsWith('sl')) return 'sl'; 19837 if (lang.startsWith('cs')) return 'cs'; 19838 if (lang.startsWith('sk')) return 'sk'; 19839 if (lang.startsWith('de')) return 'de'; 19840 if (lang.startsWith('fr')) return 'fr'; 19841 if (lang.startsWith('it')) return 'it'; 19842 if (lang.startsWith('es')) return 'es'; 19843 if (lang.startsWith('nl')) return 'nl'; 19844 if (lang.startsWith('pl')) return 'pl'; 19845 if (lang.startsWith('hu')) return 'hu'; 19846 if (lang.startsWith('ro')) return 'ro'; 19847 if (lang.startsWith('bg')) return 'bg'; 19848 if (lang.startsWith('hr')) return 'hr'; 19849 if (lang.startsWith('fi')) return 'fi'; 19850 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 19851 if (lang.startsWith('no')) return 'no'; 19852 if (lang.startsWith('sv')) return 'sv'; 19853 if (lang.startsWith('lv')) return 'lv'; 19854 if (lang.startsWith('lt')) return 'lt'; 19855 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 19856 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 19857 return 'en'; 19858 } 19859 19860 // Get or initialize the wishlist array in localStorage 19861 function getWishlist() { 19862 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 19863 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 19864 categories: [ 19865 { 19866 id: 'all-favorites', 19867 name: 'All Favorites', 19868 items: [] 19869 } 19870 ], 19871 version: 2 19872 }; 19873 19874 // Handle migration from old format (array of items) to new format (categories) 19875 if (Array.isArray(wishlist)) { 19876 return { 19877 categories: [ 19878 { 19879 id: 'all-favorites', 19880 name: 'All Favorites', 19881 items: wishlist 19882 } 19883 ], 19884 version: 2 19885 }; 19886 } 19887 19888 return wishlist; 19889 } 19890 19891 // Save wishlist to localStorage 19892 function saveWishlist(wishlist) { 19893 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 19894 // Dispatch an event so other parts of the site can react to wishlist changes 19895 document.dispatchEvent(new CustomEvent('wishlist:updated', { 19896 detail: { wishlist: wishlist } 19897 })); 19898 19899 // Count total items across all categories 19900 const totalItems = wishlist.categories.reduce((total, category) => { 19901 return total + category.items.length; 19902 }, 0); 19903 19904 // Update all wishlist counters 19905 updateWishlistCounters(totalItems); 19906 } 19907 19908 // Update all wishlist counters on the page 19909 function updateWishlistCounters(count) { 19910 const counters = document.querySelectorAll('.wishlist-count');
19911 counters.forEach(counter => { 19912 counter.textContent = count; 19913 19914 // If the counter is hidden and count > 0, show it 19915 if (count > 0 && counter.hasAttribute('hidden')) { 19916 counter.removeAttribute('hidden'); 19917 } 19918 // If the counter is visible and count = 0, hide it 19919 else if (count === 0 && !counter.hasAttribute('hidden')) { 19920 counter.setAttribute('hidden', 'true'); 19921 } 19922 }); 19923 } 19924 19925 // Check if a product is in the wishlist (in any category) 19926 function isInWishlist(productId) { 19927 const wishlist = getWishlist(); 19928 return wishlist.categories.some(category => 19929 category.items.some(item => item.id === productId) 19930 ); 19931 } 19932 19933 // Get all categories 19934 function getCategories() { 19935 return getWishlist().categories; 19936 } 19937 19938 // Create a new category 19939 function createCategory(name) { 19940 const wishlist = getWishlist(); 19941 const categoryId = 'category-' + Date.now(); 19942 19943 wishlist.categories.push({ 19944 id: categoryId, 19945 name: name, 19946 items: [] 19947 }); 19948 19949 saveWishlist(wishlist); 19950 return categoryId; 19951 } 19952 19953 // Add a product to a specific category 19954 function addToCategory(product, categoryId) { 19955 const wishlist = getWishlist(); 19956 const category = wishlist.categories.find(cat => cat.id === categoryId); 19957 19958 if (!category) return false; 19959 19960 // Check if product already exists in ANY category (not just this one) 19961 if (isInWishlist(product.id)) { 19962 return false; // Product already in wishlist 19963 } 19964 19965 // Add product to category 19966 category.items.push(product); 19967 saveWishlist(wishlist); 19968 19969 // Dispatch event for global sync 19970 document.dispatchEvent(new CustomEvent('wishlist:updated', { 19971 detail: { productId: product.id, added: true } 19972 })); 19973 19974 return true; 19975 } 19976 19977 // Add a product to the default "All Favorites" category 19978 function addToWishlist(product) { 19979 return addToCategory(product, 'all-favorites'); 19980 } 19981 19982 // Remove a product from all categories 19983 function removeFromWishlist(productId) { 19984 const wishlist = getWishlist(); 19985 let removed = false; 19986 19987 wishlist.categories.forEach(category => { 19988 const initialLength = category.items.length; 19989 category.items = category.items.filter(item => item.id !== productId); 19990 if (category.items.length !== initialLength) { 19991 removed = true; 19992 } 19993 }); 19994 19995 if (removed) { 19996 saveWishlist(wishlist); 19997 } 19998 19999 return removed; 20000 } 20001 20002 // Toggle a product in the wishlist 20003 function toggleWishlistItem(product) { 20004 if (isInWishlist(product.id)) { 20005 // If already in wishlist, remove it 20006 const wasRemoved = removeFromWishlist(product.id); 20007 20008 // Update heart icon if the product was successfully removed 20009 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 20010 if (heartIcon && wasRemoved) { 20011 heartIcon.setAttribute('fill', 'none'); 20012 showWishlistToast(false, product.title); 20013 20014 // Dispatch event for global sync 20015 document.dispatchEvent(new CustomEvent('wishlist:updated', { 20016 detail: { productId: product.id, added: false } 20017 })); 20018 } 20019 return wasRemoved; 20020 } else { 20021 // If not in wishlist, show category selection popup 20022 showCategorySelectionPopup(product); 20023 return false; // Don't return true unless we actually add the product 20024 } 20025 } 20026 20027 // Show wishlist category selection popup 20028 function showCategorySelectionPopup(product) { 20029 // Remove any existing popup 20030 const existingPopup = document.getElementById('wishlist-category-popup'); 20031 if (existingPopup) { 20032 existingPopup.remove(); 20033 } 20034 20035 const lang = getWishlistLang(); 20036 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 20037 20038 // Create popup container 20039 const popup = document.createElement('div'); 20040 popup.id = 'wishlist-category-popup'; 20041 popup.className = 'wishlist-category-popup'; 20042 20043 // Create popup content 20044 const content = document.createElement('div'); 20045 content.className = 'wishlist-category-popup-content'; 20046 20047 // Create header 20048 const title = document.createElement('h2'); 20049 title.textContent = translations.addToWishlist; // Translate 20050 20051 const closeButton = document.createElement('button'); 20052 closeButton.className = 'wishlist-category-popup-close'; 20053 closeButton.setAttribute('aria-label', 'Close'); 20054 closeButton.addEventListener('click', () => { 20055 popup.remove(); 20056 }); 20057 20058 // Create category list 20059 const categoryList = document.createElement('div'); 20060 categoryList.className = 'wishlist-category-list'; 20061 20062 // Get categories 20063 const categories = getCategories(); 20064 20065 // Add category options
20066 categories.forEach(category => { 20067 const categoryOption = document.createElement('div'); 20068 categoryOption.className = 'wishlist-category-option'; 20069 20070 // Use translation for default category name 20071 categoryOption.textContent = category.id === 'all-favorites' 20072 ? (translations.allFavorites || category.name) 20073 : category.name; 20074 20075 // Highlight if product already in this category 20076 if (category.items.some(item => item.id === product.id)) { 20077 categoryOption.style.backgroundColor = '#f0f0f0'; 20078 categoryOption.style.color = '#999'; 20079 categoryOption.style.fontStyle = 'italic'; 20080 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 20081 categoryOption.style.cursor = 'default'; 20082 } else { 20083 categoryOption.addEventListener('click', () => { 20084 const wasAdded = addToCategory(product, category.id); 20085 20086 if (wasAdded) { 20087 // Update heart icon after successful addition 20088 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 20089 if (heartIcon) { 20090 heartIcon.setAttribute('fill', '#333333'); 20091 } 20092 20093 showWishlistToast(true, product.title); 20094 popup.remove(); 20095 } 20096 }); 20097 } 20098 20099 categoryList.appendChild(categoryOption); 20100 }); 20101 20102 // Create "add new category" section 20103 const newCategorySection = document.createElement('div'); 20104 newCategorySection.style.borderTop = '1px solid #eee'; 20105 newCategorySection.style.paddingTop = '15px'; 20106 newCategorySection.style.marginTop = '10px'; 20107 20108 const newCategoryLabel = document.createElement('label'); 20109 newCategoryLabel.textContent = translations.createCategory; // Translate 20110 20111 const newCategoryInput = document.createElement('input'); 20112 newCategoryInput.type = 'text'; 20113 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 20114 20115 const createButton = document.createElement('button'); 20116 createButton.className = 'create-category-button'; 20117 createButton.textContent = translations.createAndAdd; // Translate 20118 20119 createButton.addEventListener('click', () => { 20120 const categoryName = newCategoryInput.value.trim(); 20121 if (categoryName) { 20122 const categoryId = createCategory(categoryName); 20123 const wasAdded = addToCategory(product, categoryId); 20124 20125 if (wasAdded) { 20126 // Update heart icon after successful addition 20127 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 20128 if (heartIcon) { 20129 heartIcon.setAttribute('fill', '#333333'); 20130 } 20131 20132 showWishlistToast(true, product.title); 20133 popup.remove(); 20134 } 20135 } 20136 }); 20137 20138 newCategorySection.appendChild(newCategoryLabel); 20139 newCategorySection.appendChild(newCategoryInput); 20140 newCategorySection.appendChild(createButton); 20141 20142 // Assemble popup 20143 content.appendChild(title); 20144 content.appendChild(closeButton); 20145 content.appendChild(categoryList); 20146 content.appendChild(newCategorySection); 20147 popup.appendChild(content); 20148 20149 // Add to document 20150 document.body.appendChild(popup); 20151 20152 // Focus the input 20153 setTimeout(() => { 20154 newCategoryInput.focus(); 20155 }, 100); 20156 20157 // Close when clicking outside content 20158 popup.addEventListener('click', (e) => { 20159 if (e.target === popup) { 20160 popup.remove(); 20161 } 20162 }); 20163 } 20164 20165 // Show a toast notification 20166 function showWishlistToast(added, productTitle) { 20167 // Create or get toast container 20168 let toastContainer = document.getElementById('wishlist-toast'); 20169 if (!toastContainer) { 20170 toastContainer = document.createElement('div'); 20171 toastContainer.id = 'wishlist-toast'; 20172 toastContainer.style.position = 'fixed'; 20173 toastContainer.style.bottom = '20px'; 20174 toastContainer.style.right = '20px'; 20175 toastContainer.style.zIndex = '9999'; 20176 document.body.appendChild(toastContainer); 20177 } 20178 20179 // Create toast 20180 const toast = document.createElement('div'); 20181 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 20182 toast.style.color = 'white'; 20183 toast.style.padding = '12px 20px'; 20184 toast.style.borderRadius = '0'; 20185 toast.style.marginTop = '10px'; 20186 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 20187 toast.style.transition = 'all 0.3s ease'; 20188 toast.style.opacity = '0'; 20189 toast.style.fontFamily = 'Montserrat, sans-serif'; 20190 20191 // Choose text based on action 20192 const lang = getWishlistLang(); 20193 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 20194 toast.textContent = added 20195 ? `${productTitle} ${translations.addedToWishlist}` // Translate 20196 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 20197 20198 // Add to container 20199 toastContainer.appendChild(toast); 20200 20201 // Animate in 20202 setTimeout(() => { 20203 toast.style.opacity = '1'; 20204 }, 10); 20205 20206 // Animate out and remove 20207 setTimeout(() => { 20208 toast.style.opacity = '0'; 20209 setTimeout(() => { 20210 toastContainer.removeChild(toast); 20211 }, 300); 20212 }, 3000); 20213 } 20214 20215 // Initialize wishlist buttons 20216 function initCardWishlistButtons() { 20217 const wishlistButtons = document.querySelectorAll('.card-wis
20217hlist-button'); 20218 20219 wishlistButtons.forEach(button => { 20220 // Skip if already initialized 20221 if (button.dataset.initializedWishlist === 'true') return; 20222 button.dataset.initializedWishlist = 'true'; 20223 20224 const productId = button.getAttribute('data-wishlist-product'); 20225 if (!productId) return; 20226 20227 // Get product details from the card 20228 const card = button.closest('.card-wrapper'); 20229 const productDetails = { 20230 id: productId, 20231 title: card.querySelector('.card__heading')?.textContent.trim() || '', 20232 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 20233 price: card.querySelector('.price')?.textContent.trim() || '', 20234 image: card.querySelector('img')?.src || '', 20235 url: card.querySelector('a[href*="/products/"]')?.href || '' 20236 }; 20237 20238 // Set initial state using global function 20239 const heartIcon = button.querySelector('path'); 20240 if (heartIcon) { 20241 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 20242 heartIcon.setAttribute('fill', '#333333'); 20243 } else { 20244 heartIcon.setAttribute('fill', 'none'); 20245 } 20246 } 20247 20248 // Add click handler 20249 button.addEventListener('click', function(e) { 20250 e.preventDefault(); 20251 e.stopPropagation(); 20252 e.stopImmediatePropagation(); 20253 toggleWishlistItem(productDetails); 20254 }); 20255 20256 // Prevent navigation on mousedown/touchstart 20257 button.addEventListener('mousedown', function(e) { 20258 e.preventDefault(); 20259 e.stopPropagation(); 20260 }); 20261 20262 button.addEventListener('touchstart', function(e) { 20263 e.preventDefault(); 20264 e.stopPropagation(); 20265 }); 20266 }); 20267 } 20268 20269 // Initialize the wishlist counter on page load 20270 const wishlist = getWishlist(); 20271 const totalItems = wishlist.categories.reduce((total, category) => { 20272 return total + category.items.length; 20273 }, 0); 20274 updateWishlistCounters(totalItems); 20275 20276 // Initialize on DOM ready 20277 if (document.readyState === 'loading') { 20278 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 20279 } else { 20280 initCardWishlistButtons(); 20281 } 20282 20283 // Reinitialize on Shopify section load 20284 document.addEventListener('shopify:section:load', function() { 20285 setTimeout(initCardWishlistButtons, 100); 20286 }); 20287 20288 // Listen for wishlist updates from other parts of the site 20289 document.addEventListener('wishlist:updated', function() { 20290 setTimeout(initCardWishlistButtons, 100); 20291 }); 20292 })(); 20293</script>
20293 20294 20295<!-- Price info icon styles --> 20296<style> 20297 /* Price container with icon */ 20298 .price-container-with-info { 20299 position: relative; 20300 display: flex; 20301 align-items: center; 20302 gap: 8px; 20303 } 20304 20305 /* Info icon - hidden by default, shown on card hover */ 20306 .price-info-icon { 20307 position: relative; 20308 display: inline-flex; 20309 align-items: center; 20310 justify-content: center; 20311 color: #666; 20312 cursor: help; 20313 opacity: 0; 20314 transition: opacity 0.3s ease; 20315 20316 padding: 4px; /* Add padding to increase clickable area */ 20317 min-width: 20px; /* Ensure minimum clickable area */ 20318 min-height: 20px; 20319 z-index: 15; /* Above everything else including compare button */ 20320 pointer-events: auto; /* Allow interaction */ 20321 } 20322 20323 /* Show icon on card hover */ 20324 .card-wrapper:hover .price-info-icon { 20325 opacity: 1; 20326 } 20327 20328 .price-info-icon svg { 20329 width: 14px; 20330 height: 14px; 20331 stroke-width: 1.5; 20332 } 20333 20334 /* Tooltip styles */ 20335 .price-info-tooltip { 20336 position: absolute; 20337 bottom: calc(100% + 6px); 20338 top: auto; 20339 left: 0; 20340 transform: none; 20341 min-width: 310px; 20342 background: #FFFFFF; 20343 color: #232323; 20344 border: 1px solid #EEEEEE; 20345 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 20346 padding: 12px 16px; 20347 font-size: 13px; 20348 font-family: 'Montserrat', sans-serif; 20349 z-index: 10000; 20350 opacity: 0; 20351 transition: opacity 0.18s; 20352 white-space: pre-line; 20353 text-align: left; 20354 border-radius: 0; 20355 visibility: hidden; 20356 pointer-events: none; 20357 } 20358 20359 /* Show tooltip on icon hover */ 20360 .price-info-icon:hover .price-info-tooltip { 20361 visibility: visible; 20362 opacity: 1; 20363 } 20364 20365 /* Ensure tooltip is never clipped */ 20366 .price-container-with-info, 20367 .card-information, 20368 .card__content { 20369 overflow: visible !important; 20370 } 20371 20372 /* Mobile adjustments */ 20373 @media screen and (max-width: 768px) { 20374 .price-info-tooltip { 20375 min-width: 200px; 20376 font-size: 12px; 20377 padding: 10px 12px; 20378 } 20379 } 20380</style> 20381 20382 </li> 20383 <li 20384 class="grid__item" 20385 20386 > 20387 20388<div class="card-wrapper product-card-wrapper underline-links-hover"> 20389 20390 <div 20391 class=" 20392 card card--standard 20393 card--media 20394 20395 20396 20397 20398 20399 " 20400 style="--ratio-percent: 100.0%;" 20401 data-product-id="9746991120682" 20402 data-description="Bolardo de exterior para bombillas LED G9 con dos tomas de corriente (Tipo E). Las tomas están ocultas en el cuerpo de la lámpara detrás de una cub..." 20403 data-status-in-sortiment="NEW" 20404 data-ip-rate="IP54" 20405 20406 data-variant-id="52388164895018" 20407 data-price="198.00 EUR" 20408 data-compare-at-price="" 20409 data-available="true" 20410 data-barcode="8595685429175" 20411 data-ip-rate="IP54" 20412 data-lumens="" 20413 data-power-source="" 20414 data-watt="5.0" 20415 data-kelvin="" 20416 data-light-color="" 20417 data-diameter="10.0" 20418 data-weight-netto="1630.0" 20419 data-weight-unit="g" 20420 data-mounting-hole-size="" 20421 data-recess-depth="" 20422 data-suspension-lenght="" 20423 data-turn-angle="" 20424 data-tilt-angle="" 20425 data-switch="" 20426 data-socket="LED G9" 20427 data-light-source-recomended="G13036" 20428 data-height="48" 20429 data-length="" 20430 data-Length="" 20431 > 20432 <div 20433 class="card__inner color-scheme-2 gradient ratio" 20434 style="--ratio-percent: 100.0%;" 20435 > 20436 20437<div class="product-status-badge status-NEW"> 20438 <span>NEW</span> 20439 </div> 20440<div class="ip-rate-badge"> 20441 <span>IP54</span> 20442 </div><div class="card__media"> 20443 <a class="card__media-link-content" href="/products/jean-50-bollard-with-power-sockets-lamp" aria-label="JEAN"> 20444 <div class="media media--transparent media--hover-effect"> 20445 20446 <img 20447 class="product-image motion-reduce" 20448 srcset="//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=165 165w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=360 360w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=533 533w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=720 720w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=940 940w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=1066 1066w,//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075 4899w 20449 " 20450 src="//rendl.es/cdn/shop/files/r14173-1.jpg?v=1745328075&width=533" 20451 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 20452 alt="RENDL outdoor lamp JEAN 50 bollard with power sockets anthracite grey 230V LED G9 5W IP54 R14173 1" 20453 20454 loading="lazy" 20455 20456 width="4899" 20457 height="4899" 20458 > 20459 20460<img 20461 class="product-image motion-reduce" 20462 srcset="//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=165 165w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=360 360w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=533 533w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=720 720w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=940 940w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=1066 1066w,//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898 3162w 20463 " 20464 src="//rendl.es/cdn/shop/files/r14173-2.jpg?v=1767921898&width=533" 20465 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 20466 alt="" 20467 loading="lazy" 20468 width="3162" 20469 height="3162" 20470 ></div> 20471 </a> 20472 20473<div class="card-variant-swatches"><a 20474 class="card-variant-swatch" 20475 href="/products/jean-50-bollard-with-power-sockets-lamp?variant=52388164895018" 20476 20477 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 20478 20479 aria-label="gris antracita" 20480 >
20481 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 20482 <div class="card__information"> 20483 <h3 20484 class="card__heading" 20485 20486 > 20487 <a 20488 href="/products/jean-50-bollard-with-power-sockets-lamp" 20489 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991120682" 20490 class="full-unstyled-link" 20491 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991120682 NoMediaStandardBadge-template--28113427169578__product-grid-9746991120682" 20492 > 20493 JEAN 20494 </a> 20495 </h3> 20496 </div> 20497 <div class="card__badge bottom left"></div> 20498 </div> 20499 </div> 20500 <div class="card__content"> 20501 <div class="card__information"> 20502 <h3 20503 class="card__heading h5" 20504 20505 id="title-template--28113427169578__product-grid-9746991120682" 20506 20507 > 20508 <a 20509 href="/products/jean-50-bollard-with-power-sockets-lamp" 20510 id="CardLink-template--28113427169578__product-grid-9746991120682" 20511 class="full-unstyled-link" 20512 aria-labelledby="CardLink-template--28113427169578__product-grid-9746991120682 Badge-template--28113427169578__product-grid-9746991120682" 20513 > 20514 JEAN 20515 </a> 20516 </h3><div class="card__description"> 20517 Bolardo de exterior para bombillas LED G9 con dos tomas de corriente (Tipo E). Las tomas están ocultas en el cuerpo de la lámpara detrás de una cubierta abatible. La carga máxima para las tomas es de 2x2000W. La toma de Tipo E está estandarizada para los siguientes paÃses: Bélgica, República Checa, Francia, Córcega, Polonia, Eslovaquia. 20518 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 20519 20520<div 20521 class=" 20522 price " 20523 > 20524 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 20525 <span class="price-item price-item--regular"> 20526 198.00 EUR 20527 </span></div> 20528 <div class="price__sale"> 20529 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 20530 <span> 20531 <s class="price-item price-item--regular"> 20532 20533 20534 20535 </s> 20536 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 20537 <span class="price-item price-item--sale price-item--last"> 20538 198.00 EUR 20539 </span> 20540 </div> 20541 <small class="unit-price caption hidden"> 20542 <span class="visually-hidden">Precio unitario</span> 20543 <span class="price-item price-item--last"> 20544 <span></span> 20545 <span aria-hidden="true">/</span> 20546 <span class="visually-hidden"> por </span> 20547 <span> 20548 </span> 20549 </span> 20550 </small> 20551 </div></div> 20552 20553 20554</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 20555 <button class="compare-button-simple" 20556 data-product-id="9746991120682" 20557 data-product-title="JEAN" 20558 data-product-handle="jean-50-bollard-with-power-sockets-lamp"> 20559 <span class="compare-button-content"> 20560 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 20561 <span class="compare-text" data-translate="compare">compare</span> 20562 </span> 20563 <span class="compare-spinner-small"> 20564 <!-- Small spinner for button --> 20565 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 20566 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 20567 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 20568 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
20568inite"/> 20569 </path> 20570 </svg> 20571 </span> 20572 </button> 20573 20574 <!-- Wishlist button next to compare button --> 20575 <button type="button" class="card-wishlist-button" data-wishlist-product="9746991120682"> 20576 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 20577 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 20578 </svg> 20579 </button> 20580 </div></div> 20581 </div> 20582 20583 20584 20585 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746991120682" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 20586 type="hidden" 20587 name="id" 20588 value="52388164895018" 20589 class="product-variant-id" 20590 20591 > 20592 <button 20593 id="quick-add-template--28113427169578__product-grid9746991120682-submit" 20594 type="submit" 20595 name="add" 20596 class="quick-add__submit button button--full-width button--secondary" 20597 aria-haspopup="dialog" 20598 aria-labelledby="quick-add-template--28113427169578__product-grid9746991120682-submit title-template--28113427169578__product-grid-9746991120682" 20599 aria-live="polite" 20600 data-sold-out-message="true" 20601 20602 > 20603 <span>Agregar al carrito 20604</span> 20605 <span class="sold-out-message hidden"> 20606 En camino 20607 </span> 20608 20609<div class="loading__spinner hidden"> 20610 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 20611 20612</div> 20613</button><input type="hidden" name="product-id" value="9746991120682" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 20614 20615 <div class="card__badge bottom left"></div> 20616 </div> 20617 </div> 20618 </div>
20618<script> 20619 // Initialize global compare translations only once 20620 if (typeof window.compareButtonTranslations === 'undefined') { 20621 window.compareButtonTranslations = { 20622 compare: { 20623 en: 'compare', 20624 cs: 'porovnat', 20625 sk: 'porovnaÅ¥', 20626 de: 'vergleichen', 20627 at: 'vergleichen', 20628 ch: 'vergleichen', 20629 fr: 'comparer', 20630 be: 'comparer', 20631 lu: 'comparer', 20632 it: 'confronta', 20633 es: 'comparar', 20634 nl: 'vergelijken', 20635 pl: 'porównaj', 20636 hu: 'összehasonlÃt', 20637 ro: 'comparÄ', 20638 bg: 'ÑÑавни', 20639 hr: 'usporedi', 20640 fi: 'vertaile', 20641 gr: 'ÏÏγκÏιÏη', 20642 el: 'ÏÏγκÏιÏη', 20643 no: 'sammenlign', 20644 'pt-PT': 'comparar', 20645 sl: 'primerjaj', 20646 sv: 'jämför', 20647 lv: 'salÄ«dzinÄt', 20648 lt: 'palyginti', 20649 ee: 'võrdle', 20650 dk: 'sammenlign', 20651 gb: 'compare', 20652 uk: 'compare', 20653 ie: 'compare', 20654 us: 'compare', 20655 ca: 'compare', 20656 au: 'compare', 20657 nz: 'compare', 20658 ru: 'ÑÑавниÑÑ' 20659 }, 20660 remove: { 20661 en: 'remove', 20662 cs: 'odebrat', 20663 sk: 'odobraÅ¥', 20664 de: 'entfernen', 20665 at: 'entfernen', 20666 ch: 'entfernen', 20667 fr: 'supprimer', 20668 be: 'supprimer', 20669 lu: 'supprimer', 20670 it: 'rimuovi', 20671 es: 'eliminar', 20672 nl: 'verwijderen', 20673 pl: 'usuÅ', 20674 hu: 'eltávolÃt', 20675 ro: 'eliminÄ', 20676 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 20677 hr: 'ukloni', 20678 fi: 'poista', 20679 gr: 'αÏαίÏεÏη', 20680 el: 'αÏαίÏεÏη', 20681 no: 'fjern', 20682 'pt-PT': 'remover', 20683 sl: 'odstrani', 20684 sv: 'ta bort', 20685 lv: 'noÅemt', 20686 lt: 'paÅ¡alinti', 20687 ee: 'eemalda', 20688 dk: 'fjern', 20689 gb: 'remove', 20690 uk: 'remove', 20691 ie: 'remove', 20692 us: 'remove', 20693 ca: 'remove', 20694 au: 'remove', 20695 nz: 'remove', 20696 ru: 'ÑдалиÑÑ' 20697 }, 20698 added: { 20699 en: 'Added!', 20700 cs: 'PÅidáno!', 20701 sk: 'Pridané!', 20702 de: 'Hinzugefügt!', 20703 at: 'Hinzugefügt!', 20704 ch: 'Hinzugefügt!', 20705 fr: 'Ajouté!', 20706 be: 'Ajouté!', 20707 lu: 'Ajouté!', 20708 it: 'Aggiunto!', 20709 es: '¡Añadido!', 20710 nl: 'Toegevoegd!', 20711 pl: 'Dodano!', 20712 hu: 'Hozzáadva!', 20713 ro: 'AdÄugat!', 20714 bg: 'Ðобавено!', 20715 hr: 'Dodano!', 20716 fi: 'Lisätty!', 20717 gr: 'Î ÏοÏÏÎθηκε!', 20718 el: 'Î ÏοÏÏÎθηκε!', 20719 no: 'Lagt til!', 20720 'pt-PT': 'Adicionado!', 20721 sl: 'Dodano!', 20722 sv: 'Tillagd!', 20723 lv: 'Pievienots!', 20724 lt: 'PridÄta!', 20725 ee: 'Lisatud!', 20726 dk: 'Tilføjet!', 20727 gb: 'Added!', 20728 uk: 'Added!', 20729 ie: 'Added!', 20730 us: 'Added!', 20731 ca: 'Added!', 20732 au: 'Added!', 20733 nz: 'Added!', 20734 ru: 'Ðобавлено!' 20735 }, 20736 removed: { 20737 en: 'Removed!', 20738 cs: 'Odebráno!', 20739 sk: 'Odobrané!', 20740 de: 'Entfernt!', 20741 at: 'Entfernt!', 20742 ch: 'Entfernt!', 20743 fr: 'Supprimé!', 20744 be: 'Supprimé!', 20745 lu: 'Supprimé!', 20746 it: 'Rimosso!', 20747 es: '¡Eliminado!', 20748 nl: 'Verwijderd!', 20749 pl: 'UsuniÄto!', 20750 hu: 'EltávolÃtva!', 20751 ro: 'Eliminat!', 20752 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 20753 hr: 'Uklonjeno!', 20754 fi: 'Poistettu!', 20755 gr: 'ÎÏαιÏÎθηκε!', 20756 el: 'ÎÏαιÏÎθηκε!', 20757 no: 'Fjernet!', 20758 'pt-PT': 'Removido!', 20759 sl: 'Odstranjeno!', 20760 sv: 'Borttaget!', 20761 lv: 'NoÅemts!', 20762 lt: 'PaÅ¡alinta!', 20763 ee: 'Eemaldatud!', 20764 dk: 'Fjernet!', 20765 gb: 'Removed!', 20766 uk: 'Removed!', 20767 ie: 'Removed!', 20768 us: 'Removed!', 20769 ca: 'Removed!', 20770 au: 'Removed!', 20771 nz: 'Removed!', 20772 ru: 'Удалено!' 20773 } 20774 }; 20775 20776 // Tooltip translations for price info 20777 window.tooltipTranslations = { 20778 tooltipPrice: { 20779 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20780 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 20781 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 20782 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 20783 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 20784 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 20785 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 20786 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 20787 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 20788 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 20789 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 20790 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 20791 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 20792 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 20793 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 20794 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 20795 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 20796 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 20797 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 20798 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 20799 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 20800 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 20801 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 20802 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 20803 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
20803iks atskaitÄ«ts, ja piemÄrojams.", 20804 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 20805 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 20806 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 20807 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20808 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20809 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20810 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20811 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20812 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20813 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 20814 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 20815 }, 20816 tooltipOutlet: { 20817 en: "We do not provide additional wholesale discounts on outlet products.", 20818 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 20819 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 20820 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 20821 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 20822 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 20823 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 20824 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 20825 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 20826 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 20827 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 20828 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 20829 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 20830 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 20831 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 20832 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 20833 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 20834 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 20835 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 20836 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 20837 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 20838 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 20839 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 20840 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 20841 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 20842 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 20843 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 20844 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 20845 gb: "We do not provide additional wholesale discounts on outlet products.", 20846 uk: "We do not provide additional wholesale discounts on outlet products.", 20847 ie: "We do not provide additional wholesale discounts on outlet products.", 20848 us: "We do not provide additional wholesale discounts on outlet products.", 20849 ca: "We do not provide additional wholesale discounts on outlet products.", 20850 au: "We do not provide additional wholesale discounts on outlet products.", 20851 nz: "We do not provide additional wholesale discounts on outlet products.", 20852 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 20853 } 20854 }; 20855 20856 // Get current locale from document 20857 window.currentLocale = document.documentElement.lang || 'en'; 20858 20859 // Function to translate compare buttons 20860 window.translateCompareButtons = function() { 20861 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
20862 compareTexts.forEach(function(textEl) { 20863 const button = textEl.closest('.compare-button-simple'); 20864 const isInComparison = button && button.hasAttribute('data-in-comparison'); 20865 20866 if (isInComparison) { 20867 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 20868 textEl.textContent = translation; 20869 } else { 20870 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 20871 textEl.textContent = translation; 20872 } 20873 }); 20874 }; 20875 20876 // Function to format price with space as thousands separator (only for tooltip) 20877 function formatTooltipPrice(price) { 20878 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 20879 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 20880 } 20881 20882 // Function to translate tooltips with price 20883 window.translateTooltips = function() { 20884 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 20885 tooltips.forEach(function(tooltip) { 20886 const icon = tooltip.closest('.price-info-icon'); 20887 if (icon) { 20888 const status = icon.getAttribute('data-status'); 20889 // Check if this is an outlet product 20890 if (status === 'outlet') { 20891 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 20892 tooltip.textContent = translation; 20893 return; // Exit early for outlet products 20894 } 20895 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 20896 // Get wholesale price from the actual price display on the card 20897 const card = icon.closest('[data-product-id]'); 20898 let wholesalePrice = ''; 20899 if (card) { 20900 // Find the main price element on the card 20901 const priceElement = card.querySelector('.price .price-item--regular'); 20902 if (priceElement) { 20903 wholesalePrice = priceElement.textContent.trim(); 20904 } 20905 } 20906 if (retailPrice && wholesalePrice) { 20907 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 20908 let formattedRetailPrice = formatTooltipPrice(retailPrice); 20909 let formattedWholesalePrice = wholesalePrice; 20910 if (window.formatPriceText) { 20911 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 20912 } 20913 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 20914 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 20915 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 20916 tooltip.textContent = translatedText; 20917 } 20918 } 20919 }); 20920 }; 20921 20922 // Function to update button state based on comparison status 20923 window.updateCompareButtonState = function(productId, isInComparison) { 20924 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 20925 buttons.forEach(function(button) { 20926 const buttonContainer = button.closest('.compare-button-container'); 20927 const compareText = button.querySelector('.compare-text'); 20928 20929 if (isInComparison) { 20930 button.setAttribute('data-in-comparison', 'true'); 20931 button.classList.add('in-comparison'); 20932 buttonContainer.classList.add('in-comparison'); 20933 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 20934 compareText.textContent = removeText; 20935 } else { 20936 button.removeAttribute('data-in-comparison'); 20937 button.classList.remove('in-comparison'); 20938 buttonContainer.classList.remove('in-comparison'); 20939 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 20940 compareText.textContent = compareTextTranslation; 20941 } 20942 }); 20943 }; 20944 } 20945 20946 // Initialize compare button states based on localStorage 20947 window.initializeCompareButtonStates = function() {
20948 if (typeof window.RendlCompare !== 'undefined') { 20949 const compareItems = window.RendlCompare.getItems(); 20950 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 20951 const productId = button.getAttribute('data-product-id'); 20952 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 20953 window.updateCompareButtonState(productId, isInComparison); 20954 }); 20955 } 20956 }; 20957 20958 // Compare button UI animation - the actual functionality is handled by compare-system.js 20959 document.addEventListener('DOMContentLoaded', function() { 20960 // Apply translations on page load 20961 if (window.translateCompareButtons) { 20962 window.translateCompareButtons(); 20963 } 20964 20965 // Initialize button states based on comparison data 20966 setTimeout(function() { 20967 if (window.initializeCompareButtonStates) { 20968 window.initializeCompareButtonStates(); 20969 } 20970 }, 100); // Small delay to ensure compare system is loaded 20971 20972 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 20973 // Skip if already has event listener 20974 if (button.hasAttribute('data-compare-initialized')) { 20975 return; 20976 } 20977 button.setAttribute('data-compare-initialized', 'true'); 20978 20979 button.addEventListener('click', function(e) { 20980 var buttonContainer = button.closest('.compare-button-container'); 20981 var compareText = button.querySelector('.compare-text'); 20982 var isInComparison = button.hasAttribute('data-in-comparison'); 20983 var productId = button.getAttribute('data-product-id'); 20984 20985 // Prevent multiple clicks during loading 20986 if (button.classList.contains('loading')) { 20987 return; 20988 } 20989 20990 // Make button always visible during the process 20991 buttonContainer.classList.add('active'); 20992 20993 // Add loading class to show spinner 20994 button.classList.add('loading'); 20995 20996 // UI feedback timing 20997 setTimeout(function() { 20998 // Remove loading class and show success message 20999 button.classList.remove('loading'); 21000 button.classList.add('success'); 21001 21002 if (isInComparison) { 21003 // Removing from comparison 21004 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 21005 21006 // Update button state after removal 21007 setTimeout(function() { 21008 button.classList.remove('success'); 21009 window.updateCompareButtonState(productId, false); 21010 buttonContainer.classList.remove('active'); 21011 }, 1500); 21012 } else { 21013 // Adding to comparison 21014 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 21015 21016 // Update button state after addition 21017 setTimeout(function() { 21018 button.classList.remove('success'); 21019 window.updateCompareButtonState(productId, true); 21020 buttonContainer.classList.remove('active'); 21021 }, 1500); 21022 } 21023 }, 1200); 21024 }); 21025 }); 21026 21027 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 21028 setTimeout(function() { 21029 if (window.translateTooltips) { 21030 window.translateTooltips(); 21031 } 21032 }, 100); 21033 }); 21034 21035 // Ensure compare button states are initialized after RendlCompare is available 21036 document.addEventListener('DOMContentLoaded', function() { 21037 function tryInitCompareButtons() { 21038 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 21039 window.initializeCompareButtonStates(); 21040 } else { 21041 setTimeout(tryInitCompareButtons, 100); 21042 } 21043 } 21044 tryInitCompareButtons(); 21045 }); 21046 21047 // Self-contained wishlist functionality for card-product 21048 (function() { 21049 // Wishlist translations 21050 var wishlistTranslations = { 21051 'en': { 21052 addToWishlist: 'Add to My Favorites', 21053 createCategory: 'Create new category:', 21054 categoryPlaceholder: 'Category name', 21055 createAndAdd: 'Create & Add Item', 21056 alreadyAdded: '(Already added)', 21057 addedToWishlist: 'added to My Favorites', 21058 removedFromWishlist: 'removed from My Favorites', 21059 allFavorites: 'All Favorites' 21060 }, 21061 'cs': { 21062 addToWishlist: 'PÅidat do oblÃbených', 21063 createCategory: 'VytvoÅit novou skupinu:', 21064 categoryPlaceholder: 'Název nové skupiny', 21065 createAndAdd: 'VytvoÅit a pÅidat skupinu', 21066 alreadyAdded: '(Již pÅidáno)', 21067 addedToWishlist: 'pÅidáno do oblÃbených', 21068 removedFromWishlist: 'odebráno z oblÃbených', 21069 allFavorites: 'VÅ¡echny oblÃbené' 21070 }, 21071 'sk': { 21072 addToWishlist: 'PridaÅ¥ do obľúbených', 21073 createCategory: 'VytvoriÅ¥ novú kategóriu:', 21074 categoryPlaceholder: 'Názov kategórie', 21075 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 21076 alreadyAdded: '(Už pridané)', 21077 addedToWishlist: 'pridané do obľúbených', 21078 removedFromWishlist: 'odstránené z obľúbených', 21079 allFavorites: 'VÅ¡etky obľúbené' 21080 }, 21081 'de': { 21082 addToWishlist: 'Zu meinen Favoriten hinzufügen', 21083 createCategory: 'Neue Kategorie erstellen:', 21084 categoryPlaceholder: 'Kategoriename', 21085 createAndAdd: 'Erstellen & hinzufügen', 21086 alreadyAdded: '(Bereits hinzugefügt)', 21087 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 21088 removedFromWishlist: 'aus meinen Favoriten entfernt', 21089 allFavorites: 'Alle Favoriten' 21090 }, 21091 'fr': { 21092 addToWishlist: 'Ajouter à mes favoris', 21093 createCategory: 'Créer une nouvelle catégorie :', 21094 categoryPlaceholder: 'Nom de la catégorie', 21095 createAndAdd: 'Créer et ajouter', 21096 alreadyAdded: '(Déjà ajouté)', 21097 addedToWishlist: 'ajouté à mes favoris', 21098 removedFromWishlist: 'retiré de mes favoris', 21099 allFavorites: 'Tous les favoris' 21100 }, 21101 'it': { 21102 addToWishlist: 'Aggiungi ai preferiti', 21103 createCategory: 'Crea nuova categoria:', 21104 categoryPlaceholder: 'Nome categoria', 21105 createAndAdd: 'Crea e aggiungi', 21106 alreadyAdded: '(Già aggiunto)', 21107 addedToWishlist: 'aggiunto ai preferiti', 21108 removedFromWishlist: 'rimosso dai preferiti', 21109 allFavorites: 'Tutti i preferiti' 21110 }, 21111 'es': { 21112 addToWishlist: 'Añadir a mis favoritos', 21113 createCategory: 'Crear nueva categorÃa:', 21114 categoryPlaceholder: 'Nombre de la categorÃa', 21115 createAndAdd: 'Crear y añadir', 21116 alreadyAdded: '(Ya añadido)', 21117 addedToWishlist: 'añadido a mis favoritos', 21118 removedFromWishlist: 'eliminado de mis favoritos', 21119 allFavorites: 'Todos los favoritos' 21120 }, 21121 'nl': { 21122 addToWishlist: 'Toevoegen aan mijn favorieten', 21123 createCategory: 'Nieuwe categorie aanmaken:', 21124 categoryPlaceholder: 'Categorienaam', 21125 createAndAdd: 'Aanmaken & toevoegen', 21126 alreadyAdded: '(Al toegevoegd)', 21127 addedToWishlist: 'toegevoegd aan mijn favorieten', 21128 removedFromWishlist: 'verwijderd uit mijn favorieten', 21129 allFavorites: 'Alle favorieten' 21130 }, 21131 'pl': { 21132 addToWishlist: 'Dodaj do ulubionych', 21133 createCategory: 'Utwórz nowÄ kategoriÄ:', 21134 categoryPlaceholder: 'Nazwa kategorii', 21135 createAndAdd: 'Utwórz i dodaj', 21136 alreadyAdded: '(Już dodane)', 21137 addedToWishlist: 'dodano do ulubionych', 21138 removedFromWishlist: 'usuniÄto z ulubionych', 21139 allFavorites: 'Wszystkie ulubione' 21140 }, 21141 'hu': { 21142 addToWishlist: 'Hozzáadás a kedvencekhez', 21143 createCategory: 'Ãj kategória létrehozása:', 21144 categoryPlaceholder: 'Kategória neve', 21145 createAndAdd: 'Létrehozás és hozzáadás', 21146 alreadyAdded: '(Már hozzáadva)', 21147 addedToWishlist: 'hozzáadva a kedvencekhez', 21148 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 21149 allFavorites: 'Minden kedvenc' 21150 }, 21151 'ro': { 21152 addToWishlist: 'AdaugÄ la favorite', 21153 createCategory: 'CreeazÄ o nouÄ categorie:', 21154 categoryPlaceholder: 'Nume categorie', 21155 createAndAdd: 'CreeazÄ Èi adaugÄ', 21156 alreadyAdded: '(Deja adÄugat)', 21157 addedToWishlist: 'adÄugat la favorite', 21158 removedFromWishlist: 'eliminat din favorite', 21159 allFavorites: 'Toate preferinÈele' 21160 }, 21161 'bg': { 21162 addToWishlist: 'Ðобави в лÑбими', 21163 createCategory: 'СÑздай нова каÑегоÑиÑ:', 21164 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 21165 createAndAdd: 'СÑздай и добави', 21166 alreadyAdded: '(ÐеÑе добавено)', 21167 addedToWishlist: 'добавено в лÑбими', 21168 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 21169 allFavorites: 'ÐÑиÑки лÑбими' 21170 }, 21171 'hr': { 21172 addToWishlist: 'Dodaj u favorite', 21173 createCategory: 'Kreiraj novu kategoriju:', 21174 categoryPlaceholder: 'Naziv kategorije', 21175 createAndAdd: 'Kreiraj i dodaj', 21176 alreadyAdded: '(VeÄ dodano)', 21177 addedToWishlist: 'dodano u favorite', 21178 removedFromWishlist: 'uklonjeno iz favorita', 21179 allFavorites: 'Sva omiljena' 21180 }, 21181 'fi': { 21182 addToWishlist: 'Lisää suosikkeihin', 21183 createCategory: 'Luo uusi kategoria:', 21184 categoryPlaceholder: 'Kategorian nimi', 21185 createAndAdd: 'Luo ja lisää', 21186 alreadyAdded: '(Jo lisätty)', 21187 addedToWishlist: 'lisätty suosikkeihin', 21188 removedFromWishlist: 'poistettu suosikeista',
21189 allFavorites: 'Kaikki suosikit' 21190 }, 21191 'gr': { 21192 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 21193 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 21194 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 21195 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 21196 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 21197 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 21198 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 21199 allFavorites: 'Îλα Ïα αγαÏημÎνα' 21200 }, 21201 'no': { 21202 addToWishlist: 'Legg til i favoritter', 21203 createCategory: 'Opprett ny kategori:', 21204 categoryPlaceholder: 'Kategorinavn', 21205 createAndAdd: 'Opprett og legg til', 21206 alreadyAdded: '(Allerede lagt til)', 21207 addedToWishlist: 'lagt til i favoritter', 21208 removedFromWishlist: 'fjernet fra favoritter', 21209 allFavorites: 'Alle favoritter' 21210 }, 21211 'pt-PT': { 21212 addToWishlist: 'Adicionar aos favoritos', 21213 createCategory: 'Criar nova categoria:', 21214 categoryPlaceholder: 'Nome da categoria', 21215 createAndAdd: 'Criar e adicionar', 21216 alreadyAdded: '(Já adicionado)', 21217 addedToWishlist: 'adicionado aos favoritos', 21218 removedFromWishlist: 'removido dos favoritos', 21219 allFavorites: 'Todos os favoritos' 21220 }, 21221 'sl': { 21222 addToWishlist: 'Dodaj med priljubljene', 21223 createCategory: 'Ustvari novo kategorijo:', 21224 categoryPlaceholder: 'Ime kategorije', 21225 createAndAdd: 'Ustvari in dodaj', 21226 alreadyAdded: '(Že dodano)', 21227 addedToWishlist: 'dodano med priljubljene', 21228 removedFromWishlist: 'odstranjeno iz priljubljenih', 21229 allFavorites: 'Vsi priljubljeni' 21230 }, 21231 'sv': { 21232 addToWishlist: 'Lägg till i favoriter', 21233 createCategory: 'Skapa ny kategori:', 21234 categoryPlaceholder: 'Kategorinamn', 21235 createAndAdd: 'Skapa och lägg till', 21236 alreadyAdded: '(Redan tillagd)', 21237 addedToWishlist: 'tillagd i favoriter', 21238 removedFromWishlist: 'borttagen frÃ¥n favoriter', 21239 allFavorites: 'Alla favoriter' 21240 }, 21241 'lv': { 21242 addToWishlist: 'Pievienot favorÄ«tiem', 21243 createCategory: 'Izveidot jaunu kategoriju:', 21244 categoryPlaceholder: 'Kategorijas nosaukums', 21245 createAndAdd: 'Izveidot un pievienot', 21246 alreadyAdded: '(Jau pievienots)', 21247 addedToWishlist: 'pievienots favorÄ«tiem', 21248 removedFromWishlist: 'noÅemts no favorÄ«tiem', 21249 allFavorites: 'Visas favorÄ«tus' 21250 }, 21251 'lt': { 21252 addToWishlist: 'PridÄti į mÄgstamiausius', 21253 createCategory: 'Sukurti naujÄ kategorijÄ :', 21254 categoryPlaceholder: 'Kategorijos pavadinimas', 21255 createAndAdd: 'Sukurti ir pridÄti', 21256 alreadyAdded: '(Jau pridÄta)', 21257 addedToWishlist: 'pridÄta į mÄgstamiausius', 21258 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 21259 allFavorites: 'Visos mÄgstamiausios' 21260 }, 21261 'ee': { 21262 addToWishlist: 'Lisa lemmikutesse', 21263 createCategory: 'Loo uus kategooria:', 21264 categoryPlaceholder: 'Kategooria nimi', 21265 createAndAdd: 'Loo ja lisa', 21266 alreadyAdded: '(Juba lisatud)', 21267 addedToWishlist: 'lisatud lemmikutesse', 21268 removedFromWishlist: 'eemaldatud lemmikutest', 21269 allFavorites: 'Kõik lemmikud' 21270 }, 21271 'dk': { 21272 addToWishlist: 'Tilføj til favoritter', 21273 createCategory: 'Opret ny kategori:', 21274 categoryPlaceholder: 'Kategorinavn', 21275 createAndAdd: 'Opret og tilføj', 21276 alreadyAdded: '(Allerede tilføjet)', 21277 addedToWishlist: 'tilføjet til favoritter', 21278 removedFromWishlist: 'fjernet fra favoritter', 21279 allFavorites: 'Alle favoritter' 21280 } 21281 }; 21282 21283 function getWishlistLang() { 21284 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 21285 // Normalize for region codes (e.g., pt-PT, sl) 21286 if (lang.startsWith('pt-PT')) return 'pt-PT'; 21287 if (lang.startsWith('sl')) return 'sl'; 21288 if (lang.startsWith('cs')) return 'cs'; 21289 if (lang.startsWith('sk')) return 'sk'; 21290 if (lang.startsWith('de')) return 'de'; 21291 if (lang.startsWith('fr')) return 'fr'; 21292 if (lang.startsWith('it')) return 'it'; 21293 if (lang.startsWith('es')) return 'es'; 21294 if (lang.startsWith('nl')) return 'nl'; 21295 if (lang.startsWith('pl')) return 'pl'; 21296 if (lang.startsWith('hu')) return 'hu'; 21297 if (lang.startsWith('ro')) return 'ro'; 21298 if (lang.startsWith('bg')) return 'bg'; 21299 if (lang.startsWith('hr')) return 'hr'; 21300 if (lang.startsWith('fi')) return 'fi'; 21301 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 21302 if (lang.startsWith('no')) return 'no'; 21303 if (lang.startsWith('sv')) return 'sv'; 21304 if (lang.startsWith('lv')) return 'lv'; 21305 if (lang.startsWith('lt')) return 'lt'; 21306 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 21307 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 21308 return 'en'; 21309 } 21310 21311 // Get or initialize the wishlist array in localStorage 21312 function getWishlist() { 21313 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 21314 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 21315 categories: [ 21316 { 21317 id: 'all-favorites', 21318 name: 'All Favorites', 21319 items: [] 21320 } 21321 ], 21322 version: 2 21323 }; 21324 21325 // Handle migration from old format (array of items) to new format (categories) 21326 if (Array.isArray(wishlist)) { 21327 return { 21328 categories: [ 21329 { 21330 id: 'all-favorites', 21331 name: 'All Favorites', 21332 items: wishlist 21333 } 21334 ], 21335 version: 2 21336 }; 21337 } 21338 21339 return wishlist; 21340 } 21341 21342 // Save wishlist to localStorage 21343 function saveWishlist(wishlist) { 21344 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 21345 // Dispatch an event so other parts of the site can react to wishlist changes 21346 document.dispatchEvent(new CustomEvent('wishlist:updated', { 21347 detail: { wishlist: wishlist } 21348 })); 21349 21350 // Count total items across all categories 21351 const totalItems = wishlist.categories.reduce((total, category) => { 21352 return total + category.items.length; 21353 }, 0); 21354 21355 // Update all wishlist counters 21356 updateWishlistCounters(totalItems); 21357 } 21358 21359 // Update all wishlist counters on the page 21360 function updateWishlistCounters(count) { 21361 const counters = document.querySelectorAll('.wishlist-count');
21362 counters.forEach(counter => { 21363 counter.textContent = count; 21364 21365 // If the counter is hidden and count > 0, show it 21366 if (count > 0 && counter.hasAttribute('hidden')) { 21367 counter.removeAttribute('hidden'); 21368 } 21369 // If the counter is visible and count = 0, hide it 21370 else if (count === 0 && !counter.hasAttribute('hidden')) { 21371 counter.setAttribute('hidden', 'true'); 21372 } 21373 }); 21374 } 21375 21376 // Check if a product is in the wishlist (in any category) 21377 function isInWishlist(productId) { 21378 const wishlist = getWishlist(); 21379 return wishlist.categories.some(category => 21380 category.items.some(item => item.id === productId) 21381 ); 21382 } 21383 21384 // Get all categories 21385 function getCategories() { 21386 return getWishlist().categories; 21387 } 21388 21389 // Create a new category 21390 function createCategory(name) { 21391 const wishlist = getWishlist(); 21392 const categoryId = 'category-' + Date.now(); 21393 21394 wishlist.categories.push({ 21395 id: categoryId, 21396 name: name, 21397 items: [] 21398 }); 21399 21400 saveWishlist(wishlist); 21401 return categoryId; 21402 } 21403 21404 // Add a product to a specific category 21405 function addToCategory(product, categoryId) { 21406 const wishlist = getWishlist(); 21407 const category = wishlist.categories.find(cat => cat.id === categoryId); 21408 21409 if (!category) return false; 21410 21411 // Check if product already exists in ANY category (not just this one) 21412 if (isInWishlist(product.id)) { 21413 return false; // Product already in wishlist 21414 } 21415 21416 // Add product to category 21417 category.items.push(product); 21418 saveWishlist(wishlist); 21419 21420 // Dispatch event for global sync 21421 document.dispatchEvent(new CustomEvent('wishlist:updated', { 21422 detail: { productId: product.id, added: true } 21423 })); 21424 21425 return true; 21426 } 21427 21428 // Add a product to the default "All Favorites" category 21429 function addToWishlist(product) { 21430 return addToCategory(product, 'all-favorites'); 21431 } 21432 21433 // Remove a product from all categories 21434 function removeFromWishlist(productId) { 21435 const wishlist = getWishlist(); 21436 let removed = false; 21437 21438 wishlist.categories.forEach(category => { 21439 const initialLength = category.items.length; 21440 category.items = category.items.filter(item => item.id !== productId); 21441 if (category.items.length !== initialLength) { 21442 removed = true; 21443 } 21444 }); 21445 21446 if (removed) { 21447 saveWishlist(wishlist); 21448 } 21449 21450 return removed; 21451 } 21452 21453 // Toggle a product in the wishlist 21454 function toggleWishlistItem(product) { 21455 if (isInWishlist(product.id)) { 21456 // If already in wishlist, remove it 21457 const wasRemoved = removeFromWishlist(product.id); 21458 21459 // Update heart icon if the product was successfully removed 21460 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 21461 if (heartIcon && wasRemoved) { 21462 heartIcon.setAttribute('fill', 'none'); 21463 showWishlistToast(false, product.title); 21464 21465 // Dispatch event for global sync 21466 document.dispatchEvent(new CustomEvent('wishlist:updated', { 21467 detail: { productId: product.id, added: false } 21468 })); 21469 } 21470 return wasRemoved; 21471 } else { 21472 // If not in wishlist, show category selection popup 21473 showCategorySelectionPopup(product); 21474 return false; // Don't return true unless we actually add the product 21475 } 21476 } 21477 21478 // Show wishlist category selection popup 21479 function showCategorySelectionPopup(product) { 21480 // Remove any existing popup 21481 const existingPopup = document.getElementById('wishlist-category-popup'); 21482 if (existingPopup) { 21483 existingPopup.remove(); 21484 } 21485 21486 const lang = getWishlistLang(); 21487 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 21488 21489 // Create popup container 21490 const popup = document.createElement('div'); 21491 popup.id = 'wishlist-category-popup'; 21492 popup.className = 'wishlist-category-popup'; 21493 21494 // Create popup content 21495 const content = document.createElement('div'); 21496 content.className = 'wishlist-category-popup-content'; 21497 21498 // Create header 21499 const title = document.createElement('h2'); 21500 title.textContent = translations.addToWishlist; // Translate 21501 21502 const closeButton = document.createElement('button'); 21503 closeButton.className = 'wishlist-category-popup-close'; 21504 closeButton.setAttribute('aria-label', 'Close'); 21505 closeButton.addEventListener('click', () => { 21506 popup.remove(); 21507 }); 21508 21509 // Create category list 21510 const categoryList = document.createElement('div'); 21511 categoryList.className = 'wishlist-category-list'; 21512 21513 // Get categories 21514 const categories = getCategories(); 21515 21516 // Add category options
21517 categories.forEach(category => { 21518 const categoryOption = document.createElement('div'); 21519 categoryOption.className = 'wishlist-category-option'; 21520 21521 // Use translation for default category name 21522 categoryOption.textContent = category.id === 'all-favorites' 21523 ? (translations.allFavorites || category.name) 21524 : category.name; 21525 21526 // Highlight if product already in this category 21527 if (category.items.some(item => item.id === product.id)) { 21528 categoryOption.style.backgroundColor = '#f0f0f0'; 21529 categoryOption.style.color = '#999'; 21530 categoryOption.style.fontStyle = 'italic'; 21531 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 21532 categoryOption.style.cursor = 'default'; 21533 } else { 21534 categoryOption.addEventListener('click', () => { 21535 const wasAdded = addToCategory(product, category.id); 21536 21537 if (wasAdded) { 21538 // Update heart icon after successful addition 21539 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 21540 if (heartIcon) { 21541 heartIcon.setAttribute('fill', '#333333'); 21542 } 21543 21544 showWishlistToast(true, product.title); 21545 popup.remove(); 21546 } 21547 }); 21548 } 21549 21550 categoryList.appendChild(categoryOption); 21551 }); 21552 21553 // Create "add new category" section 21554 const newCategorySection = document.createElement('div'); 21555 newCategorySection.style.borderTop = '1px solid #eee'; 21556 newCategorySection.style.paddingTop = '15px'; 21557 newCategorySection.style.marginTop = '10px'; 21558 21559 const newCategoryLabel = document.createElement('label'); 21560 newCategoryLabel.textContent = translations.createCategory; // Translate 21561 21562 const newCategoryInput = document.createElement('input'); 21563 newCategoryInput.type = 'text'; 21564 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 21565 21566 const createButton = document.createElement('button'); 21567 createButton.className = 'create-category-button'; 21568 createButton.textContent = translations.createAndAdd; // Translate 21569 21570 createButton.addEventListener('click', () => { 21571 const categoryName = newCategoryInput.value.trim(); 21572 if (categoryName) { 21573 const categoryId = createCategory(categoryName); 21574 const wasAdded = addToCategory(product, categoryId); 21575 21576 if (wasAdded) { 21577 // Update heart icon after successful addition 21578 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 21579 if (heartIcon) { 21580 heartIcon.setAttribute('fill', '#333333'); 21581 } 21582 21583 showWishlistToast(true, product.title); 21584 popup.remove(); 21585 } 21586 } 21587 }); 21588 21589 newCategorySection.appendChild(newCategoryLabel); 21590 newCategorySection.appendChild(newCategoryInput); 21591 newCategorySection.appendChild(createButton); 21592 21593 // Assemble popup 21594 content.appendChild(title); 21595 content.appendChild(closeButton); 21596 content.appendChild(categoryList); 21597 content.appendChild(newCategorySection); 21598 popup.appendChild(content); 21599 21600 // Add to document 21601 document.body.appendChild(popup); 21602 21603 // Focus the input 21604 setTimeout(() => { 21605 newCategoryInput.focus(); 21606 }, 100); 21607 21608 // Close when clicking outside content 21609 popup.addEventListener('click', (e) => { 21610 if (e.target === popup) { 21611 popup.remove(); 21612 } 21613 }); 21614 } 21615 21616 // Show a toast notification 21617 function showWishlistToast(added, productTitle) { 21618 // Create or get toast container 21619 let toastContainer = document.getElementById('wishlist-toast'); 21620 if (!toastContainer) { 21621 toastContainer = document.createElement('div'); 21622 toastContainer.id = 'wishlist-toast'; 21623 toastContainer.style.position = 'fixed'; 21624 toastContainer.style.bottom = '20px'; 21625 toastContainer.style.right = '20px'; 21626 toastContainer.style.zIndex = '9999'; 21627 document.body.appendChild(toastContainer); 21628 } 21629 21630 // Create toast 21631 const toast = document.createElement('div'); 21632 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 21633 toast.style.color = 'white'; 21634 toast.style.padding = '12px 20px'; 21635 toast.style.borderRadius = '0'; 21636 toast.style.marginTop = '10px'; 21637 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 21638 toast.style.transition = 'all 0.3s ease'; 21639 toast.style.opacity = '0'; 21640 toast.style.fontFamily = 'Montserrat, sans-serif'; 21641 21642 // Choose text based on action 21643 const lang = getWishlistLang(); 21644 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 21645 toast.textContent = added 21646 ? `${productTitle} ${translations.addedToWishlist}` // Translate 21647 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 21648 21649 // Add to container 21650 toastContainer.appendChild(toast); 21651 21652 // Animate in 21653 setTimeout(() => { 21654 toast.style.opacity = '1'; 21655 }, 10); 21656 21657 // Animate out and remove 21658 setTimeout(() => { 21659 toast.style.opacity = '0'; 21660 setTimeout(() => { 21661 toastContainer.removeChild(toast); 21662 }, 300); 21663 }, 3000); 21664 } 21665 21666 // Initialize wishlist buttons 21667 function initCardWishlistButtons() { 21668 const wishlistButtons = document.querySelectorAll('.card-wis
21668hlist-button'); 21669 21670 wishlistButtons.forEach(button => { 21671 // Skip if already initialized 21672 if (button.dataset.initializedWishlist === 'true') return; 21673 button.dataset.initializedWishlist = 'true'; 21674 21675 const productId = button.getAttribute('data-wishlist-product'); 21676 if (!productId) return; 21677 21678 // Get product details from the card 21679 const card = button.closest('.card-wrapper'); 21680 const productDetails = { 21681 id: productId, 21682 title: card.querySelector('.card__heading')?.textContent.trim() || '', 21683 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 21684 price: card.querySelector('.price')?.textContent.trim() || '', 21685 image: card.querySelector('img')?.src || '', 21686 url: card.querySelector('a[href*="/products/"]')?.href || '' 21687 }; 21688 21689 // Set initial state using global function 21690 const heartIcon = button.querySelector('path'); 21691 if (heartIcon) { 21692 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 21693 heartIcon.setAttribute('fill', '#333333'); 21694 } else { 21695 heartIcon.setAttribute('fill', 'none'); 21696 } 21697 } 21698 21699 // Add click handler 21700 button.addEventListener('click', function(e) { 21701 e.preventDefault(); 21702 e.stopPropagation(); 21703 e.stopImmediatePropagation(); 21704 toggleWishlistItem(productDetails); 21705 }); 21706 21707 // Prevent navigation on mousedown/touchstart 21708 button.addEventListener('mousedown', function(e) { 21709 e.preventDefault(); 21710 e.stopPropagation(); 21711 }); 21712 21713 button.addEventListener('touchstart', function(e) { 21714 e.preventDefault(); 21715 e.stopPropagation(); 21716 }); 21717 }); 21718 } 21719 21720 // Initialize the wishlist counter on page load 21721 const wishlist = getWishlist(); 21722 const totalItems = wishlist.categories.reduce((total, category) => { 21723 return total + category.items.length; 21724 }, 0); 21725 updateWishlistCounters(totalItems); 21726 21727 // Initialize on DOM ready 21728 if (document.readyState === 'loading') { 21729 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 21730 } else { 21731 initCardWishlistButtons(); 21732 } 21733 21734 // Reinitialize on Shopify section load 21735 document.addEventListener('shopify:section:load', function() { 21736 setTimeout(initCardWishlistButtons, 100); 21737 }); 21738 21739 // Listen for wishlist updates from other parts of the site 21740 document.addEventListener('wishlist:updated', function() { 21741 setTimeout(initCardWishlistButtons, 100); 21742 }); 21743 })(); 21744</script>
21744 21745 21746<!-- Price info icon styles --> 21747<style> 21748 /* Price container with icon */ 21749 .price-container-with-info { 21750 position: relative; 21751 display: flex; 21752 align-items: center; 21753 gap: 8px; 21754 } 21755 21756 /* Info icon - hidden by default, shown on card hover */ 21757 .price-info-icon { 21758 position: relative; 21759 display: inline-flex; 21760 align-items: center; 21761 justify-content: center; 21762 color: #666; 21763 cursor: help; 21764 opacity: 0; 21765 transition: opacity 0.3s ease; 21766 21767 padding: 4px; /* Add padding to increase clickable area */ 21768 min-width: 20px; /* Ensure minimum clickable area */ 21769 min-height: 20px; 21770 z-index: 15; /* Above everything else including compare button */ 21771 pointer-events: auto; /* Allow interaction */ 21772 } 21773 21774 /* Show icon on card hover */ 21775 .card-wrapper:hover .price-info-icon { 21776 opacity: 1; 21777 } 21778 21779 .price-info-icon svg { 21780 width: 14px; 21781 height: 14px; 21782 stroke-width: 1.5; 21783 } 21784 21785 /* Tooltip styles */ 21786 .price-info-tooltip { 21787 position: absolute; 21788 bottom: calc(100% + 6px); 21789 top: auto; 21790 left: 0; 21791 transform: none; 21792 min-width: 310px; 21793 background: #FFFFFF; 21794 color: #232323; 21795 border: 1px solid #EEEEEE; 21796 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 21797 padding: 12px 16px; 21798 font-size: 13px; 21799 font-family: 'Montserrat', sans-serif; 21800 z-index: 10000; 21801 opacity: 0; 21802 transition: opacity 0.18s; 21803 white-space: pre-line; 21804 text-align: left; 21805 border-radius: 0; 21806 visibility: hidden; 21807 pointer-events: none; 21808 } 21809 21810 /* Show tooltip on icon hover */ 21811 .price-info-icon:hover .price-info-tooltip { 21812 visibility: visible; 21813 opacity: 1; 21814 } 21815 21816 /* Ensure tooltip is never clipped */ 21817 .price-container-with-info, 21818 .card-information, 21819 .card__content { 21820 overflow: visible !important; 21821 } 21822 21823 /* Mobile adjustments */ 21824 @media screen and (max-width: 768px) { 21825 .price-info-tooltip { 21826 min-width: 200px; 21827 font-size: 12px; 21828 padding: 10px 12px; 21829 } 21830 } 21831</style> 21832 21833 </li> 21834 <li 21835 class="grid__item" 21836 21837 > 21838 21839<div class="card-wrapper product-card-wrapper underline-links-hover"> 21840 21841 <div 21842 class=" 21843 card card--standard 21844 card--media 21845 21846 21847 21848 21849 21850 " 21851 style="--ratio-percent: 100.0%;" 21852 data-product-id="9746956288298" 21853 data-description="Lámpara de pie LED. Adecada para exteriores y con la iluminación a todos los lados." 21854 21855 data-ip-rate="IP54" 21856 21857 data-variant-id="52388007575850" 21858 data-price="268.00 EUR" 21859 data-compare-at-price="" 21860 data-available="true" 21861 data-barcode="8595685414973" 21862 data-ip-rate="IP54" 21863 data-lumens="423" 21864 data-power-source="" 21865 data-watt="15.0" 21866 data-kelvin="3000" 21867 data-light-color="" 21868 data-diameter="12.0" 21869 data-weight-netto="2750.0" 21870 data-weight-unit="g" 21871 data-mounting-hole-size="" 21872 data-recess-depth="" 21873 data-suspension-lenght="" 21874 data-turn-angle="" 21875 data-tilt-angle="" 21876 data-switch="" 21877 data-socket="" 21878 data-light-source-recomended="" 21879 data-height="65" 21880 data-length="" 21881 data-Length="" 21882 > 21883 <div 21884 class="card__inner color-scheme-2 gradient ratio" 21885 style="--ratio-percent: 100.0%;" 21886 > 21887 21888 21889<div class="ip-rate-badge"> 21890 <span>IP54</span> 21891 </div><div class="card__media"> 21892 <a class="card__media-link-content" href="/products/abax-65-bollard-lamp" aria-label="ABAX 65"> 21893 <div class="media media--transparent media--hover-effect"> 21894 21895 <img 21896 class="product-image motion-reduce" 21897 srcset="//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=165 165w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=360 360w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=533 533w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=720 720w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=940 940w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=1066 1066w,//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665 3162w 21898 " 21899 src="//rendl.es/cdn/shop/files/r12626-1.jpg?v=1767748665&width=533" 21900 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 21901 alt="RENDL outdoor lamp ABAX 65 bollard anthracite grey 230V LED 15W IP54 3000K R12626 1" 21902 21903 loading="lazy" 21904 21905 width="3162" 21906 height="3162" 21907 > 21908 21909<img 21910 class="product-image motion-reduce" 21911 srcset="//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=165 165w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=360 360w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=533 533w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=720 720w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=940 940w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=1066 1066w,//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868 4899w 21912 " 21913 src="//rendl.es/cdn/shop/files/r12626-2.jpg?v=1745938868&width=533" 21914 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 21915 alt="" 21916 loading="lazy" 21917 width="4899" 21918 height="4899" 21919 ></div> 21920 </a> 21921 21922<div class="card-media-icons"><div class="energy-label-icon"> 21923 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 21924 <div class="energy-label-tooltip">Clase energética G 21925</div> 21926 </div></div><div class="card-variant-swatches"><a 21927 class="card-variant-swatch" 21928 href="/products/abax-65-bollard-lamp?variant=52388007575850" 21929 21930 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 21931 21932 aria-label="gris antracita" 21933 >
21934 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 21935 <div class="card__information"> 21936 <h3 21937 class="card__heading" 21938 21939 > 21940 <a 21941 href="/products/abax-65-bollard-lamp" 21942 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746956288298" 21943 class="full-unstyled-link" 21944 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746956288298 NoMediaStandardBadge-template--28113427169578__product-grid-9746956288298" 21945 > 21946 ABAX 65 21947 </a> 21948 </h3> 21949 </div> 21950 <div class="card__badge bottom left"></div> 21951 </div> 21952 </div> 21953 <div class="card__content"> 21954 <div class="card__information"> 21955 <h3 21956 class="card__heading h5" 21957 21958 id="title-template--28113427169578__product-grid-9746956288298" 21959 21960 > 21961 <a 21962 href="/products/abax-65-bollard-lamp" 21963 id="CardLink-template--28113427169578__product-grid-9746956288298" 21964 class="full-unstyled-link" 21965 aria-labelledby="CardLink-template--28113427169578__product-grid-9746956288298 Badge-template--28113427169578__product-grid-9746956288298" 21966 > 21967 ABAX 65 21968 </a> 21969 </h3><div class="card__description"> 21970 Lámpara de pie LED. Adecada para exteriores y con la iluminación a todos los lados. 21971 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 21972 21973<div 21974 class=" 21975 price " 21976 > 21977 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 21978 <span class="price-item price-item--regular"> 21979 268.00 EUR 21980 </span></div> 21981 <div class="price__sale"> 21982 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 21983 <span> 21984 <s class="price-item price-item--regular"> 21985 21986 21987 21988 </s> 21989 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 21990 <span class="price-item price-item--sale price-item--last"> 21991 268.00 EUR 21992 </span> 21993 </div> 21994 <small class="unit-price caption hidden"> 21995 <span class="visually-hidden">Precio unitario</span> 21996 <span class="price-item price-item--last"> 21997 <span></span> 21998 <span aria-hidden="true">/</span> 21999 <span class="visually-hidden"> por </span> 22000 <span> 22001 </span> 22002 </span> 22003 </small> 22004 </div></div> 22005 22006 22007</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 22008 <button class="compare-button-simple" 22009 data-product-id="9746956288298" 22010 data-product-title="ABAX 65" 22011 data-product-handle="abax-65-bollard-lamp"> 22012 <span class="compare-button-content"> 22013 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 22014 <span class="compare-text" data-translate="compare">compare</span> 22015 </span> 22016 <span class="compare-spinner-small"> 22017 <!-- Small spinner for button --> 22018 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 22019 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 22020 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 22021 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
22021inite"/> 22022 </path> 22023 </svg> 22024 </span> 22025 </button> 22026 22027 <!-- Wishlist button next to compare button --> 22028 <button type="button" class="card-wishlist-button" data-wishlist-product="9746956288298"> 22029 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 22030 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 22031 </svg> 22032 </button> 22033 </div></div> 22034 </div> 22035 22036 22037 22038 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746956288298" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 22039 type="hidden" 22040 name="id" 22041 value="52388007575850" 22042 class="product-variant-id" 22043 22044 > 22045 <button 22046 id="quick-add-template--28113427169578__product-grid9746956288298-submit" 22047 type="submit" 22048 name="add" 22049 class="quick-add__submit button button--full-width button--secondary" 22050 aria-haspopup="dialog" 22051 aria-labelledby="quick-add-template--28113427169578__product-grid9746956288298-submit title-template--28113427169578__product-grid-9746956288298" 22052 aria-live="polite" 22053 data-sold-out-message="true" 22054 22055 > 22056 <span>Agregar al carrito 22057</span> 22058 <span class="sold-out-message hidden"> 22059 En camino 22060 </span> 22061 22062<div class="loading__spinner hidden"> 22063 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 22064 22065</div> 22066</button><input type="hidden" name="product-id" value="9746956288298" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 22067 22068 <div class="card__badge bottom left"></div> 22069 </div> 22070 </div> 22071 </div>
22071<script> 22072 // Initialize global compare translations only once 22073 if (typeof window.compareButtonTranslations === 'undefined') { 22074 window.compareButtonTranslations = { 22075 compare: { 22076 en: 'compare', 22077 cs: 'porovnat', 22078 sk: 'porovnaÅ¥', 22079 de: 'vergleichen', 22080 at: 'vergleichen', 22081 ch: 'vergleichen', 22082 fr: 'comparer', 22083 be: 'comparer', 22084 lu: 'comparer', 22085 it: 'confronta', 22086 es: 'comparar', 22087 nl: 'vergelijken', 22088 pl: 'porównaj', 22089 hu: 'összehasonlÃt', 22090 ro: 'comparÄ', 22091 bg: 'ÑÑавни', 22092 hr: 'usporedi', 22093 fi: 'vertaile', 22094 gr: 'ÏÏγκÏιÏη', 22095 el: 'ÏÏγκÏιÏη', 22096 no: 'sammenlign', 22097 'pt-PT': 'comparar', 22098 sl: 'primerjaj', 22099 sv: 'jämför', 22100 lv: 'salÄ«dzinÄt', 22101 lt: 'palyginti', 22102 ee: 'võrdle', 22103 dk: 'sammenlign', 22104 gb: 'compare', 22105 uk: 'compare', 22106 ie: 'compare', 22107 us: 'compare', 22108 ca: 'compare', 22109 au: 'compare', 22110 nz: 'compare', 22111 ru: 'ÑÑавниÑÑ' 22112 }, 22113 remove: { 22114 en: 'remove', 22115 cs: 'odebrat', 22116 sk: 'odobraÅ¥', 22117 de: 'entfernen', 22118 at: 'entfernen', 22119 ch: 'entfernen', 22120 fr: 'supprimer', 22121 be: 'supprimer', 22122 lu: 'supprimer', 22123 it: 'rimuovi', 22124 es: 'eliminar', 22125 nl: 'verwijderen', 22126 pl: 'usuÅ', 22127 hu: 'eltávolÃt', 22128 ro: 'eliminÄ', 22129 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 22130 hr: 'ukloni', 22131 fi: 'poista', 22132 gr: 'αÏαίÏεÏη', 22133 el: 'αÏαίÏεÏη', 22134 no: 'fjern', 22135 'pt-PT': 'remover', 22136 sl: 'odstrani', 22137 sv: 'ta bort', 22138 lv: 'noÅemt', 22139 lt: 'paÅ¡alinti', 22140 ee: 'eemalda', 22141 dk: 'fjern', 22142 gb: 'remove', 22143 uk: 'remove', 22144 ie: 'remove', 22145 us: 'remove', 22146 ca: 'remove', 22147 au: 'remove', 22148 nz: 'remove', 22149 ru: 'ÑдалиÑÑ' 22150 }, 22151 added: { 22152 en: 'Added!', 22153 cs: 'PÅidáno!', 22154 sk: 'Pridané!', 22155 de: 'Hinzugefügt!', 22156 at: 'Hinzugefügt!', 22157 ch: 'Hinzugefügt!', 22158 fr: 'Ajouté!', 22159 be: 'Ajouté!', 22160 lu: 'Ajouté!', 22161 it: 'Aggiunto!', 22162 es: '¡Añadido!', 22163 nl: 'Toegevoegd!', 22164 pl: 'Dodano!', 22165 hu: 'Hozzáadva!', 22166 ro: 'AdÄugat!', 22167 bg: 'Ðобавено!', 22168 hr: 'Dodano!', 22169 fi: 'Lisätty!', 22170 gr: 'Î ÏοÏÏÎθηκε!', 22171 el: 'Î ÏοÏÏÎθηκε!', 22172 no: 'Lagt til!', 22173 'pt-PT': 'Adicionado!', 22174 sl: 'Dodano!', 22175 sv: 'Tillagd!', 22176 lv: 'Pievienots!', 22177 lt: 'PridÄta!', 22178 ee: 'Lisatud!', 22179 dk: 'Tilføjet!', 22180 gb: 'Added!', 22181 uk: 'Added!', 22182 ie: 'Added!', 22183 us: 'Added!', 22184 ca: 'Added!', 22185 au: 'Added!', 22186 nz: 'Added!', 22187 ru: 'Ðобавлено!' 22188 }, 22189 removed: { 22190 en: 'Removed!', 22191 cs: 'Odebráno!', 22192 sk: 'Odobrané!', 22193 de: 'Entfernt!', 22194 at: 'Entfernt!', 22195 ch: 'Entfernt!', 22196 fr: 'Supprimé!', 22197 be: 'Supprimé!', 22198 lu: 'Supprimé!', 22199 it: 'Rimosso!', 22200 es: '¡Eliminado!', 22201 nl: 'Verwijderd!', 22202 pl: 'UsuniÄto!', 22203 hu: 'EltávolÃtva!', 22204 ro: 'Eliminat!', 22205 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 22206 hr: 'Uklonjeno!', 22207 fi: 'Poistettu!', 22208 gr: 'ÎÏαιÏÎθηκε!', 22209 el: 'ÎÏαιÏÎθηκε!', 22210 no: 'Fjernet!', 22211 'pt-PT': 'Removido!', 22212 sl: 'Odstranjeno!', 22213 sv: 'Borttaget!', 22214 lv: 'NoÅemts!', 22215 lt: 'PaÅ¡alinta!', 22216 ee: 'Eemaldatud!', 22217 dk: 'Fjernet!', 22218 gb: 'Removed!', 22219 uk: 'Removed!', 22220 ie: 'Removed!', 22221 us: 'Removed!', 22222 ca: 'Removed!', 22223 au: 'Removed!', 22224 nz: 'Removed!', 22225 ru: 'Удалено!' 22226 } 22227 }; 22228 22229 // Tooltip translations for price info 22230 window.tooltipTranslations = { 22231 tooltipPrice: { 22232 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22233 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 22234 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 22235 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 22236 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 22237 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 22238 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 22239 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 22240 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 22241 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 22242 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 22243 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 22244 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 22245 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 22246 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 22247 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 22248 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 22249 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 22250 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 22251 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 22252 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 22253 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 22254 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 22255 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 22256 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
22256iks atskaitÄ«ts, ja piemÄrojams.", 22257 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 22258 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 22259 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 22260 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22261 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22262 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22263 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22264 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22265 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22266 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 22267 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 22268 }, 22269 tooltipOutlet: { 22270 en: "We do not provide additional wholesale discounts on outlet products.", 22271 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 22272 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 22273 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 22274 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 22275 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 22276 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 22277 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 22278 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 22279 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 22280 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 22281 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 22282 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 22283 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 22284 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 22285 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 22286 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 22287 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 22288 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 22289 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 22290 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 22291 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 22292 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 22293 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 22294 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 22295 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 22296 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 22297 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 22298 gb: "We do not provide additional wholesale discounts on outlet products.", 22299 uk: "We do not provide additional wholesale discounts on outlet products.", 22300 ie: "We do not provide additional wholesale discounts on outlet products.", 22301 us: "We do not provide additional wholesale discounts on outlet products.", 22302 ca: "We do not provide additional wholesale discounts on outlet products.", 22303 au: "We do not provide additional wholesale discounts on outlet products.", 22304 nz: "We do not provide additional wholesale discounts on outlet products.", 22305 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 22306 } 22307 }; 22308 22309 // Get current locale from document 22310 window.currentLocale = document.documentElement.lang || 'en'; 22311 22312 // Function to translate compare buttons 22313 window.translateCompareButtons = function() { 22314 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
22315 compareTexts.forEach(function(textEl) { 22316 const button = textEl.closest('.compare-button-simple'); 22317 const isInComparison = button && button.hasAttribute('data-in-comparison'); 22318 22319 if (isInComparison) { 22320 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 22321 textEl.textContent = translation; 22322 } else { 22323 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 22324 textEl.textContent = translation; 22325 } 22326 }); 22327 }; 22328 22329 // Function to format price with space as thousands separator (only for tooltip) 22330 function formatTooltipPrice(price) { 22331 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 22332 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 22333 } 22334 22335 // Function to translate tooltips with price 22336 window.translateTooltips = function() { 22337 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 22338 tooltips.forEach(function(tooltip) { 22339 const icon = tooltip.closest('.price-info-icon'); 22340 if (icon) { 22341 const status = icon.getAttribute('data-status'); 22342 // Check if this is an outlet product 22343 if (status === 'outlet') { 22344 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 22345 tooltip.textContent = translation; 22346 return; // Exit early for outlet products 22347 } 22348 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 22349 // Get wholesale price from the actual price display on the card 22350 const card = icon.closest('[data-product-id]'); 22351 let wholesalePrice = ''; 22352 if (card) { 22353 // Find the main price element on the card 22354 const priceElement = card.querySelector('.price .price-item--regular'); 22355 if (priceElement) { 22356 wholesalePrice = priceElement.textContent.trim(); 22357 } 22358 } 22359 if (retailPrice && wholesalePrice) { 22360 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 22361 let formattedRetailPrice = formatTooltipPrice(retailPrice); 22362 let formattedWholesalePrice = wholesalePrice; 22363 if (window.formatPriceText) { 22364 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 22365 } 22366 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 22367 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 22368 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 22369 tooltip.textContent = translatedText; 22370 } 22371 } 22372 }); 22373 }; 22374 22375 // Function to update button state based on comparison status 22376 window.updateCompareButtonState = function(productId, isInComparison) { 22377 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 22378 buttons.forEach(function(button) { 22379 const buttonContainer = button.closest('.compare-button-container'); 22380 const compareText = button.querySelector('.compare-text'); 22381 22382 if (isInComparison) { 22383 button.setAttribute('data-in-comparison', 'true'); 22384 button.classList.add('in-comparison'); 22385 buttonContainer.classList.add('in-comparison'); 22386 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 22387 compareText.textContent = removeText; 22388 } else { 22389 button.removeAttribute('data-in-comparison'); 22390 button.classList.remove('in-comparison'); 22391 buttonContainer.classList.remove('in-comparison'); 22392 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 22393 compareText.textContent = compareTextTranslation; 22394 } 22395 }); 22396 }; 22397 } 22398 22399 // Initialize compare button states based on localStorage 22400 window.initializeCompareButtonStates = function() {
22401 if (typeof window.RendlCompare !== 'undefined') { 22402 const compareItems = window.RendlCompare.getItems(); 22403 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 22404 const productId = button.getAttribute('data-product-id'); 22405 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 22406 window.updateCompareButtonState(productId, isInComparison); 22407 }); 22408 } 22409 }; 22410 22411 // Compare button UI animation - the actual functionality is handled by compare-system.js 22412 document.addEventListener('DOMContentLoaded', function() { 22413 // Apply translations on page load 22414 if (window.translateCompareButtons) { 22415 window.translateCompareButtons(); 22416 } 22417 22418 // Initialize button states based on comparison data 22419 setTimeout(function() { 22420 if (window.initializeCompareButtonStates) { 22421 window.initializeCompareButtonStates(); 22422 } 22423 }, 100); // Small delay to ensure compare system is loaded 22424 22425 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 22426 // Skip if already has event listener 22427 if (button.hasAttribute('data-compare-initialized')) { 22428 return; 22429 } 22430 button.setAttribute('data-compare-initialized', 'true'); 22431 22432 button.addEventListener('click', function(e) { 22433 var buttonContainer = button.closest('.compare-button-container'); 22434 var compareText = button.querySelector('.compare-text'); 22435 var isInComparison = button.hasAttribute('data-in-comparison'); 22436 var productId = button.getAttribute('data-product-id'); 22437 22438 // Prevent multiple clicks during loading 22439 if (button.classList.contains('loading')) { 22440 return; 22441 } 22442 22443 // Make button always visible during the process 22444 buttonContainer.classList.add('active'); 22445 22446 // Add loading class to show spinner 22447 button.classList.add('loading'); 22448 22449 // UI feedback timing 22450 setTimeout(function() { 22451 // Remove loading class and show success message 22452 button.classList.remove('loading'); 22453 button.classList.add('success'); 22454 22455 if (isInComparison) { 22456 // Removing from comparison 22457 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 22458 22459 // Update button state after removal 22460 setTimeout(function() { 22461 button.classList.remove('success'); 22462 window.updateCompareButtonState(productId, false); 22463 buttonContainer.classList.remove('active'); 22464 }, 1500); 22465 } else { 22466 // Adding to comparison 22467 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 22468 22469 // Update button state after addition 22470 setTimeout(function() { 22471 button.classList.remove('success'); 22472 window.updateCompareButtonState(productId, true); 22473 buttonContainer.classList.remove('active'); 22474 }, 1500); 22475 } 22476 }, 1200); 22477 }); 22478 }); 22479 22480 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 22481 setTimeout(function() { 22482 if (window.translateTooltips) { 22483 window.translateTooltips(); 22484 } 22485 }, 100); 22486 }); 22487 22488 // Ensure compare button states are initialized after RendlCompare is available 22489 document.addEventListener('DOMContentLoaded', function() { 22490 function tryInitCompareButtons() { 22491 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 22492 window.initializeCompareButtonStates(); 22493 } else { 22494 setTimeout(tryInitCompareButtons, 100); 22495 } 22496 } 22497 tryInitCompareButtons(); 22498 }); 22499 22500 // Self-contained wishlist functionality for card-product 22501 (function() { 22502 // Wishlist translations 22503 var wishlistTranslations = { 22504 'en': { 22505 addToWishlist: 'Add to My Favorites', 22506 createCategory: 'Create new category:', 22507 categoryPlaceholder: 'Category name', 22508 createAndAdd: 'Create & Add Item', 22509 alreadyAdded: '(Already added)', 22510 addedToWishlist: 'added to My Favorites', 22511 removedFromWishlist: 'removed from My Favorites', 22512 allFavorites: 'All Favorites' 22513 }, 22514 'cs': { 22515 addToWishlist: 'PÅidat do oblÃbených', 22516 createCategory: 'VytvoÅit novou skupinu:', 22517 categoryPlaceholder: 'Název nové skupiny', 22518 createAndAdd: 'VytvoÅit a pÅidat skupinu', 22519 alreadyAdded: '(Již pÅidáno)', 22520 addedToWishlist: 'pÅidáno do oblÃbených', 22521 removedFromWishlist: 'odebráno z oblÃbených', 22522 allFavorites: 'VÅ¡echny oblÃbené' 22523 }, 22524 'sk': { 22525 addToWishlist: 'PridaÅ¥ do obľúbených', 22526 createCategory: 'VytvoriÅ¥ novú kategóriu:', 22527 categoryPlaceholder: 'Názov kategórie', 22528 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 22529 alreadyAdded: '(Už pridané)', 22530 addedToWishlist: 'pridané do obľúbených', 22531 removedFromWishlist: 'odstránené z obľúbených', 22532 allFavorites: 'VÅ¡etky obľúbené' 22533 }, 22534 'de': { 22535 addToWishlist: 'Zu meinen Favoriten hinzufügen', 22536 createCategory: 'Neue Kategorie erstellen:', 22537 categoryPlaceholder: 'Kategoriename', 22538 createAndAdd: 'Erstellen & hinzufügen', 22539 alreadyAdded: '(Bereits hinzugefügt)', 22540 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 22541 removedFromWishlist: 'aus meinen Favoriten entfernt', 22542 allFavorites: 'Alle Favoriten' 22543 }, 22544 'fr': { 22545 addToWishlist: 'Ajouter à mes favoris', 22546 createCategory: 'Créer une nouvelle catégorie :', 22547 categoryPlaceholder: 'Nom de la catégorie', 22548 createAndAdd: 'Créer et ajouter', 22549 alreadyAdded: '(Déjà ajouté)', 22550 addedToWishlist: 'ajouté à mes favoris', 22551 removedFromWishlist: 'retiré de mes favoris', 22552 allFavorites: 'Tous les favoris' 22553 }, 22554 'it': { 22555 addToWishlist: 'Aggiungi ai preferiti', 22556 createCategory: 'Crea nuova categoria:', 22557 categoryPlaceholder: 'Nome categoria', 22558 createAndAdd: 'Crea e aggiungi', 22559 alreadyAdded: '(Già aggiunto)', 22560 addedToWishlist: 'aggiunto ai preferiti', 22561 removedFromWishlist: 'rimosso dai preferiti', 22562 allFavorites: 'Tutti i preferiti' 22563 }, 22564 'es': { 22565 addToWishlist: 'Añadir a mis favoritos', 22566 createCategory: 'Crear nueva categorÃa:', 22567 categoryPlaceholder: 'Nombre de la categorÃa', 22568 createAndAdd: 'Crear y añadir', 22569 alreadyAdded: '(Ya añadido)', 22570 addedToWishlist: 'añadido a mis favoritos', 22571 removedFromWishlist: 'eliminado de mis favoritos', 22572 allFavorites: 'Todos los favoritos' 22573 }, 22574 'nl': { 22575 addToWishlist: 'Toevoegen aan mijn favorieten', 22576 createCategory: 'Nieuwe categorie aanmaken:', 22577 categoryPlaceholder: 'Categorienaam', 22578 createAndAdd: 'Aanmaken & toevoegen', 22579 alreadyAdded: '(Al toegevoegd)', 22580 addedToWishlist: 'toegevoegd aan mijn favorieten', 22581 removedFromWishlist: 'verwijderd uit mijn favorieten', 22582 allFavorites: 'Alle favorieten' 22583 }, 22584 'pl': { 22585 addToWishlist: 'Dodaj do ulubionych', 22586 createCategory: 'Utwórz nowÄ kategoriÄ:', 22587 categoryPlaceholder: 'Nazwa kategorii', 22588 createAndAdd: 'Utwórz i dodaj', 22589 alreadyAdded: '(Już dodane)', 22590 addedToWishlist: 'dodano do ulubionych', 22591 removedFromWishlist: 'usuniÄto z ulubionych', 22592 allFavorites: 'Wszystkie ulubione' 22593 }, 22594 'hu': { 22595 addToWishlist: 'Hozzáadás a kedvencekhez', 22596 createCategory: 'Ãj kategória létrehozása:', 22597 categoryPlaceholder: 'Kategória neve', 22598 createAndAdd: 'Létrehozás és hozzáadás', 22599 alreadyAdded: '(Már hozzáadva)', 22600 addedToWishlist: 'hozzáadva a kedvencekhez', 22601 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 22602 allFavorites: 'Minden kedvenc' 22603 }, 22604 'ro': { 22605 addToWishlist: 'AdaugÄ la favorite', 22606 createCategory: 'CreeazÄ o nouÄ categorie:', 22607 categoryPlaceholder: 'Nume categorie', 22608 createAndAdd: 'CreeazÄ Èi adaugÄ', 22609 alreadyAdded: '(Deja adÄugat)', 22610 addedToWishlist: 'adÄugat la favorite', 22611 removedFromWishlist: 'eliminat din favorite', 22612 allFavorites: 'Toate preferinÈele' 22613 }, 22614 'bg': { 22615 addToWishlist: 'Ðобави в лÑбими', 22616 createCategory: 'СÑздай нова каÑегоÑиÑ:', 22617 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 22618 createAndAdd: 'СÑздай и добави', 22619 alreadyAdded: '(ÐеÑе добавено)', 22620 addedToWishlist: 'добавено в лÑбими', 22621 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 22622 allFavorites: 'ÐÑиÑки лÑбими' 22623 }, 22624 'hr': { 22625 addToWishlist: 'Dodaj u favorite', 22626 createCategory: 'Kreiraj novu kategoriju:', 22627 categoryPlaceholder: 'Naziv kategorije', 22628 createAndAdd: 'Kreiraj i dodaj', 22629 alreadyAdded: '(VeÄ dodano)', 22630 addedToWishlist: 'dodano u favorite', 22631 removedFromWishlist: 'uklonjeno iz favorita', 22632 allFavorites: 'Sva omiljena' 22633 }, 22634 'fi': { 22635 addToWishlist: 'Lisää suosikkeihin', 22636 createCategory: 'Luo uusi kategoria:', 22637 categoryPlaceholder: 'Kategorian nimi', 22638 createAndAdd: 'Luo ja lisää', 22639 alreadyAdded: '(Jo lisätty)', 22640 addedToWishlist: 'lisätty suosikkeihin', 22641 removedFromWishlist: 'poistettu suosikeista',
22642 allFavorites: 'Kaikki suosikit' 22643 }, 22644 'gr': { 22645 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 22646 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 22647 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 22648 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 22649 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 22650 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 22651 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 22652 allFavorites: 'Îλα Ïα αγαÏημÎνα' 22653 }, 22654 'no': { 22655 addToWishlist: 'Legg til i favoritter', 22656 createCategory: 'Opprett ny kategori:', 22657 categoryPlaceholder: 'Kategorinavn', 22658 createAndAdd: 'Opprett og legg til', 22659 alreadyAdded: '(Allerede lagt til)', 22660 addedToWishlist: 'lagt til i favoritter', 22661 removedFromWishlist: 'fjernet fra favoritter', 22662 allFavorites: 'Alle favoritter' 22663 }, 22664 'pt-PT': { 22665 addToWishlist: 'Adicionar aos favoritos', 22666 createCategory: 'Criar nova categoria:', 22667 categoryPlaceholder: 'Nome da categoria', 22668 createAndAdd: 'Criar e adicionar', 22669 alreadyAdded: '(Já adicionado)', 22670 addedToWishlist: 'adicionado aos favoritos', 22671 removedFromWishlist: 'removido dos favoritos', 22672 allFavorites: 'Todos os favoritos' 22673 }, 22674 'sl': { 22675 addToWishlist: 'Dodaj med priljubljene', 22676 createCategory: 'Ustvari novo kategorijo:', 22677 categoryPlaceholder: 'Ime kategorije', 22678 createAndAdd: 'Ustvari in dodaj', 22679 alreadyAdded: '(Že dodano)', 22680 addedToWishlist: 'dodano med priljubljene', 22681 removedFromWishlist: 'odstranjeno iz priljubljenih', 22682 allFavorites: 'Vsi priljubljeni' 22683 }, 22684 'sv': { 22685 addToWishlist: 'Lägg till i favoriter', 22686 createCategory: 'Skapa ny kategori:', 22687 categoryPlaceholder: 'Kategorinamn', 22688 createAndAdd: 'Skapa och lägg till', 22689 alreadyAdded: '(Redan tillagd)', 22690 addedToWishlist: 'tillagd i favoriter', 22691 removedFromWishlist: 'borttagen frÃ¥n favoriter', 22692 allFavorites: 'Alla favoriter' 22693 }, 22694 'lv': { 22695 addToWishlist: 'Pievienot favorÄ«tiem', 22696 createCategory: 'Izveidot jaunu kategoriju:', 22697 categoryPlaceholder: 'Kategorijas nosaukums', 22698 createAndAdd: 'Izveidot un pievienot', 22699 alreadyAdded: '(Jau pievienots)', 22700 addedToWishlist: 'pievienots favorÄ«tiem', 22701 removedFromWishlist: 'noÅemts no favorÄ«tiem', 22702 allFavorites: 'Visas favorÄ«tus' 22703 }, 22704 'lt': { 22705 addToWishlist: 'PridÄti į mÄgstamiausius', 22706 createCategory: 'Sukurti naujÄ kategorijÄ :', 22707 categoryPlaceholder: 'Kategorijos pavadinimas', 22708 createAndAdd: 'Sukurti ir pridÄti', 22709 alreadyAdded: '(Jau pridÄta)', 22710 addedToWishlist: 'pridÄta į mÄgstamiausius', 22711 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 22712 allFavorites: 'Visos mÄgstamiausios' 22713 }, 22714 'ee': { 22715 addToWishlist: 'Lisa lemmikutesse', 22716 createCategory: 'Loo uus kategooria:', 22717 categoryPlaceholder: 'Kategooria nimi', 22718 createAndAdd: 'Loo ja lisa', 22719 alreadyAdded: '(Juba lisatud)', 22720 addedToWishlist: 'lisatud lemmikutesse', 22721 removedFromWishlist: 'eemaldatud lemmikutest', 22722 allFavorites: 'Kõik lemmikud' 22723 }, 22724 'dk': { 22725 addToWishlist: 'Tilføj til favoritter', 22726 createCategory: 'Opret ny kategori:', 22727 categoryPlaceholder: 'Kategorinavn', 22728 createAndAdd: 'Opret og tilføj', 22729 alreadyAdded: '(Allerede tilføjet)', 22730 addedToWishlist: 'tilføjet til favoritter', 22731 removedFromWishlist: 'fjernet fra favoritter', 22732 allFavorites: 'Alle favoritter' 22733 } 22734 }; 22735 22736 function getWishlistLang() { 22737 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 22738 // Normalize for region codes (e.g., pt-PT, sl) 22739 if (lang.startsWith('pt-PT')) return 'pt-PT'; 22740 if (lang.startsWith('sl')) return 'sl'; 22741 if (lang.startsWith('cs')) return 'cs'; 22742 if (lang.startsWith('sk')) return 'sk'; 22743 if (lang.startsWith('de')) return 'de'; 22744 if (lang.startsWith('fr')) return 'fr'; 22745 if (lang.startsWith('it')) return 'it'; 22746 if (lang.startsWith('es')) return 'es'; 22747 if (lang.startsWith('nl')) return 'nl'; 22748 if (lang.startsWith('pl')) return 'pl'; 22749 if (lang.startsWith('hu')) return 'hu'; 22750 if (lang.startsWith('ro')) return 'ro'; 22751 if (lang.startsWith('bg')) return 'bg'; 22752 if (lang.startsWith('hr')) return 'hr'; 22753 if (lang.startsWith('fi')) return 'fi'; 22754 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 22755 if (lang.startsWith('no')) return 'no'; 22756 if (lang.startsWith('sv')) return 'sv'; 22757 if (lang.startsWith('lv')) return 'lv'; 22758 if (lang.startsWith('lt')) return 'lt'; 22759 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 22760 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 22761 return 'en'; 22762 } 22763 22764 // Get or initialize the wishlist array in localStorage 22765 function getWishlist() { 22766 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 22767 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 22768 categories: [ 22769 { 22770 id: 'all-favorites', 22771 name: 'All Favorites', 22772 items: [] 22773 } 22774 ], 22775 version: 2 22776 }; 22777 22778 // Handle migration from old format (array of items) to new format (categories) 22779 if (Array.isArray(wishlist)) { 22780 return { 22781 categories: [ 22782 { 22783 id: 'all-favorites', 22784 name: 'All Favorites', 22785 items: wishlist 22786 } 22787 ], 22788 version: 2 22789 }; 22790 } 22791 22792 return wishlist; 22793 } 22794 22795 // Save wishlist to localStorage 22796 function saveWishlist(wishlist) { 22797 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 22798 // Dispatch an event so other parts of the site can react to wishlist changes 22799 document.dispatchEvent(new CustomEvent('wishlist:updated', { 22800 detail: { wishlist: wishlist } 22801 })); 22802 22803 // Count total items across all categories 22804 const totalItems = wishlist.categories.reduce((total, category) => { 22805 return total + category.items.length; 22806 }, 0); 22807 22808 // Update all wishlist counters 22809 updateWishlistCounters(totalItems); 22810 } 22811 22812 // Update all wishlist counters on the page 22813 function updateWishlistCounters(count) { 22814 const counters = document.querySelectorAll('.wishlist-count');
22815 counters.forEach(counter => { 22816 counter.textContent = count; 22817 22818 // If the counter is hidden and count > 0, show it 22819 if (count > 0 && counter.hasAttribute('hidden')) { 22820 counter.removeAttribute('hidden'); 22821 } 22822 // If the counter is visible and count = 0, hide it 22823 else if (count === 0 && !counter.hasAttribute('hidden')) { 22824 counter.setAttribute('hidden', 'true'); 22825 } 22826 }); 22827 } 22828 22829 // Check if a product is in the wishlist (in any category) 22830 function isInWishlist(productId) { 22831 const wishlist = getWishlist(); 22832 return wishlist.categories.some(category => 22833 category.items.some(item => item.id === productId) 22834 ); 22835 } 22836 22837 // Get all categories 22838 function getCategories() { 22839 return getWishlist().categories; 22840 } 22841 22842 // Create a new category 22843 function createCategory(name) { 22844 const wishlist = getWishlist(); 22845 const categoryId = 'category-' + Date.now(); 22846 22847 wishlist.categories.push({ 22848 id: categoryId, 22849 name: name, 22850 items: [] 22851 }); 22852 22853 saveWishlist(wishlist); 22854 return categoryId; 22855 } 22856 22857 // Add a product to a specific category 22858 function addToCategory(product, categoryId) { 22859 const wishlist = getWishlist(); 22860 const category = wishlist.categories.find(cat => cat.id === categoryId); 22861 22862 if (!category) return false; 22863 22864 // Check if product already exists in ANY category (not just this one) 22865 if (isInWishlist(product.id)) { 22866 return false; // Product already in wishlist 22867 } 22868 22869 // Add product to category 22870 category.items.push(product); 22871 saveWishlist(wishlist); 22872 22873 // Dispatch event for global sync 22874 document.dispatchEvent(new CustomEvent('wishlist:updated', { 22875 detail: { productId: product.id, added: true } 22876 })); 22877 22878 return true; 22879 } 22880 22881 // Add a product to the default "All Favorites" category 22882 function addToWishlist(product) { 22883 return addToCategory(product, 'all-favorites'); 22884 } 22885 22886 // Remove a product from all categories 22887 function removeFromWishlist(productId) { 22888 const wishlist = getWishlist(); 22889 let removed = false; 22890 22891 wishlist.categories.forEach(category => { 22892 const initialLength = category.items.length; 22893 category.items = category.items.filter(item => item.id !== productId); 22894 if (category.items.length !== initialLength) { 22895 removed = true; 22896 } 22897 }); 22898 22899 if (removed) { 22900 saveWishlist(wishlist); 22901 } 22902 22903 return removed; 22904 } 22905 22906 // Toggle a product in the wishlist 22907 function toggleWishlistItem(product) { 22908 if (isInWishlist(product.id)) { 22909 // If already in wishlist, remove it 22910 const wasRemoved = removeFromWishlist(product.id); 22911 22912 // Update heart icon if the product was successfully removed 22913 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 22914 if (heartIcon && wasRemoved) { 22915 heartIcon.setAttribute('fill', 'none'); 22916 showWishlistToast(false, product.title); 22917 22918 // Dispatch event for global sync 22919 document.dispatchEvent(new CustomEvent('wishlist:updated', { 22920 detail: { productId: product.id, added: false } 22921 })); 22922 } 22923 return wasRemoved; 22924 } else { 22925 // If not in wishlist, show category selection popup 22926 showCategorySelectionPopup(product); 22927 return false; // Don't return true unless we actually add the product 22928 } 22929 } 22930 22931 // Show wishlist category selection popup 22932 function showCategorySelectionPopup(product) { 22933 // Remove any existing popup 22934 const existingPopup = document.getElementById('wishlist-category-popup'); 22935 if (existingPopup) { 22936 existingPopup.remove(); 22937 } 22938 22939 const lang = getWishlistLang(); 22940 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 22941 22942 // Create popup container 22943 const popup = document.createElement('div'); 22944 popup.id = 'wishlist-category-popup'; 22945 popup.className = 'wishlist-category-popup'; 22946 22947 // Create popup content 22948 const content = document.createElement('div'); 22949 content.className = 'wishlist-category-popup-content'; 22950 22951 // Create header 22952 const title = document.createElement('h2'); 22953 title.textContent = translations.addToWishlist; // Translate 22954 22955 const closeButton = document.createElement('button'); 22956 closeButton.className = 'wishlist-category-popup-close'; 22957 closeButton.setAttribute('aria-label', 'Close'); 22958 closeButton.addEventListener('click', () => { 22959 popup.remove(); 22960 }); 22961 22962 // Create category list 22963 const categoryList = document.createElement('div'); 22964 categoryList.className = 'wishlist-category-list'; 22965 22966 // Get categories 22967 const categories = getCategories(); 22968 22969 // Add category options
22970 categories.forEach(category => { 22971 const categoryOption = document.createElement('div'); 22972 categoryOption.className = 'wishlist-category-option'; 22973 22974 // Use translation for default category name 22975 categoryOption.textContent = category.id === 'all-favorites' 22976 ? (translations.allFavorites || category.name) 22977 : category.name; 22978 22979 // Highlight if product already in this category 22980 if (category.items.some(item => item.id === product.id)) { 22981 categoryOption.style.backgroundColor = '#f0f0f0'; 22982 categoryOption.style.color = '#999'; 22983 categoryOption.style.fontStyle = 'italic'; 22984 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 22985 categoryOption.style.cursor = 'default'; 22986 } else { 22987 categoryOption.addEventListener('click', () => { 22988 const wasAdded = addToCategory(product, category.id); 22989 22990 if (wasAdded) { 22991 // Update heart icon after successful addition 22992 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 22993 if (heartIcon) { 22994 heartIcon.setAttribute('fill', '#333333'); 22995 } 22996 22997 showWishlistToast(true, product.title); 22998 popup.remove(); 22999 } 23000 }); 23001 } 23002 23003 categoryList.appendChild(categoryOption); 23004 }); 23005 23006 // Create "add new category" section 23007 const newCategorySection = document.createElement('div'); 23008 newCategorySection.style.borderTop = '1px solid #eee'; 23009 newCategorySection.style.paddingTop = '15px'; 23010 newCategorySection.style.marginTop = '10px'; 23011 23012 const newCategoryLabel = document.createElement('label'); 23013 newCategoryLabel.textContent = translations.createCategory; // Translate 23014 23015 const newCategoryInput = document.createElement('input'); 23016 newCategoryInput.type = 'text'; 23017 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 23018 23019 const createButton = document.createElement('button'); 23020 createButton.className = 'create-category-button'; 23021 createButton.textContent = translations.createAndAdd; // Translate 23022 23023 createButton.addEventListener('click', () => { 23024 const categoryName = newCategoryInput.value.trim(); 23025 if (categoryName) { 23026 const categoryId = createCategory(categoryName); 23027 const wasAdded = addToCategory(product, categoryId); 23028 23029 if (wasAdded) { 23030 // Update heart icon after successful addition 23031 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 23032 if (heartIcon) { 23033 heartIcon.setAttribute('fill', '#333333'); 23034 } 23035 23036 showWishlistToast(true, product.title); 23037 popup.remove(); 23038 } 23039 } 23040 }); 23041 23042 newCategorySection.appendChild(newCategoryLabel); 23043 newCategorySection.appendChild(newCategoryInput); 23044 newCategorySection.appendChild(createButton); 23045 23046 // Assemble popup 23047 content.appendChild(title); 23048 content.appendChild(closeButton); 23049 content.appendChild(categoryList); 23050 content.appendChild(newCategorySection); 23051 popup.appendChild(content); 23052 23053 // Add to document 23054 document.body.appendChild(popup); 23055 23056 // Focus the input 23057 setTimeout(() => { 23058 newCategoryInput.focus(); 23059 }, 100); 23060 23061 // Close when clicking outside content 23062 popup.addEventListener('click', (e) => { 23063 if (e.target === popup) { 23064 popup.remove(); 23065 } 23066 }); 23067 } 23068 23069 // Show a toast notification 23070 function showWishlistToast(added, productTitle) { 23071 // Create or get toast container 23072 let toastContainer = document.getElementById('wishlist-toast'); 23073 if (!toastContainer) { 23074 toastContainer = document.createElement('div'); 23075 toastContainer.id = 'wishlist-toast'; 23076 toastContainer.style.position = 'fixed'; 23077 toastContainer.style.bottom = '20px'; 23078 toastContainer.style.right = '20px'; 23079 toastContainer.style.zIndex = '9999'; 23080 document.body.appendChild(toastContainer); 23081 } 23082 23083 // Create toast 23084 const toast = document.createElement('div'); 23085 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 23086 toast.style.color = 'white'; 23087 toast.style.padding = '12px 20px'; 23088 toast.style.borderRadius = '0'; 23089 toast.style.marginTop = '10px'; 23090 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 23091 toast.style.transition = 'all 0.3s ease'; 23092 toast.style.opacity = '0'; 23093 toast.style.fontFamily = 'Montserrat, sans-serif'; 23094 23095 // Choose text based on action 23096 const lang = getWishlistLang(); 23097 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 23098 toast.textContent = added 23099 ? `${productTitle} ${translations.addedToWishlist}` // Translate 23100 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 23101 23102 // Add to container 23103 toastContainer.appendChild(toast); 23104 23105 // Animate in 23106 setTimeout(() => { 23107 toast.style.opacity = '1'; 23108 }, 10); 23109 23110 // Animate out and remove 23111 setTimeout(() => { 23112 toast.style.opacity = '0'; 23113 setTimeout(() => { 23114 toastContainer.removeChild(toast); 23115 }, 300); 23116 }, 3000); 23117 } 23118 23119 // Initialize wishlist buttons 23120 function initCardWishlistButtons() { 23121 const wishlistButtons = document.querySelectorAll('.card-wis
23121hlist-button'); 23122 23123 wishlistButtons.forEach(button => { 23124 // Skip if already initialized 23125 if (button.dataset.initializedWishlist === 'true') return; 23126 button.dataset.initializedWishlist = 'true'; 23127 23128 const productId = button.getAttribute('data-wishlist-product'); 23129 if (!productId) return; 23130 23131 // Get product details from the card 23132 const card = button.closest('.card-wrapper'); 23133 const productDetails = { 23134 id: productId, 23135 title: card.querySelector('.card__heading')?.textContent.trim() || '', 23136 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 23137 price: card.querySelector('.price')?.textContent.trim() || '', 23138 image: card.querySelector('img')?.src || '', 23139 url: card.querySelector('a[href*="/products/"]')?.href || '' 23140 }; 23141 23142 // Set initial state using global function 23143 const heartIcon = button.querySelector('path'); 23144 if (heartIcon) { 23145 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 23146 heartIcon.setAttribute('fill', '#333333'); 23147 } else { 23148 heartIcon.setAttribute('fill', 'none'); 23149 } 23150 } 23151 23152 // Add click handler 23153 button.addEventListener('click', function(e) { 23154 e.preventDefault(); 23155 e.stopPropagation(); 23156 e.stopImmediatePropagation(); 23157 toggleWishlistItem(productDetails); 23158 }); 23159 23160 // Prevent navigation on mousedown/touchstart 23161 button.addEventListener('mousedown', function(e) { 23162 e.preventDefault(); 23163 e.stopPropagation(); 23164 }); 23165 23166 button.addEventListener('touchstart', function(e) { 23167 e.preventDefault(); 23168 e.stopPropagation(); 23169 }); 23170 }); 23171 } 23172 23173 // Initialize the wishlist counter on page load 23174 const wishlist = getWishlist(); 23175 const totalItems = wishlist.categories.reduce((total, category) => { 23176 return total + category.items.length; 23177 }, 0); 23178 updateWishlistCounters(totalItems); 23179 23180 // Initialize on DOM ready 23181 if (document.readyState === 'loading') { 23182 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 23183 } else { 23184 initCardWishlistButtons(); 23185 } 23186 23187 // Reinitialize on Shopify section load 23188 document.addEventListener('shopify:section:load', function() { 23189 setTimeout(initCardWishlistButtons, 100); 23190 }); 23191 23192 // Listen for wishlist updates from other parts of the site 23193 document.addEventListener('wishlist:updated', function() { 23194 setTimeout(initCardWishlistButtons, 100); 23195 }); 23196 })(); 23197</script>
23197 23198 23199<!-- Price info icon styles --> 23200<style> 23201 /* Price container with icon */ 23202 .price-container-with-info { 23203 position: relative; 23204 display: flex; 23205 align-items: center; 23206 gap: 8px; 23207 } 23208 23209 /* Info icon - hidden by default, shown on card hover */ 23210 .price-info-icon { 23211 position: relative; 23212 display: inline-flex; 23213 align-items: center; 23214 justify-content: center; 23215 color: #666; 23216 cursor: help; 23217 opacity: 0; 23218 transition: opacity 0.3s ease; 23219 23220 padding: 4px; /* Add padding to increase clickable area */ 23221 min-width: 20px; /* Ensure minimum clickable area */ 23222 min-height: 20px; 23223 z-index: 15; /* Above everything else including compare button */ 23224 pointer-events: auto; /* Allow interaction */ 23225 } 23226 23227 /* Show icon on card hover */ 23228 .card-wrapper:hover .price-info-icon { 23229 opacity: 1; 23230 } 23231 23232 .price-info-icon svg { 23233 width: 14px; 23234 height: 14px; 23235 stroke-width: 1.5; 23236 } 23237 23238 /* Tooltip styles */ 23239 .price-info-tooltip { 23240 position: absolute; 23241 bottom: calc(100% + 6px); 23242 top: auto; 23243 left: 0; 23244 transform: none; 23245 min-width: 310px; 23246 background: #FFFFFF; 23247 color: #232323; 23248 border: 1px solid #EEEEEE; 23249 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 23250 padding: 12px 16px; 23251 font-size: 13px; 23252 font-family: 'Montserrat', sans-serif; 23253 z-index: 10000; 23254 opacity: 0; 23255 transition: opacity 0.18s; 23256 white-space: pre-line; 23257 text-align: left; 23258 border-radius: 0; 23259 visibility: hidden; 23260 pointer-events: none; 23261 } 23262 23263 /* Show tooltip on icon hover */ 23264 .price-info-icon:hover .price-info-tooltip { 23265 visibility: visible; 23266 opacity: 1; 23267 } 23268 23269 /* Ensure tooltip is never clipped */ 23270 .price-container-with-info, 23271 .card-information, 23272 .card__content { 23273 overflow: visible !important; 23274 } 23275 23276 /* Mobile adjustments */ 23277 @media screen and (max-width: 768px) { 23278 .price-info-tooltip { 23279 min-width: 200px; 23280 font-size: 12px; 23281 padding: 10px 12px; 23282 } 23283 } 23284</style> 23285 23286 </li> 23287 <li 23288 class="grid__item" 23289 23290 > 23291 23292<div class="card-wrapper product-card-wrapper underline-links-hover"> 23293 23294 <div 23295 class=" 23296 card card--standard 23297 card--media 23298 23299 23300 23301 23302 23303 " 23304 style="--ratio-percent: 100.0%;" 23305 data-product-id="9746921161002" 23306 data-description="Luminaria para exteriores de pie para las fuentes de luz de bajo consumo con casquillo E27. Las cortinas están hechas de vidrio satinado." 23307 23308 data-ip-rate="IP44" 23309 23310 data-variant-id="52387877683498" 23311 data-price="158.00 EUR" 23312 data-compare-at-price="" 23313 data-available="true" 23314 data-barcode="8595685402574" 23315 data-ip-rate="IP44" 23316 data-lumens="" 23317 data-power-source="" 23318 data-watt="15.0" 23319 data-kelvin="" 23320 data-light-color="" 23321 data-diameter="" 23322 data-weight-netto="2000.0" 23323 data-weight-unit="g" 23324 data-mounting-hole-size="" 23325 data-recess-depth="" 23326 data-suspension-lenght="" 23327 data-turn-angle="" 23328 data-tilt-angle="" 23329 data-switch="" 23330 data-socket="LED E27" 23331 data-light-source-recomended="G13026" 23332 data-height="65" 23333 data-length="10.8" 23334 data-Length="" 23335 > 23336 <div 23337 class="card__inner color-scheme-2 gradient ratio" 23338 style="--ratio-percent: 100.0%;" 23339 > 23340 23341 23342<div class="ip-rate-badge"> 23343 <span>IP44</span> 23344 </div><div class="card__media"> 23345 <a class="card__media-link-content" href="/products/ponder-65-bollard-lamp" aria-label="PONDER 65"> 23346 <div class="media media--transparent media--hover-effect"> 23347 23348 <img 23349 class="product-image motion-reduce" 23350 srcset="//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=165 165w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=360 360w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=533 533w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=720 720w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=940 940w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=1066 1066w,//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925 3162w 23351 " 23352 src="//rendl.es/cdn/shop/files/r10433-1.jpg?v=1770945925&width=533" 23353 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 23354 alt="RENDL outdoor lamp PONDER 65 bollard black 230V LED E27 15W IP44 R10433 1" 23355 23356 loading="lazy" 23357 23358 width="3162" 23359 height="3162" 23360 > 23361 23362<img 23363 class="product-image motion-reduce" 23364 srcset="//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=165 165w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=360 360w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=533 533w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=720 720w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=940 940w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=1066 1066w,//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804 3162w 23365 " 23366 src="//rendl.es/cdn/shop/files/r10433-3.jpg?v=1783735804&width=533" 23367 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 23368 alt="" 23369 loading="lazy" 23370 width="3162" 23371 height="3162" 23372 ></div> 23373 </a> 23374 23375<div class="card-media-icons"><div class="dimmable-icon"> 23376 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Dimmable.svg?v=1753944550" alt="Dimmable" width="14" height="14"> 23377 <div class="dimmable-tooltip">Atenuable con fuente de luz adecuada</div> 23378 </div></div><div class="card-variant-swatches"><a 23379 class="card-variant-swatch" 23380 href="/products/ponder-65-bollard-lamp?variant=52387877683498" 23381 23382 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 23383 23384 aria-label="negro" 23385 >
23386 <span class="card-variant-swatch-tooltip">negro</span></a></div></div><div class="card__content"> 23387 <div class="card__information"> 23388 <h3 23389 class="card__heading" 23390 23391 > 23392 <a 23393 href="/products/ponder-65-bollard-lamp" 23394 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746921161002" 23395 class="full-unstyled-link" 23396 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746921161002 NoMediaStandardBadge-template--28113427169578__product-grid-9746921161002" 23397 > 23398 PONDER 65 23399 </a> 23400 </h3> 23401 </div> 23402 <div class="card__badge bottom left"></div> 23403 </div> 23404 </div> 23405 <div class="card__content"> 23406 <div class="card__information"> 23407 <h3 23408 class="card__heading h5" 23409 23410 id="title-template--28113427169578__product-grid-9746921161002" 23411 23412 > 23413 <a 23414 href="/products/ponder-65-bollard-lamp" 23415 id="CardLink-template--28113427169578__product-grid-9746921161002" 23416 class="full-unstyled-link" 23417 aria-labelledby="CardLink-template--28113427169578__product-grid-9746921161002 Badge-template--28113427169578__product-grid-9746921161002" 23418 > 23419 PONDER 65 23420 </a> 23421 </h3><div class="card__description"> 23422 Luminaria para exteriores de pie para las fuentes de luz de bajo consumo con casquillo E27. Las cortinas están hechas de vidrio satinado. 23423 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 23424 23425<div 23426 class=" 23427 price " 23428 > 23429 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 23430 <span class="price-item price-item--regular"> 23431 158.00 EUR 23432 </span></div> 23433 <div class="price__sale"> 23434 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 23435 <span> 23436 <s class="price-item price-item--regular"> 23437 23438 23439 23440 </s> 23441 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 23442 <span class="price-item price-item--sale price-item--last"> 23443 158.00 EUR 23444 </span> 23445 </div> 23446 <small class="unit-price caption hidden"> 23447 <span class="visually-hidden">Precio unitario</span> 23448 <span class="price-item price-item--last"> 23449 <span></span> 23450 <span aria-hidden="true">/</span> 23451 <span class="visually-hidden"> por </span> 23452 <span> 23453 </span> 23454 </span> 23455 </small> 23456 </div></div> 23457 23458 23459</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 23460 <button class="compare-button-simple" 23461 data-product-id="9746921161002" 23462 data-product-title="PONDER 65" 23463 data-product-handle="ponder-65-bollard-lamp"> 23464 <span class="compare-button-content"> 23465 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 23466 <span class="compare-text" data-translate="compare">compare</span> 23467 </span> 23468 <span class="compare-spinner-small"> 23469 <!-- Small spinner for button --> 23470 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 23471 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 23472 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 23473 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
23473inite"/> 23474 </path> 23475 </svg> 23476 </span> 23477 </button> 23478 23479 <!-- Wishlist button next to compare button --> 23480 <button type="button" class="card-wishlist-button" data-wishlist-product="9746921161002"> 23481 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 23482 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 23483 </svg> 23484 </button> 23485 </div></div> 23486 </div> 23487 23488 23489 23490 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746921161002" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 23491 type="hidden" 23492 name="id" 23493 value="52387877683498" 23494 class="product-variant-id" 23495 23496 > 23497 <button 23498 id="quick-add-template--28113427169578__product-grid9746921161002-submit" 23499 type="submit" 23500 name="add" 23501 class="quick-add__submit button button--full-width button--secondary" 23502 aria-haspopup="dialog" 23503 aria-labelledby="quick-add-template--28113427169578__product-grid9746921161002-submit title-template--28113427169578__product-grid-9746921161002" 23504 aria-live="polite" 23505 data-sold-out-message="true" 23506 23507 > 23508 <span>Agregar al carrito 23509</span> 23510 <span class="sold-out-message hidden"> 23511 En camino 23512 </span> 23513 23514<div class="loading__spinner hidden"> 23515 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 23516 23517</div> 23518</button><input type="hidden" name="product-id" value="9746921161002" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 23519 23520 <div class="card__badge bottom left"></div> 23521 </div> 23522 </div> 23523 </div>
23523<script> 23524 // Initialize global compare translations only once 23525 if (typeof window.compareButtonTranslations === 'undefined') { 23526 window.compareButtonTranslations = { 23527 compare: { 23528 en: 'compare', 23529 cs: 'porovnat', 23530 sk: 'porovnaÅ¥', 23531 de: 'vergleichen', 23532 at: 'vergleichen', 23533 ch: 'vergleichen', 23534 fr: 'comparer', 23535 be: 'comparer', 23536 lu: 'comparer', 23537 it: 'confronta', 23538 es: 'comparar', 23539 nl: 'vergelijken', 23540 pl: 'porównaj', 23541 hu: 'összehasonlÃt', 23542 ro: 'comparÄ', 23543 bg: 'ÑÑавни', 23544 hr: 'usporedi', 23545 fi: 'vertaile', 23546 gr: 'ÏÏγκÏιÏη', 23547 el: 'ÏÏγκÏιÏη', 23548 no: 'sammenlign', 23549 'pt-PT': 'comparar', 23550 sl: 'primerjaj', 23551 sv: 'jämför', 23552 lv: 'salÄ«dzinÄt', 23553 lt: 'palyginti', 23554 ee: 'võrdle', 23555 dk: 'sammenlign', 23556 gb: 'compare', 23557 uk: 'compare', 23558 ie: 'compare', 23559 us: 'compare', 23560 ca: 'compare', 23561 au: 'compare', 23562 nz: 'compare', 23563 ru: 'ÑÑавниÑÑ' 23564 }, 23565 remove: { 23566 en: 'remove', 23567 cs: 'odebrat', 23568 sk: 'odobraÅ¥', 23569 de: 'entfernen', 23570 at: 'entfernen', 23571 ch: 'entfernen', 23572 fr: 'supprimer', 23573 be: 'supprimer', 23574 lu: 'supprimer', 23575 it: 'rimuovi', 23576 es: 'eliminar', 23577 nl: 'verwijderen', 23578 pl: 'usuÅ', 23579 hu: 'eltávolÃt', 23580 ro: 'eliminÄ', 23581 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 23582 hr: 'ukloni', 23583 fi: 'poista', 23584 gr: 'αÏαίÏεÏη', 23585 el: 'αÏαίÏεÏη', 23586 no: 'fjern', 23587 'pt-PT': 'remover', 23588 sl: 'odstrani', 23589 sv: 'ta bort', 23590 lv: 'noÅemt', 23591 lt: 'paÅ¡alinti', 23592 ee: 'eemalda', 23593 dk: 'fjern', 23594 gb: 'remove', 23595 uk: 'remove', 23596 ie: 'remove', 23597 us: 'remove', 23598 ca: 'remove', 23599 au: 'remove', 23600 nz: 'remove', 23601 ru: 'ÑдалиÑÑ' 23602 }, 23603 added: { 23604 en: 'Added!', 23605 cs: 'PÅidáno!', 23606 sk: 'Pridané!', 23607 de: 'Hinzugefügt!', 23608 at: 'Hinzugefügt!', 23609 ch: 'Hinzugefügt!', 23610 fr: 'Ajouté!', 23611 be: 'Ajouté!', 23612 lu: 'Ajouté!', 23613 it: 'Aggiunto!', 23614 es: '¡Añadido!', 23615 nl: 'Toegevoegd!', 23616 pl: 'Dodano!', 23617 hu: 'Hozzáadva!', 23618 ro: 'AdÄugat!', 23619 bg: 'Ðобавено!', 23620 hr: 'Dodano!', 23621 fi: 'Lisätty!', 23622 gr: 'Î ÏοÏÏÎθηκε!', 23623 el: 'Î ÏοÏÏÎθηκε!', 23624 no: 'Lagt til!', 23625 'pt-PT': 'Adicionado!', 23626 sl: 'Dodano!', 23627 sv: 'Tillagd!', 23628 lv: 'Pievienots!', 23629 lt: 'PridÄta!', 23630 ee: 'Lisatud!', 23631 dk: 'Tilføjet!', 23632 gb: 'Added!', 23633 uk: 'Added!', 23634 ie: 'Added!', 23635 us: 'Added!', 23636 ca: 'Added!', 23637 au: 'Added!', 23638 nz: 'Added!', 23639 ru: 'Ðобавлено!' 23640 }, 23641 removed: { 23642 en: 'Removed!', 23643 cs: 'Odebráno!', 23644 sk: 'Odobrané!', 23645 de: 'Entfernt!', 23646 at: 'Entfernt!', 23647 ch: 'Entfernt!', 23648 fr: 'Supprimé!', 23649 be: 'Supprimé!', 23650 lu: 'Supprimé!', 23651 it: 'Rimosso!', 23652 es: '¡Eliminado!', 23653 nl: 'Verwijderd!', 23654 pl: 'UsuniÄto!', 23655 hu: 'EltávolÃtva!', 23656 ro: 'Eliminat!', 23657 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 23658 hr: 'Uklonjeno!', 23659 fi: 'Poistettu!', 23660 gr: 'ÎÏαιÏÎθηκε!', 23661 el: 'ÎÏαιÏÎθηκε!', 23662 no: 'Fjernet!', 23663 'pt-PT': 'Removido!', 23664 sl: 'Odstranjeno!', 23665 sv: 'Borttaget!', 23666 lv: 'NoÅemts!', 23667 lt: 'PaÅ¡alinta!', 23668 ee: 'Eemaldatud!', 23669 dk: 'Fjernet!', 23670 gb: 'Removed!', 23671 uk: 'Removed!', 23672 ie: 'Removed!', 23673 us: 'Removed!', 23674 ca: 'Removed!', 23675 au: 'Removed!', 23676 nz: 'Removed!', 23677 ru: 'Удалено!' 23678 } 23679 }; 23680 23681 // Tooltip translations for price info 23682 window.tooltipTranslations = { 23683 tooltipPrice: { 23684 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23685 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 23686 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 23687 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 23688 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 23689 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 23690 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 23691 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 23692 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 23693 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 23694 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 23695 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 23696 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 23697 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 23698 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 23699 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 23700 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 23701 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 23702 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 23703 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 23704 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 23705 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 23706 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 23707 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 23708 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
23708iks atskaitÄ«ts, ja piemÄrojams.", 23709 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 23710 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 23711 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 23712 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23713 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23714 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23715 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23716 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23717 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23718 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 23719 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 23720 }, 23721 tooltipOutlet: { 23722 en: "We do not provide additional wholesale discounts on outlet products.", 23723 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 23724 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 23725 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 23726 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 23727 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 23728 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 23729 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 23730 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 23731 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 23732 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 23733 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 23734 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 23735 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 23736 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 23737 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 23738 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 23739 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 23740 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 23741 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 23742 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 23743 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 23744 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 23745 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 23746 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 23747 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 23748 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 23749 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 23750 gb: "We do not provide additional wholesale discounts on outlet products.", 23751 uk: "We do not provide additional wholesale discounts on outlet products.", 23752 ie: "We do not provide additional wholesale discounts on outlet products.", 23753 us: "We do not provide additional wholesale discounts on outlet products.", 23754 ca: "We do not provide additional wholesale discounts on outlet products.", 23755 au: "We do not provide additional wholesale discounts on outlet products.", 23756 nz: "We do not provide additional wholesale discounts on outlet products.", 23757 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 23758 } 23759 }; 23760 23761 // Get current locale from document 23762 window.currentLocale = document.documentElement.lang || 'en'; 23763 23764 // Function to translate compare buttons 23765 window.translateCompareButtons = function() { 23766 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
23767 compareTexts.forEach(function(textEl) { 23768 const button = textEl.closest('.compare-button-simple'); 23769 const isInComparison = button && button.hasAttribute('data-in-comparison'); 23770 23771 if (isInComparison) { 23772 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 23773 textEl.textContent = translation; 23774 } else { 23775 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 23776 textEl.textContent = translation; 23777 } 23778 }); 23779 }; 23780 23781 // Function to format price with space as thousands separator (only for tooltip) 23782 function formatTooltipPrice(price) { 23783 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 23784 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 23785 } 23786 23787 // Function to translate tooltips with price 23788 window.translateTooltips = function() { 23789 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 23790 tooltips.forEach(function(tooltip) { 23791 const icon = tooltip.closest('.price-info-icon'); 23792 if (icon) { 23793 const status = icon.getAttribute('data-status'); 23794 // Check if this is an outlet product 23795 if (status === 'outlet') { 23796 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 23797 tooltip.textContent = translation; 23798 return; // Exit early for outlet products 23799 } 23800 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 23801 // Get wholesale price from the actual price display on the card 23802 const card = icon.closest('[data-product-id]'); 23803 let wholesalePrice = ''; 23804 if (card) { 23805 // Find the main price element on the card 23806 const priceElement = card.querySelector('.price .price-item--regular'); 23807 if (priceElement) { 23808 wholesalePrice = priceElement.textContent.trim(); 23809 } 23810 } 23811 if (retailPrice && wholesalePrice) { 23812 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 23813 let formattedRetailPrice = formatTooltipPrice(retailPrice); 23814 let formattedWholesalePrice = wholesalePrice; 23815 if (window.formatPriceText) { 23816 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 23817 } 23818 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 23819 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 23820 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 23821 tooltip.textContent = translatedText; 23822 } 23823 } 23824 }); 23825 }; 23826 23827 // Function to update button state based on comparison status 23828 window.updateCompareButtonState = function(productId, isInComparison) { 23829 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 23830 buttons.forEach(function(button) { 23831 const buttonContainer = button.closest('.compare-button-container'); 23832 const compareText = button.querySelector('.compare-text'); 23833 23834 if (isInComparison) { 23835 button.setAttribute('data-in-comparison', 'true'); 23836 button.classList.add('in-comparison'); 23837 buttonContainer.classList.add('in-comparison'); 23838 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 23839 compareText.textContent = removeText; 23840 } else { 23841 button.removeAttribute('data-in-comparison'); 23842 button.classList.remove('in-comparison'); 23843 buttonContainer.classList.remove('in-comparison'); 23844 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 23845 compareText.textContent = compareTextTranslation; 23846 } 23847 }); 23848 }; 23849 } 23850 23851 // Initialize compare button states based on localStorage 23852 window.initializeCompareButtonStates = function() {
23853 if (typeof window.RendlCompare !== 'undefined') { 23854 const compareItems = window.RendlCompare.getItems(); 23855 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 23856 const productId = button.getAttribute('data-product-id'); 23857 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 23858 window.updateCompareButtonState(productId, isInComparison); 23859 }); 23860 } 23861 }; 23862 23863 // Compare button UI animation - the actual functionality is handled by compare-system.js 23864 document.addEventListener('DOMContentLoaded', function() { 23865 // Apply translations on page load 23866 if (window.translateCompareButtons) { 23867 window.translateCompareButtons(); 23868 } 23869 23870 // Initialize button states based on comparison data 23871 setTimeout(function() { 23872 if (window.initializeCompareButtonStates) { 23873 window.initializeCompareButtonStates(); 23874 } 23875 }, 100); // Small delay to ensure compare system is loaded 23876 23877 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 23878 // Skip if already has event listener 23879 if (button.hasAttribute('data-compare-initialized')) { 23880 return; 23881 } 23882 button.setAttribute('data-compare-initialized', 'true'); 23883 23884 button.addEventListener('click', function(e) { 23885 var buttonContainer = button.closest('.compare-button-container'); 23886 var compareText = button.querySelector('.compare-text'); 23887 var isInComparison = button.hasAttribute('data-in-comparison'); 23888 var productId = button.getAttribute('data-product-id'); 23889 23890 // Prevent multiple clicks during loading 23891 if (button.classList.contains('loading')) { 23892 return; 23893 } 23894 23895 // Make button always visible during the process 23896 buttonContainer.classList.add('active'); 23897 23898 // Add loading class to show spinner 23899 button.classList.add('loading'); 23900 23901 // UI feedback timing 23902 setTimeout(function() { 23903 // Remove loading class and show success message 23904 button.classList.remove('loading'); 23905 button.classList.add('success'); 23906 23907 if (isInComparison) { 23908 // Removing from comparison 23909 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 23910 23911 // Update button state after removal 23912 setTimeout(function() { 23913 button.classList.remove('success'); 23914 window.updateCompareButtonState(productId, false); 23915 buttonContainer.classList.remove('active'); 23916 }, 1500); 23917 } else { 23918 // Adding to comparison 23919 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 23920 23921 // Update button state after addition 23922 setTimeout(function() { 23923 button.classList.remove('success'); 23924 window.updateCompareButtonState(productId, true); 23925 buttonContainer.classList.remove('active'); 23926 }, 1500); 23927 } 23928 }, 1200); 23929 }); 23930 }); 23931 23932 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 23933 setTimeout(function() { 23934 if (window.translateTooltips) { 23935 window.translateTooltips(); 23936 } 23937 }, 100); 23938 }); 23939 23940 // Ensure compare button states are initialized after RendlCompare is available 23941 document.addEventListener('DOMContentLoaded', function() { 23942 function tryInitCompareButtons() { 23943 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 23944 window.initializeCompareButtonStates(); 23945 } else { 23946 setTimeout(tryInitCompareButtons, 100); 23947 } 23948 } 23949 tryInitCompareButtons(); 23950 }); 23951 23952 // Self-contained wishlist functionality for card-product 23953 (function() { 23954 // Wishlist translations 23955 var wishlistTranslations = { 23956 'en': { 23957 addToWishlist: 'Add to My Favorites', 23958 createCategory: 'Create new category:', 23959 categoryPlaceholder: 'Category name', 23960 createAndAdd: 'Create & Add Item', 23961 alreadyAdded: '(Already added)', 23962 addedToWishlist: 'added to My Favorites', 23963 removedFromWishlist: 'removed from My Favorites', 23964 allFavorites: 'All Favorites' 23965 }, 23966 'cs': { 23967 addToWishlist: 'PÅidat do oblÃbených', 23968 createCategory: 'VytvoÅit novou skupinu:', 23969 categoryPlaceholder: 'Název nové skupiny', 23970 createAndAdd: 'VytvoÅit a pÅidat skupinu', 23971 alreadyAdded: '(Již pÅidáno)', 23972 addedToWishlist: 'pÅidáno do oblÃbených', 23973 removedFromWishlist: 'odebráno z oblÃbených', 23974 allFavorites: 'VÅ¡echny oblÃbené' 23975 }, 23976 'sk': { 23977 addToWishlist: 'PridaÅ¥ do obľúbených', 23978 createCategory: 'VytvoriÅ¥ novú kategóriu:', 23979 categoryPlaceholder: 'Názov kategórie', 23980 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 23981 alreadyAdded: '(Už pridané)', 23982 addedToWishlist: 'pridané do obľúbených', 23983 removedFromWishlist: 'odstránené z obľúbených', 23984 allFavorites: 'VÅ¡etky obľúbené' 23985 }, 23986 'de': { 23987 addToWishlist: 'Zu meinen Favoriten hinzufügen', 23988 createCategory: 'Neue Kategorie erstellen:', 23989 categoryPlaceholder: 'Kategoriename', 23990 createAndAdd: 'Erstellen & hinzufügen', 23991 alreadyAdded: '(Bereits hinzugefügt)', 23992 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 23993 removedFromWishlist: 'aus meinen Favoriten entfernt', 23994 allFavorites: 'Alle Favoriten' 23995 }, 23996 'fr': { 23997 addToWishlist: 'Ajouter à mes favoris', 23998 createCategory: 'Créer une nouvelle catégorie :', 23999 categoryPlaceholder: 'Nom de la catégorie', 24000 createAndAdd: 'Créer et ajouter', 24001 alreadyAdded: '(Déjà ajouté)', 24002 addedToWishlist: 'ajouté à mes favoris', 24003 removedFromWishlist: 'retiré de mes favoris', 24004 allFavorites: 'Tous les favoris' 24005 }, 24006 'it': { 24007 addToWishlist: 'Aggiungi ai preferiti', 24008 createCategory: 'Crea nuova categoria:', 24009 categoryPlaceholder: 'Nome categoria', 24010 createAndAdd: 'Crea e aggiungi', 24011 alreadyAdded: '(Già aggiunto)', 24012 addedToWishlist: 'aggiunto ai preferiti', 24013 removedFromWishlist: 'rimosso dai preferiti', 24014 allFavorites: 'Tutti i preferiti' 24015 }, 24016 'es': { 24017 addToWishlist: 'Añadir a mis favoritos', 24018 createCategory: 'Crear nueva categorÃa:', 24019 categoryPlaceholder: 'Nombre de la categorÃa', 24020 createAndAdd: 'Crear y añadir', 24021 alreadyAdded: '(Ya añadido)', 24022 addedToWishlist: 'añadido a mis favoritos', 24023 removedFromWishlist: 'eliminado de mis favoritos', 24024 allFavorites: 'Todos los favoritos' 24025 }, 24026 'nl': { 24027 addToWishlist: 'Toevoegen aan mijn favorieten', 24028 createCategory: 'Nieuwe categorie aanmaken:', 24029 categoryPlaceholder: 'Categorienaam', 24030 createAndAdd: 'Aanmaken & toevoegen', 24031 alreadyAdded: '(Al toegevoegd)', 24032 addedToWishlist: 'toegevoegd aan mijn favorieten', 24033 removedFromWishlist: 'verwijderd uit mijn favorieten', 24034 allFavorites: 'Alle favorieten' 24035 }, 24036 'pl': { 24037 addToWishlist: 'Dodaj do ulubionych', 24038 createCategory: 'Utwórz nowÄ kategoriÄ:', 24039 categoryPlaceholder: 'Nazwa kategorii', 24040 createAndAdd: 'Utwórz i dodaj', 24041 alreadyAdded: '(Już dodane)', 24042 addedToWishlist: 'dodano do ulubionych', 24043 removedFromWishlist: 'usuniÄto z ulubionych', 24044 allFavorites: 'Wszystkie ulubione' 24045 }, 24046 'hu': { 24047 addToWishlist: 'Hozzáadás a kedvencekhez', 24048 createCategory: 'Ãj kategória létrehozása:', 24049 categoryPlaceholder: 'Kategória neve', 24050 createAndAdd: 'Létrehozás és hozzáadás', 24051 alreadyAdded: '(Már hozzáadva)', 24052 addedToWishlist: 'hozzáadva a kedvencekhez', 24053 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 24054 allFavorites: 'Minden kedvenc' 24055 }, 24056 'ro': { 24057 addToWishlist: 'AdaugÄ la favorite', 24058 createCategory: 'CreeazÄ o nouÄ categorie:', 24059 categoryPlaceholder: 'Nume categorie', 24060 createAndAdd: 'CreeazÄ Èi adaugÄ', 24061 alreadyAdded: '(Deja adÄugat)', 24062 addedToWishlist: 'adÄugat la favorite', 24063 removedFromWishlist: 'eliminat din favorite', 24064 allFavorites: 'Toate preferinÈele' 24065 }, 24066 'bg': { 24067 addToWishlist: 'Ðобави в лÑбими', 24068 createCategory: 'СÑздай нова каÑегоÑиÑ:', 24069 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 24070 createAndAdd: 'СÑздай и добави', 24071 alreadyAdded: '(ÐеÑе добавено)', 24072 addedToWishlist: 'добавено в лÑбими', 24073 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 24074 allFavorites: 'ÐÑиÑки лÑбими' 24075 }, 24076 'hr': { 24077 addToWishlist: 'Dodaj u favorite', 24078 createCategory: 'Kreiraj novu kategoriju:', 24079 categoryPlaceholder: 'Naziv kategorije', 24080 createAndAdd: 'Kreiraj i dodaj', 24081 alreadyAdded: '(VeÄ dodano)', 24082 addedToWishlist: 'dodano u favorite', 24083 removedFromWishlist: 'uklonjeno iz favorita', 24084 allFavorites: 'Sva omiljena' 24085 }, 24086 'fi': { 24087 addToWishlist: 'Lisää suosikkeihin', 24088 createCategory: 'Luo uusi kategoria:', 24089 categoryPlaceholder: 'Kategorian nimi', 24090 createAndAdd: 'Luo ja lisää', 24091 alreadyAdded: '(Jo lisätty)', 24092 addedToWishlist: 'lisätty suosikkeihin', 24093 removedFromWishlist: 'poistettu suosikeista',
24094 allFavorites: 'Kaikki suosikit' 24095 }, 24096 'gr': { 24097 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 24098 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 24099 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 24100 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 24101 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 24102 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 24103 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 24104 allFavorites: 'Îλα Ïα αγαÏημÎνα' 24105 }, 24106 'no': { 24107 addToWishlist: 'Legg til i favoritter', 24108 createCategory: 'Opprett ny kategori:', 24109 categoryPlaceholder: 'Kategorinavn', 24110 createAndAdd: 'Opprett og legg til', 24111 alreadyAdded: '(Allerede lagt til)', 24112 addedToWishlist: 'lagt til i favoritter', 24113 removedFromWishlist: 'fjernet fra favoritter', 24114 allFavorites: 'Alle favoritter' 24115 }, 24116 'pt-PT': { 24117 addToWishlist: 'Adicionar aos favoritos', 24118 createCategory: 'Criar nova categoria:', 24119 categoryPlaceholder: 'Nome da categoria', 24120 createAndAdd: 'Criar e adicionar', 24121 alreadyAdded: '(Já adicionado)', 24122 addedToWishlist: 'adicionado aos favoritos', 24123 removedFromWishlist: 'removido dos favoritos', 24124 allFavorites: 'Todos os favoritos' 24125 }, 24126 'sl': { 24127 addToWishlist: 'Dodaj med priljubljene', 24128 createCategory: 'Ustvari novo kategorijo:', 24129 categoryPlaceholder: 'Ime kategorije', 24130 createAndAdd: 'Ustvari in dodaj', 24131 alreadyAdded: '(Že dodano)', 24132 addedToWishlist: 'dodano med priljubljene', 24133 removedFromWishlist: 'odstranjeno iz priljubljenih', 24134 allFavorites: 'Vsi priljubljeni' 24135 }, 24136 'sv': { 24137 addToWishlist: 'Lägg till i favoriter', 24138 createCategory: 'Skapa ny kategori:', 24139 categoryPlaceholder: 'Kategorinamn', 24140 createAndAdd: 'Skapa och lägg till', 24141 alreadyAdded: '(Redan tillagd)', 24142 addedToWishlist: 'tillagd i favoriter', 24143 removedFromWishlist: 'borttagen frÃ¥n favoriter', 24144 allFavorites: 'Alla favoriter' 24145 }, 24146 'lv': { 24147 addToWishlist: 'Pievienot favorÄ«tiem', 24148 createCategory: 'Izveidot jaunu kategoriju:', 24149 categoryPlaceholder: 'Kategorijas nosaukums', 24150 createAndAdd: 'Izveidot un pievienot', 24151 alreadyAdded: '(Jau pievienots)', 24152 addedToWishlist: 'pievienots favorÄ«tiem', 24153 removedFromWishlist: 'noÅemts no favorÄ«tiem', 24154 allFavorites: 'Visas favorÄ«tus' 24155 }, 24156 'lt': { 24157 addToWishlist: 'PridÄti į mÄgstamiausius', 24158 createCategory: 'Sukurti naujÄ kategorijÄ :', 24159 categoryPlaceholder: 'Kategorijos pavadinimas', 24160 createAndAdd: 'Sukurti ir pridÄti', 24161 alreadyAdded: '(Jau pridÄta)', 24162 addedToWishlist: 'pridÄta į mÄgstamiausius', 24163 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 24164 allFavorites: 'Visos mÄgstamiausios' 24165 }, 24166 'ee': { 24167 addToWishlist: 'Lisa lemmikutesse', 24168 createCategory: 'Loo uus kategooria:', 24169 categoryPlaceholder: 'Kategooria nimi', 24170 createAndAdd: 'Loo ja lisa', 24171 alreadyAdded: '(Juba lisatud)', 24172 addedToWishlist: 'lisatud lemmikutesse', 24173 removedFromWishlist: 'eemaldatud lemmikutest', 24174 allFavorites: 'Kõik lemmikud' 24175 }, 24176 'dk': { 24177 addToWishlist: 'Tilføj til favoritter', 24178 createCategory: 'Opret ny kategori:', 24179 categoryPlaceholder: 'Kategorinavn', 24180 createAndAdd: 'Opret og tilføj', 24181 alreadyAdded: '(Allerede tilføjet)', 24182 addedToWishlist: 'tilføjet til favoritter', 24183 removedFromWishlist: 'fjernet fra favoritter', 24184 allFavorites: 'Alle favoritter' 24185 } 24186 }; 24187 24188 function getWishlistLang() { 24189 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 24190 // Normalize for region codes (e.g., pt-PT, sl) 24191 if (lang.startsWith('pt-PT')) return 'pt-PT'; 24192 if (lang.startsWith('sl')) return 'sl'; 24193 if (lang.startsWith('cs')) return 'cs'; 24194 if (lang.startsWith('sk')) return 'sk'; 24195 if (lang.startsWith('de')) return 'de'; 24196 if (lang.startsWith('fr')) return 'fr'; 24197 if (lang.startsWith('it')) return 'it'; 24198 if (lang.startsWith('es')) return 'es'; 24199 if (lang.startsWith('nl')) return 'nl'; 24200 if (lang.startsWith('pl')) return 'pl'; 24201 if (lang.startsWith('hu')) return 'hu'; 24202 if (lang.startsWith('ro')) return 'ro'; 24203 if (lang.startsWith('bg')) return 'bg'; 24204 if (lang.startsWith('hr')) return 'hr'; 24205 if (lang.startsWith('fi')) return 'fi'; 24206 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 24207 if (lang.startsWith('no')) return 'no'; 24208 if (lang.startsWith('sv')) return 'sv'; 24209 if (lang.startsWith('lv')) return 'lv'; 24210 if (lang.startsWith('lt')) return 'lt'; 24211 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 24212 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 24213 return 'en'; 24214 } 24215 24216 // Get or initialize the wishlist array in localStorage 24217 function getWishlist() { 24218 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 24219 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 24220 categories: [ 24221 { 24222 id: 'all-favorites', 24223 name: 'All Favorites', 24224 items: [] 24225 } 24226 ], 24227 version: 2 24228 }; 24229 24230 // Handle migration from old format (array of items) to new format (categories) 24231 if (Array.isArray(wishlist)) { 24232 return { 24233 categories: [ 24234 { 24235 id: 'all-favorites', 24236 name: 'All Favorites', 24237 items: wishlist 24238 } 24239 ], 24240 version: 2 24241 }; 24242 } 24243 24244 return wishlist; 24245 } 24246 24247 // Save wishlist to localStorage 24248 function saveWishlist(wishlist) { 24249 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 24250 // Dispatch an event so other parts of the site can react to wishlist changes 24251 document.dispatchEvent(new CustomEvent('wishlist:updated', { 24252 detail: { wishlist: wishlist } 24253 })); 24254 24255 // Count total items across all categories 24256 const totalItems = wishlist.categories.reduce((total, category) => { 24257 return total + category.items.length; 24258 }, 0); 24259 24260 // Update all wishlist counters 24261 updateWishlistCounters(totalItems); 24262 } 24263 24264 // Update all wishlist counters on the page 24265 function updateWishlistCounters(count) { 24266 const counters = document.querySelectorAll('.wishlist-count');
24267 counters.forEach(counter => { 24268 counter.textContent = count; 24269 24270 // If the counter is hidden and count > 0, show it 24271 if (count > 0 && counter.hasAttribute('hidden')) { 24272 counter.removeAttribute('hidden'); 24273 } 24274 // If the counter is visible and count = 0, hide it 24275 else if (count === 0 && !counter.hasAttribute('hidden')) { 24276 counter.setAttribute('hidden', 'true'); 24277 } 24278 }); 24279 } 24280 24281 // Check if a product is in the wishlist (in any category) 24282 function isInWishlist(productId) { 24283 const wishlist = getWishlist(); 24284 return wishlist.categories.some(category => 24285 category.items.some(item => item.id === productId) 24286 ); 24287 } 24288 24289 // Get all categories 24290 function getCategories() { 24291 return getWishlist().categories; 24292 } 24293 24294 // Create a new category 24295 function createCategory(name) { 24296 const wishlist = getWishlist(); 24297 const categoryId = 'category-' + Date.now(); 24298 24299 wishlist.categories.push({ 24300 id: categoryId, 24301 name: name, 24302 items: [] 24303 }); 24304 24305 saveWishlist(wishlist); 24306 return categoryId; 24307 } 24308 24309 // Add a product to a specific category 24310 function addToCategory(product, categoryId) { 24311 const wishlist = getWishlist(); 24312 const category = wishlist.categories.find(cat => cat.id === categoryId); 24313 24314 if (!category) return false; 24315 24316 // Check if product already exists in ANY category (not just this one) 24317 if (isInWishlist(product.id)) { 24318 return false; // Product already in wishlist 24319 } 24320 24321 // Add product to category 24322 category.items.push(product); 24323 saveWishlist(wishlist); 24324 24325 // Dispatch event for global sync 24326 document.dispatchEvent(new CustomEvent('wishlist:updated', { 24327 detail: { productId: product.id, added: true } 24328 })); 24329 24330 return true; 24331 } 24332 24333 // Add a product to the default "All Favorites" category 24334 function addToWishlist(product) { 24335 return addToCategory(product, 'all-favorites'); 24336 } 24337 24338 // Remove a product from all categories 24339 function removeFromWishlist(productId) { 24340 const wishlist = getWishlist(); 24341 let removed = false; 24342 24343 wishlist.categories.forEach(category => { 24344 const initialLength = category.items.length; 24345 category.items = category.items.filter(item => item.id !== productId); 24346 if (category.items.length !== initialLength) { 24347 removed = true; 24348 } 24349 }); 24350 24351 if (removed) { 24352 saveWishlist(wishlist); 24353 } 24354 24355 return removed; 24356 } 24357 24358 // Toggle a product in the wishlist 24359 function toggleWishlistItem(product) { 24360 if (isInWishlist(product.id)) { 24361 // If already in wishlist, remove it 24362 const wasRemoved = removeFromWishlist(product.id); 24363 24364 // Update heart icon if the product was successfully removed 24365 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 24366 if (heartIcon && wasRemoved) { 24367 heartIcon.setAttribute('fill', 'none'); 24368 showWishlistToast(false, product.title); 24369 24370 // Dispatch event for global sync 24371 document.dispatchEvent(new CustomEvent('wishlist:updated', { 24372 detail: { productId: product.id, added: false } 24373 })); 24374 } 24375 return wasRemoved; 24376 } else { 24377 // If not in wishlist, show category selection popup 24378 showCategorySelectionPopup(product); 24379 return false; // Don't return true unless we actually add the product 24380 } 24381 } 24382 24383 // Show wishlist category selection popup 24384 function showCategorySelectionPopup(product) { 24385 // Remove any existing popup 24386 const existingPopup = document.getElementById('wishlist-category-popup'); 24387 if (existingPopup) { 24388 existingPopup.remove(); 24389 } 24390 24391 const lang = getWishlistLang(); 24392 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 24393 24394 // Create popup container 24395 const popup = document.createElement('div'); 24396 popup.id = 'wishlist-category-popup'; 24397 popup.className = 'wishlist-category-popup'; 24398 24399 // Create popup content 24400 const content = document.createElement('div'); 24401 content.className = 'wishlist-category-popup-content'; 24402 24403 // Create header 24404 const title = document.createElement('h2'); 24405 title.textContent = translations.addToWishlist; // Translate 24406 24407 const closeButton = document.createElement('button'); 24408 closeButton.className = 'wishlist-category-popup-close'; 24409 closeButton.setAttribute('aria-label', 'Close'); 24410 closeButton.addEventListener('click', () => { 24411 popup.remove(); 24412 }); 24413 24414 // Create category list 24415 const categoryList = document.createElement('div'); 24416 categoryList.className = 'wishlist-category-list'; 24417 24418 // Get categories 24419 const categories = getCategories(); 24420 24421 // Add category options
24422 categories.forEach(category => { 24423 const categoryOption = document.createElement('div'); 24424 categoryOption.className = 'wishlist-category-option'; 24425 24426 // Use translation for default category name 24427 categoryOption.textContent = category.id === 'all-favorites' 24428 ? (translations.allFavorites || category.name) 24429 : category.name; 24430 24431 // Highlight if product already in this category 24432 if (category.items.some(item => item.id === product.id)) { 24433 categoryOption.style.backgroundColor = '#f0f0f0'; 24434 categoryOption.style.color = '#999'; 24435 categoryOption.style.fontStyle = 'italic'; 24436 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 24437 categoryOption.style.cursor = 'default'; 24438 } else { 24439 categoryOption.addEventListener('click', () => { 24440 const wasAdded = addToCategory(product, category.id); 24441 24442 if (wasAdded) { 24443 // Update heart icon after successful addition 24444 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 24445 if (heartIcon) { 24446 heartIcon.setAttribute('fill', '#333333'); 24447 } 24448 24449 showWishlistToast(true, product.title); 24450 popup.remove(); 24451 } 24452 }); 24453 } 24454 24455 categoryList.appendChild(categoryOption); 24456 }); 24457 24458 // Create "add new category" section 24459 const newCategorySection = document.createElement('div'); 24460 newCategorySection.style.borderTop = '1px solid #eee'; 24461 newCategorySection.style.paddingTop = '15px'; 24462 newCategorySection.style.marginTop = '10px'; 24463 24464 const newCategoryLabel = document.createElement('label'); 24465 newCategoryLabel.textContent = translations.createCategory; // Translate 24466 24467 const newCategoryInput = document.createElement('input'); 24468 newCategoryInput.type = 'text'; 24469 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 24470 24471 const createButton = document.createElement('button'); 24472 createButton.className = 'create-category-button'; 24473 createButton.textContent = translations.createAndAdd; // Translate 24474 24475 createButton.addEventListener('click', () => { 24476 const categoryName = newCategoryInput.value.trim(); 24477 if (categoryName) { 24478 const categoryId = createCategory(categoryName); 24479 const wasAdded = addToCategory(product, categoryId); 24480 24481 if (wasAdded) { 24482 // Update heart icon after successful addition 24483 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 24484 if (heartIcon) { 24485 heartIcon.setAttribute('fill', '#333333'); 24486 } 24487 24488 showWishlistToast(true, product.title); 24489 popup.remove(); 24490 } 24491 } 24492 }); 24493 24494 newCategorySection.appendChild(newCategoryLabel); 24495 newCategorySection.appendChild(newCategoryInput); 24496 newCategorySection.appendChild(createButton); 24497 24498 // Assemble popup 24499 content.appendChild(title); 24500 content.appendChild(closeButton); 24501 content.appendChild(categoryList); 24502 content.appendChild(newCategorySection); 24503 popup.appendChild(content); 24504 24505 // Add to document 24506 document.body.appendChild(popup); 24507 24508 // Focus the input 24509 setTimeout(() => { 24510 newCategoryInput.focus(); 24511 }, 100); 24512 24513 // Close when clicking outside content 24514 popup.addEventListener('click', (e) => { 24515 if (e.target === popup) { 24516 popup.remove(); 24517 } 24518 }); 24519 } 24520 24521 // Show a toast notification 24522 function showWishlistToast(added, productTitle) { 24523 // Create or get toast container 24524 let toastContainer = document.getElementById('wishlist-toast'); 24525 if (!toastContainer) { 24526 toastContainer = document.createElement('div'); 24527 toastContainer.id = 'wishlist-toast'; 24528 toastContainer.style.position = 'fixed'; 24529 toastContainer.style.bottom = '20px'; 24530 toastContainer.style.right = '20px'; 24531 toastContainer.style.zIndex = '9999'; 24532 document.body.appendChild(toastContainer); 24533 } 24534 24535 // Create toast 24536 const toast = document.createElement('div'); 24537 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 24538 toast.style.color = 'white'; 24539 toast.style.padding = '12px 20px'; 24540 toast.style.borderRadius = '0'; 24541 toast.style.marginTop = '10px'; 24542 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 24543 toast.style.transition = 'all 0.3s ease'; 24544 toast.style.opacity = '0'; 24545 toast.style.fontFamily = 'Montserrat, sans-serif'; 24546 24547 // Choose text based on action 24548 const lang = getWishlistLang(); 24549 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 24550 toast.textContent = added 24551 ? `${productTitle} ${translations.addedToWishlist}` // Translate 24552 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 24553 24554 // Add to container 24555 toastContainer.appendChild(toast); 24556 24557 // Animate in 24558 setTimeout(() => { 24559 toast.style.opacity = '1'; 24560 }, 10); 24561 24562 // Animate out and remove 24563 setTimeout(() => { 24564 toast.style.opacity = '0'; 24565 setTimeout(() => { 24566 toastContainer.removeChild(toast); 24567 }, 300); 24568 }, 3000); 24569 } 24570 24571 // Initialize wishlist buttons 24572 function initCardWishlistButtons() { 24573 const wishlistButtons = document.querySelectorAll('.card-wis
24573hlist-button'); 24574 24575 wishlistButtons.forEach(button => { 24576 // Skip if already initialized 24577 if (button.dataset.initializedWishlist === 'true') return; 24578 button.dataset.initializedWishlist = 'true'; 24579 24580 const productId = button.getAttribute('data-wishlist-product'); 24581 if (!productId) return; 24582 24583 // Get product details from the card 24584 const card = button.closest('.card-wrapper'); 24585 const productDetails = { 24586 id: productId, 24587 title: card.querySelector('.card__heading')?.textContent.trim() || '', 24588 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 24589 price: card.querySelector('.price')?.textContent.trim() || '', 24590 image: card.querySelector('img')?.src || '', 24591 url: card.querySelector('a[href*="/products/"]')?.href || '' 24592 }; 24593 24594 // Set initial state using global function 24595 const heartIcon = button.querySelector('path'); 24596 if (heartIcon) { 24597 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 24598 heartIcon.setAttribute('fill', '#333333'); 24599 } else { 24600 heartIcon.setAttribute('fill', 'none'); 24601 } 24602 } 24603 24604 // Add click handler 24605 button.addEventListener('click', function(e) { 24606 e.preventDefault(); 24607 e.stopPropagation(); 24608 e.stopImmediatePropagation(); 24609 toggleWishlistItem(productDetails); 24610 }); 24611 24612 // Prevent navigation on mousedown/touchstart 24613 button.addEventListener('mousedown', function(e) { 24614 e.preventDefault(); 24615 e.stopPropagation(); 24616 }); 24617 24618 button.addEventListener('touchstart', function(e) { 24619 e.preventDefault(); 24620 e.stopPropagation(); 24621 }); 24622 }); 24623 } 24624 24625 // Initialize the wishlist counter on page load 24626 const wishlist = getWishlist(); 24627 const totalItems = wishlist.categories.reduce((total, category) => { 24628 return total + category.items.length; 24629 }, 0); 24630 updateWishlistCounters(totalItems); 24631 24632 // Initialize on DOM ready 24633 if (document.readyState === 'loading') { 24634 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 24635 } else { 24636 initCardWishlistButtons(); 24637 } 24638 24639 // Reinitialize on Shopify section load 24640 document.addEventListener('shopify:section:load', function() { 24641 setTimeout(initCardWishlistButtons, 100); 24642 }); 24643 24644 // Listen for wishlist updates from other parts of the site 24645 document.addEventListener('wishlist:updated', function() { 24646 setTimeout(initCardWishlistButtons, 100); 24647 }); 24648 })(); 24649</script>
24649 24650 24651<!-- Price info icon styles --> 24652<style> 24653 /* Price container with icon */ 24654 .price-container-with-info { 24655 position: relative; 24656 display: flex; 24657 align-items: center; 24658 gap: 8px; 24659 } 24660 24661 /* Info icon - hidden by default, shown on card hover */ 24662 .price-info-icon { 24663 position: relative; 24664 display: inline-flex; 24665 align-items: center; 24666 justify-content: center; 24667 color: #666; 24668 cursor: help; 24669 opacity: 0; 24670 transition: opacity 0.3s ease; 24671 24672 padding: 4px; /* Add padding to increase clickable area */ 24673 min-width: 20px; /* Ensure minimum clickable area */ 24674 min-height: 20px; 24675 z-index: 15; /* Above everything else including compare button */ 24676 pointer-events: auto; /* Allow interaction */ 24677 } 24678 24679 /* Show icon on card hover */ 24680 .card-wrapper:hover .price-info-icon { 24681 opacity: 1; 24682 } 24683 24684 .price-info-icon svg { 24685 width: 14px; 24686 height: 14px; 24687 stroke-width: 1.5; 24688 } 24689 24690 /* Tooltip styles */ 24691 .price-info-tooltip { 24692 position: absolute; 24693 bottom: calc(100% + 6px); 24694 top: auto; 24695 left: 0; 24696 transform: none; 24697 min-width: 310px; 24698 background: #FFFFFF; 24699 color: #232323; 24700 border: 1px solid #EEEEEE; 24701 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 24702 padding: 12px 16px; 24703 font-size: 13px; 24704 font-family: 'Montserrat', sans-serif; 24705 z-index: 10000; 24706 opacity: 0; 24707 transition: opacity 0.18s; 24708 white-space: pre-line; 24709 text-align: left; 24710 border-radius: 0; 24711 visibility: hidden; 24712 pointer-events: none; 24713 } 24714 24715 /* Show tooltip on icon hover */ 24716 .price-info-icon:hover .price-info-tooltip { 24717 visibility: visible; 24718 opacity: 1; 24719 } 24720 24721 /* Ensure tooltip is never clipped */ 24722 .price-container-with-info, 24723 .card-information, 24724 .card__content { 24725 overflow: visible !important; 24726 } 24727 24728 /* Mobile adjustments */ 24729 @media screen and (max-width: 768px) { 24730 .price-info-tooltip { 24731 min-width: 200px; 24732 font-size: 12px; 24733 padding: 10px 12px; 24734 } 24735 } 24736</style> 24737 24738 </li> 24739 <li 24740 class="grid__item" 24741 24742 > 24743 24744<div class="card-wrapper product-card-wrapper underline-links-hover"> 24745 24746 <div 24747 class=" 24748 card card--standard 24749 card--media 24750 24751 24752 24753 24754 24755 " 24756 style="--ratio-percent: 100.0%;" 24757 data-product-id="9746936529194" 24758 data-description="Lámpara de pie de exterior con tapa opalina para bombilla LED con casquillo E27." 24759 24760 data-ip-rate="IP44" 24761 24762 data-variant-id="52387977068842" 24763 data-price="98.00 EUR" 24764 data-compare-at-price="" 24765 data-available="true" 24766 data-barcode="8595685423852" 24767 data-ip-rate="IP44" 24768 data-lumens="" 24769 data-power-source="" 24770 data-watt="11.0" 24771 data-kelvin="" 24772 data-light-color="" 24773 data-diameter="" 24774 data-weight-netto="1000.0" 24775 data-weight-unit="g" 24776 data-mounting-hole-size="" 24777 data-recess-depth="" 24778 data-suspension-lenght="" 24779 data-turn-angle="" 24780 data-tilt-angle="" 24781 data-switch="" 24782 data-socket="LED E27" 24783 data-light-source-recomended="G13307" 24784 data-height="60" 24785 data-length="8.3" 24786 data-Length="" 24787 > 24788 <div 24789 class="card__inner color-scheme-2 gradient ratio" 24790 style="--ratio-percent: 100.0%;" 24791 > 24792 24793 24794<div class="ip-rate-badge"> 24795 <span>IP44</span> 24796 </div><div class="card__media"> 24797 <a class="card__media-link-content" href="/products/clyde-60-bollard-lamp" aria-label="CLYDE DE PIÃ"> 24798 <div class="media media--transparent media--hover-effect"> 24799 24800 <img 24801 class="product-image motion-reduce" 24802 srcset="//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=165 165w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=360 360w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=533 533w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=720 720w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=940 940w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=1066 1066w,//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426 4899w 24803 " 24804 src="//rendl.es/cdn/shop/files/r13638-1.jpg?v=1745935426&width=533" 24805 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 24806 alt="RENDL outdoor lamp CLYDE 60 bollard anthracite grey 230V LED E27 11W IP44 R13638 1" 24807 24808 loading="lazy" 24809 24810 width="4899" 24811 height="4899" 24812 > 24813 24814<img 24815 class="product-image motion-reduce" 24816 srcset="//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=165 165w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=360 360w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=533 533w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=720 720w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=940 940w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=1066 1066w,//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744 3162w 24817 " 24818 src="//rendl.es/cdn/shop/files/r13638-3.jpg?v=1783736744&width=533" 24819 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 24820 alt="" 24821 loading="lazy" 24822 width="3162" 24823 height="3162" 24824 ></div> 24825 </a> 24826 24827<div class="card-media-icons"><div class="dimmable-icon"> 24828 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Dimmable.svg?v=1753944550" alt="Dimmable" width="14" height="14"> 24829 <div class="dimmable-tooltip">Atenuable con fuente de luz adecuada</div> 24830 </div></div><div class="card-variant-swatches"><a 24831 class="card-variant-swatch" 24832 href="/products/clyde-60-bollard-lamp?variant=52387977068842" 24833 24834 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 24835 24836 aria-label="gris antracita" 24837 >
24838 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 24839 <div class="card__information"> 24840 <h3 24841 class="card__heading" 24842 24843 > 24844 <a 24845 href="/products/clyde-60-bollard-lamp" 24846 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746936529194" 24847 class="full-unstyled-link" 24848 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746936529194 NoMediaStandardBadge-template--28113427169578__product-grid-9746936529194" 24849 > 24850 CLYDE DE PIà 24851 </a> 24852 </h3> 24853 </div> 24854 <div class="card__badge bottom left"></div> 24855 </div> 24856 </div> 24857 <div class="card__content"> 24858 <div class="card__information"> 24859 <h3 24860 class="card__heading h5" 24861 24862 id="title-template--28113427169578__product-grid-9746936529194" 24863 24864 > 24865 <a 24866 href="/products/clyde-60-bollard-lamp" 24867 id="CardLink-template--28113427169578__product-grid-9746936529194" 24868 class="full-unstyled-link" 24869 aria-labelledby="CardLink-template--28113427169578__product-grid-9746936529194 Badge-template--28113427169578__product-grid-9746936529194" 24870 > 24871 CLYDE DE PIà 24872 </a> 24873 </h3><div class="card__description"> 24874 Lámpara de pie de exterior con tapa opalina para bombilla LED con casquillo E27. 24875 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 24876 24877<div 24878 class=" 24879 price " 24880 > 24881 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 24882 <span class="price-item price-item--regular"> 24883 98.00 EUR 24884 </span></div> 24885 <div class="price__sale"> 24886 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 24887 <span> 24888 <s class="price-item price-item--regular"> 24889 24890 24891 24892 </s> 24893 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 24894 <span class="price-item price-item--sale price-item--last"> 24895 98.00 EUR 24896 </span> 24897 </div> 24898 <small class="unit-price caption hidden"> 24899 <span class="visually-hidden">Precio unitario</span> 24900 <span class="price-item price-item--last"> 24901 <span></span> 24902 <span aria-hidden="true">/</span> 24903 <span class="visually-hidden"> por </span> 24904 <span> 24905 </span> 24906 </span> 24907 </small> 24908 </div></div> 24909 24910 24911</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 24912 <button class="compare-button-simple" 24913 data-product-id="9746936529194" 24914 data-product-title="CLYDE DE PIÃ" 24915 data-product-handle="clyde-60-bollard-lamp"> 24916 <span class="compare-button-content"> 24917 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 24918 <span class="compare-text" data-translate="compare">compare</span> 24919 </span> 24920 <span class="compare-spinner-small"> 24921 <!-- Small spinner for button --> 24922 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 24923 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 24924 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 24925 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
24925inite"/> 24926 </path> 24927 </svg> 24928 </span> 24929 </button> 24930 24931 <!-- Wishlist button next to compare button --> 24932 <button type="button" class="card-wishlist-button" data-wishlist-product="9746936529194"> 24933 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 24934 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 24935 </svg> 24936 </button> 24937 </div></div> 24938 </div> 24939 24940 24941 24942 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746936529194" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 24943 type="hidden" 24944 name="id" 24945 value="52387977068842" 24946 class="product-variant-id" 24947 24948 > 24949 <button 24950 id="quick-add-template--28113427169578__product-grid9746936529194-submit" 24951 type="submit" 24952 name="add" 24953 class="quick-add__submit button button--full-width button--secondary" 24954 aria-haspopup="dialog" 24955 aria-labelledby="quick-add-template--28113427169578__product-grid9746936529194-submit title-template--28113427169578__product-grid-9746936529194" 24956 aria-live="polite" 24957 data-sold-out-message="true" 24958 24959 > 24960 <span>Agregar al carrito 24961</span> 24962 <span class="sold-out-message hidden"> 24963 En camino 24964 </span> 24965 24966<div class="loading__spinner hidden"> 24967 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 24968 24969</div> 24970</button><input type="hidden" name="product-id" value="9746936529194" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 24971 24972 <div class="card__badge bottom left"></div> 24973 </div> 24974 </div> 24975 </div>
24975<script> 24976 // Initialize global compare translations only once 24977 if (typeof window.compareButtonTranslations === 'undefined') { 24978 window.compareButtonTranslations = { 24979 compare: { 24980 en: 'compare', 24981 cs: 'porovnat', 24982 sk: 'porovnaÅ¥', 24983 de: 'vergleichen', 24984 at: 'vergleichen', 24985 ch: 'vergleichen', 24986 fr: 'comparer', 24987 be: 'comparer', 24988 lu: 'comparer', 24989 it: 'confronta', 24990 es: 'comparar', 24991 nl: 'vergelijken', 24992 pl: 'porównaj', 24993 hu: 'összehasonlÃt', 24994 ro: 'comparÄ', 24995 bg: 'ÑÑавни', 24996 hr: 'usporedi', 24997 fi: 'vertaile', 24998 gr: 'ÏÏγκÏιÏη', 24999 el: 'ÏÏγκÏιÏη', 25000 no: 'sammenlign', 25001 'pt-PT': 'comparar', 25002 sl: 'primerjaj', 25003 sv: 'jämför', 25004 lv: 'salÄ«dzinÄt', 25005 lt: 'palyginti', 25006 ee: 'võrdle', 25007 dk: 'sammenlign', 25008 gb: 'compare', 25009 uk: 'compare', 25010 ie: 'compare', 25011 us: 'compare', 25012 ca: 'compare', 25013 au: 'compare', 25014 nz: 'compare', 25015 ru: 'ÑÑавниÑÑ' 25016 }, 25017 remove: { 25018 en: 'remove', 25019 cs: 'odebrat', 25020 sk: 'odobraÅ¥', 25021 de: 'entfernen', 25022 at: 'entfernen', 25023 ch: 'entfernen', 25024 fr: 'supprimer', 25025 be: 'supprimer', 25026 lu: 'supprimer', 25027 it: 'rimuovi', 25028 es: 'eliminar', 25029 nl: 'verwijderen', 25030 pl: 'usuÅ', 25031 hu: 'eltávolÃt', 25032 ro: 'eliminÄ', 25033 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 25034 hr: 'ukloni', 25035 fi: 'poista', 25036 gr: 'αÏαίÏεÏη', 25037 el: 'αÏαίÏεÏη', 25038 no: 'fjern', 25039 'pt-PT': 'remover', 25040 sl: 'odstrani', 25041 sv: 'ta bort', 25042 lv: 'noÅemt', 25043 lt: 'paÅ¡alinti', 25044 ee: 'eemalda', 25045 dk: 'fjern', 25046 gb: 'remove', 25047 uk: 'remove', 25048 ie: 'remove', 25049 us: 'remove', 25050 ca: 'remove', 25051 au: 'remove', 25052 nz: 'remove', 25053 ru: 'ÑдалиÑÑ' 25054 }, 25055 added: { 25056 en: 'Added!', 25057 cs: 'PÅidáno!', 25058 sk: 'Pridané!', 25059 de: 'Hinzugefügt!', 25060 at: 'Hinzugefügt!', 25061 ch: 'Hinzugefügt!', 25062 fr: 'Ajouté!', 25063 be: 'Ajouté!', 25064 lu: 'Ajouté!', 25065 it: 'Aggiunto!', 25066 es: '¡Añadido!', 25067 nl: 'Toegevoegd!', 25068 pl: 'Dodano!', 25069 hu: 'Hozzáadva!', 25070 ro: 'AdÄugat!', 25071 bg: 'Ðобавено!', 25072 hr: 'Dodano!', 25073 fi: 'Lisätty!', 25074 gr: 'Î ÏοÏÏÎθηκε!', 25075 el: 'Î ÏοÏÏÎθηκε!', 25076 no: 'Lagt til!', 25077 'pt-PT': 'Adicionado!', 25078 sl: 'Dodano!', 25079 sv: 'Tillagd!', 25080 lv: 'Pievienots!', 25081 lt: 'PridÄta!', 25082 ee: 'Lisatud!', 25083 dk: 'Tilføjet!', 25084 gb: 'Added!', 25085 uk: 'Added!', 25086 ie: 'Added!', 25087 us: 'Added!', 25088 ca: 'Added!', 25089 au: 'Added!', 25090 nz: 'Added!', 25091 ru: 'Ðобавлено!' 25092 }, 25093 removed: { 25094 en: 'Removed!', 25095 cs: 'Odebráno!', 25096 sk: 'Odobrané!', 25097 de: 'Entfernt!', 25098 at: 'Entfernt!', 25099 ch: 'Entfernt!', 25100 fr: 'Supprimé!', 25101 be: 'Supprimé!', 25102 lu: 'Supprimé!', 25103 it: 'Rimosso!', 25104 es: '¡Eliminado!', 25105 nl: 'Verwijderd!', 25106 pl: 'UsuniÄto!', 25107 hu: 'EltávolÃtva!', 25108 ro: 'Eliminat!', 25109 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 25110 hr: 'Uklonjeno!', 25111 fi: 'Poistettu!', 25112 gr: 'ÎÏαιÏÎθηκε!', 25113 el: 'ÎÏαιÏÎθηκε!', 25114 no: 'Fjernet!', 25115 'pt-PT': 'Removido!', 25116 sl: 'Odstranjeno!', 25117 sv: 'Borttaget!', 25118 lv: 'NoÅemts!', 25119 lt: 'PaÅ¡alinta!', 25120 ee: 'Eemaldatud!', 25121 dk: 'Fjernet!', 25122 gb: 'Removed!', 25123 uk: 'Removed!', 25124 ie: 'Removed!', 25125 us: 'Removed!', 25126 ca: 'Removed!', 25127 au: 'Removed!', 25128 nz: 'Removed!', 25129 ru: 'Удалено!' 25130 } 25131 }; 25132 25133 // Tooltip translations for price info 25134 window.tooltipTranslations = { 25135 tooltipPrice: { 25136 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25137 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 25138 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 25139 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 25140 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 25141 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 25142 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 25143 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 25144 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 25145 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 25146 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 25147 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 25148 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 25149 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 25150 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 25151 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 25152 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 25153 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 25154 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 25155 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 25156 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 25157 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 25158 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 25159 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 25160 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
25160iks atskaitÄ«ts, ja piemÄrojams.", 25161 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 25162 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 25163 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 25164 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25165 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25166 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25167 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25168 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25169 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25170 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 25171 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 25172 }, 25173 tooltipOutlet: { 25174 en: "We do not provide additional wholesale discounts on outlet products.", 25175 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 25176 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 25177 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 25178 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 25179 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 25180 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 25181 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 25182 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 25183 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 25184 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 25185 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 25186 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 25187 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 25188 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 25189 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 25190 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 25191 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 25192 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 25193 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 25194 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 25195 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 25196 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 25197 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 25198 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 25199 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 25200 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 25201 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 25202 gb: "We do not provide additional wholesale discounts on outlet products.", 25203 uk: "We do not provide additional wholesale discounts on outlet products.", 25204 ie: "We do not provide additional wholesale discounts on outlet products.", 25205 us: "We do not provide additional wholesale discounts on outlet products.", 25206 ca: "We do not provide additional wholesale discounts on outlet products.", 25207 au: "We do not provide additional wholesale discounts on outlet products.", 25208 nz: "We do not provide additional wholesale discounts on outlet products.", 25209 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 25210 } 25211 }; 25212 25213 // Get current locale from document 25214 window.currentLocale = document.documentElement.lang || 'en'; 25215 25216 // Function to translate compare buttons 25217 window.translateCompareButtons = function() { 25218 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
25219 compareTexts.forEach(function(textEl) { 25220 const button = textEl.closest('.compare-button-simple'); 25221 const isInComparison = button && button.hasAttribute('data-in-comparison'); 25222 25223 if (isInComparison) { 25224 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 25225 textEl.textContent = translation; 25226 } else { 25227 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 25228 textEl.textContent = translation; 25229 } 25230 }); 25231 }; 25232 25233 // Function to format price with space as thousands separator (only for tooltip) 25234 function formatTooltipPrice(price) { 25235 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 25236 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 25237 } 25238 25239 // Function to translate tooltips with price 25240 window.translateTooltips = function() { 25241 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 25242 tooltips.forEach(function(tooltip) { 25243 const icon = tooltip.closest('.price-info-icon'); 25244 if (icon) { 25245 const status = icon.getAttribute('data-status'); 25246 // Check if this is an outlet product 25247 if (status === 'outlet') { 25248 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 25249 tooltip.textContent = translation; 25250 return; // Exit early for outlet products 25251 } 25252 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 25253 // Get wholesale price from the actual price display on the card 25254 const card = icon.closest('[data-product-id]'); 25255 let wholesalePrice = ''; 25256 if (card) { 25257 // Find the main price element on the card 25258 const priceElement = card.querySelector('.price .price-item--regular'); 25259 if (priceElement) { 25260 wholesalePrice = priceElement.textContent.trim(); 25261 } 25262 } 25263 if (retailPrice && wholesalePrice) { 25264 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 25265 let formattedRetailPrice = formatTooltipPrice(retailPrice); 25266 let formattedWholesalePrice = wholesalePrice; 25267 if (window.formatPriceText) { 25268 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 25269 } 25270 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 25271 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 25272 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 25273 tooltip.textContent = translatedText; 25274 } 25275 } 25276 }); 25277 }; 25278 25279 // Function to update button state based on comparison status 25280 window.updateCompareButtonState = function(productId, isInComparison) { 25281 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 25282 buttons.forEach(function(button) { 25283 const buttonContainer = button.closest('.compare-button-container'); 25284 const compareText = button.querySelector('.compare-text'); 25285 25286 if (isInComparison) { 25287 button.setAttribute('data-in-comparison', 'true'); 25288 button.classList.add('in-comparison'); 25289 buttonContainer.classList.add('in-comparison'); 25290 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 25291 compareText.textContent = removeText; 25292 } else { 25293 button.removeAttribute('data-in-comparison'); 25294 button.classList.remove('in-comparison'); 25295 buttonContainer.classList.remove('in-comparison'); 25296 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 25297 compareText.textContent = compareTextTranslation; 25298 } 25299 }); 25300 }; 25301 } 25302 25303 // Initialize compare button states based on localStorage 25304 window.initializeCompareButtonStates = function() {
25305 if (typeof window.RendlCompare !== 'undefined') { 25306 const compareItems = window.RendlCompare.getItems(); 25307 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 25308 const productId = button.getAttribute('data-product-id'); 25309 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 25310 window.updateCompareButtonState(productId, isInComparison); 25311 }); 25312 } 25313 }; 25314 25315 // Compare button UI animation - the actual functionality is handled by compare-system.js 25316 document.addEventListener('DOMContentLoaded', function() { 25317 // Apply translations on page load 25318 if (window.translateCompareButtons) { 25319 window.translateCompareButtons(); 25320 } 25321 25322 // Initialize button states based on comparison data 25323 setTimeout(function() { 25324 if (window.initializeCompareButtonStates) { 25325 window.initializeCompareButtonStates(); 25326 } 25327 }, 100); // Small delay to ensure compare system is loaded 25328 25329 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 25330 // Skip if already has event listener 25331 if (button.hasAttribute('data-compare-initialized')) { 25332 return; 25333 } 25334 button.setAttribute('data-compare-initialized', 'true'); 25335 25336 button.addEventListener('click', function(e) { 25337 var buttonContainer = button.closest('.compare-button-container'); 25338 var compareText = button.querySelector('.compare-text'); 25339 var isInComparison = button.hasAttribute('data-in-comparison'); 25340 var productId = button.getAttribute('data-product-id'); 25341 25342 // Prevent multiple clicks during loading 25343 if (button.classList.contains('loading')) { 25344 return; 25345 } 25346 25347 // Make button always visible during the process 25348 buttonContainer.classList.add('active'); 25349 25350 // Add loading class to show spinner 25351 button.classList.add('loading'); 25352 25353 // UI feedback timing 25354 setTimeout(function() { 25355 // Remove loading class and show success message 25356 button.classList.remove('loading'); 25357 button.classList.add('success'); 25358 25359 if (isInComparison) { 25360 // Removing from comparison 25361 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 25362 25363 // Update button state after removal 25364 setTimeout(function() { 25365 button.classList.remove('success'); 25366 window.updateCompareButtonState(productId, false); 25367 buttonContainer.classList.remove('active'); 25368 }, 1500); 25369 } else { 25370 // Adding to comparison 25371 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 25372 25373 // Update button state after addition 25374 setTimeout(function() { 25375 button.classList.remove('success'); 25376 window.updateCompareButtonState(productId, true); 25377 buttonContainer.classList.remove('active'); 25378 }, 1500); 25379 } 25380 }, 1200); 25381 }); 25382 }); 25383 25384 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 25385 setTimeout(function() { 25386 if (window.translateTooltips) { 25387 window.translateTooltips(); 25388 } 25389 }, 100); 25390 }); 25391 25392 // Ensure compare button states are initialized after RendlCompare is available 25393 document.addEventListener('DOMContentLoaded', function() { 25394 function tryInitCompareButtons() { 25395 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 25396 window.initializeCompareButtonStates(); 25397 } else { 25398 setTimeout(tryInitCompareButtons, 100); 25399 } 25400 } 25401 tryInitCompareButtons(); 25402 }); 25403 25404 // Self-contained wishlist functionality for card-product 25405 (function() { 25406 // Wishlist translations 25407 var wishlistTranslations = { 25408 'en': { 25409 addToWishlist: 'Add to My Favorites', 25410 createCategory: 'Create new category:', 25411 categoryPlaceholder: 'Category name', 25412 createAndAdd: 'Create & Add Item', 25413 alreadyAdded: '(Already added)', 25414 addedToWishlist: 'added to My Favorites', 25415 removedFromWishlist: 'removed from My Favorites', 25416 allFavorites: 'All Favorites' 25417 }, 25418 'cs': { 25419 addToWishlist: 'PÅidat do oblÃbených', 25420 createCategory: 'VytvoÅit novou skupinu:', 25421 categoryPlaceholder: 'Název nové skupiny', 25422 createAndAdd: 'VytvoÅit a pÅidat skupinu', 25423 alreadyAdded: '(Již pÅidáno)', 25424 addedToWishlist: 'pÅidáno do oblÃbených', 25425 removedFromWishlist: 'odebráno z oblÃbených', 25426 allFavorites: 'VÅ¡echny oblÃbené' 25427 }, 25428 'sk': { 25429 addToWishlist: 'PridaÅ¥ do obľúbených', 25430 createCategory: 'VytvoriÅ¥ novú kategóriu:', 25431 categoryPlaceholder: 'Názov kategórie', 25432 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 25433 alreadyAdded: '(Už pridané)', 25434 addedToWishlist: 'pridané do obľúbených', 25435 removedFromWishlist: 'odstránené z obľúbených', 25436 allFavorites: 'VÅ¡etky obľúbené' 25437 }, 25438 'de': { 25439 addToWishlist: 'Zu meinen Favoriten hinzufügen', 25440 createCategory: 'Neue Kategorie erstellen:', 25441 categoryPlaceholder: 'Kategoriename', 25442 createAndAdd: 'Erstellen & hinzufügen', 25443 alreadyAdded: '(Bereits hinzugefügt)', 25444 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 25445 removedFromWishlist: 'aus meinen Favoriten entfernt', 25446 allFavorites: 'Alle Favoriten' 25447 }, 25448 'fr': { 25449 addToWishlist: 'Ajouter à mes favoris', 25450 createCategory: 'Créer une nouvelle catégorie :', 25451 categoryPlaceholder: 'Nom de la catégorie', 25452 createAndAdd: 'Créer et ajouter', 25453 alreadyAdded: '(Déjà ajouté)', 25454 addedToWishlist: 'ajouté à mes favoris', 25455 removedFromWishlist: 'retiré de mes favoris', 25456 allFavorites: 'Tous les favoris' 25457 }, 25458 'it': { 25459 addToWishlist: 'Aggiungi ai preferiti', 25460 createCategory: 'Crea nuova categoria:', 25461 categoryPlaceholder: 'Nome categoria', 25462 createAndAdd: 'Crea e aggiungi', 25463 alreadyAdded: '(Già aggiunto)', 25464 addedToWishlist: 'aggiunto ai preferiti', 25465 removedFromWishlist: 'rimosso dai preferiti', 25466 allFavorites: 'Tutti i preferiti' 25467 }, 25468 'es': { 25469 addToWishlist: 'Añadir a mis favoritos', 25470 createCategory: 'Crear nueva categorÃa:', 25471 categoryPlaceholder: 'Nombre de la categorÃa', 25472 createAndAdd: 'Crear y añadir', 25473 alreadyAdded: '(Ya añadido)', 25474 addedToWishlist: 'añadido a mis favoritos', 25475 removedFromWishlist: 'eliminado de mis favoritos', 25476 allFavorites: 'Todos los favoritos' 25477 }, 25478 'nl': { 25479 addToWishlist: 'Toevoegen aan mijn favorieten', 25480 createCategory: 'Nieuwe categorie aanmaken:', 25481 categoryPlaceholder: 'Categorienaam', 25482 createAndAdd: 'Aanmaken & toevoegen', 25483 alreadyAdded: '(Al toegevoegd)', 25484 addedToWishlist: 'toegevoegd aan mijn favorieten', 25485 removedFromWishlist: 'verwijderd uit mijn favorieten', 25486 allFavorites: 'Alle favorieten' 25487 }, 25488 'pl': { 25489 addToWishlist: 'Dodaj do ulubionych', 25490 createCategory: 'Utwórz nowÄ kategoriÄ:', 25491 categoryPlaceholder: 'Nazwa kategorii', 25492 createAndAdd: 'Utwórz i dodaj', 25493 alreadyAdded: '(Już dodane)', 25494 addedToWishlist: 'dodano do ulubionych', 25495 removedFromWishlist: 'usuniÄto z ulubionych', 25496 allFavorites: 'Wszystkie ulubione' 25497 }, 25498 'hu': { 25499 addToWishlist: 'Hozzáadás a kedvencekhez', 25500 createCategory: 'Ãj kategória létrehozása:', 25501 categoryPlaceholder: 'Kategória neve', 25502 createAndAdd: 'Létrehozás és hozzáadás', 25503 alreadyAdded: '(Már hozzáadva)', 25504 addedToWishlist: 'hozzáadva a kedvencekhez', 25505 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 25506 allFavorites: 'Minden kedvenc' 25507 }, 25508 'ro': { 25509 addToWishlist: 'AdaugÄ la favorite', 25510 createCategory: 'CreeazÄ o nouÄ categorie:', 25511 categoryPlaceholder: 'Nume categorie', 25512 createAndAdd: 'CreeazÄ Èi adaugÄ', 25513 alreadyAdded: '(Deja adÄugat)', 25514 addedToWishlist: 'adÄugat la favorite', 25515 removedFromWishlist: 'eliminat din favorite', 25516 allFavorites: 'Toate preferinÈele' 25517 }, 25518 'bg': { 25519 addToWishlist: 'Ðобави в лÑбими', 25520 createCategory: 'СÑздай нова каÑегоÑиÑ:', 25521 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 25522 createAndAdd: 'СÑздай и добави', 25523 alreadyAdded: '(ÐеÑе добавено)', 25524 addedToWishlist: 'добавено в лÑбими', 25525 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 25526 allFavorites: 'ÐÑиÑки лÑбими' 25527 }, 25528 'hr': { 25529 addToWishlist: 'Dodaj u favorite', 25530 createCategory: 'Kreiraj novu kategoriju:', 25531 categoryPlaceholder: 'Naziv kategorije', 25532 createAndAdd: 'Kreiraj i dodaj', 25533 alreadyAdded: '(VeÄ dodano)', 25534 addedToWishlist: 'dodano u favorite', 25535 removedFromWishlist: 'uklonjeno iz favorita', 25536 allFavorites: 'Sva omiljena' 25537 }, 25538 'fi': { 25539 addToWishlist: 'Lisää suosikkeihin', 25540 createCategory: 'Luo uusi kategoria:', 25541 categoryPlaceholder: 'Kategorian nimi', 25542 createAndAdd: 'Luo ja lisää', 25543 alreadyAdded: '(Jo lisätty)', 25544 addedToWishlist: 'lisätty suosikkeihin', 25545 removedFromWishlist: 'poistettu suosikeista',
25546 allFavorites: 'Kaikki suosikit' 25547 }, 25548 'gr': { 25549 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 25550 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 25551 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 25552 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 25553 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 25554 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 25555 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 25556 allFavorites: 'Îλα Ïα αγαÏημÎνα' 25557 }, 25558 'no': { 25559 addToWishlist: 'Legg til i favoritter', 25560 createCategory: 'Opprett ny kategori:', 25561 categoryPlaceholder: 'Kategorinavn', 25562 createAndAdd: 'Opprett og legg til', 25563 alreadyAdded: '(Allerede lagt til)', 25564 addedToWishlist: 'lagt til i favoritter', 25565 removedFromWishlist: 'fjernet fra favoritter', 25566 allFavorites: 'Alle favoritter' 25567 }, 25568 'pt-PT': { 25569 addToWishlist: 'Adicionar aos favoritos', 25570 createCategory: 'Criar nova categoria:', 25571 categoryPlaceholder: 'Nome da categoria', 25572 createAndAdd: 'Criar e adicionar', 25573 alreadyAdded: '(Já adicionado)', 25574 addedToWishlist: 'adicionado aos favoritos', 25575 removedFromWishlist: 'removido dos favoritos', 25576 allFavorites: 'Todos os favoritos' 25577 }, 25578 'sl': { 25579 addToWishlist: 'Dodaj med priljubljene', 25580 createCategory: 'Ustvari novo kategorijo:', 25581 categoryPlaceholder: 'Ime kategorije', 25582 createAndAdd: 'Ustvari in dodaj', 25583 alreadyAdded: '(Že dodano)', 25584 addedToWishlist: 'dodano med priljubljene', 25585 removedFromWishlist: 'odstranjeno iz priljubljenih', 25586 allFavorites: 'Vsi priljubljeni' 25587 }, 25588 'sv': { 25589 addToWishlist: 'Lägg till i favoriter', 25590 createCategory: 'Skapa ny kategori:', 25591 categoryPlaceholder: 'Kategorinamn', 25592 createAndAdd: 'Skapa och lägg till', 25593 alreadyAdded: '(Redan tillagd)', 25594 addedToWishlist: 'tillagd i favoriter', 25595 removedFromWishlist: 'borttagen frÃ¥n favoriter', 25596 allFavorites: 'Alla favoriter' 25597 }, 25598 'lv': { 25599 addToWishlist: 'Pievienot favorÄ«tiem', 25600 createCategory: 'Izveidot jaunu kategoriju:', 25601 categoryPlaceholder: 'Kategorijas nosaukums', 25602 createAndAdd: 'Izveidot un pievienot', 25603 alreadyAdded: '(Jau pievienots)', 25604 addedToWishlist: 'pievienots favorÄ«tiem', 25605 removedFromWishlist: 'noÅemts no favorÄ«tiem', 25606 allFavorites: 'Visas favorÄ«tus' 25607 }, 25608 'lt': { 25609 addToWishlist: 'PridÄti į mÄgstamiausius', 25610 createCategory: 'Sukurti naujÄ kategorijÄ :', 25611 categoryPlaceholder: 'Kategorijos pavadinimas', 25612 createAndAdd: 'Sukurti ir pridÄti', 25613 alreadyAdded: '(Jau pridÄta)', 25614 addedToWishlist: 'pridÄta į mÄgstamiausius', 25615 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 25616 allFavorites: 'Visos mÄgstamiausios' 25617 }, 25618 'ee': { 25619 addToWishlist: 'Lisa lemmikutesse', 25620 createCategory: 'Loo uus kategooria:', 25621 categoryPlaceholder: 'Kategooria nimi', 25622 createAndAdd: 'Loo ja lisa', 25623 alreadyAdded: '(Juba lisatud)', 25624 addedToWishlist: 'lisatud lemmikutesse', 25625 removedFromWishlist: 'eemaldatud lemmikutest', 25626 allFavorites: 'Kõik lemmikud' 25627 }, 25628 'dk': { 25629 addToWishlist: 'Tilføj til favoritter', 25630 createCategory: 'Opret ny kategori:', 25631 categoryPlaceholder: 'Kategorinavn', 25632 createAndAdd: 'Opret og tilføj', 25633 alreadyAdded: '(Allerede tilføjet)', 25634 addedToWishlist: 'tilføjet til favoritter', 25635 removedFromWishlist: 'fjernet fra favoritter', 25636 allFavorites: 'Alle favoritter' 25637 } 25638 }; 25639 25640 function getWishlistLang() { 25641 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 25642 // Normalize for region codes (e.g., pt-PT, sl) 25643 if (lang.startsWith('pt-PT')) return 'pt-PT'; 25644 if (lang.startsWith('sl')) return 'sl'; 25645 if (lang.startsWith('cs')) return 'cs'; 25646 if (lang.startsWith('sk')) return 'sk'; 25647 if (lang.startsWith('de')) return 'de'; 25648 if (lang.startsWith('fr')) return 'fr'; 25649 if (lang.startsWith('it')) return 'it'; 25650 if (lang.startsWith('es')) return 'es'; 25651 if (lang.startsWith('nl')) return 'nl'; 25652 if (lang.startsWith('pl')) return 'pl'; 25653 if (lang.startsWith('hu')) return 'hu'; 25654 if (lang.startsWith('ro')) return 'ro'; 25655 if (lang.startsWith('bg')) return 'bg'; 25656 if (lang.startsWith('hr')) return 'hr'; 25657 if (lang.startsWith('fi')) return 'fi'; 25658 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 25659 if (lang.startsWith('no')) return 'no'; 25660 if (lang.startsWith('sv')) return 'sv'; 25661 if (lang.startsWith('lv')) return 'lv'; 25662 if (lang.startsWith('lt')) return 'lt'; 25663 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 25664 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 25665 return 'en'; 25666 } 25667 25668 // Get or initialize the wishlist array in localStorage 25669 function getWishlist() { 25670 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 25671 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 25672 categories: [ 25673 { 25674 id: 'all-favorites', 25675 name: 'All Favorites', 25676 items: [] 25677 } 25678 ], 25679 version: 2 25680 }; 25681 25682 // Handle migration from old format (array of items) to new format (categories) 25683 if (Array.isArray(wishlist)) { 25684 return { 25685 categories: [ 25686 { 25687 id: 'all-favorites', 25688 name: 'All Favorites', 25689 items: wishlist 25690 } 25691 ], 25692 version: 2 25693 }; 25694 } 25695 25696 return wishlist; 25697 } 25698 25699 // Save wishlist to localStorage 25700 function saveWishlist(wishlist) { 25701 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 25702 // Dispatch an event so other parts of the site can react to wishlist changes 25703 document.dispatchEvent(new CustomEvent('wishlist:updated', { 25704 detail: { wishlist: wishlist } 25705 })); 25706 25707 // Count total items across all categories 25708 const totalItems = wishlist.categories.reduce((total, category) => { 25709 return total + category.items.length; 25710 }, 0); 25711 25712 // Update all wishlist counters 25713 updateWishlistCounters(totalItems); 25714 } 25715 25716 // Update all wishlist counters on the page 25717 function updateWishlistCounters(count) { 25718 const counters = document.querySelectorAll('.wishlist-count');
25719 counters.forEach(counter => { 25720 counter.textContent = count; 25721 25722 // If the counter is hidden and count > 0, show it 25723 if (count > 0 && counter.hasAttribute('hidden')) { 25724 counter.removeAttribute('hidden'); 25725 } 25726 // If the counter is visible and count = 0, hide it 25727 else if (count === 0 && !counter.hasAttribute('hidden')) { 25728 counter.setAttribute('hidden', 'true'); 25729 } 25730 }); 25731 } 25732 25733 // Check if a product is in the wishlist (in any category) 25734 function isInWishlist(productId) { 25735 const wishlist = getWishlist(); 25736 return wishlist.categories.some(category => 25737 category.items.some(item => item.id === productId) 25738 ); 25739 } 25740 25741 // Get all categories 25742 function getCategories() { 25743 return getWishlist().categories; 25744 } 25745 25746 // Create a new category 25747 function createCategory(name) { 25748 const wishlist = getWishlist(); 25749 const categoryId = 'category-' + Date.now(); 25750 25751 wishlist.categories.push({ 25752 id: categoryId, 25753 name: name, 25754 items: [] 25755 }); 25756 25757 saveWishlist(wishlist); 25758 return categoryId; 25759 } 25760 25761 // Add a product to a specific category 25762 function addToCategory(product, categoryId) { 25763 const wishlist = getWishlist(); 25764 const category = wishlist.categories.find(cat => cat.id === categoryId); 25765 25766 if (!category) return false; 25767 25768 // Check if product already exists in ANY category (not just this one) 25769 if (isInWishlist(product.id)) { 25770 return false; // Product already in wishlist 25771 } 25772 25773 // Add product to category 25774 category.items.push(product); 25775 saveWishlist(wishlist); 25776 25777 // Dispatch event for global sync 25778 document.dispatchEvent(new CustomEvent('wishlist:updated', { 25779 detail: { productId: product.id, added: true } 25780 })); 25781 25782 return true; 25783 } 25784 25785 // Add a product to the default "All Favorites" category 25786 function addToWishlist(product) { 25787 return addToCategory(product, 'all-favorites'); 25788 } 25789 25790 // Remove a product from all categories 25791 function removeFromWishlist(productId) { 25792 const wishlist = getWishlist(); 25793 let removed = false; 25794 25795 wishlist.categories.forEach(category => { 25796 const initialLength = category.items.length; 25797 category.items = category.items.filter(item => item.id !== productId); 25798 if (category.items.length !== initialLength) { 25799 removed = true; 25800 } 25801 }); 25802 25803 if (removed) { 25804 saveWishlist(wishlist); 25805 } 25806 25807 return removed; 25808 } 25809 25810 // Toggle a product in the wishlist 25811 function toggleWishlistItem(product) { 25812 if (isInWishlist(product.id)) { 25813 // If already in wishlist, remove it 25814 const wasRemoved = removeFromWishlist(product.id); 25815 25816 // Update heart icon if the product was successfully removed 25817 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 25818 if (heartIcon && wasRemoved) { 25819 heartIcon.setAttribute('fill', 'none'); 25820 showWishlistToast(false, product.title); 25821 25822 // Dispatch event for global sync 25823 document.dispatchEvent(new CustomEvent('wishlist:updated', { 25824 detail: { productId: product.id, added: false } 25825 })); 25826 } 25827 return wasRemoved; 25828 } else { 25829 // If not in wishlist, show category selection popup 25830 showCategorySelectionPopup(product); 25831 return false; // Don't return true unless we actually add the product 25832 } 25833 } 25834 25835 // Show wishlist category selection popup 25836 function showCategorySelectionPopup(product) { 25837 // Remove any existing popup 25838 const existingPopup = document.getElementById('wishlist-category-popup'); 25839 if (existingPopup) { 25840 existingPopup.remove(); 25841 } 25842 25843 const lang = getWishlistLang(); 25844 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 25845 25846 // Create popup container 25847 const popup = document.createElement('div'); 25848 popup.id = 'wishlist-category-popup'; 25849 popup.className = 'wishlist-category-popup'; 25850 25851 // Create popup content 25852 const content = document.createElement('div'); 25853 content.className = 'wishlist-category-popup-content'; 25854 25855 // Create header 25856 const title = document.createElement('h2'); 25857 title.textContent = translations.addToWishlist; // Translate 25858 25859 const closeButton = document.createElement('button'); 25860 closeButton.className = 'wishlist-category-popup-close'; 25861 closeButton.setAttribute('aria-label', 'Close'); 25862 closeButton.addEventListener('click', () => { 25863 popup.remove(); 25864 }); 25865 25866 // Create category list 25867 const categoryList = document.createElement('div'); 25868 categoryList.className = 'wishlist-category-list'; 25869 25870 // Get categories 25871 const categories = getCategories(); 25872 25873 // Add category options
25874 categories.forEach(category => { 25875 const categoryOption = document.createElement('div'); 25876 categoryOption.className = 'wishlist-category-option'; 25877 25878 // Use translation for default category name 25879 categoryOption.textContent = category.id === 'all-favorites' 25880 ? (translations.allFavorites || category.name) 25881 : category.name; 25882 25883 // Highlight if product already in this category 25884 if (category.items.some(item => item.id === product.id)) { 25885 categoryOption.style.backgroundColor = '#f0f0f0'; 25886 categoryOption.style.color = '#999'; 25887 categoryOption.style.fontStyle = 'italic'; 25888 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 25889 categoryOption.style.cursor = 'default'; 25890 } else { 25891 categoryOption.addEventListener('click', () => { 25892 const wasAdded = addToCategory(product, category.id); 25893 25894 if (wasAdded) { 25895 // Update heart icon after successful addition 25896 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 25897 if (heartIcon) { 25898 heartIcon.setAttribute('fill', '#333333'); 25899 } 25900 25901 showWishlistToast(true, product.title); 25902 popup.remove(); 25903 } 25904 }); 25905 } 25906 25907 categoryList.appendChild(categoryOption); 25908 }); 25909 25910 // Create "add new category" section 25911 const newCategorySection = document.createElement('div'); 25912 newCategorySection.style.borderTop = '1px solid #eee'; 25913 newCategorySection.style.paddingTop = '15px'; 25914 newCategorySection.style.marginTop = '10px'; 25915 25916 const newCategoryLabel = document.createElement('label'); 25917 newCategoryLabel.textContent = translations.createCategory; // Translate 25918 25919 const newCategoryInput = document.createElement('input'); 25920 newCategoryInput.type = 'text'; 25921 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 25922 25923 const createButton = document.createElement('button'); 25924 createButton.className = 'create-category-button'; 25925 createButton.textContent = translations.createAndAdd; // Translate 25926 25927 createButton.addEventListener('click', () => { 25928 const categoryName = newCategoryInput.value.trim(); 25929 if (categoryName) { 25930 const categoryId = createCategory(categoryName); 25931 const wasAdded = addToCategory(product, categoryId); 25932 25933 if (wasAdded) { 25934 // Update heart icon after successful addition 25935 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 25936 if (heartIcon) { 25937 heartIcon.setAttribute('fill', '#333333'); 25938 } 25939 25940 showWishlistToast(true, product.title); 25941 popup.remove(); 25942 } 25943 } 25944 }); 25945 25946 newCategorySection.appendChild(newCategoryLabel); 25947 newCategorySection.appendChild(newCategoryInput); 25948 newCategorySection.appendChild(createButton); 25949 25950 // Assemble popup 25951 content.appendChild(title); 25952 content.appendChild(closeButton); 25953 content.appendChild(categoryList); 25954 content.appendChild(newCategorySection); 25955 popup.appendChild(content); 25956 25957 // Add to document 25958 document.body.appendChild(popup); 25959 25960 // Focus the input 25961 setTimeout(() => { 25962 newCategoryInput.focus(); 25963 }, 100); 25964 25965 // Close when clicking outside content 25966 popup.addEventListener('click', (e) => { 25967 if (e.target === popup) { 25968 popup.remove(); 25969 } 25970 }); 25971 } 25972 25973 // Show a toast notification 25974 function showWishlistToast(added, productTitle) { 25975 // Create or get toast container 25976 let toastContainer = document.getElementById('wishlist-toast'); 25977 if (!toastContainer) { 25978 toastContainer = document.createElement('div'); 25979 toastContainer.id = 'wishlist-toast'; 25980 toastContainer.style.position = 'fixed'; 25981 toastContainer.style.bottom = '20px'; 25982 toastContainer.style.right = '20px'; 25983 toastContainer.style.zIndex = '9999'; 25984 document.body.appendChild(toastContainer); 25985 } 25986 25987 // Create toast 25988 const toast = document.createElement('div'); 25989 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 25990 toast.style.color = 'white'; 25991 toast.style.padding = '12px 20px'; 25992 toast.style.borderRadius = '0'; 25993 toast.style.marginTop = '10px'; 25994 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 25995 toast.style.transition = 'all 0.3s ease'; 25996 toast.style.opacity = '0'; 25997 toast.style.fontFamily = 'Montserrat, sans-serif'; 25998 25999 // Choose text based on action 26000 const lang = getWishlistLang(); 26001 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 26002 toast.textContent = added 26003 ? `${productTitle} ${translations.addedToWishlist}` // Translate 26004 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 26005 26006 // Add to container 26007 toastContainer.appendChild(toast); 26008 26009 // Animate in 26010 setTimeout(() => { 26011 toast.style.opacity = '1'; 26012 }, 10); 26013 26014 // Animate out and remove 26015 setTimeout(() => { 26016 toast.style.opacity = '0'; 26017 setTimeout(() => { 26018 toastContainer.removeChild(toast); 26019 }, 300); 26020 }, 3000); 26021 } 26022 26023 // Initialize wishlist buttons 26024 function initCardWishlistButtons() { 26025 const wishlistButtons = document.querySelectorAll('.card-wis
26025hlist-button'); 26026 26027 wishlistButtons.forEach(button => { 26028 // Skip if already initialized 26029 if (button.dataset.initializedWishlist === 'true') return; 26030 button.dataset.initializedWishlist = 'true'; 26031 26032 const productId = button.getAttribute('data-wishlist-product'); 26033 if (!productId) return; 26034 26035 // Get product details from the card 26036 const card = button.closest('.card-wrapper'); 26037 const productDetails = { 26038 id: productId, 26039 title: card.querySelector('.card__heading')?.textContent.trim() || '', 26040 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 26041 price: card.querySelector('.price')?.textContent.trim() || '', 26042 image: card.querySelector('img')?.src || '', 26043 url: card.querySelector('a[href*="/products/"]')?.href || '' 26044 }; 26045 26046 // Set initial state using global function 26047 const heartIcon = button.querySelector('path'); 26048 if (heartIcon) { 26049 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 26050 heartIcon.setAttribute('fill', '#333333'); 26051 } else { 26052 heartIcon.setAttribute('fill', 'none'); 26053 } 26054 } 26055 26056 // Add click handler 26057 button.addEventListener('click', function(e) { 26058 e.preventDefault(); 26059 e.stopPropagation(); 26060 e.stopImmediatePropagation(); 26061 toggleWishlistItem(productDetails); 26062 }); 26063 26064 // Prevent navigation on mousedown/touchstart 26065 button.addEventListener('mousedown', function(e) { 26066 e.preventDefault(); 26067 e.stopPropagation(); 26068 }); 26069 26070 button.addEventListener('touchstart', function(e) { 26071 e.preventDefault(); 26072 e.stopPropagation(); 26073 }); 26074 }); 26075 } 26076 26077 // Initialize the wishlist counter on page load 26078 const wishlist = getWishlist(); 26079 const totalItems = wishlist.categories.reduce((total, category) => { 26080 return total + category.items.length; 26081 }, 0); 26082 updateWishlistCounters(totalItems); 26083 26084 // Initialize on DOM ready 26085 if (document.readyState === 'loading') { 26086 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 26087 } else { 26088 initCardWishlistButtons(); 26089 } 26090 26091 // Reinitialize on Shopify section load 26092 document.addEventListener('shopify:section:load', function() { 26093 setTimeout(initCardWishlistButtons, 100); 26094 }); 26095 26096 // Listen for wishlist updates from other parts of the site 26097 document.addEventListener('wishlist:updated', function() { 26098 setTimeout(initCardWishlistButtons, 100); 26099 }); 26100 })(); 26101</script>
26101 26102 26103<!-- Price info icon styles --> 26104<style> 26105 /* Price container with icon */ 26106 .price-container-with-info { 26107 position: relative; 26108 display: flex; 26109 align-items: center; 26110 gap: 8px; 26111 } 26112 26113 /* Info icon - hidden by default, shown on card hover */ 26114 .price-info-icon { 26115 position: relative; 26116 display: inline-flex; 26117 align-items: center; 26118 justify-content: center; 26119 color: #666; 26120 cursor: help; 26121 opacity: 0; 26122 transition: opacity 0.3s ease; 26123 26124 padding: 4px; /* Add padding to increase clickable area */ 26125 min-width: 20px; /* Ensure minimum clickable area */ 26126 min-height: 20px; 26127 z-index: 15; /* Above everything else including compare button */ 26128 pointer-events: auto; /* Allow interaction */ 26129 } 26130 26131 /* Show icon on card hover */ 26132 .card-wrapper:hover .price-info-icon { 26133 opacity: 1; 26134 } 26135 26136 .price-info-icon svg { 26137 width: 14px; 26138 height: 14px; 26139 stroke-width: 1.5; 26140 } 26141 26142 /* Tooltip styles */ 26143 .price-info-tooltip { 26144 position: absolute; 26145 bottom: calc(100% + 6px); 26146 top: auto; 26147 left: 0; 26148 transform: none; 26149 min-width: 310px; 26150 background: #FFFFFF; 26151 color: #232323; 26152 border: 1px solid #EEEEEE; 26153 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 26154 padding: 12px 16px; 26155 font-size: 13px; 26156 font-family: 'Montserrat', sans-serif; 26157 z-index: 10000; 26158 opacity: 0; 26159 transition: opacity 0.18s; 26160 white-space: pre-line; 26161 text-align: left; 26162 border-radius: 0; 26163 visibility: hidden; 26164 pointer-events: none; 26165 } 26166 26167 /* Show tooltip on icon hover */ 26168 .price-info-icon:hover .price-info-tooltip { 26169 visibility: visible; 26170 opacity: 1; 26171 } 26172 26173 /* Ensure tooltip is never clipped */ 26174 .price-container-with-info, 26175 .card-information, 26176 .card__content { 26177 overflow: visible !important; 26178 } 26179 26180 /* Mobile adjustments */ 26181 @media screen and (max-width: 768px) { 26182 .price-info-tooltip { 26183 min-width: 200px; 26184 font-size: 12px; 26185 padding: 10px 12px; 26186 } 26187 } 26188</style> 26189 26190 </li> 26191 <li 26192 class="grid__item" 26193 26194 > 26195 26196<div class="card-wrapper product-card-wrapper underline-links-hover"> 26197 26198 <div 26199 class=" 26200 card card--standard 26201 card--media 26202 26203 26204 26205 26206 26207 " 26208 style="--ratio-percent: 100.0%;" 26209 data-product-id="9785195528490" 26210 data-description="Baliza de exterior con cristal ámbar para iluminación ambiental, diseñada para bombillas LED con casquillo E27." 26211 data-status-in-sortiment="NEW" 26212 data-ip-rate="IP54" 26213 26214 data-variant-id="52388219093290" 26215 data-price="158.00 EUR" 26216 data-compare-at-price="" 26217 data-available="true" 26218 data-barcode="8595685432342" 26219 data-ip-rate="IP54" 26220 data-lumens="" 26221 data-power-source="" 26222 data-watt="11.0" 26223 data-kelvin="" 26224 data-light-color="" 26225 data-diameter="11.0" 26226 data-weight-netto="1580.0" 26227 data-weight-unit="g" 26228 data-mounting-hole-size="" 26229 data-recess-depth="" 26230 data-suspension-lenght="" 26231 data-turn-angle="" 26232 data-tilt-angle="" 26233 data-switch="" 26234 data-socket="LED E27" 26235 data-light-source-recomended="G13309" 26236 data-height="60" 26237 data-length="" 26238 data-Length="" 26239 > 26240 <div 26241 class="card__inner color-scheme-2 gradient ratio" 26242 style="--ratio-percent: 100.0%;" 26243 > 26244 26245<div class="product-status-badge status-NEW"> 26246 <span>NEW</span> 26247 </div> 26248<div class="ip-rate-badge"> 26249 <span>IP54</span> 26250 </div><div class="card__media"> 26251 <a class="card__media-link-content" href="/products/quinn-60" aria-label="QUINN 60"> 26252 <div class="media media--transparent media--hover-effect"> 26253 26254 <img 26255 class="product-image motion-reduce" 26256 srcset="//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=165 165w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=360 360w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=533 533w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=720 720w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=940 940w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=1066 1066w,//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938 3162w 26257 " 26258 src="//rendl.es/cdn/shop/files/r14497-1.jpg?v=1749172938&width=533" 26259 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 26260 alt="RENDL outdoor lamp QUINN 60 floor black amber-colored glass 230V LED E27 11W IP54 R14497 1" 26261 26262 loading="lazy" 26263 26264 width="3162" 26265 height="3162" 26266 > 26267 26268<img 26269 class="product-image motion-reduce" 26270 srcset="//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=165 165w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=360 360w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=533 533w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=720 720w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=940 940w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=1066 1066w,//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938 3162w 26271 " 26272 src="//rendl.es/cdn/shop/files/r14497-2.jpg?v=1749172938&width=533" 26273 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 26274 alt="" 26275 loading="lazy" 26276 width="3162" 26277 height="3162" 26278 ></div> 26279 </a> 26280 26281<div class="card-variant-swatches"><a 26282 class="card-variant-swatch" 26283 href="/products/quinn-60?variant=52388219093290" 26284 26285 style="background-image: url('//rendl.es/cdn/shop/files/88_black-ambercolored-glass.jpg?v=1739538420&width=64');" 26286 26287 aria-label="negro / vidrio ámbar" 26288 >
26289 <span class="card-variant-swatch-tooltip">negro / vidrio ámbar</span></a></div></div><div class="card__content"> 26290 <div class="card__information"> 26291 <h3 26292 class="card__heading" 26293 26294 > 26295 <a 26296 href="/products/quinn-60" 26297 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9785195528490" 26298 class="full-unstyled-link" 26299 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9785195528490 NoMediaStandardBadge-template--28113427169578__product-grid-9785195528490" 26300 > 26301 QUINN 60 26302 </a> 26303 </h3> 26304 </div> 26305 <div class="card__badge bottom left"></div> 26306 </div> 26307 </div> 26308 <div class="card__content"> 26309 <div class="card__information"> 26310 <h3 26311 class="card__heading h5" 26312 26313 id="title-template--28113427169578__product-grid-9785195528490" 26314 26315 > 26316 <a 26317 href="/products/quinn-60" 26318 id="CardLink-template--28113427169578__product-grid-9785195528490" 26319 class="full-unstyled-link" 26320 aria-labelledby="CardLink-template--28113427169578__product-grid-9785195528490 Badge-template--28113427169578__product-grid-9785195528490" 26321 > 26322 QUINN 60 26323 </a> 26324 </h3><div class="card__description"> 26325 Baliza de exterior con cristal ámbar para iluminación ambiental, diseñada para bombillas LED con casquillo E27. 26326 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 26327 26328<div 26329 class=" 26330 price " 26331 > 26332 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 26333 <span class="price-item price-item--regular"> 26334 158.00 EUR 26335 </span></div> 26336 <div class="price__sale"> 26337 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 26338 <span> 26339 <s class="price-item price-item--regular"> 26340 26341 26342 26343 </s> 26344 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 26345 <span class="price-item price-item--sale price-item--last"> 26346 158.00 EUR 26347 </span> 26348 </div> 26349 <small class="unit-price caption hidden"> 26350 <span class="visually-hidden">Precio unitario</span> 26351 <span class="price-item price-item--last"> 26352 <span></span> 26353 <span aria-hidden="true">/</span> 26354 <span class="visually-hidden"> por </span> 26355 <span> 26356 </span> 26357 </span> 26358 </small> 26359 </div></div> 26360 26361 26362</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 26363 <button class="compare-button-simple" 26364 data-product-id="9785195528490" 26365 data-product-title="QUINN 60" 26366 data-product-handle="quinn-60"> 26367 <span class="compare-button-content"> 26368 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 26369 <span class="compare-text" data-translate="compare">compare</span> 26370 </span> 26371 <span class="compare-spinner-small"> 26372 <!-- Small spinner for button --> 26373 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 26374 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 26375 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 26376 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
26376inite"/> 26377 </path> 26378 </svg> 26379 </span> 26380 </button> 26381 26382 <!-- Wishlist button next to compare button --> 26383 <button type="button" class="card-wishlist-button" data-wishlist-product="9785195528490"> 26384 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 26385 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 26386 </svg> 26387 </button> 26388 </div></div> 26389 </div> 26390 26391 26392 26393 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9785195528490" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 26394 type="hidden" 26395 name="id" 26396 value="52388219093290" 26397 class="product-variant-id" 26398 26399 > 26400 <button 26401 id="quick-add-template--28113427169578__product-grid9785195528490-submit" 26402 type="submit" 26403 name="add" 26404 class="quick-add__submit button button--full-width button--secondary" 26405 aria-haspopup="dialog" 26406 aria-labelledby="quick-add-template--28113427169578__product-grid9785195528490-submit title-template--28113427169578__product-grid-9785195528490" 26407 aria-live="polite" 26408 data-sold-out-message="true" 26409 26410 > 26411 <span>Agregar al carrito 26412</span> 26413 <span class="sold-out-message hidden"> 26414 En camino 26415 </span> 26416 26417<div class="loading__spinner hidden"> 26418 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 26419 26420</div> 26421</button><input type="hidden" name="product-id" value="9785195528490" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 26422 26423 <div class="card__badge bottom left"></div> 26424 </div> 26425 </div> 26426 </div>
26426<script> 26427 // Initialize global compare translations only once 26428 if (typeof window.compareButtonTranslations === 'undefined') { 26429 window.compareButtonTranslations = { 26430 compare: { 26431 en: 'compare', 26432 cs: 'porovnat', 26433 sk: 'porovnaÅ¥', 26434 de: 'vergleichen', 26435 at: 'vergleichen', 26436 ch: 'vergleichen', 26437 fr: 'comparer', 26438 be: 'comparer', 26439 lu: 'comparer', 26440 it: 'confronta', 26441 es: 'comparar', 26442 nl: 'vergelijken', 26443 pl: 'porównaj', 26444 hu: 'összehasonlÃt', 26445 ro: 'comparÄ', 26446 bg: 'ÑÑавни', 26447 hr: 'usporedi', 26448 fi: 'vertaile', 26449 gr: 'ÏÏγκÏιÏη', 26450 el: 'ÏÏγκÏιÏη', 26451 no: 'sammenlign', 26452 'pt-PT': 'comparar', 26453 sl: 'primerjaj', 26454 sv: 'jämför', 26455 lv: 'salÄ«dzinÄt', 26456 lt: 'palyginti', 26457 ee: 'võrdle', 26458 dk: 'sammenlign', 26459 gb: 'compare', 26460 uk: 'compare', 26461 ie: 'compare', 26462 us: 'compare', 26463 ca: 'compare', 26464 au: 'compare', 26465 nz: 'compare', 26466 ru: 'ÑÑавниÑÑ' 26467 }, 26468 remove: { 26469 en: 'remove', 26470 cs: 'odebrat', 26471 sk: 'odobraÅ¥', 26472 de: 'entfernen', 26473 at: 'entfernen', 26474 ch: 'entfernen', 26475 fr: 'supprimer', 26476 be: 'supprimer', 26477 lu: 'supprimer', 26478 it: 'rimuovi', 26479 es: 'eliminar', 26480 nl: 'verwijderen', 26481 pl: 'usuÅ', 26482 hu: 'eltávolÃt', 26483 ro: 'eliminÄ', 26484 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 26485 hr: 'ukloni', 26486 fi: 'poista', 26487 gr: 'αÏαίÏεÏη', 26488 el: 'αÏαίÏεÏη', 26489 no: 'fjern', 26490 'pt-PT': 'remover', 26491 sl: 'odstrani', 26492 sv: 'ta bort', 26493 lv: 'noÅemt', 26494 lt: 'paÅ¡alinti', 26495 ee: 'eemalda', 26496 dk: 'fjern', 26497 gb: 'remove', 26498 uk: 'remove', 26499 ie: 'remove', 26500 us: 'remove', 26501 ca: 'remove', 26502 au: 'remove', 26503 nz: 'remove', 26504 ru: 'ÑдалиÑÑ' 26505 }, 26506 added: { 26507 en: 'Added!', 26508 cs: 'PÅidáno!', 26509 sk: 'Pridané!', 26510 de: 'Hinzugefügt!', 26511 at: 'Hinzugefügt!', 26512 ch: 'Hinzugefügt!', 26513 fr: 'Ajouté!', 26514 be: 'Ajouté!', 26515 lu: 'Ajouté!', 26516 it: 'Aggiunto!', 26517 es: '¡Añadido!', 26518 nl: 'Toegevoegd!', 26519 pl: 'Dodano!', 26520 hu: 'Hozzáadva!', 26521 ro: 'AdÄugat!', 26522 bg: 'Ðобавено!', 26523 hr: 'Dodano!', 26524 fi: 'Lisätty!', 26525 gr: 'Î ÏοÏÏÎθηκε!', 26526 el: 'Î ÏοÏÏÎθηκε!', 26527 no: 'Lagt til!', 26528 'pt-PT': 'Adicionado!', 26529 sl: 'Dodano!', 26530 sv: 'Tillagd!', 26531 lv: 'Pievienots!', 26532 lt: 'PridÄta!', 26533 ee: 'Lisatud!', 26534 dk: 'Tilføjet!', 26535 gb: 'Added!', 26536 uk: 'Added!', 26537 ie: 'Added!', 26538 us: 'Added!', 26539 ca: 'Added!', 26540 au: 'Added!', 26541 nz: 'Added!', 26542 ru: 'Ðобавлено!' 26543 }, 26544 removed: { 26545 en: 'Removed!', 26546 cs: 'Odebráno!', 26547 sk: 'Odobrané!', 26548 de: 'Entfernt!', 26549 at: 'Entfernt!', 26550 ch: 'Entfernt!', 26551 fr: 'Supprimé!', 26552 be: 'Supprimé!', 26553 lu: 'Supprimé!', 26554 it: 'Rimosso!', 26555 es: '¡Eliminado!', 26556 nl: 'Verwijderd!', 26557 pl: 'UsuniÄto!', 26558 hu: 'EltávolÃtva!', 26559 ro: 'Eliminat!', 26560 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 26561 hr: 'Uklonjeno!', 26562 fi: 'Poistettu!', 26563 gr: 'ÎÏαιÏÎθηκε!', 26564 el: 'ÎÏαιÏÎθηκε!', 26565 no: 'Fjernet!', 26566 'pt-PT': 'Removido!', 26567 sl: 'Odstranjeno!', 26568 sv: 'Borttaget!', 26569 lv: 'NoÅemts!', 26570 lt: 'PaÅ¡alinta!', 26571 ee: 'Eemaldatud!', 26572 dk: 'Fjernet!', 26573 gb: 'Removed!', 26574 uk: 'Removed!', 26575 ie: 'Removed!', 26576 us: 'Removed!', 26577 ca: 'Removed!', 26578 au: 'Removed!', 26579 nz: 'Removed!', 26580 ru: 'Удалено!' 26581 } 26582 }; 26583 26584 // Tooltip translations for price info 26585 window.tooltipTranslations = { 26586 tooltipPrice: { 26587 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26588 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 26589 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 26590 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 26591 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 26592 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 26593 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 26594 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 26595 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 26596 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 26597 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 26598 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 26599 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 26600 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 26601 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 26602 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 26603 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 26604 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 26605 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 26606 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 26607 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 26608 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 26609 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 26610 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 26611 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
26611iks atskaitÄ«ts, ja piemÄrojams.", 26612 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 26613 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 26614 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 26615 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26616 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26617 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26618 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26619 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26620 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26621 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 26622 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 26623 }, 26624 tooltipOutlet: { 26625 en: "We do not provide additional wholesale discounts on outlet products.", 26626 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 26627 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 26628 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 26629 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 26630 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 26631 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 26632 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 26633 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 26634 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 26635 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 26636 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 26637 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 26638 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 26639 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 26640 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 26641 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 26642 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 26643 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 26644 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 26645 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 26646 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 26647 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 26648 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 26649 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 26650 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 26651 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 26652 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 26653 gb: "We do not provide additional wholesale discounts on outlet products.", 26654 uk: "We do not provide additional wholesale discounts on outlet products.", 26655 ie: "We do not provide additional wholesale discounts on outlet products.", 26656 us: "We do not provide additional wholesale discounts on outlet products.", 26657 ca: "We do not provide additional wholesale discounts on outlet products.", 26658 au: "We do not provide additional wholesale discounts on outlet products.", 26659 nz: "We do not provide additional wholesale discounts on outlet products.", 26660 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 26661 } 26662 }; 26663 26664 // Get current locale from document 26665 window.currentLocale = document.documentElement.lang || 'en'; 26666 26667 // Function to translate compare buttons 26668 window.translateCompareButtons = function() { 26669 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
26670 compareTexts.forEach(function(textEl) { 26671 const button = textEl.closest('.compare-button-simple'); 26672 const isInComparison = button && button.hasAttribute('data-in-comparison'); 26673 26674 if (isInComparison) { 26675 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 26676 textEl.textContent = translation; 26677 } else { 26678 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 26679 textEl.textContent = translation; 26680 } 26681 }); 26682 }; 26683 26684 // Function to format price with space as thousands separator (only for tooltip) 26685 function formatTooltipPrice(price) { 26686 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 26687 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 26688 } 26689 26690 // Function to translate tooltips with price 26691 window.translateTooltips = function() { 26692 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 26693 tooltips.forEach(function(tooltip) { 26694 const icon = tooltip.closest('.price-info-icon'); 26695 if (icon) { 26696 const status = icon.getAttribute('data-status'); 26697 // Check if this is an outlet product 26698 if (status === 'outlet') { 26699 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 26700 tooltip.textContent = translation; 26701 return; // Exit early for outlet products 26702 } 26703 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 26704 // Get wholesale price from the actual price display on the card 26705 const card = icon.closest('[data-product-id]'); 26706 let wholesalePrice = ''; 26707 if (card) { 26708 // Find the main price element on the card 26709 const priceElement = card.querySelector('.price .price-item--regular'); 26710 if (priceElement) { 26711 wholesalePrice = priceElement.textContent.trim(); 26712 } 26713 } 26714 if (retailPrice && wholesalePrice) { 26715 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 26716 let formattedRetailPrice = formatTooltipPrice(retailPrice); 26717 let formattedWholesalePrice = wholesalePrice; 26718 if (window.formatPriceText) { 26719 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 26720 } 26721 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 26722 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 26723 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 26724 tooltip.textContent = translatedText; 26725 } 26726 } 26727 }); 26728 }; 26729 26730 // Function to update button state based on comparison status 26731 window.updateCompareButtonState = function(productId, isInComparison) { 26732 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 26733 buttons.forEach(function(button) { 26734 const buttonContainer = button.closest('.compare-button-container'); 26735 const compareText = button.querySelector('.compare-text'); 26736 26737 if (isInComparison) { 26738 button.setAttribute('data-in-comparison', 'true'); 26739 button.classList.add('in-comparison'); 26740 buttonContainer.classList.add('in-comparison'); 26741 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 26742 compareText.textContent = removeText; 26743 } else { 26744 button.removeAttribute('data-in-comparison'); 26745 button.classList.remove('in-comparison'); 26746 buttonContainer.classList.remove('in-comparison'); 26747 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 26748 compareText.textContent = compareTextTranslation; 26749 } 26750 }); 26751 }; 26752 } 26753 26754 // Initialize compare button states based on localStorage 26755 window.initializeCompareButtonStates = function() {
26756 if (typeof window.RendlCompare !== 'undefined') { 26757 const compareItems = window.RendlCompare.getItems(); 26758 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 26759 const productId = button.getAttribute('data-product-id'); 26760 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 26761 window.updateCompareButtonState(productId, isInComparison); 26762 }); 26763 } 26764 }; 26765 26766 // Compare button UI animation - the actual functionality is handled by compare-system.js 26767 document.addEventListener('DOMContentLoaded', function() { 26768 // Apply translations on page load 26769 if (window.translateCompareButtons) { 26770 window.translateCompareButtons(); 26771 } 26772 26773 // Initialize button states based on comparison data 26774 setTimeout(function() { 26775 if (window.initializeCompareButtonStates) { 26776 window.initializeCompareButtonStates(); 26777 } 26778 }, 100); // Small delay to ensure compare system is loaded 26779 26780 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 26781 // Skip if already has event listener 26782 if (button.hasAttribute('data-compare-initialized')) { 26783 return; 26784 } 26785 button.setAttribute('data-compare-initialized', 'true'); 26786 26787 button.addEventListener('click', function(e) { 26788 var buttonContainer = button.closest('.compare-button-container'); 26789 var compareText = button.querySelector('.compare-text'); 26790 var isInComparison = button.hasAttribute('data-in-comparison'); 26791 var productId = button.getAttribute('data-product-id'); 26792 26793 // Prevent multiple clicks during loading 26794 if (button.classList.contains('loading')) { 26795 return; 26796 } 26797 26798 // Make button always visible during the process 26799 buttonContainer.classList.add('active'); 26800 26801 // Add loading class to show spinner 26802 button.classList.add('loading'); 26803 26804 // UI feedback timing 26805 setTimeout(function() { 26806 // Remove loading class and show success message 26807 button.classList.remove('loading'); 26808 button.classList.add('success'); 26809 26810 if (isInComparison) { 26811 // Removing from comparison 26812 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 26813 26814 // Update button state after removal 26815 setTimeout(function() { 26816 button.classList.remove('success'); 26817 window.updateCompareButtonState(productId, false); 26818 buttonContainer.classList.remove('active'); 26819 }, 1500); 26820 } else { 26821 // Adding to comparison 26822 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 26823 26824 // Update button state after addition 26825 setTimeout(function() { 26826 button.classList.remove('success'); 26827 window.updateCompareButtonState(productId, true); 26828 buttonContainer.classList.remove('active'); 26829 }, 1500); 26830 } 26831 }, 1200); 26832 }); 26833 }); 26834 26835 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 26836 setTimeout(function() { 26837 if (window.translateTooltips) { 26838 window.translateTooltips(); 26839 } 26840 }, 100); 26841 }); 26842 26843 // Ensure compare button states are initialized after RendlCompare is available 26844 document.addEventListener('DOMContentLoaded', function() { 26845 function tryInitCompareButtons() { 26846 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 26847 window.initializeCompareButtonStates(); 26848 } else { 26849 setTimeout(tryInitCompareButtons, 100); 26850 } 26851 } 26852 tryInitCompareButtons(); 26853 }); 26854 26855 // Self-contained wishlist functionality for card-product 26856 (function() { 26857 // Wishlist translations 26858 var wishlistTranslations = { 26859 'en': { 26860 addToWishlist: 'Add to My Favorites', 26861 createCategory: 'Create new category:', 26862 categoryPlaceholder: 'Category name', 26863 createAndAdd: 'Create & Add Item', 26864 alreadyAdded: '(Already added)', 26865 addedToWishlist: 'added to My Favorites', 26866 removedFromWishlist: 'removed from My Favorites', 26867 allFavorites: 'All Favorites' 26868 }, 26869 'cs': { 26870 addToWishlist: 'PÅidat do oblÃbených', 26871 createCategory: 'VytvoÅit novou skupinu:', 26872 categoryPlaceholder: 'Název nové skupiny', 26873 createAndAdd: 'VytvoÅit a pÅidat skupinu', 26874 alreadyAdded: '(Již pÅidáno)', 26875 addedToWishlist: 'pÅidáno do oblÃbených', 26876 removedFromWishlist: 'odebráno z oblÃbených', 26877 allFavorites: 'VÅ¡echny oblÃbené' 26878 }, 26879 'sk': { 26880 addToWishlist: 'PridaÅ¥ do obľúbených', 26881 createCategory: 'VytvoriÅ¥ novú kategóriu:', 26882 categoryPlaceholder: 'Názov kategórie', 26883 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 26884 alreadyAdded: '(Už pridané)', 26885 addedToWishlist: 'pridané do obľúbených', 26886 removedFromWishlist: 'odstránené z obľúbených', 26887 allFavorites: 'VÅ¡etky obľúbené' 26888 }, 26889 'de': { 26890 addToWishlist: 'Zu meinen Favoriten hinzufügen', 26891 createCategory: 'Neue Kategorie erstellen:', 26892 categoryPlaceholder: 'Kategoriename', 26893 createAndAdd: 'Erstellen & hinzufügen', 26894 alreadyAdded: '(Bereits hinzugefügt)', 26895 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 26896 removedFromWishlist: 'aus meinen Favoriten entfernt', 26897 allFavorites: 'Alle Favoriten' 26898 }, 26899 'fr': { 26900 addToWishlist: 'Ajouter à mes favoris', 26901 createCategory: 'Créer une nouvelle catégorie :', 26902 categoryPlaceholder: 'Nom de la catégorie', 26903 createAndAdd: 'Créer et ajouter', 26904 alreadyAdded: '(Déjà ajouté)', 26905 addedToWishlist: 'ajouté à mes favoris', 26906 removedFromWishlist: 'retiré de mes favoris', 26907 allFavorites: 'Tous les favoris' 26908 }, 26909 'it': { 26910 addToWishlist: 'Aggiungi ai preferiti', 26911 createCategory: 'Crea nuova categoria:', 26912 categoryPlaceholder: 'Nome categoria', 26913 createAndAdd: 'Crea e aggiungi', 26914 alreadyAdded: '(Già aggiunto)', 26915 addedToWishlist: 'aggiunto ai preferiti', 26916 removedFromWishlist: 'rimosso dai preferiti', 26917 allFavorites: 'Tutti i preferiti' 26918 }, 26919 'es': { 26920 addToWishlist: 'Añadir a mis favoritos', 26921 createCategory: 'Crear nueva categorÃa:', 26922 categoryPlaceholder: 'Nombre de la categorÃa', 26923 createAndAdd: 'Crear y añadir', 26924 alreadyAdded: '(Ya añadido)', 26925 addedToWishlist: 'añadido a mis favoritos', 26926 removedFromWishlist: 'eliminado de mis favoritos', 26927 allFavorites: 'Todos los favoritos' 26928 }, 26929 'nl': { 26930 addToWishlist: 'Toevoegen aan mijn favorieten', 26931 createCategory: 'Nieuwe categorie aanmaken:', 26932 categoryPlaceholder: 'Categorienaam', 26933 createAndAdd: 'Aanmaken & toevoegen', 26934 alreadyAdded: '(Al toegevoegd)', 26935 addedToWishlist: 'toegevoegd aan mijn favorieten', 26936 removedFromWishlist: 'verwijderd uit mijn favorieten', 26937 allFavorites: 'Alle favorieten' 26938 }, 26939 'pl': { 26940 addToWishlist: 'Dodaj do ulubionych', 26941 createCategory: 'Utwórz nowÄ kategoriÄ:', 26942 categoryPlaceholder: 'Nazwa kategorii', 26943 createAndAdd: 'Utwórz i dodaj', 26944 alreadyAdded: '(Już dodane)', 26945 addedToWishlist: 'dodano do ulubionych', 26946 removedFromWishlist: 'usuniÄto z ulubionych', 26947 allFavorites: 'Wszystkie ulubione' 26948 }, 26949 'hu': { 26950 addToWishlist: 'Hozzáadás a kedvencekhez', 26951 createCategory: 'Ãj kategória létrehozása:', 26952 categoryPlaceholder: 'Kategória neve', 26953 createAndAdd: 'Létrehozás és hozzáadás', 26954 alreadyAdded: '(Már hozzáadva)', 26955 addedToWishlist: 'hozzáadva a kedvencekhez', 26956 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 26957 allFavorites: 'Minden kedvenc' 26958 }, 26959 'ro': { 26960 addToWishlist: 'AdaugÄ la favorite', 26961 createCategory: 'CreeazÄ o nouÄ categorie:', 26962 categoryPlaceholder: 'Nume categorie', 26963 createAndAdd: 'CreeazÄ Èi adaugÄ', 26964 alreadyAdded: '(Deja adÄugat)', 26965 addedToWishlist: 'adÄugat la favorite', 26966 removedFromWishlist: 'eliminat din favorite', 26967 allFavorites: 'Toate preferinÈele' 26968 }, 26969 'bg': { 26970 addToWishlist: 'Ðобави в лÑбими', 26971 createCategory: 'СÑздай нова каÑегоÑиÑ:', 26972 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 26973 createAndAdd: 'СÑздай и добави', 26974 alreadyAdded: '(ÐеÑе добавено)', 26975 addedToWishlist: 'добавено в лÑбими', 26976 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 26977 allFavorites: 'ÐÑиÑки лÑбими' 26978 }, 26979 'hr': { 26980 addToWishlist: 'Dodaj u favorite', 26981 createCategory: 'Kreiraj novu kategoriju:', 26982 categoryPlaceholder: 'Naziv kategorije', 26983 createAndAdd: 'Kreiraj i dodaj', 26984 alreadyAdded: '(VeÄ dodano)', 26985 addedToWishlist: 'dodano u favorite', 26986 removedFromWishlist: 'uklonjeno iz favorita', 26987 allFavorites: 'Sva omiljena' 26988 }, 26989 'fi': { 26990 addToWishlist: 'Lisää suosikkeihin', 26991 createCategory: 'Luo uusi kategoria:', 26992 categoryPlaceholder: 'Kategorian nimi', 26993 createAndAdd: 'Luo ja lisää', 26994 alreadyAdded: '(Jo lisätty)', 26995 addedToWishlist: 'lisätty suosikkeihin', 26996 removedFromWishlist: 'poistettu suosikeista',
26997 allFavorites: 'Kaikki suosikit' 26998 }, 26999 'gr': { 27000 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 27001 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 27002 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 27003 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 27004 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 27005 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 27006 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 27007 allFavorites: 'Îλα Ïα αγαÏημÎνα' 27008 }, 27009 'no': { 27010 addToWishlist: 'Legg til i favoritter', 27011 createCategory: 'Opprett ny kategori:', 27012 categoryPlaceholder: 'Kategorinavn', 27013 createAndAdd: 'Opprett og legg til', 27014 alreadyAdded: '(Allerede lagt til)', 27015 addedToWishlist: 'lagt til i favoritter', 27016 removedFromWishlist: 'fjernet fra favoritter', 27017 allFavorites: 'Alle favoritter' 27018 }, 27019 'pt-PT': { 27020 addToWishlist: 'Adicionar aos favoritos', 27021 createCategory: 'Criar nova categoria:', 27022 categoryPlaceholder: 'Nome da categoria', 27023 createAndAdd: 'Criar e adicionar', 27024 alreadyAdded: '(Já adicionado)', 27025 addedToWishlist: 'adicionado aos favoritos', 27026 removedFromWishlist: 'removido dos favoritos', 27027 allFavorites: 'Todos os favoritos' 27028 }, 27029 'sl': { 27030 addToWishlist: 'Dodaj med priljubljene', 27031 createCategory: 'Ustvari novo kategorijo:', 27032 categoryPlaceholder: 'Ime kategorije', 27033 createAndAdd: 'Ustvari in dodaj', 27034 alreadyAdded: '(Že dodano)', 27035 addedToWishlist: 'dodano med priljubljene', 27036 removedFromWishlist: 'odstranjeno iz priljubljenih', 27037 allFavorites: 'Vsi priljubljeni' 27038 }, 27039 'sv': { 27040 addToWishlist: 'Lägg till i favoriter', 27041 createCategory: 'Skapa ny kategori:', 27042 categoryPlaceholder: 'Kategorinamn', 27043 createAndAdd: 'Skapa och lägg till', 27044 alreadyAdded: '(Redan tillagd)', 27045 addedToWishlist: 'tillagd i favoriter', 27046 removedFromWishlist: 'borttagen frÃ¥n favoriter', 27047 allFavorites: 'Alla favoriter' 27048 }, 27049 'lv': { 27050 addToWishlist: 'Pievienot favorÄ«tiem', 27051 createCategory: 'Izveidot jaunu kategoriju:', 27052 categoryPlaceholder: 'Kategorijas nosaukums', 27053 createAndAdd: 'Izveidot un pievienot', 27054 alreadyAdded: '(Jau pievienots)', 27055 addedToWishlist: 'pievienots favorÄ«tiem', 27056 removedFromWishlist: 'noÅemts no favorÄ«tiem', 27057 allFavorites: 'Visas favorÄ«tus' 27058 }, 27059 'lt': { 27060 addToWishlist: 'PridÄti į mÄgstamiausius', 27061 createCategory: 'Sukurti naujÄ kategorijÄ :', 27062 categoryPlaceholder: 'Kategorijos pavadinimas', 27063 createAndAdd: 'Sukurti ir pridÄti', 27064 alreadyAdded: '(Jau pridÄta)', 27065 addedToWishlist: 'pridÄta į mÄgstamiausius', 27066 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 27067 allFavorites: 'Visos mÄgstamiausios' 27068 }, 27069 'ee': { 27070 addToWishlist: 'Lisa lemmikutesse', 27071 createCategory: 'Loo uus kategooria:', 27072 categoryPlaceholder: 'Kategooria nimi', 27073 createAndAdd: 'Loo ja lisa', 27074 alreadyAdded: '(Juba lisatud)', 27075 addedToWishlist: 'lisatud lemmikutesse', 27076 removedFromWishlist: 'eemaldatud lemmikutest', 27077 allFavorites: 'Kõik lemmikud' 27078 }, 27079 'dk': { 27080 addToWishlist: 'Tilføj til favoritter', 27081 createCategory: 'Opret ny kategori:', 27082 categoryPlaceholder: 'Kategorinavn', 27083 createAndAdd: 'Opret og tilføj', 27084 alreadyAdded: '(Allerede tilføjet)', 27085 addedToWishlist: 'tilføjet til favoritter', 27086 removedFromWishlist: 'fjernet fra favoritter', 27087 allFavorites: 'Alle favoritter' 27088 } 27089 }; 27090 27091 function getWishlistLang() { 27092 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 27093 // Normalize for region codes (e.g., pt-PT, sl) 27094 if (lang.startsWith('pt-PT')) return 'pt-PT'; 27095 if (lang.startsWith('sl')) return 'sl'; 27096 if (lang.startsWith('cs')) return 'cs'; 27097 if (lang.startsWith('sk')) return 'sk'; 27098 if (lang.startsWith('de')) return 'de'; 27099 if (lang.startsWith('fr')) return 'fr'; 27100 if (lang.startsWith('it')) return 'it'; 27101 if (lang.startsWith('es')) return 'es'; 27102 if (lang.startsWith('nl')) return 'nl'; 27103 if (lang.startsWith('pl')) return 'pl'; 27104 if (lang.startsWith('hu')) return 'hu'; 27105 if (lang.startsWith('ro')) return 'ro'; 27106 if (lang.startsWith('bg')) return 'bg'; 27107 if (lang.startsWith('hr')) return 'hr'; 27108 if (lang.startsWith('fi')) return 'fi'; 27109 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 27110 if (lang.startsWith('no')) return 'no'; 27111 if (lang.startsWith('sv')) return 'sv'; 27112 if (lang.startsWith('lv')) return 'lv'; 27113 if (lang.startsWith('lt')) return 'lt'; 27114 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 27115 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 27116 return 'en'; 27117 } 27118 27119 // Get or initialize the wishlist array in localStorage 27120 function getWishlist() { 27121 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 27122 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 27123 categories: [ 27124 { 27125 id: 'all-favorites', 27126 name: 'All Favorites', 27127 items: [] 27128 } 27129 ], 27130 version: 2 27131 }; 27132 27133 // Handle migration from old format (array of items) to new format (categories) 27134 if (Array.isArray(wishlist)) { 27135 return { 27136 categories: [ 27137 { 27138 id: 'all-favorites', 27139 name: 'All Favorites', 27140 items: wishlist 27141 } 27142 ], 27143 version: 2 27144 }; 27145 } 27146 27147 return wishlist; 27148 } 27149 27150 // Save wishlist to localStorage 27151 function saveWishlist(wishlist) { 27152 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 27153 // Dispatch an event so other parts of the site can react to wishlist changes 27154 document.dispatchEvent(new CustomEvent('wishlist:updated', { 27155 detail: { wishlist: wishlist } 27156 })); 27157 27158 // Count total items across all categories 27159 const totalItems = wishlist.categories.reduce((total, category) => { 27160 return total + category.items.length; 27161 }, 0); 27162 27163 // Update all wishlist counters 27164 updateWishlistCounters(totalItems); 27165 } 27166 27167 // Update all wishlist counters on the page 27168 function updateWishlistCounters(count) { 27169 const counters = document.querySelectorAll('.wishlist-count');
27170 counters.forEach(counter => { 27171 counter.textContent = count; 27172 27173 // If the counter is hidden and count > 0, show it 27174 if (count > 0 && counter.hasAttribute('hidden')) { 27175 counter.removeAttribute('hidden'); 27176 } 27177 // If the counter is visible and count = 0, hide it 27178 else if (count === 0 && !counter.hasAttribute('hidden')) { 27179 counter.setAttribute('hidden', 'true'); 27180 } 27181 }); 27182 } 27183 27184 // Check if a product is in the wishlist (in any category) 27185 function isInWishlist(productId) { 27186 const wishlist = getWishlist(); 27187 return wishlist.categories.some(category => 27188 category.items.some(item => item.id === productId) 27189 ); 27190 } 27191 27192 // Get all categories 27193 function getCategories() { 27194 return getWishlist().categories; 27195 } 27196 27197 // Create a new category 27198 function createCategory(name) { 27199 const wishlist = getWishlist(); 27200 const categoryId = 'category-' + Date.now(); 27201 27202 wishlist.categories.push({ 27203 id: categoryId, 27204 name: name, 27205 items: [] 27206 }); 27207 27208 saveWishlist(wishlist); 27209 return categoryId; 27210 } 27211 27212 // Add a product to a specific category 27213 function addToCategory(product, categoryId) { 27214 const wishlist = getWishlist(); 27215 const category = wishlist.categories.find(cat => cat.id === categoryId); 27216 27217 if (!category) return false; 27218 27219 // Check if product already exists in ANY category (not just this one) 27220 if (isInWishlist(product.id)) { 27221 return false; // Product already in wishlist 27222 } 27223 27224 // Add product to category 27225 category.items.push(product); 27226 saveWishlist(wishlist); 27227 27228 // Dispatch event for global sync 27229 document.dispatchEvent(new CustomEvent('wishlist:updated', { 27230 detail: { productId: product.id, added: true } 27231 })); 27232 27233 return true; 27234 } 27235 27236 // Add a product to the default "All Favorites" category 27237 function addToWishlist(product) { 27238 return addToCategory(product, 'all-favorites'); 27239 } 27240 27241 // Remove a product from all categories 27242 function removeFromWishlist(productId) { 27243 const wishlist = getWishlist(); 27244 let removed = false; 27245 27246 wishlist.categories.forEach(category => { 27247 const initialLength = category.items.length; 27248 category.items = category.items.filter(item => item.id !== productId); 27249 if (category.items.length !== initialLength) { 27250 removed = true; 27251 } 27252 }); 27253 27254 if (removed) { 27255 saveWishlist(wishlist); 27256 } 27257 27258 return removed; 27259 } 27260 27261 // Toggle a product in the wishlist 27262 function toggleWishlistItem(product) { 27263 if (isInWishlist(product.id)) { 27264 // If already in wishlist, remove it 27265 const wasRemoved = removeFromWishlist(product.id); 27266 27267 // Update heart icon if the product was successfully removed 27268 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 27269 if (heartIcon && wasRemoved) { 27270 heartIcon.setAttribute('fill', 'none'); 27271 showWishlistToast(false, product.title); 27272 27273 // Dispatch event for global sync 27274 document.dispatchEvent(new CustomEvent('wishlist:updated', { 27275 detail: { productId: product.id, added: false } 27276 })); 27277 } 27278 return wasRemoved; 27279 } else { 27280 // If not in wishlist, show category selection popup 27281 showCategorySelectionPopup(product); 27282 return false; // Don't return true unless we actually add the product 27283 } 27284 } 27285 27286 // Show wishlist category selection popup 27287 function showCategorySelectionPopup(product) { 27288 // Remove any existing popup 27289 const existingPopup = document.getElementById('wishlist-category-popup'); 27290 if (existingPopup) { 27291 existingPopup.remove(); 27292 } 27293 27294 const lang = getWishlistLang(); 27295 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 27296 27297 // Create popup container 27298 const popup = document.createElement('div'); 27299 popup.id = 'wishlist-category-popup'; 27300 popup.className = 'wishlist-category-popup'; 27301 27302 // Create popup content 27303 const content = document.createElement('div'); 27304 content.className = 'wishlist-category-popup-content'; 27305 27306 // Create header 27307 const title = document.createElement('h2'); 27308 title.textContent = translations.addToWishlist; // Translate 27309 27310 const closeButton = document.createElement('button'); 27311 closeButton.className = 'wishlist-category-popup-close'; 27312 closeButton.setAttribute('aria-label', 'Close'); 27313 closeButton.addEventListener('click', () => { 27314 popup.remove(); 27315 }); 27316 27317 // Create category list 27318 const categoryList = document.createElement('div'); 27319 categoryList.className = 'wishlist-category-list'; 27320 27321 // Get categories 27322 const categories = getCategories(); 27323 27324 // Add category options
27325 categories.forEach(category => { 27326 const categoryOption = document.createElement('div'); 27327 categoryOption.className = 'wishlist-category-option'; 27328 27329 // Use translation for default category name 27330 categoryOption.textContent = category.id === 'all-favorites' 27331 ? (translations.allFavorites || category.name) 27332 : category.name; 27333 27334 // Highlight if product already in this category 27335 if (category.items.some(item => item.id === product.id)) { 27336 categoryOption.style.backgroundColor = '#f0f0f0'; 27337 categoryOption.style.color = '#999'; 27338 categoryOption.style.fontStyle = 'italic'; 27339 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 27340 categoryOption.style.cursor = 'default'; 27341 } else { 27342 categoryOption.addEventListener('click', () => { 27343 const wasAdded = addToCategory(product, category.id); 27344 27345 if (wasAdded) { 27346 // Update heart icon after successful addition 27347 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 27348 if (heartIcon) { 27349 heartIcon.setAttribute('fill', '#333333'); 27350 } 27351 27352 showWishlistToast(true, product.title); 27353 popup.remove(); 27354 } 27355 }); 27356 } 27357 27358 categoryList.appendChild(categoryOption); 27359 }); 27360 27361 // Create "add new category" section 27362 const newCategorySection = document.createElement('div'); 27363 newCategorySection.style.borderTop = '1px solid #eee'; 27364 newCategorySection.style.paddingTop = '15px'; 27365 newCategorySection.style.marginTop = '10px'; 27366 27367 const newCategoryLabel = document.createElement('label'); 27368 newCategoryLabel.textContent = translations.createCategory; // Translate 27369 27370 const newCategoryInput = document.createElement('input'); 27371 newCategoryInput.type = 'text'; 27372 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 27373 27374 const createButton = document.createElement('button'); 27375 createButton.className = 'create-category-button'; 27376 createButton.textContent = translations.createAndAdd; // Translate 27377 27378 createButton.addEventListener('click', () => { 27379 const categoryName = newCategoryInput.value.trim(); 27380 if (categoryName) { 27381 const categoryId = createCategory(categoryName); 27382 const wasAdded = addToCategory(product, categoryId); 27383 27384 if (wasAdded) { 27385 // Update heart icon after successful addition 27386 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 27387 if (heartIcon) { 27388 heartIcon.setAttribute('fill', '#333333'); 27389 } 27390 27391 showWishlistToast(true, product.title); 27392 popup.remove(); 27393 } 27394 } 27395 }); 27396 27397 newCategorySection.appendChild(newCategoryLabel); 27398 newCategorySection.appendChild(newCategoryInput); 27399 newCategorySection.appendChild(createButton); 27400 27401 // Assemble popup 27402 content.appendChild(title); 27403 content.appendChild(closeButton); 27404 content.appendChild(categoryList); 27405 content.appendChild(newCategorySection); 27406 popup.appendChild(content); 27407 27408 // Add to document 27409 document.body.appendChild(popup); 27410 27411 // Focus the input 27412 setTimeout(() => { 27413 newCategoryInput.focus(); 27414 }, 100); 27415 27416 // Close when clicking outside content 27417 popup.addEventListener('click', (e) => { 27418 if (e.target === popup) { 27419 popup.remove(); 27420 } 27421 }); 27422 } 27423 27424 // Show a toast notification 27425 function showWishlistToast(added, productTitle) { 27426 // Create or get toast container 27427 let toastContainer = document.getElementById('wishlist-toast'); 27428 if (!toastContainer) { 27429 toastContainer = document.createElement('div'); 27430 toastContainer.id = 'wishlist-toast'; 27431 toastContainer.style.position = 'fixed'; 27432 toastContainer.style.bottom = '20px'; 27433 toastContainer.style.right = '20px'; 27434 toastContainer.style.zIndex = '9999'; 27435 document.body.appendChild(toastContainer); 27436 } 27437 27438 // Create toast 27439 const toast = document.createElement('div'); 27440 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 27441 toast.style.color = 'white'; 27442 toast.style.padding = '12px 20px'; 27443 toast.style.borderRadius = '0'; 27444 toast.style.marginTop = '10px'; 27445 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 27446 toast.style.transition = 'all 0.3s ease'; 27447 toast.style.opacity = '0'; 27448 toast.style.fontFamily = 'Montserrat, sans-serif'; 27449 27450 // Choose text based on action 27451 const lang = getWishlistLang(); 27452 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 27453 toast.textContent = added 27454 ? `${productTitle} ${translations.addedToWishlist}` // Translate 27455 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 27456 27457 // Add to container 27458 toastContainer.appendChild(toast); 27459 27460 // Animate in 27461 setTimeout(() => { 27462 toast.style.opacity = '1'; 27463 }, 10); 27464 27465 // Animate out and remove 27466 setTimeout(() => { 27467 toast.style.opacity = '0'; 27468 setTimeout(() => { 27469 toastContainer.removeChild(toast); 27470 }, 300); 27471 }, 3000); 27472 } 27473 27474 // Initialize wishlist buttons 27475 function initCardWishlistButtons() { 27476 const wishlistButtons = document.querySelectorAll('.card-wis
27476hlist-button'); 27477 27478 wishlistButtons.forEach(button => { 27479 // Skip if already initialized 27480 if (button.dataset.initializedWishlist === 'true') return; 27481 button.dataset.initializedWishlist = 'true'; 27482 27483 const productId = button.getAttribute('data-wishlist-product'); 27484 if (!productId) return; 27485 27486 // Get product details from the card 27487 const card = button.closest('.card-wrapper'); 27488 const productDetails = { 27489 id: productId, 27490 title: card.querySelector('.card__heading')?.textContent.trim() || '', 27491 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 27492 price: card.querySelector('.price')?.textContent.trim() || '', 27493 image: card.querySelector('img')?.src || '', 27494 url: card.querySelector('a[href*="/products/"]')?.href || '' 27495 }; 27496 27497 // Set initial state using global function 27498 const heartIcon = button.querySelector('path'); 27499 if (heartIcon) { 27500 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 27501 heartIcon.setAttribute('fill', '#333333'); 27502 } else { 27503 heartIcon.setAttribute('fill', 'none'); 27504 } 27505 } 27506 27507 // Add click handler 27508 button.addEventListener('click', function(e) { 27509 e.preventDefault(); 27510 e.stopPropagation(); 27511 e.stopImmediatePropagation(); 27512 toggleWishlistItem(productDetails); 27513 }); 27514 27515 // Prevent navigation on mousedown/touchstart 27516 button.addEventListener('mousedown', function(e) { 27517 e.preventDefault(); 27518 e.stopPropagation(); 27519 }); 27520 27521 button.addEventListener('touchstart', function(e) { 27522 e.preventDefault(); 27523 e.stopPropagation(); 27524 }); 27525 }); 27526 } 27527 27528 // Initialize the wishlist counter on page load 27529 const wishlist = getWishlist(); 27530 const totalItems = wishlist.categories.reduce((total, category) => { 27531 return total + category.items.length; 27532 }, 0); 27533 updateWishlistCounters(totalItems); 27534 27535 // Initialize on DOM ready 27536 if (document.readyState === 'loading') { 27537 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 27538 } else { 27539 initCardWishlistButtons(); 27540 } 27541 27542 // Reinitialize on Shopify section load 27543 document.addEventListener('shopify:section:load', function() { 27544 setTimeout(initCardWishlistButtons, 100); 27545 }); 27546 27547 // Listen for wishlist updates from other parts of the site 27548 document.addEventListener('wishlist:updated', function() { 27549 setTimeout(initCardWishlistButtons, 100); 27550 }); 27551 })(); 27552</script>
27552 27553 27554<!-- Price info icon styles --> 27555<style> 27556 /* Price container with icon */ 27557 .price-container-with-info { 27558 position: relative; 27559 display: flex; 27560 align-items: center; 27561 gap: 8px; 27562 } 27563 27564 /* Info icon - hidden by default, shown on card hover */ 27565 .price-info-icon { 27566 position: relative; 27567 display: inline-flex; 27568 align-items: center; 27569 justify-content: center; 27570 color: #666; 27571 cursor: help; 27572 opacity: 0; 27573 transition: opacity 0.3s ease; 27574 27575 padding: 4px; /* Add padding to increase clickable area */ 27576 min-width: 20px; /* Ensure minimum clickable area */ 27577 min-height: 20px; 27578 z-index: 15; /* Above everything else including compare button */ 27579 pointer-events: auto; /* Allow interaction */ 27580 } 27581 27582 /* Show icon on card hover */ 27583 .card-wrapper:hover .price-info-icon { 27584 opacity: 1; 27585 } 27586 27587 .price-info-icon svg { 27588 width: 14px; 27589 height: 14px; 27590 stroke-width: 1.5; 27591 } 27592 27593 /* Tooltip styles */ 27594 .price-info-tooltip { 27595 position: absolute; 27596 bottom: calc(100% + 6px); 27597 top: auto; 27598 left: 0; 27599 transform: none; 27600 min-width: 310px; 27601 background: #FFFFFF; 27602 color: #232323; 27603 border: 1px solid #EEEEEE; 27604 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 27605 padding: 12px 16px; 27606 font-size: 13px; 27607 font-family: 'Montserrat', sans-serif; 27608 z-index: 10000; 27609 opacity: 0; 27610 transition: opacity 0.18s; 27611 white-space: pre-line; 27612 text-align: left; 27613 border-radius: 0; 27614 visibility: hidden; 27615 pointer-events: none; 27616 } 27617 27618 /* Show tooltip on icon hover */ 27619 .price-info-icon:hover .price-info-tooltip { 27620 visibility: visible; 27621 opacity: 1; 27622 } 27623 27624 /* Ensure tooltip is never clipped */ 27625 .price-container-with-info, 27626 .card-information, 27627 .card__content { 27628 overflow: visible !important; 27629 } 27630 27631 /* Mobile adjustments */ 27632 @media screen and (max-width: 768px) { 27633 .price-info-tooltip { 27634 min-width: 200px; 27635 font-size: 12px; 27636 padding: 10px 12px; 27637 } 27638 } 27639</style> 27640 27641 </li> 27642 <li 27643 class="grid__item" 27644 27645 > 27646 27647<div class="card-wrapper product-card-wrapper underline-links-hover"> 27648 27649 <div 27650 class=" 27651 card card--standard 27652 card--media 27653 27654 27655 27656 27657 27658 " 27659 style="--ratio-percent: 100.0%;" 27660 data-product-id="9746933023018" 27661 data-description="Bolardo de exterior de aluminio macizo con LED incorporado y difusor de color ópalo, de la serie ELIA." 27662 data-status-in-sortiment="VYB" 27663 data-ip-rate="IP44" 27664 27665 data-variant-id="52387954622762" 27666 data-price="158.00 EUR" 27667 data-compare-at-price="" 27668 data-available="true" 27669 data-barcode="8595685426938" 27670 data-ip-rate="IP44" 27671 data-lumens="720" 27672 data-power-source="" 27673 data-watt="9.0" 27674 data-kelvin="3000" 27675 data-light-color="" 27676 data-diameter="" 27677 data-weight-netto="1200.0" 27678 data-weight-unit="g" 27679 data-mounting-hole-size="" 27680 data-recess-depth="" 27681 data-suspension-lenght="" 27682 data-turn-angle="" 27683 data-tilt-angle="" 27684 data-switch="" 27685 data-socket="" 27686 data-light-source-recomended="" 27687 data-height="60" 27688 data-length="" 27689 data-Length="" 27690 > 27691 <div 27692 class="card__inner color-scheme-2 gradient ratio" 27693 style="--ratio-percent: 100.0%;" 27694 > 27695 27696 27697<div class="ip-rate-badge"> 27698 <span>IP44</span> 27699 </div><div class="card__media"> 27700 <a class="card__media-link-content" href="/products/elia-floor-lamp" aria-label="ELIA DE PIÃ"> 27701 <div class="media media--transparent media--hover-effect"> 27702 27703 <img 27704 class="product-image motion-reduce" 27705 srcset="//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=165 165w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=360 360w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=533 533w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=720 720w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=940 940w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=1066 1066w,//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078 3162w 27706 " 27707 src="//rendl.es/cdn/shop/files/r13932-1.jpg?v=1767662078&width=533" 27708 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 27709 alt="RENDL outdoor lamp ELIA floor anthracite grey 230V LED 9W IP44 3000K R13932 1" 27710 27711 loading="lazy" 27712 27713 width="3162" 27714 height="3162" 27715 > 27716 27717<img 27718 class="product-image motion-reduce" 27719 srcset="//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=165 165w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=360 360w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=533 533w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=720 720w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=940 940w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=1066 1066w,//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251 4899w 27720 " 27721 src="//rendl.es/cdn/shop/files/r13932-2.jpg?v=1745935251&width=533" 27722 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 27723 alt="" 27724 loading="lazy" 27725 width="4899" 27726 height="4899" 27727 ></div> 27728 </a> 27729 27730<div class="card-media-icons"><div class="energy-label-icon"> 27731 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 27732 <div class="energy-label-tooltip">Clase energética G 27733</div> 27734 </div></div><div class="card-variant-swatches"><a 27735 class="card-variant-swatch" 27736 href="/products/elia-floor-lamp?variant=52387954622762" 27737 27738 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 27739 27740 aria-label="gris antracita" 27741 >
27742 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 27743 <div class="card__information"> 27744 <h3 27745 class="card__heading" 27746 27747 > 27748 <a 27749 href="/products/elia-floor-lamp" 27750 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746933023018" 27751 class="full-unstyled-link" 27752 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746933023018 NoMediaStandardBadge-template--28113427169578__product-grid-9746933023018" 27753 > 27754 ELIA DE PIà 27755 </a> 27756 </h3> 27757 </div> 27758 <div class="card__badge bottom left"></div> 27759 </div> 27760 </div> 27761 <div class="card__content"> 27762 <div class="card__information"> 27763 <h3 27764 class="card__heading h5" 27765 27766 id="title-template--28113427169578__product-grid-9746933023018" 27767 27768 > 27769 <a 27770 href="/products/elia-floor-lamp" 27771 id="CardLink-template--28113427169578__product-grid-9746933023018" 27772 class="full-unstyled-link" 27773 aria-labelledby="CardLink-template--28113427169578__product-grid-9746933023018 Badge-template--28113427169578__product-grid-9746933023018" 27774 > 27775 ELIA DE PIà 27776 </a> 27777 </h3><div class="card__description"> 27778 Bolardo de exterior de aluminio macizo con LED incorporado y difusor de color ópalo, de la serie ELIA. 27779 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 27780 27781<div 27782 class=" 27783 price " 27784 > 27785 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 27786 <span class="price-item price-item--regular"> 27787 158.00 EUR 27788 </span></div> 27789 <div class="price__sale"> 27790 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 27791 <span> 27792 <s class="price-item price-item--regular"> 27793 27794 27795 27796 </s> 27797 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 27798 <span class="price-item price-item--sale price-item--last"> 27799 158.00 EUR 27800 </span> 27801 </div> 27802 <small class="unit-price caption hidden"> 27803 <span class="visually-hidden">Precio unitario</span> 27804 <span class="price-item price-item--last"> 27805 <span></span> 27806 <span aria-hidden="true">/</span> 27807 <span class="visually-hidden"> por </span> 27808 <span> 27809 </span> 27810 </span> 27811 </small> 27812 </div></div> 27813 27814 27815</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 27816 <button class="compare-button-simple" 27817 data-product-id="9746933023018" 27818 data-product-title="ELIA DE PIÃ" 27819 data-product-handle="elia-floor-lamp"> 27820 <span class="compare-button-content"> 27821 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 27822 <span class="compare-text" data-translate="compare">compare</span> 27823 </span> 27824 <span class="compare-spinner-small"> 27825 <!-- Small spinner for button --> 27826 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 27827 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 27828 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 27829 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
27829inite"/> 27830 </path> 27831 </svg> 27832 </span> 27833 </button> 27834 27835 <!-- Wishlist button next to compare button --> 27836 <button type="button" class="card-wishlist-button" data-wishlist-product="9746933023018"> 27837 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 27838 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 27839 </svg> 27840 </button> 27841 </div></div> 27842 </div> 27843 27844 27845 27846 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746933023018" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 27847 type="hidden" 27848 name="id" 27849 value="52387954622762" 27850 class="product-variant-id" 27851 27852 > 27853 <button 27854 id="quick-add-template--28113427169578__product-grid9746933023018-submit" 27855 type="submit" 27856 name="add" 27857 class="quick-add__submit button button--full-width button--secondary" 27858 aria-haspopup="dialog" 27859 aria-labelledby="quick-add-template--28113427169578__product-grid9746933023018-submit title-template--28113427169578__product-grid-9746933023018" 27860 aria-live="polite" 27861 data-sold-out-message="true" 27862 27863 > 27864 <span>Agregar al carrito 27865</span> 27866 <span class="sold-out-message hidden"> 27867 En camino 27868 </span> 27869 27870<div class="loading__spinner hidden"> 27871 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 27872 27873</div> 27874</button><input type="hidden" name="product-id" value="9746933023018" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 27875 27876 <div class="card__badge bottom left"></div> 27877 </div> 27878 </div> 27879 </div>
27879<script> 27880 // Initialize global compare translations only once 27881 if (typeof window.compareButtonTranslations === 'undefined') { 27882 window.compareButtonTranslations = { 27883 compare: { 27884 en: 'compare', 27885 cs: 'porovnat', 27886 sk: 'porovnaÅ¥', 27887 de: 'vergleichen', 27888 at: 'vergleichen', 27889 ch: 'vergleichen', 27890 fr: 'comparer', 27891 be: 'comparer', 27892 lu: 'comparer', 27893 it: 'confronta', 27894 es: 'comparar', 27895 nl: 'vergelijken', 27896 pl: 'porównaj', 27897 hu: 'összehasonlÃt', 27898 ro: 'comparÄ', 27899 bg: 'ÑÑавни', 27900 hr: 'usporedi', 27901 fi: 'vertaile', 27902 gr: 'ÏÏγκÏιÏη', 27903 el: 'ÏÏγκÏιÏη', 27904 no: 'sammenlign', 27905 'pt-PT': 'comparar', 27906 sl: 'primerjaj', 27907 sv: 'jämför', 27908 lv: 'salÄ«dzinÄt', 27909 lt: 'palyginti', 27910 ee: 'võrdle', 27911 dk: 'sammenlign', 27912 gb: 'compare', 27913 uk: 'compare', 27914 ie: 'compare', 27915 us: 'compare', 27916 ca: 'compare', 27917 au: 'compare', 27918 nz: 'compare', 27919 ru: 'ÑÑавниÑÑ' 27920 }, 27921 remove: { 27922 en: 'remove', 27923 cs: 'odebrat', 27924 sk: 'odobraÅ¥', 27925 de: 'entfernen', 27926 at: 'entfernen', 27927 ch: 'entfernen', 27928 fr: 'supprimer', 27929 be: 'supprimer', 27930 lu: 'supprimer', 27931 it: 'rimuovi', 27932 es: 'eliminar', 27933 nl: 'verwijderen', 27934 pl: 'usuÅ', 27935 hu: 'eltávolÃt', 27936 ro: 'eliminÄ', 27937 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 27938 hr: 'ukloni', 27939 fi: 'poista', 27940 gr: 'αÏαίÏεÏη', 27941 el: 'αÏαίÏεÏη', 27942 no: 'fjern', 27943 'pt-PT': 'remover', 27944 sl: 'odstrani', 27945 sv: 'ta bort', 27946 lv: 'noÅemt', 27947 lt: 'paÅ¡alinti', 27948 ee: 'eemalda', 27949 dk: 'fjern', 27950 gb: 'remove', 27951 uk: 'remove', 27952 ie: 'remove', 27953 us: 'remove', 27954 ca: 'remove', 27955 au: 'remove', 27956 nz: 'remove', 27957 ru: 'ÑдалиÑÑ' 27958 }, 27959 added: { 27960 en: 'Added!', 27961 cs: 'PÅidáno!', 27962 sk: 'Pridané!', 27963 de: 'Hinzugefügt!', 27964 at: 'Hinzugefügt!', 27965 ch: 'Hinzugefügt!', 27966 fr: 'Ajouté!', 27967 be: 'Ajouté!', 27968 lu: 'Ajouté!', 27969 it: 'Aggiunto!', 27970 es: '¡Añadido!', 27971 nl: 'Toegevoegd!', 27972 pl: 'Dodano!', 27973 hu: 'Hozzáadva!', 27974 ro: 'AdÄugat!', 27975 bg: 'Ðобавено!', 27976 hr: 'Dodano!', 27977 fi: 'Lisätty!', 27978 gr: 'Î ÏοÏÏÎθηκε!', 27979 el: 'Î ÏοÏÏÎθηκε!', 27980 no: 'Lagt til!', 27981 'pt-PT': 'Adicionado!', 27982 sl: 'Dodano!', 27983 sv: 'Tillagd!', 27984 lv: 'Pievienots!', 27985 lt: 'PridÄta!', 27986 ee: 'Lisatud!', 27987 dk: 'Tilføjet!', 27988 gb: 'Added!', 27989 uk: 'Added!', 27990 ie: 'Added!', 27991 us: 'Added!', 27992 ca: 'Added!', 27993 au: 'Added!', 27994 nz: 'Added!', 27995 ru: 'Ðобавлено!' 27996 }, 27997 removed: { 27998 en: 'Removed!', 27999 cs: 'Odebráno!', 28000 sk: 'Odobrané!', 28001 de: 'Entfernt!', 28002 at: 'Entfernt!', 28003 ch: 'Entfernt!', 28004 fr: 'Supprimé!', 28005 be: 'Supprimé!', 28006 lu: 'Supprimé!', 28007 it: 'Rimosso!', 28008 es: '¡Eliminado!', 28009 nl: 'Verwijderd!', 28010 pl: 'UsuniÄto!', 28011 hu: 'EltávolÃtva!', 28012 ro: 'Eliminat!', 28013 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 28014 hr: 'Uklonjeno!', 28015 fi: 'Poistettu!', 28016 gr: 'ÎÏαιÏÎθηκε!', 28017 el: 'ÎÏαιÏÎθηκε!', 28018 no: 'Fjernet!', 28019 'pt-PT': 'Removido!', 28020 sl: 'Odstranjeno!', 28021 sv: 'Borttaget!', 28022 lv: 'NoÅemts!', 28023 lt: 'PaÅ¡alinta!', 28024 ee: 'Eemaldatud!', 28025 dk: 'Fjernet!', 28026 gb: 'Removed!', 28027 uk: 'Removed!', 28028 ie: 'Removed!', 28029 us: 'Removed!', 28030 ca: 'Removed!', 28031 au: 'Removed!', 28032 nz: 'Removed!', 28033 ru: 'Удалено!' 28034 } 28035 }; 28036 28037 // Tooltip translations for price info 28038 window.tooltipTranslations = { 28039 tooltipPrice: { 28040 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28041 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 28042 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 28043 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 28044 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 28045 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 28046 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 28047 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 28048 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 28049 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 28050 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 28051 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 28052 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 28053 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 28054 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 28055 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 28056 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 28057 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 28058 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 28059 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 28060 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 28061 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 28062 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 28063 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 28064 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
28064iks atskaitÄ«ts, ja piemÄrojams.", 28065 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 28066 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 28067 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 28068 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28069 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28070 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28071 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28072 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28073 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28074 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 28075 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 28076 }, 28077 tooltipOutlet: { 28078 en: "We do not provide additional wholesale discounts on outlet products.", 28079 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 28080 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 28081 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 28082 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 28083 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 28084 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 28085 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 28086 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 28087 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 28088 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 28089 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 28090 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 28091 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 28092 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 28093 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 28094 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 28095 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 28096 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 28097 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 28098 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 28099 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 28100 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 28101 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 28102 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 28103 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 28104 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 28105 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 28106 gb: "We do not provide additional wholesale discounts on outlet products.", 28107 uk: "We do not provide additional wholesale discounts on outlet products.", 28108 ie: "We do not provide additional wholesale discounts on outlet products.", 28109 us: "We do not provide additional wholesale discounts on outlet products.", 28110 ca: "We do not provide additional wholesale discounts on outlet products.", 28111 au: "We do not provide additional wholesale discounts on outlet products.", 28112 nz: "We do not provide additional wholesale discounts on outlet products.", 28113 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 28114 } 28115 }; 28116 28117 // Get current locale from document 28118 window.currentLocale = document.documentElement.lang || 'en'; 28119 28120 // Function to translate compare buttons 28121 window.translateCompareButtons = function() { 28122 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
28123 compareTexts.forEach(function(textEl) { 28124 const button = textEl.closest('.compare-button-simple'); 28125 const isInComparison = button && button.hasAttribute('data-in-comparison'); 28126 28127 if (isInComparison) { 28128 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 28129 textEl.textContent = translation; 28130 } else { 28131 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 28132 textEl.textContent = translation; 28133 } 28134 }); 28135 }; 28136 28137 // Function to format price with space as thousands separator (only for tooltip) 28138 function formatTooltipPrice(price) { 28139 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 28140 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 28141 } 28142 28143 // Function to translate tooltips with price 28144 window.translateTooltips = function() { 28145 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 28146 tooltips.forEach(function(tooltip) { 28147 const icon = tooltip.closest('.price-info-icon'); 28148 if (icon) { 28149 const status = icon.getAttribute('data-status'); 28150 // Check if this is an outlet product 28151 if (status === 'outlet') { 28152 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 28153 tooltip.textContent = translation; 28154 return; // Exit early for outlet products 28155 } 28156 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 28157 // Get wholesale price from the actual price display on the card 28158 const card = icon.closest('[data-product-id]'); 28159 let wholesalePrice = ''; 28160 if (card) { 28161 // Find the main price element on the card 28162 const priceElement = card.querySelector('.price .price-item--regular'); 28163 if (priceElement) { 28164 wholesalePrice = priceElement.textContent.trim(); 28165 } 28166 } 28167 if (retailPrice && wholesalePrice) { 28168 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 28169 let formattedRetailPrice = formatTooltipPrice(retailPrice); 28170 let formattedWholesalePrice = wholesalePrice; 28171 if (window.formatPriceText) { 28172 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 28173 } 28174 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 28175 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 28176 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 28177 tooltip.textContent = translatedText; 28178 } 28179 } 28180 }); 28181 }; 28182 28183 // Function to update button state based on comparison status 28184 window.updateCompareButtonState = function(productId, isInComparison) { 28185 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 28186 buttons.forEach(function(button) { 28187 const buttonContainer = button.closest('.compare-button-container'); 28188 const compareText = button.querySelector('.compare-text'); 28189 28190 if (isInComparison) { 28191 button.setAttribute('data-in-comparison', 'true'); 28192 button.classList.add('in-comparison'); 28193 buttonContainer.classList.add('in-comparison'); 28194 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 28195 compareText.textContent = removeText; 28196 } else { 28197 button.removeAttribute('data-in-comparison'); 28198 button.classList.remove('in-comparison'); 28199 buttonContainer.classList.remove('in-comparison'); 28200 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 28201 compareText.textContent = compareTextTranslation; 28202 } 28203 }); 28204 }; 28205 } 28206 28207 // Initialize compare button states based on localStorage 28208 window.initializeCompareButtonStates = function() {
28209 if (typeof window.RendlCompare !== 'undefined') { 28210 const compareItems = window.RendlCompare.getItems(); 28211 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 28212 const productId = button.getAttribute('data-product-id'); 28213 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 28214 window.updateCompareButtonState(productId, isInComparison); 28215 }); 28216 } 28217 }; 28218 28219 // Compare button UI animation - the actual functionality is handled by compare-system.js 28220 document.addEventListener('DOMContentLoaded', function() { 28221 // Apply translations on page load 28222 if (window.translateCompareButtons) { 28223 window.translateCompareButtons(); 28224 } 28225 28226 // Initialize button states based on comparison data 28227 setTimeout(function() { 28228 if (window.initializeCompareButtonStates) { 28229 window.initializeCompareButtonStates(); 28230 } 28231 }, 100); // Small delay to ensure compare system is loaded 28232 28233 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 28234 // Skip if already has event listener 28235 if (button.hasAttribute('data-compare-initialized')) { 28236 return; 28237 } 28238 button.setAttribute('data-compare-initialized', 'true'); 28239 28240 button.addEventListener('click', function(e) { 28241 var buttonContainer = button.closest('.compare-button-container'); 28242 var compareText = button.querySelector('.compare-text'); 28243 var isInComparison = button.hasAttribute('data-in-comparison'); 28244 var productId = button.getAttribute('data-product-id'); 28245 28246 // Prevent multiple clicks during loading 28247 if (button.classList.contains('loading')) { 28248 return; 28249 } 28250 28251 // Make button always visible during the process 28252 buttonContainer.classList.add('active'); 28253 28254 // Add loading class to show spinner 28255 button.classList.add('loading'); 28256 28257 // UI feedback timing 28258 setTimeout(function() { 28259 // Remove loading class and show success message 28260 button.classList.remove('loading'); 28261 button.classList.add('success'); 28262 28263 if (isInComparison) { 28264 // Removing from comparison 28265 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 28266 28267 // Update button state after removal 28268 setTimeout(function() { 28269 button.classList.remove('success'); 28270 window.updateCompareButtonState(productId, false); 28271 buttonContainer.classList.remove('active'); 28272 }, 1500); 28273 } else { 28274 // Adding to comparison 28275 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 28276 28277 // Update button state after addition 28278 setTimeout(function() { 28279 button.classList.remove('success'); 28280 window.updateCompareButtonState(productId, true); 28281 buttonContainer.classList.remove('active'); 28282 }, 1500); 28283 } 28284 }, 1200); 28285 }); 28286 }); 28287 28288 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 28289 setTimeout(function() { 28290 if (window.translateTooltips) { 28291 window.translateTooltips(); 28292 } 28293 }, 100); 28294 }); 28295 28296 // Ensure compare button states are initialized after RendlCompare is available 28297 document.addEventListener('DOMContentLoaded', function() { 28298 function tryInitCompareButtons() { 28299 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 28300 window.initializeCompareButtonStates(); 28301 } else { 28302 setTimeout(tryInitCompareButtons, 100); 28303 } 28304 } 28305 tryInitCompareButtons(); 28306 }); 28307 28308 // Self-contained wishlist functionality for card-product 28309 (function() { 28310 // Wishlist translations 28311 var wishlistTranslations = { 28312 'en': { 28313 addToWishlist: 'Add to My Favorites', 28314 createCategory: 'Create new category:', 28315 categoryPlaceholder: 'Category name', 28316 createAndAdd: 'Create & Add Item', 28317 alreadyAdded: '(Already added)', 28318 addedToWishlist: 'added to My Favorites', 28319 removedFromWishlist: 'removed from My Favorites', 28320 allFavorites: 'All Favorites' 28321 }, 28322 'cs': { 28323 addToWishlist: 'PÅidat do oblÃbených', 28324 createCategory: 'VytvoÅit novou skupinu:', 28325 categoryPlaceholder: 'Název nové skupiny', 28326 createAndAdd: 'VytvoÅit a pÅidat skupinu', 28327 alreadyAdded: '(Již pÅidáno)', 28328 addedToWishlist: 'pÅidáno do oblÃbených', 28329 removedFromWishlist: 'odebráno z oblÃbených', 28330 allFavorites: 'VÅ¡echny oblÃbené' 28331 }, 28332 'sk': { 28333 addToWishlist: 'PridaÅ¥ do obľúbených', 28334 createCategory: 'VytvoriÅ¥ novú kategóriu:', 28335 categoryPlaceholder: 'Názov kategórie', 28336 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 28337 alreadyAdded: '(Už pridané)', 28338 addedToWishlist: 'pridané do obľúbených', 28339 removedFromWishlist: 'odstránené z obľúbených', 28340 allFavorites: 'VÅ¡etky obľúbené' 28341 }, 28342 'de': { 28343 addToWishlist: 'Zu meinen Favoriten hinzufügen', 28344 createCategory: 'Neue Kategorie erstellen:', 28345 categoryPlaceholder: 'Kategoriename', 28346 createAndAdd: 'Erstellen & hinzufügen', 28347 alreadyAdded: '(Bereits hinzugefügt)', 28348 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 28349 removedFromWishlist: 'aus meinen Favoriten entfernt', 28350 allFavorites: 'Alle Favoriten' 28351 }, 28352 'fr': { 28353 addToWishlist: 'Ajouter à mes favoris', 28354 createCategory: 'Créer une nouvelle catégorie :', 28355 categoryPlaceholder: 'Nom de la catégorie', 28356 createAndAdd: 'Créer et ajouter', 28357 alreadyAdded: '(Déjà ajouté)', 28358 addedToWishlist: 'ajouté à mes favoris', 28359 removedFromWishlist: 'retiré de mes favoris', 28360 allFavorites: 'Tous les favoris' 28361 }, 28362 'it': { 28363 addToWishlist: 'Aggiungi ai preferiti', 28364 createCategory: 'Crea nuova categoria:', 28365 categoryPlaceholder: 'Nome categoria', 28366 createAndAdd: 'Crea e aggiungi', 28367 alreadyAdded: '(Già aggiunto)', 28368 addedToWishlist: 'aggiunto ai preferiti', 28369 removedFromWishlist: 'rimosso dai preferiti', 28370 allFavorites: 'Tutti i preferiti' 28371 }, 28372 'es': { 28373 addToWishlist: 'Añadir a mis favoritos', 28374 createCategory: 'Crear nueva categorÃa:', 28375 categoryPlaceholder: 'Nombre de la categorÃa', 28376 createAndAdd: 'Crear y añadir', 28377 alreadyAdded: '(Ya añadido)', 28378 addedToWishlist: 'añadido a mis favoritos', 28379 removedFromWishlist: 'eliminado de mis favoritos', 28380 allFavorites: 'Todos los favoritos' 28381 }, 28382 'nl': { 28383 addToWishlist: 'Toevoegen aan mijn favorieten', 28384 createCategory: 'Nieuwe categorie aanmaken:', 28385 categoryPlaceholder: 'Categorienaam', 28386 createAndAdd: 'Aanmaken & toevoegen', 28387 alreadyAdded: '(Al toegevoegd)', 28388 addedToWishlist: 'toegevoegd aan mijn favorieten', 28389 removedFromWishlist: 'verwijderd uit mijn favorieten', 28390 allFavorites: 'Alle favorieten' 28391 }, 28392 'pl': { 28393 addToWishlist: 'Dodaj do ulubionych', 28394 createCategory: 'Utwórz nowÄ kategoriÄ:', 28395 categoryPlaceholder: 'Nazwa kategorii', 28396 createAndAdd: 'Utwórz i dodaj', 28397 alreadyAdded: '(Już dodane)', 28398 addedToWishlist: 'dodano do ulubionych', 28399 removedFromWishlist: 'usuniÄto z ulubionych', 28400 allFavorites: 'Wszystkie ulubione' 28401 }, 28402 'hu': { 28403 addToWishlist: 'Hozzáadás a kedvencekhez', 28404 createCategory: 'Ãj kategória létrehozása:', 28405 categoryPlaceholder: 'Kategória neve', 28406 createAndAdd: 'Létrehozás és hozzáadás', 28407 alreadyAdded: '(Már hozzáadva)', 28408 addedToWishlist: 'hozzáadva a kedvencekhez', 28409 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 28410 allFavorites: 'Minden kedvenc' 28411 }, 28412 'ro': { 28413 addToWishlist: 'AdaugÄ la favorite', 28414 createCategory: 'CreeazÄ o nouÄ categorie:', 28415 categoryPlaceholder: 'Nume categorie', 28416 createAndAdd: 'CreeazÄ Èi adaugÄ', 28417 alreadyAdded: '(Deja adÄugat)', 28418 addedToWishlist: 'adÄugat la favorite', 28419 removedFromWishlist: 'eliminat din favorite', 28420 allFavorites: 'Toate preferinÈele' 28421 }, 28422 'bg': { 28423 addToWishlist: 'Ðобави в лÑбими', 28424 createCategory: 'СÑздай нова каÑегоÑиÑ:', 28425 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 28426 createAndAdd: 'СÑздай и добави', 28427 alreadyAdded: '(ÐеÑе добавено)', 28428 addedToWishlist: 'добавено в лÑбими', 28429 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 28430 allFavorites: 'ÐÑиÑки лÑбими' 28431 }, 28432 'hr': { 28433 addToWishlist: 'Dodaj u favorite', 28434 createCategory: 'Kreiraj novu kategoriju:', 28435 categoryPlaceholder: 'Naziv kategorije', 28436 createAndAdd: 'Kreiraj i dodaj', 28437 alreadyAdded: '(VeÄ dodano)', 28438 addedToWishlist: 'dodano u favorite', 28439 removedFromWishlist: 'uklonjeno iz favorita', 28440 allFavorites: 'Sva omiljena' 28441 }, 28442 'fi': { 28443 addToWishlist: 'Lisää suosikkeihin', 28444 createCategory: 'Luo uusi kategoria:', 28445 categoryPlaceholder: 'Kategorian nimi', 28446 createAndAdd: 'Luo ja lisää', 28447 alreadyAdded: '(Jo lisätty)', 28448 addedToWishlist: 'lisätty suosikkeihin', 28449 removedFromWishlist: 'poistettu suosikeista',
28450 allFavorites: 'Kaikki suosikit' 28451 }, 28452 'gr': { 28453 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 28454 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 28455 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 28456 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 28457 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 28458 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 28459 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 28460 allFavorites: 'Îλα Ïα αγαÏημÎνα' 28461 }, 28462 'no': { 28463 addToWishlist: 'Legg til i favoritter', 28464 createCategory: 'Opprett ny kategori:', 28465 categoryPlaceholder: 'Kategorinavn', 28466 createAndAdd: 'Opprett og legg til', 28467 alreadyAdded: '(Allerede lagt til)', 28468 addedToWishlist: 'lagt til i favoritter', 28469 removedFromWishlist: 'fjernet fra favoritter', 28470 allFavorites: 'Alle favoritter' 28471 }, 28472 'pt-PT': { 28473 addToWishlist: 'Adicionar aos favoritos', 28474 createCategory: 'Criar nova categoria:', 28475 categoryPlaceholder: 'Nome da categoria', 28476 createAndAdd: 'Criar e adicionar', 28477 alreadyAdded: '(Já adicionado)', 28478 addedToWishlist: 'adicionado aos favoritos', 28479 removedFromWishlist: 'removido dos favoritos', 28480 allFavorites: 'Todos os favoritos' 28481 }, 28482 'sl': { 28483 addToWishlist: 'Dodaj med priljubljene', 28484 createCategory: 'Ustvari novo kategorijo:', 28485 categoryPlaceholder: 'Ime kategorije', 28486 createAndAdd: 'Ustvari in dodaj', 28487 alreadyAdded: '(Že dodano)', 28488 addedToWishlist: 'dodano med priljubljene', 28489 removedFromWishlist: 'odstranjeno iz priljubljenih', 28490 allFavorites: 'Vsi priljubljeni' 28491 }, 28492 'sv': { 28493 addToWishlist: 'Lägg till i favoriter', 28494 createCategory: 'Skapa ny kategori:', 28495 categoryPlaceholder: 'Kategorinamn', 28496 createAndAdd: 'Skapa och lägg till', 28497 alreadyAdded: '(Redan tillagd)', 28498 addedToWishlist: 'tillagd i favoriter', 28499 removedFromWishlist: 'borttagen frÃ¥n favoriter', 28500 allFavorites: 'Alla favoriter' 28501 }, 28502 'lv': { 28503 addToWishlist: 'Pievienot favorÄ«tiem', 28504 createCategory: 'Izveidot jaunu kategoriju:', 28505 categoryPlaceholder: 'Kategorijas nosaukums', 28506 createAndAdd: 'Izveidot un pievienot', 28507 alreadyAdded: '(Jau pievienots)', 28508 addedToWishlist: 'pievienots favorÄ«tiem', 28509 removedFromWishlist: 'noÅemts no favorÄ«tiem', 28510 allFavorites: 'Visas favorÄ«tus' 28511 }, 28512 'lt': { 28513 addToWishlist: 'PridÄti į mÄgstamiausius', 28514 createCategory: 'Sukurti naujÄ kategorijÄ :', 28515 categoryPlaceholder: 'Kategorijos pavadinimas', 28516 createAndAdd: 'Sukurti ir pridÄti', 28517 alreadyAdded: '(Jau pridÄta)', 28518 addedToWishlist: 'pridÄta į mÄgstamiausius', 28519 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 28520 allFavorites: 'Visos mÄgstamiausios' 28521 }, 28522 'ee': { 28523 addToWishlist: 'Lisa lemmikutesse', 28524 createCategory: 'Loo uus kategooria:', 28525 categoryPlaceholder: 'Kategooria nimi', 28526 createAndAdd: 'Loo ja lisa', 28527 alreadyAdded: '(Juba lisatud)', 28528 addedToWishlist: 'lisatud lemmikutesse', 28529 removedFromWishlist: 'eemaldatud lemmikutest', 28530 allFavorites: 'Kõik lemmikud' 28531 }, 28532 'dk': { 28533 addToWishlist: 'Tilføj til favoritter', 28534 createCategory: 'Opret ny kategori:', 28535 categoryPlaceholder: 'Kategorinavn', 28536 createAndAdd: 'Opret og tilføj', 28537 alreadyAdded: '(Allerede tilføjet)', 28538 addedToWishlist: 'tilføjet til favoritter', 28539 removedFromWishlist: 'fjernet fra favoritter', 28540 allFavorites: 'Alle favoritter' 28541 } 28542 }; 28543 28544 function getWishlistLang() { 28545 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 28546 // Normalize for region codes (e.g., pt-PT, sl) 28547 if (lang.startsWith('pt-PT')) return 'pt-PT'; 28548 if (lang.startsWith('sl')) return 'sl'; 28549 if (lang.startsWith('cs')) return 'cs'; 28550 if (lang.startsWith('sk')) return 'sk'; 28551 if (lang.startsWith('de')) return 'de'; 28552 if (lang.startsWith('fr')) return 'fr'; 28553 if (lang.startsWith('it')) return 'it'; 28554 if (lang.startsWith('es')) return 'es'; 28555 if (lang.startsWith('nl')) return 'nl'; 28556 if (lang.startsWith('pl')) return 'pl'; 28557 if (lang.startsWith('hu')) return 'hu'; 28558 if (lang.startsWith('ro')) return 'ro'; 28559 if (lang.startsWith('bg')) return 'bg'; 28560 if (lang.startsWith('hr')) return 'hr'; 28561 if (lang.startsWith('fi')) return 'fi'; 28562 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 28563 if (lang.startsWith('no')) return 'no'; 28564 if (lang.startsWith('sv')) return 'sv'; 28565 if (lang.startsWith('lv')) return 'lv'; 28566 if (lang.startsWith('lt')) return 'lt'; 28567 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 28568 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 28569 return 'en'; 28570 } 28571 28572 // Get or initialize the wishlist array in localStorage 28573 function getWishlist() { 28574 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 28575 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 28576 categories: [ 28577 { 28578 id: 'all-favorites', 28579 name: 'All Favorites', 28580 items: [] 28581 } 28582 ], 28583 version: 2 28584 }; 28585 28586 // Handle migration from old format (array of items) to new format (categories) 28587 if (Array.isArray(wishlist)) { 28588 return { 28589 categories: [ 28590 { 28591 id: 'all-favorites', 28592 name: 'All Favorites', 28593 items: wishlist 28594 } 28595 ], 28596 version: 2 28597 }; 28598 } 28599 28600 return wishlist; 28601 } 28602 28603 // Save wishlist to localStorage 28604 function saveWishlist(wishlist) { 28605 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 28606 // Dispatch an event so other parts of the site can react to wishlist changes 28607 document.dispatchEvent(new CustomEvent('wishlist:updated', { 28608 detail: { wishlist: wishlist } 28609 })); 28610 28611 // Count total items across all categories 28612 const totalItems = wishlist.categories.reduce((total, category) => { 28613 return total + category.items.length; 28614 }, 0); 28615 28616 // Update all wishlist counters 28617 updateWishlistCounters(totalItems); 28618 } 28619 28620 // Update all wishlist counters on the page 28621 function updateWishlistCounters(count) { 28622 const counters = document.querySelectorAll('.wishlist-count');
28623 counters.forEach(counter => { 28624 counter.textContent = count; 28625 28626 // If the counter is hidden and count > 0, show it 28627 if (count > 0 && counter.hasAttribute('hidden')) { 28628 counter.removeAttribute('hidden'); 28629 } 28630 // If the counter is visible and count = 0, hide it 28631 else if (count === 0 && !counter.hasAttribute('hidden')) { 28632 counter.setAttribute('hidden', 'true'); 28633 } 28634 }); 28635 } 28636 28637 // Check if a product is in the wishlist (in any category) 28638 function isInWishlist(productId) { 28639 const wishlist = getWishlist(); 28640 return wishlist.categories.some(category => 28641 category.items.some(item => item.id === productId) 28642 ); 28643 } 28644 28645 // Get all categories 28646 function getCategories() { 28647 return getWishlist().categories; 28648 } 28649 28650 // Create a new category 28651 function createCategory(name) { 28652 const wishlist = getWishlist(); 28653 const categoryId = 'category-' + Date.now(); 28654 28655 wishlist.categories.push({ 28656 id: categoryId, 28657 name: name, 28658 items: [] 28659 }); 28660 28661 saveWishlist(wishlist); 28662 return categoryId; 28663 } 28664 28665 // Add a product to a specific category 28666 function addToCategory(product, categoryId) { 28667 const wishlist = getWishlist(); 28668 const category = wishlist.categories.find(cat => cat.id === categoryId); 28669 28670 if (!category) return false; 28671 28672 // Check if product already exists in ANY category (not just this one) 28673 if (isInWishlist(product.id)) { 28674 return false; // Product already in wishlist 28675 } 28676 28677 // Add product to category 28678 category.items.push(product); 28679 saveWishlist(wishlist); 28680 28681 // Dispatch event for global sync 28682 document.dispatchEvent(new CustomEvent('wishlist:updated', { 28683 detail: { productId: product.id, added: true } 28684 })); 28685 28686 return true; 28687 } 28688 28689 // Add a product to the default "All Favorites" category 28690 function addToWishlist(product) { 28691 return addToCategory(product, 'all-favorites'); 28692 } 28693 28694 // Remove a product from all categories 28695 function removeFromWishlist(productId) { 28696 const wishlist = getWishlist(); 28697 let removed = false; 28698 28699 wishlist.categories.forEach(category => { 28700 const initialLength = category.items.length; 28701 category.items = category.items.filter(item => item.id !== productId); 28702 if (category.items.length !== initialLength) { 28703 removed = true; 28704 } 28705 }); 28706 28707 if (removed) { 28708 saveWishlist(wishlist); 28709 } 28710 28711 return removed; 28712 } 28713 28714 // Toggle a product in the wishlist 28715 function toggleWishlistItem(product) { 28716 if (isInWishlist(product.id)) { 28717 // If already in wishlist, remove it 28718 const wasRemoved = removeFromWishlist(product.id); 28719 28720 // Update heart icon if the product was successfully removed 28721 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 28722 if (heartIcon && wasRemoved) { 28723 heartIcon.setAttribute('fill', 'none'); 28724 showWishlistToast(false, product.title); 28725 28726 // Dispatch event for global sync 28727 document.dispatchEvent(new CustomEvent('wishlist:updated', { 28728 detail: { productId: product.id, added: false } 28729 })); 28730 } 28731 return wasRemoved; 28732 } else { 28733 // If not in wishlist, show category selection popup 28734 showCategorySelectionPopup(product); 28735 return false; // Don't return true unless we actually add the product 28736 } 28737 } 28738 28739 // Show wishlist category selection popup 28740 function showCategorySelectionPopup(product) { 28741 // Remove any existing popup 28742 const existingPopup = document.getElementById('wishlist-category-popup'); 28743 if (existingPopup) { 28744 existingPopup.remove(); 28745 } 28746 28747 const lang = getWishlistLang(); 28748 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 28749 28750 // Create popup container 28751 const popup = document.createElement('div'); 28752 popup.id = 'wishlist-category-popup'; 28753 popup.className = 'wishlist-category-popup'; 28754 28755 // Create popup content 28756 const content = document.createElement('div'); 28757 content.className = 'wishlist-category-popup-content'; 28758 28759 // Create header 28760 const title = document.createElement('h2'); 28761 title.textContent = translations.addToWishlist; // Translate 28762 28763 const closeButton = document.createElement('button'); 28764 closeButton.className = 'wishlist-category-popup-close'; 28765 closeButton.setAttribute('aria-label', 'Close'); 28766 closeButton.addEventListener('click', () => { 28767 popup.remove(); 28768 }); 28769 28770 // Create category list 28771 const categoryList = document.createElement('div'); 28772 categoryList.className = 'wishlist-category-list'; 28773 28774 // Get categories 28775 const categories = getCategories(); 28776 28777 // Add category options
28778 categories.forEach(category => { 28779 const categoryOption = document.createElement('div'); 28780 categoryOption.className = 'wishlist-category-option'; 28781 28782 // Use translation for default category name 28783 categoryOption.textContent = category.id === 'all-favorites' 28784 ? (translations.allFavorites || category.name) 28785 : category.name; 28786 28787 // Highlight if product already in this category 28788 if (category.items.some(item => item.id === product.id)) { 28789 categoryOption.style.backgroundColor = '#f0f0f0'; 28790 categoryOption.style.color = '#999'; 28791 categoryOption.style.fontStyle = 'italic'; 28792 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 28793 categoryOption.style.cursor = 'default'; 28794 } else { 28795 categoryOption.addEventListener('click', () => { 28796 const wasAdded = addToCategory(product, category.id); 28797 28798 if (wasAdded) { 28799 // Update heart icon after successful addition 28800 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 28801 if (heartIcon) { 28802 heartIcon.setAttribute('fill', '#333333'); 28803 } 28804 28805 showWishlistToast(true, product.title); 28806 popup.remove(); 28807 } 28808 }); 28809 } 28810 28811 categoryList.appendChild(categoryOption); 28812 }); 28813 28814 // Create "add new category" section 28815 const newCategorySection = document.createElement('div'); 28816 newCategorySection.style.borderTop = '1px solid #eee'; 28817 newCategorySection.style.paddingTop = '15px'; 28818 newCategorySection.style.marginTop = '10px'; 28819 28820 const newCategoryLabel = document.createElement('label'); 28821 newCategoryLabel.textContent = translations.createCategory; // Translate 28822 28823 const newCategoryInput = document.createElement('input'); 28824 newCategoryInput.type = 'text'; 28825 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 28826 28827 const createButton = document.createElement('button'); 28828 createButton.className = 'create-category-button'; 28829 createButton.textContent = translations.createAndAdd; // Translate 28830 28831 createButton.addEventListener('click', () => { 28832 const categoryName = newCategoryInput.value.trim(); 28833 if (categoryName) { 28834 const categoryId = createCategory(categoryName); 28835 const wasAdded = addToCategory(product, categoryId); 28836 28837 if (wasAdded) { 28838 // Update heart icon after successful addition 28839 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 28840 if (heartIcon) { 28841 heartIcon.setAttribute('fill', '#333333'); 28842 } 28843 28844 showWishlistToast(true, product.title); 28845 popup.remove(); 28846 } 28847 } 28848 }); 28849 28850 newCategorySection.appendChild(newCategoryLabel); 28851 newCategorySection.appendChild(newCategoryInput); 28852 newCategorySection.appendChild(createButton); 28853 28854 // Assemble popup 28855 content.appendChild(title); 28856 content.appendChild(closeButton); 28857 content.appendChild(categoryList); 28858 content.appendChild(newCategorySection); 28859 popup.appendChild(content); 28860 28861 // Add to document 28862 document.body.appendChild(popup); 28863 28864 // Focus the input 28865 setTimeout(() => { 28866 newCategoryInput.focus(); 28867 }, 100); 28868 28869 // Close when clicking outside content 28870 popup.addEventListener('click', (e) => { 28871 if (e.target === popup) { 28872 popup.remove(); 28873 } 28874 }); 28875 } 28876 28877 // Show a toast notification 28878 function showWishlistToast(added, productTitle) { 28879 // Create or get toast container 28880 let toastContainer = document.getElementById('wishlist-toast'); 28881 if (!toastContainer) { 28882 toastContainer = document.createElement('div'); 28883 toastContainer.id = 'wishlist-toast'; 28884 toastContainer.style.position = 'fixed'; 28885 toastContainer.style.bottom = '20px'; 28886 toastContainer.style.right = '20px'; 28887 toastContainer.style.zIndex = '9999'; 28888 document.body.appendChild(toastContainer); 28889 } 28890 28891 // Create toast 28892 const toast = document.createElement('div'); 28893 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 28894 toast.style.color = 'white'; 28895 toast.style.padding = '12px 20px'; 28896 toast.style.borderRadius = '0'; 28897 toast.style.marginTop = '10px'; 28898 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 28899 toast.style.transition = 'all 0.3s ease'; 28900 toast.style.opacity = '0'; 28901 toast.style.fontFamily = 'Montserrat, sans-serif'; 28902 28903 // Choose text based on action 28904 const lang = getWishlistLang(); 28905 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 28906 toast.textContent = added 28907 ? `${productTitle} ${translations.addedToWishlist}` // Translate 28908 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 28909 28910 // Add to container 28911 toastContainer.appendChild(toast); 28912 28913 // Animate in 28914 setTimeout(() => { 28915 toast.style.opacity = '1'; 28916 }, 10); 28917 28918 // Animate out and remove 28919 setTimeout(() => { 28920 toast.style.opacity = '0'; 28921 setTimeout(() => { 28922 toastContainer.removeChild(toast); 28923 }, 300); 28924 }, 3000); 28925 } 28926 28927 // Initialize wishlist buttons 28928 function initCardWishlistButtons() { 28929 const wishlistButtons = document.querySelectorAll('.card-wis
28929hlist-button'); 28930 28931 wishlistButtons.forEach(button => { 28932 // Skip if already initialized 28933 if (button.dataset.initializedWishlist === 'true') return; 28934 button.dataset.initializedWishlist = 'true'; 28935 28936 const productId = button.getAttribute('data-wishlist-product'); 28937 if (!productId) return; 28938 28939 // Get product details from the card 28940 const card = button.closest('.card-wrapper'); 28941 const productDetails = { 28942 id: productId, 28943 title: card.querySelector('.card__heading')?.textContent.trim() || '', 28944 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 28945 price: card.querySelector('.price')?.textContent.trim() || '', 28946 image: card.querySelector('img')?.src || '', 28947 url: card.querySelector('a[href*="/products/"]')?.href || '' 28948 }; 28949 28950 // Set initial state using global function 28951 const heartIcon = button.querySelector('path'); 28952 if (heartIcon) { 28953 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 28954 heartIcon.setAttribute('fill', '#333333'); 28955 } else { 28956 heartIcon.setAttribute('fill', 'none'); 28957 } 28958 } 28959 28960 // Add click handler 28961 button.addEventListener('click', function(e) { 28962 e.preventDefault(); 28963 e.stopPropagation(); 28964 e.stopImmediatePropagation(); 28965 toggleWishlistItem(productDetails); 28966 }); 28967 28968 // Prevent navigation on mousedown/touchstart 28969 button.addEventListener('mousedown', function(e) { 28970 e.preventDefault(); 28971 e.stopPropagation(); 28972 }); 28973 28974 button.addEventListener('touchstart', function(e) { 28975 e.preventDefault(); 28976 e.stopPropagation(); 28977 }); 28978 }); 28979 } 28980 28981 // Initialize the wishlist counter on page load 28982 const wishlist = getWishlist(); 28983 const totalItems = wishlist.categories.reduce((total, category) => { 28984 return total + category.items.length; 28985 }, 0); 28986 updateWishlistCounters(totalItems); 28987 28988 // Initialize on DOM ready 28989 if (document.readyState === 'loading') { 28990 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 28991 } else { 28992 initCardWishlistButtons(); 28993 } 28994 28995 // Reinitialize on Shopify section load 28996 document.addEventListener('shopify:section:load', function() { 28997 setTimeout(initCardWishlistButtons, 100); 28998 }); 28999 29000 // Listen for wishlist updates from other parts of the site 29001 document.addEventListener('wishlist:updated', function() { 29002 setTimeout(initCardWishlistButtons, 100); 29003 }); 29004 })(); 29005</script>
29005 29006 29007<!-- Price info icon styles --> 29008<style> 29009 /* Price container with icon */ 29010 .price-container-with-info { 29011 position: relative; 29012 display: flex; 29013 align-items: center; 29014 gap: 8px; 29015 } 29016 29017 /* Info icon - hidden by default, shown on card hover */ 29018 .price-info-icon { 29019 position: relative; 29020 display: inline-flex; 29021 align-items: center; 29022 justify-content: center; 29023 color: #666; 29024 cursor: help; 29025 opacity: 0; 29026 transition: opacity 0.3s ease; 29027 29028 padding: 4px; /* Add padding to increase clickable area */ 29029 min-width: 20px; /* Ensure minimum clickable area */ 29030 min-height: 20px; 29031 z-index: 15; /* Above everything else including compare button */ 29032 pointer-events: auto; /* Allow interaction */ 29033 } 29034 29035 /* Show icon on card hover */ 29036 .card-wrapper:hover .price-info-icon { 29037 opacity: 1; 29038 } 29039 29040 .price-info-icon svg { 29041 width: 14px; 29042 height: 14px; 29043 stroke-width: 1.5; 29044 } 29045 29046 /* Tooltip styles */ 29047 .price-info-tooltip { 29048 position: absolute; 29049 bottom: calc(100% + 6px); 29050 top: auto; 29051 left: 0; 29052 transform: none; 29053 min-width: 310px; 29054 background: #FFFFFF; 29055 color: #232323; 29056 border: 1px solid #EEEEEE; 29057 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 29058 padding: 12px 16px; 29059 font-size: 13px; 29060 font-family: 'Montserrat', sans-serif; 29061 z-index: 10000; 29062 opacity: 0; 29063 transition: opacity 0.18s; 29064 white-space: pre-line; 29065 text-align: left; 29066 border-radius: 0; 29067 visibility: hidden; 29068 pointer-events: none; 29069 } 29070 29071 /* Show tooltip on icon hover */ 29072 .price-info-icon:hover .price-info-tooltip { 29073 visibility: visible; 29074 opacity: 1; 29075 } 29076 29077 /* Ensure tooltip is never clipped */ 29078 .price-container-with-info, 29079 .card-information, 29080 .card__content { 29081 overflow: visible !important; 29082 } 29083 29084 /* Mobile adjustments */ 29085 @media screen and (max-width: 768px) { 29086 .price-info-tooltip { 29087 min-width: 200px; 29088 font-size: 12px; 29089 padding: 10px 12px; 29090 } 29091 } 29092</style> 29093 29094 </li> 29095 <li 29096 class="grid__item" 29097 29098 > 29099 29100<div class="card-wrapper product-card-wrapper underline-links-hover"> 29101 29102 <div 29103 class=" 29104 card card--standard 29105 card--media 29106 29107 29108 29109 29110 29111 " 29112 style="--ratio-percent: 100.0%;" 29113 data-product-id="9746921586986" 29114 data-description="Luminaria para exteriores de aluminio fundido a presión con vidrio satinado. Puede ser instalada en la pared o al suelo." 29115 29116 data-ip-rate="IP44" 29117 29118 data-variant-id="52387878601002" 29119 data-price="120.00 EUR" 29120 data-compare-at-price="" 29121 data-available="true" 29122 data-barcode="8595685402024" 29123 data-ip-rate="IP44" 29124 data-lumens="" 29125 data-power-source="" 29126 data-watt="15.0" 29127 data-kelvin="" 29128 data-light-color="" 29129 data-diameter="" 29130 data-weight-netto="1060.0" 29131 data-weight-unit="g" 29132 data-mounting-hole-size="" 29133 data-recess-depth="" 29134 data-suspension-lenght="" 29135 data-turn-angle="" 29136 data-tilt-angle="" 29137 data-switch="" 29138 data-socket="LED E27" 29139 data-light-source-recomended="G13026" 29140 data-height="20" 29141 data-length="10.8" 29142 data-Length="" 29143 > 29144 <div 29145 class="card__inner color-scheme-2 gradient ratio" 29146 style="--ratio-percent: 100.0%;" 29147 > 29148 29149 29150<div class="ip-rate-badge"> 29151 <span>IP44</span> 29152 </div><div class="card__media"> 29153 <a class="card__media-link-content" href="/products/ponder-20-wall-or-bollard-lamp" aria-label="PONDER 20"> 29154 <div class="media media--transparent media--hover-effect"> 29155 29156 <img 29157 class="product-image motion-reduce" 29158 srcset="//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=165 165w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=360 360w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=533 533w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=720 720w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=940 940w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=1066 1066w,//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157 3162w 29159 " 29160 src="//rendl.es/cdn/shop/files/r10367-1.jpg?v=1771032157&width=533" 29161 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 29162 alt="RENDL outdoor lamp PONDER 20 wall or bollard black 230V LED E27 15W IP44 R10367 1" 29163 29164 loading="lazy" 29165 29166 width="3162" 29167 height="3162" 29168 > 29169 29170<img 29171 class="product-image motion-reduce" 29172 srcset="//rendl.es/cdn/shop/files/preview_images/R10367_01_400_PONDER_20_518eb2a8-090e-449e-ad13-75e97ad8b4ac.jpg?v=1766069699 w 29173 " 29174 src="//rendl.es/cdn/shop/files/preview_images/R10367_01_400_PONDER_20_518eb2a8-090e-449e-ad13-75e97ad8b4ac.jpg?v=1766069699&width=533" 29175 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 29176 alt="" 29177 loading="lazy" 29178 width="" 29179 height="" 29180 ></div> 29181 </a> 29182 29183<div class="card-media-icons"><div class="dimmable-icon"> 29184 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Dimmable.svg?v=1753944550" alt="Dimmable" width="14" height="14"> 29185 <div class="dimmable-tooltip">Atenuable con fuente de luz adecuada</div> 29186 </div></div><div class="card-variant-swatches"><a 29187 class="card-variant-swatch" 29188 href="/products/ponder-20-wall-or-bollard-lamp?variant=52387878601002" 29189 29190 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 29191 29192 aria-label="negro" 29193 >
29194 <span class="card-variant-swatch-tooltip">negro</span></a></div></div><div class="card__content"> 29195 <div class="card__information"> 29196 <h3 29197 class="card__heading" 29198 29199 > 29200 <a 29201 href="/products/ponder-20-wall-or-bollard-lamp" 29202 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746921586986" 29203 class="full-unstyled-link" 29204 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746921586986 NoMediaStandardBadge-template--28113427169578__product-grid-9746921586986" 29205 > 29206 PONDER 20 29207 </a> 29208 </h3> 29209 </div> 29210 <div class="card__badge bottom left"></div> 29211 </div> 29212 </div> 29213 <div class="card__content"> 29214 <div class="card__information"> 29215 <h3 29216 class="card__heading h5" 29217 29218 id="title-template--28113427169578__product-grid-9746921586986" 29219 29220 > 29221 <a 29222 href="/products/ponder-20-wall-or-bollard-lamp" 29223 id="CardLink-template--28113427169578__product-grid-9746921586986" 29224 class="full-unstyled-link" 29225 aria-labelledby="CardLink-template--28113427169578__product-grid-9746921586986 Badge-template--28113427169578__product-grid-9746921586986" 29226 > 29227 PONDER 20 29228 </a> 29229 </h3><div class="card__description"> 29230 Luminaria para exteriores de aluminio fundido a presión con vidrio satinado. Puede ser instalada en la pared o al suelo. 29231 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 29232 29233<div 29234 class=" 29235 price " 29236 > 29237 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 29238 <span class="price-item price-item--regular"> 29239 120.00 EUR 29240 </span></div> 29241 <div class="price__sale"> 29242 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 29243 <span> 29244 <s class="price-item price-item--regular"> 29245 29246 29247 29248 </s> 29249 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 29250 <span class="price-item price-item--sale price-item--last"> 29251 120.00 EUR 29252 </span> 29253 </div> 29254 <small class="unit-price caption hidden"> 29255 <span class="visually-hidden">Precio unitario</span> 29256 <span class="price-item price-item--last"> 29257 <span></span> 29258 <span aria-hidden="true">/</span> 29259 <span class="visually-hidden"> por </span> 29260 <span> 29261 </span> 29262 </span> 29263 </small> 29264 </div></div> 29265 29266 29267</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 29268 <button class="compare-button-simple" 29269 data-product-id="9746921586986" 29270 data-product-title="PONDER 20" 29271 data-product-handle="ponder-20-wall-or-bollard-lamp"> 29272 <span class="compare-button-content"> 29273 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 29274 <span class="compare-text" data-translate="compare">compare</span> 29275 </span> 29276 <span class="compare-spinner-small"> 29277 <!-- Small spinner for button --> 29278 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 29279 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 29280 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 29281 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
29281inite"/> 29282 </path> 29283 </svg> 29284 </span> 29285 </button> 29286 29287 <!-- Wishlist button next to compare button --> 29288 <button type="button" class="card-wishlist-button" data-wishlist-product="9746921586986"> 29289 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 29290 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 29291 </svg> 29292 </button> 29293 </div></div> 29294 </div> 29295 29296 29297 29298 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746921586986" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 29299 type="hidden" 29300 name="id" 29301 value="52387878601002" 29302 class="product-variant-id" 29303 29304 > 29305 <button 29306 id="quick-add-template--28113427169578__product-grid9746921586986-submit" 29307 type="submit" 29308 name="add" 29309 class="quick-add__submit button button--full-width button--secondary" 29310 aria-haspopup="dialog" 29311 aria-labelledby="quick-add-template--28113427169578__product-grid9746921586986-submit title-template--28113427169578__product-grid-9746921586986" 29312 aria-live="polite" 29313 data-sold-out-message="true" 29314 29315 > 29316 <span>Agregar al carrito 29317</span> 29318 <span class="sold-out-message hidden"> 29319 En camino 29320 </span> 29321 29322<div class="loading__spinner hidden"> 29323 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 29324 29325</div> 29326</button><input type="hidden" name="product-id" value="9746921586986" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 29327 29328 <div class="card__badge bottom left"></div> 29329 </div> 29330 </div> 29331 </div>
29331<script> 29332 // Initialize global compare translations only once 29333 if (typeof window.compareButtonTranslations === 'undefined') { 29334 window.compareButtonTranslations = { 29335 compare: { 29336 en: 'compare', 29337 cs: 'porovnat', 29338 sk: 'porovnaÅ¥', 29339 de: 'vergleichen', 29340 at: 'vergleichen', 29341 ch: 'vergleichen', 29342 fr: 'comparer', 29343 be: 'comparer', 29344 lu: 'comparer', 29345 it: 'confronta', 29346 es: 'comparar', 29347 nl: 'vergelijken', 29348 pl: 'porównaj', 29349 hu: 'összehasonlÃt', 29350 ro: 'comparÄ', 29351 bg: 'ÑÑавни', 29352 hr: 'usporedi', 29353 fi: 'vertaile', 29354 gr: 'ÏÏγκÏιÏη', 29355 el: 'ÏÏγκÏιÏη', 29356 no: 'sammenlign', 29357 'pt-PT': 'comparar', 29358 sl: 'primerjaj', 29359 sv: 'jämför', 29360 lv: 'salÄ«dzinÄt', 29361 lt: 'palyginti', 29362 ee: 'võrdle', 29363 dk: 'sammenlign', 29364 gb: 'compare', 29365 uk: 'compare', 29366 ie: 'compare', 29367 us: 'compare', 29368 ca: 'compare', 29369 au: 'compare', 29370 nz: 'compare', 29371 ru: 'ÑÑавниÑÑ' 29372 }, 29373 remove: { 29374 en: 'remove', 29375 cs: 'odebrat', 29376 sk: 'odobraÅ¥', 29377 de: 'entfernen', 29378 at: 'entfernen', 29379 ch: 'entfernen', 29380 fr: 'supprimer', 29381 be: 'supprimer', 29382 lu: 'supprimer', 29383 it: 'rimuovi', 29384 es: 'eliminar', 29385 nl: 'verwijderen', 29386 pl: 'usuÅ', 29387 hu: 'eltávolÃt', 29388 ro: 'eliminÄ', 29389 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 29390 hr: 'ukloni', 29391 fi: 'poista', 29392 gr: 'αÏαίÏεÏη', 29393 el: 'αÏαίÏεÏη', 29394 no: 'fjern', 29395 'pt-PT': 'remover', 29396 sl: 'odstrani', 29397 sv: 'ta bort', 29398 lv: 'noÅemt', 29399 lt: 'paÅ¡alinti', 29400 ee: 'eemalda', 29401 dk: 'fjern', 29402 gb: 'remove', 29403 uk: 'remove', 29404 ie: 'remove', 29405 us: 'remove', 29406 ca: 'remove', 29407 au: 'remove', 29408 nz: 'remove', 29409 ru: 'ÑдалиÑÑ' 29410 }, 29411 added: { 29412 en: 'Added!', 29413 cs: 'PÅidáno!', 29414 sk: 'Pridané!', 29415 de: 'Hinzugefügt!', 29416 at: 'Hinzugefügt!', 29417 ch: 'Hinzugefügt!', 29418 fr: 'Ajouté!', 29419 be: 'Ajouté!', 29420 lu: 'Ajouté!', 29421 it: 'Aggiunto!', 29422 es: '¡Añadido!', 29423 nl: 'Toegevoegd!', 29424 pl: 'Dodano!', 29425 hu: 'Hozzáadva!', 29426 ro: 'AdÄugat!', 29427 bg: 'Ðобавено!', 29428 hr: 'Dodano!', 29429 fi: 'Lisätty!', 29430 gr: 'Î ÏοÏÏÎθηκε!', 29431 el: 'Î ÏοÏÏÎθηκε!', 29432 no: 'Lagt til!', 29433 'pt-PT': 'Adicionado!', 29434 sl: 'Dodano!', 29435 sv: 'Tillagd!', 29436 lv: 'Pievienots!', 29437 lt: 'PridÄta!', 29438 ee: 'Lisatud!', 29439 dk: 'Tilføjet!', 29440 gb: 'Added!', 29441 uk: 'Added!', 29442 ie: 'Added!', 29443 us: 'Added!', 29444 ca: 'Added!', 29445 au: 'Added!', 29446 nz: 'Added!', 29447 ru: 'Ðобавлено!' 29448 }, 29449 removed: { 29450 en: 'Removed!', 29451 cs: 'Odebráno!', 29452 sk: 'Odobrané!', 29453 de: 'Entfernt!', 29454 at: 'Entfernt!', 29455 ch: 'Entfernt!', 29456 fr: 'Supprimé!', 29457 be: 'Supprimé!', 29458 lu: 'Supprimé!', 29459 it: 'Rimosso!', 29460 es: '¡Eliminado!', 29461 nl: 'Verwijderd!', 29462 pl: 'UsuniÄto!', 29463 hu: 'EltávolÃtva!', 29464 ro: 'Eliminat!', 29465 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 29466 hr: 'Uklonjeno!', 29467 fi: 'Poistettu!', 29468 gr: 'ÎÏαιÏÎθηκε!', 29469 el: 'ÎÏαιÏÎθηκε!', 29470 no: 'Fjernet!', 29471 'pt-PT': 'Removido!', 29472 sl: 'Odstranjeno!', 29473 sv: 'Borttaget!', 29474 lv: 'NoÅemts!', 29475 lt: 'PaÅ¡alinta!', 29476 ee: 'Eemaldatud!', 29477 dk: 'Fjernet!', 29478 gb: 'Removed!', 29479 uk: 'Removed!', 29480 ie: 'Removed!', 29481 us: 'Removed!', 29482 ca: 'Removed!', 29483 au: 'Removed!', 29484 nz: 'Removed!', 29485 ru: 'Удалено!' 29486 } 29487 }; 29488 29489 // Tooltip translations for price info 29490 window.tooltipTranslations = { 29491 tooltipPrice: { 29492 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29493 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 29494 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 29495 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 29496 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 29497 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 29498 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 29499 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 29500 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 29501 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 29502 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 29503 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 29504 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 29505 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 29506 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 29507 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 29508 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 29509 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 29510 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 29511 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 29512 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 29513 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 29514 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 29515 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 29516 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
29516iks atskaitÄ«ts, ja piemÄrojams.", 29517 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 29518 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 29519 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 29520 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29521 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29522 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29523 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29524 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29525 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29526 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 29527 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 29528 }, 29529 tooltipOutlet: { 29530 en: "We do not provide additional wholesale discounts on outlet products.", 29531 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 29532 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 29533 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 29534 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 29535 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 29536 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 29537 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 29538 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 29539 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 29540 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 29541 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 29542 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 29543 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 29544 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 29545 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 29546 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 29547 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 29548 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 29549 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 29550 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 29551 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 29552 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 29553 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 29554 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 29555 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 29556 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 29557 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 29558 gb: "We do not provide additional wholesale discounts on outlet products.", 29559 uk: "We do not provide additional wholesale discounts on outlet products.", 29560 ie: "We do not provide additional wholesale discounts on outlet products.", 29561 us: "We do not provide additional wholesale discounts on outlet products.", 29562 ca: "We do not provide additional wholesale discounts on outlet products.", 29563 au: "We do not provide additional wholesale discounts on outlet products.", 29564 nz: "We do not provide additional wholesale discounts on outlet products.", 29565 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 29566 } 29567 }; 29568 29569 // Get current locale from document 29570 window.currentLocale = document.documentElement.lang || 'en'; 29571 29572 // Function to translate compare buttons 29573 window.translateCompareButtons = function() { 29574 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
29575 compareTexts.forEach(function(textEl) { 29576 const button = textEl.closest('.compare-button-simple'); 29577 const isInComparison = button && button.hasAttribute('data-in-comparison'); 29578 29579 if (isInComparison) { 29580 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 29581 textEl.textContent = translation; 29582 } else { 29583 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 29584 textEl.textContent = translation; 29585 } 29586 }); 29587 }; 29588 29589 // Function to format price with space as thousands separator (only for tooltip) 29590 function formatTooltipPrice(price) { 29591 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 29592 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 29593 } 29594 29595 // Function to translate tooltips with price 29596 window.translateTooltips = function() { 29597 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 29598 tooltips.forEach(function(tooltip) { 29599 const icon = tooltip.closest('.price-info-icon'); 29600 if (icon) { 29601 const status = icon.getAttribute('data-status'); 29602 // Check if this is an outlet product 29603 if (status === 'outlet') { 29604 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 29605 tooltip.textContent = translation; 29606 return; // Exit early for outlet products 29607 } 29608 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 29609 // Get wholesale price from the actual price display on the card 29610 const card = icon.closest('[data-product-id]'); 29611 let wholesalePrice = ''; 29612 if (card) { 29613 // Find the main price element on the card 29614 const priceElement = card.querySelector('.price .price-item--regular'); 29615 if (priceElement) { 29616 wholesalePrice = priceElement.textContent.trim(); 29617 } 29618 } 29619 if (retailPrice && wholesalePrice) { 29620 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 29621 let formattedRetailPrice = formatTooltipPrice(retailPrice); 29622 let formattedWholesalePrice = wholesalePrice; 29623 if (window.formatPriceText) { 29624 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 29625 } 29626 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 29627 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 29628 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 29629 tooltip.textContent = translatedText; 29630 } 29631 } 29632 }); 29633 }; 29634 29635 // Function to update button state based on comparison status 29636 window.updateCompareButtonState = function(productId, isInComparison) { 29637 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 29638 buttons.forEach(function(button) { 29639 const buttonContainer = button.closest('.compare-button-container'); 29640 const compareText = button.querySelector('.compare-text'); 29641 29642 if (isInComparison) { 29643 button.setAttribute('data-in-comparison', 'true'); 29644 button.classList.add('in-comparison'); 29645 buttonContainer.classList.add('in-comparison'); 29646 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 29647 compareText.textContent = removeText; 29648 } else { 29649 button.removeAttribute('data-in-comparison'); 29650 button.classList.remove('in-comparison'); 29651 buttonContainer.classList.remove('in-comparison'); 29652 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 29653 compareText.textContent = compareTextTranslation; 29654 } 29655 }); 29656 }; 29657 } 29658 29659 // Initialize compare button states based on localStorage 29660 window.initializeCompareButtonStates = function() {
29661 if (typeof window.RendlCompare !== 'undefined') { 29662 const compareItems = window.RendlCompare.getItems(); 29663 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 29664 const productId = button.getAttribute('data-product-id'); 29665 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 29666 window.updateCompareButtonState(productId, isInComparison); 29667 }); 29668 } 29669 }; 29670 29671 // Compare button UI animation - the actual functionality is handled by compare-system.js 29672 document.addEventListener('DOMContentLoaded', function() { 29673 // Apply translations on page load 29674 if (window.translateCompareButtons) { 29675 window.translateCompareButtons(); 29676 } 29677 29678 // Initialize button states based on comparison data 29679 setTimeout(function() { 29680 if (window.initializeCompareButtonStates) { 29681 window.initializeCompareButtonStates(); 29682 } 29683 }, 100); // Small delay to ensure compare system is loaded 29684 29685 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 29686 // Skip if already has event listener 29687 if (button.hasAttribute('data-compare-initialized')) { 29688 return; 29689 } 29690 button.setAttribute('data-compare-initialized', 'true'); 29691 29692 button.addEventListener('click', function(e) { 29693 var buttonContainer = button.closest('.compare-button-container'); 29694 var compareText = button.querySelector('.compare-text'); 29695 var isInComparison = button.hasAttribute('data-in-comparison'); 29696 var productId = button.getAttribute('data-product-id'); 29697 29698 // Prevent multiple clicks during loading 29699 if (button.classList.contains('loading')) { 29700 return; 29701 } 29702 29703 // Make button always visible during the process 29704 buttonContainer.classList.add('active'); 29705 29706 // Add loading class to show spinner 29707 button.classList.add('loading'); 29708 29709 // UI feedback timing 29710 setTimeout(function() { 29711 // Remove loading class and show success message 29712 button.classList.remove('loading'); 29713 button.classList.add('success'); 29714 29715 if (isInComparison) { 29716 // Removing from comparison 29717 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 29718 29719 // Update button state after removal 29720 setTimeout(function() { 29721 button.classList.remove('success'); 29722 window.updateCompareButtonState(productId, false); 29723 buttonContainer.classList.remove('active'); 29724 }, 1500); 29725 } else { 29726 // Adding to comparison 29727 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 29728 29729 // Update button state after addition 29730 setTimeout(function() { 29731 button.classList.remove('success'); 29732 window.updateCompareButtonState(productId, true); 29733 buttonContainer.classList.remove('active'); 29734 }, 1500); 29735 } 29736 }, 1200); 29737 }); 29738 }); 29739 29740 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 29741 setTimeout(function() { 29742 if (window.translateTooltips) { 29743 window.translateTooltips(); 29744 } 29745 }, 100); 29746 }); 29747 29748 // Ensure compare button states are initialized after RendlCompare is available 29749 document.addEventListener('DOMContentLoaded', function() { 29750 function tryInitCompareButtons() { 29751 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 29752 window.initializeCompareButtonStates(); 29753 } else { 29754 setTimeout(tryInitCompareButtons, 100); 29755 } 29756 } 29757 tryInitCompareButtons(); 29758 }); 29759 29760 // Self-contained wishlist functionality for card-product 29761 (function() { 29762 // Wishlist translations 29763 var wishlistTranslations = { 29764 'en': { 29765 addToWishlist: 'Add to My Favorites', 29766 createCategory: 'Create new category:', 29767 categoryPlaceholder: 'Category name', 29768 createAndAdd: 'Create & Add Item', 29769 alreadyAdded: '(Already added)', 29770 addedToWishlist: 'added to My Favorites', 29771 removedFromWishlist: 'removed from My Favorites', 29772 allFavorites: 'All Favorites' 29773 }, 29774 'cs': { 29775 addToWishlist: 'PÅidat do oblÃbených', 29776 createCategory: 'VytvoÅit novou skupinu:', 29777 categoryPlaceholder: 'Název nové skupiny', 29778 createAndAdd: 'VytvoÅit a pÅidat skupinu', 29779 alreadyAdded: '(Již pÅidáno)', 29780 addedToWishlist: 'pÅidáno do oblÃbených', 29781 removedFromWishlist: 'odebráno z oblÃbených', 29782 allFavorites: 'VÅ¡echny oblÃbené' 29783 }, 29784 'sk': { 29785 addToWishlist: 'PridaÅ¥ do obľúbených', 29786 createCategory: 'VytvoriÅ¥ novú kategóriu:', 29787 categoryPlaceholder: 'Názov kategórie', 29788 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 29789 alreadyAdded: '(Už pridané)', 29790 addedToWishlist: 'pridané do obľúbených', 29791 removedFromWishlist: 'odstránené z obľúbených', 29792 allFavorites: 'VÅ¡etky obľúbené' 29793 }, 29794 'de': { 29795 addToWishlist: 'Zu meinen Favoriten hinzufügen', 29796 createCategory: 'Neue Kategorie erstellen:', 29797 categoryPlaceholder: 'Kategoriename', 29798 createAndAdd: 'Erstellen & hinzufügen', 29799 alreadyAdded: '(Bereits hinzugefügt)', 29800 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 29801 removedFromWishlist: 'aus meinen Favoriten entfernt', 29802 allFavorites: 'Alle Favoriten' 29803 }, 29804 'fr': { 29805 addToWishlist: 'Ajouter à mes favoris', 29806 createCategory: 'Créer une nouvelle catégorie :', 29807 categoryPlaceholder: 'Nom de la catégorie', 29808 createAndAdd: 'Créer et ajouter', 29809 alreadyAdded: '(Déjà ajouté)', 29810 addedToWishlist: 'ajouté à mes favoris', 29811 removedFromWishlist: 'retiré de mes favoris', 29812 allFavorites: 'Tous les favoris' 29813 }, 29814 'it': { 29815 addToWishlist: 'Aggiungi ai preferiti', 29816 createCategory: 'Crea nuova categoria:', 29817 categoryPlaceholder: 'Nome categoria', 29818 createAndAdd: 'Crea e aggiungi', 29819 alreadyAdded: '(Già aggiunto)', 29820 addedToWishlist: 'aggiunto ai preferiti', 29821 removedFromWishlist: 'rimosso dai preferiti', 29822 allFavorites: 'Tutti i preferiti' 29823 }, 29824 'es': { 29825 addToWishlist: 'Añadir a mis favoritos', 29826 createCategory: 'Crear nueva categorÃa:', 29827 categoryPlaceholder: 'Nombre de la categorÃa', 29828 createAndAdd: 'Crear y añadir', 29829 alreadyAdded: '(Ya añadido)', 29830 addedToWishlist: 'añadido a mis favoritos', 29831 removedFromWishlist: 'eliminado de mis favoritos', 29832 allFavorites: 'Todos los favoritos' 29833 }, 29834 'nl': { 29835 addToWishlist: 'Toevoegen aan mijn favorieten', 29836 createCategory: 'Nieuwe categorie aanmaken:', 29837 categoryPlaceholder: 'Categorienaam', 29838 createAndAdd: 'Aanmaken & toevoegen', 29839 alreadyAdded: '(Al toegevoegd)', 29840 addedToWishlist: 'toegevoegd aan mijn favorieten', 29841 removedFromWishlist: 'verwijderd uit mijn favorieten', 29842 allFavorites: 'Alle favorieten' 29843 }, 29844 'pl': { 29845 addToWishlist: 'Dodaj do ulubionych', 29846 createCategory: 'Utwórz nowÄ kategoriÄ:', 29847 categoryPlaceholder: 'Nazwa kategorii', 29848 createAndAdd: 'Utwórz i dodaj', 29849 alreadyAdded: '(Już dodane)', 29850 addedToWishlist: 'dodano do ulubionych', 29851 removedFromWishlist: 'usuniÄto z ulubionych', 29852 allFavorites: 'Wszystkie ulubione' 29853 }, 29854 'hu': { 29855 addToWishlist: 'Hozzáadás a kedvencekhez', 29856 createCategory: 'Ãj kategória létrehozása:', 29857 categoryPlaceholder: 'Kategória neve', 29858 createAndAdd: 'Létrehozás és hozzáadás', 29859 alreadyAdded: '(Már hozzáadva)', 29860 addedToWishlist: 'hozzáadva a kedvencekhez', 29861 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 29862 allFavorites: 'Minden kedvenc' 29863 }, 29864 'ro': { 29865 addToWishlist: 'AdaugÄ la favorite', 29866 createCategory: 'CreeazÄ o nouÄ categorie:', 29867 categoryPlaceholder: 'Nume categorie', 29868 createAndAdd: 'CreeazÄ Èi adaugÄ', 29869 alreadyAdded: '(Deja adÄugat)', 29870 addedToWishlist: 'adÄugat la favorite', 29871 removedFromWishlist: 'eliminat din favorite', 29872 allFavorites: 'Toate preferinÈele' 29873 }, 29874 'bg': { 29875 addToWishlist: 'Ðобави в лÑбими', 29876 createCategory: 'СÑздай нова каÑегоÑиÑ:', 29877 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 29878 createAndAdd: 'СÑздай и добави', 29879 alreadyAdded: '(ÐеÑе добавено)', 29880 addedToWishlist: 'добавено в лÑбими', 29881 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 29882 allFavorites: 'ÐÑиÑки лÑбими' 29883 }, 29884 'hr': { 29885 addToWishlist: 'Dodaj u favorite', 29886 createCategory: 'Kreiraj novu kategoriju:', 29887 categoryPlaceholder: 'Naziv kategorije', 29888 createAndAdd: 'Kreiraj i dodaj', 29889 alreadyAdded: '(VeÄ dodano)', 29890 addedToWishlist: 'dodano u favorite', 29891 removedFromWishlist: 'uklonjeno iz favorita', 29892 allFavorites: 'Sva omiljena' 29893 }, 29894 'fi': { 29895 addToWishlist: 'Lisää suosikkeihin', 29896 createCategory: 'Luo uusi kategoria:', 29897 categoryPlaceholder: 'Kategorian nimi', 29898 createAndAdd: 'Luo ja lisää', 29899 alreadyAdded: '(Jo lisätty)', 29900 addedToWishlist: 'lisätty suosikkeihin', 29901 removedFromWishlist: 'poistettu suosikeista',
29902 allFavorites: 'Kaikki suosikit' 29903 }, 29904 'gr': { 29905 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 29906 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 29907 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 29908 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 29909 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 29910 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 29911 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 29912 allFavorites: 'Îλα Ïα αγαÏημÎνα' 29913 }, 29914 'no': { 29915 addToWishlist: 'Legg til i favoritter', 29916 createCategory: 'Opprett ny kategori:', 29917 categoryPlaceholder: 'Kategorinavn', 29918 createAndAdd: 'Opprett og legg til', 29919 alreadyAdded: '(Allerede lagt til)', 29920 addedToWishlist: 'lagt til i favoritter', 29921 removedFromWishlist: 'fjernet fra favoritter', 29922 allFavorites: 'Alle favoritter' 29923 }, 29924 'pt-PT': { 29925 addToWishlist: 'Adicionar aos favoritos', 29926 createCategory: 'Criar nova categoria:', 29927 categoryPlaceholder: 'Nome da categoria', 29928 createAndAdd: 'Criar e adicionar', 29929 alreadyAdded: '(Já adicionado)', 29930 addedToWishlist: 'adicionado aos favoritos', 29931 removedFromWishlist: 'removido dos favoritos', 29932 allFavorites: 'Todos os favoritos' 29933 }, 29934 'sl': { 29935 addToWishlist: 'Dodaj med priljubljene', 29936 createCategory: 'Ustvari novo kategorijo:', 29937 categoryPlaceholder: 'Ime kategorije', 29938 createAndAdd: 'Ustvari in dodaj', 29939 alreadyAdded: '(Že dodano)', 29940 addedToWishlist: 'dodano med priljubljene', 29941 removedFromWishlist: 'odstranjeno iz priljubljenih', 29942 allFavorites: 'Vsi priljubljeni' 29943 }, 29944 'sv': { 29945 addToWishlist: 'Lägg till i favoriter', 29946 createCategory: 'Skapa ny kategori:', 29947 categoryPlaceholder: 'Kategorinamn', 29948 createAndAdd: 'Skapa och lägg till', 29949 alreadyAdded: '(Redan tillagd)', 29950 addedToWishlist: 'tillagd i favoriter', 29951 removedFromWishlist: 'borttagen frÃ¥n favoriter', 29952 allFavorites: 'Alla favoriter' 29953 }, 29954 'lv': { 29955 addToWishlist: 'Pievienot favorÄ«tiem', 29956 createCategory: 'Izveidot jaunu kategoriju:', 29957 categoryPlaceholder: 'Kategorijas nosaukums', 29958 createAndAdd: 'Izveidot un pievienot', 29959 alreadyAdded: '(Jau pievienots)', 29960 addedToWishlist: 'pievienots favorÄ«tiem', 29961 removedFromWishlist: 'noÅemts no favorÄ«tiem', 29962 allFavorites: 'Visas favorÄ«tus' 29963 }, 29964 'lt': { 29965 addToWishlist: 'PridÄti į mÄgstamiausius', 29966 createCategory: 'Sukurti naujÄ kategorijÄ :', 29967 categoryPlaceholder: 'Kategorijos pavadinimas', 29968 createAndAdd: 'Sukurti ir pridÄti', 29969 alreadyAdded: '(Jau pridÄta)', 29970 addedToWishlist: 'pridÄta į mÄgstamiausius', 29971 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 29972 allFavorites: 'Visos mÄgstamiausios' 29973 }, 29974 'ee': { 29975 addToWishlist: 'Lisa lemmikutesse', 29976 createCategory: 'Loo uus kategooria:', 29977 categoryPlaceholder: 'Kategooria nimi', 29978 createAndAdd: 'Loo ja lisa', 29979 alreadyAdded: '(Juba lisatud)', 29980 addedToWishlist: 'lisatud lemmikutesse', 29981 removedFromWishlist: 'eemaldatud lemmikutest', 29982 allFavorites: 'Kõik lemmikud' 29983 }, 29984 'dk': { 29985 addToWishlist: 'Tilføj til favoritter', 29986 createCategory: 'Opret ny kategori:', 29987 categoryPlaceholder: 'Kategorinavn', 29988 createAndAdd: 'Opret og tilføj', 29989 alreadyAdded: '(Allerede tilføjet)', 29990 addedToWishlist: 'tilføjet til favoritter', 29991 removedFromWishlist: 'fjernet fra favoritter', 29992 allFavorites: 'Alle favoritter' 29993 } 29994 }; 29995 29996 function getWishlistLang() { 29997 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 29998 // Normalize for region codes (e.g., pt-PT, sl) 29999 if (lang.startsWith('pt-PT')) return 'pt-PT'; 30000 if (lang.startsWith('sl')) return 'sl'; 30001 if (lang.startsWith('cs')) return 'cs'; 30002 if (lang.startsWith('sk')) return 'sk'; 30003 if (lang.startsWith('de')) return 'de'; 30004 if (lang.startsWith('fr')) return 'fr'; 30005 if (lang.startsWith('it')) return 'it'; 30006 if (lang.startsWith('es')) return 'es'; 30007 if (lang.startsWith('nl')) return 'nl'; 30008 if (lang.startsWith('pl')) return 'pl'; 30009 if (lang.startsWith('hu')) return 'hu'; 30010 if (lang.startsWith('ro')) return 'ro'; 30011 if (lang.startsWith('bg')) return 'bg'; 30012 if (lang.startsWith('hr')) return 'hr'; 30013 if (lang.startsWith('fi')) return 'fi'; 30014 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 30015 if (lang.startsWith('no')) return 'no'; 30016 if (lang.startsWith('sv')) return 'sv'; 30017 if (lang.startsWith('lv')) return 'lv'; 30018 if (lang.startsWith('lt')) return 'lt'; 30019 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 30020 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 30021 return 'en'; 30022 } 30023 30024 // Get or initialize the wishlist array in localStorage 30025 function getWishlist() { 30026 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 30027 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 30028 categories: [ 30029 { 30030 id: 'all-favorites', 30031 name: 'All Favorites', 30032 items: [] 30033 } 30034 ], 30035 version: 2 30036 }; 30037 30038 // Handle migration from old format (array of items) to new format (categories) 30039 if (Array.isArray(wishlist)) { 30040 return { 30041 categories: [ 30042 { 30043 id: 'all-favorites', 30044 name: 'All Favorites', 30045 items: wishlist 30046 } 30047 ], 30048 version: 2 30049 }; 30050 } 30051 30052 return wishlist; 30053 } 30054 30055 // Save wishlist to localStorage 30056 function saveWishlist(wishlist) { 30057 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 30058 // Dispatch an event so other parts of the site can react to wishlist changes 30059 document.dispatchEvent(new CustomEvent('wishlist:updated', { 30060 detail: { wishlist: wishlist } 30061 })); 30062 30063 // Count total items across all categories 30064 const totalItems = wishlist.categories.reduce((total, category) => { 30065 return total + category.items.length; 30066 }, 0); 30067 30068 // Update all wishlist counters 30069 updateWishlistCounters(totalItems); 30070 } 30071 30072 // Update all wishlist counters on the page 30073 function updateWishlistCounters(count) { 30074 const counters = document.querySelectorAll('.wishlist-count');
30075 counters.forEach(counter => { 30076 counter.textContent = count; 30077 30078 // If the counter is hidden and count > 0, show it 30079 if (count > 0 && counter.hasAttribute('hidden')) { 30080 counter.removeAttribute('hidden'); 30081 } 30082 // If the counter is visible and count = 0, hide it 30083 else if (count === 0 && !counter.hasAttribute('hidden')) { 30084 counter.setAttribute('hidden', 'true'); 30085 } 30086 }); 30087 } 30088 30089 // Check if a product is in the wishlist (in any category) 30090 function isInWishlist(productId) { 30091 const wishlist = getWishlist(); 30092 return wishlist.categories.some(category => 30093 category.items.some(item => item.id === productId) 30094 ); 30095 } 30096 30097 // Get all categories 30098 function getCategories() { 30099 return getWishlist().categories; 30100 } 30101 30102 // Create a new category 30103 function createCategory(name) { 30104 const wishlist = getWishlist(); 30105 const categoryId = 'category-' + Date.now(); 30106 30107 wishlist.categories.push({ 30108 id: categoryId, 30109 name: name, 30110 items: [] 30111 }); 30112 30113 saveWishlist(wishlist); 30114 return categoryId; 30115 } 30116 30117 // Add a product to a specific category 30118 function addToCategory(product, categoryId) { 30119 const wishlist = getWishlist(); 30120 const category = wishlist.categories.find(cat => cat.id === categoryId); 30121 30122 if (!category) return false; 30123 30124 // Check if product already exists in ANY category (not just this one) 30125 if (isInWishlist(product.id)) { 30126 return false; // Product already in wishlist 30127 } 30128 30129 // Add product to category 30130 category.items.push(product); 30131 saveWishlist(wishlist); 30132 30133 // Dispatch event for global sync 30134 document.dispatchEvent(new CustomEvent('wishlist:updated', { 30135 detail: { productId: product.id, added: true } 30136 })); 30137 30138 return true; 30139 } 30140 30141 // Add a product to the default "All Favorites" category 30142 function addToWishlist(product) { 30143 return addToCategory(product, 'all-favorites'); 30144 } 30145 30146 // Remove a product from all categories 30147 function removeFromWishlist(productId) { 30148 const wishlist = getWishlist(); 30149 let removed = false; 30150 30151 wishlist.categories.forEach(category => { 30152 const initialLength = category.items.length; 30153 category.items = category.items.filter(item => item.id !== productId); 30154 if (category.items.length !== initialLength) { 30155 removed = true; 30156 } 30157 }); 30158 30159 if (removed) { 30160 saveWishlist(wishlist); 30161 } 30162 30163 return removed; 30164 } 30165 30166 // Toggle a product in the wishlist 30167 function toggleWishlistItem(product) { 30168 if (isInWishlist(product.id)) { 30169 // If already in wishlist, remove it 30170 const wasRemoved = removeFromWishlist(product.id); 30171 30172 // Update heart icon if the product was successfully removed 30173 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 30174 if (heartIcon && wasRemoved) { 30175 heartIcon.setAttribute('fill', 'none'); 30176 showWishlistToast(false, product.title); 30177 30178 // Dispatch event for global sync 30179 document.dispatchEvent(new CustomEvent('wishlist:updated', { 30180 detail: { productId: product.id, added: false } 30181 })); 30182 } 30183 return wasRemoved; 30184 } else { 30185 // If not in wishlist, show category selection popup 30186 showCategorySelectionPopup(product); 30187 return false; // Don't return true unless we actually add the product 30188 } 30189 } 30190 30191 // Show wishlist category selection popup 30192 function showCategorySelectionPopup(product) { 30193 // Remove any existing popup 30194 const existingPopup = document.getElementById('wishlist-category-popup'); 30195 if (existingPopup) { 30196 existingPopup.remove(); 30197 } 30198 30199 const lang = getWishlistLang(); 30200 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 30201 30202 // Create popup container 30203 const popup = document.createElement('div'); 30204 popup.id = 'wishlist-category-popup'; 30205 popup.className = 'wishlist-category-popup'; 30206 30207 // Create popup content 30208 const content = document.createElement('div'); 30209 content.className = 'wishlist-category-popup-content'; 30210 30211 // Create header 30212 const title = document.createElement('h2'); 30213 title.textContent = translations.addToWishlist; // Translate 30214 30215 const closeButton = document.createElement('button'); 30216 closeButton.className = 'wishlist-category-popup-close'; 30217 closeButton.setAttribute('aria-label', 'Close'); 30218 closeButton.addEventListener('click', () => { 30219 popup.remove(); 30220 }); 30221 30222 // Create category list 30223 const categoryList = document.createElement('div'); 30224 categoryList.className = 'wishlist-category-list'; 30225 30226 // Get categories 30227 const categories = getCategories(); 30228 30229 // Add category options
30230 categories.forEach(category => { 30231 const categoryOption = document.createElement('div'); 30232 categoryOption.className = 'wishlist-category-option'; 30233 30234 // Use translation for default category name 30235 categoryOption.textContent = category.id === 'all-favorites' 30236 ? (translations.allFavorites || category.name) 30237 : category.name; 30238 30239 // Highlight if product already in this category 30240 if (category.items.some(item => item.id === product.id)) { 30241 categoryOption.style.backgroundColor = '#f0f0f0'; 30242 categoryOption.style.color = '#999'; 30243 categoryOption.style.fontStyle = 'italic'; 30244 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 30245 categoryOption.style.cursor = 'default'; 30246 } else { 30247 categoryOption.addEventListener('click', () => { 30248 const wasAdded = addToCategory(product, category.id); 30249 30250 if (wasAdded) { 30251 // Update heart icon after successful addition 30252 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 30253 if (heartIcon) { 30254 heartIcon.setAttribute('fill', '#333333'); 30255 } 30256 30257 showWishlistToast(true, product.title); 30258 popup.remove(); 30259 } 30260 }); 30261 } 30262 30263 categoryList.appendChild(categoryOption); 30264 }); 30265 30266 // Create "add new category" section 30267 const newCategorySection = document.createElement('div'); 30268 newCategorySection.style.borderTop = '1px solid #eee'; 30269 newCategorySection.style.paddingTop = '15px'; 30270 newCategorySection.style.marginTop = '10px'; 30271 30272 const newCategoryLabel = document.createElement('label'); 30273 newCategoryLabel.textContent = translations.createCategory; // Translate 30274 30275 const newCategoryInput = document.createElement('input'); 30276 newCategoryInput.type = 'text'; 30277 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 30278 30279 const createButton = document.createElement('button'); 30280 createButton.className = 'create-category-button'; 30281 createButton.textContent = translations.createAndAdd; // Translate 30282 30283 createButton.addEventListener('click', () => { 30284 const categoryName = newCategoryInput.value.trim(); 30285 if (categoryName) { 30286 const categoryId = createCategory(categoryName); 30287 const wasAdded = addToCategory(product, categoryId); 30288 30289 if (wasAdded) { 30290 // Update heart icon after successful addition 30291 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 30292 if (heartIcon) { 30293 heartIcon.setAttribute('fill', '#333333'); 30294 } 30295 30296 showWishlistToast(true, product.title); 30297 popup.remove(); 30298 } 30299 } 30300 }); 30301 30302 newCategorySection.appendChild(newCategoryLabel); 30303 newCategorySection.appendChild(newCategoryInput); 30304 newCategorySection.appendChild(createButton); 30305 30306 // Assemble popup 30307 content.appendChild(title); 30308 content.appendChild(closeButton); 30309 content.appendChild(categoryList); 30310 content.appendChild(newCategorySection); 30311 popup.appendChild(content); 30312 30313 // Add to document 30314 document.body.appendChild(popup); 30315 30316 // Focus the input 30317 setTimeout(() => { 30318 newCategoryInput.focus(); 30319 }, 100); 30320 30321 // Close when clicking outside content 30322 popup.addEventListener('click', (e) => { 30323 if (e.target === popup) { 30324 popup.remove(); 30325 } 30326 }); 30327 } 30328 30329 // Show a toast notification 30330 function showWishlistToast(added, productTitle) { 30331 // Create or get toast container 30332 let toastContainer = document.getElementById('wishlist-toast'); 30333 if (!toastContainer) { 30334 toastContainer = document.createElement('div'); 30335 toastContainer.id = 'wishlist-toast'; 30336 toastContainer.style.position = 'fixed'; 30337 toastContainer.style.bottom = '20px'; 30338 toastContainer.style.right = '20px'; 30339 toastContainer.style.zIndex = '9999'; 30340 document.body.appendChild(toastContainer); 30341 } 30342 30343 // Create toast 30344 const toast = document.createElement('div'); 30345 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 30346 toast.style.color = 'white'; 30347 toast.style.padding = '12px 20px'; 30348 toast.style.borderRadius = '0'; 30349 toast.style.marginTop = '10px'; 30350 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 30351 toast.style.transition = 'all 0.3s ease'; 30352 toast.style.opacity = '0'; 30353 toast.style.fontFamily = 'Montserrat, sans-serif'; 30354 30355 // Choose text based on action 30356 const lang = getWishlistLang(); 30357 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 30358 toast.textContent = added 30359 ? `${productTitle} ${translations.addedToWishlist}` // Translate 30360 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 30361 30362 // Add to container 30363 toastContainer.appendChild(toast); 30364 30365 // Animate in 30366 setTimeout(() => { 30367 toast.style.opacity = '1'; 30368 }, 10); 30369 30370 // Animate out and remove 30371 setTimeout(() => { 30372 toast.style.opacity = '0'; 30373 setTimeout(() => { 30374 toastContainer.removeChild(toast); 30375 }, 300); 30376 }, 3000); 30377 } 30378 30379 // Initialize wishlist buttons 30380 function initCardWishlistButtons() { 30381 const wishlistButtons = document.querySelectorAll('.card-wis
30381hlist-button'); 30382 30383 wishlistButtons.forEach(button => { 30384 // Skip if already initialized 30385 if (button.dataset.initializedWishlist === 'true') return; 30386 button.dataset.initializedWishlist = 'true'; 30387 30388 const productId = button.getAttribute('data-wishlist-product'); 30389 if (!productId) return; 30390 30391 // Get product details from the card 30392 const card = button.closest('.card-wrapper'); 30393 const productDetails = { 30394 id: productId, 30395 title: card.querySelector('.card__heading')?.textContent.trim() || '', 30396 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 30397 price: card.querySelector('.price')?.textContent.trim() || '', 30398 image: card.querySelector('img')?.src || '', 30399 url: card.querySelector('a[href*="/products/"]')?.href || '' 30400 }; 30401 30402 // Set initial state using global function 30403 const heartIcon = button.querySelector('path'); 30404 if (heartIcon) { 30405 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 30406 heartIcon.setAttribute('fill', '#333333'); 30407 } else { 30408 heartIcon.setAttribute('fill', 'none'); 30409 } 30410 } 30411 30412 // Add click handler 30413 button.addEventListener('click', function(e) { 30414 e.preventDefault(); 30415 e.stopPropagation(); 30416 e.stopImmediatePropagation(); 30417 toggleWishlistItem(productDetails); 30418 }); 30419 30420 // Prevent navigation on mousedown/touchstart 30421 button.addEventListener('mousedown', function(e) { 30422 e.preventDefault(); 30423 e.stopPropagation(); 30424 }); 30425 30426 button.addEventListener('touchstart', function(e) { 30427 e.preventDefault(); 30428 e.stopPropagation(); 30429 }); 30430 }); 30431 } 30432 30433 // Initialize the wishlist counter on page load 30434 const wishlist = getWishlist(); 30435 const totalItems = wishlist.categories.reduce((total, category) => { 30436 return total + category.items.length; 30437 }, 0); 30438 updateWishlistCounters(totalItems); 30439 30440 // Initialize on DOM ready 30441 if (document.readyState === 'loading') { 30442 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 30443 } else { 30444 initCardWishlistButtons(); 30445 } 30446 30447 // Reinitialize on Shopify section load 30448 document.addEventListener('shopify:section:load', function() { 30449 setTimeout(initCardWishlistButtons, 100); 30450 }); 30451 30452 // Listen for wishlist updates from other parts of the site 30453 document.addEventListener('wishlist:updated', function() { 30454 setTimeout(initCardWishlistButtons, 100); 30455 }); 30456 })(); 30457</script>
30457 30458 30459<!-- Price info icon styles --> 30460<style> 30461 /* Price container with icon */ 30462 .price-container-with-info { 30463 position: relative; 30464 display: flex; 30465 align-items: center; 30466 gap: 8px; 30467 } 30468 30469 /* Info icon - hidden by default, shown on card hover */ 30470 .price-info-icon { 30471 position: relative; 30472 display: inline-flex; 30473 align-items: center; 30474 justify-content: center; 30475 color: #666; 30476 cursor: help; 30477 opacity: 0; 30478 transition: opacity 0.3s ease; 30479 30480 padding: 4px; /* Add padding to increase clickable area */ 30481 min-width: 20px; /* Ensure minimum clickable area */ 30482 min-height: 20px; 30483 z-index: 15; /* Above everything else including compare button */ 30484 pointer-events: auto; /* Allow interaction */ 30485 } 30486 30487 /* Show icon on card hover */ 30488 .card-wrapper:hover .price-info-icon { 30489 opacity: 1; 30490 } 30491 30492 .price-info-icon svg { 30493 width: 14px; 30494 height: 14px; 30495 stroke-width: 1.5; 30496 } 30497 30498 /* Tooltip styles */ 30499 .price-info-tooltip { 30500 position: absolute; 30501 bottom: calc(100% + 6px); 30502 top: auto; 30503 left: 0; 30504 transform: none; 30505 min-width: 310px; 30506 background: #FFFFFF; 30507 color: #232323; 30508 border: 1px solid #EEEEEE; 30509 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 30510 padding: 12px 16px; 30511 font-size: 13px; 30512 font-family: 'Montserrat', sans-serif; 30513 z-index: 10000; 30514 opacity: 0; 30515 transition: opacity 0.18s; 30516 white-space: pre-line; 30517 text-align: left; 30518 border-radius: 0; 30519 visibility: hidden; 30520 pointer-events: none; 30521 } 30522 30523 /* Show tooltip on icon hover */ 30524 .price-info-icon:hover .price-info-tooltip { 30525 visibility: visible; 30526 opacity: 1; 30527 } 30528 30529 /* Ensure tooltip is never clipped */ 30530 .price-container-with-info, 30531 .card-information, 30532 .card__content { 30533 overflow: visible !important; 30534 } 30535 30536 /* Mobile adjustments */ 30537 @media screen and (max-width: 768px) { 30538 .price-info-tooltip { 30539 min-width: 200px; 30540 font-size: 12px; 30541 padding: 10px 12px; 30542 } 30543 } 30544</style> 30545 30546 </li> 30547 <li 30548 class="grid__item" 30549 30550 > 30551 30552<div class="card-wrapper product-card-wrapper underline-links-hover"> 30553 30554 <div 30555 class=" 30556 card card--standard 30557 card--media 30558 30559 30560 30561 30562 30563 " 30564 style="--ratio-percent: 100.0%;" 30565 data-product-id="9746651185450" 30566 data-description="Lámpara de pie LED de exterior fabricada en aluminio fundido a presión, tipo de iluminación hacia abajo. Los LED están cubiertos con un difusor esm..." 30567 30568 data-ip-rate="IP54" 30569 30570 data-variant-id="52387475128618" 30571 data-price="178.00 EUR" 30572 data-compare-at-price="" 30573 data-available="true" 30574 data-barcode="8595685425320" 30575 data-ip-rate="IP54" 30576 data-lumens="730" 30577 data-power-source="" 30578 data-watt="10.0" 30579 data-kelvin="3000" 30580 data-light-color="" 30581 data-diameter="" 30582 data-weight-netto="1365.0" 30583 data-weight-unit="g" 30584 data-mounting-hole-size="" 30585 data-recess-depth="" 30586 data-suspension-lenght="" 30587 data-turn-angle="" 30588 data-tilt-angle="" 30589 data-switch="" 30590 data-socket="" 30591 data-light-source-recomended="" 30592 data-height="64.5" 30593 data-length="12" 30594 data-Length="" 30595 > 30596 <div 30597 class="card__inner color-scheme-2 gradient ratio" 30598 style="--ratio-percent: 100.0%;" 30599 > 30600 30601 30602<div class="ip-rate-badge"> 30603 <span>IP54</span> 30604 </div><div class="card__media"> 30605 <a class="card__media-link-content" href="/products/gardien-65-bollard-lamp" aria-label="GARDIEN 65"> 30606 <div class="media media--transparent media--hover-effect"> 30607 30608 <img 30609 class="product-image motion-reduce" 30610 srcset="//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=165 165w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=360 360w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=533 533w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=720 720w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=940 940w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=1066 1066w,//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276 3162w 30611 " 30612 src="//rendl.es/cdn/shop/files/r13758-1.jpg?v=1770772276&width=533" 30613 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 30614 alt="RENDL outdoor lamp GARDIEN 65 bollard black 230V LED 10W IP54 3000K R13758 1" 30615 30616 loading="lazy" 30617 30618 width="3162" 30619 height="3162" 30620 > 30621 30622<img 30623 class="product-image motion-reduce" 30624 srcset="//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=165 165w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=360 360w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=533 533w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=720 720w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=940 940w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=1066 1066w,//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276 3162w 30625 " 30626 src="//rendl.es/cdn/shop/files/r13758-2.jpg?v=1770772276&width=533" 30627 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 30628 alt="" 30629 loading="lazy" 30630 width="3162" 30631 height="3162" 30632 ></div> 30633 </a> 30634 30635<div class="card-media-icons"><div class="energy-label-icon"> 30636 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 30637 <div class="energy-label-tooltip">Clase energética G 30638</div> 30639 </div></div><div class="card-variant-swatches"><a 30640 class="card-variant-swatch" 30641 href="/products/gardien-65-bollard-lamp?variant=52387475128618" 30642 30643 style="background-image: url('//rendl.es/cdn/shop/files/81_black.jpg?v=1739538403&width=64');" 30644 30645 aria-label="negro" 30646 >
30647 <span class="card-variant-swatch-tooltip">negro</span></a></div></div><div class="card__content"> 30648 <div class="card__information"> 30649 <h3 30650 class="card__heading" 30651 30652 > 30653 <a 30654 href="/products/gardien-65-bollard-lamp" 30655 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746651185450" 30656 class="full-unstyled-link" 30657 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746651185450 NoMediaStandardBadge-template--28113427169578__product-grid-9746651185450" 30658 > 30659 GARDIEN 65 30660 </a> 30661 </h3> 30662 </div> 30663 <div class="card__badge bottom left"></div> 30664 </div> 30665 </div> 30666 <div class="card__content"> 30667 <div class="card__information"> 30668 <h3 30669 class="card__heading h5" 30670 30671 id="title-template--28113427169578__product-grid-9746651185450" 30672 30673 > 30674 <a 30675 href="/products/gardien-65-bollard-lamp" 30676 id="CardLink-template--28113427169578__product-grid-9746651185450" 30677 class="full-unstyled-link" 30678 aria-labelledby="CardLink-template--28113427169578__product-grid-9746651185450 Badge-template--28113427169578__product-grid-9746651185450" 30679 > 30680 GARDIEN 65 30681 </a> 30682 </h3><div class="card__description"> 30683 Lámpara de pie LED de exterior fabricada en aluminio fundido a presión, tipo de iluminación hacia abajo. Los LED están cubiertos con un difusor esmerilado. 30684 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 30685 30686<div 30687 class=" 30688 price " 30689 > 30690 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 30691 <span class="price-item price-item--regular"> 30692 178.00 EUR 30693 </span></div> 30694 <div class="price__sale"> 30695 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 30696 <span> 30697 <s class="price-item price-item--regular"> 30698 30699 30700 30701 </s> 30702 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 30703 <span class="price-item price-item--sale price-item--last"> 30704 178.00 EUR 30705 </span> 30706 </div> 30707 <small class="unit-price caption hidden"> 30708 <span class="visually-hidden">Precio unitario</span> 30709 <span class="price-item price-item--last"> 30710 <span></span> 30711 <span aria-hidden="true">/</span> 30712 <span class="visually-hidden"> por </span> 30713 <span> 30714 </span> 30715 </span> 30716 </small> 30717 </div></div> 30718 30719 30720</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 30721 <button class="compare-button-simple" 30722 data-product-id="9746651185450" 30723 data-product-title="GARDIEN 65" 30724 data-product-handle="gardien-65-bollard-lamp"> 30725 <span class="compare-button-content"> 30726 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 30727 <span class="compare-text" data-translate="compare">compare</span> 30728 </span> 30729 <span class="compare-spinner-small"> 30730 <!-- Small spinner for button --> 30731 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 30732 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 30733 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 30734 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
30734inite"/> 30735 </path> 30736 </svg> 30737 </span> 30738 </button> 30739 30740 <!-- Wishlist button next to compare button --> 30741 <button type="button" class="card-wishlist-button" data-wishlist-product="9746651185450"> 30742 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 30743 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 30744 </svg> 30745 </button> 30746 </div></div> 30747 </div> 30748 30749 30750 30751 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746651185450" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 30752 type="hidden" 30753 name="id" 30754 value="52387475128618" 30755 class="product-variant-id" 30756 30757 > 30758 <button 30759 id="quick-add-template--28113427169578__product-grid9746651185450-submit" 30760 type="submit" 30761 name="add" 30762 class="quick-add__submit button button--full-width button--secondary" 30763 aria-haspopup="dialog" 30764 aria-labelledby="quick-add-template--28113427169578__product-grid9746651185450-submit title-template--28113427169578__product-grid-9746651185450" 30765 aria-live="polite" 30766 data-sold-out-message="true" 30767 30768 > 30769 <span>Agregar al carrito 30770</span> 30771 <span class="sold-out-message hidden"> 30772 En camino 30773 </span> 30774 30775<div class="loading__spinner hidden"> 30776 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 30777 30778</div> 30779</button><input type="hidden" name="product-id" value="9746651185450" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 30780 30781 <div class="card__badge bottom left"></div> 30782 </div> 30783 </div> 30784 </div>
30784<script> 30785 // Initialize global compare translations only once 30786 if (typeof window.compareButtonTranslations === 'undefined') { 30787 window.compareButtonTranslations = { 30788 compare: { 30789 en: 'compare', 30790 cs: 'porovnat', 30791 sk: 'porovnaÅ¥', 30792 de: 'vergleichen', 30793 at: 'vergleichen', 30794 ch: 'vergleichen', 30795 fr: 'comparer', 30796 be: 'comparer', 30797 lu: 'comparer', 30798 it: 'confronta', 30799 es: 'comparar', 30800 nl: 'vergelijken', 30801 pl: 'porównaj', 30802 hu: 'összehasonlÃt', 30803 ro: 'comparÄ', 30804 bg: 'ÑÑавни', 30805 hr: 'usporedi', 30806 fi: 'vertaile', 30807 gr: 'ÏÏγκÏιÏη', 30808 el: 'ÏÏγκÏιÏη', 30809 no: 'sammenlign', 30810 'pt-PT': 'comparar', 30811 sl: 'primerjaj', 30812 sv: 'jämför', 30813 lv: 'salÄ«dzinÄt', 30814 lt: 'palyginti', 30815 ee: 'võrdle', 30816 dk: 'sammenlign', 30817 gb: 'compare', 30818 uk: 'compare', 30819 ie: 'compare', 30820 us: 'compare', 30821 ca: 'compare', 30822 au: 'compare', 30823 nz: 'compare', 30824 ru: 'ÑÑавниÑÑ' 30825 }, 30826 remove: { 30827 en: 'remove', 30828 cs: 'odebrat', 30829 sk: 'odobraÅ¥', 30830 de: 'entfernen', 30831 at: 'entfernen', 30832 ch: 'entfernen', 30833 fr: 'supprimer', 30834 be: 'supprimer', 30835 lu: 'supprimer', 30836 it: 'rimuovi', 30837 es: 'eliminar', 30838 nl: 'verwijderen', 30839 pl: 'usuÅ', 30840 hu: 'eltávolÃt', 30841 ro: 'eliminÄ', 30842 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 30843 hr: 'ukloni', 30844 fi: 'poista', 30845 gr: 'αÏαίÏεÏη', 30846 el: 'αÏαίÏεÏη', 30847 no: 'fjern', 30848 'pt-PT': 'remover', 30849 sl: 'odstrani', 30850 sv: 'ta bort', 30851 lv: 'noÅemt', 30852 lt: 'paÅ¡alinti', 30853 ee: 'eemalda', 30854 dk: 'fjern', 30855 gb: 'remove', 30856 uk: 'remove', 30857 ie: 'remove', 30858 us: 'remove', 30859 ca: 'remove', 30860 au: 'remove', 30861 nz: 'remove', 30862 ru: 'ÑдалиÑÑ' 30863 }, 30864 added: { 30865 en: 'Added!', 30866 cs: 'PÅidáno!', 30867 sk: 'Pridané!', 30868 de: 'Hinzugefügt!', 30869 at: 'Hinzugefügt!', 30870 ch: 'Hinzugefügt!', 30871 fr: 'Ajouté!', 30872 be: 'Ajouté!', 30873 lu: 'Ajouté!', 30874 it: 'Aggiunto!', 30875 es: '¡Añadido!', 30876 nl: 'Toegevoegd!', 30877 pl: 'Dodano!', 30878 hu: 'Hozzáadva!', 30879 ro: 'AdÄugat!', 30880 bg: 'Ðобавено!', 30881 hr: 'Dodano!', 30882 fi: 'Lisätty!', 30883 gr: 'Î ÏοÏÏÎθηκε!', 30884 el: 'Î ÏοÏÏÎθηκε!', 30885 no: 'Lagt til!', 30886 'pt-PT': 'Adicionado!', 30887 sl: 'Dodano!', 30888 sv: 'Tillagd!', 30889 lv: 'Pievienots!', 30890 lt: 'PridÄta!', 30891 ee: 'Lisatud!', 30892 dk: 'Tilføjet!', 30893 gb: 'Added!', 30894 uk: 'Added!', 30895 ie: 'Added!', 30896 us: 'Added!', 30897 ca: 'Added!', 30898 au: 'Added!', 30899 nz: 'Added!', 30900 ru: 'Ðобавлено!' 30901 }, 30902 removed: { 30903 en: 'Removed!', 30904 cs: 'Odebráno!', 30905 sk: 'Odobrané!', 30906 de: 'Entfernt!', 30907 at: 'Entfernt!', 30908 ch: 'Entfernt!', 30909 fr: 'Supprimé!', 30910 be: 'Supprimé!', 30911 lu: 'Supprimé!', 30912 it: 'Rimosso!', 30913 es: '¡Eliminado!', 30914 nl: 'Verwijderd!', 30915 pl: 'UsuniÄto!', 30916 hu: 'EltávolÃtva!', 30917 ro: 'Eliminat!', 30918 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 30919 hr: 'Uklonjeno!', 30920 fi: 'Poistettu!', 30921 gr: 'ÎÏαιÏÎθηκε!', 30922 el: 'ÎÏαιÏÎθηκε!', 30923 no: 'Fjernet!', 30924 'pt-PT': 'Removido!', 30925 sl: 'Odstranjeno!', 30926 sv: 'Borttaget!', 30927 lv: 'NoÅemts!', 30928 lt: 'PaÅ¡alinta!', 30929 ee: 'Eemaldatud!', 30930 dk: 'Fjernet!', 30931 gb: 'Removed!', 30932 uk: 'Removed!', 30933 ie: 'Removed!', 30934 us: 'Removed!', 30935 ca: 'Removed!', 30936 au: 'Removed!', 30937 nz: 'Removed!', 30938 ru: 'Удалено!' 30939 } 30940 }; 30941 30942 // Tooltip translations for price info 30943 window.tooltipTranslations = { 30944 tooltipPrice: { 30945 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30946 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 30947 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 30948 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 30949 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 30950 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 30951 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 30952 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 30953 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 30954 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 30955 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 30956 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 30957 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 30958 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 30959 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 30960 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 30961 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 30962 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 30963 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 30964 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 30965 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 30966 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 30967 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 30968 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 30969 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
30969iks atskaitÄ«ts, ja piemÄrojams.", 30970 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 30971 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 30972 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 30973 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30974 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30975 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30976 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30977 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30978 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30979 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 30980 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 30981 }, 30982 tooltipOutlet: { 30983 en: "We do not provide additional wholesale discounts on outlet products.", 30984 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 30985 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 30986 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 30987 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 30988 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 30989 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 30990 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 30991 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 30992 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 30993 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 30994 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 30995 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 30996 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 30997 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 30998 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 30999 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 31000 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 31001 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 31002 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 31003 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 31004 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 31005 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 31006 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 31007 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 31008 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 31009 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 31010 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 31011 gb: "We do not provide additional wholesale discounts on outlet products.", 31012 uk: "We do not provide additional wholesale discounts on outlet products.", 31013 ie: "We do not provide additional wholesale discounts on outlet products.", 31014 us: "We do not provide additional wholesale discounts on outlet products.", 31015 ca: "We do not provide additional wholesale discounts on outlet products.", 31016 au: "We do not provide additional wholesale discounts on outlet products.", 31017 nz: "We do not provide additional wholesale discounts on outlet products.", 31018 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 31019 } 31020 }; 31021 31022 // Get current locale from document 31023 window.currentLocale = document.documentElement.lang || 'en'; 31024 31025 // Function to translate compare buttons 31026 window.translateCompareButtons = function() { 31027 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
31028 compareTexts.forEach(function(textEl) { 31029 const button = textEl.closest('.compare-button-simple'); 31030 const isInComparison = button && button.hasAttribute('data-in-comparison'); 31031 31032 if (isInComparison) { 31033 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 31034 textEl.textContent = translation; 31035 } else { 31036 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 31037 textEl.textContent = translation; 31038 } 31039 }); 31040 }; 31041 31042 // Function to format price with space as thousands separator (only for tooltip) 31043 function formatTooltipPrice(price) { 31044 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 31045 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 31046 } 31047 31048 // Function to translate tooltips with price 31049 window.translateTooltips = function() { 31050 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 31051 tooltips.forEach(function(tooltip) { 31052 const icon = tooltip.closest('.price-info-icon'); 31053 if (icon) { 31054 const status = icon.getAttribute('data-status'); 31055 // Check if this is an outlet product 31056 if (status === 'outlet') { 31057 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 31058 tooltip.textContent = translation; 31059 return; // Exit early for outlet products 31060 } 31061 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 31062 // Get wholesale price from the actual price display on the card 31063 const card = icon.closest('[data-product-id]'); 31064 let wholesalePrice = ''; 31065 if (card) { 31066 // Find the main price element on the card 31067 const priceElement = card.querySelector('.price .price-item--regular'); 31068 if (priceElement) { 31069 wholesalePrice = priceElement.textContent.trim(); 31070 } 31071 } 31072 if (retailPrice && wholesalePrice) { 31073 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 31074 let formattedRetailPrice = formatTooltipPrice(retailPrice); 31075 let formattedWholesalePrice = wholesalePrice; 31076 if (window.formatPriceText) { 31077 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 31078 } 31079 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 31080 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 31081 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 31082 tooltip.textContent = translatedText; 31083 } 31084 } 31085 }); 31086 }; 31087 31088 // Function to update button state based on comparison status 31089 window.updateCompareButtonState = function(productId, isInComparison) { 31090 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 31091 buttons.forEach(function(button) { 31092 const buttonContainer = button.closest('.compare-button-container'); 31093 const compareText = button.querySelector('.compare-text'); 31094 31095 if (isInComparison) { 31096 button.setAttribute('data-in-comparison', 'true'); 31097 button.classList.add('in-comparison'); 31098 buttonContainer.classList.add('in-comparison'); 31099 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 31100 compareText.textContent = removeText; 31101 } else { 31102 button.removeAttribute('data-in-comparison'); 31103 button.classList.remove('in-comparison'); 31104 buttonContainer.classList.remove('in-comparison'); 31105 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 31106 compareText.textContent = compareTextTranslation; 31107 } 31108 }); 31109 }; 31110 } 31111 31112 // Initialize compare button states based on localStorage 31113 window.initializeCompareButtonStates = function() {
31114 if (typeof window.RendlCompare !== 'undefined') { 31115 const compareItems = window.RendlCompare.getItems(); 31116 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 31117 const productId = button.getAttribute('data-product-id'); 31118 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 31119 window.updateCompareButtonState(productId, isInComparison); 31120 }); 31121 } 31122 }; 31123 31124 // Compare button UI animation - the actual functionality is handled by compare-system.js 31125 document.addEventListener('DOMContentLoaded', function() { 31126 // Apply translations on page load 31127 if (window.translateCompareButtons) { 31128 window.translateCompareButtons(); 31129 } 31130 31131 // Initialize button states based on comparison data 31132 setTimeout(function() { 31133 if (window.initializeCompareButtonStates) { 31134 window.initializeCompareButtonStates(); 31135 } 31136 }, 100); // Small delay to ensure compare system is loaded 31137 31138 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 31139 // Skip if already has event listener 31140 if (button.hasAttribute('data-compare-initialized')) { 31141 return; 31142 } 31143 button.setAttribute('data-compare-initialized', 'true'); 31144 31145 button.addEventListener('click', function(e) { 31146 var buttonContainer = button.closest('.compare-button-container'); 31147 var compareText = button.querySelector('.compare-text'); 31148 var isInComparison = button.hasAttribute('data-in-comparison'); 31149 var productId = button.getAttribute('data-product-id'); 31150 31151 // Prevent multiple clicks during loading 31152 if (button.classList.contains('loading')) { 31153 return; 31154 } 31155 31156 // Make button always visible during the process 31157 buttonContainer.classList.add('active'); 31158 31159 // Add loading class to show spinner 31160 button.classList.add('loading'); 31161 31162 // UI feedback timing 31163 setTimeout(function() { 31164 // Remove loading class and show success message 31165 button.classList.remove('loading'); 31166 button.classList.add('success'); 31167 31168 if (isInComparison) { 31169 // Removing from comparison 31170 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 31171 31172 // Update button state after removal 31173 setTimeout(function() { 31174 button.classList.remove('success'); 31175 window.updateCompareButtonState(productId, false); 31176 buttonContainer.classList.remove('active'); 31177 }, 1500); 31178 } else { 31179 // Adding to comparison 31180 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 31181 31182 // Update button state after addition 31183 setTimeout(function() { 31184 button.classList.remove('success'); 31185 window.updateCompareButtonState(productId, true); 31186 buttonContainer.classList.remove('active'); 31187 }, 1500); 31188 } 31189 }, 1200); 31190 }); 31191 }); 31192 31193 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 31194 setTimeout(function() { 31195 if (window.translateTooltips) { 31196 window.translateTooltips(); 31197 } 31198 }, 100); 31199 }); 31200 31201 // Ensure compare button states are initialized after RendlCompare is available 31202 document.addEventListener('DOMContentLoaded', function() { 31203 function tryInitCompareButtons() { 31204 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 31205 window.initializeCompareButtonStates(); 31206 } else { 31207 setTimeout(tryInitCompareButtons, 100); 31208 } 31209 } 31210 tryInitCompareButtons(); 31211 }); 31212 31213 // Self-contained wishlist functionality for card-product 31214 (function() { 31215 // Wishlist translations 31216 var wishlistTranslations = { 31217 'en': { 31218 addToWishlist: 'Add to My Favorites', 31219 createCategory: 'Create new category:', 31220 categoryPlaceholder: 'Category name', 31221 createAndAdd: 'Create & Add Item', 31222 alreadyAdded: '(Already added)', 31223 addedToWishlist: 'added to My Favorites', 31224 removedFromWishlist: 'removed from My Favorites', 31225 allFavorites: 'All Favorites' 31226 }, 31227 'cs': { 31228 addToWishlist: 'PÅidat do oblÃbených', 31229 createCategory: 'VytvoÅit novou skupinu:', 31230 categoryPlaceholder: 'Název nové skupiny', 31231 createAndAdd: 'VytvoÅit a pÅidat skupinu', 31232 alreadyAdded: '(Již pÅidáno)', 31233 addedToWishlist: 'pÅidáno do oblÃbených', 31234 removedFromWishlist: 'odebráno z oblÃbených', 31235 allFavorites: 'VÅ¡echny oblÃbené' 31236 }, 31237 'sk': { 31238 addToWishlist: 'PridaÅ¥ do obľúbených', 31239 createCategory: 'VytvoriÅ¥ novú kategóriu:', 31240 categoryPlaceholder: 'Názov kategórie', 31241 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 31242 alreadyAdded: '(Už pridané)', 31243 addedToWishlist: 'pridané do obľúbených', 31244 removedFromWishlist: 'odstránené z obľúbených', 31245 allFavorites: 'VÅ¡etky obľúbené' 31246 }, 31247 'de': { 31248 addToWishlist: 'Zu meinen Favoriten hinzufügen', 31249 createCategory: 'Neue Kategorie erstellen:', 31250 categoryPlaceholder: 'Kategoriename', 31251 createAndAdd: 'Erstellen & hinzufügen', 31252 alreadyAdded: '(Bereits hinzugefügt)', 31253 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 31254 removedFromWishlist: 'aus meinen Favoriten entfernt', 31255 allFavorites: 'Alle Favoriten' 31256 }, 31257 'fr': { 31258 addToWishlist: 'Ajouter à mes favoris', 31259 createCategory: 'Créer une nouvelle catégorie :', 31260 categoryPlaceholder: 'Nom de la catégorie', 31261 createAndAdd: 'Créer et ajouter', 31262 alreadyAdded: '(Déjà ajouté)', 31263 addedToWishlist: 'ajouté à mes favoris', 31264 removedFromWishlist: 'retiré de mes favoris', 31265 allFavorites: 'Tous les favoris' 31266 }, 31267 'it': { 31268 addToWishlist: 'Aggiungi ai preferiti', 31269 createCategory: 'Crea nuova categoria:', 31270 categoryPlaceholder: 'Nome categoria', 31271 createAndAdd: 'Crea e aggiungi', 31272 alreadyAdded: '(Già aggiunto)', 31273 addedToWishlist: 'aggiunto ai preferiti', 31274 removedFromWishlist: 'rimosso dai preferiti', 31275 allFavorites: 'Tutti i preferiti' 31276 }, 31277 'es': { 31278 addToWishlist: 'Añadir a mis favoritos', 31279 createCategory: 'Crear nueva categorÃa:', 31280 categoryPlaceholder: 'Nombre de la categorÃa', 31281 createAndAdd: 'Crear y añadir', 31282 alreadyAdded: '(Ya añadido)', 31283 addedToWishlist: 'añadido a mis favoritos', 31284 removedFromWishlist: 'eliminado de mis favoritos', 31285 allFavorites: 'Todos los favoritos' 31286 }, 31287 'nl': { 31288 addToWishlist: 'Toevoegen aan mijn favorieten', 31289 createCategory: 'Nieuwe categorie aanmaken:', 31290 categoryPlaceholder: 'Categorienaam', 31291 createAndAdd: 'Aanmaken & toevoegen', 31292 alreadyAdded: '(Al toegevoegd)', 31293 addedToWishlist: 'toegevoegd aan mijn favorieten', 31294 removedFromWishlist: 'verwijderd uit mijn favorieten', 31295 allFavorites: 'Alle favorieten' 31296 }, 31297 'pl': { 31298 addToWishlist: 'Dodaj do ulubionych', 31299 createCategory: 'Utwórz nowÄ kategoriÄ:', 31300 categoryPlaceholder: 'Nazwa kategorii', 31301 createAndAdd: 'Utwórz i dodaj', 31302 alreadyAdded: '(Już dodane)', 31303 addedToWishlist: 'dodano do ulubionych', 31304 removedFromWishlist: 'usuniÄto z ulubionych', 31305 allFavorites: 'Wszystkie ulubione' 31306 }, 31307 'hu': { 31308 addToWishlist: 'Hozzáadás a kedvencekhez', 31309 createCategory: 'Ãj kategória létrehozása:', 31310 categoryPlaceholder: 'Kategória neve', 31311 createAndAdd: 'Létrehozás és hozzáadás', 31312 alreadyAdded: '(Már hozzáadva)', 31313 addedToWishlist: 'hozzáadva a kedvencekhez', 31314 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 31315 allFavorites: 'Minden kedvenc' 31316 }, 31317 'ro': { 31318 addToWishlist: 'AdaugÄ la favorite', 31319 createCategory: 'CreeazÄ o nouÄ categorie:', 31320 categoryPlaceholder: 'Nume categorie', 31321 createAndAdd: 'CreeazÄ Èi adaugÄ', 31322 alreadyAdded: '(Deja adÄugat)', 31323 addedToWishlist: 'adÄugat la favorite', 31324 removedFromWishlist: 'eliminat din favorite', 31325 allFavorites: 'Toate preferinÈele' 31326 }, 31327 'bg': { 31328 addToWishlist: 'Ðобави в лÑбими', 31329 createCategory: 'СÑздай нова каÑегоÑиÑ:', 31330 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 31331 createAndAdd: 'СÑздай и добави', 31332 alreadyAdded: '(ÐеÑе добавено)', 31333 addedToWishlist: 'добавено в лÑбими', 31334 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 31335 allFavorites: 'ÐÑиÑки лÑбими' 31336 }, 31337 'hr': { 31338 addToWishlist: 'Dodaj u favorite', 31339 createCategory: 'Kreiraj novu kategoriju:', 31340 categoryPlaceholder: 'Naziv kategorije', 31341 createAndAdd: 'Kreiraj i dodaj', 31342 alreadyAdded: '(VeÄ dodano)', 31343 addedToWishlist: 'dodano u favorite', 31344 removedFromWishlist: 'uklonjeno iz favorita', 31345 allFavorites: 'Sva omiljena' 31346 }, 31347 'fi': { 31348 addToWishlist: 'Lisää suosikkeihin', 31349 createCategory: 'Luo uusi kategoria:', 31350 categoryPlaceholder: 'Kategorian nimi', 31351 createAndAdd: 'Luo ja lisää', 31352 alreadyAdded: '(Jo lisätty)', 31353 addedToWishlist: 'lisätty suosikkeihin', 31354 removedFromWishlist: 'poistettu suosikeista',
31355 allFavorites: 'Kaikki suosikit' 31356 }, 31357 'gr': { 31358 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 31359 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 31360 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 31361 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 31362 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 31363 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 31364 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 31365 allFavorites: 'Îλα Ïα αγαÏημÎνα' 31366 }, 31367 'no': { 31368 addToWishlist: 'Legg til i favoritter', 31369 createCategory: 'Opprett ny kategori:', 31370 categoryPlaceholder: 'Kategorinavn', 31371 createAndAdd: 'Opprett og legg til', 31372 alreadyAdded: '(Allerede lagt til)', 31373 addedToWishlist: 'lagt til i favoritter', 31374 removedFromWishlist: 'fjernet fra favoritter', 31375 allFavorites: 'Alle favoritter' 31376 }, 31377 'pt-PT': { 31378 addToWishlist: 'Adicionar aos favoritos', 31379 createCategory: 'Criar nova categoria:', 31380 categoryPlaceholder: 'Nome da categoria', 31381 createAndAdd: 'Criar e adicionar', 31382 alreadyAdded: '(Já adicionado)', 31383 addedToWishlist: 'adicionado aos favoritos', 31384 removedFromWishlist: 'removido dos favoritos', 31385 allFavorites: 'Todos os favoritos' 31386 }, 31387 'sl': { 31388 addToWishlist: 'Dodaj med priljubljene', 31389 createCategory: 'Ustvari novo kategorijo:', 31390 categoryPlaceholder: 'Ime kategorije', 31391 createAndAdd: 'Ustvari in dodaj', 31392 alreadyAdded: '(Že dodano)', 31393 addedToWishlist: 'dodano med priljubljene', 31394 removedFromWishlist: 'odstranjeno iz priljubljenih', 31395 allFavorites: 'Vsi priljubljeni' 31396 }, 31397 'sv': { 31398 addToWishlist: 'Lägg till i favoriter', 31399 createCategory: 'Skapa ny kategori:', 31400 categoryPlaceholder: 'Kategorinamn', 31401 createAndAdd: 'Skapa och lägg till', 31402 alreadyAdded: '(Redan tillagd)', 31403 addedToWishlist: 'tillagd i favoriter', 31404 removedFromWishlist: 'borttagen frÃ¥n favoriter', 31405 allFavorites: 'Alla favoriter' 31406 }, 31407 'lv': { 31408 addToWishlist: 'Pievienot favorÄ«tiem', 31409 createCategory: 'Izveidot jaunu kategoriju:', 31410 categoryPlaceholder: 'Kategorijas nosaukums', 31411 createAndAdd: 'Izveidot un pievienot', 31412 alreadyAdded: '(Jau pievienots)', 31413 addedToWishlist: 'pievienots favorÄ«tiem', 31414 removedFromWishlist: 'noÅemts no favorÄ«tiem', 31415 allFavorites: 'Visas favorÄ«tus' 31416 }, 31417 'lt': { 31418 addToWishlist: 'PridÄti į mÄgstamiausius', 31419 createCategory: 'Sukurti naujÄ kategorijÄ :', 31420 categoryPlaceholder: 'Kategorijos pavadinimas', 31421 createAndAdd: 'Sukurti ir pridÄti', 31422 alreadyAdded: '(Jau pridÄta)', 31423 addedToWishlist: 'pridÄta į mÄgstamiausius', 31424 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 31425 allFavorites: 'Visos mÄgstamiausios' 31426 }, 31427 'ee': { 31428 addToWishlist: 'Lisa lemmikutesse', 31429 createCategory: 'Loo uus kategooria:', 31430 categoryPlaceholder: 'Kategooria nimi', 31431 createAndAdd: 'Loo ja lisa', 31432 alreadyAdded: '(Juba lisatud)', 31433 addedToWishlist: 'lisatud lemmikutesse', 31434 removedFromWishlist: 'eemaldatud lemmikutest', 31435 allFavorites: 'Kõik lemmikud' 31436 }, 31437 'dk': { 31438 addToWishlist: 'Tilføj til favoritter', 31439 createCategory: 'Opret ny kategori:', 31440 categoryPlaceholder: 'Kategorinavn', 31441 createAndAdd: 'Opret og tilføj', 31442 alreadyAdded: '(Allerede tilføjet)', 31443 addedToWishlist: 'tilføjet til favoritter', 31444 removedFromWishlist: 'fjernet fra favoritter', 31445 allFavorites: 'Alle favoritter' 31446 } 31447 }; 31448 31449 function getWishlistLang() { 31450 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 31451 // Normalize for region codes (e.g., pt-PT, sl) 31452 if (lang.startsWith('pt-PT')) return 'pt-PT'; 31453 if (lang.startsWith('sl')) return 'sl'; 31454 if (lang.startsWith('cs')) return 'cs'; 31455 if (lang.startsWith('sk')) return 'sk'; 31456 if (lang.startsWith('de')) return 'de'; 31457 if (lang.startsWith('fr')) return 'fr'; 31458 if (lang.startsWith('it')) return 'it'; 31459 if (lang.startsWith('es')) return 'es'; 31460 if (lang.startsWith('nl')) return 'nl'; 31461 if (lang.startsWith('pl')) return 'pl'; 31462 if (lang.startsWith('hu')) return 'hu'; 31463 if (lang.startsWith('ro')) return 'ro'; 31464 if (lang.startsWith('bg')) return 'bg'; 31465 if (lang.startsWith('hr')) return 'hr'; 31466 if (lang.startsWith('fi')) return 'fi'; 31467 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 31468 if (lang.startsWith('no')) return 'no'; 31469 if (lang.startsWith('sv')) return 'sv'; 31470 if (lang.startsWith('lv')) return 'lv'; 31471 if (lang.startsWith('lt')) return 'lt'; 31472 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 31473 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 31474 return 'en'; 31475 } 31476 31477 // Get or initialize the wishlist array in localStorage 31478 function getWishlist() { 31479 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 31480 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 31481 categories: [ 31482 { 31483 id: 'all-favorites', 31484 name: 'All Favorites', 31485 items: [] 31486 } 31487 ], 31488 version: 2 31489 }; 31490 31491 // Handle migration from old format (array of items) to new format (categories) 31492 if (Array.isArray(wishlist)) { 31493 return { 31494 categories: [ 31495 { 31496 id: 'all-favorites', 31497 name: 'All Favorites', 31498 items: wishlist 31499 } 31500 ], 31501 version: 2 31502 }; 31503 } 31504 31505 return wishlist; 31506 } 31507 31508 // Save wishlist to localStorage 31509 function saveWishlist(wishlist) { 31510 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 31511 // Dispatch an event so other parts of the site can react to wishlist changes 31512 document.dispatchEvent(new CustomEvent('wishlist:updated', { 31513 detail: { wishlist: wishlist } 31514 })); 31515 31516 // Count total items across all categories 31517 const totalItems = wishlist.categories.reduce((total, category) => { 31518 return total + category.items.length; 31519 }, 0); 31520 31521 // Update all wishlist counters 31522 updateWishlistCounters(totalItems); 31523 } 31524 31525 // Update all wishlist counters on the page 31526 function updateWishlistCounters(count) { 31527 const counters = document.querySelectorAll('.wishlist-count');
31528 counters.forEach(counter => { 31529 counter.textContent = count; 31530 31531 // If the counter is hidden and count > 0, show it 31532 if (count > 0 && counter.hasAttribute('hidden')) { 31533 counter.removeAttribute('hidden'); 31534 } 31535 // If the counter is visible and count = 0, hide it 31536 else if (count === 0 && !counter.hasAttribute('hidden')) { 31537 counter.setAttribute('hidden', 'true'); 31538 } 31539 }); 31540 } 31541 31542 // Check if a product is in the wishlist (in any category) 31543 function isInWishlist(productId) { 31544 const wishlist = getWishlist(); 31545 return wishlist.categories.some(category => 31546 category.items.some(item => item.id === productId) 31547 ); 31548 } 31549 31550 // Get all categories 31551 function getCategories() { 31552 return getWishlist().categories; 31553 } 31554 31555 // Create a new category 31556 function createCategory(name) { 31557 const wishlist = getWishlist(); 31558 const categoryId = 'category-' + Date.now(); 31559 31560 wishlist.categories.push({ 31561 id: categoryId, 31562 name: name, 31563 items: [] 31564 }); 31565 31566 saveWishlist(wishlist); 31567 return categoryId; 31568 } 31569 31570 // Add a product to a specific category 31571 function addToCategory(product, categoryId) { 31572 const wishlist = getWishlist(); 31573 const category = wishlist.categories.find(cat => cat.id === categoryId); 31574 31575 if (!category) return false; 31576 31577 // Check if product already exists in ANY category (not just this one) 31578 if (isInWishlist(product.id)) { 31579 return false; // Product already in wishlist 31580 } 31581 31582 // Add product to category 31583 category.items.push(product); 31584 saveWishlist(wishlist); 31585 31586 // Dispatch event for global sync 31587 document.dispatchEvent(new CustomEvent('wishlist:updated', { 31588 detail: { productId: product.id, added: true } 31589 })); 31590 31591 return true; 31592 } 31593 31594 // Add a product to the default "All Favorites" category 31595 function addToWishlist(product) { 31596 return addToCategory(product, 'all-favorites'); 31597 } 31598 31599 // Remove a product from all categories 31600 function removeFromWishlist(productId) { 31601 const wishlist = getWishlist(); 31602 let removed = false; 31603 31604 wishlist.categories.forEach(category => { 31605 const initialLength = category.items.length; 31606 category.items = category.items.filter(item => item.id !== productId); 31607 if (category.items.length !== initialLength) { 31608 removed = true; 31609 } 31610 }); 31611 31612 if (removed) { 31613 saveWishlist(wishlist); 31614 } 31615 31616 return removed; 31617 } 31618 31619 // Toggle a product in the wishlist 31620 function toggleWishlistItem(product) { 31621 if (isInWishlist(product.id)) { 31622 // If already in wishlist, remove it 31623 const wasRemoved = removeFromWishlist(product.id); 31624 31625 // Update heart icon if the product was successfully removed 31626 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 31627 if (heartIcon && wasRemoved) { 31628 heartIcon.setAttribute('fill', 'none'); 31629 showWishlistToast(false, product.title); 31630 31631 // Dispatch event for global sync 31632 document.dispatchEvent(new CustomEvent('wishlist:updated', { 31633 detail: { productId: product.id, added: false } 31634 })); 31635 } 31636 return wasRemoved; 31637 } else { 31638 // If not in wishlist, show category selection popup 31639 showCategorySelectionPopup(product); 31640 return false; // Don't return true unless we actually add the product 31641 } 31642 } 31643 31644 // Show wishlist category selection popup 31645 function showCategorySelectionPopup(product) { 31646 // Remove any existing popup 31647 const existingPopup = document.getElementById('wishlist-category-popup'); 31648 if (existingPopup) { 31649 existingPopup.remove(); 31650 } 31651 31652 const lang = getWishlistLang(); 31653 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 31654 31655 // Create popup container 31656 const popup = document.createElement('div'); 31657 popup.id = 'wishlist-category-popup'; 31658 popup.className = 'wishlist-category-popup'; 31659 31660 // Create popup content 31661 const content = document.createElement('div'); 31662 content.className = 'wishlist-category-popup-content'; 31663 31664 // Create header 31665 const title = document.createElement('h2'); 31666 title.textContent = translations.addToWishlist; // Translate 31667 31668 const closeButton = document.createElement('button'); 31669 closeButton.className = 'wishlist-category-popup-close'; 31670 closeButton.setAttribute('aria-label', 'Close'); 31671 closeButton.addEventListener('click', () => { 31672 popup.remove(); 31673 }); 31674 31675 // Create category list 31676 const categoryList = document.createElement('div'); 31677 categoryList.className = 'wishlist-category-list'; 31678 31679 // Get categories 31680 const categories = getCategories(); 31681 31682 // Add category options
31683 categories.forEach(category => { 31684 const categoryOption = document.createElement('div'); 31685 categoryOption.className = 'wishlist-category-option'; 31686 31687 // Use translation for default category name 31688 categoryOption.textContent = category.id === 'all-favorites' 31689 ? (translations.allFavorites || category.name) 31690 : category.name; 31691 31692 // Highlight if product already in this category 31693 if (category.items.some(item => item.id === product.id)) { 31694 categoryOption.style.backgroundColor = '#f0f0f0'; 31695 categoryOption.style.color = '#999'; 31696 categoryOption.style.fontStyle = 'italic'; 31697 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 31698 categoryOption.style.cursor = 'default'; 31699 } else { 31700 categoryOption.addEventListener('click', () => { 31701 const wasAdded = addToCategory(product, category.id); 31702 31703 if (wasAdded) { 31704 // Update heart icon after successful addition 31705 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 31706 if (heartIcon) { 31707 heartIcon.setAttribute('fill', '#333333'); 31708 } 31709 31710 showWishlistToast(true, product.title); 31711 popup.remove(); 31712 } 31713 }); 31714 } 31715 31716 categoryList.appendChild(categoryOption); 31717 }); 31718 31719 // Create "add new category" section 31720 const newCategorySection = document.createElement('div'); 31721 newCategorySection.style.borderTop = '1px solid #eee'; 31722 newCategorySection.style.paddingTop = '15px'; 31723 newCategorySection.style.marginTop = '10px'; 31724 31725 const newCategoryLabel = document.createElement('label'); 31726 newCategoryLabel.textContent = translations.createCategory; // Translate 31727 31728 const newCategoryInput = document.createElement('input'); 31729 newCategoryInput.type = 'text'; 31730 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 31731 31732 const createButton = document.createElement('button'); 31733 createButton.className = 'create-category-button'; 31734 createButton.textContent = translations.createAndAdd; // Translate 31735 31736 createButton.addEventListener('click', () => { 31737 const categoryName = newCategoryInput.value.trim(); 31738 if (categoryName) { 31739 const categoryId = createCategory(categoryName); 31740 const wasAdded = addToCategory(product, categoryId); 31741 31742 if (wasAdded) { 31743 // Update heart icon after successful addition 31744 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 31745 if (heartIcon) { 31746 heartIcon.setAttribute('fill', '#333333'); 31747 } 31748 31749 showWishlistToast(true, product.title); 31750 popup.remove(); 31751 } 31752 } 31753 }); 31754 31755 newCategorySection.appendChild(newCategoryLabel); 31756 newCategorySection.appendChild(newCategoryInput); 31757 newCategorySection.appendChild(createButton); 31758 31759 // Assemble popup 31760 content.appendChild(title); 31761 content.appendChild(closeButton); 31762 content.appendChild(categoryList); 31763 content.appendChild(newCategorySection); 31764 popup.appendChild(content); 31765 31766 // Add to document 31767 document.body.appendChild(popup); 31768 31769 // Focus the input 31770 setTimeout(() => { 31771 newCategoryInput.focus(); 31772 }, 100); 31773 31774 // Close when clicking outside content 31775 popup.addEventListener('click', (e) => { 31776 if (e.target === popup) { 31777 popup.remove(); 31778 } 31779 }); 31780 } 31781 31782 // Show a toast notification 31783 function showWishlistToast(added, productTitle) { 31784 // Create or get toast container 31785 let toastContainer = document.getElementById('wishlist-toast'); 31786 if (!toastContainer) { 31787 toastContainer = document.createElement('div'); 31788 toastContainer.id = 'wishlist-toast'; 31789 toastContainer.style.position = 'fixed'; 31790 toastContainer.style.bottom = '20px'; 31791 toastContainer.style.right = '20px'; 31792 toastContainer.style.zIndex = '9999'; 31793 document.body.appendChild(toastContainer); 31794 } 31795 31796 // Create toast 31797 const toast = document.createElement('div'); 31798 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 31799 toast.style.color = 'white'; 31800 toast.style.padding = '12px 20px'; 31801 toast.style.borderRadius = '0'; 31802 toast.style.marginTop = '10px'; 31803 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 31804 toast.style.transition = 'all 0.3s ease'; 31805 toast.style.opacity = '0'; 31806 toast.style.fontFamily = 'Montserrat, sans-serif'; 31807 31808 // Choose text based on action 31809 const lang = getWishlistLang(); 31810 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 31811 toast.textContent = added 31812 ? `${productTitle} ${translations.addedToWishlist}` // Translate 31813 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 31814 31815 // Add to container 31816 toastContainer.appendChild(toast); 31817 31818 // Animate in 31819 setTimeout(() => { 31820 toast.style.opacity = '1'; 31821 }, 10); 31822 31823 // Animate out and remove 31824 setTimeout(() => { 31825 toast.style.opacity = '0'; 31826 setTimeout(() => { 31827 toastContainer.removeChild(toast); 31828 }, 300); 31829 }, 3000); 31830 } 31831 31832 // Initialize wishlist buttons 31833 function initCardWishlistButtons() { 31834 const wishlistButtons = document.querySelectorAll('.card-wis
31834hlist-button'); 31835 31836 wishlistButtons.forEach(button => { 31837 // Skip if already initialized 31838 if (button.dataset.initializedWishlist === 'true') return; 31839 button.dataset.initializedWishlist = 'true'; 31840 31841 const productId = button.getAttribute('data-wishlist-product'); 31842 if (!productId) return; 31843 31844 // Get product details from the card 31845 const card = button.closest('.card-wrapper'); 31846 const productDetails = { 31847 id: productId, 31848 title: card.querySelector('.card__heading')?.textContent.trim() || '', 31849 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 31850 price: card.querySelector('.price')?.textContent.trim() || '', 31851 image: card.querySelector('img')?.src || '', 31852 url: card.querySelector('a[href*="/products/"]')?.href || '' 31853 }; 31854 31855 // Set initial state using global function 31856 const heartIcon = button.querySelector('path'); 31857 if (heartIcon) { 31858 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 31859 heartIcon.setAttribute('fill', '#333333'); 31860 } else { 31861 heartIcon.setAttribute('fill', 'none'); 31862 } 31863 } 31864 31865 // Add click handler 31866 button.addEventListener('click', function(e) { 31867 e.preventDefault(); 31868 e.stopPropagation(); 31869 e.stopImmediatePropagation(); 31870 toggleWishlistItem(productDetails); 31871 }); 31872 31873 // Prevent navigation on mousedown/touchstart 31874 button.addEventListener('mousedown', function(e) { 31875 e.preventDefault(); 31876 e.stopPropagation(); 31877 }); 31878 31879 button.addEventListener('touchstart', function(e) { 31880 e.preventDefault(); 31881 e.stopPropagation(); 31882 }); 31883 }); 31884 } 31885 31886 // Initialize the wishlist counter on page load 31887 const wishlist = getWishlist(); 31888 const totalItems = wishlist.categories.reduce((total, category) => { 31889 return total + category.items.length; 31890 }, 0); 31891 updateWishlistCounters(totalItems); 31892 31893 // Initialize on DOM ready 31894 if (document.readyState === 'loading') { 31895 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 31896 } else { 31897 initCardWishlistButtons(); 31898 } 31899 31900 // Reinitialize on Shopify section load 31901 document.addEventListener('shopify:section:load', function() { 31902 setTimeout(initCardWishlistButtons, 100); 31903 }); 31904 31905 // Listen for wishlist updates from other parts of the site 31906 document.addEventListener('wishlist:updated', function() { 31907 setTimeout(initCardWishlistButtons, 100); 31908 }); 31909 })(); 31910</script>
31910 31911 31912<!-- Price info icon styles --> 31913<style> 31914 /* Price container with icon */ 31915 .price-container-with-info { 31916 position: relative; 31917 display: flex; 31918 align-items: center; 31919 gap: 8px; 31920 } 31921 31922 /* Info icon - hidden by default, shown on card hover */ 31923 .price-info-icon { 31924 position: relative; 31925 display: inline-flex; 31926 align-items: center; 31927 justify-content: center; 31928 color: #666; 31929 cursor: help; 31930 opacity: 0; 31931 transition: opacity 0.3s ease; 31932 31933 padding: 4px; /* Add padding to increase clickable area */ 31934 min-width: 20px; /* Ensure minimum clickable area */ 31935 min-height: 20px; 31936 z-index: 15; /* Above everything else including compare button */ 31937 pointer-events: auto; /* Allow interaction */ 31938 } 31939 31940 /* Show icon on card hover */ 31941 .card-wrapper:hover .price-info-icon { 31942 opacity: 1; 31943 } 31944 31945 .price-info-icon svg { 31946 width: 14px; 31947 height: 14px; 31948 stroke-width: 1.5; 31949 } 31950 31951 /* Tooltip styles */ 31952 .price-info-tooltip { 31953 position: absolute; 31954 bottom: calc(100% + 6px); 31955 top: auto; 31956 left: 0; 31957 transform: none; 31958 min-width: 310px; 31959 background: #FFFFFF; 31960 color: #232323; 31961 border: 1px solid #EEEEEE; 31962 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 31963 padding: 12px 16px; 31964 font-size: 13px; 31965 font-family: 'Montserrat', sans-serif; 31966 z-index: 10000; 31967 opacity: 0; 31968 transition: opacity 0.18s; 31969 white-space: pre-line; 31970 text-align: left; 31971 border-radius: 0; 31972 visibility: hidden; 31973 pointer-events: none; 31974 } 31975 31976 /* Show tooltip on icon hover */ 31977 .price-info-icon:hover .price-info-tooltip { 31978 visibility: visible; 31979 opacity: 1; 31980 } 31981 31982 /* Ensure tooltip is never clipped */ 31983 .price-container-with-info, 31984 .card-information, 31985 .card__content { 31986 overflow: visible !important; 31987 } 31988 31989 /* Mobile adjustments */ 31990 @media screen and (max-width: 768px) { 31991 .price-info-tooltip { 31992 min-width: 200px; 31993 font-size: 12px; 31994 padding: 10px 12px; 31995 } 31996 } 31997</style> 31998 31999 </li> 32000 <li 32001 class="grid__item" 32002 32003 > 32004 32005<div class="card-wrapper product-card-wrapper underline-links-hover"> 32006 32007 <div 32008 class=" 32009 card card--standard 32010 card--media 32011 32012 32013 32014 32015 32016 " 32017 style="--ratio-percent: 100.0%;" 32018 data-product-id="9746963398954" 32019 data-description="Lámpara de pie para exteriores. El interior está pintado con un color dorado, que crea una luz suave y cálida." 32020 data-status-in-sortiment="VYB" 32021 data-ip-rate="IP54" 32022 32023 data-variant-id="52388038312234" 32024 data-price="138.00 EUR" 32025 data-compare-at-price="173.00 EUR" 32026 data-available="false" 32027 data-barcode="8595685402130" 32028 data-ip-rate="IP54" 32029 data-lumens="123" 32030 data-power-source="" 32031 data-watt="7.0" 32032 data-kelvin="3000" 32033 data-light-color="" 32034 data-diameter="" 32035 data-weight-netto="880.0" 32036 data-weight-unit="g" 32037 data-mounting-hole-size="" 32038 data-recess-depth="" 32039 data-suspension-lenght="" 32040 data-turn-angle="" 32041 data-tilt-angle="" 32042 data-switch="" 32043 data-socket="" 32044 data-light-source-recomended="" 32045 data-height="25" 32046 data-length="10" 32047 data-Length="" 32048 > 32049 <div 32050 class="card__inner color-scheme-2 gradient ratio" 32051 style="--ratio-percent: 100.0%;" 32052 > 32053 32054 32055<div class="ip-rate-badge"> 32056 <span>IP54</span> 32057 </div><div class="card__media"> 32058 <a class="card__media-link-content" href="/products/treeza-led-25-bollard-lamp" aria-label="TREEZA LED 25"> 32059 <div class="media media--transparent media--hover-effect"> 32060 32061 <img 32062 class="product-image motion-reduce" 32063 srcset="//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=165 165w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=360 360w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=533 533w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=720 720w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=940 940w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=1066 1066w,//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170 4899w 32064 " 32065 src="//rendl.es/cdn/shop/files/r10380-1.jpg?v=1745940170&width=533" 32066 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 32067 alt="RENDL outdoor lamp TREEZA LED 25 bollard anthracite grey 230V LED 7W 60° IP54 3000K R10380 1" 32068 32069 loading="lazy" 32070 32071 width="4899" 32072 height="4899" 32073 > 32074 32075<img 32076 class="product-image motion-reduce" 32077 srcset="//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=165 165w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=360 360w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=533 533w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=720 720w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=940 940w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=1066 1066w,//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480 3162w 32078 " 32079 src="//rendl.es/cdn/shop/files/r10380-2.jpg?v=1767057480&width=533" 32080 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 32081 alt="" 32082 loading="lazy" 32083 width="3162" 32084 height="3162" 32085 ></div> 32086 </a> 32087 32088<div class="card-media-icons"><div class="energy-label-icon"> 32089 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 32090 <div class="energy-label-tooltip">Clase energética G 32091</div> 32092 </div></div><div class="card-variant-swatches"><a 32093 class="card-variant-swatch" 32094 href="/products/treeza-led-25-bollard-lamp?variant=52388038312234" 32095 32096 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 32097 32098 aria-label="gris antracita" 32099 >
32100 <span class="card-variant-swatch-tooltip">gris antracita</span><span class="card-variant-swatch-discount">%</span></a></div></div><div class="card__content"> 32101 <div class="card__information"> 32102 <h3 32103 class="card__heading" 32104 32105 > 32106 <a 32107 href="/products/treeza-led-25-bollard-lamp" 32108 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746963398954" 32109 class="full-unstyled-link" 32110 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746963398954 NoMediaStandardBadge-template--28113427169578__product-grid-9746963398954" 32111 > 32112 TREEZA LED 25 32113 </a> 32114 </h3> 32115 </div> 32116 <div class="card__badge bottom left"><span 32117 id="NoMediaStandardBadge-template--28113427169578__product-grid-9746963398954" 32118 class="badge badge--bottom-left color-scheme-3" 32119 >En camino</span></div> 32120 </div> 32121 </div> 32122 <div class="card__content"> 32123 <div class="card__information"> 32124 <h3 32125 class="card__heading h5" 32126 32127 id="title-template--28113427169578__product-grid-9746963398954" 32128 32129 > 32130 <a 32131 href="/products/treeza-led-25-bollard-lamp" 32132 id="CardLink-template--28113427169578__product-grid-9746963398954" 32133 class="full-unstyled-link" 32134 aria-labelledby="CardLink-template--28113427169578__product-grid-9746963398954 Badge-template--28113427169578__product-grid-9746963398954" 32135 > 32136 TREEZA LED 25 32137 </a> 32138 </h3><div class="card__description"> 32139 Lámpara de pie para exteriores. El interior está pintado con un color dorado, que crea una luz suave y cálida. 32140 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 32141 32142<div 32143 class=" 32144 price price--sold-out price--on-sale" 32145 > 32146 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 32147 <span class="price-item price-item--regular"> 32148 138.00 EUR 32149 </span></div> 32150 <div class="price__sale"> 32151 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 32152 <span> 32153 <s class="price-item price-item--regular"> 32154 32155 173.00 EUR 32156 32157 </s> 32158 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 32159 <span class="price-item price-item--sale price-item--last"> 32160 138.00 EUR 32161 </span> 32162 </div> 32163 <small class="unit-price caption hidden"> 32164 <span class="visually-hidden">Precio unitario</span> 32165 <span class="price-item price-item--last"> 32166 <span></span> 32167 <span aria-hidden="true">/</span> 32168 <span class="visually-hidden"> por </span> 32169 <span> 32170 </span> 32171 </span> 32172 </small> 32173 </div></div> 32174 32175 32176</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 32177 <button class="compare-button-simple" 32178 data-product-id="9746963398954" 32179 data-product-title="TREEZA LED 25" 32180 data-product-handle="treeza-led-25-bollard-lamp"> 32181 <span class="compare-button-content"> 32182 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 32183 <span class="compare-text" data-translate="compare">compare</span> 32184 </span> 32185 <span class="compare-spinner-small"> 32186 <!-- Small spinner for button --> 32187 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 32188 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 32189 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 32190 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
32190inite"/> 32191 </path> 32192 </svg> 32193 </span> 32194 </button> 32195 32196 <!-- Wishlist button next to compare button --> 32197 <button type="button" class="card-wishlist-button" data-wishlist-product="9746963398954"> 32198 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 32199 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 32200 </svg> 32201 </button> 32202 </div></div> 32203 </div> 32204 32205 32206 32207 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746963398954" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 32208 type="hidden" 32209 name="id" 32210 value="52388038312234" 32211 class="product-variant-id" 32212 32213 disabled 32214 32215 > 32216 <button 32217 id="quick-add-template--28113427169578__product-grid9746963398954-submit" 32218 type="submit" 32219 name="add" 32220 class="quick-add__submit button button--full-width button--secondary" 32221 aria-haspopup="dialog" 32222 aria-labelledby="quick-add-template--28113427169578__product-grid9746963398954-submit title-template--28113427169578__product-grid-9746963398954" 32223 aria-live="polite" 32224 data-sold-out-message="true" 32225 32226 disabled 32227 32228 > 32229 <span>En camino 32230</span> 32231 <span class="sold-out-message hidden"> 32232 En camino 32233 </span> 32234 32235<div class="loading__spinner hidden"> 32236 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 32237 32238</div> 32239</button><input type="hidden" name="product-id" value="9746963398954" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 32240 32241 <div class="card__badge bottom left"><span 32242 id="Badge-template--28113427169578__product-grid-9746963398954" 32243 class="badge badge--bottom-left color-scheme-3" 32244 >En camino</span></div> 32245 </div> 32246 </div> 32247 </div>
32247<script> 32248 // Initialize global compare translations only once 32249 if (typeof window.compareButtonTranslations === 'undefined') { 32250 window.compareButtonTranslations = { 32251 compare: { 32252 en: 'compare', 32253 cs: 'porovnat', 32254 sk: 'porovnaÅ¥', 32255 de: 'vergleichen', 32256 at: 'vergleichen', 32257 ch: 'vergleichen', 32258 fr: 'comparer', 32259 be: 'comparer', 32260 lu: 'comparer', 32261 it: 'confronta', 32262 es: 'comparar', 32263 nl: 'vergelijken', 32264 pl: 'porównaj', 32265 hu: 'összehasonlÃt', 32266 ro: 'comparÄ', 32267 bg: 'ÑÑавни', 32268 hr: 'usporedi', 32269 fi: 'vertaile', 32270 gr: 'ÏÏγκÏιÏη', 32271 el: 'ÏÏγκÏιÏη', 32272 no: 'sammenlign', 32273 'pt-PT': 'comparar', 32274 sl: 'primerjaj', 32275 sv: 'jämför', 32276 lv: 'salÄ«dzinÄt', 32277 lt: 'palyginti', 32278 ee: 'võrdle', 32279 dk: 'sammenlign', 32280 gb: 'compare', 32281 uk: 'compare', 32282 ie: 'compare', 32283 us: 'compare', 32284 ca: 'compare', 32285 au: 'compare', 32286 nz: 'compare', 32287 ru: 'ÑÑавниÑÑ' 32288 }, 32289 remove: { 32290 en: 'remove', 32291 cs: 'odebrat', 32292 sk: 'odobraÅ¥', 32293 de: 'entfernen', 32294 at: 'entfernen', 32295 ch: 'entfernen', 32296 fr: 'supprimer', 32297 be: 'supprimer', 32298 lu: 'supprimer', 32299 it: 'rimuovi', 32300 es: 'eliminar', 32301 nl: 'verwijderen', 32302 pl: 'usuÅ', 32303 hu: 'eltávolÃt', 32304 ro: 'eliminÄ', 32305 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 32306 hr: 'ukloni', 32307 fi: 'poista', 32308 gr: 'αÏαίÏεÏη', 32309 el: 'αÏαίÏεÏη', 32310 no: 'fjern', 32311 'pt-PT': 'remover', 32312 sl: 'odstrani', 32313 sv: 'ta bort', 32314 lv: 'noÅemt', 32315 lt: 'paÅ¡alinti', 32316 ee: 'eemalda', 32317 dk: 'fjern', 32318 gb: 'remove', 32319 uk: 'remove', 32320 ie: 'remove', 32321 us: 'remove', 32322 ca: 'remove', 32323 au: 'remove', 32324 nz: 'remove', 32325 ru: 'ÑдалиÑÑ' 32326 }, 32327 added: { 32328 en: 'Added!', 32329 cs: 'PÅidáno!', 32330 sk: 'Pridané!', 32331 de: 'Hinzugefügt!', 32332 at: 'Hinzugefügt!', 32333 ch: 'Hinzugefügt!', 32334 fr: 'Ajouté!', 32335 be: 'Ajouté!', 32336 lu: 'Ajouté!', 32337 it: 'Aggiunto!', 32338 es: '¡Añadido!', 32339 nl: 'Toegevoegd!', 32340 pl: 'Dodano!', 32341 hu: 'Hozzáadva!', 32342 ro: 'AdÄugat!', 32343 bg: 'Ðобавено!', 32344 hr: 'Dodano!', 32345 fi: 'Lisätty!', 32346 gr: 'Î ÏοÏÏÎθηκε!', 32347 el: 'Î ÏοÏÏÎθηκε!', 32348 no: 'Lagt til!', 32349 'pt-PT': 'Adicionado!', 32350 sl: 'Dodano!', 32351 sv: 'Tillagd!', 32352 lv: 'Pievienots!', 32353 lt: 'PridÄta!', 32354 ee: 'Lisatud!', 32355 dk: 'Tilføjet!', 32356 gb: 'Added!', 32357 uk: 'Added!', 32358 ie: 'Added!', 32359 us: 'Added!', 32360 ca: 'Added!', 32361 au: 'Added!', 32362 nz: 'Added!', 32363 ru: 'Ðобавлено!' 32364 }, 32365 removed: { 32366 en: 'Removed!', 32367 cs: 'Odebráno!', 32368 sk: 'Odobrané!', 32369 de: 'Entfernt!', 32370 at: 'Entfernt!', 32371 ch: 'Entfernt!', 32372 fr: 'Supprimé!', 32373 be: 'Supprimé!', 32374 lu: 'Supprimé!', 32375 it: 'Rimosso!', 32376 es: '¡Eliminado!', 32377 nl: 'Verwijderd!', 32378 pl: 'UsuniÄto!', 32379 hu: 'EltávolÃtva!', 32380 ro: 'Eliminat!', 32381 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 32382 hr: 'Uklonjeno!', 32383 fi: 'Poistettu!', 32384 gr: 'ÎÏαιÏÎθηκε!', 32385 el: 'ÎÏαιÏÎθηκε!', 32386 no: 'Fjernet!', 32387 'pt-PT': 'Removido!', 32388 sl: 'Odstranjeno!', 32389 sv: 'Borttaget!', 32390 lv: 'NoÅemts!', 32391 lt: 'PaÅ¡alinta!', 32392 ee: 'Eemaldatud!', 32393 dk: 'Fjernet!', 32394 gb: 'Removed!', 32395 uk: 'Removed!', 32396 ie: 'Removed!', 32397 us: 'Removed!', 32398 ca: 'Removed!', 32399 au: 'Removed!', 32400 nz: 'Removed!', 32401 ru: 'Удалено!' 32402 } 32403 }; 32404 32405 // Tooltip translations for price info 32406 window.tooltipTranslations = { 32407 tooltipPrice: { 32408 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32409 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 32410 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 32411 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 32412 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 32413 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 32414 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 32415 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 32416 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 32417 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 32418 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 32419 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 32420 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 32421 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 32422 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 32423 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 32424 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 32425 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 32426 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 32427 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 32428 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 32429 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 32430 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 32431 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 32432 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
32432iks atskaitÄ«ts, ja piemÄrojams.", 32433 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 32434 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 32435 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 32436 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32437 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32438 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32439 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32440 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32441 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32442 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 32443 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 32444 }, 32445 tooltipOutlet: { 32446 en: "We do not provide additional wholesale discounts on outlet products.", 32447 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 32448 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 32449 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 32450 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 32451 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 32452 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 32453 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 32454 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 32455 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 32456 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 32457 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 32458 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 32459 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 32460 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 32461 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 32462 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 32463 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 32464 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 32465 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 32466 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 32467 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 32468 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 32469 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 32470 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 32471 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 32472 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 32473 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 32474 gb: "We do not provide additional wholesale discounts on outlet products.", 32475 uk: "We do not provide additional wholesale discounts on outlet products.", 32476 ie: "We do not provide additional wholesale discounts on outlet products.", 32477 us: "We do not provide additional wholesale discounts on outlet products.", 32478 ca: "We do not provide additional wholesale discounts on outlet products.", 32479 au: "We do not provide additional wholesale discounts on outlet products.", 32480 nz: "We do not provide additional wholesale discounts on outlet products.", 32481 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 32482 } 32483 }; 32484 32485 // Get current locale from document 32486 window.currentLocale = document.documentElement.lang || 'en'; 32487 32488 // Function to translate compare buttons 32489 window.translateCompareButtons = function() { 32490 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
32491 compareTexts.forEach(function(textEl) { 32492 const button = textEl.closest('.compare-button-simple'); 32493 const isInComparison = button && button.hasAttribute('data-in-comparison'); 32494 32495 if (isInComparison) { 32496 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 32497 textEl.textContent = translation; 32498 } else { 32499 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 32500 textEl.textContent = translation; 32501 } 32502 }); 32503 }; 32504 32505 // Function to format price with space as thousands separator (only for tooltip) 32506 function formatTooltipPrice(price) { 32507 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 32508 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 32509 } 32510 32511 // Function to translate tooltips with price 32512 window.translateTooltips = function() { 32513 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 32514 tooltips.forEach(function(tooltip) { 32515 const icon = tooltip.closest('.price-info-icon'); 32516 if (icon) { 32517 const status = icon.getAttribute('data-status'); 32518 // Check if this is an outlet product 32519 if (status === 'outlet') { 32520 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 32521 tooltip.textContent = translation; 32522 return; // Exit early for outlet products 32523 } 32524 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 32525 // Get wholesale price from the actual price display on the card 32526 const card = icon.closest('[data-product-id]'); 32527 let wholesalePrice = ''; 32528 if (card) { 32529 // Find the main price element on the card 32530 const priceElement = card.querySelector('.price .price-item--regular'); 32531 if (priceElement) { 32532 wholesalePrice = priceElement.textContent.trim(); 32533 } 32534 } 32535 if (retailPrice && wholesalePrice) { 32536 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 32537 let formattedRetailPrice = formatTooltipPrice(retailPrice); 32538 let formattedWholesalePrice = wholesalePrice; 32539 if (window.formatPriceText) { 32540 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 32541 } 32542 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 32543 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 32544 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 32545 tooltip.textContent = translatedText; 32546 } 32547 } 32548 }); 32549 }; 32550 32551 // Function to update button state based on comparison status 32552 window.updateCompareButtonState = function(productId, isInComparison) { 32553 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 32554 buttons.forEach(function(button) { 32555 const buttonContainer = button.closest('.compare-button-container'); 32556 const compareText = button.querySelector('.compare-text'); 32557 32558 if (isInComparison) { 32559 button.setAttribute('data-in-comparison', 'true'); 32560 button.classList.add('in-comparison'); 32561 buttonContainer.classList.add('in-comparison'); 32562 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 32563 compareText.textContent = removeText; 32564 } else { 32565 button.removeAttribute('data-in-comparison'); 32566 button.classList.remove('in-comparison'); 32567 buttonContainer.classList.remove('in-comparison'); 32568 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 32569 compareText.textContent = compareTextTranslation; 32570 } 32571 }); 32572 }; 32573 } 32574 32575 // Initialize compare button states based on localStorage 32576 window.initializeCompareButtonStates = function() {
32577 if (typeof window.RendlCompare !== 'undefined') { 32578 const compareItems = window.RendlCompare.getItems(); 32579 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 32580 const productId = button.getAttribute('data-product-id'); 32581 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 32582 window.updateCompareButtonState(productId, isInComparison); 32583 }); 32584 } 32585 }; 32586 32587 // Compare button UI animation - the actual functionality is handled by compare-system.js 32588 document.addEventListener('DOMContentLoaded', function() { 32589 // Apply translations on page load 32590 if (window.translateCompareButtons) { 32591 window.translateCompareButtons(); 32592 } 32593 32594 // Initialize button states based on comparison data 32595 setTimeout(function() { 32596 if (window.initializeCompareButtonStates) { 32597 window.initializeCompareButtonStates(); 32598 } 32599 }, 100); // Small delay to ensure compare system is loaded 32600 32601 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 32602 // Skip if already has event listener 32603 if (button.hasAttribute('data-compare-initialized')) { 32604 return; 32605 } 32606 button.setAttribute('data-compare-initialized', 'true'); 32607 32608 button.addEventListener('click', function(e) { 32609 var buttonContainer = button.closest('.compare-button-container'); 32610 var compareText = button.querySelector('.compare-text'); 32611 var isInComparison = button.hasAttribute('data-in-comparison'); 32612 var productId = button.getAttribute('data-product-id'); 32613 32614 // Prevent multiple clicks during loading 32615 if (button.classList.contains('loading')) { 32616 return; 32617 } 32618 32619 // Make button always visible during the process 32620 buttonContainer.classList.add('active'); 32621 32622 // Add loading class to show spinner 32623 button.classList.add('loading'); 32624 32625 // UI feedback timing 32626 setTimeout(function() { 32627 // Remove loading class and show success message 32628 button.classList.remove('loading'); 32629 button.classList.add('success'); 32630 32631 if (isInComparison) { 32632 // Removing from comparison 32633 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 32634 32635 // Update button state after removal 32636 setTimeout(function() { 32637 button.classList.remove('success'); 32638 window.updateCompareButtonState(productId, false); 32639 buttonContainer.classList.remove('active'); 32640 }, 1500); 32641 } else { 32642 // Adding to comparison 32643 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 32644 32645 // Update button state after addition 32646 setTimeout(function() { 32647 button.classList.remove('success'); 32648 window.updateCompareButtonState(productId, true); 32649 buttonContainer.classList.remove('active'); 32650 }, 1500); 32651 } 32652 }, 1200); 32653 }); 32654 }); 32655 32656 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 32657 setTimeout(function() { 32658 if (window.translateTooltips) { 32659 window.translateTooltips(); 32660 } 32661 }, 100); 32662 }); 32663 32664 // Ensure compare button states are initialized after RendlCompare is available 32665 document.addEventListener('DOMContentLoaded', function() { 32666 function tryInitCompareButtons() { 32667 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 32668 window.initializeCompareButtonStates(); 32669 } else { 32670 setTimeout(tryInitCompareButtons, 100); 32671 } 32672 } 32673 tryInitCompareButtons(); 32674 }); 32675 32676 // Self-contained wishlist functionality for card-product 32677 (function() { 32678 // Wishlist translations 32679 var wishlistTranslations = { 32680 'en': { 32681 addToWishlist: 'Add to My Favorites', 32682 createCategory: 'Create new category:', 32683 categoryPlaceholder: 'Category name', 32684 createAndAdd: 'Create & Add Item', 32685 alreadyAdded: '(Already added)', 32686 addedToWishlist: 'added to My Favorites', 32687 removedFromWishlist: 'removed from My Favorites', 32688 allFavorites: 'All Favorites' 32689 }, 32690 'cs': { 32691 addToWishlist: 'PÅidat do oblÃbených', 32692 createCategory: 'VytvoÅit novou skupinu:', 32693 categoryPlaceholder: 'Název nové skupiny', 32694 createAndAdd: 'VytvoÅit a pÅidat skupinu', 32695 alreadyAdded: '(Již pÅidáno)', 32696 addedToWishlist: 'pÅidáno do oblÃbených', 32697 removedFromWishlist: 'odebráno z oblÃbených', 32698 allFavorites: 'VÅ¡echny oblÃbené' 32699 }, 32700 'sk': { 32701 addToWishlist: 'PridaÅ¥ do obľúbených', 32702 createCategory: 'VytvoriÅ¥ novú kategóriu:', 32703 categoryPlaceholder: 'Názov kategórie', 32704 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 32705 alreadyAdded: '(Už pridané)', 32706 addedToWishlist: 'pridané do obľúbených', 32707 removedFromWishlist: 'odstránené z obľúbených', 32708 allFavorites: 'VÅ¡etky obľúbené' 32709 }, 32710 'de': { 32711 addToWishlist: 'Zu meinen Favoriten hinzufügen', 32712 createCategory: 'Neue Kategorie erstellen:', 32713 categoryPlaceholder: 'Kategoriename', 32714 createAndAdd: 'Erstellen & hinzufügen', 32715 alreadyAdded: '(Bereits hinzugefügt)', 32716 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 32717 removedFromWishlist: 'aus meinen Favoriten entfernt', 32718 allFavorites: 'Alle Favoriten' 32719 }, 32720 'fr': { 32721 addToWishlist: 'Ajouter à mes favoris', 32722 createCategory: 'Créer une nouvelle catégorie :', 32723 categoryPlaceholder: 'Nom de la catégorie', 32724 createAndAdd: 'Créer et ajouter', 32725 alreadyAdded: '(Déjà ajouté)', 32726 addedToWishlist: 'ajouté à mes favoris', 32727 removedFromWishlist: 'retiré de mes favoris', 32728 allFavorites: 'Tous les favoris' 32729 }, 32730 'it': { 32731 addToWishlist: 'Aggiungi ai preferiti', 32732 createCategory: 'Crea nuova categoria:', 32733 categoryPlaceholder: 'Nome categoria', 32734 createAndAdd: 'Crea e aggiungi', 32735 alreadyAdded: '(Già aggiunto)', 32736 addedToWishlist: 'aggiunto ai preferiti', 32737 removedFromWishlist: 'rimosso dai preferiti', 32738 allFavorites: 'Tutti i preferiti' 32739 }, 32740 'es': { 32741 addToWishlist: 'Añadir a mis favoritos', 32742 createCategory: 'Crear nueva categorÃa:', 32743 categoryPlaceholder: 'Nombre de la categorÃa', 32744 createAndAdd: 'Crear y añadir', 32745 alreadyAdded: '(Ya añadido)', 32746 addedToWishlist: 'añadido a mis favoritos', 32747 removedFromWishlist: 'eliminado de mis favoritos', 32748 allFavorites: 'Todos los favoritos' 32749 }, 32750 'nl': { 32751 addToWishlist: 'Toevoegen aan mijn favorieten', 32752 createCategory: 'Nieuwe categorie aanmaken:', 32753 categoryPlaceholder: 'Categorienaam', 32754 createAndAdd: 'Aanmaken & toevoegen', 32755 alreadyAdded: '(Al toegevoegd)', 32756 addedToWishlist: 'toegevoegd aan mijn favorieten', 32757 removedFromWishlist: 'verwijderd uit mijn favorieten', 32758 allFavorites: 'Alle favorieten' 32759 }, 32760 'pl': { 32761 addToWishlist: 'Dodaj do ulubionych', 32762 createCategory: 'Utwórz nowÄ kategoriÄ:', 32763 categoryPlaceholder: 'Nazwa kategorii', 32764 createAndAdd: 'Utwórz i dodaj', 32765 alreadyAdded: '(Już dodane)', 32766 addedToWishlist: 'dodano do ulubionych', 32767 removedFromWishlist: 'usuniÄto z ulubionych', 32768 allFavorites: 'Wszystkie ulubione' 32769 }, 32770 'hu': { 32771 addToWishlist: 'Hozzáadás a kedvencekhez', 32772 createCategory: 'Ãj kategória létrehozása:', 32773 categoryPlaceholder: 'Kategória neve', 32774 createAndAdd: 'Létrehozás és hozzáadás', 32775 alreadyAdded: '(Már hozzáadva)', 32776 addedToWishlist: 'hozzáadva a kedvencekhez', 32777 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 32778 allFavorites: 'Minden kedvenc' 32779 }, 32780 'ro': { 32781 addToWishlist: 'AdaugÄ la favorite', 32782 createCategory: 'CreeazÄ o nouÄ categorie:', 32783 categoryPlaceholder: 'Nume categorie', 32784 createAndAdd: 'CreeazÄ Èi adaugÄ', 32785 alreadyAdded: '(Deja adÄugat)', 32786 addedToWishlist: 'adÄugat la favorite', 32787 removedFromWishlist: 'eliminat din favorite', 32788 allFavorites: 'Toate preferinÈele' 32789 }, 32790 'bg': { 32791 addToWishlist: 'Ðобави в лÑбими', 32792 createCategory: 'СÑздай нова каÑегоÑиÑ:', 32793 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 32794 createAndAdd: 'СÑздай и добави', 32795 alreadyAdded: '(ÐеÑе добавено)', 32796 addedToWishlist: 'добавено в лÑбими', 32797 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 32798 allFavorites: 'ÐÑиÑки лÑбими' 32799 }, 32800 'hr': { 32801 addToWishlist: 'Dodaj u favorite', 32802 createCategory: 'Kreiraj novu kategoriju:', 32803 categoryPlaceholder: 'Naziv kategorije', 32804 createAndAdd: 'Kreiraj i dodaj', 32805 alreadyAdded: '(VeÄ dodano)', 32806 addedToWishlist: 'dodano u favorite', 32807 removedFromWishlist: 'uklonjeno iz favorita', 32808 allFavorites: 'Sva omiljena' 32809 }, 32810 'fi': { 32811 addToWishlist: 'Lisää suosikkeihin', 32812 createCategory: 'Luo uusi kategoria:', 32813 categoryPlaceholder: 'Kategorian nimi', 32814 createAndAdd: 'Luo ja lisää', 32815 alreadyAdded: '(Jo lisätty)', 32816 addedToWishlist: 'lisätty suosikkeihin', 32817 removedFromWishlist: 'poistettu suosikeista',
32818 allFavorites: 'Kaikki suosikit' 32819 }, 32820 'gr': { 32821 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 32822 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 32823 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 32824 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 32825 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 32826 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 32827 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 32828 allFavorites: 'Îλα Ïα αγαÏημÎνα' 32829 }, 32830 'no': { 32831 addToWishlist: 'Legg til i favoritter', 32832 createCategory: 'Opprett ny kategori:', 32833 categoryPlaceholder: 'Kategorinavn', 32834 createAndAdd: 'Opprett og legg til', 32835 alreadyAdded: '(Allerede lagt til)', 32836 addedToWishlist: 'lagt til i favoritter', 32837 removedFromWishlist: 'fjernet fra favoritter', 32838 allFavorites: 'Alle favoritter' 32839 }, 32840 'pt-PT': { 32841 addToWishlist: 'Adicionar aos favoritos', 32842 createCategory: 'Criar nova categoria:', 32843 categoryPlaceholder: 'Nome da categoria', 32844 createAndAdd: 'Criar e adicionar', 32845 alreadyAdded: '(Já adicionado)', 32846 addedToWishlist: 'adicionado aos favoritos', 32847 removedFromWishlist: 'removido dos favoritos', 32848 allFavorites: 'Todos os favoritos' 32849 }, 32850 'sl': { 32851 addToWishlist: 'Dodaj med priljubljene', 32852 createCategory: 'Ustvari novo kategorijo:', 32853 categoryPlaceholder: 'Ime kategorije', 32854 createAndAdd: 'Ustvari in dodaj', 32855 alreadyAdded: '(Že dodano)', 32856 addedToWishlist: 'dodano med priljubljene', 32857 removedFromWishlist: 'odstranjeno iz priljubljenih', 32858 allFavorites: 'Vsi priljubljeni' 32859 }, 32860 'sv': { 32861 addToWishlist: 'Lägg till i favoriter', 32862 createCategory: 'Skapa ny kategori:', 32863 categoryPlaceholder: 'Kategorinamn', 32864 createAndAdd: 'Skapa och lägg till', 32865 alreadyAdded: '(Redan tillagd)', 32866 addedToWishlist: 'tillagd i favoriter', 32867 removedFromWishlist: 'borttagen frÃ¥n favoriter', 32868 allFavorites: 'Alla favoriter' 32869 }, 32870 'lv': { 32871 addToWishlist: 'Pievienot favorÄ«tiem', 32872 createCategory: 'Izveidot jaunu kategoriju:', 32873 categoryPlaceholder: 'Kategorijas nosaukums', 32874 createAndAdd: 'Izveidot un pievienot', 32875 alreadyAdded: '(Jau pievienots)', 32876 addedToWishlist: 'pievienots favorÄ«tiem', 32877 removedFromWishlist: 'noÅemts no favorÄ«tiem', 32878 allFavorites: 'Visas favorÄ«tus' 32879 }, 32880 'lt': { 32881 addToWishlist: 'PridÄti į mÄgstamiausius', 32882 createCategory: 'Sukurti naujÄ kategorijÄ :', 32883 categoryPlaceholder: 'Kategorijos pavadinimas', 32884 createAndAdd: 'Sukurti ir pridÄti', 32885 alreadyAdded: '(Jau pridÄta)', 32886 addedToWishlist: 'pridÄta į mÄgstamiausius', 32887 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 32888 allFavorites: 'Visos mÄgstamiausios' 32889 }, 32890 'ee': { 32891 addToWishlist: 'Lisa lemmikutesse', 32892 createCategory: 'Loo uus kategooria:', 32893 categoryPlaceholder: 'Kategooria nimi', 32894 createAndAdd: 'Loo ja lisa', 32895 alreadyAdded: '(Juba lisatud)', 32896 addedToWishlist: 'lisatud lemmikutesse', 32897 removedFromWishlist: 'eemaldatud lemmikutest', 32898 allFavorites: 'Kõik lemmikud' 32899 }, 32900 'dk': { 32901 addToWishlist: 'Tilføj til favoritter', 32902 createCategory: 'Opret ny kategori:', 32903 categoryPlaceholder: 'Kategorinavn', 32904 createAndAdd: 'Opret og tilføj', 32905 alreadyAdded: '(Allerede tilføjet)', 32906 addedToWishlist: 'tilføjet til favoritter', 32907 removedFromWishlist: 'fjernet fra favoritter', 32908 allFavorites: 'Alle favoritter' 32909 } 32910 }; 32911 32912 function getWishlistLang() { 32913 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 32914 // Normalize for region codes (e.g., pt-PT, sl) 32915 if (lang.startsWith('pt-PT')) return 'pt-PT'; 32916 if (lang.startsWith('sl')) return 'sl'; 32917 if (lang.startsWith('cs')) return 'cs'; 32918 if (lang.startsWith('sk')) return 'sk'; 32919 if (lang.startsWith('de')) return 'de'; 32920 if (lang.startsWith('fr')) return 'fr'; 32921 if (lang.startsWith('it')) return 'it'; 32922 if (lang.startsWith('es')) return 'es'; 32923 if (lang.startsWith('nl')) return 'nl'; 32924 if (lang.startsWith('pl')) return 'pl'; 32925 if (lang.startsWith('hu')) return 'hu'; 32926 if (lang.startsWith('ro')) return 'ro'; 32927 if (lang.startsWith('bg')) return 'bg'; 32928 if (lang.startsWith('hr')) return 'hr'; 32929 if (lang.startsWith('fi')) return 'fi'; 32930 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 32931 if (lang.startsWith('no')) return 'no'; 32932 if (lang.startsWith('sv')) return 'sv'; 32933 if (lang.startsWith('lv')) return 'lv'; 32934 if (lang.startsWith('lt')) return 'lt'; 32935 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 32936 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 32937 return 'en'; 32938 } 32939 32940 // Get or initialize the wishlist array in localStorage 32941 function getWishlist() { 32942 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 32943 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 32944 categories: [ 32945 { 32946 id: 'all-favorites', 32947 name: 'All Favorites', 32948 items: [] 32949 } 32950 ], 32951 version: 2 32952 }; 32953 32954 // Handle migration from old format (array of items) to new format (categories) 32955 if (Array.isArray(wishlist)) { 32956 return { 32957 categories: [ 32958 { 32959 id: 'all-favorites', 32960 name: 'All Favorites', 32961 items: wishlist 32962 } 32963 ], 32964 version: 2 32965 }; 32966 } 32967 32968 return wishlist; 32969 } 32970 32971 // Save wishlist to localStorage 32972 function saveWishlist(wishlist) { 32973 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 32974 // Dispatch an event so other parts of the site can react to wishlist changes 32975 document.dispatchEvent(new CustomEvent('wishlist:updated', { 32976 detail: { wishlist: wishlist } 32977 })); 32978 32979 // Count total items across all categories 32980 const totalItems = wishlist.categories.reduce((total, category) => { 32981 return total + category.items.length; 32982 }, 0); 32983 32984 // Update all wishlist counters 32985 updateWishlistCounters(totalItems); 32986 } 32987 32988 // Update all wishlist counters on the page 32989 function updateWishlistCounters(count) { 32990 const counters = document.querySelectorAll('.wishlist-count');
32991 counters.forEach(counter => { 32992 counter.textContent = count; 32993 32994 // If the counter is hidden and count > 0, show it 32995 if (count > 0 && counter.hasAttribute('hidden')) { 32996 counter.removeAttribute('hidden'); 32997 } 32998 // If the counter is visible and count = 0, hide it 32999 else if (count === 0 && !counter.hasAttribute('hidden')) { 33000 counter.setAttribute('hidden', 'true'); 33001 } 33002 }); 33003 } 33004 33005 // Check if a product is in the wishlist (in any category) 33006 function isInWishlist(productId) { 33007 const wishlist = getWishlist(); 33008 return wishlist.categories.some(category => 33009 category.items.some(item => item.id === productId) 33010 ); 33011 } 33012 33013 // Get all categories 33014 function getCategories() { 33015 return getWishlist().categories; 33016 } 33017 33018 // Create a new category 33019 function createCategory(name) { 33020 const wishlist = getWishlist(); 33021 const categoryId = 'category-' + Date.now(); 33022 33023 wishlist.categories.push({ 33024 id: categoryId, 33025 name: name, 33026 items: [] 33027 }); 33028 33029 saveWishlist(wishlist); 33030 return categoryId; 33031 } 33032 33033 // Add a product to a specific category 33034 function addToCategory(product, categoryId) { 33035 const wishlist = getWishlist(); 33036 const category = wishlist.categories.find(cat => cat.id === categoryId); 33037 33038 if (!category) return false; 33039 33040 // Check if product already exists in ANY category (not just this one) 33041 if (isInWishlist(product.id)) { 33042 return false; // Product already in wishlist 33043 } 33044 33045 // Add product to category 33046 category.items.push(product); 33047 saveWishlist(wishlist); 33048 33049 // Dispatch event for global sync 33050 document.dispatchEvent(new CustomEvent('wishlist:updated', { 33051 detail: { productId: product.id, added: true } 33052 })); 33053 33054 return true; 33055 } 33056 33057 // Add a product to the default "All Favorites" category 33058 function addToWishlist(product) { 33059 return addToCategory(product, 'all-favorites'); 33060 } 33061 33062 // Remove a product from all categories 33063 function removeFromWishlist(productId) { 33064 const wishlist = getWishlist(); 33065 let removed = false; 33066 33067 wishlist.categories.forEach(category => { 33068 const initialLength = category.items.length; 33069 category.items = category.items.filter(item => item.id !== productId); 33070 if (category.items.length !== initialLength) { 33071 removed = true; 33072 } 33073 }); 33074 33075 if (removed) { 33076 saveWishlist(wishlist); 33077 } 33078 33079 return removed; 33080 } 33081 33082 // Toggle a product in the wishlist 33083 function toggleWishlistItem(product) { 33084 if (isInWishlist(product.id)) { 33085 // If already in wishlist, remove it 33086 const wasRemoved = removeFromWishlist(product.id); 33087 33088 // Update heart icon if the product was successfully removed 33089 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 33090 if (heartIcon && wasRemoved) { 33091 heartIcon.setAttribute('fill', 'none'); 33092 showWishlistToast(false, product.title); 33093 33094 // Dispatch event for global sync 33095 document.dispatchEvent(new CustomEvent('wishlist:updated', { 33096 detail: { productId: product.id, added: false } 33097 })); 33098 } 33099 return wasRemoved; 33100 } else { 33101 // If not in wishlist, show category selection popup 33102 showCategorySelectionPopup(product); 33103 return false; // Don't return true unless we actually add the product 33104 } 33105 } 33106 33107 // Show wishlist category selection popup 33108 function showCategorySelectionPopup(product) { 33109 // Remove any existing popup 33110 const existingPopup = document.getElementById('wishlist-category-popup'); 33111 if (existingPopup) { 33112 existingPopup.remove(); 33113 } 33114 33115 const lang = getWishlistLang(); 33116 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 33117 33118 // Create popup container 33119 const popup = document.createElement('div'); 33120 popup.id = 'wishlist-category-popup'; 33121 popup.className = 'wishlist-category-popup'; 33122 33123 // Create popup content 33124 const content = document.createElement('div'); 33125 content.className = 'wishlist-category-popup-content'; 33126 33127 // Create header 33128 const title = document.createElement('h2'); 33129 title.textContent = translations.addToWishlist; // Translate 33130 33131 const closeButton = document.createElement('button'); 33132 closeButton.className = 'wishlist-category-popup-close'; 33133 closeButton.setAttribute('aria-label', 'Close'); 33134 closeButton.addEventListener('click', () => { 33135 popup.remove(); 33136 }); 33137 33138 // Create category list 33139 const categoryList = document.createElement('div'); 33140 categoryList.className = 'wishlist-category-list'; 33141 33142 // Get categories 33143 const categories = getCategories(); 33144 33145 // Add category options
33146 categories.forEach(category => { 33147 const categoryOption = document.createElement('div'); 33148 categoryOption.className = 'wishlist-category-option'; 33149 33150 // Use translation for default category name 33151 categoryOption.textContent = category.id === 'all-favorites' 33152 ? (translations.allFavorites || category.name) 33153 : category.name; 33154 33155 // Highlight if product already in this category 33156 if (category.items.some(item => item.id === product.id)) { 33157 categoryOption.style.backgroundColor = '#f0f0f0'; 33158 categoryOption.style.color = '#999'; 33159 categoryOption.style.fontStyle = 'italic'; 33160 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 33161 categoryOption.style.cursor = 'default'; 33162 } else { 33163 categoryOption.addEventListener('click', () => { 33164 const wasAdded = addToCategory(product, category.id); 33165 33166 if (wasAdded) { 33167 // Update heart icon after successful addition 33168 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 33169 if (heartIcon) { 33170 heartIcon.setAttribute('fill', '#333333'); 33171 } 33172 33173 showWishlistToast(true, product.title); 33174 popup.remove(); 33175 } 33176 }); 33177 } 33178 33179 categoryList.appendChild(categoryOption); 33180 }); 33181 33182 // Create "add new category" section 33183 const newCategorySection = document.createElement('div'); 33184 newCategorySection.style.borderTop = '1px solid #eee'; 33185 newCategorySection.style.paddingTop = '15px'; 33186 newCategorySection.style.marginTop = '10px'; 33187 33188 const newCategoryLabel = document.createElement('label'); 33189 newCategoryLabel.textContent = translations.createCategory; // Translate 33190 33191 const newCategoryInput = document.createElement('input'); 33192 newCategoryInput.type = 'text'; 33193 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 33194 33195 const createButton = document.createElement('button'); 33196 createButton.className = 'create-category-button'; 33197 createButton.textContent = translations.createAndAdd; // Translate 33198 33199 createButton.addEventListener('click', () => { 33200 const categoryName = newCategoryInput.value.trim(); 33201 if (categoryName) { 33202 const categoryId = createCategory(categoryName); 33203 const wasAdded = addToCategory(product, categoryId); 33204 33205 if (wasAdded) { 33206 // Update heart icon after successful addition 33207 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 33208 if (heartIcon) { 33209 heartIcon.setAttribute('fill', '#333333'); 33210 } 33211 33212 showWishlistToast(true, product.title); 33213 popup.remove(); 33214 } 33215 } 33216 }); 33217 33218 newCategorySection.appendChild(newCategoryLabel); 33219 newCategorySection.appendChild(newCategoryInput); 33220 newCategorySection.appendChild(createButton); 33221 33222 // Assemble popup 33223 content.appendChild(title); 33224 content.appendChild(closeButton); 33225 content.appendChild(categoryList); 33226 content.appendChild(newCategorySection); 33227 popup.appendChild(content); 33228 33229 // Add to document 33230 document.body.appendChild(popup); 33231 33232 // Focus the input 33233 setTimeout(() => { 33234 newCategoryInput.focus(); 33235 }, 100); 33236 33237 // Close when clicking outside content 33238 popup.addEventListener('click', (e) => { 33239 if (e.target === popup) { 33240 popup.remove(); 33241 } 33242 }); 33243 } 33244 33245 // Show a toast notification 33246 function showWishlistToast(added, productTitle) { 33247 // Create or get toast container 33248 let toastContainer = document.getElementById('wishlist-toast'); 33249 if (!toastContainer) { 33250 toastContainer = document.createElement('div'); 33251 toastContainer.id = 'wishlist-toast'; 33252 toastContainer.style.position = 'fixed'; 33253 toastContainer.style.bottom = '20px'; 33254 toastContainer.style.right = '20px'; 33255 toastContainer.style.zIndex = '9999'; 33256 document.body.appendChild(toastContainer); 33257 } 33258 33259 // Create toast 33260 const toast = document.createElement('div'); 33261 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 33262 toast.style.color = 'white'; 33263 toast.style.padding = '12px 20px'; 33264 toast.style.borderRadius = '0'; 33265 toast.style.marginTop = '10px'; 33266 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 33267 toast.style.transition = 'all 0.3s ease'; 33268 toast.style.opacity = '0'; 33269 toast.style.fontFamily = 'Montserrat, sans-serif'; 33270 33271 // Choose text based on action 33272 const lang = getWishlistLang(); 33273 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 33274 toast.textContent = added 33275 ? `${productTitle} ${translations.addedToWishlist}` // Translate 33276 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 33277 33278 // Add to container 33279 toastContainer.appendChild(toast); 33280 33281 // Animate in 33282 setTimeout(() => { 33283 toast.style.opacity = '1'; 33284 }, 10); 33285 33286 // Animate out and remove 33287 setTimeout(() => { 33288 toast.style.opacity = '0'; 33289 setTimeout(() => { 33290 toastContainer.removeChild(toast); 33291 }, 300); 33292 }, 3000); 33293 } 33294 33295 // Initialize wishlist buttons 33296 function initCardWishlistButtons() { 33297 const wishlistButtons = document.querySelectorAll('.card-wis
33297hlist-button'); 33298 33299 wishlistButtons.forEach(button => { 33300 // Skip if already initialized 33301 if (button.dataset.initializedWishlist === 'true') return; 33302 button.dataset.initializedWishlist = 'true'; 33303 33304 const productId = button.getAttribute('data-wishlist-product'); 33305 if (!productId) return; 33306 33307 // Get product details from the card 33308 const card = button.closest('.card-wrapper'); 33309 const productDetails = { 33310 id: productId, 33311 title: card.querySelector('.card__heading')?.textContent.trim() || '', 33312 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 33313 price: card.querySelector('.price')?.textContent.trim() || '', 33314 image: card.querySelector('img')?.src || '', 33315 url: card.querySelector('a[href*="/products/"]')?.href || '' 33316 }; 33317 33318 // Set initial state using global function 33319 const heartIcon = button.querySelector('path'); 33320 if (heartIcon) { 33321 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 33322 heartIcon.setAttribute('fill', '#333333'); 33323 } else { 33324 heartIcon.setAttribute('fill', 'none'); 33325 } 33326 } 33327 33328 // Add click handler 33329 button.addEventListener('click', function(e) { 33330 e.preventDefault(); 33331 e.stopPropagation(); 33332 e.stopImmediatePropagation(); 33333 toggleWishlistItem(productDetails); 33334 }); 33335 33336 // Prevent navigation on mousedown/touchstart 33337 button.addEventListener('mousedown', function(e) { 33338 e.preventDefault(); 33339 e.stopPropagation(); 33340 }); 33341 33342 button.addEventListener('touchstart', function(e) { 33343 e.preventDefault(); 33344 e.stopPropagation(); 33345 }); 33346 }); 33347 } 33348 33349 // Initialize the wishlist counter on page load 33350 const wishlist = getWishlist(); 33351 const totalItems = wishlist.categories.reduce((total, category) => { 33352 return total + category.items.length; 33353 }, 0); 33354 updateWishlistCounters(totalItems); 33355 33356 // Initialize on DOM ready 33357 if (document.readyState === 'loading') { 33358 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 33359 } else { 33360 initCardWishlistButtons(); 33361 } 33362 33363 // Reinitialize on Shopify section load 33364 document.addEventListener('shopify:section:load', function() { 33365 setTimeout(initCardWishlistButtons, 100); 33366 }); 33367 33368 // Listen for wishlist updates from other parts of the site 33369 document.addEventListener('wishlist:updated', function() { 33370 setTimeout(initCardWishlistButtons, 100); 33371 }); 33372 })(); 33373</script>
33373 33374 33375<!-- Price info icon styles --> 33376<style> 33377 /* Price container with icon */ 33378 .price-container-with-info { 33379 position: relative; 33380 display: flex; 33381 align-items: center; 33382 gap: 8px; 33383 } 33384 33385 /* Info icon - hidden by default, shown on card hover */ 33386 .price-info-icon { 33387 position: relative; 33388 display: inline-flex; 33389 align-items: center; 33390 justify-content: center; 33391 color: #666; 33392 cursor: help; 33393 opacity: 0; 33394 transition: opacity 0.3s ease; 33395 33396 padding: 4px; /* Add padding to increase clickable area */ 33397 min-width: 20px; /* Ensure minimum clickable area */ 33398 min-height: 20px; 33399 z-index: 15; /* Above everything else including compare button */ 33400 pointer-events: auto; /* Allow interaction */ 33401 } 33402 33403 /* Show icon on card hover */ 33404 .card-wrapper:hover .price-info-icon { 33405 opacity: 1; 33406 } 33407 33408 .price-info-icon svg { 33409 width: 14px; 33410 height: 14px; 33411 stroke-width: 1.5; 33412 } 33413 33414 /* Tooltip styles */ 33415 .price-info-tooltip { 33416 position: absolute; 33417 bottom: calc(100% + 6px); 33418 top: auto; 33419 left: 0; 33420 transform: none; 33421 min-width: 310px; 33422 background: #FFFFFF; 33423 color: #232323; 33424 border: 1px solid #EEEEEE; 33425 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 33426 padding: 12px 16px; 33427 font-size: 13px; 33428 font-family: 'Montserrat', sans-serif; 33429 z-index: 10000; 33430 opacity: 0; 33431 transition: opacity 0.18s; 33432 white-space: pre-line; 33433 text-align: left; 33434 border-radius: 0; 33435 visibility: hidden; 33436 pointer-events: none; 33437 } 33438 33439 /* Show tooltip on icon hover */ 33440 .price-info-icon:hover .price-info-tooltip { 33441 visibility: visible; 33442 opacity: 1; 33443 } 33444 33445 /* Ensure tooltip is never clipped */ 33446 .price-container-with-info, 33447 .card-information, 33448 .card__content { 33449 overflow: visible !important; 33450 } 33451 33452 /* Mobile adjustments */ 33453 @media screen and (max-width: 768px) { 33454 .price-info-tooltip { 33455 min-width: 200px; 33456 font-size: 12px; 33457 padding: 10px 12px; 33458 } 33459 } 33460</style> 33461 33462 </li> 33463 <li 33464 class="grid__item" 33465 33466 > 33467 33468<div class="card-wrapper product-card-wrapper underline-links-hover"> 33469 33470 <div 33471 class=" 33472 card card--standard 33473 card--media 33474 33475 33476 33477 33478 33479 " 33480 style="--ratio-percent: 100.0%;" 33481 data-product-id="9746991612202" 33482 data-description="Elegante bolardo LED con iluminación descendente para uso en exteriores, adecuado para iluminar pasarelas y caminos." 33483 data-status-in-sortiment="NEW" 33484 data-ip-rate="IP65" 33485 33486 data-variant-id="52388167581994" 33487 data-price="178.00 EUR" 33488 data-compare-at-price="" 33489 data-available="true" 33490 data-barcode="8595685429410" 33491 data-ip-rate="IP65" 33492 data-lumens="580" 33493 data-power-source="" 33494 data-watt="7.0" 33495 data-kelvin="3000" 33496 data-light-color="" 33497 data-diameter="" 33498 data-weight-netto="1915.0" 33499 data-weight-unit="g" 33500 data-mounting-hole-size="" 33501 data-recess-depth="" 33502 data-suspension-lenght="" 33503 data-turn-angle="" 33504 data-tilt-angle="" 33505 data-switch="" 33506 data-socket="" 33507 data-light-source-recomended="" 33508 data-height="65" 33509 data-length="" 33510 data-Length="" 33511 > 33512 <div 33513 class="card__inner color-scheme-2 gradient ratio" 33514 style="--ratio-percent: 100.0%;" 33515 > 33516 33517<div class="product-status-badge status-NEW"> 33518 <span>NEW</span> 33519 </div> 33520<div class="ip-rate-badge"> 33521 <span>IP65</span> 33522 </div><div class="card__media"> 33523 <a class="card__media-link-content" href="/products/bonn-65-floor-lamp" aria-label="BONN"> 33524 <div class="media media--transparent media--hover-effect"> 33525 33526 <img 33527 class="product-image motion-reduce" 33528 srcset="//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=165 165w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=360 360w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=533 533w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=720 720w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=940 940w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=1066 1066w,//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104 4899w 33529 " 33530 src="//rendl.es/cdn/shop/files/r14197-1.jpg?v=1745944104&width=533" 33531 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 33532 alt="RENDL outdoor lamp BONN 65 floor black grey 230V LED 7W 120° IP65 3000K R14197 1" 33533 33534 loading="lazy" 33535 33536 width="4899" 33537 height="4899" 33538 > 33539 33540<img 33541 class="product-image motion-reduce" 33542 srcset="//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=165 165w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=360 360w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=533 533w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=720 720w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=940 940w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=1066 1066w,//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638 3162w 33543 " 33544 src="//rendl.es/cdn/shop/files/r14197-2.jpg?v=1775200638&width=533" 33545 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 33546 alt="" 33547 loading="lazy" 33548 width="3162" 33549 height="3162" 33550 ></div> 33551 </a> 33552 33553<div class="card-media-icons"><div class="energy-label-icon"> 33554 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 33555 <div class="energy-label-tooltip">Clase energética G 33556</div> 33557 </div></div><div class="card-variant-swatches"><a 33558 class="card-variant-swatch" 33559 href="/products/bonn-65-floor-lamp?variant=52388167581994" 33560 33561 style="background-image: url('//rendl.es/cdn/shop/files/52_black-grey.jpg?v=1739538319&width=64');" 33562 33563 aria-label="gris negruzco" 33564 >
33565 <span class="card-variant-swatch-tooltip">gris negruzco</span></a></div></div><div class="card__content"> 33566 <div class="card__information"> 33567 <h3 33568 class="card__heading" 33569 33570 > 33571 <a 33572 href="/products/bonn-65-floor-lamp" 33573 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991612202" 33574 class="full-unstyled-link" 33575 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991612202 NoMediaStandardBadge-template--28113427169578__product-grid-9746991612202" 33576 > 33577 BONN 33578 </a> 33579 </h3> 33580 </div> 33581 <div class="card__badge bottom left"></div> 33582 </div> 33583 </div> 33584 <div class="card__content"> 33585 <div class="card__information"> 33586 <h3 33587 class="card__heading h5" 33588 33589 id="title-template--28113427169578__product-grid-9746991612202" 33590 33591 > 33592 <a 33593 href="/products/bonn-65-floor-lamp" 33594 id="CardLink-template--28113427169578__product-grid-9746991612202" 33595 class="full-unstyled-link" 33596 aria-labelledby="CardLink-template--28113427169578__product-grid-9746991612202 Badge-template--28113427169578__product-grid-9746991612202" 33597 > 33598 BONN 33599 </a> 33600 </h3><div class="card__description"> 33601 Elegante bolardo LED con iluminación descendente para uso en exteriores, adecuado para iluminar pasarelas y caminos. 33602 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 33603 33604<div 33605 class=" 33606 price " 33607 > 33608 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 33609 <span class="price-item price-item--regular"> 33610 178.00 EUR 33611 </span></div> 33612 <div class="price__sale"> 33613 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 33614 <span> 33615 <s class="price-item price-item--regular"> 33616 33617 33618 33619 </s> 33620 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 33621 <span class="price-item price-item--sale price-item--last"> 33622 178.00 EUR 33623 </span> 33624 </div> 33625 <small class="unit-price caption hidden"> 33626 <span class="visually-hidden">Precio unitario</span> 33627 <span class="price-item price-item--last"> 33628 <span></span> 33629 <span aria-hidden="true">/</span> 33630 <span class="visually-hidden"> por </span> 33631 <span> 33632 </span> 33633 </span> 33634 </small> 33635 </div></div> 33636 33637 33638</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 33639 <button class="compare-button-simple" 33640 data-product-id="9746991612202" 33641 data-product-title="BONN" 33642 data-product-handle="bonn-65-floor-lamp"> 33643 <span class="compare-button-content"> 33644 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 33645 <span class="compare-text" data-translate="compare">compare</span> 33646 </span> 33647 <span class="compare-spinner-small"> 33648 <!-- Small spinner for button --> 33649 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 33650 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 33651 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 33652 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
33652inite"/> 33653 </path> 33654 </svg> 33655 </span> 33656 </button> 33657 33658 <!-- Wishlist button next to compare button --> 33659 <button type="button" class="card-wishlist-button" data-wishlist-product="9746991612202"> 33660 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 33661 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 33662 </svg> 33663 </button> 33664 </div></div> 33665 </div> 33666 33667 33668 33669 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746991612202" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 33670 type="hidden" 33671 name="id" 33672 value="52388167581994" 33673 class="product-variant-id" 33674 33675 > 33676 <button 33677 id="quick-add-template--28113427169578__product-grid9746991612202-submit" 33678 type="submit" 33679 name="add" 33680 class="quick-add__submit button button--full-width button--secondary" 33681 aria-haspopup="dialog" 33682 aria-labelledby="quick-add-template--28113427169578__product-grid9746991612202-submit title-template--28113427169578__product-grid-9746991612202" 33683 aria-live="polite" 33684 data-sold-out-message="true" 33685 33686 > 33687 <span>Agregar al carrito 33688</span> 33689 <span class="sold-out-message hidden"> 33690 En camino 33691 </span> 33692 33693<div class="loading__spinner hidden"> 33694 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 33695 33696</div> 33697</button><input type="hidden" name="product-id" value="9746991612202" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 33698 33699 <div class="card__badge bottom left"></div> 33700 </div> 33701 </div> 33702 </div>
33702<script> 33703 // Initialize global compare translations only once 33704 if (typeof window.compareButtonTranslations === 'undefined') { 33705 window.compareButtonTranslations = { 33706 compare: { 33707 en: 'compare', 33708 cs: 'porovnat', 33709 sk: 'porovnaÅ¥', 33710 de: 'vergleichen', 33711 at: 'vergleichen', 33712 ch: 'vergleichen', 33713 fr: 'comparer', 33714 be: 'comparer', 33715 lu: 'comparer', 33716 it: 'confronta', 33717 es: 'comparar', 33718 nl: 'vergelijken', 33719 pl: 'porównaj', 33720 hu: 'összehasonlÃt', 33721 ro: 'comparÄ', 33722 bg: 'ÑÑавни', 33723 hr: 'usporedi', 33724 fi: 'vertaile', 33725 gr: 'ÏÏγκÏιÏη', 33726 el: 'ÏÏγκÏιÏη', 33727 no: 'sammenlign', 33728 'pt-PT': 'comparar', 33729 sl: 'primerjaj', 33730 sv: 'jämför', 33731 lv: 'salÄ«dzinÄt', 33732 lt: 'palyginti', 33733 ee: 'võrdle', 33734 dk: 'sammenlign', 33735 gb: 'compare', 33736 uk: 'compare', 33737 ie: 'compare', 33738 us: 'compare', 33739 ca: 'compare', 33740 au: 'compare', 33741 nz: 'compare', 33742 ru: 'ÑÑавниÑÑ' 33743 }, 33744 remove: { 33745 en: 'remove', 33746 cs: 'odebrat', 33747 sk: 'odobraÅ¥', 33748 de: 'entfernen', 33749 at: 'entfernen', 33750 ch: 'entfernen', 33751 fr: 'supprimer', 33752 be: 'supprimer', 33753 lu: 'supprimer', 33754 it: 'rimuovi', 33755 es: 'eliminar', 33756 nl: 'verwijderen', 33757 pl: 'usuÅ', 33758 hu: 'eltávolÃt', 33759 ro: 'eliminÄ', 33760 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 33761 hr: 'ukloni', 33762 fi: 'poista', 33763 gr: 'αÏαίÏεÏη', 33764 el: 'αÏαίÏεÏη', 33765 no: 'fjern', 33766 'pt-PT': 'remover', 33767 sl: 'odstrani', 33768 sv: 'ta bort', 33769 lv: 'noÅemt', 33770 lt: 'paÅ¡alinti', 33771 ee: 'eemalda', 33772 dk: 'fjern', 33773 gb: 'remove', 33774 uk: 'remove', 33775 ie: 'remove', 33776 us: 'remove', 33777 ca: 'remove', 33778 au: 'remove', 33779 nz: 'remove', 33780 ru: 'ÑдалиÑÑ' 33781 }, 33782 added: { 33783 en: 'Added!', 33784 cs: 'PÅidáno!', 33785 sk: 'Pridané!', 33786 de: 'Hinzugefügt!', 33787 at: 'Hinzugefügt!', 33788 ch: 'Hinzugefügt!', 33789 fr: 'Ajouté!', 33790 be: 'Ajouté!', 33791 lu: 'Ajouté!', 33792 it: 'Aggiunto!', 33793 es: '¡Añadido!', 33794 nl: 'Toegevoegd!', 33795 pl: 'Dodano!', 33796 hu: 'Hozzáadva!', 33797 ro: 'AdÄugat!', 33798 bg: 'Ðобавено!', 33799 hr: 'Dodano!', 33800 fi: 'Lisätty!', 33801 gr: 'Î ÏοÏÏÎθηκε!', 33802 el: 'Î ÏοÏÏÎθηκε!', 33803 no: 'Lagt til!', 33804 'pt-PT': 'Adicionado!', 33805 sl: 'Dodano!', 33806 sv: 'Tillagd!', 33807 lv: 'Pievienots!', 33808 lt: 'PridÄta!', 33809 ee: 'Lisatud!', 33810 dk: 'Tilføjet!', 33811 gb: 'Added!', 33812 uk: 'Added!', 33813 ie: 'Added!', 33814 us: 'Added!', 33815 ca: 'Added!', 33816 au: 'Added!', 33817 nz: 'Added!', 33818 ru: 'Ðобавлено!' 33819 }, 33820 removed: { 33821 en: 'Removed!', 33822 cs: 'Odebráno!', 33823 sk: 'Odobrané!', 33824 de: 'Entfernt!', 33825 at: 'Entfernt!', 33826 ch: 'Entfernt!', 33827 fr: 'Supprimé!', 33828 be: 'Supprimé!', 33829 lu: 'Supprimé!', 33830 it: 'Rimosso!', 33831 es: '¡Eliminado!', 33832 nl: 'Verwijderd!', 33833 pl: 'UsuniÄto!', 33834 hu: 'EltávolÃtva!', 33835 ro: 'Eliminat!', 33836 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 33837 hr: 'Uklonjeno!', 33838 fi: 'Poistettu!', 33839 gr: 'ÎÏαιÏÎθηκε!', 33840 el: 'ÎÏαιÏÎθηκε!', 33841 no: 'Fjernet!', 33842 'pt-PT': 'Removido!', 33843 sl: 'Odstranjeno!', 33844 sv: 'Borttaget!', 33845 lv: 'NoÅemts!', 33846 lt: 'PaÅ¡alinta!', 33847 ee: 'Eemaldatud!', 33848 dk: 'Fjernet!', 33849 gb: 'Removed!', 33850 uk: 'Removed!', 33851 ie: 'Removed!', 33852 us: 'Removed!', 33853 ca: 'Removed!', 33854 au: 'Removed!', 33855 nz: 'Removed!', 33856 ru: 'Удалено!' 33857 } 33858 }; 33859 33860 // Tooltip translations for price info 33861 window.tooltipTranslations = { 33862 tooltipPrice: { 33863 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33864 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 33865 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 33866 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 33867 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 33868 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 33869 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 33870 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 33871 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 33872 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 33873 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 33874 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 33875 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 33876 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 33877 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 33878 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 33879 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 33880 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 33881 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 33882 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 33883 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 33884 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 33885 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 33886 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 33887 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
33887iks atskaitÄ«ts, ja piemÄrojams.", 33888 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 33889 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 33890 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 33891 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33892 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33893 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33894 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33895 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33896 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33897 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 33898 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 33899 }, 33900 tooltipOutlet: { 33901 en: "We do not provide additional wholesale discounts on outlet products.", 33902 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 33903 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 33904 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 33905 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 33906 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 33907 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 33908 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 33909 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 33910 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 33911 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 33912 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 33913 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 33914 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 33915 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 33916 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 33917 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 33918 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 33919 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 33920 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 33921 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 33922 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 33923 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 33924 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 33925 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 33926 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 33927 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 33928 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 33929 gb: "We do not provide additional wholesale discounts on outlet products.", 33930 uk: "We do not provide additional wholesale discounts on outlet products.", 33931 ie: "We do not provide additional wholesale discounts on outlet products.", 33932 us: "We do not provide additional wholesale discounts on outlet products.", 33933 ca: "We do not provide additional wholesale discounts on outlet products.", 33934 au: "We do not provide additional wholesale discounts on outlet products.", 33935 nz: "We do not provide additional wholesale discounts on outlet products.", 33936 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 33937 } 33938 }; 33939 33940 // Get current locale from document 33941 window.currentLocale = document.documentElement.lang || 'en'; 33942 33943 // Function to translate compare buttons 33944 window.translateCompareButtons = function() { 33945 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
33946 compareTexts.forEach(function(textEl) { 33947 const button = textEl.closest('.compare-button-simple'); 33948 const isInComparison = button && button.hasAttribute('data-in-comparison'); 33949 33950 if (isInComparison) { 33951 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 33952 textEl.textContent = translation; 33953 } else { 33954 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 33955 textEl.textContent = translation; 33956 } 33957 }); 33958 }; 33959 33960 // Function to format price with space as thousands separator (only for tooltip) 33961 function formatTooltipPrice(price) { 33962 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 33963 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 33964 } 33965 33966 // Function to translate tooltips with price 33967 window.translateTooltips = function() { 33968 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 33969 tooltips.forEach(function(tooltip) { 33970 const icon = tooltip.closest('.price-info-icon'); 33971 if (icon) { 33972 const status = icon.getAttribute('data-status'); 33973 // Check if this is an outlet product 33974 if (status === 'outlet') { 33975 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 33976 tooltip.textContent = translation; 33977 return; // Exit early for outlet products 33978 } 33979 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 33980 // Get wholesale price from the actual price display on the card 33981 const card = icon.closest('[data-product-id]'); 33982 let wholesalePrice = ''; 33983 if (card) { 33984 // Find the main price element on the card 33985 const priceElement = card.querySelector('.price .price-item--regular'); 33986 if (priceElement) { 33987 wholesalePrice = priceElement.textContent.trim(); 33988 } 33989 } 33990 if (retailPrice && wholesalePrice) { 33991 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 33992 let formattedRetailPrice = formatTooltipPrice(retailPrice); 33993 let formattedWholesalePrice = wholesalePrice; 33994 if (window.formatPriceText) { 33995 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 33996 } 33997 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 33998 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 33999 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 34000 tooltip.textContent = translatedText; 34001 } 34002 } 34003 }); 34004 }; 34005 34006 // Function to update button state based on comparison status 34007 window.updateCompareButtonState = function(productId, isInComparison) { 34008 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 34009 buttons.forEach(function(button) { 34010 const buttonContainer = button.closest('.compare-button-container'); 34011 const compareText = button.querySelector('.compare-text'); 34012 34013 if (isInComparison) { 34014 button.setAttribute('data-in-comparison', 'true'); 34015 button.classList.add('in-comparison'); 34016 buttonContainer.classList.add('in-comparison'); 34017 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 34018 compareText.textContent = removeText; 34019 } else { 34020 button.removeAttribute('data-in-comparison'); 34021 button.classList.remove('in-comparison'); 34022 buttonContainer.classList.remove('in-comparison'); 34023 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 34024 compareText.textContent = compareTextTranslation; 34025 } 34026 }); 34027 }; 34028 } 34029 34030 // Initialize compare button states based on localStorage 34031 window.initializeCompareButtonStates = function() {
34032 if (typeof window.RendlCompare !== 'undefined') { 34033 const compareItems = window.RendlCompare.getItems(); 34034 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 34035 const productId = button.getAttribute('data-product-id'); 34036 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 34037 window.updateCompareButtonState(productId, isInComparison); 34038 }); 34039 } 34040 }; 34041 34042 // Compare button UI animation - the actual functionality is handled by compare-system.js 34043 document.addEventListener('DOMContentLoaded', function() { 34044 // Apply translations on page load 34045 if (window.translateCompareButtons) { 34046 window.translateCompareButtons(); 34047 } 34048 34049 // Initialize button states based on comparison data 34050 setTimeout(function() { 34051 if (window.initializeCompareButtonStates) { 34052 window.initializeCompareButtonStates(); 34053 } 34054 }, 100); // Small delay to ensure compare system is loaded 34055 34056 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 34057 // Skip if already has event listener 34058 if (button.hasAttribute('data-compare-initialized')) { 34059 return; 34060 } 34061 button.setAttribute('data-compare-initialized', 'true'); 34062 34063 button.addEventListener('click', function(e) { 34064 var buttonContainer = button.closest('.compare-button-container'); 34065 var compareText = button.querySelector('.compare-text'); 34066 var isInComparison = button.hasAttribute('data-in-comparison'); 34067 var productId = button.getAttribute('data-product-id'); 34068 34069 // Prevent multiple clicks during loading 34070 if (button.classList.contains('loading')) { 34071 return; 34072 } 34073 34074 // Make button always visible during the process 34075 buttonContainer.classList.add('active'); 34076 34077 // Add loading class to show spinner 34078 button.classList.add('loading'); 34079 34080 // UI feedback timing 34081 setTimeout(function() { 34082 // Remove loading class and show success message 34083 button.classList.remove('loading'); 34084 button.classList.add('success'); 34085 34086 if (isInComparison) { 34087 // Removing from comparison 34088 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 34089 34090 // Update button state after removal 34091 setTimeout(function() { 34092 button.classList.remove('success'); 34093 window.updateCompareButtonState(productId, false); 34094 buttonContainer.classList.remove('active'); 34095 }, 1500); 34096 } else { 34097 // Adding to comparison 34098 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 34099 34100 // Update button state after addition 34101 setTimeout(function() { 34102 button.classList.remove('success'); 34103 window.updateCompareButtonState(productId, true); 34104 buttonContainer.classList.remove('active'); 34105 }, 1500); 34106 } 34107 }, 1200); 34108 }); 34109 }); 34110 34111 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 34112 setTimeout(function() { 34113 if (window.translateTooltips) { 34114 window.translateTooltips(); 34115 } 34116 }, 100); 34117 }); 34118 34119 // Ensure compare button states are initialized after RendlCompare is available 34120 document.addEventListener('DOMContentLoaded', function() { 34121 function tryInitCompareButtons() { 34122 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 34123 window.initializeCompareButtonStates(); 34124 } else { 34125 setTimeout(tryInitCompareButtons, 100); 34126 } 34127 } 34128 tryInitCompareButtons(); 34129 }); 34130 34131 // Self-contained wishlist functionality for card-product 34132 (function() { 34133 // Wishlist translations 34134 var wishlistTranslations = { 34135 'en': { 34136 addToWishlist: 'Add to My Favorites', 34137 createCategory: 'Create new category:', 34138 categoryPlaceholder: 'Category name', 34139 createAndAdd: 'Create & Add Item', 34140 alreadyAdded: '(Already added)', 34141 addedToWishlist: 'added to My Favorites', 34142 removedFromWishlist: 'removed from My Favorites', 34143 allFavorites: 'All Favorites' 34144 }, 34145 'cs': { 34146 addToWishlist: 'PÅidat do oblÃbených', 34147 createCategory: 'VytvoÅit novou skupinu:', 34148 categoryPlaceholder: 'Název nové skupiny', 34149 createAndAdd: 'VytvoÅit a pÅidat skupinu', 34150 alreadyAdded: '(Již pÅidáno)', 34151 addedToWishlist: 'pÅidáno do oblÃbených', 34152 removedFromWishlist: 'odebráno z oblÃbených', 34153 allFavorites: 'VÅ¡echny oblÃbené' 34154 }, 34155 'sk': { 34156 addToWishlist: 'PridaÅ¥ do obľúbených', 34157 createCategory: 'VytvoriÅ¥ novú kategóriu:', 34158 categoryPlaceholder: 'Názov kategórie', 34159 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 34160 alreadyAdded: '(Už pridané)', 34161 addedToWishlist: 'pridané do obľúbených', 34162 removedFromWishlist: 'odstránené z obľúbených', 34163 allFavorites: 'VÅ¡etky obľúbené' 34164 }, 34165 'de': { 34166 addToWishlist: 'Zu meinen Favoriten hinzufügen', 34167 createCategory: 'Neue Kategorie erstellen:', 34168 categoryPlaceholder: 'Kategoriename', 34169 createAndAdd: 'Erstellen & hinzufügen', 34170 alreadyAdded: '(Bereits hinzugefügt)', 34171 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 34172 removedFromWishlist: 'aus meinen Favoriten entfernt', 34173 allFavorites: 'Alle Favoriten' 34174 }, 34175 'fr': { 34176 addToWishlist: 'Ajouter à mes favoris', 34177 createCategory: 'Créer une nouvelle catégorie :', 34178 categoryPlaceholder: 'Nom de la catégorie', 34179 createAndAdd: 'Créer et ajouter', 34180 alreadyAdded: '(Déjà ajouté)', 34181 addedToWishlist: 'ajouté à mes favoris', 34182 removedFromWishlist: 'retiré de mes favoris', 34183 allFavorites: 'Tous les favoris' 34184 }, 34185 'it': { 34186 addToWishlist: 'Aggiungi ai preferiti', 34187 createCategory: 'Crea nuova categoria:', 34188 categoryPlaceholder: 'Nome categoria', 34189 createAndAdd: 'Crea e aggiungi', 34190 alreadyAdded: '(Già aggiunto)', 34191 addedToWishlist: 'aggiunto ai preferiti', 34192 removedFromWishlist: 'rimosso dai preferiti', 34193 allFavorites: 'Tutti i preferiti' 34194 }, 34195 'es': { 34196 addToWishlist: 'Añadir a mis favoritos', 34197 createCategory: 'Crear nueva categorÃa:', 34198 categoryPlaceholder: 'Nombre de la categorÃa', 34199 createAndAdd: 'Crear y añadir', 34200 alreadyAdded: '(Ya añadido)', 34201 addedToWishlist: 'añadido a mis favoritos', 34202 removedFromWishlist: 'eliminado de mis favoritos', 34203 allFavorites: 'Todos los favoritos' 34204 }, 34205 'nl': { 34206 addToWishlist: 'Toevoegen aan mijn favorieten', 34207 createCategory: 'Nieuwe categorie aanmaken:', 34208 categoryPlaceholder: 'Categorienaam', 34209 createAndAdd: 'Aanmaken & toevoegen', 34210 alreadyAdded: '(Al toegevoegd)', 34211 addedToWishlist: 'toegevoegd aan mijn favorieten', 34212 removedFromWishlist: 'verwijderd uit mijn favorieten', 34213 allFavorites: 'Alle favorieten' 34214 }, 34215 'pl': { 34216 addToWishlist: 'Dodaj do ulubionych', 34217 createCategory: 'Utwórz nowÄ kategoriÄ:', 34218 categoryPlaceholder: 'Nazwa kategorii', 34219 createAndAdd: 'Utwórz i dodaj', 34220 alreadyAdded: '(Już dodane)', 34221 addedToWishlist: 'dodano do ulubionych', 34222 removedFromWishlist: 'usuniÄto z ulubionych', 34223 allFavorites: 'Wszystkie ulubione' 34224 }, 34225 'hu': { 34226 addToWishlist: 'Hozzáadás a kedvencekhez', 34227 createCategory: 'Ãj kategória létrehozása:', 34228 categoryPlaceholder: 'Kategória neve', 34229 createAndAdd: 'Létrehozás és hozzáadás', 34230 alreadyAdded: '(Már hozzáadva)', 34231 addedToWishlist: 'hozzáadva a kedvencekhez', 34232 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 34233 allFavorites: 'Minden kedvenc' 34234 }, 34235 'ro': { 34236 addToWishlist: 'AdaugÄ la favorite', 34237 createCategory: 'CreeazÄ o nouÄ categorie:', 34238 categoryPlaceholder: 'Nume categorie', 34239 createAndAdd: 'CreeazÄ Èi adaugÄ', 34240 alreadyAdded: '(Deja adÄugat)', 34241 addedToWishlist: 'adÄugat la favorite', 34242 removedFromWishlist: 'eliminat din favorite', 34243 allFavorites: 'Toate preferinÈele' 34244 }, 34245 'bg': { 34246 addToWishlist: 'Ðобави в лÑбими', 34247 createCategory: 'СÑздай нова каÑегоÑиÑ:', 34248 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 34249 createAndAdd: 'СÑздай и добави', 34250 alreadyAdded: '(ÐеÑе добавено)', 34251 addedToWishlist: 'добавено в лÑбими', 34252 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 34253 allFavorites: 'ÐÑиÑки лÑбими' 34254 }, 34255 'hr': { 34256 addToWishlist: 'Dodaj u favorite', 34257 createCategory: 'Kreiraj novu kategoriju:', 34258 categoryPlaceholder: 'Naziv kategorije', 34259 createAndAdd: 'Kreiraj i dodaj', 34260 alreadyAdded: '(VeÄ dodano)', 34261 addedToWishlist: 'dodano u favorite', 34262 removedFromWishlist: 'uklonjeno iz favorita', 34263 allFavorites: 'Sva omiljena' 34264 }, 34265 'fi': { 34266 addToWishlist: 'Lisää suosikkeihin', 34267 createCategory: 'Luo uusi kategoria:', 34268 categoryPlaceholder: 'Kategorian nimi', 34269 createAndAdd: 'Luo ja lisää', 34270 alreadyAdded: '(Jo lisätty)', 34271 addedToWishlist: 'lisätty suosikkeihin', 34272 removedFromWishlist: 'poistettu suosikeista',
34273 allFavorites: 'Kaikki suosikit' 34274 }, 34275 'gr': { 34276 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 34277 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 34278 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 34279 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 34280 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 34281 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 34282 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 34283 allFavorites: 'Îλα Ïα αγαÏημÎνα' 34284 }, 34285 'no': { 34286 addToWishlist: 'Legg til i favoritter', 34287 createCategory: 'Opprett ny kategori:', 34288 categoryPlaceholder: 'Kategorinavn', 34289 createAndAdd: 'Opprett og legg til', 34290 alreadyAdded: '(Allerede lagt til)', 34291 addedToWishlist: 'lagt til i favoritter', 34292 removedFromWishlist: 'fjernet fra favoritter', 34293 allFavorites: 'Alle favoritter' 34294 }, 34295 'pt-PT': { 34296 addToWishlist: 'Adicionar aos favoritos', 34297 createCategory: 'Criar nova categoria:', 34298 categoryPlaceholder: 'Nome da categoria', 34299 createAndAdd: 'Criar e adicionar', 34300 alreadyAdded: '(Já adicionado)', 34301 addedToWishlist: 'adicionado aos favoritos', 34302 removedFromWishlist: 'removido dos favoritos', 34303 allFavorites: 'Todos os favoritos' 34304 }, 34305 'sl': { 34306 addToWishlist: 'Dodaj med priljubljene', 34307 createCategory: 'Ustvari novo kategorijo:', 34308 categoryPlaceholder: 'Ime kategorije', 34309 createAndAdd: 'Ustvari in dodaj', 34310 alreadyAdded: '(Že dodano)', 34311 addedToWishlist: 'dodano med priljubljene', 34312 removedFromWishlist: 'odstranjeno iz priljubljenih', 34313 allFavorites: 'Vsi priljubljeni' 34314 }, 34315 'sv': { 34316 addToWishlist: 'Lägg till i favoriter', 34317 createCategory: 'Skapa ny kategori:', 34318 categoryPlaceholder: 'Kategorinamn', 34319 createAndAdd: 'Skapa och lägg till', 34320 alreadyAdded: '(Redan tillagd)', 34321 addedToWishlist: 'tillagd i favoriter', 34322 removedFromWishlist: 'borttagen frÃ¥n favoriter', 34323 allFavorites: 'Alla favoriter' 34324 }, 34325 'lv': { 34326 addToWishlist: 'Pievienot favorÄ«tiem', 34327 createCategory: 'Izveidot jaunu kategoriju:', 34328 categoryPlaceholder: 'Kategorijas nosaukums', 34329 createAndAdd: 'Izveidot un pievienot', 34330 alreadyAdded: '(Jau pievienots)', 34331 addedToWishlist: 'pievienots favorÄ«tiem', 34332 removedFromWishlist: 'noÅemts no favorÄ«tiem', 34333 allFavorites: 'Visas favorÄ«tus' 34334 }, 34335 'lt': { 34336 addToWishlist: 'PridÄti į mÄgstamiausius', 34337 createCategory: 'Sukurti naujÄ kategorijÄ :', 34338 categoryPlaceholder: 'Kategorijos pavadinimas', 34339 createAndAdd: 'Sukurti ir pridÄti', 34340 alreadyAdded: '(Jau pridÄta)', 34341 addedToWishlist: 'pridÄta į mÄgstamiausius', 34342 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 34343 allFavorites: 'Visos mÄgstamiausios' 34344 }, 34345 'ee': { 34346 addToWishlist: 'Lisa lemmikutesse', 34347 createCategory: 'Loo uus kategooria:', 34348 categoryPlaceholder: 'Kategooria nimi', 34349 createAndAdd: 'Loo ja lisa', 34350 alreadyAdded: '(Juba lisatud)', 34351 addedToWishlist: 'lisatud lemmikutesse', 34352 removedFromWishlist: 'eemaldatud lemmikutest', 34353 allFavorites: 'Kõik lemmikud' 34354 }, 34355 'dk': { 34356 addToWishlist: 'Tilføj til favoritter', 34357 createCategory: 'Opret ny kategori:', 34358 categoryPlaceholder: 'Kategorinavn', 34359 createAndAdd: 'Opret og tilføj', 34360 alreadyAdded: '(Allerede tilføjet)', 34361 addedToWishlist: 'tilføjet til favoritter', 34362 removedFromWishlist: 'fjernet fra favoritter', 34363 allFavorites: 'Alle favoritter' 34364 } 34365 }; 34366 34367 function getWishlistLang() { 34368 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 34369 // Normalize for region codes (e.g., pt-PT, sl) 34370 if (lang.startsWith('pt-PT')) return 'pt-PT'; 34371 if (lang.startsWith('sl')) return 'sl'; 34372 if (lang.startsWith('cs')) return 'cs'; 34373 if (lang.startsWith('sk')) return 'sk'; 34374 if (lang.startsWith('de')) return 'de'; 34375 if (lang.startsWith('fr')) return 'fr'; 34376 if (lang.startsWith('it')) return 'it'; 34377 if (lang.startsWith('es')) return 'es'; 34378 if (lang.startsWith('nl')) return 'nl'; 34379 if (lang.startsWith('pl')) return 'pl'; 34380 if (lang.startsWith('hu')) return 'hu'; 34381 if (lang.startsWith('ro')) return 'ro'; 34382 if (lang.startsWith('bg')) return 'bg'; 34383 if (lang.startsWith('hr')) return 'hr'; 34384 if (lang.startsWith('fi')) return 'fi'; 34385 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 34386 if (lang.startsWith('no')) return 'no'; 34387 if (lang.startsWith('sv')) return 'sv'; 34388 if (lang.startsWith('lv')) return 'lv'; 34389 if (lang.startsWith('lt')) return 'lt'; 34390 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 34391 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 34392 return 'en'; 34393 } 34394 34395 // Get or initialize the wishlist array in localStorage 34396 function getWishlist() { 34397 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 34398 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 34399 categories: [ 34400 { 34401 id: 'all-favorites', 34402 name: 'All Favorites', 34403 items: [] 34404 } 34405 ], 34406 version: 2 34407 }; 34408 34409 // Handle migration from old format (array of items) to new format (categories) 34410 if (Array.isArray(wishlist)) { 34411 return { 34412 categories: [ 34413 { 34414 id: 'all-favorites', 34415 name: 'All Favorites', 34416 items: wishlist 34417 } 34418 ], 34419 version: 2 34420 }; 34421 } 34422 34423 return wishlist; 34424 } 34425 34426 // Save wishlist to localStorage 34427 function saveWishlist(wishlist) { 34428 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 34429 // Dispatch an event so other parts of the site can react to wishlist changes 34430 document.dispatchEvent(new CustomEvent('wishlist:updated', { 34431 detail: { wishlist: wishlist } 34432 })); 34433 34434 // Count total items across all categories 34435 const totalItems = wishlist.categories.reduce((total, category) => { 34436 return total + category.items.length; 34437 }, 0); 34438 34439 // Update all wishlist counters 34440 updateWishlistCounters(totalItems); 34441 } 34442 34443 // Update all wishlist counters on the page 34444 function updateWishlistCounters(count) { 34445 const counters = document.querySelectorAll('.wishlist-count');
34446 counters.forEach(counter => { 34447 counter.textContent = count; 34448 34449 // If the counter is hidden and count > 0, show it 34450 if (count > 0 && counter.hasAttribute('hidden')) { 34451 counter.removeAttribute('hidden'); 34452 } 34453 // If the counter is visible and count = 0, hide it 34454 else if (count === 0 && !counter.hasAttribute('hidden')) { 34455 counter.setAttribute('hidden', 'true'); 34456 } 34457 }); 34458 } 34459 34460 // Check if a product is in the wishlist (in any category) 34461 function isInWishlist(productId) { 34462 const wishlist = getWishlist(); 34463 return wishlist.categories.some(category => 34464 category.items.some(item => item.id === productId) 34465 ); 34466 } 34467 34468 // Get all categories 34469 function getCategories() { 34470 return getWishlist().categories; 34471 } 34472 34473 // Create a new category 34474 function createCategory(name) { 34475 const wishlist = getWishlist(); 34476 const categoryId = 'category-' + Date.now(); 34477 34478 wishlist.categories.push({ 34479 id: categoryId, 34480 name: name, 34481 items: [] 34482 }); 34483 34484 saveWishlist(wishlist); 34485 return categoryId; 34486 } 34487 34488 // Add a product to a specific category 34489 function addToCategory(product, categoryId) { 34490 const wishlist = getWishlist(); 34491 const category = wishlist.categories.find(cat => cat.id === categoryId); 34492 34493 if (!category) return false; 34494 34495 // Check if product already exists in ANY category (not just this one) 34496 if (isInWishlist(product.id)) { 34497 return false; // Product already in wishlist 34498 } 34499 34500 // Add product to category 34501 category.items.push(product); 34502 saveWishlist(wishlist); 34503 34504 // Dispatch event for global sync 34505 document.dispatchEvent(new CustomEvent('wishlist:updated', { 34506 detail: { productId: product.id, added: true } 34507 })); 34508 34509 return true; 34510 } 34511 34512 // Add a product to the default "All Favorites" category 34513 function addToWishlist(product) { 34514 return addToCategory(product, 'all-favorites'); 34515 } 34516 34517 // Remove a product from all categories 34518 function removeFromWishlist(productId) { 34519 const wishlist = getWishlist(); 34520 let removed = false; 34521 34522 wishlist.categories.forEach(category => { 34523 const initialLength = category.items.length; 34524 category.items = category.items.filter(item => item.id !== productId); 34525 if (category.items.length !== initialLength) { 34526 removed = true; 34527 } 34528 }); 34529 34530 if (removed) { 34531 saveWishlist(wishlist); 34532 } 34533 34534 return removed; 34535 } 34536 34537 // Toggle a product in the wishlist 34538 function toggleWishlistItem(product) { 34539 if (isInWishlist(product.id)) { 34540 // If already in wishlist, remove it 34541 const wasRemoved = removeFromWishlist(product.id); 34542 34543 // Update heart icon if the product was successfully removed 34544 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 34545 if (heartIcon && wasRemoved) { 34546 heartIcon.setAttribute('fill', 'none'); 34547 showWishlistToast(false, product.title); 34548 34549 // Dispatch event for global sync 34550 document.dispatchEvent(new CustomEvent('wishlist:updated', { 34551 detail: { productId: product.id, added: false } 34552 })); 34553 } 34554 return wasRemoved; 34555 } else { 34556 // If not in wishlist, show category selection popup 34557 showCategorySelectionPopup(product); 34558 return false; // Don't return true unless we actually add the product 34559 } 34560 } 34561 34562 // Show wishlist category selection popup 34563 function showCategorySelectionPopup(product) { 34564 // Remove any existing popup 34565 const existingPopup = document.getElementById('wishlist-category-popup'); 34566 if (existingPopup) { 34567 existingPopup.remove(); 34568 } 34569 34570 const lang = getWishlistLang(); 34571 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 34572 34573 // Create popup container 34574 const popup = document.createElement('div'); 34575 popup.id = 'wishlist-category-popup'; 34576 popup.className = 'wishlist-category-popup'; 34577 34578 // Create popup content 34579 const content = document.createElement('div'); 34580 content.className = 'wishlist-category-popup-content'; 34581 34582 // Create header 34583 const title = document.createElement('h2'); 34584 title.textContent = translations.addToWishlist; // Translate 34585 34586 const closeButton = document.createElement('button'); 34587 closeButton.className = 'wishlist-category-popup-close'; 34588 closeButton.setAttribute('aria-label', 'Close'); 34589 closeButton.addEventListener('click', () => { 34590 popup.remove(); 34591 }); 34592 34593 // Create category list 34594 const categoryList = document.createElement('div'); 34595 categoryList.className = 'wishlist-category-list'; 34596 34597 // Get categories 34598 const categories = getCategories(); 34599 34600 // Add category options
34601 categories.forEach(category => { 34602 const categoryOption = document.createElement('div'); 34603 categoryOption.className = 'wishlist-category-option'; 34604 34605 // Use translation for default category name 34606 categoryOption.textContent = category.id === 'all-favorites' 34607 ? (translations.allFavorites || category.name) 34608 : category.name; 34609 34610 // Highlight if product already in this category 34611 if (category.items.some(item => item.id === product.id)) { 34612 categoryOption.style.backgroundColor = '#f0f0f0'; 34613 categoryOption.style.color = '#999'; 34614 categoryOption.style.fontStyle = 'italic'; 34615 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 34616 categoryOption.style.cursor = 'default'; 34617 } else { 34618 categoryOption.addEventListener('click', () => { 34619 const wasAdded = addToCategory(product, category.id); 34620 34621 if (wasAdded) { 34622 // Update heart icon after successful addition 34623 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 34624 if (heartIcon) { 34625 heartIcon.setAttribute('fill', '#333333'); 34626 } 34627 34628 showWishlistToast(true, product.title); 34629 popup.remove(); 34630 } 34631 }); 34632 } 34633 34634 categoryList.appendChild(categoryOption); 34635 }); 34636 34637 // Create "add new category" section 34638 const newCategorySection = document.createElement('div'); 34639 newCategorySection.style.borderTop = '1px solid #eee'; 34640 newCategorySection.style.paddingTop = '15px'; 34641 newCategorySection.style.marginTop = '10px'; 34642 34643 const newCategoryLabel = document.createElement('label'); 34644 newCategoryLabel.textContent = translations.createCategory; // Translate 34645 34646 const newCategoryInput = document.createElement('input'); 34647 newCategoryInput.type = 'text'; 34648 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 34649 34650 const createButton = document.createElement('button'); 34651 createButton.className = 'create-category-button'; 34652 createButton.textContent = translations.createAndAdd; // Translate 34653 34654 createButton.addEventListener('click', () => { 34655 const categoryName = newCategoryInput.value.trim(); 34656 if (categoryName) { 34657 const categoryId = createCategory(categoryName); 34658 const wasAdded = addToCategory(product, categoryId); 34659 34660 if (wasAdded) { 34661 // Update heart icon after successful addition 34662 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 34663 if (heartIcon) { 34664 heartIcon.setAttribute('fill', '#333333'); 34665 } 34666 34667 showWishlistToast(true, product.title); 34668 popup.remove(); 34669 } 34670 } 34671 }); 34672 34673 newCategorySection.appendChild(newCategoryLabel); 34674 newCategorySection.appendChild(newCategoryInput); 34675 newCategorySection.appendChild(createButton); 34676 34677 // Assemble popup 34678 content.appendChild(title); 34679 content.appendChild(closeButton); 34680 content.appendChild(categoryList); 34681 content.appendChild(newCategorySection); 34682 popup.appendChild(content); 34683 34684 // Add to document 34685 document.body.appendChild(popup); 34686 34687 // Focus the input 34688 setTimeout(() => { 34689 newCategoryInput.focus(); 34690 }, 100); 34691 34692 // Close when clicking outside content 34693 popup.addEventListener('click', (e) => { 34694 if (e.target === popup) { 34695 popup.remove(); 34696 } 34697 }); 34698 } 34699 34700 // Show a toast notification 34701 function showWishlistToast(added, productTitle) { 34702 // Create or get toast container 34703 let toastContainer = document.getElementById('wishlist-toast'); 34704 if (!toastContainer) { 34705 toastContainer = document.createElement('div'); 34706 toastContainer.id = 'wishlist-toast'; 34707 toastContainer.style.position = 'fixed'; 34708 toastContainer.style.bottom = '20px'; 34709 toastContainer.style.right = '20px'; 34710 toastContainer.style.zIndex = '9999'; 34711 document.body.appendChild(toastContainer); 34712 } 34713 34714 // Create toast 34715 const toast = document.createElement('div'); 34716 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 34717 toast.style.color = 'white'; 34718 toast.style.padding = '12px 20px'; 34719 toast.style.borderRadius = '0'; 34720 toast.style.marginTop = '10px'; 34721 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 34722 toast.style.transition = 'all 0.3s ease'; 34723 toast.style.opacity = '0'; 34724 toast.style.fontFamily = 'Montserrat, sans-serif'; 34725 34726 // Choose text based on action 34727 const lang = getWishlistLang(); 34728 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 34729 toast.textContent = added 34730 ? `${productTitle} ${translations.addedToWishlist}` // Translate 34731 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 34732 34733 // Add to container 34734 toastContainer.appendChild(toast); 34735 34736 // Animate in 34737 setTimeout(() => { 34738 toast.style.opacity = '1'; 34739 }, 10); 34740 34741 // Animate out and remove 34742 setTimeout(() => { 34743 toast.style.opacity = '0'; 34744 setTimeout(() => { 34745 toastContainer.removeChild(toast); 34746 }, 300); 34747 }, 3000); 34748 } 34749 34750 // Initialize wishlist buttons 34751 function initCardWishlistButtons() { 34752 const wishlistButtons = document.querySelectorAll('.card-wis
34752hlist-button'); 34753 34754 wishlistButtons.forEach(button => { 34755 // Skip if already initialized 34756 if (button.dataset.initializedWishlist === 'true') return; 34757 button.dataset.initializedWishlist = 'true'; 34758 34759 const productId = button.getAttribute('data-wishlist-product'); 34760 if (!productId) return; 34761 34762 // Get product details from the card 34763 const card = button.closest('.card-wrapper'); 34764 const productDetails = { 34765 id: productId, 34766 title: card.querySelector('.card__heading')?.textContent.trim() || '', 34767 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 34768 price: card.querySelector('.price')?.textContent.trim() || '', 34769 image: card.querySelector('img')?.src || '', 34770 url: card.querySelector('a[href*="/products/"]')?.href || '' 34771 }; 34772 34773 // Set initial state using global function 34774 const heartIcon = button.querySelector('path'); 34775 if (heartIcon) { 34776 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 34777 heartIcon.setAttribute('fill', '#333333'); 34778 } else { 34779 heartIcon.setAttribute('fill', 'none'); 34780 } 34781 } 34782 34783 // Add click handler 34784 button.addEventListener('click', function(e) { 34785 e.preventDefault(); 34786 e.stopPropagation(); 34787 e.stopImmediatePropagation(); 34788 toggleWishlistItem(productDetails); 34789 }); 34790 34791 // Prevent navigation on mousedown/touchstart 34792 button.addEventListener('mousedown', function(e) { 34793 e.preventDefault(); 34794 e.stopPropagation(); 34795 }); 34796 34797 button.addEventListener('touchstart', function(e) { 34798 e.preventDefault(); 34799 e.stopPropagation(); 34800 }); 34801 }); 34802 } 34803 34804 // Initialize the wishlist counter on page load 34805 const wishlist = getWishlist(); 34806 const totalItems = wishlist.categories.reduce((total, category) => { 34807 return total + category.items.length; 34808 }, 0); 34809 updateWishlistCounters(totalItems); 34810 34811 // Initialize on DOM ready 34812 if (document.readyState === 'loading') { 34813 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 34814 } else { 34815 initCardWishlistButtons(); 34816 } 34817 34818 // Reinitialize on Shopify section load 34819 document.addEventListener('shopify:section:load', function() { 34820 setTimeout(initCardWishlistButtons, 100); 34821 }); 34822 34823 // Listen for wishlist updates from other parts of the site 34824 document.addEventListener('wishlist:updated', function() { 34825 setTimeout(initCardWishlistButtons, 100); 34826 }); 34827 })(); 34828</script>
34828 34829 34830<!-- Price info icon styles --> 34831<style> 34832 /* Price container with icon */ 34833 .price-container-with-info { 34834 position: relative; 34835 display: flex; 34836 align-items: center; 34837 gap: 8px; 34838 } 34839 34840 /* Info icon - hidden by default, shown on card hover */ 34841 .price-info-icon { 34842 position: relative; 34843 display: inline-flex; 34844 align-items: center; 34845 justify-content: center; 34846 color: #666; 34847 cursor: help; 34848 opacity: 0; 34849 transition: opacity 0.3s ease; 34850 34851 padding: 4px; /* Add padding to increase clickable area */ 34852 min-width: 20px; /* Ensure minimum clickable area */ 34853 min-height: 20px; 34854 z-index: 15; /* Above everything else including compare button */ 34855 pointer-events: auto; /* Allow interaction */ 34856 } 34857 34858 /* Show icon on card hover */ 34859 .card-wrapper:hover .price-info-icon { 34860 opacity: 1; 34861 } 34862 34863 .price-info-icon svg { 34864 width: 14px; 34865 height: 14px; 34866 stroke-width: 1.5; 34867 } 34868 34869 /* Tooltip styles */ 34870 .price-info-tooltip { 34871 position: absolute; 34872 bottom: calc(100% + 6px); 34873 top: auto; 34874 left: 0; 34875 transform: none; 34876 min-width: 310px; 34877 background: #FFFFFF; 34878 color: #232323; 34879 border: 1px solid #EEEEEE; 34880 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 34881 padding: 12px 16px; 34882 font-size: 13px; 34883 font-family: 'Montserrat', sans-serif; 34884 z-index: 10000; 34885 opacity: 0; 34886 transition: opacity 0.18s; 34887 white-space: pre-line; 34888 text-align: left; 34889 border-radius: 0; 34890 visibility: hidden; 34891 pointer-events: none; 34892 } 34893 34894 /* Show tooltip on icon hover */ 34895 .price-info-icon:hover .price-info-tooltip { 34896 visibility: visible; 34897 opacity: 1; 34898 } 34899 34900 /* Ensure tooltip is never clipped */ 34901 .price-container-with-info, 34902 .card-information, 34903 .card__content { 34904 overflow: visible !important; 34905 } 34906 34907 /* Mobile adjustments */ 34908 @media screen and (max-width: 768px) { 34909 .price-info-tooltip { 34910 min-width: 200px; 34911 font-size: 12px; 34912 padding: 10px 12px; 34913 } 34914 } 34915</style> 34916 34917 </li> 34918 <li 34919 class="grid__item" 34920 34921 > 34922 34923<div class="card-wrapper product-card-wrapper underline-links-hover"> 34924 34925 <div 34926 class=" 34927 card card--standard 34928 card--media 34929 34930 34931 34932 34933 34934 " 34935 style="--ratio-percent: 100.0%;" 34936 data-product-id="9746973196586" 34937 data-description="Lámpara de pie LED para exteriores con iluminación hacia abajo. Hecha de aluminio fundido a presión y tapa inferior en color ópal. " 34938 34939 data-ip-rate="IP44" 34940 34941 data-variant-id="52388078158122" 34942 data-price="198.00 EUR" 34943 data-compare-at-price="" 34944 data-available="true" 34945 data-barcode="8595685413921" 34946 data-ip-rate="IP44" 34947 data-lumens="1000" 34948 data-power-source="" 34949 data-watt="12.0" 34950 data-kelvin="3000" 34951 data-light-color="" 34952 data-diameter="" 34953 data-weight-netto="2250.0" 34954 data-weight-unit="g" 34955 data-mounting-hole-size="" 34956 data-recess-depth="" 34957 data-suspension-lenght="" 34958 data-turn-angle="" 34959 data-tilt-angle="" 34960 data-switch="" 34961 data-socket="" 34962 data-light-source-recomended="" 34963 data-height="80" 34964 data-length="14.4" 34965 data-Length="" 34966 > 34967 <div 34968 class="card__inner color-scheme-2 gradient ratio" 34969 style="--ratio-percent: 100.0%;" 34970 > 34971 34972 34973<div class="ip-rate-badge"> 34974 <span>IP44</span> 34975 </div><div class="card__media"> 34976 <a class="card__media-link-content" href="/products/rina-bollard-lamp" aria-label="RINA DE PIÃ"> 34977 <div class="media media--transparent media--hover-effect"> 34978 34979 <img 34980 class="product-image motion-reduce" 34981 srcset="//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=165 165w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=360 360w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=533 533w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=720 720w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=940 940w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=1066 1066w,//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076 4899w 34982 " 34983 src="//rendl.es/cdn/shop/files/r12515-1.jpg?v=1745942076&width=533" 34984 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 34985 alt="RENDL outdoor lamp RINA bollard anthracite grey 230V LED 12W IP44 3000K R12515 1" 34986 34987 loading="lazy" 34988 34989 width="4899" 34990 height="4899" 34991 > 34992 34993<img 34994 class="product-image motion-reduce" 34995 srcset="//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=165 165w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=360 360w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=533 533w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=720 720w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=940 940w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=1066 1066w,//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187 3162w 34996 " 34997 src="//rendl.es/cdn/shop/files/r12515-2.jpg?v=1766798187&width=533" 34998 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 34999 alt="" 35000 loading="lazy" 35001 width="3162" 35002 height="3162" 35003 ></div> 35004 </a> 35005 35006<div class="card-media-icons"><div class="energy-label-icon"> 35007 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 35008 <div class="energy-label-tooltip">Clase energética G 35009</div> 35010 </div></div><div class="card-variant-swatches"><a 35011 class="card-variant-swatch" 35012 href="/products/rina-bollard-lamp?variant=52388078158122" 35013 35014 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 35015 35016 aria-label="gris antracita" 35017 >
35018 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 35019 <div class="card__information"> 35020 <h3 35021 class="card__heading" 35022 35023 > 35024 <a 35025 href="/products/rina-bollard-lamp" 35026 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746973196586" 35027 class="full-unstyled-link" 35028 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746973196586 NoMediaStandardBadge-template--28113427169578__product-grid-9746973196586" 35029 > 35030 RINA DE PIà 35031 </a> 35032 </h3> 35033 </div> 35034 <div class="card__badge bottom left"></div> 35035 </div> 35036 </div> 35037 <div class="card__content"> 35038 <div class="card__information"> 35039 <h3 35040 class="card__heading h5" 35041 35042 id="title-template--28113427169578__product-grid-9746973196586" 35043 35044 > 35045 <a 35046 href="/products/rina-bollard-lamp" 35047 id="CardLink-template--28113427169578__product-grid-9746973196586" 35048 class="full-unstyled-link" 35049 aria-labelledby="CardLink-template--28113427169578__product-grid-9746973196586 Badge-template--28113427169578__product-grid-9746973196586" 35050 > 35051 RINA DE PIà 35052 </a> 35053 </h3><div class="card__description"> 35054 Lámpara de pie LED para exteriores con iluminación hacia abajo. Hecha de aluminio fundido a presión y tapa inferior en color ópal. 35055 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 35056 35057<div 35058 class=" 35059 price " 35060 > 35061 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 35062 <span class="price-item price-item--regular"> 35063 198.00 EUR 35064 </span></div> 35065 <div class="price__sale"> 35066 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 35067 <span> 35068 <s class="price-item price-item--regular"> 35069 35070 35071 35072 </s> 35073 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 35074 <span class="price-item price-item--sale price-item--last"> 35075 198.00 EUR 35076 </span> 35077 </div> 35078 <small class="unit-price caption hidden"> 35079 <span class="visually-hidden">Precio unitario</span> 35080 <span class="price-item price-item--last"> 35081 <span></span> 35082 <span aria-hidden="true">/</span> 35083 <span class="visually-hidden"> por </span> 35084 <span> 35085 </span> 35086 </span> 35087 </small> 35088 </div></div> 35089 35090 35091</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 35092 <button class="compare-button-simple" 35093 data-product-id="9746973196586" 35094 data-product-title="RINA DE PIÃ" 35095 data-product-handle="rina-bollard-lamp"> 35096 <span class="compare-button-content"> 35097 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 35098 <span class="compare-text" data-translate="compare">compare</span> 35099 </span> 35100 <span class="compare-spinner-small"> 35101 <!-- Small spinner for button --> 35102 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 35103 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 35104 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 35105 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
35105inite"/> 35106 </path> 35107 </svg> 35108 </span> 35109 </button> 35110 35111 <!-- Wishlist button next to compare button --> 35112 <button type="button" class="card-wishlist-button" data-wishlist-product="9746973196586"> 35113 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 35114 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 35115 </svg> 35116 </button> 35117 </div></div> 35118 </div> 35119 35120 35121 35122 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746973196586" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 35123 type="hidden" 35124 name="id" 35125 value="52388078158122" 35126 class="product-variant-id" 35127 35128 > 35129 <button 35130 id="quick-add-template--28113427169578__product-grid9746973196586-submit" 35131 type="submit" 35132 name="add" 35133 class="quick-add__submit button button--full-width button--secondary" 35134 aria-haspopup="dialog" 35135 aria-labelledby="quick-add-template--28113427169578__product-grid9746973196586-submit title-template--28113427169578__product-grid-9746973196586" 35136 aria-live="polite" 35137 data-sold-out-message="true" 35138 35139 > 35140 <span>Agregar al carrito 35141</span> 35142 <span class="sold-out-message hidden"> 35143 En camino 35144 </span> 35145 35146<div class="loading__spinner hidden"> 35147 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 35148 35149</div> 35150</button><input type="hidden" name="product-id" value="9746973196586" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 35151 35152 <div class="card__badge bottom left"></div> 35153 </div> 35154 </div> 35155 </div>
35155<script> 35156 // Initialize global compare translations only once 35157 if (typeof window.compareButtonTranslations === 'undefined') { 35158 window.compareButtonTranslations = { 35159 compare: { 35160 en: 'compare', 35161 cs: 'porovnat', 35162 sk: 'porovnaÅ¥', 35163 de: 'vergleichen', 35164 at: 'vergleichen', 35165 ch: 'vergleichen', 35166 fr: 'comparer', 35167 be: 'comparer', 35168 lu: 'comparer', 35169 it: 'confronta', 35170 es: 'comparar', 35171 nl: 'vergelijken', 35172 pl: 'porównaj', 35173 hu: 'összehasonlÃt', 35174 ro: 'comparÄ', 35175 bg: 'ÑÑавни', 35176 hr: 'usporedi', 35177 fi: 'vertaile', 35178 gr: 'ÏÏγκÏιÏη', 35179 el: 'ÏÏγκÏιÏη', 35180 no: 'sammenlign', 35181 'pt-PT': 'comparar', 35182 sl: 'primerjaj', 35183 sv: 'jämför', 35184 lv: 'salÄ«dzinÄt', 35185 lt: 'palyginti', 35186 ee: 'võrdle', 35187 dk: 'sammenlign', 35188 gb: 'compare', 35189 uk: 'compare', 35190 ie: 'compare', 35191 us: 'compare', 35192 ca: 'compare', 35193 au: 'compare', 35194 nz: 'compare', 35195 ru: 'ÑÑавниÑÑ' 35196 }, 35197 remove: { 35198 en: 'remove', 35199 cs: 'odebrat', 35200 sk: 'odobraÅ¥', 35201 de: 'entfernen', 35202 at: 'entfernen', 35203 ch: 'entfernen', 35204 fr: 'supprimer', 35205 be: 'supprimer', 35206 lu: 'supprimer', 35207 it: 'rimuovi', 35208 es: 'eliminar', 35209 nl: 'verwijderen', 35210 pl: 'usuÅ', 35211 hu: 'eltávolÃt', 35212 ro: 'eliminÄ', 35213 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 35214 hr: 'ukloni', 35215 fi: 'poista', 35216 gr: 'αÏαίÏεÏη', 35217 el: 'αÏαίÏεÏη', 35218 no: 'fjern', 35219 'pt-PT': 'remover', 35220 sl: 'odstrani', 35221 sv: 'ta bort', 35222 lv: 'noÅemt', 35223 lt: 'paÅ¡alinti', 35224 ee: 'eemalda', 35225 dk: 'fjern', 35226 gb: 'remove', 35227 uk: 'remove', 35228 ie: 'remove', 35229 us: 'remove', 35230 ca: 'remove', 35231 au: 'remove', 35232 nz: 'remove', 35233 ru: 'ÑдалиÑÑ' 35234 }, 35235 added: { 35236 en: 'Added!', 35237 cs: 'PÅidáno!', 35238 sk: 'Pridané!', 35239 de: 'Hinzugefügt!', 35240 at: 'Hinzugefügt!', 35241 ch: 'Hinzugefügt!', 35242 fr: 'Ajouté!', 35243 be: 'Ajouté!', 35244 lu: 'Ajouté!', 35245 it: 'Aggiunto!', 35246 es: '¡Añadido!', 35247 nl: 'Toegevoegd!', 35248 pl: 'Dodano!', 35249 hu: 'Hozzáadva!', 35250 ro: 'AdÄugat!', 35251 bg: 'Ðобавено!', 35252 hr: 'Dodano!', 35253 fi: 'Lisätty!', 35254 gr: 'Î ÏοÏÏÎθηκε!', 35255 el: 'Î ÏοÏÏÎθηκε!', 35256 no: 'Lagt til!', 35257 'pt-PT': 'Adicionado!', 35258 sl: 'Dodano!', 35259 sv: 'Tillagd!', 35260 lv: 'Pievienots!', 35261 lt: 'PridÄta!', 35262 ee: 'Lisatud!', 35263 dk: 'Tilføjet!', 35264 gb: 'Added!', 35265 uk: 'Added!', 35266 ie: 'Added!', 35267 us: 'Added!', 35268 ca: 'Added!', 35269 au: 'Added!', 35270 nz: 'Added!', 35271 ru: 'Ðобавлено!' 35272 }, 35273 removed: { 35274 en: 'Removed!', 35275 cs: 'Odebráno!', 35276 sk: 'Odobrané!', 35277 de: 'Entfernt!', 35278 at: 'Entfernt!', 35279 ch: 'Entfernt!', 35280 fr: 'Supprimé!', 35281 be: 'Supprimé!', 35282 lu: 'Supprimé!', 35283 it: 'Rimosso!', 35284 es: '¡Eliminado!', 35285 nl: 'Verwijderd!', 35286 pl: 'UsuniÄto!', 35287 hu: 'EltávolÃtva!', 35288 ro: 'Eliminat!', 35289 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 35290 hr: 'Uklonjeno!', 35291 fi: 'Poistettu!', 35292 gr: 'ÎÏαιÏÎθηκε!', 35293 el: 'ÎÏαιÏÎθηκε!', 35294 no: 'Fjernet!', 35295 'pt-PT': 'Removido!', 35296 sl: 'Odstranjeno!', 35297 sv: 'Borttaget!', 35298 lv: 'NoÅemts!', 35299 lt: 'PaÅ¡alinta!', 35300 ee: 'Eemaldatud!', 35301 dk: 'Fjernet!', 35302 gb: 'Removed!', 35303 uk: 'Removed!', 35304 ie: 'Removed!', 35305 us: 'Removed!', 35306 ca: 'Removed!', 35307 au: 'Removed!', 35308 nz: 'Removed!', 35309 ru: 'Удалено!' 35310 } 35311 }; 35312 35313 // Tooltip translations for price info 35314 window.tooltipTranslations = { 35315 tooltipPrice: { 35316 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35317 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 35318 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 35319 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 35320 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 35321 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 35322 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 35323 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 35324 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 35325 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 35326 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 35327 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 35328 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 35329 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 35330 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 35331 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 35332 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 35333 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 35334 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 35335 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 35336 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 35337 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 35338 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 35339 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 35340 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
35340iks atskaitÄ«ts, ja piemÄrojams.", 35341 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 35342 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 35343 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 35344 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35345 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35346 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35347 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35348 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35349 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35350 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 35351 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 35352 }, 35353 tooltipOutlet: { 35354 en: "We do not provide additional wholesale discounts on outlet products.", 35355 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 35356 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 35357 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 35358 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 35359 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 35360 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 35361 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 35362 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 35363 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 35364 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 35365 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 35366 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 35367 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 35368 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 35369 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 35370 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 35371 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 35372 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 35373 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 35374 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 35375 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 35376 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 35377 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 35378 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 35379 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 35380 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 35381 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 35382 gb: "We do not provide additional wholesale discounts on outlet products.", 35383 uk: "We do not provide additional wholesale discounts on outlet products.", 35384 ie: "We do not provide additional wholesale discounts on outlet products.", 35385 us: "We do not provide additional wholesale discounts on outlet products.", 35386 ca: "We do not provide additional wholesale discounts on outlet products.", 35387 au: "We do not provide additional wholesale discounts on outlet products.", 35388 nz: "We do not provide additional wholesale discounts on outlet products.", 35389 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 35390 } 35391 }; 35392 35393 // Get current locale from document 35394 window.currentLocale = document.documentElement.lang || 'en'; 35395 35396 // Function to translate compare buttons 35397 window.translateCompareButtons = function() { 35398 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
35399 compareTexts.forEach(function(textEl) { 35400 const button = textEl.closest('.compare-button-simple'); 35401 const isInComparison = button && button.hasAttribute('data-in-comparison'); 35402 35403 if (isInComparison) { 35404 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 35405 textEl.textContent = translation; 35406 } else { 35407 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 35408 textEl.textContent = translation; 35409 } 35410 }); 35411 }; 35412 35413 // Function to format price with space as thousands separator (only for tooltip) 35414 function formatTooltipPrice(price) { 35415 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 35416 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 35417 } 35418 35419 // Function to translate tooltips with price 35420 window.translateTooltips = function() { 35421 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 35422 tooltips.forEach(function(tooltip) { 35423 const icon = tooltip.closest('.price-info-icon'); 35424 if (icon) { 35425 const status = icon.getAttribute('data-status'); 35426 // Check if this is an outlet product 35427 if (status === 'outlet') { 35428 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 35429 tooltip.textContent = translation; 35430 return; // Exit early for outlet products 35431 } 35432 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 35433 // Get wholesale price from the actual price display on the card 35434 const card = icon.closest('[data-product-id]'); 35435 let wholesalePrice = ''; 35436 if (card) { 35437 // Find the main price element on the card 35438 const priceElement = card.querySelector('.price .price-item--regular'); 35439 if (priceElement) { 35440 wholesalePrice = priceElement.textContent.trim(); 35441 } 35442 } 35443 if (retailPrice && wholesalePrice) { 35444 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 35445 let formattedRetailPrice = formatTooltipPrice(retailPrice); 35446 let formattedWholesalePrice = wholesalePrice; 35447 if (window.formatPriceText) { 35448 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 35449 } 35450 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 35451 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 35452 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 35453 tooltip.textContent = translatedText; 35454 } 35455 } 35456 }); 35457 }; 35458 35459 // Function to update button state based on comparison status 35460 window.updateCompareButtonState = function(productId, isInComparison) { 35461 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 35462 buttons.forEach(function(button) { 35463 const buttonContainer = button.closest('.compare-button-container'); 35464 const compareText = button.querySelector('.compare-text'); 35465 35466 if (isInComparison) { 35467 button.setAttribute('data-in-comparison', 'true'); 35468 button.classList.add('in-comparison'); 35469 buttonContainer.classList.add('in-comparison'); 35470 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 35471 compareText.textContent = removeText; 35472 } else { 35473 button.removeAttribute('data-in-comparison'); 35474 button.classList.remove('in-comparison'); 35475 buttonContainer.classList.remove('in-comparison'); 35476 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 35477 compareText.textContent = compareTextTranslation; 35478 } 35479 }); 35480 }; 35481 } 35482 35483 // Initialize compare button states based on localStorage 35484 window.initializeCompareButtonStates = function() {
35485 if (typeof window.RendlCompare !== 'undefined') { 35486 const compareItems = window.RendlCompare.getItems(); 35487 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 35488 const productId = button.getAttribute('data-product-id'); 35489 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 35490 window.updateCompareButtonState(productId, isInComparison); 35491 }); 35492 } 35493 }; 35494 35495 // Compare button UI animation - the actual functionality is handled by compare-system.js 35496 document.addEventListener('DOMContentLoaded', function() { 35497 // Apply translations on page load 35498 if (window.translateCompareButtons) { 35499 window.translateCompareButtons(); 35500 } 35501 35502 // Initialize button states based on comparison data 35503 setTimeout(function() { 35504 if (window.initializeCompareButtonStates) { 35505 window.initializeCompareButtonStates(); 35506 } 35507 }, 100); // Small delay to ensure compare system is loaded 35508 35509 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 35510 // Skip if already has event listener 35511 if (button.hasAttribute('data-compare-initialized')) { 35512 return; 35513 } 35514 button.setAttribute('data-compare-initialized', 'true'); 35515 35516 button.addEventListener('click', function(e) { 35517 var buttonContainer = button.closest('.compare-button-container'); 35518 var compareText = button.querySelector('.compare-text'); 35519 var isInComparison = button.hasAttribute('data-in-comparison'); 35520 var productId = button.getAttribute('data-product-id'); 35521 35522 // Prevent multiple clicks during loading 35523 if (button.classList.contains('loading')) { 35524 return; 35525 } 35526 35527 // Make button always visible during the process 35528 buttonContainer.classList.add('active'); 35529 35530 // Add loading class to show spinner 35531 button.classList.add('loading'); 35532 35533 // UI feedback timing 35534 setTimeout(function() { 35535 // Remove loading class and show success message 35536 button.classList.remove('loading'); 35537 button.classList.add('success'); 35538 35539 if (isInComparison) { 35540 // Removing from comparison 35541 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 35542 35543 // Update button state after removal 35544 setTimeout(function() { 35545 button.classList.remove('success'); 35546 window.updateCompareButtonState(productId, false); 35547 buttonContainer.classList.remove('active'); 35548 }, 1500); 35549 } else { 35550 // Adding to comparison 35551 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 35552 35553 // Update button state after addition 35554 setTimeout(function() { 35555 button.classList.remove('success'); 35556 window.updateCompareButtonState(productId, true); 35557 buttonContainer.classList.remove('active'); 35558 }, 1500); 35559 } 35560 }, 1200); 35561 }); 35562 }); 35563 35564 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 35565 setTimeout(function() { 35566 if (window.translateTooltips) { 35567 window.translateTooltips(); 35568 } 35569 }, 100); 35570 }); 35571 35572 // Ensure compare button states are initialized after RendlCompare is available 35573 document.addEventListener('DOMContentLoaded', function() { 35574 function tryInitCompareButtons() { 35575 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 35576 window.initializeCompareButtonStates(); 35577 } else { 35578 setTimeout(tryInitCompareButtons, 100); 35579 } 35580 } 35581 tryInitCompareButtons(); 35582 }); 35583 35584 // Self-contained wishlist functionality for card-product 35585 (function() { 35586 // Wishlist translations 35587 var wishlistTranslations = { 35588 'en': { 35589 addToWishlist: 'Add to My Favorites', 35590 createCategory: 'Create new category:', 35591 categoryPlaceholder: 'Category name', 35592 createAndAdd: 'Create & Add Item', 35593 alreadyAdded: '(Already added)', 35594 addedToWishlist: 'added to My Favorites', 35595 removedFromWishlist: 'removed from My Favorites', 35596 allFavorites: 'All Favorites' 35597 }, 35598 'cs': { 35599 addToWishlist: 'PÅidat do oblÃbených', 35600 createCategory: 'VytvoÅit novou skupinu:', 35601 categoryPlaceholder: 'Název nové skupiny', 35602 createAndAdd: 'VytvoÅit a pÅidat skupinu', 35603 alreadyAdded: '(Již pÅidáno)', 35604 addedToWishlist: 'pÅidáno do oblÃbených', 35605 removedFromWishlist: 'odebráno z oblÃbených', 35606 allFavorites: 'VÅ¡echny oblÃbené' 35607 }, 35608 'sk': { 35609 addToWishlist: 'PridaÅ¥ do obľúbených', 35610 createCategory: 'VytvoriÅ¥ novú kategóriu:', 35611 categoryPlaceholder: 'Názov kategórie', 35612 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 35613 alreadyAdded: '(Už pridané)', 35614 addedToWishlist: 'pridané do obľúbených', 35615 removedFromWishlist: 'odstránené z obľúbených', 35616 allFavorites: 'VÅ¡etky obľúbené' 35617 }, 35618 'de': { 35619 addToWishlist: 'Zu meinen Favoriten hinzufügen', 35620 createCategory: 'Neue Kategorie erstellen:', 35621 categoryPlaceholder: 'Kategoriename', 35622 createAndAdd: 'Erstellen & hinzufügen', 35623 alreadyAdded: '(Bereits hinzugefügt)', 35624 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 35625 removedFromWishlist: 'aus meinen Favoriten entfernt', 35626 allFavorites: 'Alle Favoriten' 35627 }, 35628 'fr': { 35629 addToWishlist: 'Ajouter à mes favoris', 35630 createCategory: 'Créer une nouvelle catégorie :', 35631 categoryPlaceholder: 'Nom de la catégorie', 35632 createAndAdd: 'Créer et ajouter', 35633 alreadyAdded: '(Déjà ajouté)', 35634 addedToWishlist: 'ajouté à mes favoris', 35635 removedFromWishlist: 'retiré de mes favoris', 35636 allFavorites: 'Tous les favoris' 35637 }, 35638 'it': { 35639 addToWishlist: 'Aggiungi ai preferiti', 35640 createCategory: 'Crea nuova categoria:', 35641 categoryPlaceholder: 'Nome categoria', 35642 createAndAdd: 'Crea e aggiungi', 35643 alreadyAdded: '(Già aggiunto)', 35644 addedToWishlist: 'aggiunto ai preferiti', 35645 removedFromWishlist: 'rimosso dai preferiti', 35646 allFavorites: 'Tutti i preferiti' 35647 }, 35648 'es': { 35649 addToWishlist: 'Añadir a mis favoritos', 35650 createCategory: 'Crear nueva categorÃa:', 35651 categoryPlaceholder: 'Nombre de la categorÃa', 35652 createAndAdd: 'Crear y añadir', 35653 alreadyAdded: '(Ya añadido)', 35654 addedToWishlist: 'añadido a mis favoritos', 35655 removedFromWishlist: 'eliminado de mis favoritos', 35656 allFavorites: 'Todos los favoritos' 35657 }, 35658 'nl': { 35659 addToWishlist: 'Toevoegen aan mijn favorieten', 35660 createCategory: 'Nieuwe categorie aanmaken:', 35661 categoryPlaceholder: 'Categorienaam', 35662 createAndAdd: 'Aanmaken & toevoegen', 35663 alreadyAdded: '(Al toegevoegd)', 35664 addedToWishlist: 'toegevoegd aan mijn favorieten', 35665 removedFromWishlist: 'verwijderd uit mijn favorieten', 35666 allFavorites: 'Alle favorieten' 35667 }, 35668 'pl': { 35669 addToWishlist: 'Dodaj do ulubionych', 35670 createCategory: 'Utwórz nowÄ kategoriÄ:', 35671 categoryPlaceholder: 'Nazwa kategorii', 35672 createAndAdd: 'Utwórz i dodaj', 35673 alreadyAdded: '(Już dodane)', 35674 addedToWishlist: 'dodano do ulubionych', 35675 removedFromWishlist: 'usuniÄto z ulubionych', 35676 allFavorites: 'Wszystkie ulubione' 35677 }, 35678 'hu': { 35679 addToWishlist: 'Hozzáadás a kedvencekhez', 35680 createCategory: 'Ãj kategória létrehozása:', 35681 categoryPlaceholder: 'Kategória neve', 35682 createAndAdd: 'Létrehozás és hozzáadás', 35683 alreadyAdded: '(Már hozzáadva)', 35684 addedToWishlist: 'hozzáadva a kedvencekhez', 35685 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 35686 allFavorites: 'Minden kedvenc' 35687 }, 35688 'ro': { 35689 addToWishlist: 'AdaugÄ la favorite', 35690 createCategory: 'CreeazÄ o nouÄ categorie:', 35691 categoryPlaceholder: 'Nume categorie', 35692 createAndAdd: 'CreeazÄ Èi adaugÄ', 35693 alreadyAdded: '(Deja adÄugat)', 35694 addedToWishlist: 'adÄugat la favorite', 35695 removedFromWishlist: 'eliminat din favorite', 35696 allFavorites: 'Toate preferinÈele' 35697 }, 35698 'bg': { 35699 addToWishlist: 'Ðобави в лÑбими', 35700 createCategory: 'СÑздай нова каÑегоÑиÑ:', 35701 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 35702 createAndAdd: 'СÑздай и добави', 35703 alreadyAdded: '(ÐеÑе добавено)', 35704 addedToWishlist: 'добавено в лÑбими', 35705 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 35706 allFavorites: 'ÐÑиÑки лÑбими' 35707 }, 35708 'hr': { 35709 addToWishlist: 'Dodaj u favorite', 35710 createCategory: 'Kreiraj novu kategoriju:', 35711 categoryPlaceholder: 'Naziv kategorije', 35712 createAndAdd: 'Kreiraj i dodaj', 35713 alreadyAdded: '(VeÄ dodano)', 35714 addedToWishlist: 'dodano u favorite', 35715 removedFromWishlist: 'uklonjeno iz favorita', 35716 allFavorites: 'Sva omiljena' 35717 }, 35718 'fi': { 35719 addToWishlist: 'Lisää suosikkeihin', 35720 createCategory: 'Luo uusi kategoria:', 35721 categoryPlaceholder: 'Kategorian nimi', 35722 createAndAdd: 'Luo ja lisää', 35723 alreadyAdded: '(Jo lisätty)', 35724 addedToWishlist: 'lisätty suosikkeihin', 35725 removedFromWishlist: 'poistettu suosikeista',
35726 allFavorites: 'Kaikki suosikit' 35727 }, 35728 'gr': { 35729 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 35730 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 35731 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 35732 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 35733 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 35734 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 35735 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 35736 allFavorites: 'Îλα Ïα αγαÏημÎνα' 35737 }, 35738 'no': { 35739 addToWishlist: 'Legg til i favoritter', 35740 createCategory: 'Opprett ny kategori:', 35741 categoryPlaceholder: 'Kategorinavn', 35742 createAndAdd: 'Opprett og legg til', 35743 alreadyAdded: '(Allerede lagt til)', 35744 addedToWishlist: 'lagt til i favoritter', 35745 removedFromWishlist: 'fjernet fra favoritter', 35746 allFavorites: 'Alle favoritter' 35747 }, 35748 'pt-PT': { 35749 addToWishlist: 'Adicionar aos favoritos', 35750 createCategory: 'Criar nova categoria:', 35751 categoryPlaceholder: 'Nome da categoria', 35752 createAndAdd: 'Criar e adicionar', 35753 alreadyAdded: '(Já adicionado)', 35754 addedToWishlist: 'adicionado aos favoritos', 35755 removedFromWishlist: 'removido dos favoritos', 35756 allFavorites: 'Todos os favoritos' 35757 }, 35758 'sl': { 35759 addToWishlist: 'Dodaj med priljubljene', 35760 createCategory: 'Ustvari novo kategorijo:', 35761 categoryPlaceholder: 'Ime kategorije', 35762 createAndAdd: 'Ustvari in dodaj', 35763 alreadyAdded: '(Že dodano)', 35764 addedToWishlist: 'dodano med priljubljene', 35765 removedFromWishlist: 'odstranjeno iz priljubljenih', 35766 allFavorites: 'Vsi priljubljeni' 35767 }, 35768 'sv': { 35769 addToWishlist: 'Lägg till i favoriter', 35770 createCategory: 'Skapa ny kategori:', 35771 categoryPlaceholder: 'Kategorinamn', 35772 createAndAdd: 'Skapa och lägg till', 35773 alreadyAdded: '(Redan tillagd)', 35774 addedToWishlist: 'tillagd i favoriter', 35775 removedFromWishlist: 'borttagen frÃ¥n favoriter', 35776 allFavorites: 'Alla favoriter' 35777 }, 35778 'lv': { 35779 addToWishlist: 'Pievienot favorÄ«tiem', 35780 createCategory: 'Izveidot jaunu kategoriju:', 35781 categoryPlaceholder: 'Kategorijas nosaukums', 35782 createAndAdd: 'Izveidot un pievienot', 35783 alreadyAdded: '(Jau pievienots)', 35784 addedToWishlist: 'pievienots favorÄ«tiem', 35785 removedFromWishlist: 'noÅemts no favorÄ«tiem', 35786 allFavorites: 'Visas favorÄ«tus' 35787 }, 35788 'lt': { 35789 addToWishlist: 'PridÄti į mÄgstamiausius', 35790 createCategory: 'Sukurti naujÄ kategorijÄ :', 35791 categoryPlaceholder: 'Kategorijos pavadinimas', 35792 createAndAdd: 'Sukurti ir pridÄti', 35793 alreadyAdded: '(Jau pridÄta)', 35794 addedToWishlist: 'pridÄta į mÄgstamiausius', 35795 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 35796 allFavorites: 'Visos mÄgstamiausios' 35797 }, 35798 'ee': { 35799 addToWishlist: 'Lisa lemmikutesse', 35800 createCategory: 'Loo uus kategooria:', 35801 categoryPlaceholder: 'Kategooria nimi', 35802 createAndAdd: 'Loo ja lisa', 35803 alreadyAdded: '(Juba lisatud)', 35804 addedToWishlist: 'lisatud lemmikutesse', 35805 removedFromWishlist: 'eemaldatud lemmikutest', 35806 allFavorites: 'Kõik lemmikud' 35807 }, 35808 'dk': { 35809 addToWishlist: 'Tilføj til favoritter', 35810 createCategory: 'Opret ny kategori:', 35811 categoryPlaceholder: 'Kategorinavn', 35812 createAndAdd: 'Opret og tilføj', 35813 alreadyAdded: '(Allerede tilføjet)', 35814 addedToWishlist: 'tilføjet til favoritter', 35815 removedFromWishlist: 'fjernet fra favoritter', 35816 allFavorites: 'Alle favoritter' 35817 } 35818 }; 35819 35820 function getWishlistLang() { 35821 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 35822 // Normalize for region codes (e.g., pt-PT, sl) 35823 if (lang.startsWith('pt-PT')) return 'pt-PT'; 35824 if (lang.startsWith('sl')) return 'sl'; 35825 if (lang.startsWith('cs')) return 'cs'; 35826 if (lang.startsWith('sk')) return 'sk'; 35827 if (lang.startsWith('de')) return 'de'; 35828 if (lang.startsWith('fr')) return 'fr'; 35829 if (lang.startsWith('it')) return 'it'; 35830 if (lang.startsWith('es')) return 'es'; 35831 if (lang.startsWith('nl')) return 'nl'; 35832 if (lang.startsWith('pl')) return 'pl'; 35833 if (lang.startsWith('hu')) return 'hu'; 35834 if (lang.startsWith('ro')) return 'ro'; 35835 if (lang.startsWith('bg')) return 'bg'; 35836 if (lang.startsWith('hr')) return 'hr'; 35837 if (lang.startsWith('fi')) return 'fi'; 35838 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 35839 if (lang.startsWith('no')) return 'no'; 35840 if (lang.startsWith('sv')) return 'sv'; 35841 if (lang.startsWith('lv')) return 'lv'; 35842 if (lang.startsWith('lt')) return 'lt'; 35843 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 35844 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 35845 return 'en'; 35846 } 35847 35848 // Get or initialize the wishlist array in localStorage 35849 function getWishlist() { 35850 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 35851 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 35852 categories: [ 35853 { 35854 id: 'all-favorites', 35855 name: 'All Favorites', 35856 items: [] 35857 } 35858 ], 35859 version: 2 35860 }; 35861 35862 // Handle migration from old format (array of items) to new format (categories) 35863 if (Array.isArray(wishlist)) { 35864 return { 35865 categories: [ 35866 { 35867 id: 'all-favorites', 35868 name: 'All Favorites', 35869 items: wishlist 35870 } 35871 ], 35872 version: 2 35873 }; 35874 } 35875 35876 return wishlist; 35877 } 35878 35879 // Save wishlist to localStorage 35880 function saveWishlist(wishlist) { 35881 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 35882 // Dispatch an event so other parts of the site can react to wishlist changes 35883 document.dispatchEvent(new CustomEvent('wishlist:updated', { 35884 detail: { wishlist: wishlist } 35885 })); 35886 35887 // Count total items across all categories 35888 const totalItems = wishlist.categories.reduce((total, category) => { 35889 return total + category.items.length; 35890 }, 0); 35891 35892 // Update all wishlist counters 35893 updateWishlistCounters(totalItems); 35894 } 35895 35896 // Update all wishlist counters on the page 35897 function updateWishlistCounters(count) { 35898 const counters = document.querySelectorAll('.wishlist-count');
35899 counters.forEach(counter => { 35900 counter.textContent = count; 35901 35902 // If the counter is hidden and count > 0, show it 35903 if (count > 0 && counter.hasAttribute('hidden')) { 35904 counter.removeAttribute('hidden'); 35905 } 35906 // If the counter is visible and count = 0, hide it 35907 else if (count === 0 && !counter.hasAttribute('hidden')) { 35908 counter.setAttribute('hidden', 'true'); 35909 } 35910 }); 35911 } 35912 35913 // Check if a product is in the wishlist (in any category) 35914 function isInWishlist(productId) { 35915 const wishlist = getWishlist(); 35916 return wishlist.categories.some(category => 35917 category.items.some(item => item.id === productId) 35918 ); 35919 } 35920 35921 // Get all categories 35922 function getCategories() { 35923 return getWishlist().categories; 35924 } 35925 35926 // Create a new category 35927 function createCategory(name) { 35928 const wishlist = getWishlist(); 35929 const categoryId = 'category-' + Date.now(); 35930 35931 wishlist.categories.push({ 35932 id: categoryId, 35933 name: name, 35934 items: [] 35935 }); 35936 35937 saveWishlist(wishlist); 35938 return categoryId; 35939 } 35940 35941 // Add a product to a specific category 35942 function addToCategory(product, categoryId) { 35943 const wishlist = getWishlist(); 35944 const category = wishlist.categories.find(cat => cat.id === categoryId); 35945 35946 if (!category) return false; 35947 35948 // Check if product already exists in ANY category (not just this one) 35949 if (isInWishlist(product.id)) { 35950 return false; // Product already in wishlist 35951 } 35952 35953 // Add product to category 35954 category.items.push(product); 35955 saveWishlist(wishlist); 35956 35957 // Dispatch event for global sync 35958 document.dispatchEvent(new CustomEvent('wishlist:updated', { 35959 detail: { productId: product.id, added: true } 35960 })); 35961 35962 return true; 35963 } 35964 35965 // Add a product to the default "All Favorites" category 35966 function addToWishlist(product) { 35967 return addToCategory(product, 'all-favorites'); 35968 } 35969 35970 // Remove a product from all categories 35971 function removeFromWishlist(productId) { 35972 const wishlist = getWishlist(); 35973 let removed = false; 35974 35975 wishlist.categories.forEach(category => { 35976 const initialLength = category.items.length; 35977 category.items = category.items.filter(item => item.id !== productId); 35978 if (category.items.length !== initialLength) { 35979 removed = true; 35980 } 35981 }); 35982 35983 if (removed) { 35984 saveWishlist(wishlist); 35985 } 35986 35987 return removed; 35988 } 35989 35990 // Toggle a product in the wishlist 35991 function toggleWishlistItem(product) { 35992 if (isInWishlist(product.id)) { 35993 // If already in wishlist, remove it 35994 const wasRemoved = removeFromWishlist(product.id); 35995 35996 // Update heart icon if the product was successfully removed 35997 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 35998 if (heartIcon && wasRemoved) { 35999 heartIcon.setAttribute('fill', 'none'); 36000 showWishlistToast(false, product.title); 36001 36002 // Dispatch event for global sync 36003 document.dispatchEvent(new CustomEvent('wishlist:updated', { 36004 detail: { productId: product.id, added: false } 36005 })); 36006 } 36007 return wasRemoved; 36008 } else { 36009 // If not in wishlist, show category selection popup 36010 showCategorySelectionPopup(product); 36011 return false; // Don't return true unless we actually add the product 36012 } 36013 } 36014 36015 // Show wishlist category selection popup 36016 function showCategorySelectionPopup(product) { 36017 // Remove any existing popup 36018 const existingPopup = document.getElementById('wishlist-category-popup'); 36019 if (existingPopup) { 36020 existingPopup.remove(); 36021 } 36022 36023 const lang = getWishlistLang(); 36024 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 36025 36026 // Create popup container 36027 const popup = document.createElement('div'); 36028 popup.id = 'wishlist-category-popup'; 36029 popup.className = 'wishlist-category-popup'; 36030 36031 // Create popup content 36032 const content = document.createElement('div'); 36033 content.className = 'wishlist-category-popup-content'; 36034 36035 // Create header 36036 const title = document.createElement('h2'); 36037 title.textContent = translations.addToWishlist; // Translate 36038 36039 const closeButton = document.createElement('button'); 36040 closeButton.className = 'wishlist-category-popup-close'; 36041 closeButton.setAttribute('aria-label', 'Close'); 36042 closeButton.addEventListener('click', () => { 36043 popup.remove(); 36044 }); 36045 36046 // Create category list 36047 const categoryList = document.createElement('div'); 36048 categoryList.className = 'wishlist-category-list'; 36049 36050 // Get categories 36051 const categories = getCategories(); 36052 36053 // Add category options
36054 categories.forEach(category => { 36055 const categoryOption = document.createElement('div'); 36056 categoryOption.className = 'wishlist-category-option'; 36057 36058 // Use translation for default category name 36059 categoryOption.textContent = category.id === 'all-favorites' 36060 ? (translations.allFavorites || category.name) 36061 : category.name; 36062 36063 // Highlight if product already in this category 36064 if (category.items.some(item => item.id === product.id)) { 36065 categoryOption.style.backgroundColor = '#f0f0f0'; 36066 categoryOption.style.color = '#999'; 36067 categoryOption.style.fontStyle = 'italic'; 36068 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 36069 categoryOption.style.cursor = 'default'; 36070 } else { 36071 categoryOption.addEventListener('click', () => { 36072 const wasAdded = addToCategory(product, category.id); 36073 36074 if (wasAdded) { 36075 // Update heart icon after successful addition 36076 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 36077 if (heartIcon) { 36078 heartIcon.setAttribute('fill', '#333333'); 36079 } 36080 36081 showWishlistToast(true, product.title); 36082 popup.remove(); 36083 } 36084 }); 36085 } 36086 36087 categoryList.appendChild(categoryOption); 36088 }); 36089 36090 // Create "add new category" section 36091 const newCategorySection = document.createElement('div'); 36092 newCategorySection.style.borderTop = '1px solid #eee'; 36093 newCategorySection.style.paddingTop = '15px'; 36094 newCategorySection.style.marginTop = '10px'; 36095 36096 const newCategoryLabel = document.createElement('label'); 36097 newCategoryLabel.textContent = translations.createCategory; // Translate 36098 36099 const newCategoryInput = document.createElement('input'); 36100 newCategoryInput.type = 'text'; 36101 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 36102 36103 const createButton = document.createElement('button'); 36104 createButton.className = 'create-category-button'; 36105 createButton.textContent = translations.createAndAdd; // Translate 36106 36107 createButton.addEventListener('click', () => { 36108 const categoryName = newCategoryInput.value.trim(); 36109 if (categoryName) { 36110 const categoryId = createCategory(categoryName); 36111 const wasAdded = addToCategory(product, categoryId); 36112 36113 if (wasAdded) { 36114 // Update heart icon after successful addition 36115 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 36116 if (heartIcon) { 36117 heartIcon.setAttribute('fill', '#333333'); 36118 } 36119 36120 showWishlistToast(true, product.title); 36121 popup.remove(); 36122 } 36123 } 36124 }); 36125 36126 newCategorySection.appendChild(newCategoryLabel); 36127 newCategorySection.appendChild(newCategoryInput); 36128 newCategorySection.appendChild(createButton); 36129 36130 // Assemble popup 36131 content.appendChild(title); 36132 content.appendChild(closeButton); 36133 content.appendChild(categoryList); 36134 content.appendChild(newCategorySection); 36135 popup.appendChild(content); 36136 36137 // Add to document 36138 document.body.appendChild(popup); 36139 36140 // Focus the input 36141 setTimeout(() => { 36142 newCategoryInput.focus(); 36143 }, 100); 36144 36145 // Close when clicking outside content 36146 popup.addEventListener('click', (e) => { 36147 if (e.target === popup) { 36148 popup.remove(); 36149 } 36150 }); 36151 } 36152 36153 // Show a toast notification 36154 function showWishlistToast(added, productTitle) { 36155 // Create or get toast container 36156 let toastContainer = document.getElementById('wishlist-toast'); 36157 if (!toastContainer) { 36158 toastContainer = document.createElement('div'); 36159 toastContainer.id = 'wishlist-toast'; 36160 toastContainer.style.position = 'fixed'; 36161 toastContainer.style.bottom = '20px'; 36162 toastContainer.style.right = '20px'; 36163 toastContainer.style.zIndex = '9999'; 36164 document.body.appendChild(toastContainer); 36165 } 36166 36167 // Create toast 36168 const toast = document.createElement('div'); 36169 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 36170 toast.style.color = 'white'; 36171 toast.style.padding = '12px 20px'; 36172 toast.style.borderRadius = '0'; 36173 toast.style.marginTop = '10px'; 36174 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 36175 toast.style.transition = 'all 0.3s ease'; 36176 toast.style.opacity = '0'; 36177 toast.style.fontFamily = 'Montserrat, sans-serif'; 36178 36179 // Choose text based on action 36180 const lang = getWishlistLang(); 36181 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 36182 toast.textContent = added 36183 ? `${productTitle} ${translations.addedToWishlist}` // Translate 36184 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 36185 36186 // Add to container 36187 toastContainer.appendChild(toast); 36188 36189 // Animate in 36190 setTimeout(() => { 36191 toast.style.opacity = '1'; 36192 }, 10); 36193 36194 // Animate out and remove 36195 setTimeout(() => { 36196 toast.style.opacity = '0'; 36197 setTimeout(() => { 36198 toastContainer.removeChild(toast); 36199 }, 300); 36200 }, 3000); 36201 } 36202 36203 // Initialize wishlist buttons 36204 function initCardWishlistButtons() { 36205 const wishlistButtons = document.querySelectorAll('.card-wis
36205hlist-button'); 36206 36207 wishlistButtons.forEach(button => { 36208 // Skip if already initialized 36209 if (button.dataset.initializedWishlist === 'true') return; 36210 button.dataset.initializedWishlist = 'true'; 36211 36212 const productId = button.getAttribute('data-wishlist-product'); 36213 if (!productId) return; 36214 36215 // Get product details from the card 36216 const card = button.closest('.card-wrapper'); 36217 const productDetails = { 36218 id: productId, 36219 title: card.querySelector('.card__heading')?.textContent.trim() || '', 36220 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 36221 price: card.querySelector('.price')?.textContent.trim() || '', 36222 image: card.querySelector('img')?.src || '', 36223 url: card.querySelector('a[href*="/products/"]')?.href || '' 36224 }; 36225 36226 // Set initial state using global function 36227 const heartIcon = button.querySelector('path'); 36228 if (heartIcon) { 36229 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 36230 heartIcon.setAttribute('fill', '#333333'); 36231 } else { 36232 heartIcon.setAttribute('fill', 'none'); 36233 } 36234 } 36235 36236 // Add click handler 36237 button.addEventListener('click', function(e) { 36238 e.preventDefault(); 36239 e.stopPropagation(); 36240 e.stopImmediatePropagation(); 36241 toggleWishlistItem(productDetails); 36242 }); 36243 36244 // Prevent navigation on mousedown/touchstart 36245 button.addEventListener('mousedown', function(e) { 36246 e.preventDefault(); 36247 e.stopPropagation(); 36248 }); 36249 36250 button.addEventListener('touchstart', function(e) { 36251 e.preventDefault(); 36252 e.stopPropagation(); 36253 }); 36254 }); 36255 } 36256 36257 // Initialize the wishlist counter on page load 36258 const wishlist = getWishlist(); 36259 const totalItems = wishlist.categories.reduce((total, category) => { 36260 return total + category.items.length; 36261 }, 0); 36262 updateWishlistCounters(totalItems); 36263 36264 // Initialize on DOM ready 36265 if (document.readyState === 'loading') { 36266 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 36267 } else { 36268 initCardWishlistButtons(); 36269 } 36270 36271 // Reinitialize on Shopify section load 36272 document.addEventListener('shopify:section:load', function() { 36273 setTimeout(initCardWishlistButtons, 100); 36274 }); 36275 36276 // Listen for wishlist updates from other parts of the site 36277 document.addEventListener('wishlist:updated', function() { 36278 setTimeout(initCardWishlistButtons, 100); 36279 }); 36280 })(); 36281</script>
36281 36282 36283<!-- Price info icon styles --> 36284<style> 36285 /* Price container with icon */ 36286 .price-container-with-info { 36287 position: relative; 36288 display: flex; 36289 align-items: center; 36290 gap: 8px; 36291 } 36292 36293 /* Info icon - hidden by default, shown on card hover */ 36294 .price-info-icon { 36295 position: relative; 36296 display: inline-flex; 36297 align-items: center; 36298 justify-content: center; 36299 color: #666; 36300 cursor: help; 36301 opacity: 0; 36302 transition: opacity 0.3s ease; 36303 36304 padding: 4px; /* Add padding to increase clickable area */ 36305 min-width: 20px; /* Ensure minimum clickable area */ 36306 min-height: 20px; 36307 z-index: 15; /* Above everything else including compare button */ 36308 pointer-events: auto; /* Allow interaction */ 36309 } 36310 36311 /* Show icon on card hover */ 36312 .card-wrapper:hover .price-info-icon { 36313 opacity: 1; 36314 } 36315 36316 .price-info-icon svg { 36317 width: 14px; 36318 height: 14px; 36319 stroke-width: 1.5; 36320 } 36321 36322 /* Tooltip styles */ 36323 .price-info-tooltip { 36324 position: absolute; 36325 bottom: calc(100% + 6px); 36326 top: auto; 36327 left: 0; 36328 transform: none; 36329 min-width: 310px; 36330 background: #FFFFFF; 36331 color: #232323; 36332 border: 1px solid #EEEEEE; 36333 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 36334 padding: 12px 16px; 36335 font-size: 13px; 36336 font-family: 'Montserrat', sans-serif; 36337 z-index: 10000; 36338 opacity: 0; 36339 transition: opacity 0.18s; 36340 white-space: pre-line; 36341 text-align: left; 36342 border-radius: 0; 36343 visibility: hidden; 36344 pointer-events: none; 36345 } 36346 36347 /* Show tooltip on icon hover */ 36348 .price-info-icon:hover .price-info-tooltip { 36349 visibility: visible; 36350 opacity: 1; 36351 } 36352 36353 /* Ensure tooltip is never clipped */ 36354 .price-container-with-info, 36355 .card-information, 36356 .card__content { 36357 overflow: visible !important; 36358 } 36359 36360 /* Mobile adjustments */ 36361 @media screen and (max-width: 768px) { 36362 .price-info-tooltip { 36363 min-width: 200px; 36364 font-size: 12px; 36365 padding: 10px 12px; 36366 } 36367 } 36368</style> 36369 36370 </li> 36371 <li 36372 class="grid__item" 36373 36374 > 36375 36376<div class="card-wrapper product-card-wrapper underline-links-hover"> 36377 36378 <div 36379 class=" 36380 card card--standard 36381 card--media 36382 36383 36384 36385 36386 36387 " 36388 style="--ratio-percent: 100.0%;" 36389 data-product-id="9746962612522" 36390 data-description="Lámpara de pie LED para exterior. Adecuada para iluminar carreteras y pavimentos." 36391 36392 data-ip-rate="IP54" 36393 36394 data-variant-id="52388029792554" 36395 data-price="188.00 EUR" 36396 data-compare-at-price="" 36397 data-available="true" 36398 data-barcode="8595685404400" 36399 data-ip-rate="IP54" 36400 data-lumens="477" 36401 data-power-source="" 36402 data-watt="7.0" 36403 data-kelvin="3000" 36404 data-light-color="" 36405 data-diameter="9.0" 36406 data-weight-netto="1380.0" 36407 data-weight-unit="g" 36408 data-mounting-hole-size="" 36409 data-recess-depth="" 36410 data-suspension-lenght="" 36411 data-turn-angle="" 36412 data-tilt-angle="" 36413 data-switch="" 36414 data-socket="" 36415 data-light-source-recomended="" 36416 data-height="45" 36417 data-length="" 36418 data-Length="" 36419 > 36420 <div 36421 class="card__inner color-scheme-2 gradient ratio" 36422 style="--ratio-percent: 100.0%;" 36423 > 36424 36425 36426<div class="ip-rate-badge"> 36427 <span>IP54</span> 36428 </div><div class="card__media"> 36429 <a class="card__media-link-content" href="/products/sonet-450-bollard-lamp" aria-label="SONET 450"> 36430 <div class="media media--transparent media--hover-effect"> 36431 36432 <img 36433 class="product-image motion-reduce" 36434 srcset="//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=165 165w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=360 360w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=533 533w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=720 720w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=940 940w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=1066 1066w,//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267 3162w 36435 " 36436 src="//rendl.es/cdn/shop/files/r11171-1.jpg?v=1759108267&width=533" 36437 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 36438 alt="RENDL outdoor lamp SONET 450 bollard anthracite grey 230V LED 7W 55° IP54 3000K R11171 1" 36439 36440 loading="lazy" 36441 36442 width="3162" 36443 height="3162" 36444 > 36445 36446<img 36447 class="product-image motion-reduce" 36448 srcset="//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=165 165w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=360 360w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=533 533w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=720 720w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=940 940w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=1066 1066w,//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537 4899w 36449 " 36450 src="//rendl.es/cdn/shop/files/r11171-2.jpg?v=1744159537&width=533" 36451 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 36452 alt="" 36453 loading="lazy" 36454 width="4899" 36455 height="4899" 36456 ></div> 36457 </a> 36458 36459<div class="card-media-icons"><div class="energy-label-icon"> 36460 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 36461 <div class="energy-label-tooltip">Clase energética G 36462</div> 36463 </div></div><div class="card-variant-swatches"><a 36464 class="card-variant-swatch" 36465 href="/products/sonet-450-bollard-lamp?variant=52388029792554" 36466 36467 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 36468 36469 aria-label="gris antracita" 36470 >
36471 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 36472 <div class="card__information"> 36473 <h3 36474 class="card__heading" 36475 36476 > 36477 <a 36478 href="/products/sonet-450-bollard-lamp" 36479 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746962612522" 36480 class="full-unstyled-link" 36481 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746962612522 NoMediaStandardBadge-template--28113427169578__product-grid-9746962612522" 36482 > 36483 SONET 450 36484 </a> 36485 </h3> 36486 </div> 36487 <div class="card__badge bottom left"></div> 36488 </div> 36489 </div> 36490 <div class="card__content"> 36491 <div class="card__information"> 36492 <h3 36493 class="card__heading h5" 36494 36495 id="title-template--28113427169578__product-grid-9746962612522" 36496 36497 > 36498 <a 36499 href="/products/sonet-450-bollard-lamp" 36500 id="CardLink-template--28113427169578__product-grid-9746962612522" 36501 class="full-unstyled-link" 36502 aria-labelledby="CardLink-template--28113427169578__product-grid-9746962612522 Badge-template--28113427169578__product-grid-9746962612522" 36503 > 36504 SONET 450 36505 </a> 36506 </h3><div class="card__description"> 36507 Lámpara de pie LED para exterior. Adecuada para iluminar carreteras y pavimentos. 36508 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 36509 36510<div 36511 class=" 36512 price " 36513 > 36514 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 36515 <span class="price-item price-item--regular"> 36516 188.00 EUR 36517 </span></div> 36518 <div class="price__sale"> 36519 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 36520 <span> 36521 <s class="price-item price-item--regular"> 36522 36523 36524 36525 </s> 36526 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 36527 <span class="price-item price-item--sale price-item--last"> 36528 188.00 EUR 36529 </span> 36530 </div> 36531 <small class="unit-price caption hidden"> 36532 <span class="visually-hidden">Precio unitario</span> 36533 <span class="price-item price-item--last"> 36534 <span></span> 36535 <span aria-hidden="true">/</span> 36536 <span class="visually-hidden"> por </span> 36537 <span> 36538 </span> 36539 </span> 36540 </small> 36541 </div></div> 36542 36543 36544</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 36545 <button class="compare-button-simple" 36546 data-product-id="9746962612522" 36547 data-product-title="SONET 450" 36548 data-product-handle="sonet-450-bollard-lamp"> 36549 <span class="compare-button-content"> 36550 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 36551 <span class="compare-text" data-translate="compare">compare</span> 36552 </span> 36553 <span class="compare-spinner-small"> 36554 <!-- Small spinner for button --> 36555 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 36556 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 36557 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 36558 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
36558inite"/> 36559 </path> 36560 </svg> 36561 </span> 36562 </button> 36563 36564 <!-- Wishlist button next to compare button --> 36565 <button type="button" class="card-wishlist-button" data-wishlist-product="9746962612522"> 36566 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 36567 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 36568 </svg> 36569 </button> 36570 </div></div> 36571 </div> 36572 36573 36574 36575 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746962612522" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 36576 type="hidden" 36577 name="id" 36578 value="52388029792554" 36579 class="product-variant-id" 36580 36581 > 36582 <button 36583 id="quick-add-template--28113427169578__product-grid9746962612522-submit" 36584 type="submit" 36585 name="add" 36586 class="quick-add__submit button button--full-width button--secondary" 36587 aria-haspopup="dialog" 36588 aria-labelledby="quick-add-template--28113427169578__product-grid9746962612522-submit title-template--28113427169578__product-grid-9746962612522" 36589 aria-live="polite" 36590 data-sold-out-message="true" 36591 36592 > 36593 <span>Agregar al carrito 36594</span> 36595 <span class="sold-out-message hidden"> 36596 En camino 36597 </span> 36598 36599<div class="loading__spinner hidden"> 36600 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 36601 36602</div> 36603</button><input type="hidden" name="product-id" value="9746962612522" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 36604 36605 <div class="card__badge bottom left"></div> 36606 </div> 36607 </div> 36608 </div>
36608<script> 36609 // Initialize global compare translations only once 36610 if (typeof window.compareButtonTranslations === 'undefined') { 36611 window.compareButtonTranslations = { 36612 compare: { 36613 en: 'compare', 36614 cs: 'porovnat', 36615 sk: 'porovnaÅ¥', 36616 de: 'vergleichen', 36617 at: 'vergleichen', 36618 ch: 'vergleichen', 36619 fr: 'comparer', 36620 be: 'comparer', 36621 lu: 'comparer', 36622 it: 'confronta', 36623 es: 'comparar', 36624 nl: 'vergelijken', 36625 pl: 'porównaj', 36626 hu: 'összehasonlÃt', 36627 ro: 'comparÄ', 36628 bg: 'ÑÑавни', 36629 hr: 'usporedi', 36630 fi: 'vertaile', 36631 gr: 'ÏÏγκÏιÏη', 36632 el: 'ÏÏγκÏιÏη', 36633 no: 'sammenlign', 36634 'pt-PT': 'comparar', 36635 sl: 'primerjaj', 36636 sv: 'jämför', 36637 lv: 'salÄ«dzinÄt', 36638 lt: 'palyginti', 36639 ee: 'võrdle', 36640 dk: 'sammenlign', 36641 gb: 'compare', 36642 uk: 'compare', 36643 ie: 'compare', 36644 us: 'compare', 36645 ca: 'compare', 36646 au: 'compare', 36647 nz: 'compare', 36648 ru: 'ÑÑавниÑÑ' 36649 }, 36650 remove: { 36651 en: 'remove', 36652 cs: 'odebrat', 36653 sk: 'odobraÅ¥', 36654 de: 'entfernen', 36655 at: 'entfernen', 36656 ch: 'entfernen', 36657 fr: 'supprimer', 36658 be: 'supprimer', 36659 lu: 'supprimer', 36660 it: 'rimuovi', 36661 es: 'eliminar', 36662 nl: 'verwijderen', 36663 pl: 'usuÅ', 36664 hu: 'eltávolÃt', 36665 ro: 'eliminÄ', 36666 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 36667 hr: 'ukloni', 36668 fi: 'poista', 36669 gr: 'αÏαίÏεÏη', 36670 el: 'αÏαίÏεÏη', 36671 no: 'fjern', 36672 'pt-PT': 'remover', 36673 sl: 'odstrani', 36674 sv: 'ta bort', 36675 lv: 'noÅemt', 36676 lt: 'paÅ¡alinti', 36677 ee: 'eemalda', 36678 dk: 'fjern', 36679 gb: 'remove', 36680 uk: 'remove', 36681 ie: 'remove', 36682 us: 'remove', 36683 ca: 'remove', 36684 au: 'remove', 36685 nz: 'remove', 36686 ru: 'ÑдалиÑÑ' 36687 }, 36688 added: { 36689 en: 'Added!', 36690 cs: 'PÅidáno!', 36691 sk: 'Pridané!', 36692 de: 'Hinzugefügt!', 36693 at: 'Hinzugefügt!', 36694 ch: 'Hinzugefügt!', 36695 fr: 'Ajouté!', 36696 be: 'Ajouté!', 36697 lu: 'Ajouté!', 36698 it: 'Aggiunto!', 36699 es: '¡Añadido!', 36700 nl: 'Toegevoegd!', 36701 pl: 'Dodano!', 36702 hu: 'Hozzáadva!', 36703 ro: 'AdÄugat!', 36704 bg: 'Ðобавено!', 36705 hr: 'Dodano!', 36706 fi: 'Lisätty!', 36707 gr: 'Î ÏοÏÏÎθηκε!', 36708 el: 'Î ÏοÏÏÎθηκε!', 36709 no: 'Lagt til!', 36710 'pt-PT': 'Adicionado!', 36711 sl: 'Dodano!', 36712 sv: 'Tillagd!', 36713 lv: 'Pievienots!', 36714 lt: 'PridÄta!', 36715 ee: 'Lisatud!', 36716 dk: 'Tilføjet!', 36717 gb: 'Added!', 36718 uk: 'Added!', 36719 ie: 'Added!', 36720 us: 'Added!', 36721 ca: 'Added!', 36722 au: 'Added!', 36723 nz: 'Added!', 36724 ru: 'Ðобавлено!' 36725 }, 36726 removed: { 36727 en: 'Removed!', 36728 cs: 'Odebráno!', 36729 sk: 'Odobrané!', 36730 de: 'Entfernt!', 36731 at: 'Entfernt!', 36732 ch: 'Entfernt!', 36733 fr: 'Supprimé!', 36734 be: 'Supprimé!', 36735 lu: 'Supprimé!', 36736 it: 'Rimosso!', 36737 es: '¡Eliminado!', 36738 nl: 'Verwijderd!', 36739 pl: 'UsuniÄto!', 36740 hu: 'EltávolÃtva!', 36741 ro: 'Eliminat!', 36742 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 36743 hr: 'Uklonjeno!', 36744 fi: 'Poistettu!', 36745 gr: 'ÎÏαιÏÎθηκε!', 36746 el: 'ÎÏαιÏÎθηκε!', 36747 no: 'Fjernet!', 36748 'pt-PT': 'Removido!', 36749 sl: 'Odstranjeno!', 36750 sv: 'Borttaget!', 36751 lv: 'NoÅemts!', 36752 lt: 'PaÅ¡alinta!', 36753 ee: 'Eemaldatud!', 36754 dk: 'Fjernet!', 36755 gb: 'Removed!', 36756 uk: 'Removed!', 36757 ie: 'Removed!', 36758 us: 'Removed!', 36759 ca: 'Removed!', 36760 au: 'Removed!', 36761 nz: 'Removed!', 36762 ru: 'Удалено!' 36763 } 36764 }; 36765 36766 // Tooltip translations for price info 36767 window.tooltipTranslations = { 36768 tooltipPrice: { 36769 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36770 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 36771 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 36772 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 36773 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 36774 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 36775 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 36776 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 36777 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 36778 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 36779 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 36780 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 36781 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 36782 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 36783 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 36784 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 36785 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 36786 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 36787 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 36788 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 36789 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 36790 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 36791 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 36792 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 36793 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
36793iks atskaitÄ«ts, ja piemÄrojams.", 36794 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 36795 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 36796 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 36797 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36798 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36799 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36800 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36801 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36802 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36803 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 36804 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 36805 }, 36806 tooltipOutlet: { 36807 en: "We do not provide additional wholesale discounts on outlet products.", 36808 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 36809 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 36810 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 36811 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 36812 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 36813 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 36814 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 36815 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 36816 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 36817 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 36818 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 36819 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 36820 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 36821 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 36822 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 36823 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 36824 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 36825 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 36826 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 36827 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 36828 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 36829 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 36830 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 36831 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 36832 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 36833 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 36834 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 36835 gb: "We do not provide additional wholesale discounts on outlet products.", 36836 uk: "We do not provide additional wholesale discounts on outlet products.", 36837 ie: "We do not provide additional wholesale discounts on outlet products.", 36838 us: "We do not provide additional wholesale discounts on outlet products.", 36839 ca: "We do not provide additional wholesale discounts on outlet products.", 36840 au: "We do not provide additional wholesale discounts on outlet products.", 36841 nz: "We do not provide additional wholesale discounts on outlet products.", 36842 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 36843 } 36844 }; 36845 36846 // Get current locale from document 36847 window.currentLocale = document.documentElement.lang || 'en'; 36848 36849 // Function to translate compare buttons 36850 window.translateCompareButtons = function() { 36851 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
36852 compareTexts.forEach(function(textEl) { 36853 const button = textEl.closest('.compare-button-simple'); 36854 const isInComparison = button && button.hasAttribute('data-in-comparison'); 36855 36856 if (isInComparison) { 36857 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 36858 textEl.textContent = translation; 36859 } else { 36860 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 36861 textEl.textContent = translation; 36862 } 36863 }); 36864 }; 36865 36866 // Function to format price with space as thousands separator (only for tooltip) 36867 function formatTooltipPrice(price) { 36868 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 36869 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 36870 } 36871 36872 // Function to translate tooltips with price 36873 window.translateTooltips = function() { 36874 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 36875 tooltips.forEach(function(tooltip) { 36876 const icon = tooltip.closest('.price-info-icon'); 36877 if (icon) { 36878 const status = icon.getAttribute('data-status'); 36879 // Check if this is an outlet product 36880 if (status === 'outlet') { 36881 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 36882 tooltip.textContent = translation; 36883 return; // Exit early for outlet products 36884 } 36885 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 36886 // Get wholesale price from the actual price display on the card 36887 const card = icon.closest('[data-product-id]'); 36888 let wholesalePrice = ''; 36889 if (card) { 36890 // Find the main price element on the card 36891 const priceElement = card.querySelector('.price .price-item--regular'); 36892 if (priceElement) { 36893 wholesalePrice = priceElement.textContent.trim(); 36894 } 36895 } 36896 if (retailPrice && wholesalePrice) { 36897 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 36898 let formattedRetailPrice = formatTooltipPrice(retailPrice); 36899 let formattedWholesalePrice = wholesalePrice; 36900 if (window.formatPriceText) { 36901 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 36902 } 36903 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 36904 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 36905 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 36906 tooltip.textContent = translatedText; 36907 } 36908 } 36909 }); 36910 }; 36911 36912 // Function to update button state based on comparison status 36913 window.updateCompareButtonState = function(productId, isInComparison) { 36914 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 36915 buttons.forEach(function(button) { 36916 const buttonContainer = button.closest('.compare-button-container'); 36917 const compareText = button.querySelector('.compare-text'); 36918 36919 if (isInComparison) { 36920 button.setAttribute('data-in-comparison', 'true'); 36921 button.classList.add('in-comparison'); 36922 buttonContainer.classList.add('in-comparison'); 36923 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 36924 compareText.textContent = removeText; 36925 } else { 36926 button.removeAttribute('data-in-comparison'); 36927 button.classList.remove('in-comparison'); 36928 buttonContainer.classList.remove('in-comparison'); 36929 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 36930 compareText.textContent = compareTextTranslation; 36931 } 36932 }); 36933 }; 36934 } 36935 36936 // Initialize compare button states based on localStorage 36937 window.initializeCompareButtonStates = function() {
36938 if (typeof window.RendlCompare !== 'undefined') { 36939 const compareItems = window.RendlCompare.getItems(); 36940 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 36941 const productId = button.getAttribute('data-product-id'); 36942 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 36943 window.updateCompareButtonState(productId, isInComparison); 36944 }); 36945 } 36946 }; 36947 36948 // Compare button UI animation - the actual functionality is handled by compare-system.js 36949 document.addEventListener('DOMContentLoaded', function() { 36950 // Apply translations on page load 36951 if (window.translateCompareButtons) { 36952 window.translateCompareButtons(); 36953 } 36954 36955 // Initialize button states based on comparison data 36956 setTimeout(function() { 36957 if (window.initializeCompareButtonStates) { 36958 window.initializeCompareButtonStates(); 36959 } 36960 }, 100); // Small delay to ensure compare system is loaded 36961 36962 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 36963 // Skip if already has event listener 36964 if (button.hasAttribute('data-compare-initialized')) { 36965 return; 36966 } 36967 button.setAttribute('data-compare-initialized', 'true'); 36968 36969 button.addEventListener('click', function(e) { 36970 var buttonContainer = button.closest('.compare-button-container'); 36971 var compareText = button.querySelector('.compare-text'); 36972 var isInComparison = button.hasAttribute('data-in-comparison'); 36973 var productId = button.getAttribute('data-product-id'); 36974 36975 // Prevent multiple clicks during loading 36976 if (button.classList.contains('loading')) { 36977 return; 36978 } 36979 36980 // Make button always visible during the process 36981 buttonContainer.classList.add('active'); 36982 36983 // Add loading class to show spinner 36984 button.classList.add('loading'); 36985 36986 // UI feedback timing 36987 setTimeout(function() { 36988 // Remove loading class and show success message 36989 button.classList.remove('loading'); 36990 button.classList.add('success'); 36991 36992 if (isInComparison) { 36993 // Removing from comparison 36994 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 36995 36996 // Update button state after removal 36997 setTimeout(function() { 36998 button.classList.remove('success'); 36999 window.updateCompareButtonState(productId, false); 37000 buttonContainer.classList.remove('active'); 37001 }, 1500); 37002 } else { 37003 // Adding to comparison 37004 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 37005 37006 // Update button state after addition 37007 setTimeout(function() { 37008 button.classList.remove('success'); 37009 window.updateCompareButtonState(productId, true); 37010 buttonContainer.classList.remove('active'); 37011 }, 1500); 37012 } 37013 }, 1200); 37014 }); 37015 }); 37016 37017 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 37018 setTimeout(function() { 37019 if (window.translateTooltips) { 37020 window.translateTooltips(); 37021 } 37022 }, 100); 37023 }); 37024 37025 // Ensure compare button states are initialized after RendlCompare is available 37026 document.addEventListener('DOMContentLoaded', function() { 37027 function tryInitCompareButtons() { 37028 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 37029 window.initializeCompareButtonStates(); 37030 } else { 37031 setTimeout(tryInitCompareButtons, 100); 37032 } 37033 } 37034 tryInitCompareButtons(); 37035 }); 37036 37037 // Self-contained wishlist functionality for card-product 37038 (function() { 37039 // Wishlist translations 37040 var wishlistTranslations = { 37041 'en': { 37042 addToWishlist: 'Add to My Favorites', 37043 createCategory: 'Create new category:', 37044 categoryPlaceholder: 'Category name', 37045 createAndAdd: 'Create & Add Item', 37046 alreadyAdded: '(Already added)', 37047 addedToWishlist: 'added to My Favorites', 37048 removedFromWishlist: 'removed from My Favorites', 37049 allFavorites: 'All Favorites' 37050 }, 37051 'cs': { 37052 addToWishlist: 'PÅidat do oblÃbených', 37053 createCategory: 'VytvoÅit novou skupinu:', 37054 categoryPlaceholder: 'Název nové skupiny', 37055 createAndAdd: 'VytvoÅit a pÅidat skupinu', 37056 alreadyAdded: '(Již pÅidáno)', 37057 addedToWishlist: 'pÅidáno do oblÃbených', 37058 removedFromWishlist: 'odebráno z oblÃbených', 37059 allFavorites: 'VÅ¡echny oblÃbené' 37060 }, 37061 'sk': { 37062 addToWishlist: 'PridaÅ¥ do obľúbených', 37063 createCategory: 'VytvoriÅ¥ novú kategóriu:', 37064 categoryPlaceholder: 'Názov kategórie', 37065 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 37066 alreadyAdded: '(Už pridané)', 37067 addedToWishlist: 'pridané do obľúbených', 37068 removedFromWishlist: 'odstránené z obľúbených', 37069 allFavorites: 'VÅ¡etky obľúbené' 37070 }, 37071 'de': { 37072 addToWishlist: 'Zu meinen Favoriten hinzufügen', 37073 createCategory: 'Neue Kategorie erstellen:', 37074 categoryPlaceholder: 'Kategoriename', 37075 createAndAdd: 'Erstellen & hinzufügen', 37076 alreadyAdded: '(Bereits hinzugefügt)', 37077 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 37078 removedFromWishlist: 'aus meinen Favoriten entfernt', 37079 allFavorites: 'Alle Favoriten' 37080 }, 37081 'fr': { 37082 addToWishlist: 'Ajouter à mes favoris', 37083 createCategory: 'Créer une nouvelle catégorie :', 37084 categoryPlaceholder: 'Nom de la catégorie', 37085 createAndAdd: 'Créer et ajouter', 37086 alreadyAdded: '(Déjà ajouté)', 37087 addedToWishlist: 'ajouté à mes favoris', 37088 removedFromWishlist: 'retiré de mes favoris', 37089 allFavorites: 'Tous les favoris' 37090 }, 37091 'it': { 37092 addToWishlist: 'Aggiungi ai preferiti', 37093 createCategory: 'Crea nuova categoria:', 37094 categoryPlaceholder: 'Nome categoria', 37095 createAndAdd: 'Crea e aggiungi', 37096 alreadyAdded: '(Già aggiunto)', 37097 addedToWishlist: 'aggiunto ai preferiti', 37098 removedFromWishlist: 'rimosso dai preferiti', 37099 allFavorites: 'Tutti i preferiti' 37100 }, 37101 'es': { 37102 addToWishlist: 'Añadir a mis favoritos', 37103 createCategory: 'Crear nueva categorÃa:', 37104 categoryPlaceholder: 'Nombre de la categorÃa', 37105 createAndAdd: 'Crear y añadir', 37106 alreadyAdded: '(Ya añadido)', 37107 addedToWishlist: 'añadido a mis favoritos', 37108 removedFromWishlist: 'eliminado de mis favoritos', 37109 allFavorites: 'Todos los favoritos' 37110 }, 37111 'nl': { 37112 addToWishlist: 'Toevoegen aan mijn favorieten', 37113 createCategory: 'Nieuwe categorie aanmaken:', 37114 categoryPlaceholder: 'Categorienaam', 37115 createAndAdd: 'Aanmaken & toevoegen', 37116 alreadyAdded: '(Al toegevoegd)', 37117 addedToWishlist: 'toegevoegd aan mijn favorieten', 37118 removedFromWishlist: 'verwijderd uit mijn favorieten', 37119 allFavorites: 'Alle favorieten' 37120 }, 37121 'pl': { 37122 addToWishlist: 'Dodaj do ulubionych', 37123 createCategory: 'Utwórz nowÄ kategoriÄ:', 37124 categoryPlaceholder: 'Nazwa kategorii', 37125 createAndAdd: 'Utwórz i dodaj', 37126 alreadyAdded: '(Już dodane)', 37127 addedToWishlist: 'dodano do ulubionych', 37128 removedFromWishlist: 'usuniÄto z ulubionych', 37129 allFavorites: 'Wszystkie ulubione' 37130 }, 37131 'hu': { 37132 addToWishlist: 'Hozzáadás a kedvencekhez', 37133 createCategory: 'Ãj kategória létrehozása:', 37134 categoryPlaceholder: 'Kategória neve', 37135 createAndAdd: 'Létrehozás és hozzáadás', 37136 alreadyAdded: '(Már hozzáadva)', 37137 addedToWishlist: 'hozzáadva a kedvencekhez', 37138 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 37139 allFavorites: 'Minden kedvenc' 37140 }, 37141 'ro': { 37142 addToWishlist: 'AdaugÄ la favorite', 37143 createCategory: 'CreeazÄ o nouÄ categorie:', 37144 categoryPlaceholder: 'Nume categorie', 37145 createAndAdd: 'CreeazÄ Èi adaugÄ', 37146 alreadyAdded: '(Deja adÄugat)', 37147 addedToWishlist: 'adÄugat la favorite', 37148 removedFromWishlist: 'eliminat din favorite', 37149 allFavorites: 'Toate preferinÈele' 37150 }, 37151 'bg': { 37152 addToWishlist: 'Ðобави в лÑбими', 37153 createCategory: 'СÑздай нова каÑегоÑиÑ:', 37154 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 37155 createAndAdd: 'СÑздай и добави', 37156 alreadyAdded: '(ÐеÑе добавено)', 37157 addedToWishlist: 'добавено в лÑбими', 37158 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 37159 allFavorites: 'ÐÑиÑки лÑбими' 37160 }, 37161 'hr': { 37162 addToWishlist: 'Dodaj u favorite', 37163 createCategory: 'Kreiraj novu kategoriju:', 37164 categoryPlaceholder: 'Naziv kategorije', 37165 createAndAdd: 'Kreiraj i dodaj', 37166 alreadyAdded: '(VeÄ dodano)', 37167 addedToWishlist: 'dodano u favorite', 37168 removedFromWishlist: 'uklonjeno iz favorita', 37169 allFavorites: 'Sva omiljena' 37170 }, 37171 'fi': { 37172 addToWishlist: 'Lisää suosikkeihin', 37173 createCategory: 'Luo uusi kategoria:', 37174 categoryPlaceholder: 'Kategorian nimi', 37175 createAndAdd: 'Luo ja lisää', 37176 alreadyAdded: '(Jo lisätty)', 37177 addedToWishlist: 'lisätty suosikkeihin', 37178 removedFromWishlist: 'poistettu suosikeista',
37179 allFavorites: 'Kaikki suosikit' 37180 }, 37181 'gr': { 37182 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 37183 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 37184 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 37185 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 37186 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 37187 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 37188 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 37189 allFavorites: 'Îλα Ïα αγαÏημÎνα' 37190 }, 37191 'no': { 37192 addToWishlist: 'Legg til i favoritter', 37193 createCategory: 'Opprett ny kategori:', 37194 categoryPlaceholder: 'Kategorinavn', 37195 createAndAdd: 'Opprett og legg til', 37196 alreadyAdded: '(Allerede lagt til)', 37197 addedToWishlist: 'lagt til i favoritter', 37198 removedFromWishlist: 'fjernet fra favoritter', 37199 allFavorites: 'Alle favoritter' 37200 }, 37201 'pt-PT': { 37202 addToWishlist: 'Adicionar aos favoritos', 37203 createCategory: 'Criar nova categoria:', 37204 categoryPlaceholder: 'Nome da categoria', 37205 createAndAdd: 'Criar e adicionar', 37206 alreadyAdded: '(Já adicionado)', 37207 addedToWishlist: 'adicionado aos favoritos', 37208 removedFromWishlist: 'removido dos favoritos', 37209 allFavorites: 'Todos os favoritos' 37210 }, 37211 'sl': { 37212 addToWishlist: 'Dodaj med priljubljene', 37213 createCategory: 'Ustvari novo kategorijo:', 37214 categoryPlaceholder: 'Ime kategorije', 37215 createAndAdd: 'Ustvari in dodaj', 37216 alreadyAdded: '(Že dodano)', 37217 addedToWishlist: 'dodano med priljubljene', 37218 removedFromWishlist: 'odstranjeno iz priljubljenih', 37219 allFavorites: 'Vsi priljubljeni' 37220 }, 37221 'sv': { 37222 addToWishlist: 'Lägg till i favoriter', 37223 createCategory: 'Skapa ny kategori:', 37224 categoryPlaceholder: 'Kategorinamn', 37225 createAndAdd: 'Skapa och lägg till', 37226 alreadyAdded: '(Redan tillagd)', 37227 addedToWishlist: 'tillagd i favoriter', 37228 removedFromWishlist: 'borttagen frÃ¥n favoriter', 37229 allFavorites: 'Alla favoriter' 37230 }, 37231 'lv': { 37232 addToWishlist: 'Pievienot favorÄ«tiem', 37233 createCategory: 'Izveidot jaunu kategoriju:', 37234 categoryPlaceholder: 'Kategorijas nosaukums', 37235 createAndAdd: 'Izveidot un pievienot', 37236 alreadyAdded: '(Jau pievienots)', 37237 addedToWishlist: 'pievienots favorÄ«tiem', 37238 removedFromWishlist: 'noÅemts no favorÄ«tiem', 37239 allFavorites: 'Visas favorÄ«tus' 37240 }, 37241 'lt': { 37242 addToWishlist: 'PridÄti į mÄgstamiausius', 37243 createCategory: 'Sukurti naujÄ kategorijÄ :', 37244 categoryPlaceholder: 'Kategorijos pavadinimas', 37245 createAndAdd: 'Sukurti ir pridÄti', 37246 alreadyAdded: '(Jau pridÄta)', 37247 addedToWishlist: 'pridÄta į mÄgstamiausius', 37248 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 37249 allFavorites: 'Visos mÄgstamiausios' 37250 }, 37251 'ee': { 37252 addToWishlist: 'Lisa lemmikutesse', 37253 createCategory: 'Loo uus kategooria:', 37254 categoryPlaceholder: 'Kategooria nimi', 37255 createAndAdd: 'Loo ja lisa', 37256 alreadyAdded: '(Juba lisatud)', 37257 addedToWishlist: 'lisatud lemmikutesse', 37258 removedFromWishlist: 'eemaldatud lemmikutest', 37259 allFavorites: 'Kõik lemmikud' 37260 }, 37261 'dk': { 37262 addToWishlist: 'Tilføj til favoritter', 37263 createCategory: 'Opret ny kategori:', 37264 categoryPlaceholder: 'Kategorinavn', 37265 createAndAdd: 'Opret og tilføj', 37266 alreadyAdded: '(Allerede tilføjet)', 37267 addedToWishlist: 'tilføjet til favoritter', 37268 removedFromWishlist: 'fjernet fra favoritter', 37269 allFavorites: 'Alle favoritter' 37270 } 37271 }; 37272 37273 function getWishlistLang() { 37274 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 37275 // Normalize for region codes (e.g., pt-PT, sl) 37276 if (lang.startsWith('pt-PT')) return 'pt-PT'; 37277 if (lang.startsWith('sl')) return 'sl'; 37278 if (lang.startsWith('cs')) return 'cs'; 37279 if (lang.startsWith('sk')) return 'sk'; 37280 if (lang.startsWith('de')) return 'de'; 37281 if (lang.startsWith('fr')) return 'fr'; 37282 if (lang.startsWith('it')) return 'it'; 37283 if (lang.startsWith('es')) return 'es'; 37284 if (lang.startsWith('nl')) return 'nl'; 37285 if (lang.startsWith('pl')) return 'pl'; 37286 if (lang.startsWith('hu')) return 'hu'; 37287 if (lang.startsWith('ro')) return 'ro'; 37288 if (lang.startsWith('bg')) return 'bg'; 37289 if (lang.startsWith('hr')) return 'hr'; 37290 if (lang.startsWith('fi')) return 'fi'; 37291 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 37292 if (lang.startsWith('no')) return 'no'; 37293 if (lang.startsWith('sv')) return 'sv'; 37294 if (lang.startsWith('lv')) return 'lv'; 37295 if (lang.startsWith('lt')) return 'lt'; 37296 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 37297 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 37298 return 'en'; 37299 } 37300 37301 // Get or initialize the wishlist array in localStorage 37302 function getWishlist() { 37303 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 37304 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 37305 categories: [ 37306 { 37307 id: 'all-favorites', 37308 name: 'All Favorites', 37309 items: [] 37310 } 37311 ], 37312 version: 2 37313 }; 37314 37315 // Handle migration from old format (array of items) to new format (categories) 37316 if (Array.isArray(wishlist)) { 37317 return { 37318 categories: [ 37319 { 37320 id: 'all-favorites', 37321 name: 'All Favorites', 37322 items: wishlist 37323 } 37324 ], 37325 version: 2 37326 }; 37327 } 37328 37329 return wishlist; 37330 } 37331 37332 // Save wishlist to localStorage 37333 function saveWishlist(wishlist) { 37334 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 37335 // Dispatch an event so other parts of the site can react to wishlist changes 37336 document.dispatchEvent(new CustomEvent('wishlist:updated', { 37337 detail: { wishlist: wishlist } 37338 })); 37339 37340 // Count total items across all categories 37341 const totalItems = wishlist.categories.reduce((total, category) => { 37342 return total + category.items.length; 37343 }, 0); 37344 37345 // Update all wishlist counters 37346 updateWishlistCounters(totalItems); 37347 } 37348 37349 // Update all wishlist counters on the page 37350 function updateWishlistCounters(count) { 37351 const counters = document.querySelectorAll('.wishlist-count');
37352 counters.forEach(counter => { 37353 counter.textContent = count; 37354 37355 // If the counter is hidden and count > 0, show it 37356 if (count > 0 && counter.hasAttribute('hidden')) { 37357 counter.removeAttribute('hidden'); 37358 } 37359 // If the counter is visible and count = 0, hide it 37360 else if (count === 0 && !counter.hasAttribute('hidden')) { 37361 counter.setAttribute('hidden', 'true'); 37362 } 37363 }); 37364 } 37365 37366 // Check if a product is in the wishlist (in any category) 37367 function isInWishlist(productId) { 37368 const wishlist = getWishlist(); 37369 return wishlist.categories.some(category => 37370 category.items.some(item => item.id === productId) 37371 ); 37372 } 37373 37374 // Get all categories 37375 function getCategories() { 37376 return getWishlist().categories; 37377 } 37378 37379 // Create a new category 37380 function createCategory(name) { 37381 const wishlist = getWishlist(); 37382 const categoryId = 'category-' + Date.now(); 37383 37384 wishlist.categories.push({ 37385 id: categoryId, 37386 name: name, 37387 items: [] 37388 }); 37389 37390 saveWishlist(wishlist); 37391 return categoryId; 37392 } 37393 37394 // Add a product to a specific category 37395 function addToCategory(product, categoryId) { 37396 const wishlist = getWishlist(); 37397 const category = wishlist.categories.find(cat => cat.id === categoryId); 37398 37399 if (!category) return false; 37400 37401 // Check if product already exists in ANY category (not just this one) 37402 if (isInWishlist(product.id)) { 37403 return false; // Product already in wishlist 37404 } 37405 37406 // Add product to category 37407 category.items.push(product); 37408 saveWishlist(wishlist); 37409 37410 // Dispatch event for global sync 37411 document.dispatchEvent(new CustomEvent('wishlist:updated', { 37412 detail: { productId: product.id, added: true } 37413 })); 37414 37415 return true; 37416 } 37417 37418 // Add a product to the default "All Favorites" category 37419 function addToWishlist(product) { 37420 return addToCategory(product, 'all-favorites'); 37421 } 37422 37423 // Remove a product from all categories 37424 function removeFromWishlist(productId) { 37425 const wishlist = getWishlist(); 37426 let removed = false; 37427 37428 wishlist.categories.forEach(category => { 37429 const initialLength = category.items.length; 37430 category.items = category.items.filter(item => item.id !== productId); 37431 if (category.items.length !== initialLength) { 37432 removed = true; 37433 } 37434 }); 37435 37436 if (removed) { 37437 saveWishlist(wishlist); 37438 } 37439 37440 return removed; 37441 } 37442 37443 // Toggle a product in the wishlist 37444 function toggleWishlistItem(product) { 37445 if (isInWishlist(product.id)) { 37446 // If already in wishlist, remove it 37447 const wasRemoved = removeFromWishlist(product.id); 37448 37449 // Update heart icon if the product was successfully removed 37450 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 37451 if (heartIcon && wasRemoved) { 37452 heartIcon.setAttribute('fill', 'none'); 37453 showWishlistToast(false, product.title); 37454 37455 // Dispatch event for global sync 37456 document.dispatchEvent(new CustomEvent('wishlist:updated', { 37457 detail: { productId: product.id, added: false } 37458 })); 37459 } 37460 return wasRemoved; 37461 } else { 37462 // If not in wishlist, show category selection popup 37463 showCategorySelectionPopup(product); 37464 return false; // Don't return true unless we actually add the product 37465 } 37466 } 37467 37468 // Show wishlist category selection popup 37469 function showCategorySelectionPopup(product) { 37470 // Remove any existing popup 37471 const existingPopup = document.getElementById('wishlist-category-popup'); 37472 if (existingPopup) { 37473 existingPopup.remove(); 37474 } 37475 37476 const lang = getWishlistLang(); 37477 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 37478 37479 // Create popup container 37480 const popup = document.createElement('div'); 37481 popup.id = 'wishlist-category-popup'; 37482 popup.className = 'wishlist-category-popup'; 37483 37484 // Create popup content 37485 const content = document.createElement('div'); 37486 content.className = 'wishlist-category-popup-content'; 37487 37488 // Create header 37489 const title = document.createElement('h2'); 37490 title.textContent = translations.addToWishlist; // Translate 37491 37492 const closeButton = document.createElement('button'); 37493 closeButton.className = 'wishlist-category-popup-close'; 37494 closeButton.setAttribute('aria-label', 'Close'); 37495 closeButton.addEventListener('click', () => { 37496 popup.remove(); 37497 }); 37498 37499 // Create category list 37500 const categoryList = document.createElement('div'); 37501 categoryList.className = 'wishlist-category-list'; 37502 37503 // Get categories 37504 const categories = getCategories(); 37505 37506 // Add category options
37507 categories.forEach(category => { 37508 const categoryOption = document.createElement('div'); 37509 categoryOption.className = 'wishlist-category-option'; 37510 37511 // Use translation for default category name 37512 categoryOption.textContent = category.id === 'all-favorites' 37513 ? (translations.allFavorites || category.name) 37514 : category.name; 37515 37516 // Highlight if product already in this category 37517 if (category.items.some(item => item.id === product.id)) { 37518 categoryOption.style.backgroundColor = '#f0f0f0'; 37519 categoryOption.style.color = '#999'; 37520 categoryOption.style.fontStyle = 'italic'; 37521 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 37522 categoryOption.style.cursor = 'default'; 37523 } else { 37524 categoryOption.addEventListener('click', () => { 37525 const wasAdded = addToCategory(product, category.id); 37526 37527 if (wasAdded) { 37528 // Update heart icon after successful addition 37529 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 37530 if (heartIcon) { 37531 heartIcon.setAttribute('fill', '#333333'); 37532 } 37533 37534 showWishlistToast(true, product.title); 37535 popup.remove(); 37536 } 37537 }); 37538 } 37539 37540 categoryList.appendChild(categoryOption); 37541 }); 37542 37543 // Create "add new category" section 37544 const newCategorySection = document.createElement('div'); 37545 newCategorySection.style.borderTop = '1px solid #eee'; 37546 newCategorySection.style.paddingTop = '15px'; 37547 newCategorySection.style.marginTop = '10px'; 37548 37549 const newCategoryLabel = document.createElement('label'); 37550 newCategoryLabel.textContent = translations.createCategory; // Translate 37551 37552 const newCategoryInput = document.createElement('input'); 37553 newCategoryInput.type = 'text'; 37554 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 37555 37556 const createButton = document.createElement('button'); 37557 createButton.className = 'create-category-button'; 37558 createButton.textContent = translations.createAndAdd; // Translate 37559 37560 createButton.addEventListener('click', () => { 37561 const categoryName = newCategoryInput.value.trim(); 37562 if (categoryName) { 37563 const categoryId = createCategory(categoryName); 37564 const wasAdded = addToCategory(product, categoryId); 37565 37566 if (wasAdded) { 37567 // Update heart icon after successful addition 37568 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 37569 if (heartIcon) { 37570 heartIcon.setAttribute('fill', '#333333'); 37571 } 37572 37573 showWishlistToast(true, product.title); 37574 popup.remove(); 37575 } 37576 } 37577 }); 37578 37579 newCategorySection.appendChild(newCategoryLabel); 37580 newCategorySection.appendChild(newCategoryInput); 37581 newCategorySection.appendChild(createButton); 37582 37583 // Assemble popup 37584 content.appendChild(title); 37585 content.appendChild(closeButton); 37586 content.appendChild(categoryList); 37587 content.appendChild(newCategorySection); 37588 popup.appendChild(content); 37589 37590 // Add to document 37591 document.body.appendChild(popup); 37592 37593 // Focus the input 37594 setTimeout(() => { 37595 newCategoryInput.focus(); 37596 }, 100); 37597 37598 // Close when clicking outside content 37599 popup.addEventListener('click', (e) => { 37600 if (e.target === popup) { 37601 popup.remove(); 37602 } 37603 }); 37604 } 37605 37606 // Show a toast notification 37607 function showWishlistToast(added, productTitle) { 37608 // Create or get toast container 37609 let toastContainer = document.getElementById('wishlist-toast'); 37610 if (!toastContainer) { 37611 toastContainer = document.createElement('div'); 37612 toastContainer.id = 'wishlist-toast'; 37613 toastContainer.style.position = 'fixed'; 37614 toastContainer.style.bottom = '20px'; 37615 toastContainer.style.right = '20px'; 37616 toastContainer.style.zIndex = '9999'; 37617 document.body.appendChild(toastContainer); 37618 } 37619 37620 // Create toast 37621 const toast = document.createElement('div'); 37622 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 37623 toast.style.color = 'white'; 37624 toast.style.padding = '12px 20px'; 37625 toast.style.borderRadius = '0'; 37626 toast.style.marginTop = '10px'; 37627 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 37628 toast.style.transition = 'all 0.3s ease'; 37629 toast.style.opacity = '0'; 37630 toast.style.fontFamily = 'Montserrat, sans-serif'; 37631 37632 // Choose text based on action 37633 const lang = getWishlistLang(); 37634 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 37635 toast.textContent = added 37636 ? `${productTitle} ${translations.addedToWishlist}` // Translate 37637 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 37638 37639 // Add to container 37640 toastContainer.appendChild(toast); 37641 37642 // Animate in 37643 setTimeout(() => { 37644 toast.style.opacity = '1'; 37645 }, 10); 37646 37647 // Animate out and remove 37648 setTimeout(() => { 37649 toast.style.opacity = '0'; 37650 setTimeout(() => { 37651 toastContainer.removeChild(toast); 37652 }, 300); 37653 }, 3000); 37654 } 37655 37656 // Initialize wishlist buttons 37657 function initCardWishlistButtons() { 37658 const wishlistButtons = document.querySelectorAll('.card-wis
37658hlist-button'); 37659 37660 wishlistButtons.forEach(button => { 37661 // Skip if already initialized 37662 if (button.dataset.initializedWishlist === 'true') return; 37663 button.dataset.initializedWishlist = 'true'; 37664 37665 const productId = button.getAttribute('data-wishlist-product'); 37666 if (!productId) return; 37667 37668 // Get product details from the card 37669 const card = button.closest('.card-wrapper'); 37670 const productDetails = { 37671 id: productId, 37672 title: card.querySelector('.card__heading')?.textContent.trim() || '', 37673 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 37674 price: card.querySelector('.price')?.textContent.trim() || '', 37675 image: card.querySelector('img')?.src || '', 37676 url: card.querySelector('a[href*="/products/"]')?.href || '' 37677 }; 37678 37679 // Set initial state using global function 37680 const heartIcon = button.querySelector('path'); 37681 if (heartIcon) { 37682 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 37683 heartIcon.setAttribute('fill', '#333333'); 37684 } else { 37685 heartIcon.setAttribute('fill', 'none'); 37686 } 37687 } 37688 37689 // Add click handler 37690 button.addEventListener('click', function(e) { 37691 e.preventDefault(); 37692 e.stopPropagation(); 37693 e.stopImmediatePropagation(); 37694 toggleWishlistItem(productDetails); 37695 }); 37696 37697 // Prevent navigation on mousedown/touchstart 37698 button.addEventListener('mousedown', function(e) { 37699 e.preventDefault(); 37700 e.stopPropagation(); 37701 }); 37702 37703 button.addEventListener('touchstart', function(e) { 37704 e.preventDefault(); 37705 e.stopPropagation(); 37706 }); 37707 }); 37708 } 37709 37710 // Initialize the wishlist counter on page load 37711 const wishlist = getWishlist(); 37712 const totalItems = wishlist.categories.reduce((total, category) => { 37713 return total + category.items.length; 37714 }, 0); 37715 updateWishlistCounters(totalItems); 37716 37717 // Initialize on DOM ready 37718 if (document.readyState === 'loading') { 37719 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 37720 } else { 37721 initCardWishlistButtons(); 37722 } 37723 37724 // Reinitialize on Shopify section load 37725 document.addEventListener('shopify:section:load', function() { 37726 setTimeout(initCardWishlistButtons, 100); 37727 }); 37728 37729 // Listen for wishlist updates from other parts of the site 37730 document.addEventListener('wishlist:updated', function() { 37731 setTimeout(initCardWishlistButtons, 100); 37732 }); 37733 })(); 37734</script>
37734 37735 37736<!-- Price info icon styles --> 37737<style> 37738 /* Price container with icon */ 37739 .price-container-with-info { 37740 position: relative; 37741 display: flex; 37742 align-items: center; 37743 gap: 8px; 37744 } 37745 37746 /* Info icon - hidden by default, shown on card hover */ 37747 .price-info-icon { 37748 position: relative; 37749 display: inline-flex; 37750 align-items: center; 37751 justify-content: center; 37752 color: #666; 37753 cursor: help; 37754 opacity: 0; 37755 transition: opacity 0.3s ease; 37756 37757 padding: 4px; /* Add padding to increase clickable area */ 37758 min-width: 20px; /* Ensure minimum clickable area */ 37759 min-height: 20px; 37760 z-index: 15; /* Above everything else including compare button */ 37761 pointer-events: auto; /* Allow interaction */ 37762 } 37763 37764 /* Show icon on card hover */ 37765 .card-wrapper:hover .price-info-icon { 37766 opacity: 1; 37767 } 37768 37769 .price-info-icon svg { 37770 width: 14px; 37771 height: 14px; 37772 stroke-width: 1.5; 37773 } 37774 37775 /* Tooltip styles */ 37776 .price-info-tooltip { 37777 position: absolute; 37778 bottom: calc(100% + 6px); 37779 top: auto; 37780 left: 0; 37781 transform: none; 37782 min-width: 310px; 37783 background: #FFFFFF; 37784 color: #232323; 37785 border: 1px solid #EEEEEE; 37786 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 37787 padding: 12px 16px; 37788 font-size: 13px; 37789 font-family: 'Montserrat', sans-serif; 37790 z-index: 10000; 37791 opacity: 0; 37792 transition: opacity 0.18s; 37793 white-space: pre-line; 37794 text-align: left; 37795 border-radius: 0; 37796 visibility: hidden; 37797 pointer-events: none; 37798 } 37799 37800 /* Show tooltip on icon hover */ 37801 .price-info-icon:hover .price-info-tooltip { 37802 visibility: visible; 37803 opacity: 1; 37804 } 37805 37806 /* Ensure tooltip is never clipped */ 37807 .price-container-with-info, 37808 .card-information, 37809 .card__content { 37810 overflow: visible !important; 37811 } 37812 37813 /* Mobile adjustments */ 37814 @media screen and (max-width: 768px) { 37815 .price-info-tooltip { 37816 min-width: 200px; 37817 font-size: 12px; 37818 padding: 10px 12px; 37819 } 37820 } 37821</style> 37822 37823 </li> 37824 <li 37825 class="grid__item" 37826 37827 > 37828 37829<div class="card-wrapper product-card-wrapper underline-links-hover"> 37830 37831 <div 37832 class=" 37833 card card--standard 37834 card--media 37835 37836 37837 37838 37839 37840 " 37841 style="--ratio-percent: 100.0%;" 37842 data-product-id="9746991218986" 37843 data-description="Bolardo exterior de gran tamaño con decoración de madera en sus lados. Este bolardo está diseña
37843do para fuentes LED lineales con base R7s de 78 mm, ..." 37844 data-status-in-sortiment="NEW" 37845 data-ip-rate="IP65" 37846 37847 data-variant-id="52388164862250" 37848 data-price="229.00 EUR" 37849 data-compare-at-price="" 37850 data-available="true" 37851 data-barcode="8595685429182" 37852 data-ip-rate="IP65" 37853 data-lumens="" 37854 data-power-source="" 37855 data-watt="7.0" 37856 data-kelvin="" 37857 data-light-color="" 37858 data-diameter="" 37859 data-weight-netto="3570.0" 37860 data-weight-unit="g" 37861 data-mounting-hole-size="" 37862 data-recess-depth="" 37863 data-suspension-lenght="" 37864 data-turn-angle="" 37865 data-tilt-angle="" 37866 data-switch="" 37867 data-socket="LED R7s 78mm" 37868 data-light-source-recomended="G13575" 37869 data-height="30" 37870 data-length="17.5" 37871 data-Length="" 37872 > 37873 <div 37874 class="card__inner color-scheme-2 gradient ratio" 37875 style="--ratio-percent: 100.0%;" 37876 > 37877 37878<div class="product-status-badge status-NEW"> 37879 <span>NEW</span> 37880 </div> 37881<div class="ip-rate-badge"> 37882 <span>IP65</span> 37883 </div><div class="card__media"> 37884 <a class="card__media-link-content" href="/products/king-30-floor-lamp" aria-label="KING 30"> 37885 <div class="media media--transparent media--hover-effect"> 37886 37887 <img 37888 class="product-image motion-reduce" 37889 srcset="//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=165 165w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=360 360w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=533 533w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=720 720w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=940 940w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=1066 1066w,//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117 3162w 37890 " 37891 src="//rendl.es/cdn/shop/files/r14174-1.jpg?v=1776755117&width=533" 37892 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 37893 alt="RENDL outdoor lamp KING 30 floor anthracite grey 230V LED R7s 78mm 7W IP65 R14174 1" 37894 37895 loading="lazy" 37896 37897 width="3162" 37898 height="3162" 37899 > 37900 37901<img 37902 class="product-image motion-reduce" 37903 srcset="//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=165 165w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=360 360w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=533 533w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=720 720w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=940 940w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=1066 1066w,//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942 3162w 37904 " 37905 src="//rendl.es/cdn/shop/files/r14174-3.jpg?v=1783739942&width=533" 37906 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 37907 alt="" 37908 loading="lazy" 37909 width="3162" 37910 height="3162" 37911 ></div> 37912 </a> 37913 37914<div class="card-variant-swatches"><a 37915 class="card-variant-swatch" 37916 href="/products/king-30-floor-lamp?variant=52388164862250" 37917 37918 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 37919 37920 aria-label="gris antracita" 37921 > 37922 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 37923 <div class="card__information"> 37924 <h3 37925 class="card__heading" 37926 37927 > 37928 <a 37929 href="/products/king-30-floor-lamp" 37930 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991218986" 37931 class="full-unstyled-link" 37932 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746991218986 NoMediaStandardBadge-template--28113427169578__product-grid-9746991218986" 37933 > 37934 KING 30 37935 </a> 37936 </h3> 37937 </div> 37938 <div class="card__badge bottom left"></div> 37939 </div> 37940 </div> 37941 <div class="card__content"> 37942 <div class="card__information"> 37943 <h3 37944 class="card__heading h5" 37945 37946 id="title-template--28113427169578__product-grid-9746991218986" 37947 37948 > 37949 <a 37950 href="/products/king-30-floor-lamp" 37951 id="CardLink-template--28113427169578__product-grid-9746991218986" 37952 class="full-unstyled-link" 37953 aria-labelledby="CardLink-template--28113427169578__product-grid-9746991218986 Badge-template--28113427169578__product-grid-9746991218986" 37954 > 37955 KING 30 37956 </a> 37957 </h3><div class="card__description"> 37958 Bolardo exterior de gran tamaño con decoración de madera en sus lados. Este bolardo está diseña
37958do para fuentes LED lineales con base R7s de 78 mm, admitiendo diámetros de hasta 20 mm. 37959 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 37960 37961<div 37962 class=" 37963 price " 37964 > 37965 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 37966 <span class="price-item price-item--regular"> 37967 229.00 EUR 37968 </span></div> 37969 <div class="price__sale"> 37970 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 37971 <span> 37972 <s class="price-item price-item--regular"> 37973 37974 37975 37976 </s> 37977 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 37978 <span class="price-item price-item--sale price-item--last"> 37979 229.00 EUR 37980 </span> 37981 </div> 37982 <small class="unit-price caption hidden"> 37983 <span class="visually-hidden">Precio unitario</span> 37984 <span class="price-item price-item--last"> 37985 <span></span> 37986 <span aria-hidden="true">/</span> 37987 <span class="visually-hidden"> por </span> 37988 <span> 37989 </span> 37990 </span> 37991 </small> 37992 </div></div> 37993 37994 37995</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 37996 <button class="compare-button-simple" 37997 data-product-id="9746991218986" 37998 data-product-title="KING 30" 37999 data-product-handle="king-30-floor-lamp"> 38000 <span class="compare-button-content"> 38001 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 38002 <span class="compare-text" data-translate="compare">compare</span> 38003 </span> 38004 <span class="compare-spinner-small"> 38005 <!-- Small spinner for button --> 38006 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 38007 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 38008 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 38009 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indefinite"/> 38010 </path> 38011 </svg> 38012 </span> 38013 </button> 38014 38015 <!-- Wishlist button next to compare button --> 38016 <button type="button" class="card-wishlist-button" data-wishlist-product="9746991218986"> 38017 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 38018 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 38019 </svg> 38020 </button> 38021 </div></div> 38022 </div> 38023 38024 38025 38026 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746991218986" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 38027 type="hidden" 38028 name="id" 38029 value="52388164862250" 38030 class="product-variant-id" 38031 38032 > 38033 <button 38034 id="quick-add-template--28113427169578__product-grid9746991218986-submit" 38035 type="submit" 38036 name="add" 38037 class="quick-add__submit button button--full-width button--secondary" 38038 aria-haspopup="dialog" 38039 aria-labelledby="quick-add-template--28113427169578__product-grid9746991218986-submit title-template--28113427169578__product-grid-9746991218986"
38040 aria-live="polite" 38041 data-sold-out-message="true" 38042 38043 > 38044 <span>Agregar al carrito 38045</span> 38046 <span class="sold-out-message hidden"> 38047 En camino 38048 </span> 38049 38050<div class="loading__spinner hidden"> 38051 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 38052 38053</div> 38054</button><input type="hidden" name="product-id" value="9746991218986" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 38055 38056 <div class="card__badge bottom left"></div> 38057 </div> 38058 </div> 38059 </div>
38059<script> 38060 // Initialize global compare translations only once 38061 if (typeof window.compareButtonTranslations === 'undefined') { 38062 window.compareButtonTranslations = { 38063 compare: { 38064 en: 'compare', 38065 cs: 'porovnat', 38066 sk: 'porovnaÅ¥', 38067 de: 'vergleichen', 38068 at: 'vergleichen', 38069 ch: 'vergleichen', 38070 fr: 'comparer', 38071 be: 'comparer', 38072 lu: 'comparer', 38073 it: 'confronta', 38074 es: 'comparar', 38075 nl: 'vergelijken', 38076 pl: 'porównaj', 38077 hu: 'összehasonlÃt', 38078 ro: 'comparÄ', 38079 bg: 'ÑÑавни', 38080 hr: 'usporedi', 38081 fi: 'vertaile', 38082 gr: 'ÏÏγκÏιÏη', 38083 el: 'ÏÏγκÏιÏη', 38084 no: 'sammenlign', 38085 'pt-PT': 'comparar', 38086 sl: 'primerjaj', 38087 sv: 'jämför', 38088 lv: 'salÄ«dzinÄt', 38089 lt: 'palyginti', 38090 ee: 'võrdle', 38091 dk: 'sammenlign', 38092 gb: 'compare', 38093 uk: 'compare', 38094 ie: 'compare', 38095 us: 'compare', 38096 ca: 'compare', 38097 au: 'compare', 38098 nz: 'compare', 38099 ru: 'ÑÑавниÑÑ' 38100 }, 38101 remove: { 38102 en: 'remove', 38103 cs: 'odebrat', 38104 sk: 'odobraÅ¥', 38105 de: 'entfernen', 38106 at: 'entfernen', 38107 ch: 'entfernen', 38108 fr: 'supprimer', 38109 be: 'supprimer', 38110 lu: 'supprimer', 38111 it: 'rimuovi', 38112 es: 'eliminar', 38113 nl: 'verwijderen', 38114 pl: 'usuÅ', 38115 hu: 'eltávolÃt', 38116 ro: 'eliminÄ', 38117 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 38118 hr: 'ukloni', 38119 fi: 'poista', 38120 gr: 'αÏαίÏεÏη', 38121 el: 'αÏαίÏεÏη', 38122 no: 'fjern', 38123 'pt-PT': 'remover', 38124 sl: 'odstrani', 38125 sv: 'ta bort', 38126 lv: 'noÅemt', 38127 lt: 'paÅ¡alinti', 38128 ee: 'eemalda', 38129 dk: 'fjern', 38130 gb: 'remove', 38131 uk: 'remove', 38132 ie: 'remove', 38133 us: 'remove', 38134 ca: 'remove', 38135 au: 'remove', 38136 nz: 'remove', 38137 ru: 'ÑдалиÑÑ' 38138 }, 38139 added: { 38140 en: 'Added!', 38141 cs: 'PÅidáno!', 38142 sk: 'Pridané!', 38143 de: 'Hinzugefügt!', 38144 at: 'Hinzugefügt!', 38145 ch: 'Hinzugefügt!', 38146 fr: 'Ajouté!', 38147 be: 'Ajouté!', 38148 lu: 'Ajouté!', 38149 it: 'Aggiunto!', 38150 es: '¡Añadido!', 38151 nl: 'Toegevoegd!', 38152 pl: 'Dodano!', 38153 hu: 'Hozzáadva!', 38154 ro: 'AdÄugat!', 38155 bg: 'Ðобавено!', 38156 hr: 'Dodano!', 38157 fi: 'Lisätty!', 38158 gr: 'Î ÏοÏÏÎθηκε!', 38159 el: 'Î ÏοÏÏÎθηκε!', 38160 no: 'Lagt til!', 38161 'pt-PT': 'Adicionado!', 38162 sl: 'Dodano!', 38163 sv: 'Tillagd!', 38164 lv: 'Pievienots!', 38165 lt: 'PridÄta!', 38166 ee: 'Lisatud!', 38167 dk: 'Tilføjet!', 38168 gb: 'Added!', 38169 uk: 'Added!', 38170 ie: 'Added!', 38171 us: 'Added!', 38172 ca: 'Added!', 38173 au: 'Added!', 38174 nz: 'Added!', 38175 ru: 'Ðобавлено!' 38176 }, 38177 removed: { 38178 en: 'Removed!', 38179 cs: 'Odebráno!', 38180 sk: 'Odobrané!', 38181 de: 'Entfernt!', 38182 at: 'Entfernt!', 38183 ch: 'Entfernt!', 38184 fr: 'Supprimé!', 38185 be: 'Supprimé!', 38186 lu: 'Supprimé!', 38187 it: 'Rimosso!', 38188 es: '¡Eliminado!', 38189 nl: 'Verwijderd!', 38190 pl: 'UsuniÄto!', 38191 hu: 'EltávolÃtva!', 38192 ro: 'Eliminat!', 38193 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 38194 hr: 'Uklonjeno!', 38195 fi: 'Poistettu!', 38196 gr: 'ÎÏαιÏÎθηκε!', 38197 el: 'ÎÏαιÏÎθηκε!', 38198 no: 'Fjernet!', 38199 'pt-PT': 'Removido!', 38200 sl: 'Odstranjeno!', 38201 sv: 'Borttaget!', 38202 lv: 'NoÅemts!', 38203 lt: 'PaÅ¡alinta!', 38204 ee: 'Eemaldatud!', 38205 dk: 'Fjernet!', 38206 gb: 'Removed!', 38207 uk: 'Removed!', 38208 ie: 'Removed!', 38209 us: 'Removed!', 38210 ca: 'Removed!', 38211 au: 'Removed!', 38212 nz: 'Removed!', 38213 ru: 'Удалено!' 38214 } 38215 }; 38216 38217 // Tooltip translations for price info 38218 window.tooltipTranslations = { 38219 tooltipPrice: { 38220 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38221 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 38222 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 38223 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 38224 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 38225 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 38226 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 38227 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 38228 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 38229 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 38230 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 38231 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 38232 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 38233 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 38234 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 38235 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 38236 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 38237 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 38238 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 38239 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 38240 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 38241 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 38242 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 38243 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 38244 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
38244iks atskaitÄ«ts, ja piemÄrojams.", 38245 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 38246 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 38247 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 38248 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38249 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38250 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38251 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38252 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38253 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38254 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 38255 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 38256 }, 38257 tooltipOutlet: { 38258 en: "We do not provide additional wholesale discounts on outlet products.", 38259 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 38260 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 38261 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 38262 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 38263 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 38264 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 38265 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 38266 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 38267 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 38268 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 38269 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 38270 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 38271 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 38272 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 38273 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 38274 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 38275 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 38276 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 38277 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 38278 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 38279 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 38280 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 38281 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 38282 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 38283 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 38284 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 38285 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 38286 gb: "We do not provide additional wholesale discounts on outlet products.", 38287 uk: "We do not provide additional wholesale discounts on outlet products.", 38288 ie: "We do not provide additional wholesale discounts on outlet products.", 38289 us: "We do not provide additional wholesale discounts on outlet products.", 38290 ca: "We do not provide additional wholesale discounts on outlet products.", 38291 au: "We do not provide additional wholesale discounts on outlet products.", 38292 nz: "We do not provide additional wholesale discounts on outlet products.", 38293 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 38294 } 38295 }; 38296 38297 // Get current locale from document 38298 window.currentLocale = document.documentElement.lang || 'en'; 38299 38300 // Function to translate compare buttons 38301 window.translateCompareButtons = function() { 38302 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
38303 compareTexts.forEach(function(textEl) { 38304 const button = textEl.closest('.compare-button-simple'); 38305 const isInComparison = button && button.hasAttribute('data-in-comparison'); 38306 38307 if (isInComparison) { 38308 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 38309 textEl.textContent = translation; 38310 } else { 38311 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 38312 textEl.textContent = translation; 38313 } 38314 }); 38315 }; 38316 38317 // Function to format price with space as thousands separator (only for tooltip) 38318 function formatTooltipPrice(price) { 38319 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 38320 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 38321 } 38322 38323 // Function to translate tooltips with price 38324 window.translateTooltips = function() { 38325 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 38326 tooltips.forEach(function(tooltip) { 38327 const icon = tooltip.closest('.price-info-icon'); 38328 if (icon) { 38329 const status = icon.getAttribute('data-status'); 38330 // Check if this is an outlet product 38331 if (status === 'outlet') { 38332 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 38333 tooltip.textContent = translation; 38334 return; // Exit early for outlet products 38335 } 38336 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 38337 // Get wholesale price from the actual price display on the card 38338 const card = icon.closest('[data-product-id]'); 38339 let wholesalePrice = ''; 38340 if (card) { 38341 // Find the main price element on the card 38342 const priceElement = card.querySelector('.price .price-item--regular'); 38343 if (priceElement) { 38344 wholesalePrice = priceElement.textContent.trim(); 38345 } 38346 } 38347 if (retailPrice && wholesalePrice) { 38348 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 38349 let formattedRetailPrice = formatTooltipPrice(retailPrice); 38350 let formattedWholesalePrice = wholesalePrice; 38351 if (window.formatPriceText) { 38352 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 38353 } 38354 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 38355 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 38356 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 38357 tooltip.textContent = translatedText; 38358 } 38359 } 38360 }); 38361 }; 38362 38363 // Function to update button state based on comparison status 38364 window.updateCompareButtonState = function(productId, isInComparison) { 38365 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 38366 buttons.forEach(function(button) { 38367 const buttonContainer = button.closest('.compare-button-container'); 38368 const compareText = button.querySelector('.compare-text'); 38369 38370 if (isInComparison) { 38371 button.setAttribute('data-in-comparison', 'true'); 38372 button.classList.add('in-comparison'); 38373 buttonContainer.classList.add('in-comparison'); 38374 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 38375 compareText.textContent = removeText; 38376 } else { 38377 button.removeAttribute('data-in-comparison'); 38378 button.classList.remove('in-comparison'); 38379 buttonContainer.classList.remove('in-comparison'); 38380 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 38381 compareText.textContent = compareTextTranslation; 38382 } 38383 }); 38384 }; 38385 } 38386 38387 // Initialize compare button states based on localStorage 38388 window.initializeCompareButtonStates = function() {
38389 if (typeof window.RendlCompare !== 'undefined') { 38390 const compareItems = window.RendlCompare.getItems(); 38391 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 38392 const productId = button.getAttribute('data-product-id'); 38393 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 38394 window.updateCompareButtonState(productId, isInComparison); 38395 }); 38396 } 38397 }; 38398 38399 // Compare button UI animation - the actual functionality is handled by compare-system.js 38400 document.addEventListener('DOMContentLoaded', function() { 38401 // Apply translations on page load 38402 if (window.translateCompareButtons) { 38403 window.translateCompareButtons(); 38404 } 38405 38406 // Initialize button states based on comparison data 38407 setTimeout(function() { 38408 if (window.initializeCompareButtonStates) { 38409 window.initializeCompareButtonStates(); 38410 } 38411 }, 100); // Small delay to ensure compare system is loaded 38412 38413 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 38414 // Skip if already has event listener 38415 if (button.hasAttribute('data-compare-initialized')) { 38416 return; 38417 } 38418 button.setAttribute('data-compare-initialized', 'true'); 38419 38420 button.addEventListener('click', function(e) { 38421 var buttonContainer = button.closest('.compare-button-container'); 38422 var compareText = button.querySelector('.compare-text'); 38423 var isInComparison = button.hasAttribute('data-in-comparison'); 38424 var productId = button.getAttribute('data-product-id'); 38425 38426 // Prevent multiple clicks during loading 38427 if (button.classList.contains('loading')) { 38428 return; 38429 } 38430 38431 // Make button always visible during the process 38432 buttonContainer.classList.add('active'); 38433 38434 // Add loading class to show spinner 38435 button.classList.add('loading'); 38436 38437 // UI feedback timing 38438 setTimeout(function() { 38439 // Remove loading class and show success message 38440 button.classList.remove('loading'); 38441 button.classList.add('success'); 38442 38443 if (isInComparison) { 38444 // Removing from comparison 38445 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 38446 38447 // Update button state after removal 38448 setTimeout(function() { 38449 button.classList.remove('success'); 38450 window.updateCompareButtonState(productId, false); 38451 buttonContainer.classList.remove('active'); 38452 }, 1500); 38453 } else { 38454 // Adding to comparison 38455 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 38456 38457 // Update button state after addition 38458 setTimeout(function() { 38459 button.classList.remove('success'); 38460 window.updateCompareButtonState(productId, true); 38461 buttonContainer.classList.remove('active'); 38462 }, 1500); 38463 } 38464 }, 1200); 38465 }); 38466 }); 38467 38468 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 38469 setTimeout(function() { 38470 if (window.translateTooltips) { 38471 window.translateTooltips(); 38472 } 38473 }, 100); 38474 }); 38475 38476 // Ensure compare button states are initialized after RendlCompare is available 38477 document.addEventListener('DOMContentLoaded', function() { 38478 function tryInitCompareButtons() { 38479 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 38480 window.initializeCompareButtonStates(); 38481 } else { 38482 setTimeout(tryInitCompareButtons, 100); 38483 } 38484 } 38485 tryInitCompareButtons(); 38486 }); 38487 38488 // Self-contained wishlist functionality for card-product 38489 (function() { 38490 // Wishlist translations 38491 var wishlistTranslations = { 38492 'en': { 38493 addToWishlist: 'Add to My Favorites', 38494 createCategory: 'Create new category:', 38495 categoryPlaceholder: 'Category name', 38496 createAndAdd: 'Create & Add Item', 38497 alreadyAdded: '(Already added)', 38498 addedToWishlist: 'added to My Favorites', 38499 removedFromWishlist: 'removed from My Favorites', 38500 allFavorites: 'All Favorites' 38501 }, 38502 'cs': { 38503 addToWishlist: 'PÅidat do oblÃbených', 38504 createCategory: 'VytvoÅit novou skupinu:', 38505 categoryPlaceholder: 'Název nové skupiny', 38506 createAndAdd: 'VytvoÅit a pÅidat skupinu', 38507 alreadyAdded: '(Již pÅidáno)', 38508 addedToWishlist: 'pÅidáno do oblÃbených', 38509 removedFromWishlist: 'odebráno z oblÃbených', 38510 allFavorites: 'VÅ¡echny oblÃbené' 38511 }, 38512 'sk': { 38513 addToWishlist: 'PridaÅ¥ do obľúbených', 38514 createCategory: 'VytvoriÅ¥ novú kategóriu:', 38515 categoryPlaceholder: 'Názov kategórie', 38516 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 38517 alreadyAdded: '(Už pridané)', 38518 addedToWishlist: 'pridané do obľúbených', 38519 removedFromWishlist: 'odstránené z obľúbených', 38520 allFavorites: 'VÅ¡etky obľúbené' 38521 }, 38522 'de': { 38523 addToWishlist: 'Zu meinen Favoriten hinzufügen', 38524 createCategory: 'Neue Kategorie erstellen:', 38525 categoryPlaceholder: 'Kategoriename', 38526 createAndAdd: 'Erstellen & hinzufügen', 38527 alreadyAdded: '(Bereits hinzugefügt)', 38528 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 38529 removedFromWishlist: 'aus meinen Favoriten entfernt', 38530 allFavorites: 'Alle Favoriten' 38531 }, 38532 'fr': { 38533 addToWishlist: 'Ajouter à mes favoris', 38534 createCategory: 'Créer une nouvelle catégorie :', 38535 categoryPlaceholder: 'Nom de la catégorie', 38536 createAndAdd: 'Créer et ajouter', 38537 alreadyAdded: '(Déjà ajouté)', 38538 addedToWishlist: 'ajouté à mes favoris', 38539 removedFromWishlist: 'retiré de mes favoris', 38540 allFavorites: 'Tous les favoris' 38541 }, 38542 'it': { 38543 addToWishlist: 'Aggiungi ai preferiti', 38544 createCategory: 'Crea nuova categoria:', 38545 categoryPlaceholder: 'Nome categoria', 38546 createAndAdd: 'Crea e aggiungi', 38547 alreadyAdded: '(Già aggiunto)', 38548 addedToWishlist: 'aggiunto ai preferiti', 38549 removedFromWishlist: 'rimosso dai preferiti', 38550 allFavorites: 'Tutti i preferiti' 38551 }, 38552 'es': { 38553 addToWishlist: 'Añadir a mis favoritos', 38554 createCategory: 'Crear nueva categorÃa:', 38555 categoryPlaceholder: 'Nombre de la categorÃa', 38556 createAndAdd: 'Crear y añadir', 38557 alreadyAdded: '(Ya añadido)', 38558 addedToWishlist: 'añadido a mis favoritos', 38559 removedFromWishlist: 'eliminado de mis favoritos', 38560 allFavorites: 'Todos los favoritos' 38561 }, 38562 'nl': { 38563 addToWishlist: 'Toevoegen aan mijn favorieten', 38564 createCategory: 'Nieuwe categorie aanmaken:', 38565 categoryPlaceholder: 'Categorienaam', 38566 createAndAdd: 'Aanmaken & toevoegen', 38567 alreadyAdded: '(Al toegevoegd)', 38568 addedToWishlist: 'toegevoegd aan mijn favorieten', 38569 removedFromWishlist: 'verwijderd uit mijn favorieten', 38570 allFavorites: 'Alle favorieten' 38571 }, 38572 'pl': { 38573 addToWishlist: 'Dodaj do ulubionych', 38574 createCategory: 'Utwórz nowÄ kategoriÄ:', 38575 categoryPlaceholder: 'Nazwa kategorii', 38576 createAndAdd: 'Utwórz i dodaj', 38577 alreadyAdded: '(Już dodane)', 38578 addedToWishlist: 'dodano do ulubionych', 38579 removedFromWishlist: 'usuniÄto z ulubionych', 38580 allFavorites: 'Wszystkie ulubione' 38581 }, 38582 'hu': { 38583 addToWishlist: 'Hozzáadás a kedvencekhez', 38584 createCategory: 'Ãj kategória létrehozása:', 38585 categoryPlaceholder: 'Kategória neve', 38586 createAndAdd: 'Létrehozás és hozzáadás', 38587 alreadyAdded: '(Már hozzáadva)', 38588 addedToWishlist: 'hozzáadva a kedvencekhez', 38589 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 38590 allFavorites: 'Minden kedvenc' 38591 }, 38592 'ro': { 38593 addToWishlist: 'AdaugÄ la favorite', 38594 createCategory: 'CreeazÄ o nouÄ categorie:', 38595 categoryPlaceholder: 'Nume categorie', 38596 createAndAdd: 'CreeazÄ Èi adaugÄ', 38597 alreadyAdded: '(Deja adÄugat)', 38598 addedToWishlist: 'adÄugat la favorite', 38599 removedFromWishlist: 'eliminat din favorite', 38600 allFavorites: 'Toate preferinÈele' 38601 }, 38602 'bg': { 38603 addToWishlist: 'Ðобави в лÑбими', 38604 createCategory: 'СÑздай нова каÑегоÑиÑ:', 38605 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 38606 createAndAdd: 'СÑздай и добави', 38607 alreadyAdded: '(ÐеÑе добавено)', 38608 addedToWishlist: 'добавено в лÑбими', 38609 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 38610 allFavorites: 'ÐÑиÑки лÑбими' 38611 }, 38612 'hr': { 38613 addToWishlist: 'Dodaj u favorite', 38614 createCategory: 'Kreiraj novu kategoriju:', 38615 categoryPlaceholder: 'Naziv kategorije', 38616 createAndAdd: 'Kreiraj i dodaj', 38617 alreadyAdded: '(VeÄ dodano)', 38618 addedToWishlist: 'dodano u favorite', 38619 removedFromWishlist: 'uklonjeno iz favorita', 38620 allFavorites: 'Sva omiljena' 38621 }, 38622 'fi': { 38623 addToWishlist: 'Lisää suosikkeihin', 38624 createCategory: 'Luo uusi kategoria:', 38625 categoryPlaceholder: 'Kategorian nimi', 38626 createAndAdd: 'Luo ja lisää', 38627 alreadyAdded: '(Jo lisätty)', 38628 addedToWishlist: 'lisätty suosikkeihin', 38629 removedFromWishlist: 'poistettu suosikeista',
38630 allFavorites: 'Kaikki suosikit' 38631 }, 38632 'gr': { 38633 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 38634 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 38635 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 38636 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 38637 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 38638 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 38639 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 38640 allFavorites: 'Îλα Ïα αγαÏημÎνα' 38641 }, 38642 'no': { 38643 addToWishlist: 'Legg til i favoritter', 38644 createCategory: 'Opprett ny kategori:', 38645 categoryPlaceholder: 'Kategorinavn', 38646 createAndAdd: 'Opprett og legg til', 38647 alreadyAdded: '(Allerede lagt til)', 38648 addedToWishlist: 'lagt til i favoritter', 38649 removedFromWishlist: 'fjernet fra favoritter', 38650 allFavorites: 'Alle favoritter' 38651 }, 38652 'pt-PT': { 38653 addToWishlist: 'Adicionar aos favoritos', 38654 createCategory: 'Criar nova categoria:', 38655 categoryPlaceholder: 'Nome da categoria', 38656 createAndAdd: 'Criar e adicionar', 38657 alreadyAdded: '(Já adicionado)', 38658 addedToWishlist: 'adicionado aos favoritos', 38659 removedFromWishlist: 'removido dos favoritos', 38660 allFavorites: 'Todos os favoritos' 38661 }, 38662 'sl': { 38663 addToWishlist: 'Dodaj med priljubljene', 38664 createCategory: 'Ustvari novo kategorijo:', 38665 categoryPlaceholder: 'Ime kategorije', 38666 createAndAdd: 'Ustvari in dodaj', 38667 alreadyAdded: '(Že dodano)', 38668 addedToWishlist: 'dodano med priljubljene', 38669 removedFromWishlist: 'odstranjeno iz priljubljenih', 38670 allFavorites: 'Vsi priljubljeni' 38671 }, 38672 'sv': { 38673 addToWishlist: 'Lägg till i favoriter', 38674 createCategory: 'Skapa ny kategori:', 38675 categoryPlaceholder: 'Kategorinamn', 38676 createAndAdd: 'Skapa och lägg till', 38677 alreadyAdded: '(Redan tillagd)', 38678 addedToWishlist: 'tillagd i favoriter', 38679 removedFromWishlist: 'borttagen frÃ¥n favoriter', 38680 allFavorites: 'Alla favoriter' 38681 }, 38682 'lv': { 38683 addToWishlist: 'Pievienot favorÄ«tiem', 38684 createCategory: 'Izveidot jaunu kategoriju:', 38685 categoryPlaceholder: 'Kategorijas nosaukums', 38686 createAndAdd: 'Izveidot un pievienot', 38687 alreadyAdded: '(Jau pievienots)', 38688 addedToWishlist: 'pievienots favorÄ«tiem', 38689 removedFromWishlist: 'noÅemts no favorÄ«tiem', 38690 allFavorites: 'Visas favorÄ«tus' 38691 }, 38692 'lt': { 38693 addToWishlist: 'PridÄti į mÄgstamiausius', 38694 createCategory: 'Sukurti naujÄ kategorijÄ :', 38695 categoryPlaceholder: 'Kategorijos pavadinimas', 38696 createAndAdd: 'Sukurti ir pridÄti', 38697 alreadyAdded: '(Jau pridÄta)', 38698 addedToWishlist: 'pridÄta į mÄgstamiausius', 38699 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 38700 allFavorites: 'Visos mÄgstamiausios' 38701 }, 38702 'ee': { 38703 addToWishlist: 'Lisa lemmikutesse', 38704 createCategory: 'Loo uus kategooria:', 38705 categoryPlaceholder: 'Kategooria nimi', 38706 createAndAdd: 'Loo ja lisa', 38707 alreadyAdded: '(Juba lisatud)', 38708 addedToWishlist: 'lisatud lemmikutesse', 38709 removedFromWishlist: 'eemaldatud lemmikutest', 38710 allFavorites: 'Kõik lemmikud' 38711 }, 38712 'dk': { 38713 addToWishlist: 'Tilføj til favoritter', 38714 createCategory: 'Opret ny kategori:', 38715 categoryPlaceholder: 'Kategorinavn', 38716 createAndAdd: 'Opret og tilføj', 38717 alreadyAdded: '(Allerede tilføjet)', 38718 addedToWishlist: 'tilføjet til favoritter', 38719 removedFromWishlist: 'fjernet fra favoritter', 38720 allFavorites: 'Alle favoritter' 38721 } 38722 }; 38723 38724 function getWishlistLang() { 38725 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 38726 // Normalize for region codes (e.g., pt-PT, sl) 38727 if (lang.startsWith('pt-PT')) return 'pt-PT'; 38728 if (lang.startsWith('sl')) return 'sl'; 38729 if (lang.startsWith('cs')) return 'cs'; 38730 if (lang.startsWith('sk')) return 'sk'; 38731 if (lang.startsWith('de')) return 'de'; 38732 if (lang.startsWith('fr')) return 'fr'; 38733 if (lang.startsWith('it')) return 'it'; 38734 if (lang.startsWith('es')) return 'es'; 38735 if (lang.startsWith('nl')) return 'nl'; 38736 if (lang.startsWith('pl')) return 'pl'; 38737 if (lang.startsWith('hu')) return 'hu'; 38738 if (lang.startsWith('ro')) return 'ro'; 38739 if (lang.startsWith('bg')) return 'bg'; 38740 if (lang.startsWith('hr')) return 'hr'; 38741 if (lang.startsWith('fi')) return 'fi'; 38742 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 38743 if (lang.startsWith('no')) return 'no'; 38744 if (lang.startsWith('sv')) return 'sv'; 38745 if (lang.startsWith('lv')) return 'lv'; 38746 if (lang.startsWith('lt')) return 'lt'; 38747 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 38748 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 38749 return 'en'; 38750 } 38751 38752 // Get or initialize the wishlist array in localStorage 38753 function getWishlist() { 38754 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 38755 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 38756 categories: [ 38757 { 38758 id: 'all-favorites', 38759 name: 'All Favorites', 38760 items: [] 38761 } 38762 ], 38763 version: 2 38764 }; 38765 38766 // Handle migration from old format (array of items) to new format (categories) 38767 if (Array.isArray(wishlist)) { 38768 return { 38769 categories: [ 38770 { 38771 id: 'all-favorites', 38772 name: 'All Favorites', 38773 items: wishlist 38774 } 38775 ], 38776 version: 2 38777 }; 38778 } 38779 38780 return wishlist; 38781 } 38782 38783 // Save wishlist to localStorage 38784 function saveWishlist(wishlist) { 38785 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 38786 // Dispatch an event so other parts of the site can react to wishlist changes 38787 document.dispatchEvent(new CustomEvent('wishlist:updated', { 38788 detail: { wishlist: wishlist } 38789 })); 38790 38791 // Count total items across all categories 38792 const totalItems = wishlist.categories.reduce((total, category) => { 38793 return total + category.items.length; 38794 }, 0); 38795 38796 // Update all wishlist counters 38797 updateWishlistCounters(totalItems); 38798 } 38799 38800 // Update all wishlist counters on the page 38801 function updateWishlistCounters(count) { 38802 const counters = document.querySelectorAll('.wishlist-count');
38803 counters.forEach(counter => { 38804 counter.textContent = count; 38805 38806 // If the counter is hidden and count > 0, show it 38807 if (count > 0 && counter.hasAttribute('hidden')) { 38808 counter.removeAttribute('hidden'); 38809 } 38810 // If the counter is visible and count = 0, hide it 38811 else if (count === 0 && !counter.hasAttribute('hidden')) { 38812 counter.setAttribute('hidden', 'true'); 38813 } 38814 }); 38815 } 38816 38817 // Check if a product is in the wishlist (in any category) 38818 function isInWishlist(productId) { 38819 const wishlist = getWishlist(); 38820 return wishlist.categories.some(category => 38821 category.items.some(item => item.id === productId) 38822 ); 38823 } 38824 38825 // Get all categories 38826 function getCategories() { 38827 return getWishlist().categories; 38828 } 38829 38830 // Create a new category 38831 function createCategory(name) { 38832 const wishlist = getWishlist(); 38833 const categoryId = 'category-' + Date.now(); 38834 38835 wishlist.categories.push({ 38836 id: categoryId, 38837 name: name, 38838 items: [] 38839 }); 38840 38841 saveWishlist(wishlist); 38842 return categoryId; 38843 } 38844 38845 // Add a product to a specific category 38846 function addToCategory(product, categoryId) { 38847 const wishlist = getWishlist(); 38848 const category = wishlist.categories.find(cat => cat.id === categoryId); 38849 38850 if (!category) return false; 38851 38852 // Check if product already exists in ANY category (not just this one) 38853 if (isInWishlist(product.id)) { 38854 return false; // Product already in wishlist 38855 } 38856 38857 // Add product to category 38858 category.items.push(product); 38859 saveWishlist(wishlist); 38860 38861 // Dispatch event for global sync 38862 document.dispatchEvent(new CustomEvent('wishlist:updated', { 38863 detail: { productId: product.id, added: true } 38864 })); 38865 38866 return true; 38867 } 38868 38869 // Add a product to the default "All Favorites" category 38870 function addToWishlist(product) { 38871 return addToCategory(product, 'all-favorites'); 38872 } 38873 38874 // Remove a product from all categories 38875 function removeFromWishlist(productId) { 38876 const wishlist = getWishlist(); 38877 let removed = false; 38878 38879 wishlist.categories.forEach(category => { 38880 const initialLength = category.items.length; 38881 category.items = category.items.filter(item => item.id !== productId); 38882 if (category.items.length !== initialLength) { 38883 removed = true; 38884 } 38885 }); 38886 38887 if (removed) { 38888 saveWishlist(wishlist); 38889 } 38890 38891 return removed; 38892 } 38893 38894 // Toggle a product in the wishlist 38895 function toggleWishlistItem(product) { 38896 if (isInWishlist(product.id)) { 38897 // If already in wishlist, remove it 38898 const wasRemoved = removeFromWishlist(product.id); 38899 38900 // Update heart icon if the product was successfully removed 38901 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 38902 if (heartIcon && wasRemoved) { 38903 heartIcon.setAttribute('fill', 'none'); 38904 showWishlistToast(false, product.title); 38905 38906 // Dispatch event for global sync 38907 document.dispatchEvent(new CustomEvent('wishlist:updated', { 38908 detail: { productId: product.id, added: false } 38909 })); 38910 } 38911 return wasRemoved; 38912 } else { 38913 // If not in wishlist, show category selection popup 38914 showCategorySelectionPopup(product); 38915 return false; // Don't return true unless we actually add the product 38916 } 38917 } 38918 38919 // Show wishlist category selection popup 38920 function showCategorySelectionPopup(product) { 38921 // Remove any existing popup 38922 const existingPopup = document.getElementById('wishlist-category-popup'); 38923 if (existingPopup) { 38924 existingPopup.remove(); 38925 } 38926 38927 const lang = getWishlistLang(); 38928 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 38929 38930 // Create popup container 38931 const popup = document.createElement('div'); 38932 popup.id = 'wishlist-category-popup'; 38933 popup.className = 'wishlist-category-popup'; 38934 38935 // Create popup content 38936 const content = document.createElement('div'); 38937 content.className = 'wishlist-category-popup-content'; 38938 38939 // Create header 38940 const title = document.createElement('h2'); 38941 title.textContent = translations.addToWishlist; // Translate 38942 38943 const closeButton = document.createElement('button'); 38944 closeButton.className = 'wishlist-category-popup-close'; 38945 closeButton.setAttribute('aria-label', 'Close'); 38946 closeButton.addEventListener('click', () => { 38947 popup.remove(); 38948 }); 38949 38950 // Create category list 38951 const categoryList = document.createElement('div'); 38952 categoryList.className = 'wishlist-category-list'; 38953 38954 // Get categories 38955 const categories = getCategories(); 38956 38957 // Add category options
38958 categories.forEach(category => { 38959 const categoryOption = document.createElement('div'); 38960 categoryOption.className = 'wishlist-category-option'; 38961 38962 // Use translation for default category name 38963 categoryOption.textContent = category.id === 'all-favorites' 38964 ? (translations.allFavorites || category.name) 38965 : category.name; 38966 38967 // Highlight if product already in this category 38968 if (category.items.some(item => item.id === product.id)) { 38969 categoryOption.style.backgroundColor = '#f0f0f0'; 38970 categoryOption.style.color = '#999'; 38971 categoryOption.style.fontStyle = 'italic'; 38972 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 38973 categoryOption.style.cursor = 'default'; 38974 } else { 38975 categoryOption.addEventListener('click', () => { 38976 const wasAdded = addToCategory(product, category.id); 38977 38978 if (wasAdded) { 38979 // Update heart icon after successful addition 38980 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 38981 if (heartIcon) { 38982 heartIcon.setAttribute('fill', '#333333'); 38983 } 38984 38985 showWishlistToast(true, product.title); 38986 popup.remove(); 38987 } 38988 }); 38989 } 38990 38991 categoryList.appendChild(categoryOption); 38992 }); 38993 38994 // Create "add new category" section 38995 const newCategorySection = document.createElement('div'); 38996 newCategorySection.style.borderTop = '1px solid #eee'; 38997 newCategorySection.style.paddingTop = '15px'; 38998 newCategorySection.style.marginTop = '10px'; 38999 39000 const newCategoryLabel = document.createElement('label'); 39001 newCategoryLabel.textContent = translations.createCategory; // Translate 39002 39003 const newCategoryInput = document.createElement('input'); 39004 newCategoryInput.type = 'text'; 39005 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 39006 39007 const createButton = document.createElement('button'); 39008 createButton.className = 'create-category-button'; 39009 createButton.textContent = translations.createAndAdd; // Translate 39010 39011 createButton.addEventListener('click', () => { 39012 const categoryName = newCategoryInput.value.trim(); 39013 if (categoryName) { 39014 const categoryId = createCategory(categoryName); 39015 const wasAdded = addToCategory(product, categoryId); 39016 39017 if (wasAdded) { 39018 // Update heart icon after successful addition 39019 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 39020 if (heartIcon) { 39021 heartIcon.setAttribute('fill', '#333333'); 39022 } 39023 39024 showWishlistToast(true, product.title); 39025 popup.remove(); 39026 } 39027 } 39028 }); 39029 39030 newCategorySection.appendChild(newCategoryLabel); 39031 newCategorySection.appendChild(newCategoryInput); 39032 newCategorySection.appendChild(createButton); 39033 39034 // Assemble popup 39035 content.appendChild(title); 39036 content.appendChild(closeButton); 39037 content.appendChild(categoryList); 39038 content.appendChild(newCategorySection); 39039 popup.appendChild(content); 39040 39041 // Add to document 39042 document.body.appendChild(popup); 39043 39044 // Focus the input 39045 setTimeout(() => { 39046 newCategoryInput.focus(); 39047 }, 100); 39048 39049 // Close when clicking outside content 39050 popup.addEventListener('click', (e) => { 39051 if (e.target === popup) { 39052 popup.remove(); 39053 } 39054 }); 39055 } 39056 39057 // Show a toast notification 39058 function showWishlistToast(added, productTitle) { 39059 // Create or get toast container 39060 let toastContainer = document.getElementById('wishlist-toast'); 39061 if (!toastContainer) { 39062 toastContainer = document.createElement('div'); 39063 toastContainer.id = 'wishlist-toast'; 39064 toastContainer.style.position = 'fixed'; 39065 toastContainer.style.bottom = '20px'; 39066 toastContainer.style.right = '20px'; 39067 toastContainer.style.zIndex = '9999'; 39068 document.body.appendChild(toastContainer); 39069 } 39070 39071 // Create toast 39072 const toast = document.createElement('div'); 39073 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 39074 toast.style.color = 'white'; 39075 toast.style.padding = '12px 20px'; 39076 toast.style.borderRadius = '0'; 39077 toast.style.marginTop = '10px'; 39078 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 39079 toast.style.transition = 'all 0.3s ease'; 39080 toast.style.opacity = '0'; 39081 toast.style.fontFamily = 'Montserrat, sans-serif'; 39082 39083 // Choose text based on action 39084 const lang = getWishlistLang(); 39085 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 39086 toast.textContent = added 39087 ? `${productTitle} ${translations.addedToWishlist}` // Translate 39088 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 39089 39090 // Add to container 39091 toastContainer.appendChild(toast); 39092 39093 // Animate in 39094 setTimeout(() => { 39095 toast.style.opacity = '1'; 39096 }, 10); 39097 39098 // Animate out and remove 39099 setTimeout(() => { 39100 toast.style.opacity = '0'; 39101 setTimeout(() => { 39102 toastContainer.removeChild(toast); 39103 }, 300); 39104 }, 3000); 39105 } 39106 39107 // Initialize wishlist buttons 39108 function initCardWishlistButtons() { 39109 const wishlistButtons = document.querySelectorAll('.card-wis
39109hlist-button'); 39110 39111 wishlistButtons.forEach(button => { 39112 // Skip if already initialized 39113 if (button.dataset.initializedWishlist === 'true') return; 39114 button.dataset.initializedWishlist = 'true'; 39115 39116 const productId = button.getAttribute('data-wishlist-product'); 39117 if (!productId) return; 39118 39119 // Get product details from the card 39120 const card = button.closest('.card-wrapper'); 39121 const productDetails = { 39122 id: productId, 39123 title: card.querySelector('.card__heading')?.textContent.trim() || '', 39124 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 39125 price: card.querySelector('.price')?.textContent.trim() || '', 39126 image: card.querySelector('img')?.src || '', 39127 url: card.querySelector('a[href*="/products/"]')?.href || '' 39128 }; 39129 39130 // Set initial state using global function 39131 const heartIcon = button.querySelector('path'); 39132 if (heartIcon) { 39133 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 39134 heartIcon.setAttribute('fill', '#333333'); 39135 } else { 39136 heartIcon.setAttribute('fill', 'none'); 39137 } 39138 } 39139 39140 // Add click handler 39141 button.addEventListener('click', function(e) { 39142 e.preventDefault(); 39143 e.stopPropagation(); 39144 e.stopImmediatePropagation(); 39145 toggleWishlistItem(productDetails); 39146 }); 39147 39148 // Prevent navigation on mousedown/touchstart 39149 button.addEventListener('mousedown', function(e) { 39150 e.preventDefault(); 39151 e.stopPropagation(); 39152 }); 39153 39154 button.addEventListener('touchstart', function(e) { 39155 e.preventDefault(); 39156 e.stopPropagation(); 39157 }); 39158 }); 39159 } 39160 39161 // Initialize the wishlist counter on page load 39162 const wishlist = getWishlist(); 39163 const totalItems = wishlist.categories.reduce((total, category) => { 39164 return total + category.items.length; 39165 }, 0); 39166 updateWishlistCounters(totalItems); 39167 39168 // Initialize on DOM ready 39169 if (document.readyState === 'loading') { 39170 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 39171 } else { 39172 initCardWishlistButtons(); 39173 } 39174 39175 // Reinitialize on Shopify section load 39176 document.addEventListener('shopify:section:load', function() { 39177 setTimeout(initCardWishlistButtons, 100); 39178 }); 39179 39180 // Listen for wishlist updates from other parts of the site 39181 document.addEventListener('wishlist:updated', function() { 39182 setTimeout(initCardWishlistButtons, 100); 39183 }); 39184 })(); 39185</script>
39185 39186 39187<!-- Price info icon styles --> 39188<style> 39189 /* Price container with icon */ 39190 .price-container-with-info { 39191 position: relative; 39192 display: flex; 39193 align-items: center; 39194 gap: 8px; 39195 } 39196 39197 /* Info icon - hidden by default, shown on card hover */ 39198 .price-info-icon { 39199 position: relative; 39200 display: inline-flex; 39201 align-items: center; 39202 justify-content: center; 39203 color: #666; 39204 cursor: help; 39205 opacity: 0; 39206 transition: opacity 0.3s ease; 39207 39208 padding: 4px; /* Add padding to increase clickable area */ 39209 min-width: 20px; /* Ensure minimum clickable area */ 39210 min-height: 20px; 39211 z-index: 15; /* Above everything else including compare button */ 39212 pointer-events: auto; /* Allow interaction */ 39213 } 39214 39215 /* Show icon on card hover */ 39216 .card-wrapper:hover .price-info-icon { 39217 opacity: 1; 39218 } 39219 39220 .price-info-icon svg { 39221 width: 14px; 39222 height: 14px; 39223 stroke-width: 1.5; 39224 } 39225 39226 /* Tooltip styles */ 39227 .price-info-tooltip { 39228 position: absolute; 39229 bottom: calc(100% + 6px); 39230 top: auto; 39231 left: 0; 39232 transform: none; 39233 min-width: 310px; 39234 background: #FFFFFF; 39235 color: #232323; 39236 border: 1px solid #EEEEEE; 39237 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 39238 padding: 12px 16px; 39239 font-size: 13px; 39240 font-family: 'Montserrat', sans-serif; 39241 z-index: 10000; 39242 opacity: 0; 39243 transition: opacity 0.18s; 39244 white-space: pre-line; 39245 text-align: left; 39246 border-radius: 0; 39247 visibility: hidden; 39248 pointer-events: none; 39249 } 39250 39251 /* Show tooltip on icon hover */ 39252 .price-info-icon:hover .price-info-tooltip { 39253 visibility: visible; 39254 opacity: 1; 39255 } 39256 39257 /* Ensure tooltip is never clipped */ 39258 .price-container-with-info, 39259 .card-information, 39260 .card__content { 39261 overflow: visible !important; 39262 } 39263 39264 /* Mobile adjustments */ 39265 @media screen and (max-width: 768px) { 39266 .price-info-tooltip { 39267 min-width: 200px; 39268 font-size: 12px; 39269 padding: 10px 12px; 39270 } 39271 } 39272</style> 39273 39274 </li> 39275 <li 39276 class="grid__item" 39277 39278 > 39279 39280<div class="card-wrapper product-card-wrapper underline-links-hover"> 39281 39282 <div 39283 class=" 39284 card card--standard 39285 card--media 39286 39287 39288 39289 39290 39291 " 39292 style="--ratio-percent: 100.0%;" 39293 data-product-id="9746963366186" 39294 data-description="Lámpara de pie para exteriores, apta para las fuentes de luz energéticamente eficientes con el casquillo E27. La cubierta frontal es de vidrio sati..." 39295 39296 data-ip-rate="IP54" 39297 39298 data-variant-id="52388037427498" 39299 data-price="150.00 EUR" 39300 data-compare-at-price="" 39301 data-available="true" 39302 data-barcode="8595685402628" 39303 data-ip-rate="IP54" 39304 data-lumens="" 39305 data-power-source="" 39306 data-watt="15.0" 39307 data-kelvin="" 39308 data-light-color="" 39309 data-diameter="" 39310 data-weight-netto="1730.0" 39311 data-weight-unit="g" 39312 data-mounting-hole-size="" 39313 data-recess-depth="" 39314 data-suspension-lenght="" 39315 data-turn-angle="" 39316 data-tilt-angle="" 39317 data-switch="" 39318 data-socket="LED E27" 39319 data-light-source-recomended="G13026" 39320 data-height="65" 39321 data-length="10" 39322 data-Length="" 39323 > 39324 <div 39325 class="card__inner color-scheme-2 gradient ratio" 39326 style="--ratio-percent: 100.0%;" 39327 > 39328 39329 39330<div class="ip-rate-badge"> 39331 <span>IP54</span> 39332 </div><div class="card__media"> 39333 <a class="card__media-link-content" href="/products/treeza-65-bollard-lamp" aria-label="TREEZA 65"> 39334 <div class="media media--transparent media--hover-effect"> 39335 39336 <img 39337 class="product-image motion-reduce" 39338 srcset="//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=165 165w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=360 360w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=533 533w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=720 720w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=940 940w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=1066 1066w,//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165 4899w 39339 " 39340 src="//rendl.es/cdn/shop/files/r10441-1.jpg?v=1745940165&width=533" 39341 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 39342 alt="RENDL outdoor lamp TREEZA 65 bollard anthracite grey 230V LED E27 15W IP54 R10441 1" 39343 39344 loading="lazy" 39345 39346 width="4899" 39347 height="4899" 39348 > 39349 39350<img 39351 class="product-image motion-reduce" 39352 srcset="//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=165 165w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=360 360w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=533 533w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=720 720w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=940 940w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=1066 1066w,//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309 3162w 39353 " 39354 src="//rendl.es/cdn/shop/files/r10441-2.jpg?v=1771906309&width=533" 39355 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 39356 alt="" 39357 loading="lazy" 39358 width="3162" 39359 height="3162" 39360 ></div> 39361 </a> 39362 39363<div class="card-media-icons"><div class="dimmable-icon"> 39364 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Dimmable.svg?v=1753944550" alt="Dimmable" width="14" height="14"> 39365 <div class="dimmable-tooltip">Atenuable con fuente de luz adecuada</div> 39366 </div></div><div class="card-variant-swatches"><a 39367 class="card-variant-swatch" 39368 href="/products/treeza-65-bollard-lamp?variant=52388037427498" 39369 39370 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 39371 39372 aria-label="gris antracita" 39373 >
39374 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 39375 <div class="card__information"> 39376 <h3 39377 class="card__heading" 39378 39379 > 39380 <a 39381 href="/products/treeza-65-bollard-lamp" 39382 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746963366186" 39383 class="full-unstyled-link" 39384 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746963366186 NoMediaStandardBadge-template--28113427169578__product-grid-9746963366186" 39385 > 39386 TREEZA 65 39387 </a> 39388 </h3> 39389 </div> 39390 <div class="card__badge bottom left"></div> 39391 </div> 39392 </div> 39393 <div class="card__content"> 39394 <div class="card__information"> 39395 <h3 39396 class="card__heading h5" 39397 39398 id="title-template--28113427169578__product-grid-9746963366186" 39399 39400 > 39401 <a 39402 href="/products/treeza-65-bollard-lamp" 39403 id="CardLink-template--28113427169578__product-grid-9746963366186" 39404 class="full-unstyled-link" 39405 aria-labelledby="CardLink-template--28113427169578__product-grid-9746963366186 Badge-template--28113427169578__product-grid-9746963366186" 39406 > 39407 TREEZA 65 39408 </a> 39409 </h3><div class="card__description"> 39410 Lámpara de pie para exteriores, apta para las fuentes de luz energéticamente eficientes con el casquillo E27. La cubierta frontal es de vidrio satinado. 39411 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 39412 39413<div 39414 class=" 39415 price " 39416 > 39417 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 39418 <span class="price-item price-item--regular"> 39419 150.00 EUR 39420 </span></div> 39421 <div class="price__sale"> 39422 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 39423 <span> 39424 <s class="price-item price-item--regular"> 39425 39426 39427 39428 </s> 39429 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 39430 <span class="price-item price-item--sale price-item--last"> 39431 150.00 EUR 39432 </span> 39433 </div> 39434 <small class="unit-price caption hidden"> 39435 <span class="visually-hidden">Precio unitario</span> 39436 <span class="price-item price-item--last"> 39437 <span></span> 39438 <span aria-hidden="true">/</span> 39439 <span class="visually-hidden"> por </span> 39440 <span> 39441 </span> 39442 </span> 39443 </small> 39444 </div></div> 39445 39446 39447</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 39448 <button class="compare-button-simple" 39449 data-product-id="9746963366186" 39450 data-product-title="TREEZA 65" 39451 data-product-handle="treeza-65-bollard-lamp"> 39452 <span class="compare-button-content"> 39453 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 39454 <span class="compare-text" data-translate="compare">compare</span> 39455 </span> 39456 <span class="compare-spinner-small"> 39457 <!-- Small spinner for button --> 39458 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 39459 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 39460 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 39461 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
39461inite"/> 39462 </path> 39463 </svg> 39464 </span> 39465 </button> 39466 39467 <!-- Wishlist button next to compare button --> 39468 <button type="button" class="card-wishlist-button" data-wishlist-product="9746963366186"> 39469 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 39470 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 39471 </svg> 39472 </button> 39473 </div></div> 39474 </div> 39475 39476 39477 39478 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746963366186" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 39479 type="hidden" 39480 name="id" 39481 value="52388037427498" 39482 class="product-variant-id" 39483 39484 > 39485 <button 39486 id="quick-add-template--28113427169578__product-grid9746963366186-submit" 39487 type="submit" 39488 name="add" 39489 class="quick-add__submit button button--full-width button--secondary" 39490 aria-haspopup="dialog" 39491 aria-labelledby="quick-add-template--28113427169578__product-grid9746963366186-submit title-template--28113427169578__product-grid-9746963366186" 39492 aria-live="polite" 39493 data-sold-out-message="true" 39494 39495 > 39496 <span>Agregar al carrito 39497</span> 39498 <span class="sold-out-message hidden"> 39499 En camino 39500 </span> 39501 39502<div class="loading__spinner hidden"> 39503 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 39504 39505</div> 39506</button><input type="hidden" name="product-id" value="9746963366186" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 39507 39508 <div class="card__badge bottom left"></div> 39509 </div> 39510 </div> 39511 </div>
39511<script> 39512 // Initialize global compare translations only once 39513 if (typeof window.compareButtonTranslations === 'undefined') { 39514 window.compareButtonTranslations = { 39515 compare: { 39516 en: 'compare', 39517 cs: 'porovnat', 39518 sk: 'porovnaÅ¥', 39519 de: 'vergleichen', 39520 at: 'vergleichen', 39521 ch: 'vergleichen', 39522 fr: 'comparer', 39523 be: 'comparer', 39524 lu: 'comparer', 39525 it: 'confronta', 39526 es: 'comparar', 39527 nl: 'vergelijken', 39528 pl: 'porównaj', 39529 hu: 'összehasonlÃt', 39530 ro: 'comparÄ', 39531 bg: 'ÑÑавни', 39532 hr: 'usporedi', 39533 fi: 'vertaile', 39534 gr: 'ÏÏγκÏιÏη', 39535 el: 'ÏÏγκÏιÏη', 39536 no: 'sammenlign', 39537 'pt-PT': 'comparar', 39538 sl: 'primerjaj', 39539 sv: 'jämför', 39540 lv: 'salÄ«dzinÄt', 39541 lt: 'palyginti', 39542 ee: 'võrdle', 39543 dk: 'sammenlign', 39544 gb: 'compare', 39545 uk: 'compare', 39546 ie: 'compare', 39547 us: 'compare', 39548 ca: 'compare', 39549 au: 'compare', 39550 nz: 'compare', 39551 ru: 'ÑÑавниÑÑ' 39552 }, 39553 remove: { 39554 en: 'remove', 39555 cs: 'odebrat', 39556 sk: 'odobraÅ¥', 39557 de: 'entfernen', 39558 at: 'entfernen', 39559 ch: 'entfernen', 39560 fr: 'supprimer', 39561 be: 'supprimer', 39562 lu: 'supprimer', 39563 it: 'rimuovi', 39564 es: 'eliminar', 39565 nl: 'verwijderen', 39566 pl: 'usuÅ', 39567 hu: 'eltávolÃt', 39568 ro: 'eliminÄ', 39569 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 39570 hr: 'ukloni', 39571 fi: 'poista', 39572 gr: 'αÏαίÏεÏη', 39573 el: 'αÏαίÏεÏη', 39574 no: 'fjern', 39575 'pt-PT': 'remover', 39576 sl: 'odstrani', 39577 sv: 'ta bort', 39578 lv: 'noÅemt', 39579 lt: 'paÅ¡alinti', 39580 ee: 'eemalda', 39581 dk: 'fjern', 39582 gb: 'remove', 39583 uk: 'remove', 39584 ie: 'remove', 39585 us: 'remove', 39586 ca: 'remove', 39587 au: 'remove', 39588 nz: 'remove', 39589 ru: 'ÑдалиÑÑ' 39590 }, 39591 added: { 39592 en: 'Added!', 39593 cs: 'PÅidáno!', 39594 sk: 'Pridané!', 39595 de: 'Hinzugefügt!', 39596 at: 'Hinzugefügt!', 39597 ch: 'Hinzugefügt!', 39598 fr: 'Ajouté!', 39599 be: 'Ajouté!', 39600 lu: 'Ajouté!', 39601 it: 'Aggiunto!', 39602 es: '¡Añadido!', 39603 nl: 'Toegevoegd!', 39604 pl: 'Dodano!', 39605 hu: 'Hozzáadva!', 39606 ro: 'AdÄugat!', 39607 bg: 'Ðобавено!', 39608 hr: 'Dodano!', 39609 fi: 'Lisätty!', 39610 gr: 'Î ÏοÏÏÎθηκε!', 39611 el: 'Î ÏοÏÏÎθηκε!', 39612 no: 'Lagt til!', 39613 'pt-PT': 'Adicionado!', 39614 sl: 'Dodano!', 39615 sv: 'Tillagd!', 39616 lv: 'Pievienots!', 39617 lt: 'PridÄta!', 39618 ee: 'Lisatud!', 39619 dk: 'Tilføjet!', 39620 gb: 'Added!', 39621 uk: 'Added!', 39622 ie: 'Added!', 39623 us: 'Added!', 39624 ca: 'Added!', 39625 au: 'Added!', 39626 nz: 'Added!', 39627 ru: 'Ðобавлено!' 39628 }, 39629 removed: { 39630 en: 'Removed!', 39631 cs: 'Odebráno!', 39632 sk: 'Odobrané!', 39633 de: 'Entfernt!', 39634 at: 'Entfernt!', 39635 ch: 'Entfernt!', 39636 fr: 'Supprimé!', 39637 be: 'Supprimé!', 39638 lu: 'Supprimé!', 39639 it: 'Rimosso!', 39640 es: '¡Eliminado!', 39641 nl: 'Verwijderd!', 39642 pl: 'UsuniÄto!', 39643 hu: 'EltávolÃtva!', 39644 ro: 'Eliminat!', 39645 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 39646 hr: 'Uklonjeno!', 39647 fi: 'Poistettu!', 39648 gr: 'ÎÏαιÏÎθηκε!', 39649 el: 'ÎÏαιÏÎθηκε!', 39650 no: 'Fjernet!', 39651 'pt-PT': 'Removido!', 39652 sl: 'Odstranjeno!', 39653 sv: 'Borttaget!', 39654 lv: 'NoÅemts!', 39655 lt: 'PaÅ¡alinta!', 39656 ee: 'Eemaldatud!', 39657 dk: 'Fjernet!', 39658 gb: 'Removed!', 39659 uk: 'Removed!', 39660 ie: 'Removed!', 39661 us: 'Removed!', 39662 ca: 'Removed!', 39663 au: 'Removed!', 39664 nz: 'Removed!', 39665 ru: 'Удалено!' 39666 } 39667 }; 39668 39669 // Tooltip translations for price info 39670 window.tooltipTranslations = { 39671 tooltipPrice: { 39672 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39673 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 39674 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 39675 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 39676 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 39677 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 39678 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 39679 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 39680 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 39681 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 39682 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 39683 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 39684 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 39685 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 39686 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 39687 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 39688 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 39689 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 39690 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 39691 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 39692 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 39693 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 39694 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 39695 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 39696 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
39696iks atskaitÄ«ts, ja piemÄrojams.", 39697 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 39698 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 39699 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 39700 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39701 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39702 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39703 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39704 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39705 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39706 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 39707 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 39708 }, 39709 tooltipOutlet: { 39710 en: "We do not provide additional wholesale discounts on outlet products.", 39711 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 39712 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 39713 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 39714 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 39715 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 39716 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 39717 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 39718 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 39719 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 39720 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 39721 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 39722 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 39723 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 39724 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 39725 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 39726 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 39727 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 39728 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 39729 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 39730 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 39731 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 39732 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 39733 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 39734 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 39735 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 39736 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 39737 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 39738 gb: "We do not provide additional wholesale discounts on outlet products.", 39739 uk: "We do not provide additional wholesale discounts on outlet products.", 39740 ie: "We do not provide additional wholesale discounts on outlet products.", 39741 us: "We do not provide additional wholesale discounts on outlet products.", 39742 ca: "We do not provide additional wholesale discounts on outlet products.", 39743 au: "We do not provide additional wholesale discounts on outlet products.", 39744 nz: "We do not provide additional wholesale discounts on outlet products.", 39745 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 39746 } 39747 }; 39748 39749 // Get current locale from document 39750 window.currentLocale = document.documentElement.lang || 'en'; 39751 39752 // Function to translate compare buttons 39753 window.translateCompareButtons = function() { 39754 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
39755 compareTexts.forEach(function(textEl) { 39756 const button = textEl.closest('.compare-button-simple'); 39757 const isInComparison = button && button.hasAttribute('data-in-comparison'); 39758 39759 if (isInComparison) { 39760 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 39761 textEl.textContent = translation; 39762 } else { 39763 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 39764 textEl.textContent = translation; 39765 } 39766 }); 39767 }; 39768 39769 // Function to format price with space as thousands separator (only for tooltip) 39770 function formatTooltipPrice(price) { 39771 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 39772 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 39773 } 39774 39775 // Function to translate tooltips with price 39776 window.translateTooltips = function() { 39777 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 39778 tooltips.forEach(function(tooltip) { 39779 const icon = tooltip.closest('.price-info-icon'); 39780 if (icon) { 39781 const status = icon.getAttribute('data-status'); 39782 // Check if this is an outlet product 39783 if (status === 'outlet') { 39784 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 39785 tooltip.textContent = translation; 39786 return; // Exit early for outlet products 39787 } 39788 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 39789 // Get wholesale price from the actual price display on the card 39790 const card = icon.closest('[data-product-id]'); 39791 let wholesalePrice = ''; 39792 if (card) { 39793 // Find the main price element on the card 39794 const priceElement = card.querySelector('.price .price-item--regular'); 39795 if (priceElement) { 39796 wholesalePrice = priceElement.textContent.trim(); 39797 } 39798 } 39799 if (retailPrice && wholesalePrice) { 39800 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 39801 let formattedRetailPrice = formatTooltipPrice(retailPrice); 39802 let formattedWholesalePrice = wholesalePrice; 39803 if (window.formatPriceText) { 39804 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 39805 } 39806 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 39807 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 39808 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 39809 tooltip.textContent = translatedText; 39810 } 39811 } 39812 }); 39813 }; 39814 39815 // Function to update button state based on comparison status 39816 window.updateCompareButtonState = function(productId, isInComparison) { 39817 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 39818 buttons.forEach(function(button) { 39819 const buttonContainer = button.closest('.compare-button-container'); 39820 const compareText = button.querySelector('.compare-text'); 39821 39822 if (isInComparison) { 39823 button.setAttribute('data-in-comparison', 'true'); 39824 button.classList.add('in-comparison'); 39825 buttonContainer.classList.add('in-comparison'); 39826 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 39827 compareText.textContent = removeText; 39828 } else { 39829 button.removeAttribute('data-in-comparison'); 39830 button.classList.remove('in-comparison'); 39831 buttonContainer.classList.remove('in-comparison'); 39832 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 39833 compareText.textContent = compareTextTranslation; 39834 } 39835 }); 39836 }; 39837 } 39838 39839 // Initialize compare button states based on localStorage 39840 window.initializeCompareButtonStates = function() {
39841 if (typeof window.RendlCompare !== 'undefined') { 39842 const compareItems = window.RendlCompare.getItems(); 39843 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 39844 const productId = button.getAttribute('data-product-id'); 39845 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 39846 window.updateCompareButtonState(productId, isInComparison); 39847 }); 39848 } 39849 }; 39850 39851 // Compare button UI animation - the actual functionality is handled by compare-system.js 39852 document.addEventListener('DOMContentLoaded', function() { 39853 // Apply translations on page load 39854 if (window.translateCompareButtons) { 39855 window.translateCompareButtons(); 39856 } 39857 39858 // Initialize button states based on comparison data 39859 setTimeout(function() { 39860 if (window.initializeCompareButtonStates) { 39861 window.initializeCompareButtonStates(); 39862 } 39863 }, 100); // Small delay to ensure compare system is loaded 39864 39865 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 39866 // Skip if already has event listener 39867 if (button.hasAttribute('data-compare-initialized')) { 39868 return; 39869 } 39870 button.setAttribute('data-compare-initialized', 'true'); 39871 39872 button.addEventListener('click', function(e) { 39873 var buttonContainer = button.closest('.compare-button-container'); 39874 var compareText = button.querySelector('.compare-text'); 39875 var isInComparison = button.hasAttribute('data-in-comparison'); 39876 var productId = button.getAttribute('data-product-id'); 39877 39878 // Prevent multiple clicks during loading 39879 if (button.classList.contains('loading')) { 39880 return; 39881 } 39882 39883 // Make button always visible during the process 39884 buttonContainer.classList.add('active'); 39885 39886 // Add loading class to show spinner 39887 button.classList.add('loading'); 39888 39889 // UI feedback timing 39890 setTimeout(function() { 39891 // Remove loading class and show success message 39892 button.classList.remove('loading'); 39893 button.classList.add('success'); 39894 39895 if (isInComparison) { 39896 // Removing from comparison 39897 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 39898 39899 // Update button state after removal 39900 setTimeout(function() { 39901 button.classList.remove('success'); 39902 window.updateCompareButtonState(productId, false); 39903 buttonContainer.classList.remove('active'); 39904 }, 1500); 39905 } else { 39906 // Adding to comparison 39907 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 39908 39909 // Update button state after addition 39910 setTimeout(function() { 39911 button.classList.remove('success'); 39912 window.updateCompareButtonState(productId, true); 39913 buttonContainer.classList.remove('active'); 39914 }, 1500); 39915 } 39916 }, 1200); 39917 }); 39918 }); 39919 39920 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 39921 setTimeout(function() { 39922 if (window.translateTooltips) { 39923 window.translateTooltips(); 39924 } 39925 }, 100); 39926 }); 39927 39928 // Ensure compare button states are initialized after RendlCompare is available 39929 document.addEventListener('DOMContentLoaded', function() { 39930 function tryInitCompareButtons() { 39931 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 39932 window.initializeCompareButtonStates(); 39933 } else { 39934 setTimeout(tryInitCompareButtons, 100); 39935 } 39936 } 39937 tryInitCompareButtons(); 39938 }); 39939 39940 // Self-contained wishlist functionality for card-product 39941 (function() { 39942 // Wishlist translations 39943 var wishlistTranslations = { 39944 'en': { 39945 addToWishlist: 'Add to My Favorites', 39946 createCategory: 'Create new category:', 39947 categoryPlaceholder: 'Category name', 39948 createAndAdd: 'Create & Add Item', 39949 alreadyAdded: '(Already added)', 39950 addedToWishlist: 'added to My Favorites', 39951 removedFromWishlist: 'removed from My Favorites', 39952 allFavorites: 'All Favorites' 39953 }, 39954 'cs': { 39955 addToWishlist: 'PÅidat do oblÃbených', 39956 createCategory: 'VytvoÅit novou skupinu:', 39957 categoryPlaceholder: 'Název nové skupiny', 39958 createAndAdd: 'VytvoÅit a pÅidat skupinu', 39959 alreadyAdded: '(Již pÅidáno)', 39960 addedToWishlist: 'pÅidáno do oblÃbených', 39961 removedFromWishlist: 'odebráno z oblÃbených', 39962 allFavorites: 'VÅ¡echny oblÃbené' 39963 }, 39964 'sk': { 39965 addToWishlist: 'PridaÅ¥ do obľúbených', 39966 createCategory: 'VytvoriÅ¥ novú kategóriu:', 39967 categoryPlaceholder: 'Názov kategórie', 39968 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 39969 alreadyAdded: '(Už pridané)', 39970 addedToWishlist: 'pridané do obľúbených', 39971 removedFromWishlist: 'odstránené z obľúbených', 39972 allFavorites: 'VÅ¡etky obľúbené' 39973 }, 39974 'de': { 39975 addToWishlist: 'Zu meinen Favoriten hinzufügen', 39976 createCategory: 'Neue Kategorie erstellen:', 39977 categoryPlaceholder: 'Kategoriename', 39978 createAndAdd: 'Erstellen & hinzufügen', 39979 alreadyAdded: '(Bereits hinzugefügt)', 39980 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 39981 removedFromWishlist: 'aus meinen Favoriten entfernt', 39982 allFavorites: 'Alle Favoriten' 39983 }, 39984 'fr': { 39985 addToWishlist: 'Ajouter à mes favoris', 39986 createCategory: 'Créer une nouvelle catégorie :', 39987 categoryPlaceholder: 'Nom de la catégorie', 39988 createAndAdd: 'Créer et ajouter', 39989 alreadyAdded: '(Déjà ajouté)', 39990 addedToWishlist: 'ajouté à mes favoris', 39991 removedFromWishlist: 'retiré de mes favoris', 39992 allFavorites: 'Tous les favoris' 39993 }, 39994 'it': { 39995 addToWishlist: 'Aggiungi ai preferiti', 39996 createCategory: 'Crea nuova categoria:', 39997 categoryPlaceholder: 'Nome categoria', 39998 createAndAdd: 'Crea e aggiungi', 39999 alreadyAdded: '(Già aggiunto)', 40000 addedToWishlist: 'aggiunto ai preferiti', 40001 removedFromWishlist: 'rimosso dai preferiti', 40002 allFavorites: 'Tutti i preferiti' 40003 }, 40004 'es': { 40005 addToWishlist: 'Añadir a mis favoritos', 40006 createCategory: 'Crear nueva categorÃa:', 40007 categoryPlaceholder: 'Nombre de la categorÃa', 40008 createAndAdd: 'Crear y añadir', 40009 alreadyAdded: '(Ya añadido)', 40010 addedToWishlist: 'añadido a mis favoritos', 40011 removedFromWishlist: 'eliminado de mis favoritos', 40012 allFavorites: 'Todos los favoritos' 40013 }, 40014 'nl': { 40015 addToWishlist: 'Toevoegen aan mijn favorieten', 40016 createCategory: 'Nieuwe categorie aanmaken:', 40017 categoryPlaceholder: 'Categorienaam', 40018 createAndAdd: 'Aanmaken & toevoegen', 40019 alreadyAdded: '(Al toegevoegd)', 40020 addedToWishlist: 'toegevoegd aan mijn favorieten', 40021 removedFromWishlist: 'verwijderd uit mijn favorieten', 40022 allFavorites: 'Alle favorieten' 40023 }, 40024 'pl': { 40025 addToWishlist: 'Dodaj do ulubionych', 40026 createCategory: 'Utwórz nowÄ kategoriÄ:', 40027 categoryPlaceholder: 'Nazwa kategorii', 40028 createAndAdd: 'Utwórz i dodaj', 40029 alreadyAdded: '(Już dodane)', 40030 addedToWishlist: 'dodano do ulubionych', 40031 removedFromWishlist: 'usuniÄto z ulubionych', 40032 allFavorites: 'Wszystkie ulubione' 40033 }, 40034 'hu': { 40035 addToWishlist: 'Hozzáadás a kedvencekhez', 40036 createCategory: 'Ãj kategória létrehozása:', 40037 categoryPlaceholder: 'Kategória neve', 40038 createAndAdd: 'Létrehozás és hozzáadás', 40039 alreadyAdded: '(Már hozzáadva)', 40040 addedToWishlist: 'hozzáadva a kedvencekhez', 40041 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 40042 allFavorites: 'Minden kedvenc' 40043 }, 40044 'ro': { 40045 addToWishlist: 'AdaugÄ la favorite', 40046 createCategory: 'CreeazÄ o nouÄ categorie:', 40047 categoryPlaceholder: 'Nume categorie', 40048 createAndAdd: 'CreeazÄ Èi adaugÄ', 40049 alreadyAdded: '(Deja adÄugat)', 40050 addedToWishlist: 'adÄugat la favorite', 40051 removedFromWishlist: 'eliminat din favorite', 40052 allFavorites: 'Toate preferinÈele' 40053 }, 40054 'bg': { 40055 addToWishlist: 'Ðобави в лÑбими', 40056 createCategory: 'СÑздай нова каÑегоÑиÑ:', 40057 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 40058 createAndAdd: 'СÑздай и добави', 40059 alreadyAdded: '(ÐеÑе добавено)', 40060 addedToWishlist: 'добавено в лÑбими', 40061 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 40062 allFavorites: 'ÐÑиÑки лÑбими' 40063 }, 40064 'hr': { 40065 addToWishlist: 'Dodaj u favorite', 40066 createCategory: 'Kreiraj novu kategoriju:', 40067 categoryPlaceholder: 'Naziv kategorije', 40068 createAndAdd: 'Kreiraj i dodaj', 40069 alreadyAdded: '(VeÄ dodano)', 40070 addedToWishlist: 'dodano u favorite', 40071 removedFromWishlist: 'uklonjeno iz favorita', 40072 allFavorites: 'Sva omiljena' 40073 }, 40074 'fi': { 40075 addToWishlist: 'Lisää suosikkeihin', 40076 createCategory: 'Luo uusi kategoria:', 40077 categoryPlaceholder: 'Kategorian nimi', 40078 createAndAdd: 'Luo ja lisää', 40079 alreadyAdded: '(Jo lisätty)', 40080 addedToWishlist: 'lisätty suosikkeihin', 40081 removedFromWishlist: 'poistettu suosikeista',
40082 allFavorites: 'Kaikki suosikit' 40083 }, 40084 'gr': { 40085 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 40086 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 40087 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 40088 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 40089 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 40090 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 40091 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 40092 allFavorites: 'Îλα Ïα αγαÏημÎνα' 40093 }, 40094 'no': { 40095 addToWishlist: 'Legg til i favoritter', 40096 createCategory: 'Opprett ny kategori:', 40097 categoryPlaceholder: 'Kategorinavn', 40098 createAndAdd: 'Opprett og legg til', 40099 alreadyAdded: '(Allerede lagt til)', 40100 addedToWishlist: 'lagt til i favoritter', 40101 removedFromWishlist: 'fjernet fra favoritter', 40102 allFavorites: 'Alle favoritter' 40103 }, 40104 'pt-PT': { 40105 addToWishlist: 'Adicionar aos favoritos', 40106 createCategory: 'Criar nova categoria:', 40107 categoryPlaceholder: 'Nome da categoria', 40108 createAndAdd: 'Criar e adicionar', 40109 alreadyAdded: '(Já adicionado)', 40110 addedToWishlist: 'adicionado aos favoritos', 40111 removedFromWishlist: 'removido dos favoritos', 40112 allFavorites: 'Todos os favoritos' 40113 }, 40114 'sl': { 40115 addToWishlist: 'Dodaj med priljubljene', 40116 createCategory: 'Ustvari novo kategorijo:', 40117 categoryPlaceholder: 'Ime kategorije', 40118 createAndAdd: 'Ustvari in dodaj', 40119 alreadyAdded: '(Že dodano)', 40120 addedToWishlist: 'dodano med priljubljene', 40121 removedFromWishlist: 'odstranjeno iz priljubljenih', 40122 allFavorites: 'Vsi priljubljeni' 40123 }, 40124 'sv': { 40125 addToWishlist: 'Lägg till i favoriter', 40126 createCategory: 'Skapa ny kategori:', 40127 categoryPlaceholder: 'Kategorinamn', 40128 createAndAdd: 'Skapa och lägg till', 40129 alreadyAdded: '(Redan tillagd)', 40130 addedToWishlist: 'tillagd i favoriter', 40131 removedFromWishlist: 'borttagen frÃ¥n favoriter', 40132 allFavorites: 'Alla favoriter' 40133 }, 40134 'lv': { 40135 addToWishlist: 'Pievienot favorÄ«tiem', 40136 createCategory: 'Izveidot jaunu kategoriju:', 40137 categoryPlaceholder: 'Kategorijas nosaukums', 40138 createAndAdd: 'Izveidot un pievienot', 40139 alreadyAdded: '(Jau pievienots)', 40140 addedToWishlist: 'pievienots favorÄ«tiem', 40141 removedFromWishlist: 'noÅemts no favorÄ«tiem', 40142 allFavorites: 'Visas favorÄ«tus' 40143 }, 40144 'lt': { 40145 addToWishlist: 'PridÄti į mÄgstamiausius', 40146 createCategory: 'Sukurti naujÄ kategorijÄ :', 40147 categoryPlaceholder: 'Kategorijos pavadinimas', 40148 createAndAdd: 'Sukurti ir pridÄti', 40149 alreadyAdded: '(Jau pridÄta)', 40150 addedToWishlist: 'pridÄta į mÄgstamiausius', 40151 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 40152 allFavorites: 'Visos mÄgstamiausios' 40153 }, 40154 'ee': { 40155 addToWishlist: 'Lisa lemmikutesse', 40156 createCategory: 'Loo uus kategooria:', 40157 categoryPlaceholder: 'Kategooria nimi', 40158 createAndAdd: 'Loo ja lisa', 40159 alreadyAdded: '(Juba lisatud)', 40160 addedToWishlist: 'lisatud lemmikutesse', 40161 removedFromWishlist: 'eemaldatud lemmikutest', 40162 allFavorites: 'Kõik lemmikud' 40163 }, 40164 'dk': { 40165 addToWishlist: 'Tilføj til favoritter', 40166 createCategory: 'Opret ny kategori:', 40167 categoryPlaceholder: 'Kategorinavn', 40168 createAndAdd: 'Opret og tilføj', 40169 alreadyAdded: '(Allerede tilføjet)', 40170 addedToWishlist: 'tilføjet til favoritter', 40171 removedFromWishlist: 'fjernet fra favoritter', 40172 allFavorites: 'Alle favoritter' 40173 } 40174 }; 40175 40176 function getWishlistLang() { 40177 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 40178 // Normalize for region codes (e.g., pt-PT, sl) 40179 if (lang.startsWith('pt-PT')) return 'pt-PT'; 40180 if (lang.startsWith('sl')) return 'sl'; 40181 if (lang.startsWith('cs')) return 'cs'; 40182 if (lang.startsWith('sk')) return 'sk'; 40183 if (lang.startsWith('de')) return 'de'; 40184 if (lang.startsWith('fr')) return 'fr'; 40185 if (lang.startsWith('it')) return 'it'; 40186 if (lang.startsWith('es')) return 'es'; 40187 if (lang.startsWith('nl')) return 'nl'; 40188 if (lang.startsWith('pl')) return 'pl'; 40189 if (lang.startsWith('hu')) return 'hu'; 40190 if (lang.startsWith('ro')) return 'ro'; 40191 if (lang.startsWith('bg')) return 'bg'; 40192 if (lang.startsWith('hr')) return 'hr'; 40193 if (lang.startsWith('fi')) return 'fi'; 40194 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 40195 if (lang.startsWith('no')) return 'no'; 40196 if (lang.startsWith('sv')) return 'sv'; 40197 if (lang.startsWith('lv')) return 'lv'; 40198 if (lang.startsWith('lt')) return 'lt'; 40199 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 40200 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 40201 return 'en'; 40202 } 40203 40204 // Get or initialize the wishlist array in localStorage 40205 function getWishlist() { 40206 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 40207 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 40208 categories: [ 40209 { 40210 id: 'all-favorites', 40211 name: 'All Favorites', 40212 items: [] 40213 } 40214 ], 40215 version: 2 40216 }; 40217 40218 // Handle migration from old format (array of items) to new format (categories) 40219 if (Array.isArray(wishlist)) { 40220 return { 40221 categories: [ 40222 { 40223 id: 'all-favorites', 40224 name: 'All Favorites', 40225 items: wishlist 40226 } 40227 ], 40228 version: 2 40229 }; 40230 } 40231 40232 return wishlist; 40233 } 40234 40235 // Save wishlist to localStorage 40236 function saveWishlist(wishlist) { 40237 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 40238 // Dispatch an event so other parts of the site can react to wishlist changes 40239 document.dispatchEvent(new CustomEvent('wishlist:updated', { 40240 detail: { wishlist: wishlist } 40241 })); 40242 40243 // Count total items across all categories 40244 const totalItems = wishlist.categories.reduce((total, category) => { 40245 return total + category.items.length; 40246 }, 0); 40247 40248 // Update all wishlist counters 40249 updateWishlistCounters(totalItems); 40250 } 40251 40252 // Update all wishlist counters on the page 40253 function updateWishlistCounters(count) { 40254 const counters = document.querySelectorAll('.wishlist-count');
40255 counters.forEach(counter => { 40256 counter.textContent = count; 40257 40258 // If the counter is hidden and count > 0, show it 40259 if (count > 0 && counter.hasAttribute('hidden')) { 40260 counter.removeAttribute('hidden'); 40261 } 40262 // If the counter is visible and count = 0, hide it 40263 else if (count === 0 && !counter.hasAttribute('hidden')) { 40264 counter.setAttribute('hidden', 'true'); 40265 } 40266 }); 40267 } 40268 40269 // Check if a product is in the wishlist (in any category) 40270 function isInWishlist(productId) { 40271 const wishlist = getWishlist(); 40272 return wishlist.categories.some(category => 40273 category.items.some(item => item.id === productId) 40274 ); 40275 } 40276 40277 // Get all categories 40278 function getCategories() { 40279 return getWishlist().categories; 40280 } 40281 40282 // Create a new category 40283 function createCategory(name) { 40284 const wishlist = getWishlist(); 40285 const categoryId = 'category-' + Date.now(); 40286 40287 wishlist.categories.push({ 40288 id: categoryId, 40289 name: name, 40290 items: [] 40291 }); 40292 40293 saveWishlist(wishlist); 40294 return categoryId; 40295 } 40296 40297 // Add a product to a specific category 40298 function addToCategory(product, categoryId) { 40299 const wishlist = getWishlist(); 40300 const category = wishlist.categories.find(cat => cat.id === categoryId); 40301 40302 if (!category) return false; 40303 40304 // Check if product already exists in ANY category (not just this one) 40305 if (isInWishlist(product.id)) { 40306 return false; // Product already in wishlist 40307 } 40308 40309 // Add product to category 40310 category.items.push(product); 40311 saveWishlist(wishlist); 40312 40313 // Dispatch event for global sync 40314 document.dispatchEvent(new CustomEvent('wishlist:updated', { 40315 detail: { productId: product.id, added: true } 40316 })); 40317 40318 return true; 40319 } 40320 40321 // Add a product to the default "All Favorites" category 40322 function addToWishlist(product) { 40323 return addToCategory(product, 'all-favorites'); 40324 } 40325 40326 // Remove a product from all categories 40327 function removeFromWishlist(productId) { 40328 const wishlist = getWishlist(); 40329 let removed = false; 40330 40331 wishlist.categories.forEach(category => { 40332 const initialLength = category.items.length; 40333 category.items = category.items.filter(item => item.id !== productId); 40334 if (category.items.length !== initialLength) { 40335 removed = true; 40336 } 40337 }); 40338 40339 if (removed) { 40340 saveWishlist(wishlist); 40341 } 40342 40343 return removed; 40344 } 40345 40346 // Toggle a product in the wishlist 40347 function toggleWishlistItem(product) { 40348 if (isInWishlist(product.id)) { 40349 // If already in wishlist, remove it 40350 const wasRemoved = removeFromWishlist(product.id); 40351 40352 // Update heart icon if the product was successfully removed 40353 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 40354 if (heartIcon && wasRemoved) { 40355 heartIcon.setAttribute('fill', 'none'); 40356 showWishlistToast(false, product.title); 40357 40358 // Dispatch event for global sync 40359 document.dispatchEvent(new CustomEvent('wishlist:updated', { 40360 detail: { productId: product.id, added: false } 40361 })); 40362 } 40363 return wasRemoved; 40364 } else { 40365 // If not in wishlist, show category selection popup 40366 showCategorySelectionPopup(product); 40367 return false; // Don't return true unless we actually add the product 40368 } 40369 } 40370 40371 // Show wishlist category selection popup 40372 function showCategorySelectionPopup(product) { 40373 // Remove any existing popup 40374 const existingPopup = document.getElementById('wishlist-category-popup'); 40375 if (existingPopup) { 40376 existingPopup.remove(); 40377 } 40378 40379 const lang = getWishlistLang(); 40380 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 40381 40382 // Create popup container 40383 const popup = document.createElement('div'); 40384 popup.id = 'wishlist-category-popup'; 40385 popup.className = 'wishlist-category-popup'; 40386 40387 // Create popup content 40388 const content = document.createElement('div'); 40389 content.className = 'wishlist-category-popup-content'; 40390 40391 // Create header 40392 const title = document.createElement('h2'); 40393 title.textContent = translations.addToWishlist; // Translate 40394 40395 const closeButton = document.createElement('button'); 40396 closeButton.className = 'wishlist-category-popup-close'; 40397 closeButton.setAttribute('aria-label', 'Close'); 40398 closeButton.addEventListener('click', () => { 40399 popup.remove(); 40400 }); 40401 40402 // Create category list 40403 const categoryList = document.createElement('div'); 40404 categoryList.className = 'wishlist-category-list'; 40405 40406 // Get categories 40407 const categories = getCategories(); 40408 40409 // Add category options
40410 categories.forEach(category => { 40411 const categoryOption = document.createElement('div'); 40412 categoryOption.className = 'wishlist-category-option'; 40413 40414 // Use translation for default category name 40415 categoryOption.textContent = category.id === 'all-favorites' 40416 ? (translations.allFavorites || category.name) 40417 : category.name; 40418 40419 // Highlight if product already in this category 40420 if (category.items.some(item => item.id === product.id)) { 40421 categoryOption.style.backgroundColor = '#f0f0f0'; 40422 categoryOption.style.color = '#999'; 40423 categoryOption.style.fontStyle = 'italic'; 40424 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 40425 categoryOption.style.cursor = 'default'; 40426 } else { 40427 categoryOption.addEventListener('click', () => { 40428 const wasAdded = addToCategory(product, category.id); 40429 40430 if (wasAdded) { 40431 // Update heart icon after successful addition 40432 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 40433 if (heartIcon) { 40434 heartIcon.setAttribute('fill', '#333333'); 40435 } 40436 40437 showWishlistToast(true, product.title); 40438 popup.remove(); 40439 } 40440 }); 40441 } 40442 40443 categoryList.appendChild(categoryOption); 40444 }); 40445 40446 // Create "add new category" section 40447 const newCategorySection = document.createElement('div'); 40448 newCategorySection.style.borderTop = '1px solid #eee'; 40449 newCategorySection.style.paddingTop = '15px'; 40450 newCategorySection.style.marginTop = '10px'; 40451 40452 const newCategoryLabel = document.createElement('label'); 40453 newCategoryLabel.textContent = translations.createCategory; // Translate 40454 40455 const newCategoryInput = document.createElement('input'); 40456 newCategoryInput.type = 'text'; 40457 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 40458 40459 const createButton = document.createElement('button'); 40460 createButton.className = 'create-category-button'; 40461 createButton.textContent = translations.createAndAdd; // Translate 40462 40463 createButton.addEventListener('click', () => { 40464 const categoryName = newCategoryInput.value.trim(); 40465 if (categoryName) { 40466 const categoryId = createCategory(categoryName); 40467 const wasAdded = addToCategory(product, categoryId); 40468 40469 if (wasAdded) { 40470 // Update heart icon after successful addition 40471 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 40472 if (heartIcon) { 40473 heartIcon.setAttribute('fill', '#333333'); 40474 } 40475 40476 showWishlistToast(true, product.title); 40477 popup.remove(); 40478 } 40479 } 40480 }); 40481 40482 newCategorySection.appendChild(newCategoryLabel); 40483 newCategorySection.appendChild(newCategoryInput); 40484 newCategorySection.appendChild(createButton); 40485 40486 // Assemble popup 40487 content.appendChild(title); 40488 content.appendChild(closeButton); 40489 content.appendChild(categoryList); 40490 content.appendChild(newCategorySection); 40491 popup.appendChild(content); 40492 40493 // Add to document 40494 document.body.appendChild(popup); 40495 40496 // Focus the input 40497 setTimeout(() => { 40498 newCategoryInput.focus(); 40499 }, 100); 40500 40501 // Close when clicking outside content 40502 popup.addEventListener('click', (e) => { 40503 if (e.target === popup) { 40504 popup.remove(); 40505 } 40506 }); 40507 } 40508 40509 // Show a toast notification 40510 function showWishlistToast(added, productTitle) { 40511 // Create or get toast container 40512 let toastContainer = document.getElementById('wishlist-toast'); 40513 if (!toastContainer) { 40514 toastContainer = document.createElement('div'); 40515 toastContainer.id = 'wishlist-toast'; 40516 toastContainer.style.position = 'fixed'; 40517 toastContainer.style.bottom = '20px'; 40518 toastContainer.style.right = '20px'; 40519 toastContainer.style.zIndex = '9999'; 40520 document.body.appendChild(toastContainer); 40521 } 40522 40523 // Create toast 40524 const toast = document.createElement('div'); 40525 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 40526 toast.style.color = 'white'; 40527 toast.style.padding = '12px 20px'; 40528 toast.style.borderRadius = '0'; 40529 toast.style.marginTop = '10px'; 40530 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 40531 toast.style.transition = 'all 0.3s ease'; 40532 toast.style.opacity = '0'; 40533 toast.style.fontFamily = 'Montserrat, sans-serif'; 40534 40535 // Choose text based on action 40536 const lang = getWishlistLang(); 40537 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 40538 toast.textContent = added 40539 ? `${productTitle} ${translations.addedToWishlist}` // Translate 40540 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 40541 40542 // Add to container 40543 toastContainer.appendChild(toast); 40544 40545 // Animate in 40546 setTimeout(() => { 40547 toast.style.opacity = '1'; 40548 }, 10); 40549 40550 // Animate out and remove 40551 setTimeout(() => { 40552 toast.style.opacity = '0'; 40553 setTimeout(() => { 40554 toastContainer.removeChild(toast); 40555 }, 300); 40556 }, 3000); 40557 } 40558 40559 // Initialize wishlist buttons 40560 function initCardWishlistButtons() { 40561 const wishlistButtons = document.querySelectorAll('.card-wis
40561hlist-button'); 40562 40563 wishlistButtons.forEach(button => { 40564 // Skip if already initialized 40565 if (button.dataset.initializedWishlist === 'true') return; 40566 button.dataset.initializedWishlist = 'true'; 40567 40568 const productId = button.getAttribute('data-wishlist-product'); 40569 if (!productId) return; 40570 40571 // Get product details from the card 40572 const card = button.closest('.card-wrapper'); 40573 const productDetails = { 40574 id: productId, 40575 title: card.querySelector('.card__heading')?.textContent.trim() || '', 40576 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 40577 price: card.querySelector('.price')?.textContent.trim() || '', 40578 image: card.querySelector('img')?.src || '', 40579 url: card.querySelector('a[href*="/products/"]')?.href || '' 40580 }; 40581 40582 // Set initial state using global function 40583 const heartIcon = button.querySelector('path'); 40584 if (heartIcon) { 40585 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 40586 heartIcon.setAttribute('fill', '#333333'); 40587 } else { 40588 heartIcon.setAttribute('fill', 'none'); 40589 } 40590 } 40591 40592 // Add click handler 40593 button.addEventListener('click', function(e) { 40594 e.preventDefault(); 40595 e.stopPropagation(); 40596 e.stopImmediatePropagation(); 40597 toggleWishlistItem(productDetails); 40598 }); 40599 40600 // Prevent navigation on mousedown/touchstart 40601 button.addEventListener('mousedown', function(e) { 40602 e.preventDefault(); 40603 e.stopPropagation(); 40604 }); 40605 40606 button.addEventListener('touchstart', function(e) { 40607 e.preventDefault(); 40608 e.stopPropagation(); 40609 }); 40610 }); 40611 } 40612 40613 // Initialize the wishlist counter on page load 40614 const wishlist = getWishlist(); 40615 const totalItems = wishlist.categories.reduce((total, category) => { 40616 return total + category.items.length; 40617 }, 0); 40618 updateWishlistCounters(totalItems); 40619 40620 // Initialize on DOM ready 40621 if (document.readyState === 'loading') { 40622 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 40623 } else { 40624 initCardWishlistButtons(); 40625 } 40626 40627 // Reinitialize on Shopify section load 40628 document.addEventListener('shopify:section:load', function() { 40629 setTimeout(initCardWishlistButtons, 100); 40630 }); 40631 40632 // Listen for wishlist updates from other parts of the site 40633 document.addEventListener('wishlist:updated', function() { 40634 setTimeout(initCardWishlistButtons, 100); 40635 }); 40636 })(); 40637</script>
40637 40638 40639<!-- Price info icon styles --> 40640<style> 40641 /* Price container with icon */ 40642 .price-container-with-info { 40643 position: relative; 40644 display: flex; 40645 align-items: center; 40646 gap: 8px; 40647 } 40648 40649 /* Info icon - hidden by default, shown on card hover */ 40650 .price-info-icon { 40651 position: relative; 40652 display: inline-flex; 40653 align-items: center; 40654 justify-content: center; 40655 color: #666; 40656 cursor: help; 40657 opacity: 0; 40658 transition: opacity 0.3s ease; 40659 40660 padding: 4px; /* Add padding to increase clickable area */ 40661 min-width: 20px; /* Ensure minimum clickable area */ 40662 min-height: 20px; 40663 z-index: 15; /* Above everything else including compare button */ 40664 pointer-events: auto; /* Allow interaction */ 40665 } 40666 40667 /* Show icon on card hover */ 40668 .card-wrapper:hover .price-info-icon { 40669 opacity: 1; 40670 } 40671 40672 .price-info-icon svg { 40673 width: 14px; 40674 height: 14px; 40675 stroke-width: 1.5; 40676 } 40677 40678 /* Tooltip styles */ 40679 .price-info-tooltip { 40680 position: absolute; 40681 bottom: calc(100% + 6px); 40682 top: auto; 40683 left: 0; 40684 transform: none; 40685 min-width: 310px; 40686 background: #FFFFFF; 40687 color: #232323; 40688 border: 1px solid #EEEEEE; 40689 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 40690 padding: 12px 16px; 40691 font-size: 13px; 40692 font-family: 'Montserrat', sans-serif; 40693 z-index: 10000; 40694 opacity: 0; 40695 transition: opacity 0.18s; 40696 white-space: pre-line; 40697 text-align: left; 40698 border-radius: 0; 40699 visibility: hidden; 40700 pointer-events: none; 40701 } 40702 40703 /* Show tooltip on icon hover */ 40704 .price-info-icon:hover .price-info-tooltip { 40705 visibility: visible; 40706 opacity: 1; 40707 } 40708 40709 /* Ensure tooltip is never clipped */ 40710 .price-container-with-info, 40711 .card-information, 40712 .card__content { 40713 overflow: visible !important; 40714 } 40715 40716 /* Mobile adjustments */ 40717 @media screen and (max-width: 768px) { 40718 .price-info-tooltip { 40719 min-width: 200px; 40720 font-size: 12px; 40721 padding: 10px 12px; 40722 } 40723 } 40724</style> 40725 40726 </li> 40727 <li 40728 class="grid__item" 40729 40730 > 40731 40732<div class="card-wrapper product-card-wrapper underline-links-hover"> 40733 40734 <div 40735 class=" 40736 card card--standard 40737 card--media 40738 40739 40740 40741 40742 40743 " 40744 style="--ratio-percent: 100.0%;" 40745 data-product-id="9746937053482" 40746 data-description="Lámpara de pie de exterior con tapa opalina para bombilla LED con casquillo E27." 40747 40748 data-ip-rate="IP44" 40749 40750 data-variant-id="52387977134378" 40751 data-price="120.00 EUR" 40752 data-compare-at-price="" 40753 data-available="true" 40754 data-barcode="8595685423838" 40755 data-ip-rate="IP44" 40756 data-lumens="" 40757 data-power-source="" 40758 data-watt="11.0" 40759 data-kelvin="" 40760 data-light-color="" 40761 data-diameter="8.0" 40762 data-weight-netto="1385.0" 40763 data-weight-unit="g" 40764 data-mounting-hole-size="" 40765 data-recess-depth="" 40766 data-suspension-lenght="" 40767 data-turn-angle="" 40768 data-tilt-angle="" 40769 data-switch="" 40770 data-socket="LED E27" 40771 data-light-source-recomended="G13307" 40772 data-height="80" 40773 data-length="" 40774 data-Length="" 40775 > 40776 <div 40777 class="card__inner color-scheme-2 gradient ratio" 40778 style="--ratio-percent: 100.0%;" 40779 > 40780 40781 40782<div class="ip-rate-badge"> 40783 <span>IP44</span> 40784 </div><div class="card__media"> 40785 <a class="card__media-link-content" href="/products/bonnie-80-bollard-lamp" aria-label="BONNIE DE PIÃ"> 40786 <div class="media media--transparent media--hover-effect"> 40787 40788 <img 40789 class="product-image motion-reduce" 40790 srcset="//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=165 165w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=360 360w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=533 533w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=720 720w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=940 940w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=1066 1066w,//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423 4899w 40791 " 40792 src="//rendl.es/cdn/shop/files/r13636-1.jpg?v=1745935423&width=533" 40793 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 40794 alt="RENDL outdoor lamp BONNIE 80 bollard anthracite grey 230V LED E27 11W IP44 R13636 1" 40795 40796 loading="lazy" 40797 40798 width="4899" 40799 height="4899" 40800 > 40801 40802<img 40803 class="product-image motion-reduce" 40804 srcset="//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=165 165w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=360 360w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=533 533w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=720 720w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=940 940w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=1066 1066w,//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880 3162w 40805 " 40806 src="//rendl.es/cdn/shop/files/r13636-2.jpg?v=1762477880&width=533" 40807 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 40808 alt="" 40809 loading="lazy" 40810 width="3162" 40811 height="3162" 40812 ></div> 40813 </a> 40814 40815<div class="card-media-icons"><div class="dimmable-icon"> 40816 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Dimmable.svg?v=1753944550" alt="Dimmable" width="14" height="14"> 40817 <div class="dimmable-tooltip">Atenuable con fuente de luz adecuada</div> 40818 </div></div><div class="card-variant-swatches"><a 40819 class="card-variant-swatch" 40820 href="/products/bonnie-80-bollard-lamp?variant=52387977134378" 40821 40822 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 40823 40824 aria-label="gris antracita" 40825 >
40826 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 40827 <div class="card__information"> 40828 <h3 40829 class="card__heading" 40830 40831 > 40832 <a 40833 href="/products/bonnie-80-bollard-lamp" 40834 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746937053482" 40835 class="full-unstyled-link" 40836 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746937053482 NoMediaStandardBadge-template--28113427169578__product-grid-9746937053482" 40837 > 40838 BONNIE DE PIà 40839 </a> 40840 </h3> 40841 </div> 40842 <div class="card__badge bottom left"></div> 40843 </div> 40844 </div> 40845 <div class="card__content"> 40846 <div class="card__information"> 40847 <h3 40848 class="card__heading h5" 40849 40850 id="title-template--28113427169578__product-grid-9746937053482" 40851 40852 > 40853 <a 40854 href="/products/bonnie-80-bollard-lamp" 40855 id="CardLink-template--28113427169578__product-grid-9746937053482" 40856 class="full-unstyled-link" 40857 aria-labelledby="CardLink-template--28113427169578__product-grid-9746937053482 Badge-template--28113427169578__product-grid-9746937053482" 40858 > 40859 BONNIE DE PIà 40860 </a> 40861 </h3><div class="card__description"> 40862 Lámpara de pie de exterior con tapa opalina para bombilla LED con casquillo E27. 40863 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 40864 40865<div 40866 class=" 40867 price " 40868 > 40869 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 40870 <span class="price-item price-item--regular"> 40871 120.00 EUR 40872 </span></div> 40873 <div class="price__sale"> 40874 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 40875 <span> 40876 <s class="price-item price-item--regular"> 40877 40878 40879 40880 </s> 40881 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 40882 <span class="price-item price-item--sale price-item--last"> 40883 120.00 EUR 40884 </span> 40885 </div> 40886 <small class="unit-price caption hidden"> 40887 <span class="visually-hidden">Precio unitario</span> 40888 <span class="price-item price-item--last"> 40889 <span></span> 40890 <span aria-hidden="true">/</span> 40891 <span class="visually-hidden"> por </span> 40892 <span> 40893 </span> 40894 </span> 40895 </small> 40896 </div></div> 40897 40898 40899</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 40900 <button class="compare-button-simple" 40901 data-product-id="9746937053482" 40902 data-product-title="BONNIE DE PIÃ" 40903 data-product-handle="bonnie-80-bollard-lamp"> 40904 <span class="compare-button-content"> 40905 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 40906 <span class="compare-text" data-translate="compare">compare</span> 40907 </span> 40908 <span class="compare-spinner-small"> 40909 <!-- Small spinner for button --> 40910 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 40911 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 40912 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 40913 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
40913inite"/> 40914 </path> 40915 </svg> 40916 </span> 40917 </button> 40918 40919 <!-- Wishlist button next to compare button --> 40920 <button type="button" class="card-wishlist-button" data-wishlist-product="9746937053482"> 40921 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 40922 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 40923 </svg> 40924 </button> 40925 </div></div> 40926 </div> 40927 40928 40929 40930 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746937053482" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 40931 type="hidden" 40932 name="id" 40933 value="52387977134378" 40934 class="product-variant-id" 40935 40936 > 40937 <button 40938 id="quick-add-template--28113427169578__product-grid9746937053482-submit" 40939 type="submit" 40940 name="add" 40941 class="quick-add__submit button button--full-width button--secondary" 40942 aria-haspopup="dialog" 40943 aria-labelledby="quick-add-template--28113427169578__product-grid9746937053482-submit title-template--28113427169578__product-grid-9746937053482" 40944 aria-live="polite" 40945 data-sold-out-message="true" 40946 40947 > 40948 <span>Agregar al carrito 40949</span> 40950 <span class="sold-out-message hidden"> 40951 En camino 40952 </span> 40953 40954<div class="loading__spinner hidden"> 40955 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 40956 40957</div> 40958</button><input type="hidden" name="product-id" value="9746937053482" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 40959 40960 <div class="card__badge bottom left"></div> 40961 </div> 40962 </div> 40963 </div>
40963<script> 40964 // Initialize global compare translations only once 40965 if (typeof window.compareButtonTranslations === 'undefined') { 40966 window.compareButtonTranslations = { 40967 compare: { 40968 en: 'compare', 40969 cs: 'porovnat', 40970 sk: 'porovnaÅ¥', 40971 de: 'vergleichen', 40972 at: 'vergleichen', 40973 ch: 'vergleichen', 40974 fr: 'comparer', 40975 be: 'comparer', 40976 lu: 'comparer', 40977 it: 'confronta', 40978 es: 'comparar', 40979 nl: 'vergelijken', 40980 pl: 'porównaj', 40981 hu: 'összehasonlÃt', 40982 ro: 'comparÄ', 40983 bg: 'ÑÑавни', 40984 hr: 'usporedi', 40985 fi: 'vertaile', 40986 gr: 'ÏÏγκÏιÏη', 40987 el: 'ÏÏγκÏιÏη', 40988 no: 'sammenlign', 40989 'pt-PT': 'comparar', 40990 sl: 'primerjaj', 40991 sv: 'jämför', 40992 lv: 'salÄ«dzinÄt', 40993 lt: 'palyginti', 40994 ee: 'võrdle', 40995 dk: 'sammenlign', 40996 gb: 'compare', 40997 uk: 'compare', 40998 ie: 'compare', 40999 us: 'compare', 41000 ca: 'compare', 41001 au: 'compare', 41002 nz: 'compare', 41003 ru: 'ÑÑавниÑÑ' 41004 }, 41005 remove: { 41006 en: 'remove', 41007 cs: 'odebrat', 41008 sk: 'odobraÅ¥', 41009 de: 'entfernen', 41010 at: 'entfernen', 41011 ch: 'entfernen', 41012 fr: 'supprimer', 41013 be: 'supprimer', 41014 lu: 'supprimer', 41015 it: 'rimuovi', 41016 es: 'eliminar', 41017 nl: 'verwijderen', 41018 pl: 'usuÅ', 41019 hu: 'eltávolÃt', 41020 ro: 'eliminÄ', 41021 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 41022 hr: 'ukloni', 41023 fi: 'poista', 41024 gr: 'αÏαίÏεÏη', 41025 el: 'αÏαίÏεÏη', 41026 no: 'fjern', 41027 'pt-PT': 'remover', 41028 sl: 'odstrani', 41029 sv: 'ta bort', 41030 lv: 'noÅemt', 41031 lt: 'paÅ¡alinti', 41032 ee: 'eemalda', 41033 dk: 'fjern', 41034 gb: 'remove', 41035 uk: 'remove', 41036 ie: 'remove', 41037 us: 'remove', 41038 ca: 'remove', 41039 au: 'remove', 41040 nz: 'remove', 41041 ru: 'ÑдалиÑÑ' 41042 }, 41043 added: { 41044 en: 'Added!', 41045 cs: 'PÅidáno!', 41046 sk: 'Pridané!', 41047 de: 'Hinzugefügt!', 41048 at: 'Hinzugefügt!', 41049 ch: 'Hinzugefügt!', 41050 fr: 'Ajouté!', 41051 be: 'Ajouté!', 41052 lu: 'Ajouté!', 41053 it: 'Aggiunto!', 41054 es: '¡Añadido!', 41055 nl: 'Toegevoegd!', 41056 pl: 'Dodano!', 41057 hu: 'Hozzáadva!', 41058 ro: 'AdÄugat!', 41059 bg: 'Ðобавено!', 41060 hr: 'Dodano!', 41061 fi: 'Lisätty!', 41062 gr: 'Î ÏοÏÏÎθηκε!', 41063 el: 'Î ÏοÏÏÎθηκε!', 41064 no: 'Lagt til!', 41065 'pt-PT': 'Adicionado!', 41066 sl: 'Dodano!', 41067 sv: 'Tillagd!', 41068 lv: 'Pievienots!', 41069 lt: 'PridÄta!', 41070 ee: 'Lisatud!', 41071 dk: 'Tilføjet!', 41072 gb: 'Added!', 41073 uk: 'Added!', 41074 ie: 'Added!', 41075 us: 'Added!', 41076 ca: 'Added!', 41077 au: 'Added!', 41078 nz: 'Added!', 41079 ru: 'Ðобавлено!' 41080 }, 41081 removed: { 41082 en: 'Removed!', 41083 cs: 'Odebráno!', 41084 sk: 'Odobrané!', 41085 de: 'Entfernt!', 41086 at: 'Entfernt!', 41087 ch: 'Entfernt!', 41088 fr: 'Supprimé!', 41089 be: 'Supprimé!', 41090 lu: 'Supprimé!', 41091 it: 'Rimosso!', 41092 es: '¡Eliminado!', 41093 nl: 'Verwijderd!', 41094 pl: 'UsuniÄto!', 41095 hu: 'EltávolÃtva!', 41096 ro: 'Eliminat!', 41097 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 41098 hr: 'Uklonjeno!', 41099 fi: 'Poistettu!', 41100 gr: 'ÎÏαιÏÎθηκε!', 41101 el: 'ÎÏαιÏÎθηκε!', 41102 no: 'Fjernet!', 41103 'pt-PT': 'Removido!', 41104 sl: 'Odstranjeno!', 41105 sv: 'Borttaget!', 41106 lv: 'NoÅemts!', 41107 lt: 'PaÅ¡alinta!', 41108 ee: 'Eemaldatud!', 41109 dk: 'Fjernet!', 41110 gb: 'Removed!', 41111 uk: 'Removed!', 41112 ie: 'Removed!', 41113 us: 'Removed!', 41114 ca: 'Removed!', 41115 au: 'Removed!', 41116 nz: 'Removed!', 41117 ru: 'Удалено!' 41118 } 41119 }; 41120 41121 // Tooltip translations for price info 41122 window.tooltipTranslations = { 41123 tooltipPrice: { 41124 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41125 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 41126 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 41127 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 41128 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 41129 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 41130 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 41131 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 41132 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 41133 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 41134 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 41135 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 41136 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 41137 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 41138 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 41139 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 41140 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 41141 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 41142 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 41143 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 41144 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 41145 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 41146 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 41147 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 41148 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
41148iks atskaitÄ«ts, ja piemÄrojams.", 41149 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 41150 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 41151 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 41152 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41153 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41154 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41155 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41156 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41157 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41158 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 41159 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 41160 }, 41161 tooltipOutlet: { 41162 en: "We do not provide additional wholesale discounts on outlet products.", 41163 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 41164 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 41165 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 41166 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 41167 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 41168 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 41169 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 41170 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 41171 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 41172 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 41173 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 41174 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 41175 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 41176 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 41177 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 41178 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 41179 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 41180 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 41181 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 41182 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 41183 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 41184 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 41185 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 41186 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 41187 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 41188 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 41189 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 41190 gb: "We do not provide additional wholesale discounts on outlet products.", 41191 uk: "We do not provide additional wholesale discounts on outlet products.", 41192 ie: "We do not provide additional wholesale discounts on outlet products.", 41193 us: "We do not provide additional wholesale discounts on outlet products.", 41194 ca: "We do not provide additional wholesale discounts on outlet products.", 41195 au: "We do not provide additional wholesale discounts on outlet products.", 41196 nz: "We do not provide additional wholesale discounts on outlet products.", 41197 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 41198 } 41199 }; 41200 41201 // Get current locale from document 41202 window.currentLocale = document.documentElement.lang || 'en'; 41203 41204 // Function to translate compare buttons 41205 window.translateCompareButtons = function() { 41206 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
41207 compareTexts.forEach(function(textEl) { 41208 const button = textEl.closest('.compare-button-simple'); 41209 const isInComparison = button && button.hasAttribute('data-in-comparison'); 41210 41211 if (isInComparison) { 41212 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 41213 textEl.textContent = translation; 41214 } else { 41215 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 41216 textEl.textContent = translation; 41217 } 41218 }); 41219 }; 41220 41221 // Function to format price with space as thousands separator (only for tooltip) 41222 function formatTooltipPrice(price) { 41223 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 41224 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 41225 } 41226 41227 // Function to translate tooltips with price 41228 window.translateTooltips = function() { 41229 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 41230 tooltips.forEach(function(tooltip) { 41231 const icon = tooltip.closest('.price-info-icon'); 41232 if (icon) { 41233 const status = icon.getAttribute('data-status'); 41234 // Check if this is an outlet product 41235 if (status === 'outlet') { 41236 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 41237 tooltip.textContent = translation; 41238 return; // Exit early for outlet products 41239 } 41240 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 41241 // Get wholesale price from the actual price display on the card 41242 const card = icon.closest('[data-product-id]'); 41243 let wholesalePrice = ''; 41244 if (card) { 41245 // Find the main price element on the card 41246 const priceElement = card.querySelector('.price .price-item--regular'); 41247 if (priceElement) { 41248 wholesalePrice = priceElement.textContent.trim(); 41249 } 41250 } 41251 if (retailPrice && wholesalePrice) { 41252 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 41253 let formattedRetailPrice = formatTooltipPrice(retailPrice); 41254 let formattedWholesalePrice = wholesalePrice; 41255 if (window.formatPriceText) { 41256 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 41257 } 41258 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 41259 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 41260 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 41261 tooltip.textContent = translatedText; 41262 } 41263 } 41264 }); 41265 }; 41266 41267 // Function to update button state based on comparison status 41268 window.updateCompareButtonState = function(productId, isInComparison) { 41269 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 41270 buttons.forEach(function(button) { 41271 const buttonContainer = button.closest('.compare-button-container'); 41272 const compareText = button.querySelector('.compare-text'); 41273 41274 if (isInComparison) { 41275 button.setAttribute('data-in-comparison', 'true'); 41276 button.classList.add('in-comparison'); 41277 buttonContainer.classList.add('in-comparison'); 41278 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 41279 compareText.textContent = removeText; 41280 } else { 41281 button.removeAttribute('data-in-comparison'); 41282 button.classList.remove('in-comparison'); 41283 buttonContainer.classList.remove('in-comparison'); 41284 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 41285 compareText.textContent = compareTextTranslation; 41286 } 41287 }); 41288 }; 41289 } 41290 41291 // Initialize compare button states based on localStorage 41292 window.initializeCompareButtonStates = function() {
41293 if (typeof window.RendlCompare !== 'undefined') { 41294 const compareItems = window.RendlCompare.getItems(); 41295 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 41296 const productId = button.getAttribute('data-product-id'); 41297 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 41298 window.updateCompareButtonState(productId, isInComparison); 41299 }); 41300 } 41301 }; 41302 41303 // Compare button UI animation - the actual functionality is handled by compare-system.js 41304 document.addEventListener('DOMContentLoaded', function() { 41305 // Apply translations on page load 41306 if (window.translateCompareButtons) { 41307 window.translateCompareButtons(); 41308 } 41309 41310 // Initialize button states based on comparison data 41311 setTimeout(function() { 41312 if (window.initializeCompareButtonStates) { 41313 window.initializeCompareButtonStates(); 41314 } 41315 }, 100); // Small delay to ensure compare system is loaded 41316 41317 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 41318 // Skip if already has event listener 41319 if (button.hasAttribute('data-compare-initialized')) { 41320 return; 41321 } 41322 button.setAttribute('data-compare-initialized', 'true'); 41323 41324 button.addEventListener('click', function(e) { 41325 var buttonContainer = button.closest('.compare-button-container'); 41326 var compareText = button.querySelector('.compare-text'); 41327 var isInComparison = button.hasAttribute('data-in-comparison'); 41328 var productId = button.getAttribute('data-product-id'); 41329 41330 // Prevent multiple clicks during loading 41331 if (button.classList.contains('loading')) { 41332 return; 41333 } 41334 41335 // Make button always visible during the process 41336 buttonContainer.classList.add('active'); 41337 41338 // Add loading class to show spinner 41339 button.classList.add('loading'); 41340 41341 // UI feedback timing 41342 setTimeout(function() { 41343 // Remove loading class and show success message 41344 button.classList.remove('loading'); 41345 button.classList.add('success'); 41346 41347 if (isInComparison) { 41348 // Removing from comparison 41349 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 41350 41351 // Update button state after removal 41352 setTimeout(function() { 41353 button.classList.remove('success'); 41354 window.updateCompareButtonState(productId, false); 41355 buttonContainer.classList.remove('active'); 41356 }, 1500); 41357 } else { 41358 // Adding to comparison 41359 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 41360 41361 // Update button state after addition 41362 setTimeout(function() { 41363 button.classList.remove('success'); 41364 window.updateCompareButtonState(productId, true); 41365 buttonContainer.classList.remove('active'); 41366 }, 1500); 41367 } 41368 }, 1200); 41369 }); 41370 }); 41371 41372 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 41373 setTimeout(function() { 41374 if (window.translateTooltips) { 41375 window.translateTooltips(); 41376 } 41377 }, 100); 41378 }); 41379 41380 // Ensure compare button states are initialized after RendlCompare is available 41381 document.addEventListener('DOMContentLoaded', function() { 41382 function tryInitCompareButtons() { 41383 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 41384 window.initializeCompareButtonStates(); 41385 } else { 41386 setTimeout(tryInitCompareButtons, 100); 41387 } 41388 } 41389 tryInitCompareButtons(); 41390 }); 41391 41392 // Self-contained wishlist functionality for card-product 41393 (function() { 41394 // Wishlist translations 41395 var wishlistTranslations = { 41396 'en': { 41397 addToWishlist: 'Add to My Favorites', 41398 createCategory: 'Create new category:', 41399 categoryPlaceholder: 'Category name', 41400 createAndAdd: 'Create & Add Item', 41401 alreadyAdded: '(Already added)', 41402 addedToWishlist: 'added to My Favorites', 41403 removedFromWishlist: 'removed from My Favorites', 41404 allFavorites: 'All Favorites' 41405 }, 41406 'cs': { 41407 addToWishlist: 'PÅidat do oblÃbených', 41408 createCategory: 'VytvoÅit novou skupinu:', 41409 categoryPlaceholder: 'Název nové skupiny', 41410 createAndAdd: 'VytvoÅit a pÅidat skupinu', 41411 alreadyAdded: '(Již pÅidáno)', 41412 addedToWishlist: 'pÅidáno do oblÃbených', 41413 removedFromWishlist: 'odebráno z oblÃbených', 41414 allFavorites: 'VÅ¡echny oblÃbené' 41415 }, 41416 'sk': { 41417 addToWishlist: 'PridaÅ¥ do obľúbených', 41418 createCategory: 'VytvoriÅ¥ novú kategóriu:', 41419 categoryPlaceholder: 'Názov kategórie', 41420 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 41421 alreadyAdded: '(Už pridané)', 41422 addedToWishlist: 'pridané do obľúbených', 41423 removedFromWishlist: 'odstránené z obľúbených', 41424 allFavorites: 'VÅ¡etky obľúbené' 41425 }, 41426 'de': { 41427 addToWishlist: 'Zu meinen Favoriten hinzufügen', 41428 createCategory: 'Neue Kategorie erstellen:', 41429 categoryPlaceholder: 'Kategoriename', 41430 createAndAdd: 'Erstellen & hinzufügen', 41431 alreadyAdded: '(Bereits hinzugefügt)', 41432 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 41433 removedFromWishlist: 'aus meinen Favoriten entfernt', 41434 allFavorites: 'Alle Favoriten' 41435 }, 41436 'fr': { 41437 addToWishlist: 'Ajouter à mes favoris', 41438 createCategory: 'Créer une nouvelle catégorie :', 41439 categoryPlaceholder: 'Nom de la catégorie', 41440 createAndAdd: 'Créer et ajouter', 41441 alreadyAdded: '(Déjà ajouté)', 41442 addedToWishlist: 'ajouté à mes favoris', 41443 removedFromWishlist: 'retiré de mes favoris', 41444 allFavorites: 'Tous les favoris' 41445 }, 41446 'it': { 41447 addToWishlist: 'Aggiungi ai preferiti', 41448 createCategory: 'Crea nuova categoria:', 41449 categoryPlaceholder: 'Nome categoria', 41450 createAndAdd: 'Crea e aggiungi', 41451 alreadyAdded: '(Già aggiunto)', 41452 addedToWishlist: 'aggiunto ai preferiti', 41453 removedFromWishlist: 'rimosso dai preferiti', 41454 allFavorites: 'Tutti i preferiti' 41455 }, 41456 'es': { 41457 addToWishlist: 'Añadir a mis favoritos', 41458 createCategory: 'Crear nueva categorÃa:', 41459 categoryPlaceholder: 'Nombre de la categorÃa', 41460 createAndAdd: 'Crear y añadir', 41461 alreadyAdded: '(Ya añadido)', 41462 addedToWishlist: 'añadido a mis favoritos', 41463 removedFromWishlist: 'eliminado de mis favoritos', 41464 allFavorites: 'Todos los favoritos' 41465 }, 41466 'nl': { 41467 addToWishlist: 'Toevoegen aan mijn favorieten', 41468 createCategory: 'Nieuwe categorie aanmaken:', 41469 categoryPlaceholder: 'Categorienaam', 41470 createAndAdd: 'Aanmaken & toevoegen', 41471 alreadyAdded: '(Al toegevoegd)', 41472 addedToWishlist: 'toegevoegd aan mijn favorieten', 41473 removedFromWishlist: 'verwijderd uit mijn favorieten', 41474 allFavorites: 'Alle favorieten' 41475 }, 41476 'pl': { 41477 addToWishlist: 'Dodaj do ulubionych', 41478 createCategory: 'Utwórz nowÄ kategoriÄ:', 41479 categoryPlaceholder: 'Nazwa kategorii', 41480 createAndAdd: 'Utwórz i dodaj', 41481 alreadyAdded: '(Już dodane)', 41482 addedToWishlist: 'dodano do ulubionych', 41483 removedFromWishlist: 'usuniÄto z ulubionych', 41484 allFavorites: 'Wszystkie ulubione' 41485 }, 41486 'hu': { 41487 addToWishlist: 'Hozzáadás a kedvencekhez', 41488 createCategory: 'Ãj kategória létrehozása:', 41489 categoryPlaceholder: 'Kategória neve', 41490 createAndAdd: 'Létrehozás és hozzáadás', 41491 alreadyAdded: '(Már hozzáadva)', 41492 addedToWishlist: 'hozzáadva a kedvencekhez', 41493 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 41494 allFavorites: 'Minden kedvenc' 41495 }, 41496 'ro': { 41497 addToWishlist: 'AdaugÄ la favorite', 41498 createCategory: 'CreeazÄ o nouÄ categorie:', 41499 categoryPlaceholder: 'Nume categorie', 41500 createAndAdd: 'CreeazÄ Èi adaugÄ', 41501 alreadyAdded: '(Deja adÄugat)', 41502 addedToWishlist: 'adÄugat la favorite', 41503 removedFromWishlist: 'eliminat din favorite', 41504 allFavorites: 'Toate preferinÈele' 41505 }, 41506 'bg': { 41507 addToWishlist: 'Ðобави в лÑбими', 41508 createCategory: 'СÑздай нова каÑегоÑиÑ:', 41509 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 41510 createAndAdd: 'СÑздай и добави', 41511 alreadyAdded: '(ÐеÑе добавено)', 41512 addedToWishlist: 'добавено в лÑбими', 41513 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 41514 allFavorites: 'ÐÑиÑки лÑбими' 41515 }, 41516 'hr': { 41517 addToWishlist: 'Dodaj u favorite', 41518 createCategory: 'Kreiraj novu kategoriju:', 41519 categoryPlaceholder: 'Naziv kategorije', 41520 createAndAdd: 'Kreiraj i dodaj', 41521 alreadyAdded: '(VeÄ dodano)', 41522 addedToWishlist: 'dodano u favorite', 41523 removedFromWishlist: 'uklonjeno iz favorita', 41524 allFavorites: 'Sva omiljena' 41525 }, 41526 'fi': { 41527 addToWishlist: 'Lisää suosikkeihin', 41528 createCategory: 'Luo uusi kategoria:', 41529 categoryPlaceholder: 'Kategorian nimi', 41530 createAndAdd: 'Luo ja lisää', 41531 alreadyAdded: '(Jo lisätty)', 41532 addedToWishlist: 'lisätty suosikkeihin', 41533 removedFromWishlist: 'poistettu suosikeista',
41534 allFavorites: 'Kaikki suosikit' 41535 }, 41536 'gr': { 41537 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 41538 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 41539 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 41540 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 41541 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 41542 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 41543 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 41544 allFavorites: 'Îλα Ïα αγαÏημÎνα' 41545 }, 41546 'no': { 41547 addToWishlist: 'Legg til i favoritter', 41548 createCategory: 'Opprett ny kategori:', 41549 categoryPlaceholder: 'Kategorinavn', 41550 createAndAdd: 'Opprett og legg til', 41551 alreadyAdded: '(Allerede lagt til)', 41552 addedToWishlist: 'lagt til i favoritter', 41553 removedFromWishlist: 'fjernet fra favoritter', 41554 allFavorites: 'Alle favoritter' 41555 }, 41556 'pt-PT': { 41557 addToWishlist: 'Adicionar aos favoritos', 41558 createCategory: 'Criar nova categoria:', 41559 categoryPlaceholder: 'Nome da categoria', 41560 createAndAdd: 'Criar e adicionar', 41561 alreadyAdded: '(Já adicionado)', 41562 addedToWishlist: 'adicionado aos favoritos', 41563 removedFromWishlist: 'removido dos favoritos', 41564 allFavorites: 'Todos os favoritos' 41565 }, 41566 'sl': { 41567 addToWishlist: 'Dodaj med priljubljene', 41568 createCategory: 'Ustvari novo kategorijo:', 41569 categoryPlaceholder: 'Ime kategorije', 41570 createAndAdd: 'Ustvari in dodaj', 41571 alreadyAdded: '(Že dodano)', 41572 addedToWishlist: 'dodano med priljubljene', 41573 removedFromWishlist: 'odstranjeno iz priljubljenih', 41574 allFavorites: 'Vsi priljubljeni' 41575 }, 41576 'sv': { 41577 addToWishlist: 'Lägg till i favoriter', 41578 createCategory: 'Skapa ny kategori:', 41579 categoryPlaceholder: 'Kategorinamn', 41580 createAndAdd: 'Skapa och lägg till', 41581 alreadyAdded: '(Redan tillagd)', 41582 addedToWishlist: 'tillagd i favoriter', 41583 removedFromWishlist: 'borttagen frÃ¥n favoriter', 41584 allFavorites: 'Alla favoriter' 41585 }, 41586 'lv': { 41587 addToWishlist: 'Pievienot favorÄ«tiem', 41588 createCategory: 'Izveidot jaunu kategoriju:', 41589 categoryPlaceholder: 'Kategorijas nosaukums', 41590 createAndAdd: 'Izveidot un pievienot', 41591 alreadyAdded: '(Jau pievienots)', 41592 addedToWishlist: 'pievienots favorÄ«tiem', 41593 removedFromWishlist: 'noÅemts no favorÄ«tiem', 41594 allFavorites: 'Visas favorÄ«tus' 41595 }, 41596 'lt': { 41597 addToWishlist: 'PridÄti į mÄgstamiausius', 41598 createCategory: 'Sukurti naujÄ kategorijÄ :', 41599 categoryPlaceholder: 'Kategorijos pavadinimas', 41600 createAndAdd: 'Sukurti ir pridÄti', 41601 alreadyAdded: '(Jau pridÄta)', 41602 addedToWishlist: 'pridÄta į mÄgstamiausius', 41603 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 41604 allFavorites: 'Visos mÄgstamiausios' 41605 }, 41606 'ee': { 41607 addToWishlist: 'Lisa lemmikutesse', 41608 createCategory: 'Loo uus kategooria:', 41609 categoryPlaceholder: 'Kategooria nimi', 41610 createAndAdd: 'Loo ja lisa', 41611 alreadyAdded: '(Juba lisatud)', 41612 addedToWishlist: 'lisatud lemmikutesse', 41613 removedFromWishlist: 'eemaldatud lemmikutest', 41614 allFavorites: 'Kõik lemmikud' 41615 }, 41616 'dk': { 41617 addToWishlist: 'Tilføj til favoritter', 41618 createCategory: 'Opret ny kategori:', 41619 categoryPlaceholder: 'Kategorinavn', 41620 createAndAdd: 'Opret og tilføj', 41621 alreadyAdded: '(Allerede tilføjet)', 41622 addedToWishlist: 'tilføjet til favoritter', 41623 removedFromWishlist: 'fjernet fra favoritter', 41624 allFavorites: 'Alle favoritter' 41625 } 41626 }; 41627 41628 function getWishlistLang() { 41629 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 41630 // Normalize for region codes (e.g., pt-PT, sl) 41631 if (lang.startsWith('pt-PT')) return 'pt-PT'; 41632 if (lang.startsWith('sl')) return 'sl'; 41633 if (lang.startsWith('cs')) return 'cs'; 41634 if (lang.startsWith('sk')) return 'sk'; 41635 if (lang.startsWith('de')) return 'de'; 41636 if (lang.startsWith('fr')) return 'fr'; 41637 if (lang.startsWith('it')) return 'it'; 41638 if (lang.startsWith('es')) return 'es'; 41639 if (lang.startsWith('nl')) return 'nl'; 41640 if (lang.startsWith('pl')) return 'pl'; 41641 if (lang.startsWith('hu')) return 'hu'; 41642 if (lang.startsWith('ro')) return 'ro'; 41643 if (lang.startsWith('bg')) return 'bg'; 41644 if (lang.startsWith('hr')) return 'hr'; 41645 if (lang.startsWith('fi')) return 'fi'; 41646 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 41647 if (lang.startsWith('no')) return 'no'; 41648 if (lang.startsWith('sv')) return 'sv'; 41649 if (lang.startsWith('lv')) return 'lv'; 41650 if (lang.startsWith('lt')) return 'lt'; 41651 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 41652 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 41653 return 'en'; 41654 } 41655 41656 // Get or initialize the wishlist array in localStorage 41657 function getWishlist() { 41658 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 41659 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 41660 categories: [ 41661 { 41662 id: 'all-favorites', 41663 name: 'All Favorites', 41664 items: [] 41665 } 41666 ], 41667 version: 2 41668 }; 41669 41670 // Handle migration from old format (array of items) to new format (categories) 41671 if (Array.isArray(wishlist)) { 41672 return { 41673 categories: [ 41674 { 41675 id: 'all-favorites', 41676 name: 'All Favorites', 41677 items: wishlist 41678 } 41679 ], 41680 version: 2 41681 }; 41682 } 41683 41684 return wishlist; 41685 } 41686 41687 // Save wishlist to localStorage 41688 function saveWishlist(wishlist) { 41689 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 41690 // Dispatch an event so other parts of the site can react to wishlist changes 41691 document.dispatchEvent(new CustomEvent('wishlist:updated', { 41692 detail: { wishlist: wishlist } 41693 })); 41694 41695 // Count total items across all categories 41696 const totalItems = wishlist.categories.reduce((total, category) => { 41697 return total + category.items.length; 41698 }, 0); 41699 41700 // Update all wishlist counters 41701 updateWishlistCounters(totalItems); 41702 } 41703 41704 // Update all wishlist counters on the page 41705 function updateWishlistCounters(count) { 41706 const counters = document.querySelectorAll('.wishlist-count');
41707 counters.forEach(counter => { 41708 counter.textContent = count; 41709 41710 // If the counter is hidden and count > 0, show it 41711 if (count > 0 && counter.hasAttribute('hidden')) { 41712 counter.removeAttribute('hidden'); 41713 } 41714 // If the counter is visible and count = 0, hide it 41715 else if (count === 0 && !counter.hasAttribute('hidden')) { 41716 counter.setAttribute('hidden', 'true'); 41717 } 41718 }); 41719 } 41720 41721 // Check if a product is in the wishlist (in any category) 41722 function isInWishlist(productId) { 41723 const wishlist = getWishlist(); 41724 return wishlist.categories.some(category => 41725 category.items.some(item => item.id === productId) 41726 ); 41727 } 41728 41729 // Get all categories 41730 function getCategories() { 41731 return getWishlist().categories; 41732 } 41733 41734 // Create a new category 41735 function createCategory(name) { 41736 const wishlist = getWishlist(); 41737 const categoryId = 'category-' + Date.now(); 41738 41739 wishlist.categories.push({ 41740 id: categoryId, 41741 name: name, 41742 items: [] 41743 }); 41744 41745 saveWishlist(wishlist); 41746 return categoryId; 41747 } 41748 41749 // Add a product to a specific category 41750 function addToCategory(product, categoryId) { 41751 const wishlist = getWishlist(); 41752 const category = wishlist.categories.find(cat => cat.id === categoryId); 41753 41754 if (!category) return false; 41755 41756 // Check if product already exists in ANY category (not just this one) 41757 if (isInWishlist(product.id)) { 41758 return false; // Product already in wishlist 41759 } 41760 41761 // Add product to category 41762 category.items.push(product); 41763 saveWishlist(wishlist); 41764 41765 // Dispatch event for global sync 41766 document.dispatchEvent(new CustomEvent('wishlist:updated', { 41767 detail: { productId: product.id, added: true } 41768 })); 41769 41770 return true; 41771 } 41772 41773 // Add a product to the default "All Favorites" category 41774 function addToWishlist(product) { 41775 return addToCategory(product, 'all-favorites'); 41776 } 41777 41778 // Remove a product from all categories 41779 function removeFromWishlist(productId) { 41780 const wishlist = getWishlist(); 41781 let removed = false; 41782 41783 wishlist.categories.forEach(category => { 41784 const initialLength = category.items.length; 41785 category.items = category.items.filter(item => item.id !== productId); 41786 if (category.items.length !== initialLength) { 41787 removed = true; 41788 } 41789 }); 41790 41791 if (removed) { 41792 saveWishlist(wishlist); 41793 } 41794 41795 return removed; 41796 } 41797 41798 // Toggle a product in the wishlist 41799 function toggleWishlistItem(product) { 41800 if (isInWishlist(product.id)) { 41801 // If already in wishlist, remove it 41802 const wasRemoved = removeFromWishlist(product.id); 41803 41804 // Update heart icon if the product was successfully removed 41805 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 41806 if (heartIcon && wasRemoved) { 41807 heartIcon.setAttribute('fill', 'none'); 41808 showWishlistToast(false, product.title); 41809 41810 // Dispatch event for global sync 41811 document.dispatchEvent(new CustomEvent('wishlist:updated', { 41812 detail: { productId: product.id, added: false } 41813 })); 41814 } 41815 return wasRemoved; 41816 } else { 41817 // If not in wishlist, show category selection popup 41818 showCategorySelectionPopup(product); 41819 return false; // Don't return true unless we actually add the product 41820 } 41821 } 41822 41823 // Show wishlist category selection popup 41824 function showCategorySelectionPopup(product) { 41825 // Remove any existing popup 41826 const existingPopup = document.getElementById('wishlist-category-popup'); 41827 if (existingPopup) { 41828 existingPopup.remove(); 41829 } 41830 41831 const lang = getWishlistLang(); 41832 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 41833 41834 // Create popup container 41835 const popup = document.createElement('div'); 41836 popup.id = 'wishlist-category-popup'; 41837 popup.className = 'wishlist-category-popup'; 41838 41839 // Create popup content 41840 const content = document.createElement('div'); 41841 content.className = 'wishlist-category-popup-content'; 41842 41843 // Create header 41844 const title = document.createElement('h2'); 41845 title.textContent = translations.addToWishlist; // Translate 41846 41847 const closeButton = document.createElement('button'); 41848 closeButton.className = 'wishlist-category-popup-close'; 41849 closeButton.setAttribute('aria-label', 'Close'); 41850 closeButton.addEventListener('click', () => { 41851 popup.remove(); 41852 }); 41853 41854 // Create category list 41855 const categoryList = document.createElement('div'); 41856 categoryList.className = 'wishlist-category-list'; 41857 41858 // Get categories 41859 const categories = getCategories(); 41860 41861 // Add category options
41862 categories.forEach(category => { 41863 const categoryOption = document.createElement('div'); 41864 categoryOption.className = 'wishlist-category-option'; 41865 41866 // Use translation for default category name 41867 categoryOption.textContent = category.id === 'all-favorites' 41868 ? (translations.allFavorites || category.name) 41869 : category.name; 41870 41871 // Highlight if product already in this category 41872 if (category.items.some(item => item.id === product.id)) { 41873 categoryOption.style.backgroundColor = '#f0f0f0'; 41874 categoryOption.style.color = '#999'; 41875 categoryOption.style.fontStyle = 'italic'; 41876 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 41877 categoryOption.style.cursor = 'default'; 41878 } else { 41879 categoryOption.addEventListener('click', () => { 41880 const wasAdded = addToCategory(product, category.id); 41881 41882 if (wasAdded) { 41883 // Update heart icon after successful addition 41884 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 41885 if (heartIcon) { 41886 heartIcon.setAttribute('fill', '#333333'); 41887 } 41888 41889 showWishlistToast(true, product.title); 41890 popup.remove(); 41891 } 41892 }); 41893 } 41894 41895 categoryList.appendChild(categoryOption); 41896 }); 41897 41898 // Create "add new category" section 41899 const newCategorySection = document.createElement('div'); 41900 newCategorySection.style.borderTop = '1px solid #eee'; 41901 newCategorySection.style.paddingTop = '15px'; 41902 newCategorySection.style.marginTop = '10px'; 41903 41904 const newCategoryLabel = document.createElement('label'); 41905 newCategoryLabel.textContent = translations.createCategory; // Translate 41906 41907 const newCategoryInput = document.createElement('input'); 41908 newCategoryInput.type = 'text'; 41909 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 41910 41911 const createButton = document.createElement('button'); 41912 createButton.className = 'create-category-button'; 41913 createButton.textContent = translations.createAndAdd; // Translate 41914 41915 createButton.addEventListener('click', () => { 41916 const categoryName = newCategoryInput.value.trim(); 41917 if (categoryName) { 41918 const categoryId = createCategory(categoryName); 41919 const wasAdded = addToCategory(product, categoryId); 41920 41921 if (wasAdded) { 41922 // Update heart icon after successful addition 41923 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 41924 if (heartIcon) { 41925 heartIcon.setAttribute('fill', '#333333'); 41926 } 41927 41928 showWishlistToast(true, product.title); 41929 popup.remove(); 41930 } 41931 } 41932 }); 41933 41934 newCategorySection.appendChild(newCategoryLabel); 41935 newCategorySection.appendChild(newCategoryInput); 41936 newCategorySection.appendChild(createButton); 41937 41938 // Assemble popup 41939 content.appendChild(title); 41940 content.appendChild(closeButton); 41941 content.appendChild(categoryList); 41942 content.appendChild(newCategorySection); 41943 popup.appendChild(content); 41944 41945 // Add to document 41946 document.body.appendChild(popup); 41947 41948 // Focus the input 41949 setTimeout(() => { 41950 newCategoryInput.focus(); 41951 }, 100); 41952 41953 // Close when clicking outside content 41954 popup.addEventListener('click', (e) => { 41955 if (e.target === popup) { 41956 popup.remove(); 41957 } 41958 }); 41959 } 41960 41961 // Show a toast notification 41962 function showWishlistToast(added, productTitle) { 41963 // Create or get toast container 41964 let toastContainer = document.getElementById('wishlist-toast'); 41965 if (!toastContainer) { 41966 toastContainer = document.createElement('div'); 41967 toastContainer.id = 'wishlist-toast'; 41968 toastContainer.style.position = 'fixed'; 41969 toastContainer.style.bottom = '20px'; 41970 toastContainer.style.right = '20px'; 41971 toastContainer.style.zIndex = '9999'; 41972 document.body.appendChild(toastContainer); 41973 } 41974 41975 // Create toast 41976 const toast = document.createElement('div'); 41977 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 41978 toast.style.color = 'white'; 41979 toast.style.padding = '12px 20px'; 41980 toast.style.borderRadius = '0'; 41981 toast.style.marginTop = '10px'; 41982 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 41983 toast.style.transition = 'all 0.3s ease'; 41984 toast.style.opacity = '0'; 41985 toast.style.fontFamily = 'Montserrat, sans-serif'; 41986 41987 // Choose text based on action 41988 const lang = getWishlistLang(); 41989 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 41990 toast.textContent = added 41991 ? `${productTitle} ${translations.addedToWishlist}` // Translate 41992 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 41993 41994 // Add to container 41995 toastContainer.appendChild(toast); 41996 41997 // Animate in 41998 setTimeout(() => { 41999 toast.style.opacity = '1'; 42000 }, 10); 42001 42002 // Animate out and remove 42003 setTimeout(() => { 42004 toast.style.opacity = '0'; 42005 setTimeout(() => { 42006 toastContainer.removeChild(toast); 42007 }, 300); 42008 }, 3000); 42009 } 42010 42011 // Initialize wishlist buttons 42012 function initCardWishlistButtons() { 42013 const wishlistButtons = document.querySelectorAll('.card-wis
42013hlist-button'); 42014 42015 wishlistButtons.forEach(button => { 42016 // Skip if already initialized 42017 if (button.dataset.initializedWishlist === 'true') return; 42018 button.dataset.initializedWishlist = 'true'; 42019 42020 const productId = button.getAttribute('data-wishlist-product'); 42021 if (!productId) return; 42022 42023 // Get product details from the card 42024 const card = button.closest('.card-wrapper'); 42025 const productDetails = { 42026 id: productId, 42027 title: card.querySelector('.card__heading')?.textContent.trim() || '', 42028 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 42029 price: card.querySelector('.price')?.textContent.trim() || '', 42030 image: card.querySelector('img')?.src || '', 42031 url: card.querySelector('a[href*="/products/"]')?.href || '' 42032 }; 42033 42034 // Set initial state using global function 42035 const heartIcon = button.querySelector('path'); 42036 if (heartIcon) { 42037 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 42038 heartIcon.setAttribute('fill', '#333333'); 42039 } else { 42040 heartIcon.setAttribute('fill', 'none'); 42041 } 42042 } 42043 42044 // Add click handler 42045 button.addEventListener('click', function(e) { 42046 e.preventDefault(); 42047 e.stopPropagation(); 42048 e.stopImmediatePropagation(); 42049 toggleWishlistItem(productDetails); 42050 }); 42051 42052 // Prevent navigation on mousedown/touchstart 42053 button.addEventListener('mousedown', function(e) { 42054 e.preventDefault(); 42055 e.stopPropagation(); 42056 }); 42057 42058 button.addEventListener('touchstart', function(e) { 42059 e.preventDefault(); 42060 e.stopPropagation(); 42061 }); 42062 }); 42063 } 42064 42065 // Initialize the wishlist counter on page load 42066 const wishlist = getWishlist(); 42067 const totalItems = wishlist.categories.reduce((total, category) => { 42068 return total + category.items.length; 42069 }, 0); 42070 updateWishlistCounters(totalItems); 42071 42072 // Initialize on DOM ready 42073 if (document.readyState === 'loading') { 42074 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 42075 } else { 42076 initCardWishlistButtons(); 42077 } 42078 42079 // Reinitialize on Shopify section load 42080 document.addEventListener('shopify:section:load', function() { 42081 setTimeout(initCardWishlistButtons, 100); 42082 }); 42083 42084 // Listen for wishlist updates from other parts of the site 42085 document.addEventListener('wishlist:updated', function() { 42086 setTimeout(initCardWishlistButtons, 100); 42087 }); 42088 })(); 42089</script>
42089 42090 42091<!-- Price info icon styles --> 42092<style> 42093 /* Price container with icon */ 42094 .price-container-with-info { 42095 position: relative; 42096 display: flex; 42097 align-items: center; 42098 gap: 8px; 42099 } 42100 42101 /* Info icon - hidden by default, shown on card hover */ 42102 .price-info-icon { 42103 position: relative; 42104 display: inline-flex; 42105 align-items: center; 42106 justify-content: center; 42107 color: #666; 42108 cursor: help; 42109 opacity: 0; 42110 transition: opacity 0.3s ease; 42111 42112 padding: 4px; /* Add padding to increase clickable area */ 42113 min-width: 20px; /* Ensure minimum clickable area */ 42114 min-height: 20px; 42115 z-index: 15; /* Above everything else including compare button */ 42116 pointer-events: auto; /* Allow interaction */ 42117 } 42118 42119 /* Show icon on card hover */ 42120 .card-wrapper:hover .price-info-icon { 42121 opacity: 1; 42122 } 42123 42124 .price-info-icon svg { 42125 width: 14px; 42126 height: 14px; 42127 stroke-width: 1.5; 42128 } 42129 42130 /* Tooltip styles */ 42131 .price-info-tooltip { 42132 position: absolute; 42133 bottom: calc(100% + 6px); 42134 top: auto; 42135 left: 0; 42136 transform: none; 42137 min-width: 310px; 42138 background: #FFFFFF; 42139 color: #232323; 42140 border: 1px solid #EEEEEE; 42141 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 42142 padding: 12px 16px; 42143 font-size: 13px; 42144 font-family: 'Montserrat', sans-serif; 42145 z-index: 10000; 42146 opacity: 0; 42147 transition: opacity 0.18s; 42148 white-space: pre-line; 42149 text-align: left; 42150 border-radius: 0; 42151 visibility: hidden; 42152 pointer-events: none; 42153 } 42154 42155 /* Show tooltip on icon hover */ 42156 .price-info-icon:hover .price-info-tooltip { 42157 visibility: visible; 42158 opacity: 1; 42159 } 42160 42161 /* Ensure tooltip is never clipped */ 42162 .price-container-with-info, 42163 .card-information, 42164 .card__content { 42165 overflow: visible !important; 42166 } 42167 42168 /* Mobile adjustments */ 42169 @media screen and (max-width: 768px) { 42170 .price-info-tooltip { 42171 min-width: 200px; 42172 font-size: 12px; 42173 padding: 10px 12px; 42174 } 42175 } 42176</style> 42177 42178 </li> 42179 <li 42180 class="grid__item" 42181 42182 > 42183 42184<div class="card-wrapper product-card-wrapper underline-links-hover"> 42185 42186 <div 42187 class=" 42188 card card--standard 42189 card--media 42190 42191 42192 42193 42194 42195 " 42196 style="--ratio-percent: 100.0%;" 42197 data-product-id="9746931188010" 42198 data-description="Bolardo de exterior de aluminio con LED incorporado, para iluminación diagonal y hacia abajo de caminos y entradas de vehÃculos. " 42199 42200 data-ip-rate="IP65" 42201 42202 data-variant-id="52387944464682" 42203 data-price="138.00 EUR" 42204 data-compare-at-price="" 42205 data-available="true" 42206 data-barcode="8595685426976" 42207 data-ip-rate="IP65" 42208 data-lumens="640" 42209 data-power-source="" 42210 data-watt="8.0" 42211 data-kelvin="3000" 42212 data-light-color="" 42213 data-diameter="" 42214 data-weight-netto="1155.0" 42215 data-weight-unit="g" 42216 data-mounting-hole-size="" 42217 data-recess-depth="" 42218 data-suspension-lenght="" 42219 data-turn-angle="" 42220 data-tilt-angle="" 42221 data-switch="" 42222 data-socket="" 42223 data-light-source-recomended="" 42224 data-height="39.5" 42225 data-length="" 42226 data-Length="" 42227 > 42228 <div 42229 class="card__inner color-scheme-2 gradient ratio" 42230 style="--ratio-percent: 100.0%;" 42231 > 42232 42233 42234<div class="ip-rate-badge"> 42235 <span>IP65</span> 42236 </div><div class="card__media"> 42237 <a class="card__media-link-content" href="/products/bobo-rc-floor-lamp" aria-label="BOBO RC DE PIÃ"> 42238 <div class="media media--transparent media--hover-effect"> 42239 42240 <img 42241 class="product-image motion-reduce" 42242 srcset="//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=165 165w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=360 360w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=533 533w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=720 720w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=940 940w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=1066 1066w,//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192 4899w 42243 " 42244 src="//rendl.es/cdn/shop/files/r13936-1.jpg?v=1745935192&width=533" 42245 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 42246 alt="RENDL outdoor lamp BOBO RC floor anthracite grey 230V LED 8W IP65 3000K R13936 1" 42247 42248 loading="lazy" 42249 42250 width="4899" 42251 height="4899" 42252 > 42253 42254<img 42255 class="product-image motion-reduce" 42256 srcset="//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=165 165w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=360 360w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=533 533w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=720 720w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=940 940w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=1066 1066w,//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552 3162w 42257 " 42258 src="//rendl.es/cdn/shop/files/r13936-3.jpg?v=1783736552&width=533" 42259 sizes="(min-width: 1200px) 267px, (min-width: 990px) calc((100vw - 130px) / 4), (min-width: 750px) calc((100vw - 120px) / 3), calc((100vw - 35px) / 2)" 42260 alt="" 42261 loading="lazy" 42262 width="3162" 42263 height="3162" 42264 ></div> 42265 </a> 42266 42267<div class="card-media-icons"><div class="energy-label-icon"> 42268 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/Energy_label_G.svg?v=1785350126" alt="Energy class G" width="32" height="32" loading="lazy"> 42269 <div class="energy-label-tooltip">Clase energética G 42270</div> 42271 </div></div><div class="card-variant-swatches"><a 42272 class="card-variant-swatch" 42273 href="/products/bobo-rc-floor-lamp?variant=52387944464682" 42274 42275 style="background-image: url('//rendl.es/cdn/shop/files/45_anthracite-grey.jpg?v=1739538297&width=64');" 42276 42277 aria-label="gris antracita" 42278 >
42279 <span class="card-variant-swatch-tooltip">gris antracita</span></a></div></div><div class="card__content"> 42280 <div class="card__information"> 42281 <h3 42282 class="card__heading" 42283 42284 > 42285 <a 42286 href="/products/bobo-rc-floor-lamp" 42287 id="StandardCardNoMediaLink-template--28113427169578__product-grid-9746931188010" 42288 class="full-unstyled-link" 42289 aria-labelledby="StandardCardNoMediaLink-template--28113427169578__product-grid-9746931188010 NoMediaStandardBadge-template--28113427169578__product-grid-9746931188010" 42290 > 42291 BOBO RC DE PIà 42292 </a> 42293 </h3> 42294 </div> 42295 <div class="card__badge bottom left"></div> 42296 </div> 42297 </div> 42298 <div class="card__content"> 42299 <div class="card__information"> 42300 <h3 42301 class="card__heading h5" 42302 42303 id="title-template--28113427169578__product-grid-9746931188010" 42304 42305 > 42306 <a 42307 href="/products/bobo-rc-floor-lamp" 42308 id="CardLink-template--28113427169578__product-grid-9746931188010" 42309 class="full-unstyled-link" 42310 aria-labelledby="CardLink-template--28113427169578__product-grid-9746931188010 Badge-template--28113427169578__product-grid-9746931188010" 42311 > 42312 BOBO RC DE PIà 42313 </a> 42314 </h3><div class="card__description"> 42315 Bolardo de exterior de aluminio con LED incorporado, para iluminación diagonal y hacia abajo de caminos y entradas de vehÃculos. 42316 </div><div class="card-information"><span class="caption-large light"></span><div class="price-container-with-info"> 42317 42318<div 42319 class=" 42320 price " 42321 > 42322 <div class="price__container"><div class="price__regular"><span class="visually-hidden visually-hidden--inline">Precio habitual</span> 42323 <span class="price-item price-item--regular"> 42324 138.00 EUR 42325 </span></div> 42326 <div class="price__sale"> 42327 <span class="visually-hidden visually-hidden--inline">Precio habitual</span> 42328 <span> 42329 <s class="price-item price-item--regular"> 42330 42331 42332 42333 </s> 42334 </span><span class="visually-hidden visually-hidden--inline">Precio de oferta</span> 42335 <span class="price-item price-item--sale price-item--last"> 42336 138.00 EUR 42337 </span> 42338 </div> 42339 <small class="unit-price caption hidden"> 42340 <span class="visually-hidden">Precio unitario</span> 42341 <span class="price-item price-item--last"> 42342 <span></span> 42343 <span aria-hidden="true">/</span> 42344 <span class="visually-hidden"> por </span> 42345 <span> 42346 </span> 42347 </span> 42348 </small> 42349 </div></div> 42350 42351 42352</div><!-- Compare and Wishlist buttons container --><div class="compare-button-container"> 42353 <button class="compare-button-simple" 42354 data-product-id="9746931188010" 42355 data-product-title="BOBO RC DE PIÃ" 42356 data-product-handle="bobo-rc-floor-lamp"> 42357 <span class="compare-button-content"> 42358 <img src="https://cdn.shopify.com/s/files/1/0909/7950/0330/files/compare_icon_v2.svg?v=1752144324" alt="" class="compare-icon-small" width="24" height="24"> 42359 <span class="compare-text" data-translate="compare">compare</span> 42360 </span> 42361 <span class="compare-spinner-small"> 42362 <!-- Small spinner for button --> 42363 <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="spinner-svg-small"> 42364 <circle cx="12" cy="12" r="10" stroke="#bbb" stroke-width="4" opacity="0.3"/> 42365 <path d="M22 12a10 10 0 0 1-10 10" stroke="#888" stroke-width="4" stroke-linecap="round"> 42366 <animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="0.7s" repeatCount="indef
42366inite"/> 42367 </path> 42368 </svg> 42369 </span> 42370 </button> 42371 42372 <!-- Wishlist button next to compare button --> 42373 <button type="button" class="card-wishlist-button" data-wishlist-product="9746931188010"> 42374 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 42375 <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" stroke="#333333" stroke-width="1.0"></path> 42376 </svg> 42377 </button> 42378 </div></div> 42379 </div> 42380 42381 42382 42383 <div class="quick-add no-js-hidden"><product-form data-section-id="template--28113427169578__product-grid"><form method="post" action="/cart/add" id="quick-add-template--28113427169578__product-grid9746931188010" accept-charset="UTF-8" class="form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="â" /><input 42384 type="hidden" 42385 name="id" 42386 value="52387944464682" 42387 class="product-variant-id" 42388 42389 > 42390 <button 42391 id="quick-add-template--28113427169578__product-grid9746931188010-submit" 42392 type="submit" 42393 name="add" 42394 class="quick-add__submit button button--full-width button--secondary" 42395 aria-haspopup="dialog" 42396 aria-labelledby="quick-add-template--28113427169578__product-grid9746931188010-submit title-template--28113427169578__product-grid-9746931188010" 42397 aria-live="polite" 42398 data-sold-out-message="true" 42399 42400 > 42401 <span>Agregar al carrito 42402</span> 42403 <span class="sold-out-message hidden"> 42404 En camino 42405 </span> 42406 42407<div class="loading__spinner hidden"> 42408 <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg> 42409 42410</div> 42411</button><input type="hidden" name="product-id" value="9746931188010" /><input type="hidden" name="section-id" value="template--28113427169578__product-grid" /></form></product-form></div> 42412 42413 <div class="card__badge bottom left"></div> 42414 </div> 42415 </div> 42416 </div>
42416<script> 42417 // Initialize global compare translations only once 42418 if (typeof window.compareButtonTranslations === 'undefined') { 42419 window.compareButtonTranslations = { 42420 compare: { 42421 en: 'compare', 42422 cs: 'porovnat', 42423 sk: 'porovnaÅ¥', 42424 de: 'vergleichen', 42425 at: 'vergleichen', 42426 ch: 'vergleichen', 42427 fr: 'comparer', 42428 be: 'comparer', 42429 lu: 'comparer', 42430 it: 'confronta', 42431 es: 'comparar', 42432 nl: 'vergelijken', 42433 pl: 'porównaj', 42434 hu: 'összehasonlÃt', 42435 ro: 'comparÄ', 42436 bg: 'ÑÑавни', 42437 hr: 'usporedi', 42438 fi: 'vertaile', 42439 gr: 'ÏÏγκÏιÏη', 42440 el: 'ÏÏγκÏιÏη', 42441 no: 'sammenlign', 42442 'pt-PT': 'comparar', 42443 sl: 'primerjaj', 42444 sv: 'jämför', 42445 lv: 'salÄ«dzinÄt', 42446 lt: 'palyginti', 42447 ee: 'võrdle', 42448 dk: 'sammenlign', 42449 gb: 'compare', 42450 uk: 'compare', 42451 ie: 'compare', 42452 us: 'compare', 42453 ca: 'compare', 42454 au: 'compare', 42455 nz: 'compare', 42456 ru: 'ÑÑавниÑÑ' 42457 }, 42458 remove: { 42459 en: 'remove', 42460 cs: 'odebrat', 42461 sk: 'odobraÅ¥', 42462 de: 'entfernen', 42463 at: 'entfernen', 42464 ch: 'entfernen', 42465 fr: 'supprimer', 42466 be: 'supprimer', 42467 lu: 'supprimer', 42468 it: 'rimuovi', 42469 es: 'eliminar', 42470 nl: 'verwijderen', 42471 pl: 'usuÅ', 42472 hu: 'eltávolÃt', 42473 ro: 'eliminÄ', 42474 bg: 'пÑÐµÐ¼Ð°Ñ Ð½Ð¸', 42475 hr: 'ukloni', 42476 fi: 'poista', 42477 gr: 'αÏαίÏεÏη', 42478 el: 'αÏαίÏεÏη', 42479 no: 'fjern', 42480 'pt-PT': 'remover', 42481 sl: 'odstrani', 42482 sv: 'ta bort', 42483 lv: 'noÅemt', 42484 lt: 'paÅ¡alinti', 42485 ee: 'eemalda', 42486 dk: 'fjern', 42487 gb: 'remove', 42488 uk: 'remove', 42489 ie: 'remove', 42490 us: 'remove', 42491 ca: 'remove', 42492 au: 'remove', 42493 nz: 'remove', 42494 ru: 'ÑдалиÑÑ' 42495 }, 42496 added: { 42497 en: 'Added!', 42498 cs: 'PÅidáno!', 42499 sk: 'Pridané!', 42500 de: 'Hinzugefügt!', 42501 at: 'Hinzugefügt!', 42502 ch: 'Hinzugefügt!', 42503 fr: 'Ajouté!', 42504 be: 'Ajouté!', 42505 lu: 'Ajouté!', 42506 it: 'Aggiunto!', 42507 es: '¡Añadido!', 42508 nl: 'Toegevoegd!', 42509 pl: 'Dodano!', 42510 hu: 'Hozzáadva!', 42511 ro: 'AdÄugat!', 42512 bg: 'Ðобавено!', 42513 hr: 'Dodano!', 42514 fi: 'Lisätty!', 42515 gr: 'Î ÏοÏÏÎθηκε!', 42516 el: 'Î ÏοÏÏÎθηκε!', 42517 no: 'Lagt til!', 42518 'pt-PT': 'Adicionado!', 42519 sl: 'Dodano!', 42520 sv: 'Tillagd!', 42521 lv: 'Pievienots!', 42522 lt: 'PridÄta!', 42523 ee: 'Lisatud!', 42524 dk: 'Tilføjet!', 42525 gb: 'Added!', 42526 uk: 'Added!', 42527 ie: 'Added!', 42528 us: 'Added!', 42529 ca: 'Added!', 42530 au: 'Added!', 42531 nz: 'Added!', 42532 ru: 'Ðобавлено!' 42533 }, 42534 removed: { 42535 en: 'Removed!', 42536 cs: 'Odebráno!', 42537 sk: 'Odobrané!', 42538 de: 'Entfernt!', 42539 at: 'Entfernt!', 42540 ch: 'Entfernt!', 42541 fr: 'Supprimé!', 42542 be: 'Supprimé!', 42543 lu: 'Supprimé!', 42544 it: 'Rimosso!', 42545 es: '¡Eliminado!', 42546 nl: 'Verwijderd!', 42547 pl: 'UsuniÄto!', 42548 hu: 'EltávolÃtva!', 42549 ro: 'Eliminat!', 42550 bg: 'ÐÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо!', 42551 hr: 'Uklonjeno!', 42552 fi: 'Poistettu!', 42553 gr: 'ÎÏαιÏÎθηκε!', 42554 el: 'ÎÏαιÏÎθηκε!', 42555 no: 'Fjernet!', 42556 'pt-PT': 'Removido!', 42557 sl: 'Odstranjeno!', 42558 sv: 'Borttaget!', 42559 lv: 'NoÅemts!', 42560 lt: 'PaÅ¡alinta!', 42561 ee: 'Eemaldatud!', 42562 dk: 'Fjernet!', 42563 gb: 'Removed!', 42564 uk: 'Removed!', 42565 ie: 'Removed!', 42566 us: 'Removed!', 42567 ca: 'Removed!', 42568 au: 'Removed!', 42569 nz: 'Removed!', 42570 ru: 'Удалено!' 42571 } 42572 }; 42573 42574 // Tooltip translations for price info 42575 window.tooltipTranslations = { 42576 tooltipPrice: { 42577 en: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42578 cs: "MCPRICE - je maloobchodnà cena vÄetnÄ DPH.\n\nWSPRICE je vaÅ¡e velkoobchodnà cena vÄetnÄ DPH.\n\nDPH bude odeÄtena v pÅÃsluÅ¡ných pÅÃpadech.", 42579 sk: "MCPRICE - je maloobchodná cena vrátane DPH.\n\nWSPRICE je vaÅ¡a veľkoobchodná cena vrátane DPH.\n\nDPH bude odpoÄÃtaná v prÃsluÅ¡ných prÃpadoch.", 42580 de: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 42581 at: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 42582 ch: "MCPRICE - ist ein Einzelhandelspreis inkl. MwSt.\n\nWSPRICE ist Ihr GroÃhandelspreis inkl. MwSt.\n\nDie MwSt. wird gegebenenfalls abgezogen.", 42583 fr: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 42584 be: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 42585 lu: "MCPRICE - est un prix de détail TTC.\n\nWSPRICE est votre prix de gros TTC.\n\nLa TVA sera déduite le cas échéant.", 42586 it: "MCPRICE - è un prezzo al dettaglio IVA inclusa.\n\nWSPRICE è il vostro prezzo all'ingrosso IVA inclusa.\n\nL'IVA sarà detratta quando applicabile.", 42587 es: "MCPRICE - es un precio minorista con IVA incluido.\n\nWSPRICE es su precio mayorista con IVA incluido.\n\nEl IVA se deducirá cuando corresponda.", 42588 nl: "MCPRICE - is een detailhandelsprijs inclusief BTW.\n\nWSPRICE is uw groothandelsprijs inclusief BTW.\n\nDe BTW wordt in voorkomende gevallen afgetrokken.", 42589 pl: "MCPRICE - to cena detaliczna z VAT.\n\nWSPRICE to Twoja cena hurtowa z VAT.\n\nVAT zostanie odjÄty w stosownych przypadkach.", 42590 hu: "MCPRICE - áfát tartalmazó kiskereskedelmi ár.\n\nWSPRICE az Ãn áfát tartalmazó nagykereskedelmi ára.\n\nAz áfát adott esetben levonjuk.", 42591 ro: "MCPRICE - este un preÈ cu amÄnuntul cu TVA inclus.\n\nWSPRICE este preÈul dvs. en-gros cu TVA inclus.\n\nTVA-ul va fi dedus când este aplicabil.", 42592 bg: "MCPRICE - е ÑозниÑнаÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nWSPRICE е ваÑаÑа едÑа Ñена Ñ Ð²ÐºÐ»ÑÑен ÐÐС.\n\nÐÐС-Ñо Ñе бÑде пÑиÑпаднаÑо когаÑо е пÑиложимо.", 42593 hr: "MCPRICE - je maloprodajna cijena ukljuÄujuÄi PDV.\n\nWSPRICE je vaÅ¡a veleprodajna cijena ukljuÄujuÄi PDV.\n\nPDV Äe biti odbaÄen kada je primjenjivo.", 42594 fi: "MCPRICE - on vähittäismyyntihinta sisältäen ALV:n.\n\nWSPRICE on teidän tukkuhintanne sisältäen ALV:n.\n\nALV vähennetään soveltuvin osin.", 42595 gr: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 42596 el: "MCPRICE - είναι λιανική Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nWSPRICE είναι η ÏονδÏική ÏÎ±Ï Ïιμή ÏÏ Î¼ÏεÏιλαμβανομÎÎ½Î¿Ï ÏÎ¿Ï Î¦Î Î.\n\nΠΦΠΠθα αÏαιÏεθεί ÏÏαν ιÏÏÏει.", 42597 no: "MCPRICE - er en utsalgspris inkludert MVA.\n\nWSPRICE er din engrospris inkludert MVA.\n\nMVA vil bli trukket fra nÃ¥r det er aktuelt.", 42598 'pt-PT': "MCPRICE - é um preço de retalho incluindo IVA.\n\nWSPRICE é o seu preço por grosso incluindo IVA.\n\nO IVA será deduzido quando aplicável.", 42599 sl: "MCPRICE - je maloprodajna cena z vkljuÄenim DDV.\n\nWSPRICE je vaÅ¡a veleprodajna cena z vkljuÄenim DDV.\n\nDDV bo odÅ¡tet, ko je to primerno.", 42600 sv: "MCPRICE - är ett detaljhandelspris inklusive moms.\n\nWSPRICE är ditt grossistpris inklusive moms.\n\nMomsen kommer att dras av när det är tillämpligt.", 42601 lv: "MCPRICE - ir mazumtirdzniecÄ«bas cena ar PVN.\n\nWSPRICE ir jÅ«su vairumtirdzniecÄ«bas cena ar PVN.\n\nPVN t
42601iks atskaitÄ«ts, ja piemÄrojams.", 42602 lt: "MCPRICE - yra mažmeninÄ kaina su PVM.\n\nWSPRICE yra jÅ«sų didmeninÄ kaina su PVM.\n\nPVM bus atskaitytas, kai taikoma.", 42603 ee: "MCPRICE - on jaehind koos käibemaksuga.\n\nWSPRICE on teie hulgihind koos käibemaksuga.\n\nKäibemaks arvatakse maha vastavalt vajadusele.", 42604 dk: "MCPRICE - er en detailpris inklusive moms.\n\nWSPRICE er din engrospris inklusive moms.\n\nMomsen vil blive fratrukket nÃ¥r det er relevant.", 42605 gb: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42606 uk: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42607 ie: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42608 us: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42609 ca: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42610 au: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42611 nz: "MCPRICE - is a retail price including VAT.\n\nWSPRICE is your wholesale price including VAT.\n\nThe VAT will be deducted when applicable.", 42612 ru: "MCPRICE - ÑозниÑÐ½Ð°Ñ Ñена Ñ ÐÐС.\n\nWSPRICE - ваÑа опÑÐ¾Ð²Ð°Ñ Ñена Ñ ÐÐС.\n\nÐÐС бÑÐ´ÐµÑ Ð²ÑÑÑен, когда ÑÑо пÑименимо." 42613 }, 42614 tooltipOutlet: { 42615 en: "We do not provide additional wholesale discounts on outlet products.", 42616 cs: "Na outletové výrobky neposkytujeme dodateÄné velkoobchodnà slevy.", 42617 sk: "Na outletové výrobky neposkytujeme dodatoÄné veľkoobchodné zľavy.", 42618 de: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 42619 at: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 42620 ch: "Auf Outlet-Produkte gewähren wir keine zusätzlichen GroÃhandelsrabatte.", 42621 fr: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 42622 be: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 42623 lu: "Nous n'accordons pas de remises de gros supplémentaires sur les produits d'outlet.", 42624 it: "Non forniamo sconti all'ingrosso aggiuntivi sui prodotti outlet.", 42625 es: "No proporcionamos descuentos mayoristas adicionales en productos outlet.", 42626 nl: "Wij bieden geen extra groothandelskorting op outlet producten.", 42627 pl: "Na produkty outlet nie udzielamy dodatkowych rabatów hurtowych.", 42628 hu: "Az outlet termékekre nem nyújtunk további nagykereskedelmi kedvezményeket.", 42629 ro: "Nu oferim reduceri suplimentare en-gros pentru produsele outlet.", 42630 bg: "Ðе пÑедоÑÑавÑме допÑлниÑелни едÑообÑи оÑÑÑÑпки за аÑÑÐ»ÐµÑ Ð¿ÑодÑкÑи.", 42631 hr: "Ne pružamo dodatne veleprodajne popuste na outlet proizvode.", 42632 fi: "Emme tarjoa lisätukkualennuksia outlet-tuotteisiin.", 42633 gr: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 42634 el: "Îεν ÏαÏÎÏÎ¿Ï Î¼Îµ ÏÏÏÏθεÏÎµÏ ÏονδÏικÎÏ ÎµÎºÏÏÏÏÎµÎ¹Ï Ïε ÏÏοÏÏνÏα outlet.", 42635 no: "Vi gir ikke ytterligere engrosprisrabatter pÃ¥ outlet-produkter.", 42636 'pt-PT': "Não fornecemos descontos por grosso adicionais em produtos outlet.", 42637 sl: "Na outlet izdelke ne nudimo dodatnih veleprodajnih popustov.", 42638 sv: "Vi ger inga ytterligare grossistrabatter pÃ¥ outlet-produkter.", 42639 lv: "MÄs nesniegzm papildu vairumtirdzniecÄ«bas atlaides outlet produktiem.", 42640 lt: "Mes neteikiame papildomų didmeninių nuolaidų outlet produktams.", 42641 ee: "Me ei anna täiendavaid hulgimüügi allahindlusi väljamüügi toodetele.", 42642 dk: "Vi giver ikke yderligere engrosprisrabatter pÃ¥ outlet-produkter.", 42643 gb: "We do not provide additional wholesale discounts on outlet products.", 42644 uk: "We do not provide additional wholesale discounts on outlet products.", 42645 ie: "We do not provide additional wholesale discounts on outlet products.", 42646 us: "We do not provide additional wholesale discounts on outlet products.", 42647 ca: "We do not provide additional wholesale discounts on outlet products.", 42648 au: "We do not provide additional wholesale discounts on outlet products.", 42649 nz: "We do not provide additional wholesale discounts on outlet products.", 42650 ru: "ÐÑ Ð½Ðµ пÑедоÑÑавлÑем дополниÑелÑнÑе опÑовÑе Ñкидки на аÑÑÐ»ÐµÑ ÑоваÑÑ." 42651 } 42652 }; 42653 42654 // Get current locale from document 42655 window.currentLocale = document.documentElement.lang || 'en'; 42656 42657 // Function to translate compare buttons 42658 window.translateCompareButtons = function() { 42659 const compareTexts = document.querySelectorAll('[data-translate="compare"]');
42660 compareTexts.forEach(function(textEl) { 42661 const button = textEl.closest('.compare-button-simple'); 42662 const isInComparison = button && button.hasAttribute('data-in-comparison'); 42663 42664 if (isInComparison) { 42665 const translation = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 42666 textEl.textContent = translation; 42667 } else { 42668 const translation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 42669 textEl.textContent = translation; 42670 } 42671 }); 42672 }; 42673 42674 // Function to format price with space as thousands separator (only for tooltip) 42675 function formatTooltipPrice(price) { 42676 // ФоÑмаÑиÑÑÐµÑ ÑолÑко ÑиÑло пеÑед валÑÑой (напÑимеÑ, 1750 KÄ => 1 750 KÄ) 42677 return price.replace(/(\d{1,3})(?=(\d{3})+(?!\d))/g, '$1 '); 42678 } 42679 42680 // Function to translate tooltips with price 42681 window.translateTooltips = function() { 42682 const tooltips = document.querySelectorAll('[data-translate="tooltip-price"]'); 42683 tooltips.forEach(function(tooltip) { 42684 const icon = tooltip.closest('.price-info-icon'); 42685 if (icon) { 42686 const status = icon.getAttribute('data-status'); 42687 // Check if this is an outlet product 42688 if (status === 'outlet') { 42689 const translation = window.tooltipTranslations.tooltipOutlet[window.currentLocale] || window.tooltipTranslations.tooltipOutlet.en; 42690 tooltip.textContent = translation; 42691 return; // Exit early for outlet products 42692 } 42693 const retailPrice = icon.getAttribute('data-retail-price'); // MC price (maloobchodnÃ) 42694 // Get wholesale price from the actual price display on the card 42695 const card = icon.closest('[data-product-id]'); 42696 let wholesalePrice = ''; 42697 if (card) { 42698 // Find the main price element on the card 42699 const priceElement = card.querySelector('.price .price-item--regular'); 42700 if (priceElement) { 42701 wholesalePrice = priceElement.textContent.trim(); 42702 } 42703 } 42704 if (retailPrice && wholesalePrice) { 42705 // Format only retailPrice (MCPRICE) for tooltip with thousands separator 42706 let formattedRetailPrice = formatTooltipPrice(retailPrice); 42707 let formattedWholesalePrice = wholesalePrice; 42708 if (window.formatPriceText) { 42709 formattedWholesalePrice = window.formatPriceText(wholesalePrice); 42710 } 42711 const translation = window.tooltipTranslations.tooltipPrice[window.currentLocale] || window.tooltipTranslations.tooltipPrice.en; 42712 // Replace MCPRICE with formatted retail price and WSPRICE with formatted wholesale price 42713 const translatedText = translation.replace(/MCPRICE/g, formattedRetailPrice).replace(/WSPRICE/g, formattedWholesalePrice); 42714 tooltip.textContent = translatedText; 42715 } 42716 } 42717 }); 42718 }; 42719 42720 // Function to update button state based on comparison status 42721 window.updateCompareButtonState = function(productId, isInComparison) { 42722 const buttons = document.querySelectorAll('.compare-button-simple[data-product-id="' + productId + '"]'); 42723 buttons.forEach(function(button) { 42724 const buttonContainer = button.closest('.compare-button-container'); 42725 const compareText = button.querySelector('.compare-text'); 42726 42727 if (isInComparison) { 42728 button.setAttribute('data-in-comparison', 'true'); 42729 button.classList.add('in-comparison'); 42730 buttonContainer.classList.add('in-comparison'); 42731 const removeText = window.compareButtonTranslations.remove[window.currentLocale] || window.compareButtonTranslations.remove.en; 42732 compareText.textContent = removeText; 42733 } else { 42734 button.removeAttribute('data-in-comparison'); 42735 button.classList.remove('in-comparison'); 42736 buttonContainer.classList.remove('in-comparison'); 42737 const compareTextTranslation = window.compareButtonTranslations.compare[window.currentLocale] || window.compareButtonTranslations.compare.en; 42738 compareText.textContent = compareTextTranslation; 42739 } 42740 }); 42741 }; 42742 } 42743 42744 // Initialize compare button states based on localStorage 42745 window.initializeCompareButtonStates = function() {
42746 if (typeof window.RendlCompare !== 'undefined') { 42747 const compareItems = window.RendlCompare.getItems(); 42748 document.querySelectorAll('.compare-button-simple[data-product-id]').forEach(function(button) { 42749 const productId = button.getAttribute('data-product-id'); 42750 const isInComparison = compareItems.some(item => String(item.id) === String(productId)); 42751 window.updateCompareButtonState(productId, isInComparison); 42752 }); 42753 } 42754 }; 42755 42756 // Compare button UI animation - the actual functionality is handled by compare-system.js 42757 document.addEventListener('DOMContentLoaded', function() { 42758 // Apply translations on page load 42759 if (window.translateCompareButtons) { 42760 window.translateCompareButtons(); 42761 } 42762 42763 // Initialize button states based on comparison data 42764 setTimeout(function() { 42765 if (window.initializeCompareButtonStates) { 42766 window.initializeCompareButtonStates(); 42767 } 42768 }, 100); // Small delay to ensure compare system is loaded 42769 42770 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 42771 // Skip if already has event listener 42772 if (button.hasAttribute('data-compare-initialized')) { 42773 return; 42774 } 42775 button.setAttribute('data-compare-initialized', 'true'); 42776 42777 button.addEventListener('click', function(e) { 42778 var buttonContainer = button.closest('.compare-button-container'); 42779 var compareText = button.querySelector('.compare-text'); 42780 var isInComparison = button.hasAttribute('data-in-comparison'); 42781 var productId = button.getAttribute('data-product-id'); 42782 42783 // Prevent multiple clicks during loading 42784 if (button.classList.contains('loading')) { 42785 return; 42786 } 42787 42788 // Make button always visible during the process 42789 buttonContainer.classList.add('active'); 42790 42791 // Add loading class to show spinner 42792 button.classList.add('loading'); 42793 42794 // UI feedback timing 42795 setTimeout(function() { 42796 // Remove loading class and show success message 42797 button.classList.remove('loading'); 42798 button.classList.add('success'); 42799 42800 if (isInComparison) { 42801 // Removing from comparison 42802 compareText.textContent = window.compareButtonTranslations.removed[window.currentLocale] || window.compareButtonTranslations.removed.en; 42803 42804 // Update button state after removal 42805 setTimeout(function() { 42806 button.classList.remove('success'); 42807 window.updateCompareButtonState(productId, false); 42808 buttonContainer.classList.remove('active'); 42809 }, 1500); 42810 } else { 42811 // Adding to comparison 42812 compareText.textContent = window.compareButtonTranslations.added[window.currentLocale] || window.compareButtonTranslations.added.en; 42813 42814 // Update button state after addition 42815 setTimeout(function() { 42816 button.classList.remove('success'); 42817 window.updateCompareButtonState(productId, true); 42818 buttonContainer.classList.remove('active'); 42819 }, 1500); 42820 } 42821 }, 1200); 42822 }); 42823 }); 42824 42825 // Initialize tooltips translation with slight delay to ensure remove-decimals.js is loaded 42826 setTimeout(function() { 42827 if (window.translateTooltips) { 42828 window.translateTooltips(); 42829 } 42830 }, 100); 42831 }); 42832 42833 // Ensure compare button states are initialized after RendlCompare is available 42834 document.addEventListener('DOMContentLoaded', function() { 42835 function tryInitCompareButtons() { 42836 if (window.RendlCompare && typeof window.initializeCompareButtonStates === 'function') { 42837 window.initializeCompareButtonStates(); 42838 } else { 42839 setTimeout(tryInitCompareButtons, 100); 42840 } 42841 } 42842 tryInitCompareButtons(); 42843 }); 42844 42845 // Self-contained wishlist functionality for card-product 42846 (function() { 42847 // Wishlist translations 42848 var wishlistTranslations = { 42849 'en': { 42850 addToWishlist: 'Add to My Favorites', 42851 createCategory: 'Create new category:', 42852 categoryPlaceholder: 'Category name', 42853 createAndAdd: 'Create & Add Item', 42854 alreadyAdded: '(Already added)', 42855 addedToWishlist: 'added to My Favorites', 42856 removedFromWishlist: 'removed from My Favorites', 42857 allFavorites: 'All Favorites' 42858 }, 42859 'cs': { 42860 addToWishlist: 'PÅidat do oblÃbených', 42861 createCategory: 'VytvoÅit novou skupinu:', 42862 categoryPlaceholder: 'Název nové skupiny', 42863 createAndAdd: 'VytvoÅit a pÅidat skupinu', 42864 alreadyAdded: '(Již pÅidáno)', 42865 addedToWishlist: 'pÅidáno do oblÃbených', 42866 removedFromWishlist: 'odebráno z oblÃbených', 42867 allFavorites: 'VÅ¡echny oblÃbené' 42868 }, 42869 'sk': { 42870 addToWishlist: 'PridaÅ¥ do obľúbených', 42871 createCategory: 'VytvoriÅ¥ novú kategóriu:', 42872 categoryPlaceholder: 'Názov kategórie', 42873 createAndAdd: 'VytvoriÅ¥ a pridaÅ¥ položku', 42874 alreadyAdded: '(Už pridané)', 42875 addedToWishlist: 'pridané do obľúbených', 42876 removedFromWishlist: 'odstránené z obľúbených', 42877 allFavorites: 'VÅ¡etky obľúbené' 42878 }, 42879 'de': { 42880 addToWishlist: 'Zu meinen Favoriten hinzufügen', 42881 createCategory: 'Neue Kategorie erstellen:', 42882 categoryPlaceholder: 'Kategoriename', 42883 createAndAdd: 'Erstellen & hinzufügen', 42884 alreadyAdded: '(Bereits hinzugefügt)', 42885 addedToWishlist: 'zu meinen Favoriten hinzugefügt', 42886 removedFromWishlist: 'aus meinen Favoriten entfernt', 42887 allFavorites: 'Alle Favoriten' 42888 }, 42889 'fr': { 42890 addToWishlist: 'Ajouter à mes favoris', 42891 createCategory: 'Créer une nouvelle catégorie :', 42892 categoryPlaceholder: 'Nom de la catégorie', 42893 createAndAdd: 'Créer et ajouter', 42894 alreadyAdded: '(Déjà ajouté)', 42895 addedToWishlist: 'ajouté à mes favoris', 42896 removedFromWishlist: 'retiré de mes favoris', 42897 allFavorites: 'Tous les favoris' 42898 }, 42899 'it': { 42900 addToWishlist: 'Aggiungi ai preferiti', 42901 createCategory: 'Crea nuova categoria:', 42902 categoryPlaceholder: 'Nome categoria', 42903 createAndAdd: 'Crea e aggiungi', 42904 alreadyAdded: '(Già aggiunto)', 42905 addedToWishlist: 'aggiunto ai preferiti', 42906 removedFromWishlist: 'rimosso dai preferiti', 42907 allFavorites: 'Tutti i preferiti' 42908 }, 42909 'es': { 42910 addToWishlist: 'Añadir a mis favoritos', 42911 createCategory: 'Crear nueva categorÃa:', 42912 categoryPlaceholder: 'Nombre de la categorÃa', 42913 createAndAdd: 'Crear y añadir', 42914 alreadyAdded: '(Ya añadido)', 42915 addedToWishlist: 'añadido a mis favoritos', 42916 removedFromWishlist: 'eliminado de mis favoritos', 42917 allFavorites: 'Todos los favoritos' 42918 }, 42919 'nl': { 42920 addToWishlist: 'Toevoegen aan mijn favorieten', 42921 createCategory: 'Nieuwe categorie aanmaken:', 42922 categoryPlaceholder: 'Categorienaam', 42923 createAndAdd: 'Aanmaken & toevoegen', 42924 alreadyAdded: '(Al toegevoegd)', 42925 addedToWishlist: 'toegevoegd aan mijn favorieten', 42926 removedFromWishlist: 'verwijderd uit mijn favorieten', 42927 allFavorites: 'Alle favorieten' 42928 }, 42929 'pl': { 42930 addToWishlist: 'Dodaj do ulubionych', 42931 createCategory: 'Utwórz nowÄ kategoriÄ:', 42932 categoryPlaceholder: 'Nazwa kategorii', 42933 createAndAdd: 'Utwórz i dodaj', 42934 alreadyAdded: '(Już dodane)', 42935 addedToWishlist: 'dodano do ulubionych', 42936 removedFromWishlist: 'usuniÄto z ulubionych', 42937 allFavorites: 'Wszystkie ulubione' 42938 }, 42939 'hu': { 42940 addToWishlist: 'Hozzáadás a kedvencekhez', 42941 createCategory: 'Ãj kategória létrehozása:', 42942 categoryPlaceholder: 'Kategória neve', 42943 createAndAdd: 'Létrehozás és hozzáadás', 42944 alreadyAdded: '(Már hozzáadva)', 42945 addedToWishlist: 'hozzáadva a kedvencekhez', 42946 removedFromWishlist: 'eltávolÃtva a kedvencekbÅl', 42947 allFavorites: 'Minden kedvenc' 42948 }, 42949 'ro': { 42950 addToWishlist: 'AdaugÄ la favorite', 42951 createCategory: 'CreeazÄ o nouÄ categorie:', 42952 categoryPlaceholder: 'Nume categorie', 42953 createAndAdd: 'CreeazÄ Èi adaugÄ', 42954 alreadyAdded: '(Deja adÄugat)', 42955 addedToWishlist: 'adÄugat la favorite', 42956 removedFromWishlist: 'eliminat din favorite', 42957 allFavorites: 'Toate preferinÈele' 42958 }, 42959 'bg': { 42960 addToWishlist: 'Ðобави в лÑбими', 42961 createCategory: 'СÑздай нова каÑегоÑиÑ:', 42962 categoryPlaceholder: 'Ðме на каÑегоÑиÑ', 42963 createAndAdd: 'СÑздай и добави', 42964 alreadyAdded: '(ÐеÑе добавено)', 42965 addedToWishlist: 'добавено в лÑбими', 42966 removedFromWishlist: 'пÑÐµÐ¼Ð°Ñ Ð½Ð°Ñо Ð¾Ñ Ð»Ñбими', 42967 allFavorites: 'ÐÑиÑки лÑбими' 42968 }, 42969 'hr': { 42970 addToWishlist: 'Dodaj u favorite', 42971 createCategory: 'Kreiraj novu kategoriju:', 42972 categoryPlaceholder: 'Naziv kategorije', 42973 createAndAdd: 'Kreiraj i dodaj', 42974 alreadyAdded: '(VeÄ dodano)', 42975 addedToWishlist: 'dodano u favorite', 42976 removedFromWishlist: 'uklonjeno iz favorita', 42977 allFavorites: 'Sva omiljena' 42978 }, 42979 'fi': { 42980 addToWishlist: 'Lisää suosikkeihin', 42981 createCategory: 'Luo uusi kategoria:', 42982 categoryPlaceholder: 'Kategorian nimi', 42983 createAndAdd: 'Luo ja lisää', 42984 alreadyAdded: '(Jo lisätty)', 42985 addedToWishlist: 'lisätty suosikkeihin', 42986 removedFromWishlist: 'poistettu suosikeista',
42987 allFavorites: 'Kaikki suosikit' 42988 }, 42989 'gr': { 42990 addToWishlist: 'Î ÏοÏθήκη ÏÏα αγαÏημÎνα', 42991 createCategory: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία νÎÎ±Ï ÎºÎ±ÏηγοÏίαÏ:', 42992 categoryPlaceholder: 'Îνομα καÏηγοÏίαÏ', 42993 createAndAdd: 'ÎÎ·Î¼Î¹Î¿Ï Ïγία & ÏÏοÏθήκη', 42994 alreadyAdded: '(Îδη ÏÏοÏÏÎθηκε)', 42995 addedToWishlist: 'ÏÏοÏÏÎθηκε ÏÏα αγαÏημÎνα', 42996 removedFromWishlist: 'αÏαιÏÎθηκε αÏÏ Ïα αγαÏημÎνα', 42997 allFavorites: 'Îλα Ïα αγαÏημÎνα' 42998 }, 42999 'no': { 43000 addToWishlist: 'Legg til i favoritter', 43001 createCategory: 'Opprett ny kategori:', 43002 categoryPlaceholder: 'Kategorinavn', 43003 createAndAdd: 'Opprett og legg til', 43004 alreadyAdded: '(Allerede lagt til)', 43005 addedToWishlist: 'lagt til i favoritter', 43006 removedFromWishlist: 'fjernet fra favoritter', 43007 allFavorites: 'Alle favoritter' 43008 }, 43009 'pt-PT': { 43010 addToWishlist: 'Adicionar aos favoritos', 43011 createCategory: 'Criar nova categoria:', 43012 categoryPlaceholder: 'Nome da categoria', 43013 createAndAdd: 'Criar e adicionar', 43014 alreadyAdded: '(Já adicionado)', 43015 addedToWishlist: 'adicionado aos favoritos', 43016 removedFromWishlist: 'removido dos favoritos', 43017 allFavorites: 'Todos os favoritos' 43018 }, 43019 'sl': { 43020 addToWishlist: 'Dodaj med priljubljene', 43021 createCategory: 'Ustvari novo kategorijo:', 43022 categoryPlaceholder: 'Ime kategorije', 43023 createAndAdd: 'Ustvari in dodaj', 43024 alreadyAdded: '(Že dodano)', 43025 addedToWishlist: 'dodano med priljubljene', 43026 removedFromWishlist: 'odstranjeno iz priljubljenih', 43027 allFavorites: 'Vsi priljubljeni' 43028 }, 43029 'sv': { 43030 addToWishlist: 'Lägg till i favoriter', 43031 createCategory: 'Skapa ny kategori:', 43032 categoryPlaceholder: 'Kategorinamn', 43033 createAndAdd: 'Skapa och lägg till', 43034 alreadyAdded: '(Redan tillagd)', 43035 addedToWishlist: 'tillagd i favoriter', 43036 removedFromWishlist: 'borttagen frÃ¥n favoriter', 43037 allFavorites: 'Alla favoriter' 43038 }, 43039 'lv': { 43040 addToWishlist: 'Pievienot favorÄ«tiem', 43041 createCategory: 'Izveidot jaunu kategoriju:', 43042 categoryPlaceholder: 'Kategorijas nosaukums', 43043 createAndAdd: 'Izveidot un pievienot', 43044 alreadyAdded: '(Jau pievienots)', 43045 addedToWishlist: 'pievienots favorÄ«tiem', 43046 removedFromWishlist: 'noÅemts no favorÄ«tiem', 43047 allFavorites: 'Visas favorÄ«tus' 43048 }, 43049 'lt': { 43050 addToWishlist: 'PridÄti į mÄgstamiausius', 43051 createCategory: 'Sukurti naujÄ kategorijÄ :', 43052 categoryPlaceholder: 'Kategorijos pavadinimas', 43053 createAndAdd: 'Sukurti ir pridÄti', 43054 alreadyAdded: '(Jau pridÄta)', 43055 addedToWishlist: 'pridÄta į mÄgstamiausius', 43056 removedFromWishlist: 'paÅ¡alinta iÅ¡ mÄgstamiausių', 43057 allFavorites: 'Visos mÄgstamiausios' 43058 }, 43059 'ee': { 43060 addToWishlist: 'Lisa lemmikutesse', 43061 createCategory: 'Loo uus kategooria:', 43062 categoryPlaceholder: 'Kategooria nimi', 43063 createAndAdd: 'Loo ja lisa', 43064 alreadyAdded: '(Juba lisatud)', 43065 addedToWishlist: 'lisatud lemmikutesse', 43066 removedFromWishlist: 'eemaldatud lemmikutest', 43067 allFavorites: 'Kõik lemmikud' 43068 }, 43069 'dk': { 43070 addToWishlist: 'Tilføj til favoritter', 43071 createCategory: 'Opret ny kategori:', 43072 categoryPlaceholder: 'Kategorinavn', 43073 createAndAdd: 'Opret og tilføj', 43074 alreadyAdded: '(Allerede tilføjet)', 43075 addedToWishlist: 'tilføjet til favoritter', 43076 removedFromWishlist: 'fjernet fra favoritter', 43077 allFavorites: 'Alle favoritter' 43078 } 43079 }; 43080 43081 function getWishlistLang() { 43082 var lang = (window.Shopify && Shopify.locale) || document.documentElement.lang || 'en'; 43083 // Normalize for region codes (e.g., pt-PT, sl) 43084 if (lang.startsWith('pt-PT')) return 'pt-PT'; 43085 if (lang.startsWith('sl')) return 'sl'; 43086 if (lang.startsWith('cs')) return 'cs'; 43087 if (lang.startsWith('sk')) return 'sk'; 43088 if (lang.startsWith('de')) return 'de'; 43089 if (lang.startsWith('fr')) return 'fr'; 43090 if (lang.startsWith('it')) return 'it'; 43091 if (lang.startsWith('es')) return 'es'; 43092 if (lang.startsWith('nl')) return 'nl'; 43093 if (lang.startsWith('pl')) return 'pl'; 43094 if (lang.startsWith('hu')) return 'hu'; 43095 if (lang.startsWith('ro')) return 'ro'; 43096 if (lang.startsWith('bg')) return 'bg'; 43097 if (lang.startsWith('hr')) return 'hr'; 43098 if (lang.startsWith('fi')) return 'fi'; 43099 if (lang.startsWith('el') || lang.startsWith('gr')) return 'gr'; 43100 if (lang.startsWith('no')) return 'no'; 43101 if (lang.startsWith('sv')) return 'sv'; 43102 if (lang.startsWith('lv')) return 'lv'; 43103 if (lang.startsWith('lt')) return 'lt'; 43104 if (lang.startsWith('et') || lang.startsWith('ee')) return 'ee'; 43105 if (lang.startsWith('da') || lang.startsWith('dk')) return 'dk'; 43106 return 'en'; 43107 } 43108 43109 // Get or initialize the wishlist array in localStorage 43110 function getWishlist() { 43111 const wishlistJSON = localStorage.getItem('rendl_wishlist'); 43112 const wishlist = wishlistJSON ? JSON.parse(wishlistJSON) : { 43113 categories: [ 43114 { 43115 id: 'all-favorites', 43116 name: 'All Favorites', 43117 items: [] 43118 } 43119 ], 43120 version: 2 43121 }; 43122 43123 // Handle migration from old format (array of items) to new format (categories) 43124 if (Array.isArray(wishlist)) { 43125 return { 43126 categories: [ 43127 { 43128 id: 'all-favorites', 43129 name: 'All Favorites', 43130 items: wishlist 43131 } 43132 ], 43133 version: 2 43134 }; 43135 } 43136 43137 return wishlist; 43138 } 43139 43140 // Save wishlist to localStorage 43141 function saveWishlist(wishlist) { 43142 localStorage.setItem('rendl_wishlist', JSON.stringify(wishlist)); 43143 // Dispatch an event so other parts of the site can react to wishlist changes 43144 document.dispatchEvent(new CustomEvent('wishlist:updated', { 43145 detail: { wishlist: wishlist } 43146 })); 43147 43148 // Count total items across all categories 43149 const totalItems = wishlist.categories.reduce((total, category) => { 43150 return total + category.items.length; 43151 }, 0); 43152 43153 // Update all wishlist counters 43154 updateWishlistCounters(totalItems); 43155 } 43156 43157 // Update all wishlist counters on the page 43158 function updateWishlistCounters(count) { 43159 const counters = document.querySelectorAll('.wishlist-count');
43160 counters.forEach(counter => { 43161 counter.textContent = count; 43162 43163 // If the counter is hidden and count > 0, show it 43164 if (count > 0 && counter.hasAttribute('hidden')) { 43165 counter.removeAttribute('hidden'); 43166 } 43167 // If the counter is visible and count = 0, hide it 43168 else if (count === 0 && !counter.hasAttribute('hidden')) { 43169 counter.setAttribute('hidden', 'true'); 43170 } 43171 }); 43172 } 43173 43174 // Check if a product is in the wishlist (in any category) 43175 function isInWishlist(productId) { 43176 const wishlist = getWishlist(); 43177 return wishlist.categories.some(category => 43178 category.items.some(item => item.id === productId) 43179 ); 43180 } 43181 43182 // Get all categories 43183 function getCategories() { 43184 return getWishlist().categories; 43185 } 43186 43187 // Create a new category 43188 function createCategory(name) { 43189 const wishlist = getWishlist(); 43190 const categoryId = 'category-' + Date.now(); 43191 43192 wishlist.categories.push({ 43193 id: categoryId, 43194 name: name, 43195 items: [] 43196 }); 43197 43198 saveWishlist(wishlist); 43199 return categoryId; 43200 } 43201 43202 // Add a product to a specific category 43203 function addToCategory(product, categoryId) { 43204 const wishlist = getWishlist(); 43205 const category = wishlist.categories.find(cat => cat.id === categoryId); 43206 43207 if (!category) return false; 43208 43209 // Check if product already exists in ANY category (not just this one) 43210 if (isInWishlist(product.id)) { 43211 return false; // Product already in wishlist 43212 } 43213 43214 // Add product to category 43215 category.items.push(product); 43216 saveWishlist(wishlist); 43217 43218 // Dispatch event for global sync 43219 document.dispatchEvent(new CustomEvent('wishlist:updated', { 43220 detail: { productId: product.id, added: true } 43221 })); 43222 43223 return true; 43224 } 43225 43226 // Add a product to the default "All Favorites" category 43227 function addToWishlist(product) { 43228 return addToCategory(product, 'all-favorites'); 43229 } 43230 43231 // Remove a product from all categories 43232 function removeFromWishlist(productId) { 43233 const wishlist = getWishlist(); 43234 let removed = false; 43235 43236 wishlist.categories.forEach(category => { 43237 const initialLength = category.items.length; 43238 category.items = category.items.filter(item => item.id !== productId); 43239 if (category.items.length !== initialLength) { 43240 removed = true; 43241 } 43242 }); 43243 43244 if (removed) { 43245 saveWishlist(wishlist); 43246 } 43247 43248 return removed; 43249 } 43250 43251 // Toggle a product in the wishlist 43252 function toggleWishlistItem(product) { 43253 if (isInWishlist(product.id)) { 43254 // If already in wishlist, remove it 43255 const wasRemoved = removeFromWishlist(product.id); 43256 43257 // Update heart icon if the product was successfully removed 43258 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 43259 if (heartIcon && wasRemoved) { 43260 heartIcon.setAttribute('fill', 'none'); 43261 showWishlistToast(false, product.title); 43262 43263 // Dispatch event for global sync 43264 document.dispatchEvent(new CustomEvent('wishlist:updated', { 43265 detail: { productId: product.id, added: false } 43266 })); 43267 } 43268 return wasRemoved; 43269 } else { 43270 // If not in wishlist, show category selection popup 43271 showCategorySelectionPopup(product); 43272 return false; // Don't return true unless we actually add the product 43273 } 43274 } 43275 43276 // Show wishlist category selection popup 43277 function showCategorySelectionPopup(product) { 43278 // Remove any existing popup 43279 const existingPopup = document.getElementById('wishlist-category-popup'); 43280 if (existingPopup) { 43281 existingPopup.remove(); 43282 } 43283 43284 const lang = getWishlistLang(); 43285 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 43286 43287 // Create popup container 43288 const popup = document.createElement('div'); 43289 popup.id = 'wishlist-category-popup'; 43290 popup.className = 'wishlist-category-popup'; 43291 43292 // Create popup content 43293 const content = document.createElement('div'); 43294 content.className = 'wishlist-category-popup-content'; 43295 43296 // Create header 43297 const title = document.createElement('h2'); 43298 title.textContent = translations.addToWishlist; // Translate 43299 43300 const closeButton = document.createElement('button'); 43301 closeButton.className = 'wishlist-category-popup-close'; 43302 closeButton.setAttribute('aria-label', 'Close'); 43303 closeButton.addEventListener('click', () => { 43304 popup.remove(); 43305 }); 43306 43307 // Create category list 43308 const categoryList = document.createElement('div'); 43309 categoryList.className = 'wishlist-category-list'; 43310 43311 // Get categories 43312 const categories = getCategories(); 43313 43314 // Add category options
43315 categories.forEach(category => { 43316 const categoryOption = document.createElement('div'); 43317 categoryOption.className = 'wishlist-category-option'; 43318 43319 // Use translation for default category name 43320 categoryOption.textContent = category.id === 'all-favorites' 43321 ? (translations.allFavorites || category.name) 43322 : category.name; 43323 43324 // Highlight if product already in this category 43325 if (category.items.some(item => item.id === product.id)) { 43326 categoryOption.style.backgroundColor = '#f0f0f0'; 43327 categoryOption.style.color = '#999'; 43328 categoryOption.style.fontStyle = 'italic'; 43329 categoryOption.textContent += ' ' + translations.alreadyAdded; // Translate 43330 categoryOption.style.cursor = 'default'; 43331 } else { 43332 categoryOption.addEventListener('click', () => { 43333 const wasAdded = addToCategory(product, category.id); 43334 43335 if (wasAdded) { 43336 // Update heart icon after successful addition 43337 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 43338 if (heartIcon) { 43339 heartIcon.setAttribute('fill', '#333333'); 43340 } 43341 43342 showWishlistToast(true, product.title); 43343 popup.remove(); 43344 } 43345 }); 43346 } 43347 43348 categoryList.appendChild(categoryOption); 43349 }); 43350 43351 // Create "add new category" section 43352 const newCategorySection = document.createElement('div'); 43353 newCategorySection.style.borderTop = '1px solid #eee'; 43354 newCategorySection.style.paddingTop = '15px'; 43355 newCategorySection.style.marginTop = '10px'; 43356 43357 const newCategoryLabel = document.createElement('label'); 43358 newCategoryLabel.textContent = translations.createCategory; // Translate 43359 43360 const newCategoryInput = document.createElement('input'); 43361 newCategoryInput.type = 'text'; 43362 newCategoryInput.placeholder = translations.categoryPlaceholder; // Translate 43363 43364 const createButton = document.createElement('button'); 43365 createButton.className = 'create-category-button'; 43366 createButton.textContent = translations.createAndAdd; // Translate 43367 43368 createButton.addEventListener('click', () => { 43369 const categoryName = newCategoryInput.value.trim(); 43370 if (categoryName) { 43371 const categoryId = createCategory(categoryName); 43372 const wasAdded = addToCategory(product, categoryId); 43373 43374 if (wasAdded) { 43375 // Update heart icon after successful addition 43376 const heartIcon = document.querySelector(`.card-wishlist-button[data-wishlist-product="${product.id}"] path`); 43377 if (heartIcon) { 43378 heartIcon.setAttribute('fill', '#333333'); 43379 } 43380 43381 showWishlistToast(true, product.title); 43382 popup.remove(); 43383 } 43384 } 43385 }); 43386 43387 newCategorySection.appendChild(newCategoryLabel); 43388 newCategorySection.appendChild(newCategoryInput); 43389 newCategorySection.appendChild(createButton); 43390 43391 // Assemble popup 43392 content.appendChild(title); 43393 content.appendChild(closeButton); 43394 content.appendChild(categoryList); 43395 content.appendChild(newCategorySection); 43396 popup.appendChild(content); 43397 43398 // Add to document 43399 document.body.appendChild(popup); 43400 43401 // Focus the input 43402 setTimeout(() => { 43403 newCategoryInput.focus(); 43404 }, 100); 43405 43406 // Close when clicking outside content 43407 popup.addEventListener('click', (e) => { 43408 if (e.target === popup) { 43409 popup.remove(); 43410 } 43411 }); 43412 } 43413 43414 // Show a toast notification 43415 function showWishlistToast(added, productTitle) { 43416 // Create or get toast container 43417 let toastContainer = document.getElementById('wishlist-toast'); 43418 if (!toastContainer) { 43419 toastContainer = document.createElement('div'); 43420 toastContainer.id = 'wishlist-toast'; 43421 toastContainer.style.position = 'fixed'; 43422 toastContainer.style.bottom = '20px'; 43423 toastContainer.style.right = '20px'; 43424 toastContainer.style.zIndex = '9999'; 43425 document.body.appendChild(toastContainer); 43426 } 43427 43428 // Create toast 43429 const toast = document.createElement('div'); 43430 toast.style.backgroundColor = added ? '#333' : '#ED7B7B'; 43431 toast.style.color = 'white'; 43432 toast.style.padding = '12px 20px'; 43433 toast.style.borderRadius = '0'; 43434 toast.style.marginTop = '10px'; 43435 toast.style.boxShadow = '0 2px 5px rgba(0,0,0,0.2)'; 43436 toast.style.transition = 'all 0.3s ease'; 43437 toast.style.opacity = '0'; 43438 toast.style.fontFamily = 'Montserrat, sans-serif'; 43439 43440 // Choose text based on action 43441 const lang = getWishlistLang(); 43442 const translations = wishlistTranslations[lang] || wishlistTranslations['en']; 43443 toast.textContent = added 43444 ? `${productTitle} ${translations.addedToWishlist}` // Translate 43445 : `${productTitle} ${translations.removedFromWishlist}`; // Translate 43446 43447 // Add to container 43448 toastContainer.appendChild(toast); 43449 43450 // Animate in 43451 setTimeout(() => { 43452 toast.style.opacity = '1'; 43453 }, 10); 43454 43455 // Animate out and remove 43456 setTimeout(() => { 43457 toast.style.opacity = '0'; 43458 setTimeout(() => { 43459 toastContainer.removeChild(toast); 43460 }, 300); 43461 }, 3000); 43462 } 43463 43464 // Initialize wishlist buttons 43465 function initCardWishlistButtons() { 43466 const wishlistButtons = document.querySelectorAll('.card-wis
43466hlist-button'); 43467 43468 wishlistButtons.forEach(button => { 43469 // Skip if already initialized 43470 if (button.dataset.initializedWishlist === 'true') return; 43471 button.dataset.initializedWishlist = 'true'; 43472 43473 const productId = button.getAttribute('data-wishlist-product'); 43474 if (!productId) return; 43475 43476 // Get product details from the card 43477 const card = button.closest('.card-wrapper'); 43478 const productDetails = { 43479 id: productId, 43480 title: card.querySelector('.card__heading')?.textContent.trim() || '', 43481 handle: card.querySelector('a[href*="/products/"]')?.href.split('/products/')[1]?.split('?')[0] || '', 43482 price: card.querySelector('.price')?.textContent.trim() || '', 43483 image: card.querySelector('img')?.src || '', 43484 url: card.querySelector('a[href*="/products/"]')?.href || '' 43485 }; 43486 43487 // Set initial state using global function 43488 const heartIcon = button.querySelector('path'); 43489 if (heartIcon) { 43490 if (window.checkWishlistStatus && window.checkWishlistStatus(productId)) { 43491 heartIcon.setAttribute('fill', '#333333'); 43492 } else { 43493 heartIcon.setAttribute('fill', 'none'); 43494 } 43495 } 43496 43497 // Add click handler 43498 button.addEventListener('click', function(e) { 43499 e.preventDefault(); 43500 e.stopPropagation(); 43501 e.stopImmediatePropagation(); 43502 toggleWishlistItem(productDetails); 43503 }); 43504 43505 // Prevent navigation on mousedown/touchstart 43506 button.addEventListener('mousedown', function(e) { 43507 e.preventDefault(); 43508 e.stopPropagation(); 43509 }); 43510 43511 button.addEventListener('touchstart', function(e) { 43512 e.preventDefault(); 43513 e.stopPropagation(); 43514 }); 43515 }); 43516 } 43517 43518 // Initialize the wishlist counter on page load 43519 const wishlist = getWishlist(); 43520 const totalItems = wishlist.categories.reduce((total, category) => { 43521 return total + category.items.length; 43522 }, 0); 43523 updateWishlistCounters(totalItems); 43524 43525 // Initialize on DOM ready 43526 if (document.readyState === 'loading') { 43527 document.addEventListener('DOMContentLoaded', initCardWishlistButtons); 43528 } else { 43529 initCardWishlistButtons(); 43530 } 43531 43532 // Reinitialize on Shopify section load 43533 document.addEventListener('shopify:section:load', function() { 43534 setTimeout(initCardWishlistButtons, 100); 43535 }); 43536 43537 // Listen for wishlist updates from other parts of the site 43538 document.addEventListener('wishlist:updated', function() { 43539 setTimeout(initCardWishlistButtons, 100); 43540 }); 43541 })(); 43542</script>
43542 43543 43544<!-- Price info icon styles --> 43545<style> 43546 /* Price container with icon */ 43547 .price-container-with-info { 43548 position: relative; 43549 display: flex; 43550 align-items: center; 43551 gap: 8px; 43552 } 43553 43554 /* Info icon - hidden by default, shown on card hover */ 43555 .price-info-icon { 43556 position: relative; 43557 display: inline-flex; 43558 align-items: center; 43559 justify-content: center; 43560 color: #666; 43561 cursor: help; 43562 opacity: 0; 43563 transition: opacity 0.3s ease; 43564 43565 padding: 4px; /* Add padding to increase clickable area */ 43566 min-width: 20px; /* Ensure minimum clickable area */ 43567 min-height: 20px; 43568 z-index: 15; /* Above everything else including compare button */ 43569 pointer-events: auto; /* Allow interaction */ 43570 } 43571 43572 /* Show icon on card hover */ 43573 .card-wrapper:hover .price-info-icon { 43574 opacity: 1; 43575 } 43576 43577 .price-info-icon svg { 43578 width: 14px; 43579 height: 14px; 43580 stroke-width: 1.5; 43581 } 43582 43583 /* Tooltip styles */ 43584 .price-info-tooltip { 43585 position: absolute; 43586 bottom: calc(100% + 6px); 43587 top: auto; 43588 left: 0; 43589 transform: none; 43590 min-width: 310px; 43591 background: #FFFFFF; 43592 color: #232323; 43593 border: 1px solid #EEEEEE; 43594 box-shadow: 1px 1px 12.1px rgba(0, 0, 0, 0.08); 43595 padding: 12px 16px; 43596 font-size: 13px; 43597 font-family: 'Montserrat', sans-serif; 43598 z-index: 10000; 43599 opacity: 0; 43600 transition: opacity 0.18s; 43601 white-space: pre-line; 43602 text-align: left; 43603 border-radius: 0; 43604 visibility: hidden; 43605 pointer-events: none; 43606 } 43607 43608 /* Show tooltip on icon hover */ 43609 .price-info-icon:hover .price-info-tooltip { 43610 visibility: visible; 43611 opacity: 1; 43612 } 43613 43614 /* Ensure tooltip is never clipped */ 43615 .price-container-with-info, 43616 .card-information, 43617 .card__content { 43618 overflow: visible !important; 43619 } 43620 43621 /* Mobile adjustments */ 43622 @media screen and (max-width: 768px) { 43623 .price-info-tooltip { 43624 min-width: 200px; 43625 font-size: 12px; 43626 padding: 10px 12px; 43627 } 43628 } 43629</style> 43630 43631 </li></ul></div></div> 43632 </div></div> 43633
43634<script> 43635 // Performance optimization: Defer product grid rendering until banner is loaded 43636 (function() { 43637 'use strict'; 43638 43639 function initDeferredProductGrid() { 43640 const productGridContainer = document.getElementById('ProductGridContainer'); 43641 const banner = document.querySelector('.random-banner'); 43642 43643 if (!productGridContainer || !productGridContainer.hasAttribute('data-defer-load')) { 43644 return; 43645 } 43646 43647 // Hide grid initially with smooth transition 43648 // Use the last known grid height (stored after previous render) to avoid layout shift 43649 const heightStorageKey = 'collection_grid_height_v1:' + (window.innerWidth || '0'); 43650 const storedHeight = parseInt(sessionStorage.getItem(heightStorageKey) || '', 10); 43651 const fallbackHeight = 1000; 43652 const placeholderHeight = Number.isFinite(storedHeight) && storedHeight > 200 ? storedHeight : fallbackHeight; 43653 43654 productGridContainer.style.setProperty('--defer-grid-height', placeholderHeight + 'px'); 43655 productGridContainer.style.visibility = 'hidden'; 43656 productGridContainer.style.minHeight = placeholderHeight + 'px'; 43657 productGridContainer.style.opacity = '0'; 43658 43659 function showProductGrid() { 43660 requestAnimationFrame(function() { 43661 productGridContainer.style.visibility = 'visible'; 43662 productGridContainer.style.opacity = '1'; 43663 productGridContainer.style.transition = 'opacity 0.3s ease-in'; 43664 productGridContainer.style.minHeight = 'auto'; 43665 productGridContainer.removeAttribute('data-defer-load'); 43666 43667 // Store actual grid height for next visit (so shimmer matches grid height) 43668 // Delay measurement one frame to ensure layout is updated 43669 requestAnimationFrame(function() { 43670 const measuredHeight = Math.round(productGridContainer.getBoundingClientRect().height || 0); 43671 if (measuredHeight > 200) { 43672 sessionStorage.setItem(heightStorageKey, String(measuredHeight)); 43673 } 43674 }); 43675 43676 // Trigger any animations 43677 const event = new CustomEvent('productgrid:loaded'); 43678 document.dispatchEvent(event); 43679 43680 console.log('[Performance] Product grid rendered after banner load'); 43681 }); 43682 } 43683 43684 // Listen for banner loaded event 43685 document.addEventListener('banner:loaded', function() { 43686 console.log('[Performance] Banner loaded event received'); 43687 setTimeout(showProductGrid, 50); 43688 }); 43689 43690 // Wait for banner to be fully loaded (fallback if event not fired) 43691 if (banner) { 43692 // Check if banner already loaded 43693 if (banner.hasAttribute('data-banner-loaded')) { 43694 console.log('[Performance] Banner already loaded'); 43695 showProductGrid(); 43696 return; 43697 } 43698 43699 // Fallback: show grid after 1.5 seconds anyway 43700 setTimeout(function() { 43701 if (productGridContainer.hasAttribute('data-defer-load')) { 43702 console.log('[Performance] Fallback timeout triggered'); 43703 showProductGrid(); 43704 } 43705 }, 1500); 43706 } else { 43707 // No banner found, show grid immediately 43708 console.log('[Performance] No banner found, showing grid immediately'); 43709 showProductGrid(); 43710 } 43711 } 43712 43713 // Initialize when DOM is ready 43714 if (document.readyState === 'loading') { 43715 document.addEventListener('DOMContentLoaded', initDeferredProductGrid); 43716 } else { 43717 initDeferredProductGrid(); 43718 } 43719 })(); 43720 43721 // Intersection Observer for progressive product loading 43722 (function() { 43723 'use strict'; 43724 43725 if (!('IntersectionObserver' in window)) { 43726 return; // Skip if not supported 43727 } 43728 43729 function initProgressiveProductLoading() { 43730 const productGrid = document.getElementById('product-grid'); 43731 if (!productGrid) return; 43732 43733 const options = { 43734 root: null, 43735 rootMargin: '50px 0px 200px 0px', // Load slightly before entering viewport 43736 threshold: 0.01 43737 }; 43738 43739 const observer = new IntersectionObserver(function(entries) {
43740 entries.forEach(function(entry) { 43741 if (entry.isIntersecting) { 43742 const gridItem = entry.target; 43743 43744 // Load images in this grid item 43745 const images = gridItem.querySelectorAll('img[loading="lazy"]'); 43746 images.forEach(function(img) { 43747 if (img.dataset.src) { 43748 img.src = img.dataset.src; 43749 img.removeAttribute('data-src'); 43750 } 43751 }); 43752 43753 // Add loaded class for animations 43754 gridItem.classList.add('grid-item-loaded'); 43755 43756 // Stop observing this item 43757 observer.unobserve(gridItem); 43758 } 43759 }); 43760 }, options); 43761 43762 // Observe all grid items except first few (already visible) 43763 const gridItems = productGrid.querySelectorAll('.grid__item'); 43764 gridItems.forEach(function(item, index) { 43765 if (index > 5) { // First 6 items load immediately 43766 observer.observe(item); 43767 } 43768 }); 43769 43770 console.log('[Performance] Progressive product loading initialized for', gridItems.length, 'items'); 43771 } 43772 43773 // Wait for product grid to be loaded 43774 document.addEventListener('productgrid:loaded', function() { 43775 setTimeout(initProgressiveProductLoading, 100); 43776 }); 43777 43778 // Also init on page load if no defer 43779 window.addEventListener('load', function() { 43780 setTimeout(initProgressiveProductLoading, 500); 43781 }); 43782 })(); 43783</script>
43783 43784 43785 43786<style> #shopify-section-template--28113427169578__product-grid .card--card, #shopify-section-template--28113427169578__product-grid .card--standard .card__inner {position: relative; box-sizing: border-box; border-radius: var(--border-radius); border-right: 0px solid #d4d4d4; border-bottom: 1px solid #d4d4d4; border-top: 1px solid #d4d4d4; border-left: 0px solid #d4d4d4;} </style></div> 43787 </main> 43788 43789 <!-- BEGIN sections: footer-group --> 43790<div id="shopify-section-sections--28113425662250__main_footer_FMmKHU" class="shopify-section shopify-section-group-footer-group"><!-- Start of footer --> 43791 43792 43793 43794 43795 43796 43797 43798 43799 43800 43801 43802 43803 43804 43805 43806 43807 43808 43809 43810 43811 43812 43813 43814 43815 43816 43817 43818 43819 43820 43821 43822 43823 43824 43825 43826 43827 43828 43829 43830 43831 43832 43833 43834 43835 43836 43837 43838 43839 43840 43841 43842 43843 43844 43845 43846 43847 43848 43849 43850 43851 43852 43853 43854 43855 43856 43857 43858 43859 43860 43861 43862 43863 43864 43865 43866 43867 43868 43869 43870 43871 43872 43873 43874 43875 43876 43877 43878 43879 43880 43881 43882 43883 43884 43885 43886 43887 43888 43889 43890 43891 43892 43893 43894 43895 43896 43897 43898 43899 43900 43901 43902 43903 43904 43905 43906 43907 43908 43909 43910 43911 43912 43913 43914 43915 43916 43917 43918 43919 43920 43921 43922 43923 43924 43925 43926 43927 43928 43929 43930 43931 43932 43933 43934 43935 43936 43937 43938 43939 43940 43941 43942 43943 43944 43945 43946 43947 43948 43949 43950 43951 43952 43953 43954 43955 43956 43957 43958 43959 43960 43961 43962 43963 43964 43965 43966 43967 43968 43969 43970 43971 43972 43973 43974 43975 43976 43977 43978 43979 43980 43981 43982 43983 43984 43985 43986 43987 43988 43989 43990 43991 43992 43993 43994 43995 43996 43997 43998 43999 44000 44001 44002 44003 44004 44005 44006 44007 44008 44009 44010 44011 44012 44013 44014 44015 44016 44017 44018 44019 44020 44021 44022 44023 44024 44025 44026 44027 44028 44029 44030 44031 44032 44033 44034 44035 44036 44037 44038 44039 44040 44041 44042 44043 44044 44045 44046 44047 44048 44049 44050 44051 44052 44053 44054 44055 44056 44057 44058 44059 44060 44061 44062 44063 44064 44065 44066 44067 44068 44069 44070 44071 44072 44073 44074 44075 44076 44077 44078 44079 44080 44081 44082 44083<footer class="footer" data-market="es"> 44084 <div class="footer-container"> 44085 44086 <!-- Column 1: Logo, Languages, and Payment Options --> 44087 <div class="footer-column footer-logo-languages-payments"> 44088 <div style="display: flex; align-items: center; border-bottom: 1px solid #636363; padding-bottom: 10px;"> 44089 <div class="footer-logo"> 44090 <img src="//rendl.es/cdn/shop/files/hero-slider-logo.svg?v=1741941705" alt="Logotipo de Rendl Light Studio" class="logo-img" loading="lazy"> 44091 </div> 44092 44093 <div class="footer-languages"> 44094 <div class="footer-flags-container-logo" style="display: flex; flex-wrap: wrap; gap: 10px;"> 44095 <a href="https://www.rendl.co.at" class="footer-flag-link" data-tooltip="Austria"> 44096 <img src="//rendl.es/cdn/shop/files/flag_AT.svg?v=1741960438" alt="AT Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44097 </a> 44098 <a href="https://www.rendl.be" class="footer-flag-link" data-tooltip="Bélgica"> 44099 <img src="//rendl.es/cdn/shop/files/flag_BE.svg?v=1741960439" alt="BE Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44100 </a> 44101 <a href="https://www.rendl.bg" class="footer-flag-link" data-tooltip="Bulgaria"> 44102 <img src="//rendl.es/cdn/shop/files/flag_BG.svg?v=1741960439" alt="BG Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44103 </a> 44104 <a href="https://www.rendl.hr" class="footer-flag-link" data-tooltip="Croacia"> 44105 <img src="//rendl.es/cdn/shop/files/flag_HR.svg?v=1741960438" alt="HR Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44106 </a> 44107 <a href="https://www.rendl.cz" class="footer-flag-link" data-tooltip="República Checa"> 44108 <img src="//rendl.es/cdn/shop/files/flag_CZ.svg?v=1741960439" alt="CZ Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44109 </a> 44110 <a href="https://www.rendl.dk" class="footer-flag-link" data-tooltip="Dinamarca"> 44111 <img src="//rendl.es/cdn/shop/files/flag_DK.svg?v=1741960439" alt="DK Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44112 </a> 44113 <a href="https://www.rendl.ee" class="footer-flag-link" data-tooltip="Estonia"> 44114 <img src="//rendl.es/cdn/shop/files/flag_EE.svg?v=1741960438" alt="EE Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44115 </a> 44116 <a href="https://www.rendl.fi" class="footer-flag-link" data-tooltip="Finlandia"> 44117 <img src="//rendl.es/cdn/shop/files/flag_FI.svg?v=1741960439" alt="FI Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44118 </a> 44119 <a href="https://www.rendl.fr" class="footer-flag-link" data-tooltip="Francia"> 44120 <img src="//rendl.es/cdn/shop/files/flag_FR.svg?v=1741960439" alt="FR Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44121 </a> 44122 <a href="https://rendl.com.de" class="footer-flag-link" data-tooltip="Alemania"> 44123 <img src="//rendl.es/cdn/shop/files/flag_GE.svg?v=1741960491" alt="DE Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44124 </a> 44125 <a href="https://rendl.gr" class="footer-flag-link" data-tooltip="Grecia"> 44126 <img src="//rendl.es/cdn/shop/files/GR.png?v=1757688511" alt="GR Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44127 </a> 44128 <a href="https://rendl.hu" class="footer-flag-link" data-tooltip="HungrÃa"> 44129 <img src="//rendl.es/cdn/shop/files/flag_HU.svg?v=1741960439" alt="HU Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44130 </a> 44131 <a href="https://rendl.com/?country=GB" class="footer-flag-link" data-tooltip="Irlanda"> 44132 <img src="//rendl.es/cdn/shop/files/flag_IE.svg?v=1741960439" alt="IE Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44133 </a> 44134 <a href="https://rendl.it" class="footer-flag-link" data-tooltip="Italia"> 44135 <img src="//rendl.es/cdn/shop/files/flag_IT.svg?v=1741960439" alt="IT Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44136 </a> 44137 <a href="https://rendl.com/?country=GB" class="footer-flag-link" data-tooltip="Letonia"> 44138 <img src="//rendl.es/cdn/shop/files/flag_LV.svg?v=1741960438" alt="LV Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44139 </a> 44140 <a href="https://www.rendl.lt" class="footer-flag-link" data-tooltip="Lituania"> 44141 <img src="//rendl.es/cdn/shop/files/flag_HU-1.svg?v=1741960439" alt="LT Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44142 </a> 44143 <a href="https://rendl.com/?country=GB" class="footer-flag-link" data-tooltip="Luxemburgo"> 44144 <img src="//rendl.es/cdn/shop/files/flag_LU.svg?v=1741960439" alt="LU Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44145 </a> 44146 <a href="https://www.rendl.nl" class="footer-flag-link" data-tooltip="PaÃses Bajos"> 44147 <img src="//rendl.es/cdn/shop/files/flag_NL.svg?v=1741960439" alt="NL Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44148 </a> 44149 <a href="https://www.rendl.pl" class="footer-flag-link" data-tooltip="Polonia"> 44150 <img src="//rendl.es/cdn/shop/files/flag_PL.svg?v=1741960438" alt="PL Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44151 </a> 44152 <a href="https://www.rendl.pt" class="footer-flag-link" data-tooltip="Portugal"> 44153 <img src="//rendl.es/cdn/shop/files/flag_PT.svg?v=1741960439" alt="PT Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44154 </a> 44155 <a href="https://www.rendl.ro" class="footer-flag-link" data-tooltip="RumanÃa"> 44156 <img src="//rendl.es/cdn/shop/files/flag_RO.svg?v=1741960438" alt="RO Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44157 </a> 44158 <a href="https://www.rendl.sk" class="footer-flag-link" data-tooltip="Eslovaquia"> 44159 <img src="//rendl.es/cdn/shop/files/flag_SK.svg?v=1741960439" alt="SK Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44160 </a> 44161 <a href="https://www.rendl.si" class="footer-flag-link" data-tooltip="Eslovenia"> 44162 <img src="//rendl.es/cdn/shop/files/flag_SL.svg?v=1741960439" alt="SI Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44163 </a> 44164 <a href="https://rendl.es" class="footer-flag-link" data-tooltip="España"> 44165 <img src="//rendl.es/cdn/shop/files/flag_ES.svg?v=1751876458" alt="ES Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44166 </a> 44167 <a href="https://www.rendl.se" class="footer-flag-link" data-tooltip="Suecia"> 44168 <img src="//rendl.es/cdn/shop/files/flag_SE.svg?v=1741960439" alt="SE Flag" class="footer-flag-logo-img" style="width: 30px; height: auto;" loading="lazy"> 44169 </a> 44170 <a href="https://rendl.com/?country=EN" class="footer-flag-link" data-tooltip="Europa/EN/EUR"> 44171 <img src="//rendl.es/cdn/shop/files/flag_EU.svg?v=1741960439" alt="EU Flag" class="footer-flag-logo-img" style="width: 40px; height: auto;" loading="lazy"> 44172 </a> 44173 </div> 44174 </div> 44175 </div> 44176 44177 <!-- Payment Options --> 44178 <div class="footer-payments"> 44179 <div class="footer-payments-header"> 44180 <div class="footer-heading">Opciones de pago </div> 44181 </div> 44182 <div class="footer-payment-icons"> 44183 <div class="footer-flags-container-payments"><svg class="footer-flag-payments-img" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558
441830 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" /><path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg> 44184 44185<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" aria-labelledby="pi-bancontact" role="img" viewBox="0 0 38 24" width="38" height="24"><title id="pi-bancontact">Bancontact</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M4.703 3.077h28.594c.139 0 .276.023.405.068.128.045.244.11.343.194a.9.9 0 0 1 .229.29c.053.107.08.223.08.34V20.03a.829.829 0 0 1-.31.631 1.164 1.164 0 0 1-.747.262H4.703a1.23 1.23 0 0 1-.405-.068 1.09 1.09 0 0 1-.343-.194.9.9 0 0 1-.229-.29.773.773 0 0 1-.08-.34V3.97c0-.118.027-.234.08-.342a.899.899 0 0 1 .23-.29c.098-.082.214-.148.342-.193a1.23 1.23 0 0 1 .405-.068Z" fill="#fff"/><path d="M6.38 18.562v-3.077h1.125c.818 0 1.344.259 1.344.795 0 .304-.167.515-.401.638.338.132.536.387.536.734 0 .62-.536.91-1.37.91H6.38Zm.724-1.798h.537c.328 0 .468-.136.468-.387 0-.268-.255-.356-.599-.356h-.406v.743Zm0 1.262h.448c.438 0 .693-.093.693-.383 0-.286-.219-.404-.63-.404h-.51v.787Zm3.284.589c-.713 0-1.073-.295-1.073-.69 0-.436.422-.69 1.047-.695.156.002.31.014.464.035v-.105c0-.269-.183-.396-.531-.396a2.128 2.128 0 0 0-.688.105l-.13-.474a3.01 3.01 0 0 1 .9-.132c.767 0 1.147.343 1.147.936v1.222c-.214.093-.615.194-1.136.194Zm.438-.497v-.47a2.06 2.06 0 0 0-.37-.036c-.24 0-.427.08-.427.286 0 .185.156.281.432.281a.947.947 0 0 0 .365-.061Zm1.204.444v-2.106a3.699 3.699 0 0 1 1.177-.193c.76 0 1.198.316 1.198.9v1.399h-.719v-1.354c0-.303-.167-.444-.484-.444a1.267 1.267 0 0 0-.459.079v1.719h-.713Zm4.886-2.167-.135.479a1.834 1.834 0 0 0-.588-.11c-.422 0-.652.25-.652.664 0 .453.24.685.688.685.2-.004.397-.043.578-.114l.115.488a2.035 2.035 0 0 1-.75.128c-.865 0-1.365-.453-1.365-1.17 0-.712.495-1.182 1.323-1.182.27-.
44185001.538.043.787.132Zm1.553 2.22c-.802 0-1.302-.47-1.302-1.178 0-.704.5-1.174 1.302-1.174.807 0 1.297.47 1.297 1.173 0 .708-.49 1.179-1.297 1.179Zm0-.502c.37 0 .563-.259.563-.677 0-.413-.193-.672-.563-.672-.364 0-.568.26-.568.672 0 .418.204.677.568.677Zm1.713.449v-2.106a3.699 3.699 0 0 1 1.177-.193c.76 0 1.198.316 1.198.9v1.399h-.719v-1.354c0-.303-.166-.444-.484-.444a1.268 1.268 0 0 0-.459.079v1.719h-.713Zm3.996.053c-.62 0-.938-.286-.938-.866v-.95h-.354v-.484h.355v-.488l.718-.03v.518h.578v.484h-.578v.94c0 .256.125.374.36.374.093 0 .185-.008.276-.026l.036.488c-.149.028-.3.041-.453.04Zm1.814 0c-.713 0-1.073-.295-1.073-.69 0-.436.422-.69 1.047-.695.155.002.31.014.464.035v-.105c0-.269-.183-.396-.532-.396a2.128 2.128 0 0 0-.687.105l-.13-.474a3.01 3.01 0 0 1 .9-.132c.766 0 1.146.343 1.146.936v1.222c-.213.093-.614.194-1.135.194Zm.438-.497v-.47a2.06 2.06 0 0 0-.37-.036c-.24 0-.427.08-.427.286 0 .185.156.281.432.281a.946.946 0 0 0 .365-.061Zm3.157-1.723-.136.479a1.834 1.834 0 0 0-.588-.11c-.422 0-.651.25-.651.664 0 .453.24.685.687.685.2-.004.397-.043.578-.114l.115.488a2.035 2.035 0 0 1-.75.128c-.865 0-1.365-.453-1.365-1.17 0-.712.495-1.182 1.323-1.182.27-.001.538.043.787.132Zm1.58 2.22c-.62 0-.938-.286-.938-.866v-.95h-.354v-.484h.354v-.488l.72-.03v.518h.577v.484h-.578v.94c0 .256.125.374.36.374.092 0 .185-.008.276-.026l.036.488c-.149.028-.3.041-.453.04Z" fill="#1E3764"/><path d="M11.394 13.946c3.803 0 5.705-2.14 7.606-4.28H6.38v4.28h5.014Z" fill="url(#pi-bancontact-a)"/><path d="M26.607 5.385c-3.804 0-5.705 2.14-7.607 4.28h12.62v-4.28h-5.013Z" fill="url(#pi-bancontact-b)"/><defs><linearGradient id="pi-bancontact-a" x1="8.933" y1="12.003" x2="17.734" y2="8.13" gradientUnits="userSpaceOnUse"><stop stop-color="#005AB9"/><stop offset="1" stop-color="#1E3764"/></linearGradient><linearGradient id="pi-bancontact-b" x1="19.764" y1="10.037" x2="29.171" y2="6.235" gradientUnits="userSpaceOnUse"><stop stop-color="#FBA900"/><stop offset="1" stop-color="#FFD800"/></linearGradient></defs></svg> 44186<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-blik"><title id="pi-blik">BLIK</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="url(#pi-blik-paint0_linear)"/><path d="M30.343 17.155l-2.785-3.639 2.563-3.236h-2.185l-2.456 3.138V6.78h-1.848v10.375h1.848v-3.532l2.456 3.532h2.407zM18.613 6.78h-1.848v10.366h1.848V6.78zm3.433 3.508h-1.848v6.867h1.848v-6.867z" fill="#fff"/><path d="M13.849 9.573a1.651 1.651 0 100-3.302 1.651 1.651 0 000 3.302z" fill="url(#pi-blik-paint1_radial)"/><path d="M12.041 10.206c-.574 0-1.138.144-1.642.419V6.82H8.534v6.9a3.516 3.516 0 103.507-3.515zm0 5.175a1.643 1.643 0 110-3.286 1.643 1.643 0 010 3.286z" fill="#fff"/><defs><radialGradient id="pi-blik-paint1_radial" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(12.51 6.18) scale(5.41297)"><stop stop-color="red"/><stop offset=".49" stop-color="#E83E49"/><stop offset="1" stop-color="#F0F"/></radialGradient><linearGradient id="pi-blik-paint0_linear" x1="19" y1="4.977" x2="19" y2="55.605" gradientUnits="userSpaceOnUse"><stop/><stop offset=".732" stop-color="#fff"/><stop offset="1" stop-color="#fff"/></linearGradient></defs></svg> 44187<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
4418706zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg> 44188 44189<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-spidealwero"><title id="pi-spidealwero">iDEAL Wero</title><path opacity="0.07" d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="black"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#FFF48D"/><path d="M3.45001 7.43572V17.0022C3.45001 17.4602 3.82664 17.8347 4.28673 17.8347H10.0301C14.3722 17.8347 16.2539 15.4157 16.2539 12.2063C16.2539 8.99693 14.3715 6.60321 10.0294 6.60321H4.28603C3.82594 6.60321 3.44931 6.97773 3.44931 7.43572H3.45001Z" fill="white"/><path d="M7.29413 8.95133V16.0203H10.385C13.1918 16.0203 14.4087 14.4422 14.4087 12.2112C14.4087 9.98022 13.1911 8.41901 10.385 8.41901H7.82926C7.53259 8.41901 7.29413 8.66027 7.29413 8.95204V8.95133Z" fill="#CC0066"/><path fill-rule="evenodd" clip-rule="evenodd" d="M5.03507 17.073H10.0294C13.539 17.073 15.4754 15.3456 15.4754 12.2105C15.4754 10.4038 14.7685 7.36908 10.0294 7.36908H5.03507C4.59182 7.36908 4.23203 7.72677 4.23203 8.16862V16.2742C4.23203 16.7153 4.59182 17.0737 5.03507 17.0737V17.073ZM4.49924 8.16862C4.49924 7.87335 4.7377 7.63559 5.03437 7.63559H10.0287C11.9609 7.63559 15.2068 8.23104 15.2068 12.2105C15.2068 15.1744 13.3665 16.8065 10.0287 16.8065H5.03507C4.7384 16.8065 4.49994 16.5694 4.49994 16.2735V8.16862H4.49924Z" fill="#232323"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.81464 11.1831C8.72066 11.1494 8.62247 11.1326 8.51586 11.1326V11.1284H7.8082V12.8355H8.52428C8.65122 12.8355 8.76134 12.8102 8.85602 12.7681C8.95 12.7218 9.02785 12.6629 9.08957 12.5872C9.15129 12.5114 9.19618 12.4188 9.22844 12.3136C9.25719 12.2084 9.27332 12.0948 9.27332 11.9686C9.27332 11.8255 9.25299 11.7035 9.21581 11.5983C9.17514 11.4973 9.12183 11.4089 9.05661 11.3374C8.98717 11.27 8.90932 11.2153 8.81534 11.1817L8.81464 11.1831ZM8.64702 12.4995C8.59371 12.5163 8.54462 12.5248 8.49132 12.5248V12.529H8.16799V11.4524H8.4296C8.51937 11.4524 8.59301 11.465 8.65473 11.4903C8.71645 11.5155 8.76554 11.5576 8.80201 11.6039C8.83849 11.6502 8.86724 11.7133 8.88407 11.7806C8.9002 11.8479 8.90862 11.9279 8.90862 12.0121C8.90862 12.1088 8.896 12.1846 8.87215 12.2519C8.85108 12.3106 8.81921 12.3649 8.77817 12.4118C8.74305 12.4524 8.69779 12.4829 8.64702 12.5002V12.4995Z" fill="white"/><path d="M10.7504 11.1333V11.4489H9.87441V11.815H10.6803V12.1053H9.87441V12.5219H10.7707V12.8376H9.51041V11.1305H10.7504V11.1347V11.1333Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M12.6244 12.8404L12.0023 11.1333H11.6222L10.9958 12.8404H11.3641L11.4952 12.4616H12.1173L12.2443 12.8404H12.6251H12.6244ZM11.8136 11.5534L12.0226 12.1797H11.5934L11.8101 11.5534H11.8143H11.8136Z" fill="white"/><path d="M13.2178 11.1325V12.5247H14.0278V12.8403H12.8538V11.1332H13.2178V11.1325Z" fill="white"/><path d="M5.85774 12.8656C6.30099 12.8656 6.66009 12.5065 6.66009 12.0625C6.66009 11.6186 6.30099 11.2595 5.85774 11.2595C5.41448 11.2595 5.05539 11.6186 5.05539 12.0625C5.05539 12.5065 5.41448 12.8656 5.85774 12.8656ZM6.33536 16.0771C5.71396 16.0771 5.216 15.5406 5.216 14.8813V13.9478C5.216 13.6181 5.46498 13.3474 5.77778 13.3474C6.09059 13.3474 6.33957 13.6139 6.33957 13.9478V16.0771H6.33536Z" fill="#232323"/><path d="M31.45 12.2209C31.45 11.1773 32.1926 10.2264 33.4749 10.2264C34.7572 10.2264 35.5053 11.178 35.5053 12.2209C35.5053 13.2638 34.7627 14.2154 33.4749 14.2154C32.1926 14.2154 31.45 13.2638 31.45 12.2209ZM34.3782 12.2209C34.3782 11.7178 34.0467 11.2537 33.4749 11.2537C32.9032 11.2537 32.5717 11.7186 32.571
441897 12.2209C32.5717 12.7232 32.9086 13.1889 33.4749 13.1889C34.0412 13.1889 34.3782 12.724 34.3782 12.2209ZM30.6615 12.9619C31.0889 12.7185 31.3455 12.2537 31.3455 11.7404C31.3455 10.9784 30.7948 10.3294 29.94 10.3294H28.1452V14.1132H29.2567V13.146H29.4649L30.1006 14.1132H31.4095L30.6615 12.9619ZM29.7161 12.2747H29.2567V11.2046H29.7216C30.0211 11.2046 30.213 11.4479 30.213 11.7396C30.213 12.0314 30.0148 12.2747 29.7161 12.2747ZM23.0713 10.3247L22.4044 12.5797L21.7539 10.3247H20.8686L20.2126 12.5797L19.5511 10.3247H18.378L19.722 14.1015H20.6868L21.3108 12.0454L21.9294 14.1015H22.8997L24.2436 10.3247H23.0705H23.0713ZM25.9261 13.1795H25.9237C25.508 13.1795 25.2163 12.9284 25.0915 12.5961H27.9159C27.9385 12.4713 27.9502 12.3434 27.9502 12.2139C27.9502 11.1734 27.21 10.2241 25.9261 10.2233V11.2482C26.3442 11.249 26.6328 11.5002 26.7568 11.8317H23.9363C23.9137 11.9565 23.902 12.0844 23.902 12.2139C23.902 13.2552 24.643 14.2052 25.923 14.2052H25.9253V13.1795H25.9261Z" fill="#1D1C1C"/><path d="M25.9237 14.2044C25.9674 14.2044 26.0103 14.2029 26.0524 14.2013C26.3122 14.188 26.5485 14.135 26.7591 14.05C26.9697 13.965 27.1546 13.8472 27.3114 13.7052C27.4673 13.5644 27.5983 13.3982 27.699 13.2138C27.7903 13.0469 27.8574 12.8667 27.8995 12.6787H26.7225C26.6983 12.7287 26.6702 12.777 26.6382 12.8215C26.5945 12.8831 26.5431 12.9385 26.4846 12.9861C26.4261 13.0344 26.3605 13.075 26.2888 13.1062C26.217 13.1374 26.1382 13.1592 26.0532 13.1709C26.0119 13.1764 25.969 13.1795 25.9245 13.1795C25.6601 13.1795 25.4456 13.0773 25.2919 12.9174L24.5268 13.6912C24.8668 14.0055 25.3387 14.2036 25.9237 14.2036V14.2044Z" fill="#1D1C1C"/><path d="M25.9237 10.2225C24.838 10.2225 24.1399 10.9058 23.9535 11.7482H25.1266C25.267 11.4581 25.5431 11.2475 25.9237 11.2475C26.2272 11.2475 26.4627 11.3785 26.6164 11.5766L27.3886 10.7958C27.0438 10.4464 26.5477 10.2225 25.9245 10.2225H25.9237Z" fill="#1D1C1C"/><path d="M17.3927 16.431C17.3069 16.431 17.2367 16.3608 17.2367 16.275V8.16296C17.2367 8.07716 17.3069 8.00696 17.3927 8.00696C17.4785 8.00696 17.5487 8.07716 17.5487 8.16296V16.275C17.5487 16.3608 17.4785 16.431 17.3927 16.431Z" fill="#1D1C1C"/></svg> 44190<svg class="footer-flag-payments-img" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-maestro"><title id="pi-maestro">Maestro</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><circle fill="#EB001B" cx="15" cy="12" r="7"/><circle fill="#00A2E5" cx="23" cy="12" r="7"/><path fill="#7375CF" d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"/></svg> 44191<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/>
44191</svg> 44192 44193<svg class="footer-flag-payments-img" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-mobilepay"><title id="pi-mobilepay">MobilePay</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill-rule="evenodd" clip-rule="evenodd" d="M20.05 15.296s2.53-.771 4.282-.776c2.896-.007 4.857 1.15 4.857 1.15V10.06s-1.97-1.02-4.453-1.09c-2.481-.068-4.687 1.012-4.687 1.012v5.313z" fill="#5A78FF"/><path fill-rule="evenodd" clip-rule="evenodd" d="M17.308 9.19l2.082 4.957V9.396s1.646-.882 3.485-1.13c1.84-.249 4.181.08 4.181.08l-1.133-2.707s-2.461-.159-4.69.794c-2.228.952-3.925 2.756-3.925 2.756z" fill="#5A78FF"/><path d="M21.428 5.676l-.82-1.99a1.818 1.818 0 00-2.37-.996l-5.663 2.334a1.818 1.818 0 00-.98 2.376l5.46 13.247a1.818 1.818 0 002.37.995l5.662-2.334a1.817 1.817 0 00.98-2.376l-.677-1.642s-.462-.027-.676-.033c-.226-.006-.644-.001-.644-.001l.88 2.136a.606.606 0 01-.326.793l-5.663 2.333a.606.606 0 01-.79-.331L12.711 6.94a.606.606 0 01.327-.792L18.7 3.814a.606.606 0 01.79.332l.83 2.011s.383-.187.59-.27c.206-.082.518-.211.518-.211z" fill="#5A78FF"/></svg> 44194<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg> 44195 44196<svg class="footer-flag-payments-img" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/>
44196<path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778
4419616.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg> 44197 44198</div> 44199 </div> 44200 <div class="footer-shipping-icons" style="display: flex; flex-direction: column; align-items: flex-start; margin-top: 20px;"> 44201 44202 <div style="display: flex; align-items: center;"> 44203 <img src="//rendl.es/cdn/shop/files/cash-on-delivery-icon.svg?v=1741962461" class="footer-shipping-icon"> 44204 <span style="margin-left: 10px; margin-top: 10px;">Pago contra reembolso</span> 44205 </div> 44206 44207 <div style="display: flex; align-items: center; margin-top: 15px;"> 44208 <img src="//rendl.es/cdn/shop/files/bank_transfer-icon.svg?v=1741962480" alt="Bank Transfer" class="footer-shipping-icon" style="margin-right: 10px; margin-top: 0px;"> 44209 <span>Transferencia bancaria</span> 44210 </div> 44211 </div> 44212 </div> 44213 44214 <!-- Delivery Options --> 44215 <div class="footer-delivery-options"> 44216 <div class="footer-heading">Opciones de entrega <span class="footer-badge">GRATIS</span></div> 44217 44218 44219 44220 <div class="footer-delivery-grid"> 44221 44222 44223 44224 44225 44226 44227 44228 44229 44230 44231 44232 44233 44234 44235 44236 44237 44238 44239 44240 44241 44242 44243 44244 44245 44246 44247 44248 44249 44250 44251 44252 44253 44254 44255 44256 44257 44258 44259 44260 44261 44262 44263 44264 44265 44266 44267 44268 44269 44270 44271 44272 44273 44274 44275 44276 44277 44278 44279 44280 44281 44282 44283 44284 44285 44286 44287 44288 44289 44290 44291 44292 44293 44294 44295 44296 44297 44298 44299 44300 44301 44302 44303 44304 44305 44306 44307 44308 44309 44310 44311 44312 44313 44314 44315 44316 44317 44318 44319 44320 44321 44322 44323 44324 44325 44326 44327 44328 44329 44330 44331 44332 44333 44334 44335 44336 44337 44338 44339 44340 44341 44342 44343 44344 44345 44346 44347 44348 44349 44350 44351 44352 44353 44354 44355 44356 44357 44358 44359 44360 44361 44362 44363 44364 44365 44366 44367 44368 44369 44370 44371 44372 44373 44374 44375 44376 44377 44378 44379 44380 44381 44382 44383 44384 44385 44386 44387 44388 44389 44390 44391 44392 44393 44394 44395 44396 44397 44398 44399 44400 44401 44402 44403 44404 44405 44406 44407 44408 44409 44410 44411 44412 44413 44414 44415 44416 44417 44418 44419 44420 44421 44422 44423 44424 44425 44426 44427 44428 44429 44430 44431 44432 44433 44434 44435 44436 44437 44438 44439 44440 44441 44442 44443 44444 44445 44446 44447 44448 44449 44450 44451 44452 44453 44454 44455 44456 44457 44458 44459 44460 44461 44462 44463 44464 44465 44466 44467 44468 44469 44470 44471 44472 44473 <div class="footer-delivery-item" data-markets="pt,gr,nl,se,es">DHL</div> 44474 44475 <div class="footer-delivery-item" data-markets="pt,gr,nl,se,es">GLS</div> 44476 44477 44478 44479 44480 44481 44482 44483 44484 44485 44486 44487 44488 44489 44490 44491 44492 44493 44494 44495 44496 44497 44498 44499 44500 44501 44502 44503 44504 44505 44506 44507 44508 44509 44510 44511 44512 44513 44514 44515 44516 44517 44518 44519 44520 44521 44522 44523 44524 44525 44526 44527 44528 44529 44530 44531 44532 44533 44534 44535 44536 44537 44538 44539 44540 44541 44542 44543 44544 44545 44546 44547 44548 44549 44550 44551 44552 44553 44554 44555 44556 44557 44558 44559 44560 44561 44562 44563 44564 44565 44566 44567 44568 44569 44570 44571 44572 44573 44574 44575 44576 44577 44578 44579 44580 44581 44582 44583 44584 44585 44586 44587 44588 44589 44590 44591 44592 44593 44594 </div> 44595 </div> 44596 </div> 44597 44598 <!-- Column 2: Useful Links --> 44599 <div class="footer-column footer-useful-links"> 44600 <div class="footer-heading">ENLACES ÃTILES</div> 44601 <ul class="footer-links"> 44602 <li><a href="/pages/about-us" class="footer-link">Sobre nosotros</a></li> 44603 <li><a href="/pages/terms-conditions" class="footer-link">Términos y condiciones</a></li> 44604 <li><a href="/pages/return-policy" class="footer-link">PolÃtica de devoluciones</a></li> 44605 <li><a href="/pages/contract-withdrawal" class="footer-link">Formulario de desistimiento</a></li> 44606 <li><a href="/pages/privacy-policy" class="footer-link">PolÃtica de privacidad</a></li> 44607 </ul> 44608 44609 <div class="footer-special-links"> 44610 <a href="/pages/bulk-upload-of-orders" class="footer-link footer-link-with-icon"> 44611 44612 <img src="//rendl.es/cdn/shop/files/bulk-icon_84fb0160-d5a2-4d18-8732-fc12913d207d.svg?v=1764251134&width=48" alt="" class="footer-link-icon"> 44613
44614 <span>Carga masiva</span> 44615 </a> 44616 <a href="/pages/order-tracking" class="footer-link footer-link-with-icon"> 44617 44618 <img src="//rendl.es/cdn/shop/files/order-tracking-icon.svg?v=1764251861&width=48" alt="" class="footer-link-icon"> 44619 44620 <span>Seguimiento de pedido</span> 44621 </a> 44622 </div> 44623 <div class="footer-buttons" style="margin-top: 50px;"> 44624 </div> 44625 </div> 44626 44627 <!-- Column 3: Contact --> 44628 <div class="footer-column footer-showroom-contact"> 44629 <div class="footer-heading">CONTACTO</div> 44630 <div class="footer-contact-info"> 44631 <p class="footer-contact-text">+34 518 89 03 85</p> 44632 44633 <p class="footer-contact-text">[email protected]</p> 44634 <p class="footer-contact-text" style="margin-top: 20px;">Número de IVA: 28200896</p> 44635 <p class="footer-contact-text">CIF: CZ28200896</p> 44636 </div> 44637 </div> 44638 44639 <!-- Column 4: Showroom, Address and Certificates --> 44640 <div class="footer-column footer-address-certificates"> 44641 <div class="footer-heading">DIRECCIÃN</div> 44642 <p class="footer-showroom-text">Masarykovo NábÅežà 10</p> 44643 <p class="footer-showroom-text">120 00 Prague</p> 44644 44645 44646 44647 44648 <p class="footer-returns-wrap"> 44649 <button type="button" class="footer-link footer-returns-trigger" data-footer-returns-open> 44650 Devolución / Reclamación 44651 </button> 44652 </p> 44653 44654 44655 44656 44657 <div class="footer-heading" style="margin-top: 90px;">REDES SOCIALES</div> 44658 <div class="footer-social-icons"> 44659 44660 44661 44662 44663 44664 44665 44666 44667 44668 44669 44670 44671 44672 44673 44674 44675 44676 44677 44678 44679 44680 44681 44682 44683 44684 44685 44686 44687 44688 44689 44690 44691 44692 44693 44694 44695 44696 44697 44698 44699 44700 44701 44702 44703 44704 44705 44706 <a href="https://www.instagram.com/rendllighting_cz/" class="footer-social-icon" target="_blank"> 44707 <img src="//rendl.es/cdn/shop/files/instagram-fill_icon_7c842560-ea97-4427-9df5-736d212788ab.svg?v=1747657286" alt="Instagram" class="footer-social-img"> 44708 </a> 44709 44710 44711 44712 44713 44714 44715 44716 <a href="https://www.facebook.com/rendllighting/" class="footer-social-icon" target="_blank"> 44717 <img src="//rendl.es/cdn/shop/files/facebook_icon_82be2bc1-7854-45ef-962e-f20e563e8cd0.svg?v=1747657300" alt="Facebook" class="footer-social-img"> 44718 </a> 44719 44720 44721 44722 44723 44724 44725 44726 <a href="https://cz.pinterest.com/rendllighting/" class="footer-social-icon" target="_blank"> 44727 <img src="//rendl.es/cdn/shop/files/pinterest_icon_3e0fc202-bba7-4a43-8ce1-9e9eb733eff1.svg?v=1747657314" alt="Pinterest" class="footer-social-img"> 44728 </a> 44729 44730 44731 44732 44733 44734 44735 44736 <a href="https://www.linkedin.com/connect-services/?session_redirect=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Frendl-lightstudio%2F" class="footer-social-icon" target="_blank"> 44737 <img src="//rendl.es/cdn/shop/files/linkedin_icon_137cad57-eedc-4694-b9c7-7667da2940c7.svg?v=1747657329" alt="LinkedIN" class="footer-social-img"> 44738 </a> 44739 44740 44741 44742 44743 44744 44745 44746 44747 44748 44749 44750 44751 44752 44753 44754 44755 44756 44757 44758 44759 44760 44761 44762 44763 44764 44765 44766 44767 44768 44769 44770 44771 44772 44773 44774 44775 44776 44777 44778 44779 44780 44781 44782 44783 44784 44785 44786 44787 44788 44789 44790 44791 44792 44793 44794</div> 44795 44796 <!-- Certificates --> 44797 <div class="footer-certificates" style="margin-top: 20px; display: flex; overflow: hidden; "> 44798 <img src="//rendl.es/cdn/shop/files/awards.png?v=1742566147" alt="Awards" class="footer-certificates-icon"> 44799 </div> 44800 </div> 44801 </div> 44802 44803 <!-- Footer Bottom --> 44804 <div class="footer-bottom"> 44805 <div class="footer-right"> 44806 <p class="footer-bottom-text">© 2026 Rendl Light Studio. Todos los derechos reservados</p> 44807 </div> 44808 </div> 44809</footer> 44810 44811 44812 44813<div 44814 class="footer-returns nds-root is-addr-step" 44815 id="FooterReturns" 44816 hidden 44817 data-error-item="Añada al menos un artÃculo con un ID de artÃculo." 44818 data-title-return="Devolución de mercancÃa" 44819 data-title-claim="Reclamación" 44820 data-file-add="Añadir foto" 44821 data-file-change="Cambiar foto" 44822 data-lottie-src="//rendl.es/cdn/shop/t/33/assets/footer-returns-invoice.json?v=4013412927039921451789329025" 44823 data-culture="es" 44824 data-proxy="/apps/claims" 44825 data-customer-name="" 44826 data-customer-email="" 44827 data-i18n-name="Nombre" 44828 data-i18n-email="Correo" 44829 data-i18n-note="Nota" 44830 data-i18n-type="Tipo de reclamación" 44831 data-i18n-flags="Qué ha ocurrido" 44832 data-i18n-lookup-miss="No hemos reconocido este número." 44833 data-i18n-error-name="Introduce tu nombre." 44834 data-i18n-error-email="Introduce un correo válido." 44835 data-i18n-error-config="El servicio de reclamaciones no está configurado. Contáctanos." 44836 data-i18n-error-generic="No se pudo enviar. Inténtalo de nuevo." 44837 data-i18n-error-article="Este artÃculo no está en el pedido." 44838 data-i18n-error-qty="La cantidad no puede ser mayor que en el pedido." 44839 data-i18n-pdf="Descargar PDF" 44840 data-i18n-label-cz="Descargar etiqueta CZ" 44841 data-i18n-label="Descargar etiqueta de devolución" 44842 data-i18n-address="Dirección de devolución" 44843 data-i18n-photos-skipped="Algunas fotos no se pudieron adjuntar" 44844 data-i18n-loading="Cargando" 44845 data-i18n-sending="Enviando" 44846 data-i18n-settlement="Seleccionar" 44847> 44848 <div 44849 class="footer-returns__scrim" 44850 data-returns-close 44851 tabindex="-1" 44852 style="position:fixed;inset:0;z-index:0;background:transparent;" 44853 ></div> 44854 <div class="nds-modal nds-modal--lg" data-returns-shell> 44855 <div class="nds-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="FooterReturnsTitle"> 44856 <div class="nds-modal__head"> 44857 <h2 id="FooterReturnsTitle" class="nds-modal__title" data-returns-title hidden></h2> 44858 <div class="nds-modal__end"> 44859 <button 44860 type="button" 44861 class="nds-btn nds-btn--ghost nds-btn--md nds-btn--icon-only" 44862 data-returns-close 44863 aria-label="Cerrar" 44864 >
44865 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"> 44866 <path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/> 44867 </svg> 44868 </button> 44869 </div> 44870 </div> 44871 <div class="footer-returns__addr-card"> 44872 <div class="footer-returns__addr"> 44873 <p class="footer-returns__addr-title">Devoluciones</p> 44874 <p class="footer-returns__addr-sub">Para devoluciones utilice exclusivamente esta dirección:</p> 44875 <p class="footer-returns__addr-lines">Rendl Lighting a.s.<br /> 44876warehouse<br /> 44877UPS SCS Czech Republic s.r.o.<br /> 44878Ke KopaninÄ 559<br /> 44879252 67 TuchomÄÅice<br /> 44880Czech Republic</p> 44881 </div> 44882 <div class="footer-returns__addr"> 44883 <p class="footer-returns__addr-title">Reclamaciones</p> 44884 <p class="footer-returns__addr-sub">Para reclamaciones utilice exclusivamente esta dirección:</p> 44885 <p class="footer-returns__addr-lines">Rendl Lighting a.s.<br /> 44886Masarykovo NábÅežà 10<br /> 44887120 00 Praha</p> 44888 </div> 44889 <div class="footer-returns__addr-actions"> 44890 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-addr-next> 44891 Continuar 44892 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h12M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44893 </button> 44894 </div> 44895</div> 44896 <div class="nds-modal__body"> 44897 <div class="footer-returns__invoice-card footer-returns__step--invoice" data-shared-invoice> 44898 <p class="footer-returns__step-title">Introduzca el número de pedido, factura, albarán o tracking</p> 44899 <label class="nds-field" for="FooterReturnsInvoice"> 44900 <span class="nds-field__label">Número de pedido, factura, albarán, tracking</span> 44901 <span class="nds-field__control"> 44902 <input 44903 id="FooterReturnsInvoice" 44904 type="text" 44905 name="invoice_number" 44906 data-shared-invoice-input 44907 autocomplete="off" 44908 > 44909 </span> 44910 </label> 44911 <div class="footer-returns__field-notes"> 44912 <p class="nds-type-body footer-returns__hint">Indicar el número de factura nos ayuda a tramitar correctamente una devolución o reclamación y se le asignará un número de devolución / reclamación.</p> 44913 <p class="nds-type-body footer-returns__hint">Si envÃa sin este número, el trámite puede complicarse y alargarse.</p> 44914 <p class="nds-type-body footer-returns__hint">Sin una identificación correcta, el trámite puede tardar más.</p> 44915 </div> 44916 <p class="footer-returns__error" data-shared-invoice-error role="alert"></p> 44917 <div class="nds-modal__actions footer-returns__actions footer-returns__actions--center footer-returns__actions--choice"> 44918 <button type="button" class="nds-btn nds-btn--secondary nds-btn--md" data-invoice-back> 44919 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6M9 12h10" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44920 Atrás 44921 </button> 44922 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-choose-kind="return"> 44923 Quiero devolver el producto 44924 </button> 44925 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-choose-kind="claim"> 44926 Quiero reclamar 44927 </button> 44928 </div> 44929 </div> 44930 <div class="footer-returns__panel" data-returns-panel="return" hidden> 44931 <form class="footer-returns__form" id="FooterReturnsReturnForm" novalidate> 44932 <div class="footer-returns__step footer-returns__step--stop" data-return-step="withdraw"> 44933 <p class="footer-returns__step-title">Desistimiento del contrato</p> 44934 <p class="nds-type-body footer-returns__hint">El envÃo aún no se ha entregado, por lo que no se puede solicitar una devolución. Puede desistir del contrato.</p> 44935 <div class="nds-modal__actions footer-returns__actions footer-returns__actions--center"> 44936 <button type="button" class="nds-btn nds-btn--secondary nds-btn--md" data-return-back> 44937 <svg class="nds-icon" width="16" height="16" viewB
44937ox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6M9 12h10" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44938 Atrás 44939 </button> 44940 <a class="nds-btn nds-btn--primary nds-btn--md" href="/pages/contract-withdrawal"> 44941 Ir al desistimiento 44942 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h12M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44943 </a> 44944 </div> 44945 </div> 44946 44947 <div class="footer-returns__step footer-returns__step--stop" data-return-step="stop"> 44948 <p class="footer-returns__step-title">14 dÃas desde la recepción</p> 44949 <p class="nds-type-subtitle">El plazo de devolución ha vencido</p> 44950 <p class="nds-type-body footer-returns__hint">No se puede devolver la mercancÃa más de 14 dÃas después de la recepción. Si está dañada o es defectuosa, use la pestaña Reclamación.</p> 44951 <div class="nds-modal__actions footer-returns__actions footer-returns__actions--center"> 44952 <button type="button" class="nds-btn nds-btn--secondary nds-btn--md" data-return-back> 44953 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6M9 12h10" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44954 Atrás 44955 </button> 44956 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-return-to-claim> 44957 Ir a reclamación 44958 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h12M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 44959 </button> 44960 </div> 44961 </div> 44962 44963 <div class="footer-returns__step" data-return-step="2"> 44964 <p class="footer-returns__step-title">Complete los artÃculos que desea devolver</p> 44965 <div class="footer-returns__table-wrap footer-returns__table--return"> 44966 <div class="footer-returns__table-head"> 44967 <span class="nds-th">ID de artÃculo</span> 44968 <span class="nds-th">Cantidad</span> 44969 <span class="nds-th">Imagen</span> 44970 <span class="nds-th">Resolución preferida</span> 44971 <span class="nds-th footer-returns__th-remove"><span class="visually-hidden">Eliminar fila</span></span> 44972 </div> 44973 <div class="footer-returns__rows" data-return-rows></div> 44974 </div> 44975 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-return-add> 44976 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 44977 Añadir 44978 </button> 44979 <div class="footer-returns__note" role="note"> 44980 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="1.75"/><path d="M12 11v5M12 8h.01" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 44981 <div class="footer-returns__note-copy"> 44982 <p class="nds-type-body">Añada fotografÃas de la mercancÃa.</p> 44983 <p class="nds-type-body">Sin una identificación correcta, el trámite puede tardar más.</p> 44984 </div> 44985 </div> 44986 <div class="footer-returns__warning"> 44987 <p class="nds-type-subtitle footer-returns__warning-title">Aviso</p> 44988 <ol class="footer-returns__warning-list"> 44989 <li>La mercancÃa debe estar en el embalaje original. Si el embalaje está dañado o faltan las etiquetas de identificación, el trámite se retrasará.</li> 44990 <li>Una identificación incorrecta retrasará el trámite.</li> 44991 </ol> 44992 </div> 44993 <div class="footer-returns__contact"> 44994 <label class="nds-field nds-field--wide" data-field-wrap="note">
44995 <span class="nds-field__label">Nota</span> 44996 <span class="nds-field__control footer-returns__note-control"> 44997 <textarea name="note" rows="3" data-field="note"></textarea> 44998 </span> 44999 </label> 45000 </div> 45001 <p class="footer-returns__error" data-return-error role="alert"></p> 45002 <div class="nds-modal__actions footer-returns__actions"> 45003 <button type="button" class="nds-btn nds-btn--secondary nds-btn--md" data-return-back> 45004 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6M9 12h10" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 45005 Atrás 45006 </button> 45007 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-return-next> 45008 Confirmar devolución / reclamación 45009 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h12M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 45010 </button> 45011 </div> 45012 </div> 45013 45014 <div class="footer-returns__step footer-returns__step--success" data-return-step="3"> 45015 <div class="footer-returns__success-mark" aria-hidden="true"> 45016 <svg viewBox="0 0 72 72"> 45017 <circle class="footer-returns__success-ring" cx="36" cy="36" r="32"></circle> 45018 <path class="footer-returns__success-check" d="M22 37l10 10 18-20"></path> 45019 </svg> 45020 </div> 45021 <p class="footer-returns__step-title footer-returns__claim-number" data-return-success-number>VR213123</p> 45022 <p class="nds-type-subtitle">Su devolución ha sido aceptada</p> 45023 <p class="footer-returns__wait-note">Espere información sobre el envÃo de la mercancÃa hacia nosotros. Normalmente en 24 horas.</p> 45024 <p class="footer-returns__hint" data-return-success-warning hidden></p> 45025 <div class="footer-returns__result-docs" data-return-success-docs></div> 45026 </div> 45027 </form> 45028 </div> 45029 45030 <div class="footer-returns__panel" data-returns-panel="claim"> 45031 <form class="footer-returns__form" id="FooterReturnsForm" novalidate> 45032 <div class="footer-returns__step" data-step="2"> 45033 <p class="footer-returns__step-title">Complete los artÃculos de la reclamación</p> 45034 <div class="footer-returns__types" data-claim-types hidden> 45035 <p class="footer-returns__flags-title">Tipo de reclamación</p> 45036 <div class="footer-returns__type-grid" data-claim-type-list></div> 45037 <input type="hidden" name="claimTypeId" data-claim-type-id value=""> 45038 </div> 45039 <div class="footer-returns__table-wrap footer-returns__table--claim"> 45040 <div class="footer-returns__table-head"> 45041 <span class="nds-th">ID de artÃculo</span> 45042 <span class="nds-th">Cantidad</span> 45043 <span class="nds-th">Imagen</span> 45044 <span class="nds-th">Descripción</span> 45045 <span class="nds-th">Resolución preferida</span> 45046 <span class="nds-th footer-returns__th-remove"><span class="visually-hidden">Eliminar fila</span></span> 45047 </div> 45048 <div class="footer-returns__rows" data-returns-rows></div> 45049 </div> 45050 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-returns-add> 45051 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M12 5v14M5 12h14" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 45052 Añadir 45053 </button> 45054 <div class="footer-returns__note" role="note"> 45055 <svg class="nds-icon" width="16" height="16" viewB
45055ox="0 0 24 24" fill="none" aria-hidden="true"><circle cx="12" cy="12" r="9" stroke="currentColor" stroke-width="1.75"/><path d="M12 11v5M12 8h.01" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 45056 <div class="footer-returns__note-copy"> 45057 <p class="nds-type-body">Añada fotos y una descripción clara del problema.</p> 45058 <p class="nds-type-body">Sin una identificación correcta, el trámite puede tardar más.</p> 45059 </div> 45060 </div> 45061 <div class="footer-returns__flags" data-claim-flags> 45062 <p class="footer-returns__flags-title">Qué ha ocurrido</p> 45063 <div class="footer-returns__flags-grid"> 45064 <label class="footer-returns__check"><input type="checkbox" name="packageDamage"> <span>Embalaje dañado</span></label> 45065 <label class="footer-returns__check"><input type="checkbox" name="packageDamageInside"> <span>Daño en el interior</span></label> 45066 <label class="footer-returns__check"><input type="checkbox" name="damageAfterUnpack"> <span>Daño al desembalar</span></label> 45067 <label class="footer-returns__check"><input type="checkbox" name="differentGoods"> <span>Producto distinto</span></label> 45068 <label class="footer-returns__check"><input type="checkbox" name="missingGoods"> <span>Producto faltante</span></label> 45069 <label class="footer-returns__check"><input type="checkbox" name="wrongAddress"> <span>Dirección incorrecta</span></label> 45070 </div> 45071 </div> 45072 <div class="footer-returns__contact"> 45073 <label class="nds-field nds-field--wide" data-field-wrap="note"> 45074 <span class="nds-field__label">Nota</span> 45075 <span class="nds-field__control footer-returns__note-control"> 45076 <textarea name="note" rows="3" data-field="note"></textarea> 45077 </span> 45078 </label> 45079 </div> 45080 <p class="footer-returns__error" data-returns-error role="alert"></p> 45081 <div class="nds-modal__actions footer-returns__actions"> 45082 <button type="button" class="nds-btn nds-btn--secondary nds-btn--md" data-returns-back> 45083 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M15 6l-6 6 6 6M9 12h10" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 45084 Atrás 45085 </button> 45086 <button type="button" class="nds-btn nds-btn--primary nds-btn--md" data-returns-next> 45087 Confirmar devolución / reclamación 45088 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M5 12h12M13 6l6 6-6 6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/></svg> 45089 </button> 45090 </div> 45091 </div> 45092 45093 <div class="footer-returns__step footer-returns__step--success" data-step="3"> 45094 <div class="footer-returns__success-mark" aria-hidden="true"> 45095 <svg viewBox="0 0 72 72"> 45096 <circle class="footer-returns__success-ring" cx="36" cy="36" r="32"></circle> 45097 <path class="footer-returns__success-check" d="M22 37l10 10 18-20"></path> 45098 </svg> 45099 </div> 45100 <p class="footer-returns__step-title footer-returns__claim-number" data-claim-success-number>RC213123</p> 45101 <p class="nds-type-subtitle">Su reclamación ha sido aceptada</p> 45102 <p class="footer-returns__wait-note">Espere información sobre el envÃo de la mercancÃa, normalmente en 24 horas.</p> 45103 <p class="footer-returns__hint" data-claim-success-warning hidden></p> 45104 <div class="footer-returns__result-docs" data-claim-success-docs></div> 45105 </div> 45106 </form> 45107 </div> 45108 </div> 45109 </div> 45110 </div> 45111 <div class="footer-returns__desc-pop" data-desc-pop hidden> 45112 <textarea data-desc-pop-input rows="5"></textarea> 45113 </div> 45114 45115 <template id="FooterReturnsReturnRowTemplate"> 45116 <div class="footer-returns__row">
45117 <span class="nds-field__control" data-label="ID de artÃculo"> 45118 <input type="text" name="article_id" data-return-article placeholder="R14356"> 45119 </span> 45120 <span class="nds-field__control" data-label="Cantidad"> 45121 <input type="number" name="qty" min="1" step="1" value="1" inputmode="numeric" data-returns-qty> 45122 </span> 45123 <span class="nds-field__control footer-returns__file" data-label="Imagen"> 45124 <div class="footer-returns__file-thumbs" data-file-thumbs></div> 45125 <label class="footer-returns__file-btn" data-returns-preview> 45126 <input class="footer-returns__file-input" type="file" name="image" accept="image/jpeg,image/png,image/gif,image/webp" multiple tabindex="-1"> 45127 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M4 8h3.2l1.4-2h6.8l1.4 2H20v11H4V8z" stroke="currentColor" stroke-width="1.75" stroke-linejoin="round"/><circle cx="12" cy="13.5" r="3.2" stroke="currentColor" stroke-width="1.75"/></svg> 45128 <span data-returns-file-label>Añadir foto</span> 45129 </label> 45130 </span> 45131 <div class="footer-returns__dropdown" data-returns-dropdown data-label="Resolución preferida"> 45132 <button type="button" class="footer-returns__dropdown-trigger" data-dropdown-trigger aria-haspopup="listbox" aria-expanded="false"> 45133 <span data-dropdown-label>Seleccionar</span> 45134 <span class="footer-returns__select-chevron" aria-hidden="true"> 45135 <svg class="nds-icon" width="14" height="14" viewBox="0 0 24 24" fill="none"> 45136 <path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/> 45137 </svg> 45138 </span> 45139 </button> 45140 <div class="footer-returns__dropdown-menu" data-dropdown-menu hidden></div> 45141 <input type="hidden" name="resolution" value=""> 45142 </div> 45143 <button type="button" class="footer-returns__row-remove" data-returns-remove aria-label="Eliminar fila"> 45144 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 45145 <span class="footer-returns__row-remove-label">Eliminar fila</span> 45146 </button> 45147 </div> 45148 </template> 45149 45150 <template id="FooterReturnsRowTemplate"> 45151 <div class="footer-returns__row"> 45152 <span class="nds-field__control" data-label="ID de artÃculo"> 45153 <input type="text" name="article_id" data-returns-article placeholder="R14356"> 45154 </span> 45155 <span class="nds-field__control" data-label="Cantidad"> 45156 <input type="number" name="qty" min="1" step="1" value="1" inputmode="numeric" data-returns-qty> 45157 </span> 45158 <span class="nds-field__control footer-returns__file" data-label="Imagen"> 45159 <div class="footer-returns__file-thumbs" data-file-thumbs></div> 45160 <label class="footer-returns__file-btn" data-returns-preview> 45161 <input class="footer-returns__file-input" type="file" name="image" accept="image/jpeg,image/png,image/gif,image/webp" multiple tabindex="-1"> 45162 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M4 8h3.2l1.4-2h6.8l1.4 2H20v11H4V8z" stroke="currentColor" stroke-width="1.75" stroke-linejoin="round"/><circle cx="12" cy="13.5" r="3.2" stroke="currentColor" stroke-width="1.75"/></svg> 45163 <span data-returns-file-label>Añadir foto</span> 45164 </label> 45165 </span> 45166 <span class="nds-field__control footer-returns__desc" data-label="Descripción"> 45167 <button type="button" class="footer-returns__desc-trigger" data-desc-trigger> 45168 <span data-desc-preview></span> 45169 </button> 45170 <textarea name="description" data-returns-desc hidden></textarea> 45171 </span> 45172 <div class="footer-returns__dropdown" data-returns-dropdown data-label="Resolución preferida"> 45173 <button type="button" class="footer-returns__dropdown-trigger" data-dropdown-trigger aria-haspopup="listbox" aria-expanded="false">
45174 <span data-dropdown-label>Seleccionar</span> 45175 <span class="footer-returns__select-chevron" aria-hidden="true"> 45176 <svg class="nds-icon" width="14" height="14" viewBox="0 0 24 24" fill="none"> 45177 <path d="M6 9l6 6 6-6" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"/> 45178 </svg> 45179 </span> 45180 </button> 45181 <div class="footer-returns__dropdown-menu" data-dropdown-menu hidden></div> 45182 <input type="hidden" name="resolution" value=""> 45183 </div> 45184 <button type="button" class="footer-returns__row-remove" data-returns-remove aria-label="Eliminar fila"> 45185 <svg class="nds-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true"><path d="M18 6L6 18M6 6l12 12" stroke="currentColor" stroke-width="1.75" stroke-linecap="round"/></svg> 45186 <span class="footer-returns__row-remove-label">Eliminar fila</span> 45187 </button> 45188 </div> 45189 </template> 45190</div> 45191 45192<style> 45193.footer-returns.nds-root { 45194 --nds-ink-50: #f6f6f6; 45195 --nds-ink-100: #ededed; 45196 --nds-ink-200: #d8d8d8; 45197 --nds-ink-400: #8a8a8a; 45198 --nds-ink-500: #5f5f5f; 45199 --nds-ink-600: #3d3d3d; 45200 --nds-ink-800: #1a1a1a; 45201 --nds-ink-900: #111111; 45202 --nds-snow-50: #ffffff; 45203 --nds-snow-200: #f4f4f4; 45204 --nds-page: #f4f4f4; 45205 --nds-surface: #ffffff; 45206 --nds-ink: #2a2a2a; 45207 --nds-border: #6f6f6f; 45208 --nds-muted: #6a6a6a; 45209 --nds-accent: #171717; 45210 --nds-accent-hover: #2f2f2f; 45211 --nds-accent-900: #171717; 45212 --nds-hover: #f0f0f0; 45213 --nds-line: #d8d8d8; 45214 --nds-error: #c62828; 45215 --nds-motion-fast: 150ms ease; 45216 --nds-font: Montserrat, sans-serif; 45217 --nds-weight: 400; 45218 --nds-weight-medium: 500; 45219 --nds-type-title: 18px; 45220 --nds-type-subtitle: 16px; 45221 --nds-type-body: 14px; 45222 --nds-type-small: 14px; 45223 --nds-note: #f3e8b5; 45224 --nds-note-line: #e4d48a; 45225 --nds-note-ink: #4a3f12; 45226 --nds-btn-h-md: 40px; 45227 --nds-btn-pad-md: 16px; 45228 --nds-shadow-pop: 0 8px 28px rgba(17, 17, 17, 0.12); 45229 --nds-motion-enter: 180ms cubic-bezier(0.4, 0, 0.2, 1); 45230 --nds-motion-leave: 140ms cubic-bezier(0.4, 0, 0.2, 1); 45231 --nds-motion-shift: 10px; 45232 color: var(--nds-ink); 45233 font-family: var(--nds-font); 45234 font-weight: var(--nds-weight); 45235} 45236 45237.footer-returns[hidden] { 45238 display: none !important; 45239} 45240 45241.footer-returns:not([hidden]) { 45242 position: fixed !important; 45243 inset: 0 !important; 45244 z-index: 2147483646 !important; 45245 display: flex !important; 45246 align-items: center; 45247 justify-content: center; 45248 padding: 24px; 45249 background: rgba(10, 10, 10, 0.56) !important; 45250 backdrop-filter: blur(12px) !important; 45251 -webkit-backdrop-filter: blur(12px) !important; 45252} 45253 45254.footer-returns__scrim { 45255 position: fixed !important; 45256 inset: 0 !important; 45257 z-index: 0 !important; 45258 background: transparent !important; 45259} 45260 45261.footer-returns .visually-hidden { 45262 position: absolute; 45263 width: 1px; 45264 height: 1px; 45265 padding: 0; 45266 margin: -1px; 45267 overflow: hidden; 45268 clip: rect(0, 0, 0, 0); 45269 white-space: nowrap; 45270 border: 0; 45271} 45272 45273.footer-returns .nds-type-title { 45274 margin: 0 0 12px; 45275 font-size: 18px; 45276 line-height: 24px; 45277 font-weight: var(--nds-weight-medium); 45278 color: var(--nds-ink-900); 45279} 45280 45281.footer-returns .nds-type-subtitle { 45282 margin: 0 0 8px; 45283 font-size: 16px; 45284 line-height: 22px; 45285 font-weight: var(--nds-weight-medium); 45286 color: var(--nds-ink-800); 45287} 45288 45289.footer-returns .nds-type-body { 45290 margin: 0; 45291 font-size: var(--nds-type-body); 45292 line-height: 20px; 45293 font-weight: var(--nds-weight); 45294 color: var(--nds-ink); 45295} 45296 45297.footer-returns .nds-icon { 45298 display: block; 45299 flex-shrink: 0; 45300} 45301 45302.footer-returns .nds-btn { 45303 box-sizing: border-box; 45304 display: inline-flex; 45305 align-items: center; 45306 justify-content: center; 45307 gap: 8px; 45308 margin: 0; 45309 border: 1px solid var(--nds-border); 45310 border-radius: 0; 45311 font-family: var(--nds-font); 45312 font-weight: var(--nds-weight-medium); 45313 line-height: 1; 45314 white-space: nowrap; 45315 cursor: pointer; 45316 color: inherit; 45317 background: var(--nds-surface); 45318} 45319 45320.footer-returns .nds-btn--md { 45321 min-height: var(--nds-btn-h-md); 45322 padding: 0 var(--nds-btn-pad-md); 45323 font-size: var(--nds-type-body); 45324} 45325 45326.footer-returns .nds-btn--icon-only { 45327 width: 40px; 45328 min-width: 40px; 45329 padding: 0; 45330} 45331 45332.footer-returns .nds-btn--primary { 45333 background: var(--nds-accent); 45334 color: var(--nds-snow-50); 45335 border-color: var(--nds-accent); 45336} 45337 45338.footer-returns .nds-btn--primary:hover { 45339 background: var(--nds-surface); 45340 color: var(--nds-ink); 45341 border-color: var(--nds-ink-600); 45342} 45343 45344.footer-returns .nds-btn--secondary { 45345 background: var(--nds-surface); 45346 color: var(--nds-ink); 45347 border-color: var(--nds-ink); 45348} 45349 45350.footer-returns .nds-btn--secondary:hover { 45351 background: var(--nds-accent-hover); 45352 color: var(--nds-snow-50); 45353 border-color: var(--nds-accent-hover); 45354} 45355 45356.footer-returns .nds-btn--ghost { 45357 background: transparent; 45358 color: var(--nds-ink-500); 45359 border-color: var(--nds-line); 45360} 45361 45362.footer-returns .nds-btn--ghost:hover { 45363 background: var(--nds-hover); 45364 color: var(--nds-ink-800); 45365 border-color: var(--nds-ink-200); 45366} 45367 45368.footer-returns .nds-modal { 45369 position: relative !important; 45370 inset: auto !important; 45371 z-index: 1; 45372 display: flex; 45373 align-items: stretch; 45374 justify-content: center; 45375 padding: 0 !important; 45376 background: transparent !important; 45377 width: auto; 45378 max-width: 100%; 45379 height: auto; 45380 pointer-events: none; 45381} 45382 45383.footer-returns .nds-modal__dialog { 45384 position: relative; 45385 z-index: 1; 45386 width: min(860px, calc(100vw - 48px)); 45387 max-height: calc(100vh - 48px); 45388 display: flex; 45389 flex-direction: column; 45390 background: var(--nds-surface); 45391 color: var(--nds-ink); 45392 box-shadow: var(--nds-shadow-pop); 45393 pointer-events: auto; 45394 opacity: 0; 45395 transform: translateY(var(--nds-motion-shift)); 45396 transition: 45397 opacity var(--nds-motion-leave), 45398 transform var(--nds-motion-leave); 45399} 45400 45401.footer-returns .nds-modal.is-open .nds-modal__dialog { 45402 opacity: 1; 45403 transform: translateY(0); 45404 transition: 45405 opacity var(--nds-motion-enter), 45406 transform var(--nds-motion-enter); 45407} 45408 45409.footer-returns .nds-modal__head { 45410 display: flex; 45411 align-items: center; 45412 justify-content: space-between; 45413 gap: 16px; 45414 min-height: 72px; 45415 padding: 12px 16px 12px 20px; 45416 border-bottom: 1px solid var(--nds-line); 45417 background: #f4f4f4; 45418} 45419 45420.footer-returns .nds-modal__titles { 45421 display: flex; 45422 flex-direction: column; 45423 gap: 4px; 45424 min-width: 0; 45425} 45426 45427.footer-returns .nds-modal__title { 45428 margin: 0; 45429 min-width: 0; 45430 font-size: 18px; 45431 line-height: 24px; 45432 font-weight: 500; 45433 color: var(--nds-ink-900); 45434 overflow: hidden; 45435 text-overflow: ellipsis; 45436 white-space: nowrap; 45437} 45438 45439.footer-returns .nds-modal__title[hidden] { 45440 display: none; 45441} 45442 45443.footer-returns .nds-modal__end { 45444 display: flex; 45445 align-items: center; 45446 gap: 8px; 45447 flex-shrink: 0; 45448 margin-left: auto; 45449} 45450 45451.footer-returns .nds-modal__body { 45452 display: flex; 45453 flex-direction: column; 45454 min-height: 0; 45455 flex: 1; 45456 padding: 20px; 45457 overflow: auto; 45458} 45459 45460.footer-returns .nds-tabs { 45461 position: relative; 45462 display: flex; 45463 align-items: center; 45464 gap: 4px; 45465 padding: 4px; 45466 min-height: 48px; 45467 height: auto; 45468 width: max-content; 45469 max-width: 100%; 45470 border: 1px solid var(--nds-line); 45471 background: var(--nds-surface); 45472 margin: 0; 45473 box-sizing: border-box; 45474} 45475 45476.footer-returns .nds-tabs[hidden] { 45477 display: none; 45478} 45479 45480.footer-returns .nds-tabs__item { 45481 display: inline-flex; 45482 align-items: center; 45483 justify-content: center; 45484 height: 38px; 45485 padding: 0 16px; 45486 border: 0; 45487 background: transparent; 45488 color: var(--nds-ink-500); 45489 font-family: inherit; 45490 font-size: 14px; 45491 font-weight: var(--nds-weight-medium); 45492 cursor: pointer; 45493} 45494 45495.footer-returns .nds-tabs__item:hover:not(.is-on):not(:disabled) { 45496 background: var(--nds-hover); 45497} 45498 45499.footer-returns .nds-tabs__item.is-on { 45500 background: var(--nds-accent); 45501 color: var(--nds-snow-50); 45502} 45503 45504.footer-returns .nds-tabs__item:disabled { 45505 cursor: default; 45506 color: var(--nds-ink-400); 45507} 45508 45509.footer-returns .nds-field { 45510 display: flex; 45511 flex-direction: column; 45512 align-items: stretch; 45513 gap: 6px; 45514 width: 100%; 45515 max-width: 420px; 45516} 45517 45518.footer-returns .nds-field__label { 45519 font-size: 14px; 45520 font-weight: 500; 45521 color: var(--nds-muted); 45522} 45523 45524.footer-returns .nds-field__control { 45525 display: flex; 45526 align-items: center; 45527 gap: 8px; 45528 height: 40px; 45529 padding: 0 12px; 45530 background: var(--nds-surface); 45531 color: var(--nds-ink); 45532 outline: 1px solid var(--nds-line); 45533 box-sizing: border-box; 45534} 45535 45536.footer-returns .nds-field__control input, 45537.footer-returns .nds-field__control select, 45538.footer-returns .nds-field__control textarea { 45539 border: 0; 45540 outline: none; 45541 box-shadow: none; 45542 background: transparent; 45543 color: inherit; 45544 font-family: inherit; 45545 font-size: 14px; 45546 font-weight: 400; 45547 min-width: 0; 45548 width: 100%; 45549 appearance: none; 45550} 45551 45552.footer-returns .nds-field__control input[type='number'] { 45553 -moz-appearance: textfield; 45554 appearance: textfield; 45555} 45556 45557.footer-returns .nds-field__control input[type='number']::-webkit-outer-spin-button, 45558.footer-returns .nds-field__control input[type='number']::-webkit-inner-spin-button { 45559 appearance: none; 45560 margin: 0; 45561} 45562 45563.footer-returns .nds-field__control input::placeholder, 45564.footer-returns .nds-field__control textarea::placeholder { 45565 color: var(--nds-ink-400); 45566} 45567 45568.footer-returns .nds-field__control textarea { 45569 resize: none; 45570 line-height: 20px; 45571} 45572 45573.footer-returns .nds-field__control:hover:not(:focus-within) { 45574 background: var(--nds-hover); 45575 color: var(--nds-ink); 45576 outline-color: var(--nds-line); 45577} 45578 45579.footer-returns .nds-field__control:focus-within { 45580 outline-color: var(--nds-ink-900); 45581 background: var(--nds-surface); 45582 color: var(--nds-ink); 45583} 45584 45585.footer-returns__hint { 45586 margin-top: 12px; 45587 color: var(--nds-muted); 45588} 45589 45590.footer-returns__hint + .footer-returns__hint { 45591 margin-top: 6px; 45592} 45593 45594.footer-returns .footer-returns__step--success.footer-returns__step--active { 45595 display: flex; 45596 flex-direction: column; 45597 align-items: center; 45598} 45599 45600.footer-returns .footer-returns__wait-note { 45601 display: block; 45602 box-sizing: border-box; 45603 width: min(520px, 100%); 45604 margin: 16px 0 0; 45605 padding: 12px 20px; 45606 background: #f4c542;
45607 color: #3a3010; 45608 text-align: center; 45609 font-size: 14px; 45610 font-weight: 500; 45611 line-height: 22px; 45612} 45613 45614.footer-returns__field-notes { 45615 margin-top: 24px; 45616 max-width: 420px; 45617} 45618 45619.footer-returns__field-notes .footer-returns__hint { 45620 margin-top: 0; 45621} 45622 45623.footer-returns__field-notes .footer-returns__hint + .footer-returns__hint { 45624 margin-top: 8px; 45625} 45626 45627.footer-returns__note { 45628 display: flex; 45629 align-items: flex-start; 45630 gap: 10px; 45631 margin-top: 20px; 45632 padding: 14px 16px; 45633 background: var(--nds-note); 45634 outline: 1px solid var(--nds-note-line); 45635 color: var(--nds-note-ink); 45636} 45637 45638.footer-returns__note > .nds-icon { 45639 margin-top: 3px; 45640 color: var(--nds-note-ink); 45641} 45642 45643.footer-returns__note-copy { 45644 min-width: 0; 45645} 45646 45647.footer-returns__note .nds-type-body { 45648 color: var(--nds-note-ink); 45649 font-size: 16px; 45650 line-height: 22px; 45651 font-weight: 500; 45652} 45653 45654.footer-returns__note .nds-type-body + .nds-type-body { 45655 margin-top: 6px; 45656} 45657 45658.footer-returns__panel[hidden] { 45659 display: none !important; 45660} 45661 45662.footer-returns__panel:not([hidden]) { 45663 display: flex; 45664 flex-direction: column; 45665 flex: 1; 45666} 45667 45668.footer-returns__form { 45669 flex: 1; 45670} 45671 45672.footer-returns__actions { 45673 display: flex; 45674 flex-wrap: wrap; 45675 gap: 8px; 45676 margin-top: 20px; 45677} 45678 45679.footer-returns__actions--center { 45680 justify-content: center; 45681} 45682 45683.footer-returns__days-title { 45684 text-align: center; 45685 margin: 8px 0 12px; 45686} 45687 45688.footer-returns__step--stop { 45689 text-align: center; 45690 padding: 32px 8px 8px; 45691} 45692 45693.footer-returns__warning { 45694 margin-top: 16px; 45695} 45696 45697.footer-returns__warning-title { 45698 margin: 0 0 8px; 45699} 45700 45701.footer-returns__warning-list { 45702 margin: 0; 45703 padding-left: 20px; 45704 color: var(--nds-muted); 45705 font-size: var(--nds-type-body); 45706 line-height: 20px; 45707 font-weight: var(--nds-weight); 45708} 45709 45710.footer-returns__warning-list li + li { 45711 margin-top: 6px; 45712} 45713 45714.footer-returns__step-title { 45715 margin: 0 0 16px; 45716 font-size: 18px; 45717 line-height: 24px; 45718 font-weight: 500; 45719 color: var(--nds-ink-900); 45720} 45721 45722.footer-returns__step-split { 45723 display: grid; 45724 grid-template-columns: minmax(0, 1fr) minmax(200px, 280px); 45725 gap: 24px 40px; 45726 align-items: center; 45727} 45728 45729.footer-returns__step-main { 45730 min-width: 0; 45731} 45732 45733.footer-returns__step-art { 45734 display: flex; 45735 align-items: center; 45736 justify-content: center; 45737 pointer-events: none; 45738} 45739 45740.footer-returns__step-art [data-returns-lottie] { 45741 width: 100%; 45742 max-width: 280px; 45743 aspect-ratio: 1; 45744 filter: grayscale(1) contrast(1.12); 45745} 45746 45747.footer-returns__step-art [data-returns-lottie] svg { 45748 display: block; 45749 width: 100%; 45750 height: 100%; 45751} 45752 45753.footer-returns:not(.is-addr-step) .footer-returns__addr-card { 45754 display: none; 45755} 45756 45757.footer-returns.is-addr-step .nds-modal__body { 45758 display: none; 45759} 45760 45761.footer-returns:not(.is-invoice-step) .footer-returns__invoice-card { 45762 display: none; 45763} 45764 45765.footer-returns.is-invoice-step [data-returns-panel] { 45766 display: none !important; 45767} 45768 45769.footer-returns__invoice-card .nds-field__control { 45770 outline: 2px solid var(--nds-ink-900); 45771} 45772 45773.footer-returns__invoice-card .nds-field__control:hover:not(:focus-within) { 45774 outline-color: var(--nds-ink-900); 45775} 45776 45777.footer-returns__invoice-card .nds-field__control:focus-within { 45778 outline-width: 2px; 45779 outline-color: var(--nds-ink-900); 45780} 45781 45782.footer-returns__invoice-card .nds-field.is-invalid .nds-field__control { 45783 outline-color: var(--nds-error); 45784} 45785 45786.footer-returns__addr-card { 45787 display: grid; 45788 grid-template-columns: 1fr 1fr; 45789 width: 100%; 45790 box-sizing: border-box; 45791 flex: 1; 45792 margin: 0; 45793 padding: 28px 24px 32px; 45794 background: #ffffff; 45795} 45796 45797.footer-returns__addr { 45798 min-width: 0; 45799 padding: 8px 20px 0; 45800} 45801 45802.footer-returns__addr + .footer-returns__addr { 45803 border-left: 1px solid var(--nds-line); 45804} 45805 45806.footer-returns__addr-title { 45807 margin: 0 0 8px; 45808 font-size: 24px; 45809 line-height: 30px; 45810 font-weight: 500; 45811 color: var(--nds-ink-900); 45812} 45813 45814.footer-returns__addr-sub { 45815 margin: 0 0 14px; 45816 font-size: 14px; 45817 line-height: 20px; 45818 font-weight: 400; 45819 color: var(--nds-muted); 45820} 45821 45822.footer-returns__addr-lines { 45823 margin: 0; 45824 font-style: normal; 45825 font-size: 14px; 45826 line-height: 22px; 45827 font-weight: 400; 45828 color: var(--nds-ink); 45829} 45830 45831.footer-returns__addr-actions { 45832 grid-column: 1 / -1; 45833 display: flex; 45834 justify-content: center; 45835 padding-top: 48px; 45836} 45837 45838.footer-returns__step--invoice { 45839 text-align: center; 45840} 45841 45842.footer-returns__step--invoice .nds-field, 45843.footer-returns__step--invoice .footer-returns__field-notes, 45844.footer-returns__step--invoice .footer-returns__error {
45845 margin-left: auto; 45846 margin-right: auto; 45847} 45848 45849.footer-returns__step--invoice .nds-field__label, 45850.footer-returns__step--invoice .footer-returns__step-title, 45851.footer-returns__step--invoice .footer-returns__hint { 45852 text-align: center; 45853} 45854 45855.footer-returns__actions--choice { 45856 flex-wrap: wrap; 45857} 45858 45859.footer-returns__actions--choice [data-choose-kind] { 45860 display: none !important; 45861} 45862 45863.footer-returns__invoice-card.has-invoice-text [data-choose-kind] { 45864 display: inline-flex !important; 45865} 45866 45867.footer-returns__table--return .footer-returns__table-head, 45868.footer-returns__table--return .footer-returns__row { 45869 grid-template-columns: 1.1fr 0.55fr 1.15fr 1.45fr 40px; 45870 min-width: 660px; 45871} 45872 45873.footer-returns__step { 45874 display: none; 45875} 45876 45877.footer-returns__step--active { 45878 display: block; 45879} 45880 45881.footer-returns__step--success { 45882 text-align: center; 45883 padding: 16px 8px 8px; 45884} 45885 45886.footer-returns__success-mark { 45887 width: 72px; 45888 height: 72px; 45889 margin: 0 auto 16px; 45890} 45891 45892.footer-returns__success-mark svg { 45893 display: block; 45894 width: 72px; 45895 height: 72px; 45896} 45897 45898.footer-returns__success-ring, 45899.footer-returns__success-check { 45900 fill: none; 45901 stroke: #2f8a55; 45902 stroke-linecap: round; 45903 stroke-linejoin: round; 45904} 45905 45906.footer-returns__success-ring { 45907 stroke-width: 2; 45908 stroke-dasharray: 201; 45909 stroke-dashoffset: 201; 45910} 45911 45912.footer-returns__success-check { 45913 stroke-width: 2.25; 45914 stroke-dasharray: 48; 45915 stroke-dashoffset: 48; 45916} 45917 45918.footer-returns__step--success.is-animate .footer-returns__success-ring { 45919 animation: footer-returns-ring 500ms ease forwards; 45920} 45921 45922.footer-returns__step--success.is-animate .footer-returns__success-check { 45923 animation: footer-returns-check 320ms ease 280ms forwards; 45924} 45925 45926@keyframes footer-returns-ring { 45927 to { stroke-dashoffset: 0; } 45928} 45929 45930@keyframes footer-returns-check { 45931 to { stroke-dashoffset: 0; } 45932} 45933 45934.footer-returns__claim-number { 45935 margin-bottom: 8px; 45936 color: var(--nds-ink-900); 45937 font-size: 32px; 45938 line-height: 40px; 45939 font-weight: 500; 45940} 45941 45942.footer-returns__error { 45943 font-size: 16px; 45944 line-height: 24px; 45945 font-weight: 600; 45946 color: var(--nds-error); 45947 min-height: 1.1em; 45948 margin: 8px 0 0; 45949} 45950 45951.footer-returns__table-wrap { 45952 overflow-x: auto; 45953 margin-bottom: 16px; 45954 outline: 1px solid var(--nds-line); 45955} 45956 45957.footer-returns__table-head, 45958.footer-returns__row { 45959 display: grid; 45960 grid-template-columns: minmax(0, 1fr) minmax(0, 0.5fr) minmax(0, 1.05fr) minmax(0, 1.05fr) minmax(0, 1.3fr) 40px; 45961 gap: 0; 45962 align-items: stretch; 45963 min-width: 720px; 45964} 45965 45966.footer-returns .nds-th { 45967 min-width: 0; 45968 min-height: 40px; 45969 padding: 0 12px; 45970 display: flex; 45971 align-items: center; 45972 font-size: 14px; 45973 line-height: 18px; 45974 font-weight: var(--nds-weight-medium); 45975 letter-spacing: 0; 45976 text-transform: none; 45977 color: var(--nds-ink-500); 45978 background: var(--nds-ink-50); 45979 border-bottom: 1px solid var(--nds-line); 45980} 45981 45982.footer-returns__row { 45983 border-bottom: 1px solid var(--nds-line); 45984} 45985 45986.footer-returns__row .nds-field__control { 45987 min-width: 0; 45988 height: 40px; 45989 outline: none; 45990 border-right: 1px solid var(--nds-line); 45991 cursor: text; 45992} 45993 45994.footer-returns__row .footer-returns__desc:focus-within { 45995 outline: none; 45996 box-shadow: none; 45997} 45998 45999.footer-returns__row .nds-field__control input:not([type='file']), 46000.footer-returns__row .nds-field__control textarea { 46001 height: 100%; 46002} 46003 46004.footer-returns__row .nds-field__control:last-child { 46005 border-right: 0; 46006} 46007 46008.footer-returns__file { 46009 display: flex; 46010 align-items: center; 46011 position: relative; 46012 cursor: default; 46013 padding: 0 8px; 46014 justify-content: flex-start; 46015 gap: 6px; 46016 height: auto; 46017 min-height: 40px; 46018} 46019 46020.footer-returns .nds-field__control .footer-returns__file-input { 46021 position: absolute; 46022 width: 0; 46023 height: 0; 46024 padding: 0; 46025 opacity: 0; 46026 overflow: hidden; 46027 pointer-events: none; 46028} 46029 46030.footer-returns__file-btn { 46031 display: inline-flex; 46032 align-items: center; 46033 justify-content: center; 46034 gap: 6px; 46035 width: auto; 46036 max-width: 100%; 46037 min-width: 0; 46038 height: 100%; 46039 margin: 0; 46040 padding: 0 8px; 46041 border: 0; 46042 background: transparent; 46043 color: inherit; 46044 font-family: inherit; 46045 font-size: 14px; 46046 line-height: 18px; 46047 font-weight: var(--nds-weight-medium); 46048 white-space: nowrap; 46049 cursor: pointer; 46050} 46051 46052.footer-returns__th-remove, 46053.footer-returns__row-remove { 46054 width: 40px; 46055 min-width: 40px; 46056} 46057 46058.footer-returns__row-remove { 46059 display: flex; 46060 align-items: center; 46061 justify-content: center; 46062 gap: 8px; 46063 height: 40px; 46064 padding: 0; 46065 border: 0; 46066 background: var(--nds-surface); 46067 color: var(--nds-ink-500); 46068 font-family: inherit; 46069 font-size: 14px; 46070 font-weight: 500; 46071 cursor: pointer; 46072} 46073 46074.footer-returns__row-remove-label { 46075 display: none; 46076} 46077 46078.footer-returns__row-remove:hover { 46079 background: var(--nds-hover); 46080 color: var(--nds-ink-900); 46081} 46082 46083.footer-returns__file-thumbs { 46084 display: flex; 46085 align-items: center; 46086 gap: 4px; 46087 flex-shrink: 0; 46088} 46089 46090.footer-returns__file-chip { 46091 position: relative; 46092 width: 22px; 46093 height: 22px; 46094 flex-shrink: 0; 46095 background-size: cover; 46096 background-position: center; 46097} 46098 46099.footer-returns__file-chip-remove { 46100 position: absolute; 46101 top: -5px; 46102 right: -5px; 46103 width: 14px; 46104 height: 14px; 46105 padding: 0; 46106 border: 0; 46107 background: var(--nds-ink-900); 46108 color: #fff; 46109 font-size: 10px; 46110 line-height: 14px; 46111 cursor: pointer; 46112} 46113 46114.footer-returns__desc { 46115 position: relative; 46116 min-width: 0; 46117 overflow: hidden; 46118} 46119 46120.footer-returns__desc-trigger { 46121 display: block; 46122 width: 100%; 46123 max-width: 100%; 46124 height: 100%; 46125 min-width: 0; 46126 min-height: 40px; 46127 padding: 0 12px; 46128 border: 0; 46129 outline: 0; 46130 box-shadow: none; 46131 background: transparent; 46132 color: inherit; 46133 font-family: inherit; 46134 font-size: 14px; 46135 font-weight: 400; 46136 text-align: left; 46137 cursor: pointer; 46138 overflow: hidden; 46139} 46140 46141.footer-returns__desc-trigger:focus, 46142.footer-returns__desc-trigger:focus-visible { 46143 outline: 0; 46144 box-shadow: none; 46145} 46146 46147.footer-returns__desc-trigger [data-desc-preview] { 46148 display: block; 46149 overflow: hidden; 46150 text-overflow: ellipsis; 46151 white-space: nowrap; 46152} 46153 46154.footer-returns__desc-trigger [data-desc-preview]:empty::before { 46155 content: attr(data-empty); 46156} 46157 46158.footer-returns__desc-pop { 46159 position: fixed;
46160 z-index: 2147483647; 46161 width: min(320px, calc(100vw - 32px)); 46162 padding: 10px; 46163 background: var(--nds-surface); 46164 outline: 1px solid var(--nds-line); 46165 box-shadow: none; 46166} 46167 46168.footer-returns__desc-pop textarea, 46169.footer-returns__desc-pop textarea:focus, 46170.footer-returns__desc-pop textarea:focus-visible { 46171 display: block; 46172 width: 100%; 46173 min-height: 120px; 46174 resize: none; 46175 border: 0; 46176 outline: 0; 46177 box-shadow: none; 46178 background: transparent; 46179 font-family: inherit; 46180 font-size: 14px; 46181 line-height: 20px; 46182 font-weight: 400; 46183} 46184 46185.footer-returns__dropdown { 46186 position: relative; 46187 height: 40px; 46188 border-right: 1px solid var(--nds-line); 46189} 46190 46191.footer-returns__dropdown:last-child { 46192 border-right: 0; 46193} 46194 46195.footer-returns__dropdown-trigger { 46196 display: flex; 46197 align-items: center; 46198 justify-content: space-between; 46199 gap: 8px; 46200 width: 100%; 46201 height: 40px; 46202 padding: 0 0 0 12px; 46203 border: 0; 46204 background: var(--nds-surface); 46205 color: var(--nds-ink); 46206 font-family: inherit; 46207 font-size: 14px; 46208 font-weight: 400; 46209 text-align: left; 46210 cursor: pointer; 46211} 46212 46213.footer-returns__dropdown-trigger:hover { 46214 background: var(--nds-hover); 46215} 46216 46217.footer-returns__dropdown.is-open .footer-returns__dropdown-trigger { 46218 background: var(--nds-hover); 46219} 46220 46221.footer-returns__dropdown-trigger [data-dropdown-label] { 46222 min-width: 0; 46223 overflow: hidden; 46224 text-overflow: ellipsis; 46225 white-space: nowrap; 46226} 46227 46228.footer-returns__select-chevron { 46229 display: flex; 46230 align-items: center; 46231 justify-content: center; 46232 width: 36px; 46233 height: 40px; 46234 flex-shrink: 0; 46235 color: var(--nds-ink-500); 46236 pointer-events: none; 46237} 46238 46239.footer-returns__dropdown.is-open .footer-returns__select-chevron { 46240 transform: rotate(180deg); 46241} 46242 46243.footer-returns__dropdown-menu { 46244 position: fixed; 46245 z-index: 2147483002; 46246 min-width: 220px; 46247 max-height: 240px; 46248 overflow: auto; 46249 background: var(--nds-surface); 46250 outline: 1px solid var(--nds-line); 46251 box-shadow: var(--nds-shadow-pop); 46252} 46253 46254.footer-returns__dropdown-menu[hidden] { 46255 display: none !important; 46256 pointer-events: none !important; 46257} 46258 46259.footer-returns__dropdown-option { 46260 display: block; 46261 width: 100%; 46262 min-height: 40px; 46263 padding: 0 12px; 46264 border: 0; 46265 background: transparent; 46266 color: var(--nds-ink); 46267 font-family: inherit; 46268 font-size: 14px; 46269 font-weight: 400; 46270 text-align: left; 46271 cursor: pointer; 46272} 46273 46274.footer-returns__dropdown-option:hover { 46275 background: var(--nds-hover); 46276 color: var(--nds-ink-800); 46277} 46278 46279.footer-returns__dropdown-option.is-on { 46280 background: var(--nds-ink-50); 46281 color: var(--nds-ink-900); 46282} 46283 46284@media (prefers-reduced-motion: reduce) { 46285 .footer-returns .nds-modal__backdrop, 46286 .footer-returns .nds-modal.is-open .nds-modal__backdrop, 46287 .footer-returns .nds-modal__dialog, 46288 .footer-returns .nds-modal.is-open .nds-modal__dialog, 46289 .footer-returns__success-ring, 46290 .footer-returns__success-check { 46291 transition: none; 46292 transform: none; 46293 animation: none; 46294 stroke-dashoffset: 0; 46295 } 46296 46297 .footer-returns__step-art { 46298 display: none; 46299 } 46300} 46301 46302@media (max-width: 749px) { 46303 .footer-returns:not([hidden]) { 46304 padding: 16px; 46305 } 46306 46307 .footer-returns__step-split { 46308 grid-template-columns: 1fr; 46309 gap: 4px 0; 46310 } 46311 46312 .footer-returns__addr-card { 46313 grid-template-columns: 1fr; 46314 padding: 20px 16px 24px; 46315 } 46316 46317 .footer-returns__addr + .footer-returns__addr { 46318 border-left: 0; 46319 border-top: 1px solid var(--nds-line); 46320 padding-top: 20px; 46321 } 46322 46323 .footer-returns__step-art { 46324 display: flex; 46325 order: -1; 46326 } 46327 46328 .footer-returns__step-art [data-returns-lottie] { 46329 max-width: 168px; 46330 margin: 0 auto; 46331 } 46332 46333 .footer-returns .nds-modal__body { 46334 padding: 16px; 46335 } 46336 46337 .footer-returns .nds-btn--md:not(.nds-btn--icon-only) { 46338 width: 100%; 46339 } 46340 46341 .footer-returns__actions { 46342 flex-direction: column; 46343 } 46344 46345 .footer-returns .nds-field, 46346 .footer-returns__field-notes { 46347 max-width: none; 46348 } 46349 46350 .footer-returns__table-wrap { 46351 overflow: visible; 46352 outline: none; 46353 margin-bottom: 12px; 46354 } 46355 46356 .footer-returns__table-head { 46357 display: none; 46358 } 46359 46360 .footer-returns__rows { 46361 display: flex; 46362 flex-direction: column; 46363 gap: 12px; 46364 } 46365 46366 .footer-returns__row, 46367 .footer-returns__table--return .footer-returns__row { 46368 display: grid; 46369 grid-template-columns: minmax(0, 1fr) 96px; 46370 gap: 10px 12px; 46371 min-width: 0; 46372 align-items: start; 46373 } 46374 46375 .footer-returns__row { 46376 position: relative; 46377 padding: 16px 14px 14px; 46378 border-bottom: 0; 46379 background: var(--nds-surface); 46380 outline: 1px solid var(--nds-line); 46381 } 46382 46383 .footer-returns__row > :nth-child(n + 3) { 46384 grid-column: 1 / -1; 46385 } 46386 46387 .footer-returns__row .nds-field__control, 46388 .footer-returns__row .footer-returns__dropdown { 46389 display: flex; 46390 flex-direction: column; 46391 align-items: stretch; 46392 height: auto; 46393 min-width: 0; 46394 padding: 0; 46395 border-right: 0; 46396 outline: none; 46397 background: transparent; 46398 cursor: default; 46399 } 46400 46401 .footer-returns__row .nds-field__control::before, 46402 .footer-returns__row .footer-returns__dropdown::before { 46403 content: attr(data-label); 46404 display: block; 46405 margin-bottom: 6px; 46406 font-size: 14px; 46407 line-height: 18px; 46408 font-weight: 500; 46409 color: var(--nds-muted); 46410 } 46411 46412 .footer-returns__row .nds-field__control input:not([type='file']), 46413 .footer-returns__row .nds-field__control textarea { 46414 height: 40px; 46415 padding: 0 12px; 46416 outline: 1px solid var(--nds-line); 46417 background: var(--nds-surface); 46418 } 46419 46420 .footer-returns__row .nds-field__control textarea { 46421 height: auto; 46422 min-height: 96px; 46423 padding: 10px 12px; 46424 resize: vertical; 46425 } 46426 46427 .footer-returns__file { 46428 justify-content: flex-start; 46429 } 46430 46431 .footer-returns__file-btn { 46432 width: 100%; 46433 height: 40px; 46434 justify-content: flex-start; 46435 outline: 1px solid var(--nds-line); 46436 background: var(--nds-surface); 46437 } 46438 46439 .footer-returns__desc-trigger { 46440 height: 40px; 46441 outline: 1px solid var(--nds-line); 46442 background: var(--nds-surface); 46443 } 46444 46445 .footer-returns__dropdown { 46446 height: auto; 46447 border-right: 0; 46448 } 46449 46450 .footer-returns__dropdown-trigger { 46451 outline: 1px solid var(--nds-line); 46452 } 46453 46454 .footer-returns__row-remove { 46455 position: static; 46456 grid-column: 1 / -1; 46457 width: 100%; 46458 min-width: 0; 46459 height: 40px; 46460 border: 1px solid var(--nds-ink); 46461 background: var(--nds-surface); 46462 color: var(--nds-ink); 46463 } 46464 46465 .footer-returns__row-remove:hover { 46466 background: var(--nds-accent-hover); 46467 color: var(--nds-snow-50); 46468 border-color: var(--nds-accent-hover); 46469 } 46470 46471 .footer-returns__row-remove-label { 46472 display: inline; 46473 } 46474} 46475 46476.footer-returns__contact { 46477 display: grid; 46478 grid-template-columns: 1fr 1fr; 46479 gap: 16px; 46480 margin-top: 24px; 46481 max-width: 640px; 46482} 46483 46484.footer-returns__contact .nds-field { 46485 max-width: none; 46486} 46487 46488.footer-returns__contact .nds-field--wide { 46489 grid-column: 1 / -1; 46490} 46491 46492.footer-returns__note-control { 46493 height: auto; 46494 min-height: 88px; 46495 padding: 10px 12px; 46496 align-items: flex-start; 46497} 46498 46499.footer-returns__note-control textarea { 46500 min-height: 68px; 46501} 46502 46503.footer-returns__flags { 46504 margin-top: 20px; 46505} 46506 46507.footer-returns__types { 46508 margin-top: 20px; 46509 margin-bottom: 28px; 46510} 46511 46512.footer-returns__flags-title { 46513 margin: 0 0 10px; 46514 font-size: 16px; 46515 line-height: 22px; 46516 font-weight: 500; 46517 color: var(--nds-ink-800); 46518} 46519 46520.footer-returns__flags-grid { 46521 display: grid; 46522 grid-template-columns: 1fr 1fr; 46523 gap: 10px 16px; 46524} 46525 46526.footer-returns__check { 46527 display: flex; 46528 align-items: flex-start; 46529 gap: 8px; 46530 font-size: 14px; 46531 line-height: 20px; 46532 font-weight: 400; 46533 color: var(--nds-ink); 46534 cursor: pointer; 46535} 46536 46537.footer-returns__check input { 46538 appearance: none; 46539 -webkit-appearance: none; 46540 flex-shrink: 0; 46541 width: 16px; 46542 height: 16px; 46543 min-width: 16px; 46544 margin: 2px 0 0; 46545 padding: 0; 46546 border: 0; 46547 outline: 1px solid var(--nds-line); 46548 background: var(--nds-surface); 46549 cursor: pointer; 46550} 46551 46552.footer-returns__check input:hover { 46553 outline-color: var(--nds-ink-400); 46554} 46555 46556.footer-returns__check input:checked { 46557 background: var(--nds-ink-900); 46558 outline-color: var(--nds-ink-900); 46559 background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3 8l3.5 3.5L13 5' stroke='white' stroke-width='1.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); 46560 background-repeat: no-repeat; 46561 background-position: center; 46562 background-size: 12px 12px; 46563} 46564 46565.footer-returns__check input:focus-visible { 46566 outline: 2px solid var(--nds-ink-900); 46567} 46568 46569.footer-returns__type-grid { 46570 display: grid; 46571 grid-template-columns: 1fr 1fr; 46572 gap: 12px; 46573 padding-bottom: 12px; 46574} 46575 46576.footer-returns__type { 46577 display: flex; 46578 flex-direction: column; 46579 align-items: flex-start; 46580 justify-content: flex-start; 46581 gap: 8px; 46582 width: 100%; 46583 min-height: 128px; 46584 margin: 0; 46585 padding: 16px; 46586 border: 0; 46587 outline: 1px solid var(--nds-line); 46588 background: var(--nds-surface); 46589 color: var(--nds-ink); 46590 font-family: inherit; 46591 font-size: 14px; 46592 line-height: 20px; 46593 font-weight: 400; 46594 text-align: left; 46595 cursor: pointer; 46596} 46597 46598.footer-returns__type:hover { 46599 background: var(--nds-hover); 46600} 46601 46602.footer-returns__type.is-on { 46603 outline: 2px solid var(--nds-ink-900); 46604 background: var(--nds-ink-50); 46605} 46606 46607.footer-returns__type-title { 46608 display: block; 46609 font-size: 16px; 46610 line-height: 22px; 46611 font-weight: 500; 46612 color: var(--nds-ink-900); 46613} 46614 46615.footer-returns__type-desc { 46616 display: block; 46617 margin-top: 0; 46618 color: var(--nds-muted); 46619 font-weight: 400; 46620} 46621 46622.footer-returns__result-docs { 46623 display: flex; 46624 flex-wrap: wrap; 46625 justify-content: center; 46626 gap: 8px; 46627 margin-top: 20px; 46628} 46629 46630.footer-returns a.nds-btn { 46631 text-decoration: none; 46632} 46633 46634.footer-returns__result-docs .nds-btn { 46635 text-decoration: none; 46636} 46637 46638.footer-returns__result-docs .nds-icon { 46639 width: 16px; 46640 height: 16px; 46641} 46642 46643.footer-returns .nds-field.is-invalid .nds-field__control { 46644 outline-color: var(--nds-error); 46645} 46646 46647.footer-returns__row .nds-field__control.is-invalid { 46648 box-shadow: inset 0 0 0 1px var(--nds-error); 46649} 46650 46651.footer-returns .nds-btn[disabled] { 46652 opacity: 0.55; 46653 cursor: default; 46654 pointer-events: none; 46655} 46656 46657@media (max-width: 749px) { 46658 .footer-returns__contact, 46659 .footer-returns__flags-grid, 46660 .footer-returns__type-grid { 46661 grid-template-columns: 1fr; 46662 } 46663} 46664</style> 46665
46666<script> 46667(function () { 46668 var root = document.getElementById('FooterReturns'); 46669 if (!root) return; 46670 46671 var claimForm = document.getElementById('FooterReturnsForm'); 46672 var returnForm = document.getElementById('FooterReturnsReturnForm'); 46673 var claimRowsEl = root.querySelector('[data-returns-rows]'); 46674 var returnRowsEl = root.querySelector('[data-return-rows]'); 46675 var claimTemplate = document.getElementById('FooterReturnsRowTemplate'); 46676 var returnTemplate = document.getElementById('FooterReturnsReturnRowTemplate'); 46677 var claimErrorEl = root.querySelector('[data-returns-error]'); 46678 var returnErrorEl = root.querySelector('[data-return-error]'); 46679 var shell = root.querySelector('[data-returns-shell]'); 46680 var titleEl = root.querySelector('[data-returns-title]'); 46681 var openers = document.querySelectorAll('[data-footer-returns-open]'); 46682 var currentTab = 'claim'; 46683 var claimStep = 'addr'; 46684 var returnStep = 'addr'; 46685 var flowPhase = 'addr'; 46686 var culture = root.getAttribute('data-culture') || 'en'; 46687 var proxyBase = root.getAttribute('data-proxy') || '/apps/claims'; 46688 var codebook = null; 46689 var codebookPromise = null; 46690 var portalBusy = false; 46691 var claimLookup = emptyLookup(); 46692 var returnLookup = emptyLookup(); 46693 var closeTimer = 0; 46694 var openMenu = null; 46695 var openOwner = null; 46696 var lottieScriptLoading = false; 46697 var lottieWaiters = []; 46698 var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 46699 46700 function whenLottieReady(done) { 46701 if (window.lottie) { 46702 done(); 46703 return; 46704 } 46705 lottieWaiters.push(done); 46706 if (lottieScriptLoading) return; 46707 lottieScriptLoading = true; 46708 var script = document.createElement('script'); 46709 script.src = 'https://cdnjs.cloudflare.com/ajax/libs/lottie-web/5.12.2/lottie.min.js'; 46710 script.onload = function () { 46711 lottieScriptLoading = false; 46712 lottieWaiters.splice(0).forEach(function (fn) { fn(); }); 46713 }; 46714 script.onerror = function () { 46715 lottieScriptLoading = false; 46716 lottieWaiters = []; 46717 }; 46718 document.head.appendChild(script); 46719 } 46720 46721 function playInvoiceLotties() { 46722 if (reduceMotion) return; 46723 var src = root.getAttribute('data-lottie-src'); 46724 if (!src) return; 46725 whenLottieReady(function () { 46726 root.querySelectorAll('[data-returns-lottie]').forEach(function (el) { 46727 if (el.getAttribute('data-lottie-bound') === '1') return; 46728 el.setAttribute('data-lottie-bound', '1'); 46729 window.lottie.loadAnimation({ 46730 container: el, 46731 renderer: 'svg', 46732 loop: true, 46733 autoplay: true, 46734 path: src 46735 }); 46736 }); 46737 }); 46738 } 46739 46740 function emptyLookup() { 46741 return { token: null, items: [], allowed: [], found: false, reference: '' }; 46742 } 46743 46744 function t(key) { 46745 return root.getAttribute('data-i18n-' + key) || ''; 46746 } 46747 46748 function escapeHtml(value) { 46749 return String(value == null ? '' : value) 46750 .replace(/&/g, '&') 46751 .replace(/</g, '<') 46752 .replace(/>/g, '>') 46753 .replace(/"/g, '"'); 46754 } 46755 46756 function nonce() { 46757 return Math.random().toString(36).slice(2) + Date.now().toString(36); 46758 } 46759 46760 function portalUrl(path) { 46761 var sep = path.indexOf('?') >= 0 ? '&' : '?'; 46762 return proxyBase + path + sep + 'culture=' + encodeURIComponent(culture) + '&_r=' + nonce(); 46763 } 46764 46765 function firstErrorMessage(errors) { 46766 if (!errors) return t('error-generic'); 46767 if (errors.rateLimit && errors.rateLimit[0]) return errors.rateLimit[0]; 46768 if (errors.signature) return t('error-config'); 46769 var keys = Object.keys(errors); 46770 if (!keys.length) return t('error-generic'); 46771 var first = errors[keys[0]]; 46772 return (first && first[0]) || t('error-generic'); 46773 } 46774 46775 function showError(el, message) { 46776 if (!el) return; 46777 el.textContent = message || ''; 46778 } 46779 46780 function clearFieldErrors(form) { 46781 if (!form) return; 46782 form.querySelectorAll('.is-invalid').forEach(function (node) { 46783 node.classList.remove('is-invalid'); 46784 }); 46785 } 46786 46787 function markField(form, name) { 46788 if (!form) return; 46789 var wrap = form.querySelector('[data-field-wrap="' + name + '"]'); 46790 if (wrap) wrap.classList.add('is-invalid'); 46791 } 46792 46793 function applyEnvelopeErrors(form, errorEl, env) { 46794 var errors = (env && env.errors) || {}; 46795 showError(errorEl, firstErrorMessage(errors)); 46796 if (errors.name) markField(form, 'name'); 46797 if (errors.email) markField(form, 'email'); 46798 if (errors.note) markField(form, 'note'); 46799 if (errors.reference) markField(form, 'reference'); 46800 } 46801 46802 function setBusy(button, busy, label) { 46803 if (!button) return; 46804 button.disabled = !!busy; 46805 button.setAttribute('aria-busy', busy ? 'true' : 'false'); 46806 if (busy && label) button.setAttribute('data-busy-label', label); 46807 } 46808 46809 function portalFetch(path, options) { 46810 options = options || {}; 46811 var init = { 46812 method: options.method || 'GET', 46813 headers: options.headers || {} 46814 }; 46815 if (options.body != null) init.body = options.body; 46816 return fetch(portalUrl(path), init).then(function (res) { 46817 return res.text().then(function (text) { 46818 var json = null; 46819 try { json = text ? JSON.parse(text) : null; } catch (e) { json = null; } 46820 if (res.status === 401) { 46821 return { http: 401, success: false, errors: { signature: [t('error-config')] }, data: null }; 46822 } 46823 if (res.status === 429) { 46824 var rate = json && json.errors && json.errors.rateLimit && json.errors.rateLimit[0]; 46825 return { http: 429, success: false, errors: { rateLimit: [rate || t('error-generic')] }, data: json && json.data }; 46826 } 46827 if (!json) { 46828 return { http: res.status, success: false, errors: { payload: [t('error-generic')] }, data: null }; 46829 } 46830 json.http = res.status; 46831 return json; 46832 }); 46833 }); 46834 } 46835 46836 function loadCodebook() { 46837 if (codebook) return Promise.resolve(codebook); 46838 if (codebookPromise) return codebookPromise; 46839 codebookPromise = portalFetch('/claim/codebook').then(function (env) { 46840 codebookPromise = null; 46841 if (!env.success || !env.data) { 46842 throw env; 46843 } 46844 codebook = env.data; 46845 if (codebook.culture) culture = codebook.culture; 46846 fillAllSettlements(); 46847 fillClaimTypes(claimLookup.found ? claimLookup.allowed : null); 46848 return codebook; 46849 }).catch(function (err) { 46850 codebookPromise = null; 46851 throw err; 46852 }); 46853 return codebookPromise; 46854 } 46855 46856 function settlementOptionsHtml(selectedId) { 46857 var list = (codebook && codebook.preferredSettlements) || []; 46858 return list.map(function (item) { 46859 var on = String(item.id) === String(selectedId || (list[0] && list[0].id)); 46860 return '<button type="button" class="footer-returns__dropdown-option' + (on ? ' is-on' : '') + '" data-dropdown-option data-value="' + escapeHtml(item.id) + '">' + escapeHtml(item.title) + '</button>'; 46861 }).join(''); 46862 } 46863 46864 function applySettlements(scope, selectedId) { 46865 var list = (codebook && codebook.preferredSettlements) || []; 46866 var first = list[0]; 46867 var chosen = selectedId || (first && first.id); 46868 (scope || root).querySelectorAll('[data-returns-dropdown]').forEach(function (dropdown) { 46869 var menu = dropdown.querySelector('[data-dropdown-menu]'); 46870 var label = dropdown.querySelector('[data-dropdown-label]'); 46871 var hidden = dropdown.querySelector('input[name="resolution"]'); 46872 if (menu) menu.innerHTML = settlementOptionsHtml(chosen); 46873 if (chosen && first) { 46874 var match = list.filter(function (item) { return String(item.id) === String(chosen); })[0] || first; 46875 if (label) label.textContent = match.title;
46876 if (hidden) hidden.value = String(match.id); 46877 } 46878 }); 46879 } 46880 46881 function fillAllSettlements() { 46882 applySettlements(root); 46883 } 46884 46885 function addClaimRow() { 46886 if (!claimTemplate || !claimRowsEl) return; 46887 var node = claimTemplate.content.cloneNode(true); 46888 var row = node.querySelector('.footer-returns__row'); 46889 claimRowsEl.appendChild(node); 46890 applySettlements(row); 46891 } 46892 46893 function addReturnRow() { 46894 if (!returnTemplate || !returnRowsEl) return; 46895 var node = returnTemplate.content.cloneNode(true); 46896 var row = node.querySelector('.footer-returns__row'); 46897 returnRowsEl.appendChild(node); 46898 applySettlements(row); 46899 } 46900 46901 function fillRows(kind) { 46902 var rowsEl = kind === 'return' ? returnRowsEl : claimRowsEl; 46903 var addBtn = root.querySelector(kind === 'return' ? '[data-return-add]' : '[data-returns-add]'); 46904 if (!rowsEl) return; 46905 rowsEl.innerHTML = ''; 46906 if (addBtn) addBtn.hidden = false; 46907 if (kind === 'return') addReturnRow(); 46908 else addClaimRow(); 46909 } 46910 46911 function normalizeArticle(value) { 46912 return String(value || '').replace(/\s+/g, '').toUpperCase(); 46913 } 46914 46915 function lookupLinesForArticle(lookup, articleId) { 46916 var id = normalizeArticle(articleId); 46917 if (!id || !lookup || !lookup.items) return []; 46918 return lookup.items.filter(function (item) { 46919 return normalizeArticle(item.articleId) === id; 46920 }); 46921 } 46922 46923 function articleBudget(lookup, articleId) { 46924 return lookupLinesForArticle(lookup, articleId).reduce(function (sum, item) { 46925 return sum + (parseInt(item.count, 10) || 0); 46926 }, 0); 46927 } 46928 46929 function bindArticleToLookup(row, lookup) { 46930 if (!row) return true; 46931 var article = row.querySelector('[name="article_id"]'); 46932 var qty = row.querySelector('[name="qty"]'); 46933 var wrap = article && article.closest('.nds-field__control'); 46934 var articleId = article ? article.value.trim() : ''; 46935 row.removeAttribute('data-line-index'); 46936 if (qty) { 46937 qty.removeAttribute('max'); 46938 qty.removeAttribute('data-max'); 46939 } 46940 if (wrap) wrap.classList.remove('is-invalid'); 46941 if (!lookup || !lookup.found || !lookup.items || !lookup.items.length) return true; 46942 if (!articleId) return true; 46943 var lines = lookupLinesForArticle(lookup, articleId); 46944 if (!lines.length) { 46945 if (wrap) wrap.classList.add('is-invalid'); 46946 return false; 46947 } 46948 var first = lines[0]; 46949 if (first.lineIndex != null) row.setAttribute('data-line-index', String(first.lineIndex)); 46950 var max = articleBudget(lookup, articleId); 46951 if (qty && max > 0) { 46952 qty.max = max; 46953 qty.setAttribute('data-max', String(max)); 46954 if ((parseInt(qty.value, 10) || 0) > max) qty.value = String(max); 46955 } 46956 return true; 46957 } 46958 46959 function fillClaimTypes(allowedIds) { 46960 var box = root.querySelector('[data-claim-types]'); 46961 var listEl = root.querySelector('[data-claim-type-list]'); 46962 var hidden = root.querySelector('[data-claim-type-id]'); 46963 if (!box || !listEl || !codebook) return; 46964 var returnId = Number(codebook.returnClaimTypeId);
46965 var types = (codebook.types || []).filter(function (type) { 46966 return Number(type.id) !== returnId; 46967 }); 46968 var allowed = (allowedIds && allowedIds.length 46969 ? allowedIds 46970 : types.map(function (type) { return type.id; }) 46971 ).map(Number).filter(function (id) { 46972 return id !== returnId; 46973 }); 46974 var preferred = Number(codebook.defectClaimTypeId); 46975 if (allowed.indexOf(preferred) === -1) preferred = allowed[0]; 46976 listEl.innerHTML = types.filter(function (type) { 46977 return allowed.indexOf(Number(type.id)) !== -1; 46978 }).map(function (type) { 46979 var on = Number(type.id) === preferred; 46980 var desc = type.description || type.descriptionMore || ''; 46981 return '<button type="button" class="footer-returns__type' + (on ? ' is-on' : '') + '" data-claim-type="' + escapeHtml(type.id) + '">' 46982 + '<span class="footer-returns__type-title">' + escapeHtml(type.title) + '</span>' 46983 + (desc ? '<span class="footer-returns__type-desc">' + escapeHtml(desc) + '</span>' : '') 46984 + '</button>'; 46985 }).join(''); 46986 if (hidden) hidden.value = preferred != null ? String(preferred) : ''; 46987 box.hidden = !listEl.children.length; 46988 } 46989 46990 function lookupReference(reference) { 46991 return portalFetch('/claim/lookup', { 46992 method: 'POST', 46993 headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, 46994 body: JSON.stringify({ reference: reference, culture: culture }) 46995 }); 46996 } 46997 46998 function prefillCustomer(form) { 46999 if (!form) return; 47000 var name = root.getAttribute('data-customer-name') || ''; 47001 var email = root.getAttribute('data-customer-email') || ''; 47002 var nameInput = form.querySelector('[data-field="name"]'); 47003 var emailInput = form.querySelector('[data-field="email"]'); 47004 if (nameInput && !nameInput.value && name) nameInput.value = name; 47005 if (emailInput && !emailInput.value && email) emailInput.value = email; 47006 } 47007 47008 function collectItems(form, lookup, errorEl) { 47009 var rows = form.querySelectorAll('.footer-returns__row'); 47010 var items = []; 47011 var claimedByArticle = {}; 47012 var hasOrder = !!(lookup && lookup.found && lookup.items && lookup.items.length); 47013 var failed = false; 47014 rows.forEach(function (row) { 47015 if (failed) return; 47016 var article = row.querySelector('[name="article_id"]'); 47017 var qty = row.querySelector('[name="qty"]'); 47018 var desc = row.querySelector('[name="description"]'); 47019 var res = row.querySelector('[name="resolution"]'); 47020 var wrap = article && article.closest('.nds-field__control'); 47021 var articleId = article ? article.value.trim() : ''; 47022 var count = parseInt(qty && qty.value, 10) || 0; 47023 if (!articleId && count < 1) return; 47024 if (!articleId) { 47025 if (wrap) wrap.classList.add('is-invalid'); 47026 showError(errorEl, root.getAttribute('data-error-item') || ''); 47027 failed = true; 47028 return; 47029 } 47030 if (hasOrder) { 47031 var lines = lookupLinesForArticle(lookup, articleId); 47032 if (!lines.length) { 47033 if (wrap) wrap.classList.add('is-invalid'); 47034 showError(errorEl, t('error-article')); 47035 failed = true; 47036 return; 47037 } 47038 var key = normalizeArticle(articleId); 47039 claimedByArticle[key] = (claimedByArticle[key] || 0) + (count || 1); 47040 if (claimedByArticle[key] > articleBudget(lookup, articleId)) { 47041 if (qty) qty.closest('.nds-field__control').classList.add('is-invalid'); 47042 showError(errorEl, t('error-qty')); 47043 failed = true; 47044 return; 47045 } 47046 } 47047 var item = { count: count || 1, articleId: articleId }; 47048 if (lookup && lookup.token && hasOrder) { 47049 var chosen = lookupLinesForArticle(lookup, articleId)[0]; 47050 if (chosen && chosen.lineIndex != null) item.lineIndex = Number(chosen.lineIndex); 47051 } 47052 if (desc && desc.value.trim()) item.description = desc.value.trim(); 47053 if (res && res.value) item.preferredSettlementId = Number(res.value); 47054 items.push({ item: item, row: row }); 47055 }); 47056 if (failed) return null; 47057 if (!items.length) { 47058 showError(errorEl, root.getAttribute('data-error-item') || ''); 47059 return null; 47060 } 47061 return items; 47062 } 47063 47064 function downscalePhoto(file) { 47065 return new Promise(function (resolve, reject) { 47066 if (!file) { 47067 resolve(null); 47068 return; 47069 } 47070 if (!/^image\/(jpeg|png|gif|webp)$/i.test(file.type)) { 47071 reject(new Error('photo')); 47072 return; 47073 } 47074 if (file.size > 10 * 1024 * 1024) { 47075 reject(new Error('photo')); 47076 return; 47077 } 47078 var img = new Image(); 47079 var url = URL.createObjectURL(file); 47080 img.onload = function () { 47081 var max = 2048; 47082 var scale = Math.min(1, max / Math.max(img.width, img.height)); 47083 var canvas = document.createElement('canvas'); 47084 canvas.width = Math.max(1, Math.round(img.width * scale)); 47085 canvas.height = Math.max(1, Math.round(img.height * scale)); 47086 var ctx = canvas.getContext('2d'); 47087 ctx.drawImage(img, 0, 0, canvas.width, canvas.height); 47088 URL.revokeObjectURL(url); 47089 resolve({ 47090 fileName: file.name || 'photo.jpg', 47091 content: canvas.toDataURL('image/jpeg', 0.85) 47092 }); 47093 }; 47094 img.onerror = function () { 47095 URL.revokeObjectURL(url); 47096 reject(new Error('photo')); 47097 }; 47098 img.src = url; 47099 }); 47100 } 47101 47102 function collectPhotos(itemPairs) { 47103 var jobs = [];
47104 itemPairs.forEach(function (pair, index) { 47105 var field = pair.row.querySelector('.footer-returns__file'); 47106 var files = (field && field._photos) || []; 47107 files.forEach(function (file) { 47108 jobs.push(downscalePhoto(file).then(function (photo) { 47109 if (!photo) return null; 47110 photo.itemIndex = index; 47111 return photo; 47112 })); 47113 }); 47114 }); 47115 return Promise.all(jobs).then(function (photos) { 47116 return photos.filter(Boolean); 47117 }); 47118 } 47119 47120 function createDownloadIcon() { 47121 var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); 47122 svg.setAttribute('class', 'nds-icon'); 47123 svg.setAttribute('width', '16'); 47124 svg.setAttribute('height', '16'); 47125 svg.setAttribute('viewBox', '0 0 24 24'); 47126 svg.setAttribute('fill', 'none'); 47127 svg.setAttribute('aria-hidden', 'true'); 47128 var path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); 47129 path.setAttribute('d', 'M12 4v12M7 12l5 5 5-5M5 20h14'); 47130 path.setAttribute('stroke', 'currentColor'); 47131 path.setAttribute('stroke-width', '1.75'); 47132 path.setAttribute('stroke-linecap', 'round'); 47133 path.setAttribute('stroke-linejoin', 'round'); 47134 svg.appendChild(path); 47135 return svg; 47136 } 47137 47138 function buildSuccessDocs(container, data) { 47139 if (!container) return; 47140 container.innerHTML = ''; 47141 function addLink(url, label) { 47142 if (!url) return; 47143 var a = document.createElement('a'); 47144 a.className = 'nds-btn nds-btn--secondary nds-btn--md'; 47145 a.href = url; 47146 a.target = '_blank'; 47147 a.rel = 'noopener'; 47148 a.appendChild(createDownloadIcon()); 47149 var text = document.createElement('span'); 47150 text.textContent = label; 47151 a.appendChild(text); 47152 container.appendChild(a); 47153 } 47154 addLink(data.pdf, t('pdf')); 47155 addLink(data.labelCz, t('label-cz')); 47156 addLink(data.label, t('label')); 47157 } 47158
47159 function renderSuccess(kind, data) { 47160 var numberEl = root.querySelector(kind === 'return' ? '[data-return-success-number]' : '[data-claim-success-number]'); 47161 var warningEl = root.querySelector(kind === 'return' ? '[data-return-success-warning]' : '[data-claim-success-warning]'); 47162 var docsEl = root.querySelector(kind === 'return' ? '[data-return-success-docs]' : '[data-claim-success-docs]'); 47163 if (numberEl) numberEl.textContent = data.claimNumber || numberEl.textContent; 47164 if (warningEl) { 47165 var skipped = data.photosSkipped || []; 47166 if (skipped.length || (data.warningMessages && data.warningMessages.length)) { 47167 var extra = skipped.map(function (item) { return item.fileName || ''; }).filter(Boolean).join(', '); 47168 warningEl.hidden = false; 47169 warningEl.textContent = (data.warningMessages && data.warningMessages[0]) || (t('photos-skipped') + (extra ? ': ' + extra : '')); 47170 } else { 47171 warningEl.hidden = true; 47172 warningEl.textContent = ''; 47173 } 47174 } 47175 buildSuccessDocs(docsEl, data); 47176 } 47177 47178 function contactValue(attr) { 47179 return (root.getAttribute(attr) || '').trim(); 47180 } 47181 47182 function invoiceInput() { 47183 return root.querySelector('[data-shared-invoice-input]'); 47184 } 47185 47186 function hasInvoiceText() { 47187 var input = invoiceInput(); 47188 return !!(input && input.value.trim()); 47189 } 47190 47191 function syncInvoiceActions() { 47192 var card = root.querySelector('[data-shared-invoice]'); 47193 if (card) card.classList.toggle('has-invoice-text', hasInvoiceText()); 47194 } 47195 47196 var sharedInvoiceEl = invoiceInput(); 47197 if (sharedInvoiceEl) { 47198 sharedInvoiceEl.addEventListener('input', syncInvoiceActions); 47199 } 47200 47201 function handleInvoiceContinue(kind, button) { 47202 if (portalBusy) return; 47203 var form = kind === 'return' ? returnForm : claimForm; 47204 var input = invoiceInput(); 47205 var errEl = root.querySelector('[data-shared-invoice-error]'); 47206 var reference = (input && input.value.trim()) || ''; 47207 showError(errEl, ''); 47208 var invoiceField = input && input.closest('.nds-field'); 47209 if (invoiceField) invoiceField.classList.remove('is-invalid'); 47210 portalBusy = true; 47211 setBusy(button, true, t('loading')); 47212 loadCodebook().then(function () { 47213 if (!reference) { 47214 if (kind === 'return') returnLookup = emptyLookup(); 47215 else claimLookup = emptyLookup(); 47216 fillRows(kind); 47217 if (kind === 'claim') fillClaimTypes(null); 47218 if (kind === 'return') setReturnStep(2); 47219 else setClaimStep(2); 47220 return; 47221 } 47222 return lookupReference(reference).then(function (env) { 47223 if (!env.success) { 47224 applyEnvelopeErrors(form, errEl, env); 47225 return; 47226 } 47227 var data = env.data || {}; 47228 if (!data.found) { 47229 if (kind === 'return') returnLookup = emptyLookup(); 47230 else claimLookup = emptyLookup(); 47231 showError(errEl, t('lookup-miss')); 47232 var missField = input && input.closest('.nds-field'); 47233 if (missField) missField.classList.add('is-invalid'); 47234 return; 47235 } 47236 var lookup = { 47237 token: data.lookupToken || null, 47238 items: data.items || [], 47239 allowed: data.allowedClaimTypeIds || [], 47240 found: true, 47241 reference: reference 47242 }; 47243 if (kind === 'return') { 47244 returnLookup = lookup; 47245 var notDelivered = data.delivered !== true && (data.daysSinceDelivery === null || data.daysSinceDelivery === undefined); 47246 if (notDelivered) { 47247 setReturnStep('withdraw'); 47248 return; 47249 } 47250 var returnId = Number(codebook.returnClaimTypeId); 47251 var allowed = (lookup.allowed || []).map(Number); 47252 if (allowed.indexOf(returnId) === -1) { 47253 setReturnStep('stop'); 47254 return; 47255 } 47256 fillRows('return'); 47257 setReturnStep(2); 47258 } else { 47259 claimLookup = lookup; 47260 fillClaimTypes(lookup.allowed); 47261 fillRows('claim'); 47262 setClaimStep(2); 47263 } 47264 }); 47265 }).catch(function (env) { 47266 applyEnvelopeErrors(form, errEl, env || {}); 47267 }).then(function () { 47268 portalBusy = false;
47269 setBusy(button, false); 47270 }); 47271 } 47272 47273 function handleSubmit(kind, button) { 47274 if (portalBusy) return; 47275 var form = kind === 'return' ? returnForm : claimForm; 47276 var errorEl = kind === 'return' ? returnErrorEl : claimErrorEl; 47277 var lookup = kind === 'return' ? returnLookup : claimLookup; 47278 showError(errorEl, ''); 47279 clearFieldErrors(form); 47280 var itemPairs = collectItems(form, lookup, errorEl); 47281 if (!itemPairs) return; 47282 portalBusy = true; 47283 setBusy(button, true, t('sending')); 47284 loadCodebook().then(function () { 47285 return collectPhotos(itemPairs).then(function (photos) { 47286 var payload = { 47287 claimTypeId: kind === 'return' 47288 ? codebook.returnClaimTypeId 47289 : Number((form.querySelector('[data-claim-type-id]') || {}).value || codebook.defectClaimTypeId), 47290 name: contactValue('data-customer-name'), 47291 email: contactValue('data-customer-email'), 47292 culture: culture, 47293 items: itemPairs.map(function (pair) { return pair.item; }) 47294 }; 47295 var note = form.querySelector('[data-field="note"]'); 47296 if (note && note.value.trim()) payload.note = note.value.trim(); 47297 var invoice = invoiceInput(); 47298 if (invoice && invoice.value.trim()) payload.reference = invoice.value.trim(); 47299 if (lookup.token) payload.lookupToken = lookup.token; 47300 if (kind === 'claim') { 47301 ['packageDamage', 'packageDamageInside', 'damageAfterUnpack', 'differentGoods', 'missingGoods', 'wrongAddress'].forEach(function (key) { 47302 var box = form.querySelector('[name="' + key + '"]'); 47303 payload[key] = !!(box && box.checked); 47304 }); 47305 } 47306 if (photos.length) payload.photos = photos; 47307 return portalFetch('/claim/submit', { 47308 method: 'POST', 47309 headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, 47310 body: JSON.stringify(payload) 47311 }); 47312 }); 47313 }).then(function (env) { 47314 if (!env || !env.success) { 47315 applyEnvelopeErrors(form, errorEl, env || {}); 47316 return; 47317 } 47318 renderSuccess(kind, env.data || {}); 47319 if (kind === 'return') setReturnStep(3); 47320 else setClaimStep(3); 47321 }).catch(function (env) { 47322 applyEnvelopeErrors(form, errorEl, env || {}); 47323 }).then(function () { 47324 portalBusy = false; 47325 setBusy(button, false); 47326 }); 47327 } 47328 47329 function updateTabsVisibility() { 47330 var tabs = root.querySelector('[data-returns-tabs]'); 47331 if (!tabs) return; 47332 tabs.hidden = false; 47333 } 47334 47335 function closeDropdowns() { 47336 if (!openMenu || !openOwner) return; 47337 openOwner.classList.remove('is-open'); 47338 var trigger = openOwner.querySelector('[data-dropdown-trigger]'); 47339 if (trigger) trigger.setAttribute('aria-expanded', 'false'); 47340 openMenu.hidden = true; 47341 openOwner.appendChild(openMenu); 47342 openMenu = null; 47343 openOwner = null; 47344 } 47345 47346 function positionOpenMenu() { 47347 if (!openMenu || !openOwner) return; 47348 var trigger = openOwner.querySelector('[data-dropdown-trigger]'); 47349 if (!trigger) return; 47350 var rect = trigger.getBoundingClientRect(); 47351 openMenu.style.left = rect.left + 'px'; 47352 openMenu.style.top = rect.bottom + 'px'; 47353 openMenu.style.width = Math.max(rect.width, 220) + 'px'; 47354 } 47355 47356 function openDropdown(dropdown) { 47357 if (openOwner === dropdown) { 47358 closeDropdowns(); 47359 return; 47360 } 47361 closeDropdowns(); 47362 var menu = dropdown.querySelector('[data-dropdown-menu]'); 47363 var trigger = dropdown.querySelector('[data-dropdown-trigger]'); 47364 if (!menu || !trigger) return; 47365 dropdown.classList.add('is-open'); 47366 trigger.setAttribute('aria-expanded', 'true'); 47367 menu.hidden = false; 47368 root.appendChild(menu); 47369 openMenu = menu; 47370 openOwner = dropdown; 47371 positionOpenMenu(); 47372 } 47373 47374 function pickDropdownOption(option) { 47375 if (!openOwner) return; 47376 var hidden = openOwner.querySelector('input[name="resolution"]'); 47377 var label = openOwner.querySelector('[data-dropdown-label]'); 47378 var optionsRoot = openMenu || openOwner; 47379 optionsRoot.querySelectorAll('[data-dropdown-option]').forEach(function (el) { 47380 el.classList.toggle('is-on', el === option); 47381 }); 47382 if (hidden) hidden.value = option.getAttribute('data-value') || ''; 47383 if (label) label.textContent = option.textContent.trim(); 47384 closeDropdowns(); 47385 } 47386 47387 function updateTitle() { 47388 if (!titleEl) return; 47389 var show = flowPhase === 'flow'; 47390 titleEl.hidden = !show; 47391 if (!show) { 47392 titleEl.textContent = ''; 47393 return; 47394 } 47395 var label = root.getAttribute(currentTab === 'return' ? 'data-title-return' : 'data-title-claim') || ''; 47396 var input = invoiceInput(); 47397 var ref = input ? input.value.trim() : ''; 47398 titleEl.textContent = ref ? (label + ' · ' + ref) : label; 47399 } 47400 47401 function setTab(tab) { 47402 currentTab = tab; 47403 root.querySelectorAll('[data-returns-tab]').forEach(function (btn) { 47404 var on = btn.getAttribute('data-returns-tab') === tab; 47405 btn.classList.toggle('is-on', on); 47406 if (on) btn.setAttribute('aria-current', 'true'); 47407 else btn.removeAttribute('aria-current'); 47408 }); 47409 root.querySelectorAll('[data-returns-panel]').forEach(function (panel) { 47410 panel.hidden = panel.getAttribute('data-returns-panel') !== tab; 47411 }); 47412 syncShell(); 47413 closeDropdowns(); 47414 updateTitle(); 47415 } 47416 47417 function playSuccess(stepEl) { 47418 if (!stepEl) return; 47419 stepEl.classList.remove('is-animate'); 47420 void stepEl.offsetWidth; 47421 stepEl.classList.add('is-animate'); 47422 } 47423 47424 function syncShell() { 47425 root.classList.toggle('is-addr-step', flowPhase === 'addr'); 47426 root.classList.toggle('is-invoice-step', flowPhase === 'invoice'); 47427 } 47428 47429 function setFlowPhase(phase) { 47430 flowPhase = phase; 47431 syncShell(); 47432 updateTitle(); 47433 } 47434 47435 function setClaimStep(step) { 47436 claimStep = step; 47437 if (step === 2 || step === 3) setFlowPhase('flow'); 47438 if (step === 'addr') setFlowPhase('addr'); 47439 if (step === 'invoice') setFlowPhase('invoice'); 47440 if (step === 'invoice') syncInvoiceActions(); 47441 root.querySelectorAll('[data-step]').forEach(function (el) { 47442 var on = el.getAttribute('data-step') === String(step); 47443 el.classList.toggle('footer-returns__step--active', on); 47444 if (on && step === 3) playSuccess(el); 47445 }); 47446 closeDropdowns(); 47447 } 47448 47449 function setReturnStep(step) { 47450 returnStep = step; 47451 if (step === 2 || step === 3 || step === 'stop' || step === 'withdraw') setFlowPhase('flow'); 47452 if (step === 'addr') setFlowPhase('addr'); 47453 if (step === 'invoice') setFlowPhase('invoice'); 47454 if (step === 'invoice') syncInvoiceActions(); 47455 root.querySelectorAll('[data-return-step]').forEach(function (el) { 47456 var on = el.getAttribute('data-return-step') === String(step); 47457 el.classList.toggle('footer-returns__step--active', on); 47458 if (on && step === 3) playSuccess(el); 47459 }); 47460 closeDropdowns(); 47461 } 47462 47463 function resetForms() { 47464 if (claimForm) claimForm.reset(); 47465 if (returnForm) returnForm.reset(); 47466 claimLookup = emptyLookup(); 47467 returnLookup = emptyLookup(); 47468 if (claimRowsEl) claimRowsEl.innerHTML = ''; 47469 if (returnRowsEl) returnRowsEl.innerHTML = ''; 47470 addClaimRow(); 47471 addReturnRow(); 47472 fillAllSettlements(); 47473 fillClaimTypes(null); 47474 closeDescPop(); 47475 var sharedInvoice = invoiceInput(); 47476 if (sharedInvoice) { 47477 sharedInvoice.value = ''; 47478 var sharedField = sharedInvoice.closest('.nds-field'); 47479 if (sharedField) sharedField.classList.remove('is-invalid'); 47480 } 47481 syncInvoiceActions(); 47482 root.querySelectorAll('[data-shared-invoice-error], [data-return-success-warning], [data-claim-success-warning]').forEach(function (el) { 47483 el.textContent = ''; 47484 if (el.hasAttribute('hidden') || el.hasAttribute('data-return-success-warning') || el.hasAttribute('data-claim-success-warning')) { 47485 el.hidden = true; 47486 } 47487 }); 47488 root.querySelectorAll('[data-return-success-docs], [data-claim-success-docs]').forEach(function (el) { 47489 el.innerHTML = ''; 47490 }); 47491 if (claimErrorEl) claimErrorEl.textContent = ''; 47492 if (returnErrorEl) returnErrorEl.textContent = ''; 47493 clearFieldErrors(claimForm); 47494 clearFieldErrors(returnForm); 47495 var addClaimBtn = root.querySelector('[data-returns-add]'); 47496 var addReturnBtn = root.querySelector('[data-return-add]'); 47497 if (addClaimBtn) addClaimBtn.hidden = false;
47498 if (addReturnBtn) addReturnBtn.hidden = false; 47499 prefillCustomer(claimForm); 47500 prefillCustomer(returnForm); 47501 setClaimStep('addr'); 47502 setReturnStep('addr'); 47503 setTab('claim'); 47504 } 47505 47506 function openModal() { 47507 if (closeTimer) { 47508 window.clearTimeout(closeTimer); 47509 closeTimer = 0; 47510 } 47511 resetForms(); 47512 document.documentElement.appendChild(root); 47513 root.hidden = false; 47514 root.style.cssText = 'position:fixed;inset:0;z-index:2147483646;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(10,10,10,0.56);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);'; 47515 document.body.style.overflow = 'hidden'; 47516 if (shell) shell.classList.remove('is-open'); 47517 window.requestAnimationFrame(function () { 47518 window.requestAnimationFrame(function () { 47519 if (shell) shell.classList.add('is-open'); 47520 }); 47521 }); 47522 playInvoiceLotties(); 47523 loadCodebook().catch(function () {}); 47524 } 47525 47526 function closeModal() { 47527 closeDescPop(); 47528 closeDropdowns(); 47529 if (shell) shell.classList.remove('is-open'); 47530 document.body.style.overflow = ''; 47531 closeTimer = window.setTimeout(function () { 47532 root.hidden = true; 47533 root.style.cssText = ''; 47534 closeTimer = 0; 47535 }, 160); 47536 } 47537 47538 function hasFilledArticle(selector, errorEl) { 47539 var hasItem = false; 47540 root.querySelectorAll(selector).forEach(function (input) { 47541 if (input.value.trim()) hasItem = true; 47542 }); 47543 if (!hasItem && errorEl) { 47544 errorEl.textContent = root.getAttribute('data-error-item') || ''; 47545 } 47546 return hasItem; 47547 } 47548 47549 if (claimForm) { 47550 claimForm.addEventListener('submit', function (event) { event.preventDefault(); }); 47551 } 47552 if (returnForm) { 47553 returnForm.addEventListener('submit', function (event) { event.preventDefault(); }); 47554 } 47555 47556 openers.forEach(function (btn) { 47557 btn.addEventListener('click', openModal); 47558 }); 47559 47560 root.querySelectorAll('[data-returns-close]').forEach(function (el) { 47561 el.addEventListener('click', closeModal); 47562 }); 47563 47564 var descPop = root.querySelector('[data-desc-pop]'); 47565 var descPopInput = root.querySelector('[data-desc-pop-input]'); 47566 var descSource = null; 47567 47568 function closeDescPop() { 47569 if (descSource && descPopInput) { 47570 descSource.value = descPopInput.value; 47571 var preview = descSource.closest('.footer-returns__desc'); 47572 var previewEl = preview && preview.querySelector('[data-desc-preview]'); 47573 if (previewEl) previewEl.textContent = descSource.value.trim(); 47574 } 47575 descSource = null; 47576 if (descPop) descPop.hidden = true; 47577 } 47578 47579 function openDescPop(trigger) { 47580 var field = trigger.closest('.footer-returns__desc'); 47581 var source = field && field.querySelector('[data-returns-desc]'); 47582 if (!source || !descPop || !descPopInput) return; 47583 if (descSource && descSource !== source) closeDescPop(); 47584 closeDropdowns(); 47585 descSource = source; 47586 descPopInput.value = source.value || ''; 47587 descPop.hidden = false; 47588 var rect = trigger.getBoundingClientRect(); 47589 var width = descPop.offsetWidth; 47590 descPop.style.left = Math.min(rect.left, window.innerWidth - width - 16) + 'px'; 47591 var spaceAbove = rect.top; 47592 if (spaceAbove > 180) { 47593 descPop.style.top = 'auto'; 47594 descPop.style.bottom = (window.innerHeight - rect.top + 8) + 'px'; 47595 } else { 47596 descPop.style.bottom = 'auto'; 47597 descPop.style.top = (rect.bottom + 8) + 'px'; 47598 } 47599 window.requestAnimationFrame(function () { 47600 descPopInput.focus(); 47601 }); 47602 } 47603 47604 root.addEventListener('mousedown', function (event) { 47605 var control = event.target.closest('.footer-returns__row .nds-field__control'); 47606 if (!control || event.target.closest('.footer-returns__file, .footer-returns__desc')) return; 47607 var input = control.querySelector('input:not([type="hidden"]):not([type="file"]), textarea'); 47608 if (input && document.activeElement !== input) { 47609 input.focus(); 47610 } 47611 }); 47612 47613 root.addEventListener('click', function (event) { 47614 if (event.target.closest('[data-desc-trigger]')) { 47615 openDescPop(event.target.closest('[data-desc-trigger]')); 47616 return; 47617 } 47618 if (event.target.closest('[data-desc-pop]')) return; 47619 if (descSource && !event.target.closest('[data-desc-trigger]')) closeDescPop(); 47620 47621 if (event.target.closest('[data-file-remove]')) { 47622 var chip = event.target.closest('[data-file-remove]'); 47623 var field = chip.closest('.footer-returns__file'); 47624 var index = Number(chip.getAttribute('data-file-remove')); 47625 if (field && field._photos) { 47626 field._photos.splice(index, 1); 47627 renderPhotos(field); 47628 } 47629 return; 47630 } 47631 47632 if (event.target.closest('input, textarea, .footer-returns__file')) { 47633 if (openOwner && !event.target.closest('[data-dropdown-menu]')) closeDropdowns(); 47634 return; 47635 } 47636 47637 var option = event.target.closest('[data-dropdown-option]'); 47638 if (option) { 47639 pickDropdownOption(option); 47640 return; 47641 } 47642 47643 var trigger = event.target.closest('[data-dropdown-trigger]'); 47644 if (trigger) { 47645 openDropdown(trigger.closest('[data-returns-dropdown]')); 47646 return; 47647 } 47648 47649 if (openOwner && !event.target.closest('[data-dropdown-menu]')) { 47650 closeDropdowns(); 47651 } 47652 47653 var removeBtn = event.target.closest('[data-returns-remove]'); 47654 if (removeBtn) { 47655 var row = removeBtn.closest('.footer-returns__row'); 47656 var list = row ? row.parentElement : null; 47657 if (row && list) { 47658 row.remove(); 47659 if (!list.children.length) { 47660 if (list.hasAttribute('data-returns-rows')) addClaimRow(); 47661 else addReturnRow(); 47662 } 47663 } 47664 return; 47665 } 47666 47667 var tabBtn = event.target.closest('[data-returns-tab]'); 47668 if (tabBtn && !tabBtn.disabled) { 47669 setTab(tabBtn.getAttribute('data-returns-tab')); 47670 return; 47671 } 47672 47673 if (event.target.closest('[data-returns-add]')) { 47674 addClaimRow(); 47675 return; 47676 } 47677 if (event.target.closest('[data-addr-next]')) { 47678 setClaimStep('invoice'); 47679 setReturnStep('invoice'); 47680 return; 47681 } 47682 47683 if (event.target.closest('[data-invoice-back]')) { 47684 setClaimStep('addr'); 47685 setReturnStep('addr'); 47686 return; 47687 } 47688 47689 var chooseKind = event.target.closest('[data-choose-kind]'); 47690 if (chooseKind) { 47691 var kind = chooseKind.getAttribute('data-choose-kind'); 47692 setTab(kind); 47693 handleInvoiceContinue(kind, chooseKind); 47694 return; 47695 } 47696 47697 if (event.target.closest('[data-returns-back]')) { 47698 setClaimStep('invoice'); 47699 setReturnStep('invoice'); 47700 return; 47701 } 47702 var typeBtn = event.target.closest('[data-claim-type]'); 47703 if (typeBtn) { 47704 var typeList = typeBtn.parentElement; 47705 typeList.querySelectorAll('[data-claim-type]').forEach(function (el) { 47706 el.classList.toggle('is-on', el === typeBtn); 47707 }); 47708 var typeHidden = root.querySelector('[data-claim-type-id]'); 47709 if (typeHidden) typeHidden.value = typeBtn.getAttribute('data-claim-type') || ''; 47710 return; 47711 } 47712 47713 var claimNext = event.target.closest('[data-returns-next]'); 47714 if (claimNext) { 47715 if (claimStep === 2) { 47716 handleSubmit('claim', claimNext); 47717 } 47718 return; 47719 } 47720 47721 if (event.target.closest('[data-return-add]')) { 47722 addReturnRow(); 47723 return; 47724 } 47725 if (event.target.closest('[data-return-to-claim]')) { 47726 setTab('claim'); 47727 if (returnLookup && returnLookup.found) { 47728 claimLookup = returnLookup; 47729 fillClaimTypes(claimLookup.allowed); 47730 fillRows('claim'); 47731 setClaimStep(2); 47732 } else { 47733 setClaimStep('invoice'); 47734 setReturnStep('invoice'); 47735 } 47736 return; 47737 } 47738 if (event.target.closest('[data-return-back]')) { 47739 setReturnStep('invoice'); 47740 setClaimStep('invoice'); 47741 return; 47742 } 47743 var returnNext = event.target.closest('[data-return-next]'); 47744 if (returnNext) { 47745 if (returnStep === 2) { 47746 handleSubmit('return', returnNext); 47747 } 47748 } 47749 }); 47750
47751 function clampQty(input) { 47752 var value = parseInt(input.value, 10); 47753 if (!value || value < 1) input.value = '1'; 47754 var max = parseInt(input.getAttribute('data-max'), 10); 47755 if (max && parseInt(input.value, 10) > max) input.value = String(max); 47756 } 47757 47758 function renderPhotos(field) { 47759 if (!field) return; 47760 var list = field.querySelector('[data-file-thumbs]'); 47761 var files = field._photos || []; 47762 if (list) { 47763 list.innerHTML = files.map(function (file, index) { 47764 return '<span class="footer-returns__file-chip"><button type="button" class="footer-returns__file-chip-remove" data-file-remove="' + index + '" aria-label="Ã">Ã</button></span>'; 47765 }).join(''); 47766 files.forEach(function (file, index) { 47767 var chip = list.children[index]; 47768 if (!chip) return; 47769 var reader = new FileReader(); 47770 reader.onload = function () { 47771 chip.style.backgroundImage = 'url(' + reader.result + ')'; 47772 }; 47773 reader.readAsDataURL(file); 47774 }); 47775 } 47776 field.classList.toggle('has-file', files.length > 0); 47777 } 47778 47779 function addPhotos(field, fileList) { 47780 if (!field || !fileList || !fileList.length) return; 47781 if (!field._photos) field._photos = []; 47782 Array.prototype.forEach.call(fileList, function (file) { 47783 if (!file || !/^image\/(jpeg|png|gif|webp)$/i.test(file.type)) return; 47784 if (file.size > 10 * 1024 * 1024) return; 47785 field._photos.push(file); 47786 }); 47787 renderPhotos(field); 47788 } 47789 47790 root.addEventListener('input', function (event) { 47791 if (event.target && event.target.hasAttribute('data-returns-qty')) { 47792 clampQty(event.target); 47793 } 47794 if (event.target && event.target.getAttribute('name') === 'article_id') { 47795 var row = event.target.closest('.footer-returns__row'); 47796 var list = row && row.parentElement; 47797 var lookup = list && list.hasAttribute('data-returns-rows') ? claimLookup : returnLookup; 47798 bindArticleToLookup(row, lookup); 47799 } 47800 }); 47801 47802 root.addEventListener('change', function (event) { 47803 var input = event.target; 47804 if (input && input.hasAttribute('data-returns-qty')) { 47805 clampQty(input); 47806 return; 47807 } 47808 if (!input.classList.contains('footer-returns__file-input')) return; 47809 var field = input.closest('.footer-returns__file'); 47810 addPhotos(field, input.files); 47811 input.value = ''; 47812 }); 47813 47814 var modalBody = root.querySelector('.nds-modal__body'); 47815 if (modalBody) { 47816 modalBody.addEventListener('scroll', function () { 47817 closeDropdowns(); 47818 closeDescPop(); 47819 }); 47820 } 47821 window.addEventListener('resize', function () { 47822 closeDropdowns(); 47823 closeDescPop(); 47824 }); 47825 47826 document.addEventListener('keydown', function (event) { 47827 if (event.key !== 'Escape' || root.hidden) return; 47828 if (descSource) { 47829 closeDescPop(); 47830 return; 47831 } 47832 if (openOwner) { 47833 closeDropdowns(); 47834 return; 47835 } 47836 closeModal(); 47837 }); 47838})(); 47839</script>
47839 47840 47841 47842 47843<!-- CSS for footer --> 47844<style> 47845.footer { 47846 background-color: #222222; 47847 color: #a0a0a0; 47848 padding: 40px 20px; 47849 font-family: 'Montserrat', sans-serif; 47850} 47851 47852.footer-container { 47853 display: flex; 47854 flex-wrap: wrap; 47855 justify-content: space-between; 47856 gap: 30px; 47857 max-width: 1100px; 47858 margin: 0 auto; 47859} 47860 47861.footer-column { 47862 flex: 1 1 200px; 47863 min-width: 200px; 47864} 47865 47866.footer-logo-languages-payments { 47867 flex: 1 1 300px; 47868 min-width: 300px; 47869} 47870 47871.footer-logo img { 47872 width: 100px; 47873 margin-bottom: 115px; 47874 margin-left: -30px; 47875 margin-top: -30px; 47876} 47877 47878 47879.footer-links { 47880 list-style: none; 47881 padding: 0; 47882 margin: 0; 47883} 47884 47885.footer-links li { 47886 margin-bottom: 10px; 47887} 47888 47889 47890.footer-heading { 47891 color: #e0e0e0; 47892 margin-bottom: 15px; 47893 font-size: 18px; 47894 display: flex 47895; 47896 justify-content: space-between; 47897 align-items: center; 47898} 47899 47900.footer-showroom-text, 47901.footer-contact-text { 47902 color: #a0a0a0; 47903} 47904 47905.footer-link { 47906 color: #a0a0a0; 47907 text-decoration: none; 47908 transition: color 0.2s; 47909} 47910 47911.footer-returns-wrap { 47912 margin-top: 15px; 47913} 47914 47915.footer-returns-trigger { 47916 display: inline; 47917 padding: 0; 47918 margin: 0; 47919 border: none; 47920 background: none; 47921 font: inherit; 47922 color: #a0a0a0; 47923 cursor: pointer; 47924 text-align: left; 47925} 47926 47927.footer-returns-trigger:hover { 47928 color: #ffffff; 47929} 47930 47931.footer-link:hover { 47932 color: #ffffff; 47933} 47934 47935.footer-special-links { 47936 margin-top: 40px; 47937 padding-top: 20px; 47938 border-top: 1px solid #636363; 47939 display: flex; 47940 flex-direction: column; 47941 gap: 20px; 47942} 47943 47944.footer-link-with-icon { 47945 display: flex; 47946 align-items: center; 47947 gap: 10px; 47948} 47949 47950.footer-link-icon { 47951 width: 24px; 47952 height: 24px; 47953 flex-shrink: 0; 47954 object-fit: contain; 47955} 47956 47957.footer-flags-container-logo { 47958 display: flex; 47959 flex-wrap: wrap; 47960 gap: 10px; 47961 margin-left: auto; 47962 margin-top: 10px; 47963} 47964 47965.footer-flags-container-logo { 47966 flex: 1 1 18%; 47967 max-width: 80%; 47968} 47969 47970.footer-flag-logo-img { 47971 width: 30px; 47972 height: auto; 47973 border-radius: 0px !important; 47974} 47975 47976.footer-payment-icons img, 47977.footer-delivery-icons img { 47978 width: 34px; 47979 margin-right: 0px; 47980} 47981 47982.footer-delivery-icons img { 47983 width: 130px; 47984 margin-right: 0px; 47985} 47986 47987.footer-flag-payments-img { 47988 width: 45px !important; 47989 height: 30px !important; 47990 margin-bottom: 20px; 47991} 47992 47993.footer-flags-container-payments { 47994 display: grid; 47995 grid-template-columns: repeat(6, 1fr); 47996 gap: 10px; 47997 align-items: center; 47998} 47999 48000.footer-flags-container-payments svg { 48001 width: 45px !important; 48002 height: 30px !important; 48003} 48004 48005.footer-large-icon { 48006 width: 280px; 48007 margin-top: 10px; 48008} 48009 48010.footer-buttons .footer-button { 48011 display: flex; 48012 align-items: center; 48013 justify-content: center; 48014 margin-top: 20px; 48015 padding: 10px 20px; 48016 background-color: transparent; 48017 color: #DADADA; 48018 text-align: center; 48019 text-decoration: none; 48020 border-radius: 0px; 48021 border: 1px solid #636363; 48022 box-shadow: none; 48023 transition: background-color 0.3s ease, color 0.3s ease; 48024 font-size: 14px; 48025 white-space: nowrap; 48026} 48027 48028.footer-button:hover { 48029 background-color: #3A3A3A; 48030 color: #ffffff; 48031} 48032 48033.footer-button-icon { 48034 margin-right: 10px; 48035} 48036 48037.footer-social-icons { 48038 display: flex; 48039 gap: 25px; 48040} 48041 48042.footer-social-icon .svg-wrapper { 48043 display: inline-block; 48044 width: 24px; 48045 height: 24px; 48046} 48047 48048.footer-social-icon .svg-wrapper svg { 48049 width: 24px; 48050 height: 24px; 48051 fill: #a0a0a0; 48052 transition: fill 0.3s ease; 48053} 48054 48055.footer-social-icon:hover .svg-wrapper svg { 48056 fill: #ffffff; 48057} 48058 48059.footer-social-icon:hover .footer-social-img { 48060 outline: 1px solid #676767; 48061 outline-offset: -1px; 48062 border-radius: 0; 48063 opacity: 1; 48064} 48065 48066.footer-bottom { 48067 margin-top: 30px; 48068 text-align: center; 48069} 48070 48071.footer-right { 48072 display: flex; 48073 flex-direction: column; 48074 align-items: center; 48075 gap: 20px; 48076 max-width: 1100px; 48077 margin-top: 20px; 48078} 48079 48080.footer-bottom { 48081 margin-top: 30px; 48082 text-align: left; 48083 max-width: 1100px; 48084 margin: 0 auto; 48085 justify-items: left; 48086} 48087 48088.footer-payments, 48089.footer-delivery-options { 48090 border-bottom: 1px solid #636363; 48091 padding-bottom: 25px; 48092 padding-top: 25px; 48093} 48094 48095.footer-languages { 48096 margin-bottom: 0px; 48097 padding-bottom: 10px; 48098} 48099 48100/* Tooltip styles */ 48101.footer-flag-link { 48102 position: relative; 48103 display: inline-block; 48104} 48105 48106.footer-flag-link::before { 48107 content: attr(data-tooltip); 48108 position: absolute; 48109 bottom: 100%; 48110 left: 50%; 48111 transform: translateX(-50%); 48112 padding: 5px 10px; 48113 background-color: #0f0f0f; 48114 color: white; 48115 font-size: 12px; 48116 border-radius: 4px; 48117 white-space: nowrap; 48118 visibility: hidden; 48119 opacity: 0; 48120 transition: opacity 0.3s ease; 48121 margin-bottom: 5px; 48122 z-index: 1000; 48123} 48124 48125.footer-flag-link::after {
48126 content: ''; 48127 position: absolute; 48128 bottom: 100%; 48129 left: 50%; 48130 transform: translateX(-50%); 48131 border: 5px solid transparent; 48132 border-top-color: #000000; 48133 visibility: hidden; 48134 opacity: 0; 48135 transition: opacity 0.3s ease; 48136 margin-bottom: -5px; 48137 z-index: 1000; 48138} 48139 48140.footer-flag-link:hover::before, 48141.footer-flag-link:hover::after { 48142 visibility: visible; 48143 opacity: 1; 48144} 48145 48146.footer-flag-link, 48147.footer-social-icon { 48148 display: inline-block; 48149 transition: transform 0.3s ease; 48150} 48151 48152.footer-flag-link, 48153.footer-social-icon { 48154 display: inline-block; 48155 transition: transform 0.6s ease; 48156} 48157 48158.footer-flag-link, 48159.footer-social-icon { 48160 display: inline-block; 48161 position: relative; 48162} 48163 48164.footer-flag-logo-img, 48165.footer-social-img { 48166 transition: opacity 0.3s ease; 48167} 48168 48169.footer-flag-link:hover .footer-flag-logo-img { 48170 outline: 1px solid #676767; 48171 outline-offset: -1px; 48172 border-radius: 4px; 48173 opacity: 1; 48174} 48175 48176.footer-flag-logo-img, 48177.footer-social-img { 48178 opacity: 1; 48179} 48180 48181/* Media query for mobile devices */ 48182@media (max-width: 768px) { 48183 .footer-heading { 48184 margin-top: 20px; 48185 } 48186 48187 .footer-logo img { 48188 width: 100px; 48189 margin-bottom: 85px; 48190 margin-left: 0px; 48191 margin-top: -30px; 48192 } 48193 48194 .footer-link { 48195 color: #a0a0a0; 48196 text-decoration: none; 48197 transition: color 0.2s; 48198 } 48199 48200 .footer-flags-container-payments { 48201 grid-template-columns: repeat(6, 1fr); 48202 } 48203} 48204 48205 48206.footer-delivery-grid { 48207 display: flex; 48208 flex-wrap: wrap; 48209 gap: 5px 15px; 48210 margin-top: 15px; 48211} 48212 48213.footer-delivery-item { 48214 color: #a0a0a0; 48215 white-space: nowrap; 48216} 48217 48218/* Badge styles */ 48219.footer-badge { 48220 display: inline-block; 48221 background-color: #4CAF50; 48222 color: white; 48223 font-size: 12px; 48224 padding: 2px 6px; 48225 margin-left: 8px; 48226 vertical-align: middle; 48227 font-weight: 600; 48228} 48229</style> 48230 48231 48232
48233<script> 48234document.addEventListener('DOMContentLoaded', function() { 48235 const updateBlockTitle = function(input) { 48236 const marketCode = input.value.trim().toUpperCase(); 48237 const blockContainer = input.closest('.shopify-editor__card'); 48238 48239 if (blockContainer) { 48240 const titleElement = blockContainer.querySelector('.shopify-editor__card-header'); 48241 if (titleElement) { 48242 titleElement.textContent = `Market: ${marketCode}`; 48243 } 48244 } 48245 }; 48246 48247 // Observe DOM changes 48248 const observer = new MutationObserver(function(mutations) { 48249 mutations.forEach(function(mutation) { 48250 if (mutation.type === 'childList') { 48251 const marketInputs = document.querySelectorAll('input[id*="market_code"]'); 48252 marketInputs.forEach(updateBlockTitle); 48253 } 48254 }); 48255 }); 48256 48257 // Configure observation 48258 observer.observe(document.body, { 48259 childList: true, 48260 subtree: true 48261 }); 48262 48263 // Input event handler 48264 document.addEventListener('input', function(event) { 48265 const input = event.target; 48266 if (input.id && input.id.includes('market_code')) { 48267 updateBlockTitle(input); 48268 } 48269 }); 48270 48271 // Initial update for existing inputs 48272 const marketInputs = document.querySelectorAll('input[id*="market_code"]'); 48273 marketInputs.forEach(updateBlockTitle); 48274 48275 // Get current market 48276 const currentMarket = document.documentElement.getAttribute('data-market') || 48277 document.querySelector('.footer').getAttribute('data-market') || 48278 'es' || 48279 'en'; 48280 48281 // Update data-market attribute on page elements 48282 document.documentElement.setAttribute('data-market', currentMarket.toLowerCase()); 48283 const footer = document.querySelector('.footer'); 48284 if (footer) { 48285 footer.setAttribute('data-market', currentMarket.toLowerCase()); 48286 } 48287 48288 // Add click handlers to flag links 48289 const flagLinks = document.querySelectorAll('.footer-flag-link'); 48290 flagLinks.forEach(link => { 48291 link.addEventListener('click', function(e) { 48292 // Extract market code from URL or data attribute 48293 let marketCode = ''; 48294 const href = this.getAttribute('href'); 48295 if (href.includes('/eu/')) marketCode = 'en'; 48296 else if (href.includes('/gr/')) marketCode = 'gr'; 48297 else if (href.includes('/cz/')) marketCode = 'cz'; 48298 else if (href.includes('/at/')) marketCode = 'at'; 48299 else if (href.includes('/be/')) marketCode = 'be'; 48300 else if (href.includes('/bg/')) marketCode = 'bg'; 48301 else if (href.includes('/de/')) marketCode = 'de'; 48302 else if (href.includes('/dk/')) marketCode = 'dk'; 48303 else if (href.includes('/ee/')) marketCode = 'ee'; 48304 else if (href.includes('/fi/')) marketCode = 'fi'; 48305 else if (href.includes('/fr/')) marketCode = 'fr'; 48306 else if (href.includes('/hu/')) marketCode = 'hu'; 48307 else if (href.includes('/lt/')) marketCode = 'lt'; 48308 else if (href.includes('/it/')) marketCode = 'it'; 48309 else if (href.includes('/ie/')) marketCode = 'ie'; 48310 else if (href.includes('/lv/')) marketCode = 'lv'; 48311 else if (href.includes('/nl/')) marketCode = 'nl'; 48312 else if (href.includes('/lu/')) marketCode = 'lu'; 48313 else if (href.includes('/pl/')) marketCode = 'pl'; 48314 else if (href.includes('/pt/')) marketCode = 'pt'; 48315 else if (href.includes('/ro/')) marketCode = 'ro'; 48316 else if (href.includes('/si/')) marketCode = 'si'; 48317 else if (href.includes('/se/')) marketCode = 'se'; 48318 else if (href.includes('/sk/')) marketCode = 'sk'; 48319 else if (href.includes('/hr/')) marketCode = 'hr'; 48320 else marketCode = 'en'; // Default 48321 48322 // For admin preview, don't navigate but just update the display 48323 if (window.Shopify && window.Shopify.designMode) { 48324 e.preventDefault(); 48325 48326 // Update the footer data attribute 48327 const footer = document.querySelector('.footer'); 48328 if (footer) { 48329 footer.setAttribute('data-market', marketCode); 48330 } 48331 48332 // Update delivery methods visibility 48333 updateDeliveryMethodsVisibility(marketCode); 48334 48335 // Show a notification 48336 const adminNote = document.createElement('div'); 48337 adminNote.style.cssText = 'position: fixed; top: 10px; right: 10px; background: #4CAF50; color: white; padding: 10px; border-radius: 5px; z-index: 9999;'; 48338 adminNote.textContent = `Switched to market: ${marketCode.toUpperCase()} (Preview Mode)`; 48339 document.body.appendChild(adminNote); 48340 48341 // Remove the notification after 3 seconds 48342 setTimeout(() => { 48343 adminNote.remove(); 48344 }, 3000); 48345 48346 // Save market to cookie in preview mode 48347 setMarketCookie(marketCode); 48348 } 48349 }); 48350 }); 48351 48352 // Helper function to set market cookie 48353 function setMarketCookie(marketCode) { 48354 if (!marketCode) return; 48355 48356 // Set cookie for 30 days 48357 const expiryDate = new Date(); 48358 expiryDate.setDate(expiryDate.getDate() + 30); 48359 document.cookie = `rendl_market=${marketCode}; expires=${expiryDate.toUTCString()}; path=/; SameSite=Lax`; 48360 48361 // Log for debugging 48362 if (window.Shopify && window.Shopify.designMode) { 48363 console.log(`Market cookie set: rendl_market=${marketCode}`); 48364 } 48365 } 48366 48367 // Function to update delivery methods visibility in admin preview mode 48368 function updateDeliveryMethodsVisibility(marketCode) { 48369 if (!marketCode || !window.Shopify || !window.Shopify.designMode) return; 48370 48371 const deliveryItems = document.querySelectorAll('.footer-delivery-item'); 48372 if (!deliveryItems.length) return; 48373 48374 // Hide all items first
48375 deliveryItems.forEach(item => { 48376 item.style.display = 'none'; 48377 }); 48378 48379 // Now show only relevant items for this market 48380 const marketCodeLower = marketCode.toLowerCase(); 48381 48382 // In preview mode we need to check against the data attributes to simulate server-side rendering 48383 deliveryItems.forEach(item => { 48384 const marketCodes = item.getAttribute('data-markets') || ''; 48385 if (!marketCodes || marketCodes.includes(marketCodeLower) || marketCodes === 'all') { 48386 item.style.display = ''; 48387 } 48388 }); 48389 48390 // Make the grid more compact if no items are visible 48391 const deliveryGrid = document.querySelector('.footer-delivery-grid'); 48392 if (deliveryGrid) { 48393 const visibleItems = deliveryGrid.querySelectorAll('.footer-delivery-item[style=""]').length; 48394 if (visibleItems === 0) { 48395 // If no methods visible, add a placeholder message 48396 const placeholderItem = document.createElement('div'); 48397 placeholderItem.className = 'footer-delivery-item admin-placeholder'; 48398 placeholderItem.textContent = '(No delivery methods for this market)'; 48399 placeholderItem.style.gridColumn = '1 / -1'; 48400 placeholderItem.style.color = '#888'; 48401 placeholderItem.style.fontStyle = 'italic'; 48402 deliveryGrid.appendChild(placeholderItem); 48403 } else { 48404 // Remove any existing placeholder 48405 const placeholder = deliveryGrid.querySelector('.admin-placeholder'); 48406 if (placeholder) { 48407 placeholder.remove(); 48408 } 48409 } 48410 } 48411 } 48412}); 48413</script>
48413</div> 48414<!-- END sections: footer-group --> 48415 48416 <ul hidden> 48417 <li id="a11y-refresh-page-message">Al seleccionar una opción, se actualiza toda la página.</li> 48418 <li id="a11y-new-window-message">Se abre en una nueva ventana.</li> 48419 </ul> 48420 48421
48421<script> 48422 window.shopUrl = 'https://rendl.es'; 48423 window.routes = { 48424 cart_add_url: '/cart/add', 48425 cart_change_url: '/cart/change', 48426 cart_update_url: '/cart/update', 48427 cart_url: '/cart', 48428 predictive_search_url: '/search/suggest', 48429 }; 48430 48431 window.cartStrings = { 48432 error: `Hubo un error al actualizar tu carrito de compra. Inténtalo de nuevo.`, 48433 quantityError: `Solo puedes agregar [quantity] de este artÃculo a tu carrito.`, 48434 }; 48435 48436 window.variantStrings = { 48437 addToCart: `Agregar al carrito`, 48438 soldOut: `En camino`, 48439 unavailable: `No disponible`, 48440 unavailable_with_option: `[value]: no disponible`, 48441 }; 48442 48443 window.quickOrderListStrings = { 48444 itemsAdded: `[quantity] artÃculos agregados`, 48445 itemAdded: `[quantity] artÃculo agregado`, 48446 itemsRemoved: `[quantity] artÃculos eliminados`, 48447 itemRemoved: `[quantity] artÃculo eliminado`, 48448 viewCart: `Ver carrito`, 48449 each: `[money]/unidad`, 48450 min_error: `Este artÃculo tiene un mÃnimo de [min].`, 48451 max_error: `Este artÃculo tiene un máximo de [max].`, 48452 step_error: `Solo puedes agregar este artÃculo en incrementos de [step]`, 48453 }; 48454 48455 window.accessibilityStrings = { 48456 imageAvailable: `La imagen [index] ya está disponible en la vista de la galerÃa`, 48457 shareSuccess: `Enlace copiado al portapapeles`, 48458 pauseSlideshow: `Pausar la presentación`, 48459 playSlideshow: `Reproducir la presentación`, 48460 recipientFormExpanded: `Formulario del destinatario de la tarjeta de regalo expandido`, 48461 recipientFormCollapsed: `Formulario del destinatario de tarjeta de regalo contraÃdo`, 48462 countrySelectorSearchCount: `[count] paÃses o regiones encontrados`, 48463 }; 48464 </script>
48464<script src="//rendl.es/cdn/shop/t/33/assets/predictive-search.js?v=173107362110754071101789728619" defer="defer"></script>
vendor: 1 bytes, line 48464
48464
48465<script src="//rendl.es/cdn/shop/t/33/assets/compare-system.js?v=41393761500327870031788953231" defer="defer"></script>
48465 48466 48467 48468
48469<script> 48470(function() { 48471 'use strict'; 48472 48473 // Cache for checked products to avoid repeated lookups 48474 const checkedProducts = new Map(); 48475 48476 // Global wishlist check function 48477 window.checkWishlistStatus = function(productId) { 48478 if (checkedProducts.has(productId)) { 48479 return checkedProducts.get(productId); 48480 } 48481 48482 try { 48483 const wishlist = JSON.parse(localStorage.getItem('rendl_wishlist') || '{"categories":[]}'); 48484 let isInWishlist = false; 48485 48486 if (wishlist.categories) { 48487 isInWishlist = wishlist.categories.some(category => 48488 category.items.some(item => item.id === productId) 48489 ); 48490 } else { 48491 isInWishlist = wishlist.some(item => item.id === productId); 48492 } 48493 48494 checkedProducts.set(productId, isInWishlist); 48495 return isInWishlist; 48496 } catch (e) { 48497 console.error('Error checking wishlist status:', e); 48498 return false; 48499 } 48500 }; 48501 48502 // Update single button 48503 function updateButton(button, isInWishlist) { 48504 const path = button.querySelector('svg path'); 48505 if (path) { 48506 path.setAttribute('fill', isInWishlist ? '#333333' : 'none'); 48507 button.classList.toggle('in-wishlist', isInWishlist); 48508 } 48509 } 48510 48511 // Check wishlist & compare status on hover (lazy) 48512 function handleCardHover(e) { 48513 // Check if e.target is valid DOM element 48514 if (!e.target || !e.target.closest) return; 48515 48516 const card = e.target.closest('.card, .grid__item'); 48517 if (!card || card.hasAttribute('data-status-checked')) return; 48518 48519 card.setAttribute('data-status-checked', 'true'); 48520 48521 // Check wishlist status 48522 const wishlistButton = card.querySelector('[data-wishlist-product]'); 48523 if (wishlistButton) { 48524 const productId = wishlistButton.getAttribute('data-wishlist-product'); 48525 if (productId) { 48526 const isInWishlist = window.checkWishlistStatus(productId); 48527 updateButton(wishlistButton, isInWishlist); 48528 } 48529 } 48530 48531 // Check compare status 48532 const compareButton = card.querySelector('.compare-button-simple'); 48533 if (compareButton && window.RendlCompare) { 48534 const productId = compareButton.dataset.productId; 48535 if (productId) { 48536 const isInCompare = window.RendlCompare.isInCompare(productId); 48537 updateCompareButton(compareButton, isInCompare); 48538 } 48539 } 48540 } 48541 48542 // Update compare button state 48543 function updateCompareButton(button, isInCompare) { 48544 const buttonContainer = button.closest('.compare-button-container'); 48545 const compareText = button.querySelector('.compare-text'); 48546 48547 if (isInCompare) { 48548 button.setAttribute('data-in-comparison', 'true'); 48549 button.classList.add('in-comparison'); 48550 if (buttonContainer) { 48551 buttonContainer.classList.add('in-comparison'); 48552 } 48553 } else { 48554 button.removeAttribute('data-in-comparison'); 48555 button.classList.remove('in-comparison'); 48556 if (buttonContainer) { 48557 buttonContainer.classList.remove('in-comparison'); 48558 } 48559 } 48560 48561 // Update text if translations are available 48562 if (compareText && window.compareButtonTranslations) { 48563 const currentLocale = window.currentLocale || document.documentElement.lang || 'en'; 48564 if (isInCompare) { 48565 compareText.textContent = window.compareButtonTranslations.remove[currentLocale] || window.compareButtonTranslations.remove.en; 48566 } else { 48567 compareText.textContent = window.compareButtonTranslations.compare[currentLocale] || window.compareButtonTranslations.compare.en; 48568 } 48569 } 48570 } 48571 48572 // Global function to update wishlist buttons for specific product 48573 window.updateWishlistButtons = function(productId, isInWishlist) { 48574 checkedProducts.set(productId, isInWishlist); 48575 48576 const buttons = document.querySelectorAll(`[data-wishlist-product="${productId}"]`); 48577 buttons.forEach(button => updateButton(button, isInWishlist)); 48578 }; 48579 48580 // Listen for wishlist updates 48581 document.addEventListener('wishlist:updated', function(e) { 48582 if (e.detail && e.detail.productId !== undefined) { 48583 checkedProducts.delete(e.detail.productId); 48584 const isInWishlist = window.checkWishlistStatus(e.detail.productId); 48585 window.updateWishlistButtons(e.detail.productId, isInWishlist); 48586 } 48587 }); 48588 48589 // Listen for compare updates 48590 document.addEventListener('compare:updated', function(e) { 48591 if (e.detail && e.detail.items) { 48592 // Update all compare buttons 48593 document.querySelectorAll('.compare-button-simple').forEach(function(button) { 48594 const productId = button.dataset.productId;
48595 if (productId && window.RendlCompare) { 48596 const isInCompare = window.RendlCompare.isInCompare(productId); 48597 updateCompareButton(button, isInCompare); 48598 } 48599 }); 48600 } 48601 }); 48602 48603 // Global function to update compare button state (for compare-system.js) 48604 // Only define if not already defined in card-product.liquid 48605 if (!window.updateCompareButtonState) { 48606 window.updateCompareButtonState = function(productId, isInCompare) { 48607 const buttons = document.querySelectorAll(`.compare-button-simple[data-product-id="${productId}"]`); 48608 buttons.forEach(function(button) { 48609 updateCompareButton(button, isInCompare); 48610 }); 48611 }; 48612 } 48613 48614 // Use mouseover instead of mouseenter for better compatibility with delegation 48615 document.addEventListener('mouseover', handleCardHover); 48616 48617 // Check visible cards on initial load (only above fold) 48618 function checkInitialCards() { 48619 const visibleCards = document.querySelectorAll('.card, .grid__item'); 48620 const viewportHeight = window.innerHeight; 48621 48622 visibleCards.forEach(function(card, index) { 48623 if (index < 6) { // Only first 6 cards 48624 const rect = card.getBoundingClientRect(); 48625 if (rect.top < viewportHeight) { 48626 handleCardHover({ target: card }); 48627 } 48628 } 48629 }); 48630 } 48631 48632 // Check cards after page load 48633 if (document.readyState === 'complete') { 48634 checkInitialCards(); 48635 } else { 48636 window.addEventListener('load', checkInitialCards); 48637 } 48638 48639 // Also check after product grid is loaded (for deferred loading) 48640 document.addEventListener('productgrid:loaded', function() { 48641 setTimeout(checkInitialCards, 100); 48642 }); 48643})(); 48644</script>
48644<!-- Breadcrumbs collection tracking script -->
48645<script> 48646(function() { 48647 'use strict'; 48648 48649 // Check if we're on a collection page 48650 function isCollectionPage() { 48651 return window.location.pathname.includes('/collections/') && 48652 !window.location.pathname.includes('/products/'); 48653 } 48654 48655 // Get collection handle from URL 48656 function getCurrentCollectionHandle() { 48657 const match = window.location.pathname.match(/\/collections\/([^/?]+)/); 48658 return match ? match[1] : null; 48659 } 48660 48661 // Track product clicks on collection pages 48662 function initTracking() { 48663 if (!isCollectionPage()) { 48664 return; 48665 } 48666 48667 const collectionHandle = getCurrentCollectionHandle(); 48668 if (!collectionHandle) { 48669 return; 48670 } 48671 48672 // Function to save product-collection relationship 48673 function saveProductCollection(productHandle) { 48674 const data = { 48675 collection: collectionHandle, 48676 timestamp: Date.now() 48677 }; 48678 48679 const storageKey = 'breadcrumb_product_' + productHandle; 48680 localStorage.setItem(storageKey, JSON.stringify(data)); 48681 } 48682 48683 // Track all types of clicks on product links 48684 document.addEventListener('mousedown', function(e) { 48685 const link = e.target.closest('a[href*="/products/"]'); 48686 if (!link) return; 48687 48688 try { 48689 const url = new URL(link.href, window.location.origin); 48690 const match = url.pathname.match(/\/products\/([^/?]+)/); 48691 48692 if (match) { 48693 const productHandle = match[1]; 48694 saveProductCollection(productHandle); 48695 } 48696 } catch (err) { 48697 // Silently handle errors 48698 } 48699 }, true); 48700 48701 // Also track click events as backup 48702 document.addEventListener('click', function(e) { 48703 const link = e.target.closest('a[href*="/products/"]'); 48704 if (!link) return; 48705 48706 try { 48707 const url = new URL(link.href, window.location.origin); 48708 const match = url.pathname.match(/\/products\/([^/?]+)/); 48709 48710 if (match) { 48711 const productHandle = match[1]; 48712 saveProductCollection(productHandle); 48713 } 48714 } catch (err) {} 48715 }, true); 48716 48717 // Track auxclick for middle/right mouse buttons 48718 document.addEventListener('auxclick', function(e) { 48719 const link = e.target.closest('a[href*="/products/"]'); 48720 if (!link) return; 48721 48722 try { 48723 const url = new URL(link.href, window.location.origin); 48724 const match = url.pathname.match(/\/products\/([^/?]+)/); 48725 48726 if (match) { 48727 const productHandle = match[1]; 48728 saveProductCollection(productHandle); 48729 } 48730 } catch (err) {} 48731 }, true); 48732 } 48733 48734 // Initialize when DOM is ready 48735 if (document.readyState === 'loading') { 48736 document.addEventListener('DOMContentLoaded', initTracking); 48737 } else { 48738 initTracking(); 48739 } 48740})(); 48741</script>
48741 48742<!-- End breadcrumbs tracking script --> 48743 48744 <link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500&display=swap&subset=latin,cyrillic" rel="stylesheet"> 48745 48746 48747 48748 48749 <style> .badge-custom-coming-soon {background: transparent; color: #2563eb; border: 1px solid #2563eb; } .badge-custom-on-the-way {background: transparent; color: #ff9800; border: 1px solid #ff9800; } .badge-custom-made-to-order{background: transparent; color: #a21caf; border: 1px solid #a21caf; } .shopify-pc__banner__dialog button.shopify-pc__banner__btn-accept {border: 1px solid hsl(0deg, 0%, 12%, 100%); background: #232323; color: #ffffff;} ::selection {background-color: gray; color: #fff; -webkit-text-fill-color: #fff;} ::-moz-selection {background-color: gray; color: #fff;} input::selection,textarea::selection {background-color: gray; color: #fff; -webkit-text-fill-color: #fff;} .jdgm-rev {box-shadow: none !important; border-left: 1px solid lightgrey !important; border-right: 1px solid lightgrey !important;} .jdgm-rev__icon {background-color: white !important;} </style>
48750<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
48750 48751</body> 48752 </html> 48753
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.