CINXE.COM

Blog – For Bitter For Worse

<!doctype html> <html class="no-js" lang="en"> <head> <script type="application/vnd.locksmith+json" data-locksmith>{"version":"v160","locked":false,"initialized":true,"scope":"blog","access_granted":true,"access_denied":false,"requires_customer":false,"manual_lock":false,"remote_lock":false,"has_timeout":false,"remote_rendered":null,"hide_resource":false,"hide_links_to_resource":false,"transparent":true,"locks":{"all":[],"opened":[]},"keys":[],"keys_signature":"e59a4435124ef32df563f9003ec498bd5d4bc91f430ac9093fca154d559d02fa","state":{"template":"blog","theme":142940897501,"product":null,"collection":null,"page":null,"blog":"news","article":null,"app":null},"now":1732983870,"path":"\/blogs\/news","locale_root_url":"\/","canonical_url":"https:\/\/forbitterforworse.com\/blogs\/news","customer_id":null,"customer_id_signature":"e59a4435124ef32df563f9003ec498bd5d4bc91f430ac9093fca154d559d02fa","cart":null}</script><script data-locksmith>!function(){var require=undefined,reqwest=function(){function succeed(e){var t=protocolRe.exec(e.url);return t=t&&t[1]||context.location.protocol,httpsRe.test(t)?twoHundo.test(e.request.status):!!e.request.response}function handleReadyState(e,t,n){return function(){return e._aborted?n(e.request):e._timedOut?n(e.request,"Request is aborted: timeout"):void(e.request&&4==e.request[readyState]&&(e.request.onreadystatechange=noop,succeed(e)?t(e.request):n(e.request)))}}function setHeaders(e,t){var n,s=t.headers||{};s.Accept=s.Accept||defaultHeaders.accept[t.type]||defaultHeaders.accept["*"];var r="undefined"!=typeof FormData&&t.data instanceof FormData;for(n in!t.crossOrigin&&!s[requestedWith]&&(s[requestedWith]=defaultHeaders.requestedWith),!s[contentType]&&!r&&(s[contentType]=t.contentType||defaultHeaders.contentType),s)s.hasOwnProperty(n)&&"setRequestHeader"in e&&e.setRequestHeader(n,s[n])}function setCredentials(e,t){"undefined"!=typeof t.withCredentials&&"undefined"!=typeof e.withCredentials&&(e.withCredentials=!!t.withCredentials)}function generalCallback(e){lastValue=e}function urlappend(e,t){return e+(/[?]/.test(e)?"&":"?")+t}function handleJsonp(e,t,n,s){var r=uniqid++,a=e.jsonpCallback||"callback",o=e.jsonpCallbackName||reqwest.getcallbackPrefix(r),i=new RegExp("((^|[?]|&)"+a+")=([^&]+)"),l=s.match(i),c=doc.createElement("script"),u=0,d=-1!==navigator.userAgent.indexOf("MSIE 10.0");return l?"?"===l[3]?s=s.replace(i,"$1="+o):o=l[3]:s=urlappend(s,a+"="+o),context[o]=generalCallback,c.type="text/javascript",c.src=s,c.async=!0,"undefined"!=typeof c.onreadystatechange&&!d&&(c.htmlFor=c.id="_reqwest_"+r),c.onload=c.onreadystatechange=function(){if(c[readyState]&&"complete"!==c[readyState]&&"loaded"!==c[readyState]||u)return!1;c.onload=c.onreadystatechange=null,c.onclick&&c.onclick(),t(lastValue),lastValue=undefined,head.removeChild(c),u=1},head.appendChild(c),{abort:function(){c.onload=c.onreadystatechange=null,n({},"Request is aborted: timeout",{}),lastValue=undefined,head.removeChild(c),u=1}}}function getRequest(e,t){var n,s=this.o,r=(s.method||"GET").toUpperCase(),a="string"==typeof s?s:s.url,o=!1!==s.processData&&s.data&&"string"!=typeof s.data?reqwest.toQueryString(s.data):s.data||null,i=!1;return("jsonp"==s.type||"GET"==r)&&o&&(a=urlappend(a,o),o=null),"jsonp"==s.type?handleJsonp(s,e,t,a):((n=s.xhr&&s.xhr(s)||xhr(s)).open(r,a,!1!==s.async),setHeaders(n,s),setCredentials(n,s),context[xDomainRequest]&&n instanceof context[xDomainRequest]?(n.onload=e,n.onerror=t,n.onprogress=function(){},i=!0):n.onreadystatechange=handleReadyState(this,e,t),s.before&&s.before(n),i?setTimeout(function(){n.send(o)},200):n.send(o),n)}function Reqwest(e,t){this.o=e,this.fn=t,init.apply(this,arguments)}function setType(e){return null===e?undefined:e.match("json")?"json":e.match("javascript")?"js":e.match("text")?"html":e.match("xml")?"xml":void 0}function init(o,fn){function complete(e){for(o.timeout&&clearTimeout(self.timeout),self.timeout=null;0<self._completeHandlers.length;)self._completeHandlers.shift()(e)}function success(resp){var type=o.type||resp&&setType(resp.getResponseHeader("Content-Type"));resp="jsonp"!==type?self.request:resp;var filteredResponse=globalSetupOptions.dataFilter(resp.responseText,type),r=filteredResponse;try{resp.responseText=r}catch(e){}if(r)switch(type){case"json":try{resp=context.JSON?context.JSON.parse(r):eval("("+r+")")}catch(err){return error(resp,"Could not parse JSON in response",err)}break;case"js":resp=eval(r);break;case"html":resp=r;break;case"xml":resp=resp.responseXML&&resp.responseXML.parseError&&resp.responseXML.parseError.errorCode&&resp.responseXML.parseError.reason?null:resp.responseXML}for(self._responseArgs.resp=resp,self._fulfilled=!0,fn(resp),self._successHandler(resp);0<self._fulfillmentHandlers.length;)resp=self._fulfillmentHandlers.shift()(resp);complete(resp)}function timedOut(){self._timedOut=!0,self.request.abort()}function error(e,t,n){for(e=self.request,self._responseArgs.resp=e,self._responseArgs.msg=t,self._responseArgs.t=n,self._erred=!0;0<self._errorHandlers.length;)self._errorHandlers.shift()(e,t,n);complete(e)}this.url="string"==typeof o?o:o.url,this.timeout=null,this._fulfilled=!1,this._successHandler=function(){},this._fulfillmentHandlers=[],this._errorHandlers=[],this._completeHandlers=[],this._erred=!1,this._responseArgs={};var self=this;fn=fn||function(){},o.timeout&&(this.timeout=setTimeout(function(){timedOut()},o.timeout)),o.success&&(this._successHandler=function(){o.success.apply(o,arguments)}),o.error&&this._errorHandlers.push(function(){o.error.apply(o,arguments)}),o.complete&&this._completeHandlers.push(function(){o.complete.apply(o,arguments)}),this.request=getRequest.call(this,success,error)}function reqwest(e,t){return new Reqwest(e,t)}function normalize(e){return e?e.replace(/\r?\n/g,"\r\n"):""}function serial(e,t){var n,s,r,a,o=e.name,i=e.tagName.toLowerCase(),l=function(e){e&&!e.disabled&&t(o,normalize(e.attributes.value&&e.attributes.value.specified?e.value:e.text))};if(!e.disabled&&o)switch(i){case"input":/reset|button|image|file/i.test(e.type)||(n=/checkbox/i.test(e.type),s=/radio/i.test(e.type),r=e.value,(!n&&!s||e.checked)&&t(o,normalize(n&&""===r?"on":r)));break;case"textarea":t(o,normalize(e.value));break;case"select":if("select-one"===e.type.toLowerCase())l(0<=e.selectedIndex?e.options[e.selectedIndex]:null);else for(a=0;e.length&&a<e.length;a++)e.options[a].selected&&l(e.options[a])}}function eachFormElement(){var e,t,a=this,n=function(e,t){var n,s,r;for(n=0;n<t.length;n++)for(r=e[byTag](t[n]),s=0;s<r.length;s++)serial(r[s],a)};for(t=0;t<arguments.length;t++)e=arguments[t],/input|select|textarea/i.test(e.tagName)&&serial(e,a),n(e,["input","select","textarea"])}function serializeQueryString(){return reqwest.toQueryString(reqwest.serializeArray.apply(null,arguments))}function serializeHash(){var n={};return eachFormElement.apply(function(e,t){e in n?(n[e]&&!isArray(n[e])&&(n[e]=[n[e]]),n[e].push(t)):n[e]=t},arguments),n}function buildParams(e,t,n,s){var r,a,o,i=/\[\]$/;if(isArray(t))for(a=0;t&&a<t.length;a++)o=t[a],n||i.test(e)?s(e,o):buildParams(e+"["+("object"==typeof o?a:"")+"]",o,n,s);else if(t&&"[object Object]"===t.toString())for(r in t)buildParams(e+"["+r+"]",t[r],n,s);else s(e,t)}var context=this,XHR2;if("window"in context)var doc=document,byTag="getElementsByTagName",head=doc[byTag]("head")[0];else try{XHR2=require("xhr2")}catch(ex){throw new Error("Peer dependency `xhr2` required! Please npm install xhr2")}var httpsRe=/^http/,protocolRe=/(^\w+):\/\//,twoHundo=/^(20\d|1223)$/,readyState="readyState",contentType="Content-Type",requestedWith="X-Requested-With",uniqid=0,callbackPrefix="reqwest_"+ +new Date,lastValue,xmlHttpRequest="XMLHttpRequest",xDomainRequest="XDomainRequest",noop=function(){},isArray="function"==typeof Array.isArray?Array.isArray:function(e){return e instanceof Array},defaultHeaders={contentType:"application/x-www-form-urlencoded",requestedWith:xmlHttpRequest,accept:{"*":"text/javascript, text/html, application/xml, text/xml, */*",xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript",js:"application/javascript, text/javascript"}},xhr=function(e){if(!0!==e.crossOrigin)return context[xmlHttpRequest]?new XMLHttpRequest:XHR2?new XHR2:new ActiveXObject("Microsoft.XMLHTTP");var t=context[xmlHttpRequest]?new XMLHttpRequest:null;if(t&&"withCredentials"in t)return t;if(context[xDomainRequest])return new XDomainRequest;throw new Error("Browser does not support cross-origin requests")},globalSetupOptions={dataFilter:function(e){return e}};return Reqwest.prototype={abort:function(){this._aborted=!0,this.request.abort()},retry:function(){init.call(this,this.o,this.fn)},then:function(e,t){return e=e||function(){},t=t||function(){},this._fulfilled?this._responseArgs.resp=e(this._responseArgs.resp):this._erred?t(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):(this._fulfillmentHandlers.push(e),this._errorHandlers.push(t)),this},always:function(e){return this._fulfilled||this._erred?e(this._responseArgs.resp):this._completeHandlers.push(e),this},fail:function(e){return this._erred?e(this._responseArgs.resp,this._responseArgs.msg,this._responseArgs.t):this._errorHandlers.push(e),this},"catch":function(e){return this.fail(e)}},reqwest.serializeArray=function(){var n=[];return eachFormElement.apply(function(e,t){n.push({name:e,value:t})},arguments),n},reqwest.serialize=function(){if(0===arguments.length)return"";var e,t=Array.prototype.slice.call(arguments,0);return(e=t.pop())&&e.nodeType&&t.push(e)&&(e=null),e&&(e=e.type),("map"==e?serializeHash:"array"==e?reqwest.serializeArray:serializeQueryString).apply(null,t)},reqwest.toQueryString=function(e,t){var n,s,r=t||!1,a=[],o=encodeURIComponent,i=function(e,t){t="function"==typeof t?t():null==t?"":t,a[a.length]=o(e)+"="+o(t)};if(isArray(e))for(s=0;e&&s<e.length;s++)i(e[s].name,e[s].value);else for(n in e)e.hasOwnProperty(n)&&buildParams(n,e[n],r,i);return a.join("&").replace(/%20/g,"+")},reqwest.getcallbackPrefix=function(){return callbackPrefix},reqwest.compat=function(e,t){return e&&(e.type&&(e.method=e.type)&&delete e.type,e.dataType&&(e.type=e.dataType),e.jsonpCallback&&(e.jsonpCallbackName=e.jsonpCallback)&&delete e.jsonpCallback,e.jsonp&&(e.jsonpCallback=e.jsonp)),new Reqwest(e,t)},reqwest.ajaxSetup=function(e){for(var t in e=e||{})globalSetupOptions[t]=e[t]},reqwest}(); /*! * Reqwest! A general purpose XHR connection manager * license MIT (c) Dustin Diaz 2015 * https://github.com/ded/reqwest */!function(){var o=window.Locksmith={},e=document.querySelector('script[type="application/vnd.locksmith+json"]'),n=e&&e.innerHTML;if(o.state={},o.util={},o.loading=!1,n)try{o.state=JSON.parse(n)}catch(u){}if(document.addEventListener&&document.querySelector){var s,r,a,t=[76,79,67,75,83,77,73,84,72,49,49],i=function(){r=t.slice(0)},l="style",c=function(e){e&&27!==e.keyCode&&"click"!==e.type||(document.removeEventListener("keydown",c),document.removeEventListener("click",c),s&&document.body.removeChild(s),s=null)};i(),document.addEventListener("keyup",function(e){if(e.keyCode===r[0]){if(clearTimeout(a),r.shift(),0<r.length)return void(a=setTimeout(i,1e3));i(),c(),(s=document.createElement("div"))[l].width="50%",s[l].maxWidth="1000px",s[l].height="85%",s[l].border="1px rgba(0, 0, 0, 0.2) solid",s[l].background="rgba(255, 255, 255, 0.99)",s[l].borderRadius="4px",s[l].position="fixed",s[l].top="50%",s[l].left="50%",s[l].transform="translateY(-50%) translateX(-50%)",s[l].boxShadow="0 2px 5px rgba(0, 0, 0, 0.3), 0 0 100vh 100vw rgba(0, 0, 0, 0.5)",s[l].zIndex="2147483645";var t=document.createElement("textarea");t.value=JSON.stringify(JSON.parse(n),null,2),t[l].border="none",t[l].display="block",t[l].boxSizing="border-box",t[l].width="100%",t[l].height="100%",t[l].background="transparent",t[l].padding="22px",t[l].fontFamily="monospace",t[l].fontSize="14px",t[l].color="#333",t[l].resize="none",t[l].outline="none",t.readOnly=!0,s.appendChild(t),document.body.appendChild(s),t.addEventListener("click",function(e){e.stopImmediatePropagation()}),t.select(),document.addEventListener("keydown",c),document.addEventListener("click",c)}})}o.isEmbedded=-1!==window.location.search.indexOf("_ab=0&_fd=0&_sc=1"),o.path=o.state.path||window.location.pathname,o.basePath=o.state.locale_root_url.concat("/apps/locksmith").replace(/^\/\//,"/"),o.reloading=!1,o.util.console=window.console||{log:function(){},error:function(){}},o.util.makeUrl=function(e,t){var n,s=o.basePath+e,r=[],a=o.cache();for(n in a)r.push(n+"="+encodeURIComponent(a[n]));for(n in t)r.push(n+"="+encodeURIComponent(t[n]));return o.state.customer_id&&(r.push("customer_id="+encodeURIComponent(o.state.customer_id)),r.push("customer_id_signature="+encodeURIComponent(o.state.customer_id_signature))),s+=(-1===s.indexOf("?")?"?":"&")+r.join("&")},o._initializeCallbacks=[],o.on=function(e,t){if("initialize"!==e)throw'Locksmith.on() currently only supports the "initialize" event';o._initializeCallbacks.push(t)},o.initializeSession=function(e){if(!o.isEmbedded){var t=!1,n=!0,s=!0;(e=e||{}).silent&&(s=n=!(t=!0)),o.ping({silent:t,spinner:n,reload:s,callback:function(){o._initializeCallbacks.forEach(function(e){e()})}})}},o.cache=function(e){var t={};try{var n=function r(e){return(document.cookie.match("(^|; )"+e+"=([^;]*)")||0)[2]};t=JSON.parse(decodeURIComponent(n("locksmith-params")||"{}"))}catch(u){}if(e){for(var s in e)t[s]=e[s];document.cookie="locksmith-params=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/",document.cookie="locksmith-params="+encodeURIComponent(JSON.stringify(t))+"; path=/"}return t},o.cache.cart=o.state.cart,o.cache.cartLastSaved=null,o.params=o.cache(),o.util.reload=function(){o.reloading=!0;try{window.location.href=window.location.href.replace(/#.*/,"")}catch(u){o.util.console.error("Preferred reload method failed",u),window.location.reload()}},o.cache.saveCart=function(e){if(!o.cache.cart||o.cache.cart===o.cache.cartLastSaved)return e?e():null;var t=o.cache.cartLastSaved;o.cache.cartLastSaved=o.cache.cart,reqwest({url:"/cart/update.json",method:"post",type:"json",data:{attributes:{locksmith:o.cache.cart}},complete:e,error:function(e){if(o.cache.cartLastSaved=t,!o.reloading)throw e}})},o.util.spinnerHTML='<style>body{background:#FFF}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}#loading{display:flex;width:100%;height:50vh;color:#777;align-items:center;justify-content:center}#loading .spinner{display:block;animation:spin 600ms linear infinite;position:relative;width:50px;height:50px}#loading .spinner-ring{stroke:currentColor;stroke-dasharray:100%;stroke-width:2px;stroke-linecap:round;fill:none}</style><div id="loading"><div class="spinner"><svg width="100%" height="100%"><svg preserveAspectRatio="xMinYMin"><circle class="spinner-ring" cx="50%" cy="50%" r="45%"></circle></svg></svg></div></div>',o.util.clobberBody=function(e){document.body.innerHTML=e},o.util.clobberDocument=function(e){e.responseText&&(e=e.responseText),document.documentElement&&document.removeChild(document.documentElement);var t=document.open("text/html","replace");t.writeln(e),t.close(),setTimeout(function(){var e=t.querySelector("[autofocus]");e&&e.focus()},100)},o.util.serializeForm=function(e){if(e&&"FORM"===e.nodeName){var t,n,s={};for(t=e.elements.length-1;0<=t;t-=1)if(""!==e.elements[t].name)switch(e.elements[t].nodeName){case"INPUT":switch(e.elements[t].type){default:case"text":case"hidden":case"password":case"button":case"reset":case"submit":s[e.elements[t].name]=e.elements[t].value;break;case"checkbox":case"radio":e.elements[t].checked&&(s[e.elements[t].name]=e.elements[t].value);break;case"file":}break;case"TEXTAREA":s[e.elements[t].name]=e.elements[t].value;break;case"SELECT":switch(e.elements[t].type){case"select-one":s[e.elements[t].name]=e.elements[t].value;break;case"select-multiple":for(n=e.elements[t].options.length-1;0<=n;n-=1)e.elements[t].options[n].selected&&(s[e.elements[t].name]=e.elements[t].options[n].value)}break;case"BUTTON":switch(e.elements[t].type){case"reset":case"submit":case"button":s[e.elements[t].name]=e.elements[t].value}}return s}},o.util.on=function(e,a,o,t){t=t||document;var i="locksmith-"+e+a,n=function(e){var t=e.target,n=e.target.parentElement,s=t.className.baseVal||t.className||"",r=n.className.baseVal||n.className||"";("string"==typeof s&&-1!==s.split(/\s+/).indexOf(a)||"string"==typeof r&&-1!==r.split(/\s+/).indexOf(a))&&!e[i]&&(e[i]=!0,o(e))};t.attachEvent?t.attachEvent(e,n):t.addEventListener(e,n,!1)},o.util.enableActions=function(e){o.util.on("click","locksmith-action",function(e){e.preventDefault();var t=e.target;t.dataset.confirmWith&&!confirm(t.dataset.confirmWith)||(t.disabled=!0,t.innerText=t.dataset.disableWith,o.post("/action",t.dataset.locksmithParams,{spinner:!1,type:"text",success:function(e){(e=JSON.parse(e.responseText)).message&&alert(e.message),o.util.reload()}}))},e)},o.util.inject=function(e,t){var n=["data","locksmith","append"];if(-1!==t.indexOf(n.join("-"))){var s=document.createElement("div");s.innerHTML=t,e.appendChild(s)}else e.innerHTML=t;var r,a,o=e.querySelectorAll("script");for(a=0;a<o.length;++a){r=o[a];var i=document.createElement("script");if(r.type&&(i.type=r.type),r.src)i.src=r.src;else{var l=document.createTextNode(r.innerHTML);i.appendChild(l)}e.appendChild(i)}var c=e.querySelector("[autofocus]");c&&c.focus()},o.post=function(e,t,n){!1!==(n=n||{}).spinner&&o.util.clobberBody(o.util.spinnerHTML);var s={};n.container===document?(s.layout=1,n.success=function(e){document.getElementById(n.container);o.util.clobberDocument(e)}):n.container&&(s.layout=0,n.success=function(e){var t=document.getElementById(n.container);o.util.inject(t,e),t.id===t.firstChild.id&&t.parentElement.replaceChild(t.firstChild,t)}),n.form_type&&(t.form_type=n.form_type),o.loading=!0;var r=o.util.makeUrl(e,s);reqwest({url:r,method:"post",type:n.type||"html",data:t,complete:function(){o.loading=!1},error:function(e){if(!o.reloading)if("dashboard.weglot.com"!==window.location.host){if(!n.silent)throw alert("Something went wrong! Please refresh and try again."),e;console.error(e)}else console.error(e)},success:n.success||o.util.clobberDocument})},o.postResource=function(e,t){e.path=o.path,e.search=window.location.search,e.state=o.state,e.passcode&&(e.passcode=e.passcode.trim()),e.email&&(e.email=e.email.trim()),e.state.cart=o.cache.cart,e.locksmith_json=o.jsonTag,e.locksmith_json_signature=o.jsonTagSignature,o.post("/resource",e,t)},o.ping=function(e){if(!o.isEmbedded){e=e||{};var t=function(){e.reload?o.util.reload():"function"==typeof e.callback&&e.callback()};o.post("/ping",{path:o.path,search:window.location.search,state:o.state},{spinner:!!e.spinner,silent:"undefined"==typeof e.silent||e.silent,type:"text",success:function(e){(e=JSON.parse(e.responseText)).messages&&0<e.messages.length&&o.showMessages(e.messages),e.cart&&o.cache.cart!==e.cart?(o.cache.cart=e.cart,o.cache.saveCart(function(){t(),e.cart&&e.cart.match(/^.+:/)&&o.util.reload()})):t()}})}},o.timeoutMonitor=function(){var e=o.cache.cart;o.ping({callback:function(){e!==o.cache.cart||setTimeout(function(){o.timeoutMonitor()},6e4)}})},o.showMessages=function(e){var t=document.createElement("div");t.style.position="fixed",t.style.left=0,t.style.right=0,t.style.bottom="-50px",t.style.opacity=0,t.style.background="#191919",t.style.color="#ddd",t.style.transition="bottom 0.2s, opacity 0.2s",t.style.zIndex=999999,t.innerHTML=" <style> .locksmith-ab .locksmith-b { display: none; } .locksmith-ab.toggled .locksmith-b { display: flex; } .locksmith-ab.toggled .locksmith-a { display: none; } .locksmith-flex { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 10px 20px; } .locksmith-message + .locksmith-message { border-top: 1px #555 solid; } .locksmith-message a { color: inherit; font-weight: bold; } .locksmith-message a:hover { color: inherit; opacity: 0.8; } a.locksmith-ab-toggle { font-weight: inherit; text-decoration: underline; } .locksmith-text { flex-grow: 1; } .locksmith-cta { flex-grow: 0; text-align: right; } .locksmith-cta button { transform: scale(0.8); transform-origin: left; } .locksmith-cta > * { display: block; } .locksmith-cta > * + * { margin-top: 10px; } .locksmith-message a.locksmith-close { flex-grow: 0; text-decoration: none; margin-left: 15px; font-size: 30px; font-family: monospace; display: block; padding: 2px 10px; } @media screen and (max-width: 600px) { .locksmith-wide-only { display: none !important; } .locksmith-flex { padding: 0 15px; } .locksmith-flex > * { margin-top: 5px; margin-bottom: 5px; } .locksmith-cta { text-align: left; } } @media screen and (min-width: 601px) { .locksmith-narrow-only { display: none !important; } } </style> "+e.map(function(e){return'<div class="locksmith-message">'+e+"</div>"}).join(""),document.body.appendChild(t),document.body.style.position="relative",document.body.parentElement.style.paddingBottom=t.offsetHeight+"px",setTimeout(function(){t.style.bottom=0,t.style.opacity=1},50),o.util.on("click","locksmith-ab-toggle",function(e){e.preventDefault();for(var t=e.target.parentElement;-1===t.className.split(" ").indexOf("locksmith-ab");)t=t.parentElement;-1!==t.className.split(" ").indexOf("toggled")?t.className=t.className.replace("toggled",""):t.className=t.className+" toggled"}),o.util.enableActions(t)}}()}();</script> <script data-locksmith>Locksmith.cache.cart=null</script> <script data-locksmith>Locksmith.jsonTag="\u003cscript type=\"application\/vnd.locksmith+json\" data-locksmith\u003e{\"version\":\"v160\",\"locked\":false,\"initialized\":true,\"scope\":\"blog\",\"access_granted\":true,\"access_denied\":false,\"requires_customer\":false,\"manual_lock\":false,\"remote_lock\":false,\"has_timeout\":false,\"remote_rendered\":null,\"hide_resource\":false,\"hide_links_to_resource\":false,\"transparent\":true,\"locks\":{\"all\":[],\"opened\":[]},\"keys\":[],\"keys_signature\":\"e59a4435124ef32df563f9003ec498bd5d4bc91f430ac9093fca154d559d02fa\",\"state\":{\"template\":\"blog\",\"theme\":142940897501,\"product\":null,\"collection\":null,\"page\":null,\"blog\":\"news\",\"article\":null,\"app\":null},\"now\":1732983870,\"path\":\"\\\/blogs\\\/news\",\"locale_root_url\":\"\\\/\",\"canonical_url\":\"https:\\\/\\\/forbitterforworse.com\\\/blogs\\\/news\",\"customer_id\":null,\"customer_id_signature\":\"e59a4435124ef32df563f9003ec498bd5d4bc91f430ac9093fca154d559d02fa\",\"cart\":null}\u003c\/script\u003e";Locksmith.jsonTagSignature="122453debc6e7dd7d32e5eee727a07097be233455ac00456e0b3e0af78a0ee0c"</script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=5"> <meta name="theme-color" content="#f998a6"> <!-- Network optimisations --> <link rel="preconnect" href="//cdn.shopify.com" crossorigin> <link rel="preconnect" href="//fonts.shopifycdn.com" crossorigin> <link rel="preload" as="style" href="//forbitterforworse.com/cdn/shop/t/96/assets/theme-critical.css?v=35702529168485253221719426550"><link rel="preload" as="script" href="//forbitterforworse.com/cdn/shop/t/96/assets/scrollreveal.min.js?v=163720458850474464051719426550"><link rel="preload" href="//forbitterforworse.com/cdn/fonts/chivo/chivo_n4.bf4dc1c0e4649d2f5a28281870307415c2a9c652.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=57ce3148d57e09586974a9391b55d086a33d077dc7887e7acda69bf5c37ef172" as="font" type="font/woff2" crossorigin> <link rel="preload" href="//forbitterforworse.com/cdn/fonts/zurich_extended/zurichextended_n4.b6aa1fcd46586f6b0821b3b5c436f52e1307af4d.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=a86fc1c594176aa1cf5c1184718a440e4d901cc312f7e139c55a9baa04aa5fa0" as="font" type="font/woff2" crossorigin> <link rel="canonical" href="https://forbitterforworse.com/blogs/news"> <link rel="shortcut icon" href="//forbitterforworse.com/cdn/shop/files/Monogram-FBFW_32x32.jpg?v=1662710621" type="image/png"> <!-- Title and description ================================================== --><title>Blog &ndash; For Bitter For Worse</title><meta name="description" content="Check back often for new drink recipes, suggested food pairings, exciting announcements, and more!"> <!-- /snippets/social-meta-tags.liquid --> <meta property="og:site_name" content="For Bitter For Worse"> <meta property="og:url" content="https://forbitterforworse.com/blogs/news"><meta property="og:title" content="Blog"> <meta property="og:type" content="website"> <meta property="og:description" content="Check back often for new drink recipes, suggested food pairings, exciting announcements, and more!"> <meta property="og:image" content="http://forbitterforworse.com/cdn/shop/files/Full-Line---Eva_s-Lead_1200x1200.jpg?v=1717986098"> <meta property="og:image:secure_url" content="https://forbitterforworse.com/cdn/shop/files/Full-Line---Eva_s-Lead_1200x1200.jpg?v=1717986098"> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Blog"> <meta name="twitter:description" content="Check back often for new drink recipes, suggested food pairings, exciting announcements, and more!"> <!-- JS before CSSOM =================================================== --> <script type="text/javascript"> theme = {}; theme.t = {}; theme.t.add_to_cart = 'Add to cart'; theme.t.sold_out = 'Sold Out'; theme.t.unavailable = 'Unavailable'; theme.money_format = '${{amount}}'; theme.map = {}; theme.map_settings_url="//forbitterforworse.com/cdn/shop/t/96/assets/map_settings.min.js?v=55973849163231613841719426550"; theme.cart_type = 'notification'; theme.cart_ajax = true; theme.routes = { rootUrl: "/", rootUrlSlash: "/", cartUrl: "/cart", cartAddUrl: "/cart/add", cartChangeUrl: "/cart/change" }; theme.assets = { plyr: "//forbitterforworse.com/cdn/shop/t/96/assets/plyr.min.js?v=4209607025050129391719426550", masonry: "//forbitterforworse.com/cdn/shop/t/96/assets/masonry.min.js?v=52946867241060388171719426550", photoswipe: "//forbitterforworse.com/cdn/shop/t/96/assets/photoswipe.min.js?v=25365026511866153621719426550", fecha: "//forbitterforworse.com/cdn/shop/t/96/assets/fecha.min.js?v=77892649025288305351719426550" }; </script> <style id="fontsupporttest">@font-face{font-family:"font";src:url("https://")}</style> <script type="text/javascript"> function supportsFontFace() { function blacklist() { var match = /(WebKit|windows phone.+trident)\/(\d+)/i.exec(navigator.userAgent); return match && parseInt(match[2], 10) < (match[1] == 'WebKit' ? 533 : 6); } function hasFontFaceSrc() { var style = document.getElementById('fontsupporttest'); var sheet = style.sheet || style.styleSheet; var cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; return /src/i.test(cssText); } return !blacklist() && hasFontFaceSrc(); } document.documentElement.classList.replace('no-js', 'js'); if (window.matchMedia("(pointer: coarse)").matches) {document.documentElement.classList.add('touchevents')} else {document.documentElement.classList.add('no-touchevents')} if (supportsFontFace()) {document.documentElement.classList.add('fontface')} </script> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/jquery.min.js?v=115860211936397945481719426550" defer="defer"></script> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/vendor.min.js?v=107625413123165081331719426550" defer="defer"></script> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/ajax-cart.js?v=37901964180162130691719426550" defer="defer"></script> <!-- CSS ================================================== --> <style data-shopify> :root { --color--brand: #f998a6; --color--brand-dark: #f88091; --color--brand-light: #fab0bb; --color--accent: #ad2542; --color--accent-dark: #98213a; --color--link: #ffffff; --color--link-dark: #ea0e2e; --color--text: #212121; --color--text-light: rgba(33, 33, 33, 0.7); --color--text-lighter: rgba(33, 33, 33, 0.55); --color--text-lightest: rgba(33, 33, 33, 0.2); --color--text-bg: rgba(33, 33, 33, 0.1); --color--text-bg: rgba(33, 33, 33, 0.1); --color--headings: #212121; --color--alt-text: #ffffff; --color--btn: #212121; --color--product-bg: rgba(0,0,0,0); --color--product-sale: #c00000; --color--drawer-bg: #f998a6; --color--bg: #ffffff; --color--bg-alpha: rgba(255, 255, 255, 0.8); --color--bg-light: #ffffff; --color--bg-dark: #f2f2f2; --color--drop-shadow: rgba(42, 42, 42, 0.21); --font--size-base: 14.0; --font--line-base: 30; --font--size-h1: 35; --font--size-h2: 28; --font--size-h3: 23; --font--size-h4: 21; --font--size-h5: 18; --font--size-h6: 14.0; --font--size-grid: 18; --font--size-nav: 13; --font--body: Chivo, sans-serif; --font--body-style: normal; --font--body-weight: 400; --font--title: "Zurich Extended", sans-serif; --font--title-weight: 400; --font--title-style: normal; --font--title-space: 1px; --font--title-transform: normal; --font--title-border: 1; --font--title-border-size: 3px; --font--button: "Zurich Extended", sans-serif; --font--button-weight: 400; --font--button-style: normal; --font--button-space: 1px; --font--button-transform: uppercase; --font--button-size: 13; --font--button-mobile-size: 12px; } </style> <style>@font-face { font-family: Chivo; font-weight: 400; font-style: normal; font-display: swap; src: url("//forbitterforworse.com/cdn/fonts/chivo/chivo_n4.bf4dc1c0e4649d2f5a28281870307415c2a9c652.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=57ce3148d57e09586974a9391b55d086a33d077dc7887e7acda69bf5c37ef172") format("woff2"), url("//forbitterforworse.com/cdn/fonts/chivo/chivo_n4.c44f905e08fb3fb913ad750486da37926e77c01e.woff?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=ca43c0bedf870224e0d1b1b2b11bc34476039de26f42533177aa006bec344eb2") format("woff"); } @font-face { font-family: "Zurich Extended"; font-weight: 400; font-style: normal; font-display: swap; src: url("//forbitterforworse.com/cdn/fonts/zurich_extended/zurichextended_n4.b6aa1fcd46586f6b0821b3b5c436f52e1307af4d.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=a86fc1c594176aa1cf5c1184718a440e4d901cc312f7e139c55a9baa04aa5fa0") format("woff2"), url("//forbitterforworse.com/cdn/fonts/zurich_extended/zurichextended_n4.587bf053ea4f270aea46650a576d1802cc2c351a.woff?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=bee0f1aba6ba5464650db49f907e5f0a74546f2dbfa48d44c1fdeedaf25909b5") format("woff"); } @font-face { font-family: Chivo; font-weight: 700; font-style: normal; font-display: swap; src: url("//forbitterforworse.com/cdn/fonts/chivo/chivo_n7.d83b4aaa520af8b24ea0f1eb81a6d2d8b1a2ad49.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=b9144cbeeae73cf71977a3c57895e1058189fa05c43b934b36f5725f5ee48850") format("woff2"), url("//forbitterforworse.com/cdn/fonts/chivo/chivo_n7.ca33be8a8668a1a14638e19419769677d3ae8d49.woff?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=1348c0fd3db4791ee1c960b632813e4c765bc807fadbdc220dccfd1bc23b5ee2") format("woff"); } @font-face { font-family: Chivo; font-weight: 400; font-style: italic; font-display: swap; src: url("//forbitterforworse.com/cdn/fonts/chivo/chivo_i4.470484818143ea189f363c3f40b1b964b6f9b99a.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=b27ab3d3c24fb9ae933ba466f60b05d14f0fdc968a9b4535c745e0fa5b36327a") format("woff2"), url("//forbitterforworse.com/cdn/fonts/chivo/chivo_i4.200ce5592d4f6e30c5616533857fb75f86392d06.woff?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=629095fc2b7795278b2ec53e13b525591074df1c786911fa2af7293366b6c822") format("woff"); } @font-face { font-family: Chivo; font-weight: 700; font-style: italic; font-display: swap; src: url("//forbitterforworse.com/cdn/fonts/chivo/chivo_i7.29b3e3bf6a0a27a521a72b1c0827afe238bbc3c2.woff2?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=b319532e334e85ab19a3723c94261608d7d4a2f6557f9f6ad455086be3ee96bb") format("woff2"), url("//forbitterforworse.com/cdn/fonts/chivo/chivo_i7.a5526f7fe5855e716c95dfc91ed717abaf648aae.woff?h1=Zm9yYml0dGVyZm9yd29yc2UuY29t&h2=Zm9yLWJpdHRlci1mb3Itd29yc2UuYWNjb3VudC5teXNob3BpZnkuY29t&hmac=adfd9b751fd0abdba041c66c321494680b1d65a452baf59842cbc4f13f521c1e") format("woff"); } </style> <link rel="stylesheet" href="//forbitterforworse.com/cdn/shop/t/96/assets/theme-critical.css?v=35702529168485253221719426550"> <link rel="preload" href="//forbitterforworse.com/cdn/shop/t/96/assets/theme.css?v=58868874327977602891719426550" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="//forbitterforworse.com/cdn/shop/t/96/assets/theme.css?v=58868874327977602891719426550"></noscript> <script> /*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */ (function(w){"use strict";if(!w.loadCSS){w.loadCSS=function(){}}var rp=loadCSS.relpreload={};rp.support=(function(){var ret;try{ret=w.document.createElement("link").relList.supports("preload")}catch(e){ret=false}return function(){return ret}})();rp.bindMediaToggle=function(link){var finalMedia=link.media||"all";function enableStylesheet(){if(link.addEventListener){link.removeEventListener("load",enableStylesheet)}else if(link.attachEvent){link.detachEvent("onload",enableStylesheet)}link.setAttribute("onload",null);link.media=finalMedia}if(link.addEventListener){link.addEventListener("load",enableStylesheet)}else if(link.attachEvent){link.attachEvent("onload",enableStylesheet)}setTimeout(function(){link.rel="stylesheet";link.media="only x"});setTimeout(enableStylesheet,3000)};rp.poly=function(){if(rp.support()){return}var links=w.document.getElementsByTagName("link");for(var i=0;i<links.length;i+=1){var link=links[i];if(link.rel==="preload"&&link.getAttribute("as")==="style"&&!link.getAttribute("data-loadcss")){link.setAttribute("data-loadcss",true);rp.bindMediaToggle(link)}}};if(!rp.support()){rp.poly();var run=w.setInterval(rp.poly,500);if(w.addEventListener){w.addEventListener("load",function(){rp.poly();w.clearInterval(run)})}else if(w.attachEvent){w.attachEvent("onload",function(){rp.poly();w.clearInterval(run)})}}if(typeof exports!=="undefined"){exports.loadCSS=loadCSS}else{w.loadCSS=loadCSS}}(typeof global!=="undefined"?global:this)); </script> <!-- JS after CSSOM=================================================== --> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/theme.min.js?v=116675827242693986661719426550" defer="defer"></script> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/custom.js?v=152733329445290166911719426550" defer="defer"></script> <script src="//forbitterforworse.com/cdn/shop/t/96/assets/scrollreveal.min.js?v=163720458850474464051719426550"></script> <!-- Header hook for plugins ================================================== --> <script src="https://smarteucookiebanner.upsell-apps.com/gdpr_adapter.js?shop=for-bitter-for-worse.myshopify.com" type="application/javascript"></script> <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta name="google-site-verification" content="O_mBXHkwfloeaH5_59RJnM1anaa8ZDwtHabWAu2MVAo"> <meta name="google-site-verification" content="gY3LReMD4BodeaopYgjmHgh7o_Ldz5fyO8DgQtC4fx4"> <meta name="facebook-domain-verification" content="q2lfj4xvx3rtcnk3lap3lfiue8l3s4"> <meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/31608897672/digital_wallets/dialog"> <meta name="shopify-checkout-api-token" content="cce30230b039e2586c0ab58a0c93caff"> <meta id="in-context-paypal-metadata" data-shop-id="31608897672" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD"> <link rel="alternate" type="application/atom+xml" title="Feed" href="/blogs/news.atom" /> <link rel="next" href="/blogs/news?page=2"> <script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script> <link rel="preconnect" href="https://shop.app" crossorigin="anonymous"> <script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=31608897672" crossorigin="anonymous"></script> <script id="apple-pay-shop-capabilities" type="application/json">{"shopId":31608897672,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/31608897672","merchantName":"For Bitter For Worse","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"For Bitter For Worse","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script> <script id="shopify-features" type="application/json">{"accessToken":"cce30230b039e2586c0ab58a0c93caff","betas":["rich-media-storefront-analytics"],"domain":"forbitterforworse.com","predictiveSearch":true,"shopId":31608897672,"smart_payment_buttons_url":"https:\/\/forbitterforworse.com\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/spb.en.js","dynamic_checkout_cart_url":"https:\/\/forbitterforworse.com\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/dynamic-checkout-cart.en.js","locale":"en"}</script> <script>var Shopify = Shopify || {}; Shopify.shop = "for-bitter-for-worse.myshopify.com"; Shopify.locale = "en"; Shopify.currency = {"active":"USD","rate":"1.0"}; Shopify.country = "US"; Shopify.theme = {"name":"Venue - Live - 7\/5\/24","id":142940897501,"schema_name":"Venue","schema_version":"7.0.2","theme_store_id":836,"role":"main"}; Shopify.theme.handle = "null"; Shopify.theme.style = {"id":null,"handle":null}; Shopify.cdnHost = "forbitterforworse.com/cdn"; Shopify.routes = Shopify.routes || {}; Shopify.routes.root = "/";</script> <script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script> <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> <script>window.ShopifyPay = window.ShopifyPay || {}; window.ShopifyPay.apiHost = "shop.app\/pay";</script> <script id="shop-js-analytics" type="application/json">{"pageType":"blog"}</script> <script> window.Shopify = window.Shopify || {}; if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; window.Shopify.featureAssets['shop-js'] = {"login-button":["modules/client.login-button_PyB0yoLG.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js"],"shop-pay-payment-request":["modules/client.shop-pay-payment-request_BSPYpBgE.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js","modules/client.login-button_PyB0yoLG.en.esm.js","modules/chunk.shop-pay_DNi9j_X8.esm.js"],"payment-terms":["modules/client.payment-terms_BF5x7ymI.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js","modules/client.login-button_PyB0yoLG.en.esm.js"],"pay-button":["modules/client.pay-button_Cc3hmsbn.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js"],"discount-app":["modules/client.discount-app_Dl148wJa.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js"],"avatar":["modules/client.avatar_BTnouDA3.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/client.init-shop-for-new-customer-accounts_BXLde5-4.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js","modules/client.login-button_PyB0yoLG.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/client.init-shop-email-lookup-coordinator_CSM1j0yH.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js"],"init-customer-accounts-sign-up":["modules/client.init-customer-accounts-sign-up_BDGFEblG.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js","modules/client.login-button_PyB0yoLG.en.esm.js"],"init-customer-accounts":["modules/client.init-customer-accounts_CO51Msyl.en.esm.js","modules/chunk.common_Ckk3SCTm.esm.js","modules/client.login-button_PyB0yoLG.en.esm.js"]}; </script> <script>(function() { function asyncLoad() { var urls = ["\/\/d1liekpayvooaz.cloudfront.net\/apps\/customizery\/customizery.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/swymv3free-01.azureedge.net\/code\/swym-shopify.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/cdn.giftship.app\/build\/storefront\/giftship.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/app.sixads.net\/sixads.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/static.shareasale.com\/json\/shopify\/deduplication.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/smarteucookiebanner.upsell-apps.com\/script_tag.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/shopify-widget.route.com\/shopify.widget.js?shop=for-bitter-for-worse.myshopify.com","\/\/cdn.shopify.com\/proxy\/d4ba75523b358c44e1f94df582f1e3ee80505efda7f78d8f85027ed8dcdd2e60\/storage.googleapis.com\/adnabu-shopify\/online-store\/e60ca0260b2144e5b41541361706642560.min.js?shop=for-bitter-for-worse.myshopify.com\u0026sp-cache-control=cHVibGljLCBtYXgtYWdlPTkwMA","https:\/\/amaicdn.com\/storelocator-prod\/stockist-form\/for-bitter-for-worse-1709627487.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/cdn1.judge.me\/assets\/installed.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/amaicdn.com\/storelocator-prod\/setting\/for-bitter-for-worse-1732290728.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/amaicdn.com\/storelocator-prod\/wtb\/for-bitter-for-worse-1732290728.js?shop=for-bitter-for-worse.myshopify.com"]; for (var i = 0; i < urls.length; i++) { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = urls[i]; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } }; if(window.attachEvent) { window.attachEvent('onload', asyncLoad); } else { window.addEventListener('load', asyncLoad, false); } })();</script> <script id="__st">var __st={"a":31608897672,"offset":-28800,"reqid":"899ccfda-a888-4f90-9ec9-9075407f4ba3-1732983870","pageurl":"forbitterforworse.com\/blogs\/news","s":"blogs-53986525320","u":"501971190fb1","p":"blog","rtyp":"blog","rid":53986525320};</script> <script>window.ShopifyPaypalV4VisibilityTracking = true;</script> <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(',');function s(t,e,n=!1){try{const o=window.sessionStorage;for(const[n,c]of Object.entries(JSON.parse(o.getItem(e))))t.elements[n]&&(t.elements[n].value=c);n&&o.removeItem(e)}catch{}}const a='form_key',i=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response','password'],u=()=>{try{return window.sessionStorage}catch{return}},m=t=>t.elements[a],f='form_type',d='cptcha';function p(t){t.dataset[d]=!0}const l=window,h=l.document,_='Shopify',y='ce_forms',E='captcha';let v=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe','https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js',T={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=l[_][y],c=o.bindForm;if(c)return c(t,g,e,T).then(n);o.q.push([[t,g,e,T],n]),v||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:'https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js'})),v=!0)});var g,T;l[_]=l[_]||{},l[_][y]=l[_][y]||{},l[_][y].q=[],l[_][E]=l[_][E]||{},l[_][E].protect=function(t,e){n(t,void 0,e),p(t)},Object.freeze(l[_][E]),function(t,e,n,l,h,_){const[y,E,v,g]=function(t,e,n){const s=e?o:[],a=t?c:[],i=[...s,...a],u=[...o],m=r(i),f=r(s),d=n&&r(i.filter((([t,e])=>n.includes(e)))),p=r(u),l=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];return[l(m),l(f),l(d),l(p)]}(l,h,_),T=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},S=t=>y().includes(t);t.addEventListener('submit',(t=>{const e=T(t);if(!e)return;const n=S(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=m(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!u())return;!function(t){const e=u();if(!e)return;const n=m(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){m(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:a})),t.elements[a].value=e}(t,e),function(t,e){const n=u();if(!n)return;const o=[...t.querySelectorAll('input[type="password"]')].map((({name:t})=>t)),c=[...i,...o],r={};for(const[s,a]of new FormData(t).entries())c.includes(s)||(r[s]=a);n.setItem(e,JSON.stringify(r))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const w=(t,e)=>{t&&!t.dataset[d]&&(n(t,e.some((e=>e===t))),p(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=T(t);S(e)&&w(e,E())}));const A=e.get('form_key'),b=e.get(f),I=A&&b;t.addEventListener('DOMContentLoaded',(()=>{const t=E();if(I)for(const e of t)e.elements[f].value===b&&s(e,A);[...new Set([...v(),...y().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>w(e,t)))}))}(h,new URLSearchParams(l.location.search),n,!0,!0,['guest_login'])})()}();</script> <script integrity="sha256-EGCDRYTvIEOXsReXgqGwkAR+5Dl8tickSrieA/ZcQwc=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//forbitterforworse.com/cdn/shopifycloud/shopify/assets/storefront/load_feature-1060834584ef204397b1179782a1b090047ee4397cb627244ab89e03f65c4307.js" crossorigin="anonymous"></script> <script crossorigin="anonymous" defer="defer" src="//forbitterforworse.com/cdn/shopifycloud/shopify/assets/shopify_pay/storefront-80e528be853eac23af2454534897ca9536b1d3d04aa043b042f34879a3c111c8.js?v=20220906"></script> <script integrity="sha256-HAs5a9TQVLlKuuHrahvWuke+s1UlxXohfHeoYv8G2D8=" data-source-attribution="shopify.dynamic-checkout" defer="defer" src="//forbitterforworse.com/cdn/shopifycloud/shopify/assets/storefront/features-1c0b396bd4d054b94abae1eb6a1bd6ba47beb35525c57a217c77a862ff06d83f.js" crossorigin="anonymous"></script> <style id="shopify-dynamic-checkout-cart">@media screen and (min-width: 750px) { #dynamic-checkout-cart { min-height: 50px; } } @media screen and (max-width: 750px) { #dynamic-checkout-cart { min-height: 240px; } } </style><script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script> <link rel="stylesheet" href="https://use.typekit.net/lls8ban.css"> <!-- Hotjar Tracking Code for https://www.forbitterforworse.com --> <script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:3166518,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); </script> <script defer> /** * IMPORTANT! * Do not edit this file. Any changes made could be overwritten by Giftship at * any time. If you need assistance, please reach out to us at support@gist-apps.com. * * The below code is critical to the functionality of Giftship's multiple shipping * address and bundle features. It also greatly improves the load time of the * application. */ if (typeof(GIST) == 'undefined') { window.GIST = GIST = {}; } if (typeof(GIST.f) == 'undefined') { GIST.f = {}; } GIST.f._isEmpty = function(obj){ for(var prop in obj) { if(obj.hasOwnProperty(prop)) { return false; } } return JSON.stringify(obj) === JSON.stringify({}); }; GIST.bundles = []; GIST.remove = {}; GIST.discounts = []; GIST._bundleCart = false; if (GIST.remove && !GIST.f._isEmpty(GIST.remove) ) { GIST.xhr = new XMLHttpRequest(); GIST.xhr.open('POST', Shopify.routes.root + 'cart/update.js'); GIST.xhr.setRequestHeader('Content-Type', 'application/json'); GIST.xhr.onload = function() { if (GIST.xhr.status === 200 && window.performance) { var navEntries = window.performance.getEntriesByType('navigation'); if (navEntries.length > 0 && navEntries[0].type === 'back_forward') { location.reload(); } else if (window.performance.navigation && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD) { location.reload(); } } }; GIST.xhr.send(JSON.stringify({updates:GIST.remove})); } </script> <script> var appEnvironment = 'storelocator-prod'; var shopHash = 'ae9943a767eb6ecf09728f454f80df1e'; </script> <!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> <link rel="dns-prefetch" href="https://cdn.judge.me"> <script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"badge_no_review_text":"No reviews","badge_n_reviews_text":"({{ n }})","badge_star_color":"#F9CD41","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Customer Reviews","widget_open_form_text":"Write a review","widget_close_form_text":"Cancel review","widget_refresh_page_text":"Refresh page","widget_summary_text":"Based on {{ number_of_reviews }} review/reviews","widget_no_review_text":"Be the first to write a review","widget_name_field_text":"Name","widget_verified_name_field_text":"Verified Name (public)","widget_name_placeholder_text":"Enter your name (public)","widget_required_field_error_text":"This field is required.","widget_email_field_text":"Email","widget_verified_email_field_text":"Verified Email (private, can not be edited)","widget_email_placeholder_text":"Enter your email (private)","widget_email_field_error_text":"Please enter a valid email address.","widget_rating_field_text":"Rating","widget_review_title_field_text":"Review Title","widget_review_title_placeholder_text":"Give your review a title","widget_review_body_field_text":"Review","widget_review_body_placeholder_text":"Write your comments here","widget_pictures_field_text":"Picture/Video (optional)","widget_submit_review_text":"Submit Review","widget_submit_verified_review_text":"Submit Verified Review","widget_submit_success_msg_with_auto_publish":"Thank you! Please refresh the page in a few moments to see your review. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_submit_success_msg_no_auto_publish":"Thank you! Your review will be published as soon as it is approved by the shop admin. You can remove or edit your review by logging into \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e","widget_show_default_reviews_out_of_total_text":"Showing {{ n_reviews_shown }} out of {{ n_reviews }} reviews.","widget_show_all_link_text":"Show all","widget_show_less_link_text":"Show less","widget_author_said_text":"{{ reviewer_name }} said:","widget_days_text":"{{ n }} days ago","widget_weeks_text":"{{ n }} week/weeks ago","widget_months_text":"{{ n }} month/months ago","widget_years_text":"{{ n }} year/years ago","widget_yesterday_text":"Yesterday","widget_today_text":"Today","widget_replied_text":"\u003e\u003e {{ shop_name }} replied:","widget_read_more_text":"Read more","widget_rating_filter_see_all_text":"See all reviews","widget_sorting_most_recent_text":"Most Recent","widget_sorting_highest_rating_text":"Highest Rating","widget_sorting_lowest_rating_text":"Lowest Rating","widget_sorting_with_pictures_text":"Only Pictures","widget_sorting_most_helpful_text":"Most Helpful","widget_open_question_form_text":"Ask a question","widget_reviews_subtab_text":"Reviews","widget_questions_subtab_text":"Questions","widget_question_label_text":"Question","widget_answer_label_text":"Answer","widget_question_placeholder_text":"Write your question here","widget_submit_question_text":"Submit Question","widget_question_submit_success_text":"Thank you for your question! We will notify you once it gets answered.","widget_star_color":"#F9CD41","verified_badge_text":"Verified","verified_badge_placement":"left-of-reviewer-name","widget_hide_border":false,"widget_social_share":false,"all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(out of store)","all_reviews_product_name_prefix_text":"about","enable_review_pictures":true,"widget_product_reviews_subtab_text":"Product Reviews","widget_shop_reviews_subtab_text":"Shop Reviews","widget_sorting_pictures_first_text":"Pictures First","floating_tab_button_name":"★ Judge.me Reviews","floating_tab_title":"Let customers speak for us","floating_tab_url":"","floating_tab_url_enabled":false,"all_reviews_text_badge_text":"Customers rate us {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 based on {{ shop.metafields.judgeme.all_reviews_count }} reviews.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} out of 5 stars based on {{ shop.metafields.judgeme.all_reviews_count }} reviews","all_reviews_text_badge_url":"","all_reviews_text_style":"branded","featured_carousel_title":"Let customers speak for us","featured_carousel_count_text":"from {{ n }} reviews","featured_carousel_url":"","verified_count_badge_style":"branded","verified_count_badge_url":"","picture_reminder_submit_button":"Upload Pictures","widget_sorting_videos_first_text":"Videos First","widget_review_pending_text":"Pending","remove_microdata_snippet":true,"preview_badge_no_question_text":"No questions","preview_badge_n_question_text":"{{ number_of_questions }} question/questions","remove_judgeme_branding":true,"widget_search_bar_placeholder":"Search reviews","widget_sorting_verified_only_text":"Verified only","featured_carousel_verified_badge_enable":true,"featured_carousel_more_reviews_button_text":"Read more reviews","featured_carousel_view_product_button_text":"View product","all_reviews_page_load_more_text":"Load More Reviews","widget_advanced_speed_features":5,"widget_public_name_text":"displayed publicly like","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonymous","medals_widget_title":"Judge.me Review Medals","widget_invalid_yt_video_url_error_text":"Not a YouTube video URL","widget_max_length_field_error_text":"Please enter no more than {0} characters.","widget_verified_by_shop_text":"Verified by Shop","widget_load_with_code_splitting":true,"widget_ugc_title":"Made by us, Shared by you","widget_ugc_subtitle":"Tag us to see your picture featured in our page","widget_ugc_primary_button_text":"Buy Now","widget_ugc_secondary_button_text":"Load More","widget_ugc_reviews_button_text":"View Reviews","widget_primary_color":"#F9CD41","widget_summary_average_rating_text":"{{ average_rating }} out of 5","widget_media_grid_title":"Customer photos \u0026 videos","widget_media_grid_see_more_text":"See more","widget_verified_by_judgeme_text":"Verified by Judge.me","widget_verified_by_judgeme_text_in_store_medals":"Verified by Judge.me","widget_media_field_exceed_quantity_message":"Sorry, we can only accept {{ max_media }} for one review.","widget_media_field_exceed_limit_message":"{{ file_name }} is too large, please select a {{ media_type }} less than {{ size_limit }}MB.","widget_review_submitted_text":"Review Submitted!","widget_question_submitted_text":"Question Submitted!","widget_close_form_text_question":"Cancel","widget_write_your_answer_here_text":"Write your answer here","widget_show_collected_by_judgeme":true,"widget_collected_by_judgeme_text":"collected by Judge.me","widget_load_more_text":"Load More","widget_full_review_text":"Full Review","widget_read_more_reviews_text":"Read More Reviews","widget_read_questions_text":"Read Questions","widget_questions_and_answers_text":"Questions \u0026 Answers","widget_verified_by_text":"Verified by","widget_number_of_reviews_text":"{{ number_of_reviews }} reviews","widget_back_button_text":"Back","widget_next_button_text":"Next","widget_custom_forms_filter_button":"Filters","how_reviews_are_collected":"How reviews are collected?","widget_gdpr_statement":"How we use your data: We’ll only contact you about the review you left, and only if necessary. By submitting your review, you agree to Judge.me’s \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eterms\u003c/a\u003e, \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eprivacy\u003c/a\u003e and \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003econtent\u003c/a\u003e policies.","platform":"shopify","branding_url":"https://judge.me/reviews","branding_text":"Powered by Judge.me","locale":"en","reply_name":"For Bitter For Worse","widget_version":"3.0","footer":true,"autopublish":true,"review_dates":true,"enable_custom_form":false,"can_be_branded":true};</script> <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color:#F9CD41;--jdgm-secondary-color:rgba(249,205,65,0.1);--jdgm-star-color:#F9CD41;--jdgm-write-review-text-color:white;--jdgm-write-review-bg-color:#F9CD41;--jdgm-paginate-color:#F9CD41;--jdgm-border-radius:0}.jdgm-histogram__bar-content{background-color:#F9CD41}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#F9CD41}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"See more"}}.jdgm-preview-badge .jdgm-star.jdgm-star{color:#F9CD41}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__replier:before{content:'forbitterforworse.com'}.jdgm-rev__prod-link-prefix:before{content:'about'}.jdgm-rev__out-of-store-text:before{content:'(out of store)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important} </style> <style class='jdgm-miracle-styles'> @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-prev-badge{display:block !important} </style> <script data-cfasync='false' class='jdgm-script'> !function(e){window.jdgm=window.jdgm||{},jdgm.CDN_HOST="https://cdn.judge.me/", jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ !o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), (a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; t.onreadystatechange=function(){4===t.readyState&&(Function(t.response)(),d&&d(t.response))}, t.open("GET",e),t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll( ".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_HOST+"widget_v3/base.css"): jdgm.loadCSS(jdgm.CDN_HOST+"widget/base.css"):jdgm.loadCSS(jdgm.CDN_HOST+"shopify_v2.css"), jdgm.loadJS(jdgm.CDN_HOST+"loader.js"))}))}(document); </script> <noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.judge.me/shopify_v2.css"></noscript> <!-- BEGIN app snippet: theme_fix_tags --><script> (function() { var jdgmThemeFixes = null; if (!jdgmThemeFixes) return; var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; if (!thisThemeFix) return; if (thisThemeFix.html) { document.addEventListener("DOMContentLoaded", function() { var htmlDiv = document.createElement('div'); htmlDiv.classList.add('jdgm-theme-fix-html'); htmlDiv.innerHTML = thisThemeFix.html; document.body.append(htmlDiv); }); }; if (thisThemeFix.css) { var styleTag = document.createElement('style'); styleTag.classList.add('jdgm-theme-fix-style'); styleTag.innerHTML = thisThemeFix.css; document.head.append(styleTag); }; if (thisThemeFix.js) { var scriptTag = document.createElement('script'); scriptTag.classList.add('jdgm-theme-fix-script'); scriptTag.innerHTML = thisThemeFix.js; document.head.append(scriptTag); }; })(); </script> <!-- END app snippet --> <!-- End of Judge.me Core --> <!-- END app app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 --> <script async src="https://static.klaviyo.com/onsite/js/H8meeg/klaviyo.js?company_id=H8meeg"></script> <script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script> <script> window.klaviyoReviewsProductDesignMode = false </script> <!-- END app app block --><link href="https://cdn.shopify.com/extensions/84393f6e-743b-4271-8a09-47b3dd80c2db/snicketts-gifting-promos-14/assets/index.css" rel="stylesheet" type="text/css" media="all"> <link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch"> <script>(function(){if ("sendBeacon" in navigator && "performance" in window) {var session_token = document.cookie.match(/_shopify_s=([^;]*)/);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: 31608897672,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token: session_token && session_token.length === 2 ? session_token[1] : "",page_type: "blog"};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> <script id="web-pixels-manager-setup">(function d(d,e,r,a,n){var o,i,t,s,l=(i=(o={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:?[ /-](12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[89]|1[3-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:?[ /-](12[89]|1[3-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(12[7-9]|1[3-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(12[89]|1[3-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,t=o.legacy,s=navigator.userAgent,i.test(s)?"modern":(t.test(s),"legacy"));window.Shopify=window.Shopify||{};var c=window.Shopify;c.analytics=c.analytics||{};var u=c.analytics;u.replayQueue=[],u.publish=function(d,e,r){return u.replayQueue.push([d,e,r]),!0};try{self.performance.mark("wpm:start")}catch(d){}var h=[r,"/wpm","/b",n,l.substring(0,1),".js"].join("");!function(d){var e=d.src,r=d.async,a=void 0===r||r,n=d.onload,o=d.onerror,i=document.createElement("script"),t=document.head,s=document.body;i.async=a,i.src=e,n&&i.addEventListener("load",n),o&&i.addEventListener("error",o),t?t.appendChild(i):s?s.appendChild(i):console.error("Did not find a head or body element to append the script")}({src:h,async:!0,onload:function(){var r=window.webPixelsManager.init(d);e(r);var a=window.Shopify.analytics;a.replayQueue.forEach((function(d){var e=d[0],a=d[1],n=d[2];r.publishCustomEvent(e,a,n)})),a.replayQueue=[],a.publish=r.publishCustomEvent,a.visitor=r.visitor},onerror:function(){var e=d.storefrontBaseUrl.replace(/\/$/,""),r="".concat(e,"/.well-known/shopify/monorail/unstable/produce_batch"),n=JSON.stringify({metadata:{event_sent_at_ms:(new Date).getTime()},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:a||"latest",bundle_target:l,page_url:self.location.href,status:"failed",surface:d.surface,error_msg:"".concat(h," has failed to load")},metadata:{event_created_at_ms:(new Date).getTime()}}]});try{if(self.navigator.sendBeacon.bind(self.navigator)(r,n))return!0}catch(d){}var o=new XMLHttpRequest;try{return o.open("POST",r,!0),o.setRequestHeader("Content-Type","text/plain"),o.send(n),!0}catch(d){console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging a load error.")}return!1}})})({shopId: 31608897672,storefrontBaseUrl: "https://forbitterforworse.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",surface: "storefront-renderer",enabledBetaFlags: [],webPixelsConfigList: [{"id":"485523677","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-S5X3RJHSPX\\\",\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"afe7c2de16587d6c6689522527d6c67f","type":"APP","apiClientId":1780363,"privacyPurposes":[]},{"id":"162431197","configuration":"{\"pixel_id\":\"2915935288522126\",\"pixel_type\":\"facebook_pixel\",\"metaapp_system_user_token\":\"-\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"8d894c63179843e74a9691414b5ad83d","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"65372381","configuration":"{\"tagID\":\"2613476909479\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4fd0680eed907adaf3f85849c393d688","type":"APP","apiClientId":3009811,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0220","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0220","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"For Bitter For Worse","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"for-bitter-for-worse.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/forbitterforworse.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"purchasingCompany":null},},function pageEvents(webPixelsManagerAPI) {webPixelsManagerAPI.publish("page_viewed", {});},"https://forbitterforworse.com/cdn","1518c2ba4d2b3301a1e3cb6576947ef22edf7bb6","3c762e5aw5b983e43pc2dc4883m545d5a27",);</script> <script>window.ShopifyAnalytics = window.ShopifyAnalytics || {}; window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; window.ShopifyAnalytics.meta.currency = 'USD'; var meta = {"page":{"pageType":"blog","resourceType":"blog","resourceId":53986525320}}; for (var attr in meta) { window.ShopifyAnalytics.meta[attr] = meta[attr]; }</script> <script>window.ShopifyAnalytics.merchantGoogleAnalytics = function() { }; </script> <script class="analytics">(window.gaDevIds=window.gaDevIds||[]).push('BwiEti'); (function () { var customDocumentWrite = function(content) { var jquery = null; if (window.jQuery) { jquery = window.jQuery; } else if (window.Checkout && window.Checkout.$) { jquery = window.Checkout.$; } if (jquery) { jquery('body').append(content); } }; var hasLoggedConversion = function(token) { if (token) { return document.cookie.indexOf('loggedConversion=' + token) !== -1; } return false; } var setCookieIfConversion = function(token) { if (token) { var twoMonthsFromNow = new Date(Date.now()); twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; } } var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; if (trekkie.integrations) { return; } trekkie.methods = [ 'identify', 'page', 'ready', 'track', 'trackForm', 'trackLink' ]; trekkie.factory = function(method) { return function() { var args = Array.prototype.slice.call(arguments); args.unshift(method); trekkie.push(args); return trekkie; }; }; for (var i = 0; i < trekkie.methods.length; i++) { var key = trekkie.methods[i]; trekkie[key] = trekkie.factory(key); } trekkie.load = function(config) { trekkie.config = config || {}; trekkie.config.initialDocumentCookie = document.cookie; var first = document.getElementsByTagName('script')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.onerror = function(e) { var scriptFallback = document.createElement('script'); scriptFallback.type = 'text/javascript'; scriptFallback.onerror = function(error) { var Monorail = { produce: function produce(monorailDomain, schemaId, payload) { var currentMs = new Date().getTime(); var event = { schema_id: schemaId, payload: payload, metadata: { event_created_at_ms: currentMs, event_sent_at_ms: currentMs } }; return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); }, sendRequest: function sendRequest(endpointUrl, payload) { // Try the sendBeacon API if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { var blobData = new window.Blob([payload], { type: 'text/plain' }); if (window.navigator.sendBeacon(endpointUrl, blobData)) { return true; } // sendBeacon was not successful } // XHR beacon var xhr = new XMLHttpRequest(); try { xhr.open('POST', endpointUrl); xhr.setRequestHeader('Content-Type', 'text/plain'); xhr.send(payload); } catch (e) { console.log(e); } return false; }, isIos12: function isIos12() { return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; } }; Monorail.produce('monorail-edge.shopifysvc.com', 'trekkie_storefront_load_errors/1.1', {shop_id: 31608897672, theme_id: 142940897501, app_name: "storefront", context_url: window.location.href, source_url: "//forbitterforworse.com/cdn/s/trekkie.storefront.20de3b35f21c3bd6ff73e3f1547eb7d54e6e94e4.min.js"}); }; scriptFallback.async = true; scriptFallback.src = '//forbitterforworse.com/cdn/s/trekkie.storefront.20de3b35f21c3bd6ff73e3f1547eb7d54e6e94e4.min.js'; first.parentNode.insertBefore(scriptFallback, first); }; script.async = true; script.src = '//forbitterforworse.com/cdn/s/trekkie.storefront.20de3b35f21c3bd6ff73e3f1547eb7d54e6e94e4.min.js'; first.parentNode.insertBefore(script, first); }; trekkie.load( {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":31608897672,"isMerchantRequest":null,"themeId":142940897501,"themeCityHash":"14405121973470996596","contentLanguage":"en","currency":"USD"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"Google Analytics":{"trackingId":"UA-173124455-1","domain":"auto","siteSpeedSampleRate":"10","enhancedEcommerce":true,"doubleClick":true,"includeSearch":true},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} ); var loaded = false; trekkie.ready(function() { if (loaded) return; loaded = true; window.ShopifyAnalytics.lib = window.trekkie; ga('require', 'linker'); function addListener(element, type, callback) { if (element.addEventListener) { element.addEventListener(type, callback); } else if (element.attachEvent) { element.attachEvent('on' + type, callback); } } function decorate(event) { event = event || window.event; var target = event.target || event.srcElement; if (target && (target.getAttribute('action') || target.getAttribute('href'))) { ga(function (tracker) { var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/'; }); } } addListener(window, 'load', function(){ for (var i=0; i < document.forms.length; i++) { var action = document.forms[i].getAttribute('action'); if(action && action.indexOf('/cart') >= 0) { addListener(document.forms[i], 'submit', decorate); } } for (var i=0; i < document.links.length; i++) { var href = document.links[i].getAttribute('href'); if(href && href.indexOf('/checkout') >= 0) { addListener(document.links[i], 'click', decorate); } } }); var originalDocumentWrite = document.write; document.write = customDocumentWrite; try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; document.write = originalDocumentWrite; window.ShopifyAnalytics.lib.page(null,{"pageType":"blog","resourceType":"blog","resourceId":53986525320}); var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) var token = match? match[1]: undefined; if (!hasLoggedConversion(token)) { setCookieIfConversion(token); } }); var eventsListenerScript = document.createElement('script'); eventsListenerScript.async = true; eventsListenerScript.src = "//forbitterforworse.com/cdn/shopifycloud/shopify/assets/shop_events_listener-61fa9e0a912c675e178777d2b27f6cbd482f8912a6b0aa31fa3515985a8cd626.js"; document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); })();</script> <script class="boomerang"> (function () { window.BOOMR = window.BOOMR || {}; window.BOOMR.themeName = "Venue"; window.BOOMR.themeVersion = "7.0.2"; window.BOOMR.shopId = 31608897672; window.BOOMR.themeId = 142940897501; })();</script> <script defer src="https://forbitterforworse.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-1.0.2.min.js" data-application="storefront-renderer" data-shop-id="31608897672" data-render-region="gcp-asia-southeast1" data-page-type="blog" data-theme-instance-id="142940897501" data-monorail-region="shop_domain" data-resource-timing-sampling-rate="10" ></script> </head> <body id="blog" class="template-blog" data-anim-load="true" data-anim-interval-style="fade_in" data-anim-zoom="true" data-anim-interval="true" data-heading-border="true"> <script type="text/javascript"> //loading class for animations document.body.className += ' ' + 'js-theme-loading'; setTimeout(function(){ document.body.className = document.body.className.replace('js-theme-loading','js-theme-loaded'); }, 300); </script> <a class="skip-to-content-link" href="#main">Skip to content</a> <div class="page-transition"></div> <div class="quick-shop-overlay"></div> <div class="page-container"> <div id="shopify-section-mobile-drawer" class="shopify-section js-section__mobile-draw"><style> .mobile-draw, .mobile-draw .mfp-close { background-color: #f998a6; } .mobile-draw__localize { background-color: #f88a9a; } </style> <div class="mobile-draw mobile-draw--dark js-menu-draw mfp-hide"><div class="mobile-draw__wrapper"> <nav class="mobile-draw__nav mobile-nav"> <ul class="mobile-nav__items o-list-bare"> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/" class="mobile-nav__link">Home</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/collections/all-products" class="mobile-nav__link">Shop</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/collections/for-bitter-for-worse-drinks-club" class="mobile-nav__link">Subscribe</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/blogs/recipes" class="mobile-nav__link">Recipes</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="https://forbitterforworse.com/pages/store-locator" class="mobile-nav__link">Stockists</a> </li> <li class="mobile-nav__item mobile-nav__item--active f-family--heading f-caps--true f-space--1"> <a href="/blogs/news" class="mobile-nav__link">Blog</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/pages/about" class="mobile-nav__link">About</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/pages/faq" class="mobile-nav__link">FAQ</a> </li> <li class="mobile-nav__item f-family--heading f-caps--true f-space--1"> <a href="/account/login" class="mobile-nav__link">Log in</a> </li> </ul> </nav> <div class="mobile-draw__search mobile-search"> <form action="/search" method="get" class="mobile-search__form" role="search"> <input type="hidden" name="type" value="product,article,page"> <input type="search" name="q" class="mobile-search__input" value="" aria-label="Search our store..." placeholder="Search our store..."> <button type="submit" class="mobile-search__submit"> <i class="icon icon--search" aria-hidden="true"></i> <span class="icon-fallback__text">Search</span> </button> </form> </div> <div class="mobile-draw__footer mobile-footer"> <ul class="mobile-footer__social-items o-list-bare"> <li class="mobile-footer__social-item"> <a href="https://www.facebook.com/ForBitterForWorse/" class="mobile-footer__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--facebook" aria-hidden="true"></i> <span class="icon-fallback__text">Facebook</span> </a> </li> <li class="mobile-footer__social-item"> <a href="https://www.instagram.com/forbitterforworse/" class="mobile-footer__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--instagram" aria-hidden="true"></i> <span class="icon-fallback__text">Instagram</span> </a> </li> <li class="mobile-footer__social-item"> <a href="https://www.tiktok.com/@forbitterforworse?_t=8nWp5wIIflL&_r=1" class="mobile-footer__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--tiktok" aria-hidden="true"></i> <span class="icon-fallback__text">TikTok</span> </a> </li> <li class="mobile-footer__social-item"> <a href="https://www.youtube.com/@forbitterforworse2752" class="mobile-footer__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--youtube" aria-hidden="true"></i> <span class="icon-fallback__text">YouTube</span> </a> </li> </ul> </div> <div class="mobile-draw__cta mobile-cta"> <img class="mobile-cta__image" src="//forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_300x.png?v=1660176848" srcset=" //forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_180x.png?v=1660176848 180w 42h, //forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_360x.png?v=1660176848 360w 84h, //forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_540x.png?v=1660176848 540w 126h, //forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_720x.png?v=1660176848 720w 168h, //forbitterforworse.com/cdn/shop/files/FullLogo-FBFW_900x.png?v=1660176848 900w 210h " width="300" height=" 70" alt="For Bitter For Worse" loading="lazy" /> </div> </div> </div> </div> <div id="shopify-section-announcement2" class="shopify-section js-section__announcement"><style type="text/css"> </style> </div> <div id="shopify-section-announcement" class="shopify-section js-section__announcement"><style type="text/css"> </style> </div> <div id="shopify-section-header" class="shopify-section shopify-section-header js-section__header"><style type="text/css"> .header, .nav__sub-wrap, .nav__sub-t-wrap { background-color: #f998a6; } .nav__sub-wrap:after { border-bottom-color: #f998a6; } .header--light .nav__sub__link.selected, .header--light .nav__sub__link:hover, .header--light .nav__sub__item--sub:hover .nav__sub__link, .header--light .nav__sub-t__link:hover { background-color: #fab0bb; } .header--dark .nav__sub__link.selected, .header--dark .nav__sub__link:hover, .header--dark .nav__sub__item--sub:hover .nav__sub__link, .header--dark .nav__sub-t__link:hover { background-color: #f88091; } .shopify-section-header { position: -webkit-sticky; position: sticky; } :root { --header-is-sticky: 1; ; } .header, .header__logo, .header-trigger { height: 300px; } .header__logo-img, .header-trigger { max-height: 300px; } .header--center .header__logo-img { width: 300px; } .header__logo-img { padding: 12px 0; } @media screen and (max-width: 767px) { .header, .header__logo, .header.header--center .header__logo, .header-trigger {height: 94px;} .header__logo-img, .header--center.header--center .header__logo-img, .header-trigger {max-height: 94px;} } .header--mega .primary-nav .nav__sub { padding-top: 133px; } .main { margin-top: 30px } .main .shopify-section:first-child .section--full { margin-top: -30px } @media screen and (max-width: 767px) {.main .shopify-section:first-child .section--full-mobile { margin-top: -30px }} </style> <header role="banner" id="top" class="header header--dark js-header header--sticky js-header-sticky header--center header--mega" data-section-id="header" data-section-type="header-section"> <div class="header__logo u-flex u-flex--middle u-flex--center"> <div class="header__logo-wrapper js-main-logo" itemscope itemtype="http://schema.org/Organization"> <a href="/" itemprop="url" class="header__logo-link animsition-link"> <img src="//forbitterforworse.com/cdn/shop/files/WebsiteBannerLogo_da8d344f-3486-4bb4-b418-ca76fcfed7f2_1000x.png?v=1717646848" class="header__logo-img" alt="For Bitter For Worse" itemprop="logo" width="2822" height="920"> </a> </div> </div> <div class="header-trigger header-trigger--left mobile-draw-trigger-icon u-flex u-flex--middle js-mobile-draw-icon" style="display: none"> <a href="#" class="header-trigger__link header-trigger__link--mobile js-mobile-draw-trigger icon-fallback"> <i class="icon icon--menu" aria-hidden="true"></i> <span class="icon-fallback__text">Menu</span> </a> </div> <div class="header-trigger header-trigger--right search-draw-trigger-icon u-flex u-flex--middle js-search-draw-icon" style="display: none"> <a href="/search" class="header-trigger__link header-trigger__link--search icon-fallback js-search-trigger js-no-transition"> <i class="icon icon--search" aria-hidden="true"></i> <span class="icon-fallback__text">Search</span> </a> </div> <div class="header-trigger header-trigger--far-right cart-draw-trigger-icon u-flex u-flex--middle js-cart-draw-icon" style="display: none"> <a href="/cart" class="header-trigger__link header-trigger__link--cart icon-fallback js-cart-icon"> <i class="icon icon--cart" aria-hidden="true"></i> <span class="icon-fallback__text">Cart</span> </a> </div> <div class="header-navs js-heaver-navs u-clearfix u-hidden@tab-down"> <nav class="primary-nav header-navs__items js-primary-nav" role="navigation"> <ul class="primary-nav__items"> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/" class="primary-nav__link animsition-link" >Home</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/collections/all-products" class="primary-nav__link animsition-link" >Shop</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/collections/for-bitter-for-worse-drinks-club" class="primary-nav__link animsition-link" >Subscribe</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/blogs/recipes" class="primary-nav__link animsition-link" >Recipes</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="https://forbitterforworse.com/pages/store-locator" class="primary-nav__link animsition-link" >Stockists</a> </li> <li class="primary-nav__item primary-nav__item--active f-family--heading f-caps--true f-space--1"> <a href="/blogs/news" class="primary-nav__link animsition-link" >Blog</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/pages/about" class="primary-nav__link animsition-link" >About</a> </li> <li class="primary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/pages/faq" class="primary-nav__link animsition-link" >FAQ</a> </li> </ul> </nav> <nav class="secondary-nav header-navs__items js-secondary-nav"> <ul class="secondary-nav__items"> <li class="secondary-nav__item secondary-nav__item--light f-family--heading f-caps--true f-space--1"> <a href="/account/login" class="secondary-nav__link">Log in</a> </li> <li class="secondary-nav__item f-family--heading f-caps--true f-space--1"> <a href="/cart" class="secondary-nav__link">Cart (<span id="CartCount">0</span>)</a> </li> <li class="secondary-nav__item secondary-nav__item--search f-family--heading f-caps--true f-space--1"> <a href="/search" class="secondary-nav__link secondary-nav__link--search icon-fallback js-search-trigger js-no-transition"> <i class="icon icon--search" aria-hidden="true"></i> <span class="icon-fallback__text u-hidden-visually">Search</span> </a> </li> </ul> </nav> </div> </header> <script> var primaryNav = document.getElementsByClassName('js-primary-nav')[0]; var primaryWidth = document.getElementsByClassName('js-primary-nav')[0].offsetWidth; var navSpace = document.getElementsByClassName('js-heaver-navs')[0].offsetWidth / 2 - document.getElementsByClassName('js-main-logo')[0].offsetWidth / 2 - 18; if (document.getElementsByClassName('js-header')[0].classList.contains('header--left')) { if (navSpace < primaryWidth) { document.getElementsByClassName('js-header')[0].classList.add('header--inline-icons'); } } //set header height variables function setHeightVar() { var announcementHeight; if (document.querySelector('.js-announcement') != null) { announcementHeight = document.querySelector('.js-announcement').offsetHeight; } else { announcementHeight = 0; } var headerHeight = document.querySelector('.js-header').offsetHeight; document.documentElement.style.setProperty('--header-height', headerHeight + 'px'); document.documentElement.style.setProperty('--header-full-height', announcementHeight + headerHeight + 'px'); } setHeightVar(); setTimeout(function() { setHeightVar(); }, 500); </script> </div> <div class="main" id="main"> <div id="shopify-section-template--18022997098717__main" class="shopify-section js-section__blog"> <section class="section section--blog blog-page section--template--18022997098717__main" data-section-id="template--18022997098717__main" data-section-type="blog"> <div class="container"> <div class="section__title section__title--center"> <h1 class="section__title-text h2"> Blog </h1> </div> </div> <div class="container container--large"> <div class="blog-page__list blog-page__list--no-bg"> <div class="blog__items"> <div class="o-layout o-layout--masonry"> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/build-your-own-mimosa-bar" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_360x200_crop_center.png?v=1680887346" srcset=" //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_360x200_crop_center.png?v=1680887346 360w 200h, //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_540x300_crop_center.png?v=1680887346 540w 300h, //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_720x400_crop_center.png?v=1680887346 720w 400h, //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_900x500_crop_center.png?v=1680887346 900w 500h, //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_1080x600_crop_center.png?v=1680887346 1080w 600h, //forbitterforworse.com/cdn/shop/articles/1_2b7a043f-4614-41ec-837c-e0bb9407d7ee_1296x720_crop_center.png?v=1680887346 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Build Your Own Mimosa Bar" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/build-your-own-mimosa-bar" class="home-blog__link blog-link"> <h2 class="blog__title h4">Build Your Own Mimosa Bar</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Here at FBFW, we love brunch! There’s something special and novel about inviting people to gather for a decadent morn... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/fbfw-at-coachella" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/2_360x200_crop_center.png?v=1680202695" srcset=" //forbitterforworse.com/cdn/shop/articles/2_360x200_crop_center.png?v=1680202695 360w 200h, //forbitterforworse.com/cdn/shop/articles/2_540x300_crop_center.png?v=1680202695 540w 300h, //forbitterforworse.com/cdn/shop/articles/2_720x400_crop_center.png?v=1680202695 720w 400h, //forbitterforworse.com/cdn/shop/articles/2_900x500_crop_center.png?v=1680202695 900w 500h, //forbitterforworse.com/cdn/shop/articles/2_1080x600_crop_center.png?v=1680202695 1080w 600h, //forbitterforworse.com/cdn/shop/articles/2_1296x720_crop_center.png?v=1680202695 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="FBFW at Coachella!" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/fbfw-at-coachella" class="home-blog__link blog-link"> <h2 class="blog__title h4">FBFW at Coachella!</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Our pals at The New Bar are making Coachella history by sponsoring the first nonalcoholic bars at the legendary music... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/2023-good-food-awards-finalist" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/BlogPostImage_360x200_crop_center.png?v=1673650405" srcset=" //forbitterforworse.com/cdn/shop/articles/BlogPostImage_360x200_crop_center.png?v=1673650405 360w 200h, //forbitterforworse.com/cdn/shop/articles/BlogPostImage_540x300_crop_center.png?v=1673650405 540w 300h, //forbitterforworse.com/cdn/shop/articles/BlogPostImage_720x400_crop_center.png?v=1673650405 720w 400h, //forbitterforworse.com/cdn/shop/articles/BlogPostImage_900x500_crop_center.png?v=1673650405 900w 500h, //forbitterforworse.com/cdn/shop/articles/BlogPostImage_1080x600_crop_center.png?v=1673650405 1080w 600h, //forbitterforworse.com/cdn/shop/articles/BlogPostImage_1296x720_crop_center.png?v=1673650405 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="2023 Good Food Awards Finalist" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/2023-good-food-awards-finalist" class="home-blog__link blog-link"> <h2 class="blog__title h4">2023 Good Food Awards Finalist</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> We’re excited to announce that we are a finalist in the 2023 Good Food Awards, which is like The Oscars of food and beverage! </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/rhubarb" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/hibiscus_360x200_crop_center.png?v=1648654163" srcset=" //forbitterforworse.com/cdn/shop/articles/hibiscus_360x200_crop_center.png?v=1648654163 360w 200h, //forbitterforworse.com/cdn/shop/articles/hibiscus_540x300_crop_center.png?v=1648654163 540w 300h, //forbitterforworse.com/cdn/shop/articles/hibiscus_720x400_crop_center.png?v=1648654163 720w 400h, //forbitterforworse.com/cdn/shop/articles/hibiscus_900x500_crop_center.png?v=1648654163 900w 500h, //forbitterforworse.com/cdn/shop/articles/hibiscus_1080x600_crop_center.png?v=1648654163 1080w 600h, //forbitterforworse.com/cdn/shop/articles/hibiscus_1296x720_crop_center.png?v=1648654163 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Rhubarb" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/rhubarb" class="home-blog__link blog-link"> <h2 class="blog__title h4">Rhubarb</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Grown “from Siberia to China as far back as 2700 BC, where it was used for its healing properties, [rhubarb root] was... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/dandelion-not-just-a-weed" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/dandelion_360x200_crop_center.jpg?v=1648579276" srcset=" //forbitterforworse.com/cdn/shop/articles/dandelion_360x200_crop_center.jpg?v=1648579276 360w 200h, //forbitterforworse.com/cdn/shop/articles/dandelion_540x300_crop_center.jpg?v=1648579276 540w 300h, //forbitterforworse.com/cdn/shop/articles/dandelion_720x400_crop_center.jpg?v=1648579276 720w 400h, //forbitterforworse.com/cdn/shop/articles/dandelion_900x500_crop_center.jpg?v=1648579276 900w 500h, //forbitterforworse.com/cdn/shop/articles/dandelion_1080x600_crop_center.jpg?v=1648579276 1080w 600h, //forbitterforworse.com/cdn/shop/articles/dandelion_1296x720_crop_center.jpg?v=1648579276 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Dandelion: Not Just A Weed!" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/dandelion-not-just-a-weed" class="home-blog__link blog-link"> <h2 class="blog__title h4">Dandelion: Not Just A Weed!</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Join us in celebrating the lowly dandelion. This ubiquitous golden flower that dots suburban yards has a long health-... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/snake-oil" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_360x200_crop_center.png?v=1648578588" srcset=" //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_360x200_crop_center.png?v=1648578588 360w 200h, //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_540x300_crop_center.png?v=1648578588 540w 300h, //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_720x400_crop_center.png?v=1648578588 720w 400h, //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_900x500_crop_center.png?v=1648578588 900w 500h, //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_1080x600_crop_center.png?v=1648578588 1080w 600h, //forbitterforworse.com/cdn/shop/articles/Clark_Stanley_s_Snake_Oil_Liniment_1296x720_crop_center.png?v=1648578588 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Snake Oil" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/snake-oil" class="home-blog__link blog-link"> <h2 class="blog__title h4">Snake Oil</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> “Snake oil”—the etymology of this term (as it's used today) involves a wild story that demonstrates what can happen ... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/thanks-giving" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/16_360x200_crop_center.png?v=1636050289" srcset=" //forbitterforworse.com/cdn/shop/articles/16_360x200_crop_center.png?v=1636050289 360w 200h, //forbitterforworse.com/cdn/shop/articles/16_540x300_crop_center.png?v=1636050289 540w 300h, //forbitterforworse.com/cdn/shop/articles/16_720x400_crop_center.png?v=1636050289 720w 400h, //forbitterforworse.com/cdn/shop/articles/16_900x500_crop_center.png?v=1636050289 900w 500h, //forbitterforworse.com/cdn/shop/articles/16_1080x600_crop_center.png?v=1636050289 1080w 600h, //forbitterforworse.com/cdn/shop/articles/16_1296x720_crop_center.png?v=1636050289 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Thanks & Giving" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/thanks-giving" class="home-blog__link blog-link"> <h2 class="blog__title h4">Thanks & Giving</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> THANKS + GIVING Thanksgiving is complicated. The cultural, historical context of the holiday is not something we emb... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/tips-for-a-spookeasy-halloween-party" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/IMG_0115_360x200_crop_center.jpg?v=1633541565" srcset=" //forbitterforworse.com/cdn/shop/articles/IMG_0115_360x200_crop_center.jpg?v=1633541565 360w 200h, //forbitterforworse.com/cdn/shop/articles/IMG_0115_540x300_crop_center.jpg?v=1633541565 540w 300h, //forbitterforworse.com/cdn/shop/articles/IMG_0115_720x400_crop_center.jpg?v=1633541565 720w 400h, //forbitterforworse.com/cdn/shop/articles/IMG_0115_900x500_crop_center.jpg?v=1633541565 900w 500h, //forbitterforworse.com/cdn/shop/articles/IMG_0115_1080x600_crop_center.jpg?v=1633541565 1080w 600h, //forbitterforworse.com/cdn/shop/articles/IMG_0115_1296x720_crop_center.jpg?v=1633541565 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Tips For A “Spookeasy” Halloween Party" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/tips-for-a-spookeasy-halloween-party" class="home-blog__link blog-link"> <h2 class="blog__title h4">Tips For A “Spookeasy” Halloween Party</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> If you follow us on Instagram, you may have noticed how much our fam loves costumes. We basically take every opportun... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/whats-not-in-the-bottle" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/Bottle_counter_360x200_crop_center.jpg?v=1633363193" srcset=" //forbitterforworse.com/cdn/shop/articles/Bottle_counter_360x200_crop_center.jpg?v=1633363193 360w 200h, //forbitterforworse.com/cdn/shop/articles/Bottle_counter_540x300_crop_center.jpg?v=1633363193 540w 300h, //forbitterforworse.com/cdn/shop/articles/Bottle_counter_720x400_crop_center.jpg?v=1633363193 720w 400h, //forbitterforworse.com/cdn/shop/articles/Bottle_counter_900x500_crop_center.jpg?v=1633363193 900w 500h, //forbitterforworse.com/cdn/shop/articles/Bottle_counter_1080x600_crop_center.jpg?v=1633363193 1080w 600h, //forbitterforworse.com/cdn/shop/articles/Bottle_counter_1296x720_crop_center.jpg?v=1633363193 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="What's NOT in the Bottle" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/whats-not-in-the-bottle" class="home-blog__link blog-link"> <h2 class="blog__title h4">What's NOT in the Bottle</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> You know we’re passionate about quality, flavor, and inclusive socializing. We talk a lot about values, and we talk a... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/7-tips-for-planning-a-sober-friendly-wedding" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/image_360x200_crop_center.png?v=1631820780" srcset=" //forbitterforworse.com/cdn/shop/articles/image_360x200_crop_center.png?v=1631820780 360w 200h, //forbitterforworse.com/cdn/shop/articles/image_540x300_crop_center.png?v=1631820780 540w 300h, //forbitterforworse.com/cdn/shop/articles/image_720x400_crop_center.png?v=1631820780 720w 400h, //forbitterforworse.com/cdn/shop/articles/image_900x500_crop_center.png?v=1631820780 900w 500h, //forbitterforworse.com/cdn/shop/articles/image_1080x600_crop_center.png?v=1631820780 1080w 600h, //forbitterforworse.com/cdn/shop/articles/image_1296x720_crop_center.png?v=1631820780 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="7 Tips For Planning A Sober-Friendly Wedding" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/7-tips-for-planning-a-sober-friendly-wedding" class="home-blog__link blog-link"> <h2 class="blog__title h4">7 Tips For Planning A Sober-Friendly Wedding</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Weddings can be challenging for sober folks. From booze drenched traditions to potential triggers, there is a lot to ... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/camping-glamping-and-backpacking" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_360x200_crop_center.jpg?v=1626106526" srcset=" //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_360x200_crop_center.jpg?v=1626106526 360w 200h, //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_540x300_crop_center.jpg?v=1626106526 540w 300h, //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_720x400_crop_center.jpg?v=1626106526 720w 400h, //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_900x500_crop_center.jpg?v=1626106526 900w 500h, //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_1080x600_crop_center.jpg?v=1626106526 1080w 600h, //forbitterforworse.com/cdn/shop/articles/Saskatoon_Snowcone_1296x720_crop_center.jpg?v=1626106526 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Camping, Glamping, and Backpacking" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/camping-glamping-and-backpacking" class="home-blog__link blog-link"> <h2 class="blog__title h4">Camping, Glamping, and Backpacking</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> One of summer’s great pleasures involves making ourselves at home in the great outdoors. Camping, glamping, and backp... </div> <div class="blog__meta"> </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <div class="blog blog--no-date"> <div class="blog__media-wrapper"> <a href="/blogs/news/happy-father-s-day" class="home-blog__link blog-link"> <div class="blog__media"> <div class="o-ratio o-ratio--custom" style="padding-bottom:55%;"> <div class="o-ratio__content"> <img class="home-blog__media-img blog__img" src="//forbitterforworse.com/cdn/shop/articles/images-8_360x200_crop_center.jpg?v=1623086028" srcset=" //forbitterforworse.com/cdn/shop/articles/images-8_360x200_crop_center.jpg?v=1623086028 360w 200h, //forbitterforworse.com/cdn/shop/articles/images-8_540x300_crop_center.jpg?v=1623086028 540w 300h, //forbitterforworse.com/cdn/shop/articles/images-8_720x400_crop_center.jpg?v=1623086028 720w 400h, //forbitterforworse.com/cdn/shop/articles/images-8_900x500_crop_center.jpg?v=1623086028 900w 500h, //forbitterforworse.com/cdn/shop/articles/images-8_1080x600_crop_center.jpg?v=1623086028 1080w 600h, //forbitterforworse.com/cdn/shop/articles/images-8_1296x720_crop_center.jpg?v=1623086028 1296w 720h " sizes="(min-width: 768px) 50vw, 100vw" width="360" height="200" alt="Happy Father’s Day!" loading="lazy" /> </div> </div> </div> </a> </div> <div class="blog__details"> <a href="/blogs/news/happy-father-s-day" class="home-blog__link blog-link"> <h2 class="blog__title h4">Happy Father’s Day!</h2> </a> <div class="blog__author"> <p class="blog__author__text">Shelley Elkovich</p> </div> <div class="blog__text rte"> Happy Father’s Day! Need brunch inspiration? We gotchu. Quite a few years ago, we had a Dad’s Day potluck. We filled ... </div> <div class="blog__meta"> </div> </div> </div> </div> </div> </div> <div class="blog-pagination"> <div class="container"> <div class="pagination"> <div class="pagination__items"> <span class="page current">1</span> <span class="page"><a href="/blogs/news?page=2" title="">2</a></span> <span class="page"><a href="/blogs/news?page=3" title="">3</a></span> <span class="next"><a href="/blogs/news?page=2" title=""><i class="icon icon--right-t"></i><span class="icon-fallback__text">Next Page</span></a></span> </div> </div> </div> </div> </div> </div> </section> </div><script data-locksmith> var load = function () { Locksmith.ping(); Locksmith.util.on('submit', 'locksmith-resource-form', function (event) { event.preventDefault(); var data = Locksmith.util.serializeForm(event.target); Locksmith.postResource(data, { spinner: false, container: 'locksmith-content' }); }); Locksmith.util.on('click', 'locksmith-manual-trigger', function (event) { event.preventDefault(); Locksmith.postResource({}, { spinner: true, container: document }); }); Locksmith.submitPasscode = function (passcode) { Locksmith.postResource( { passcode: passcode }, { spinner: false, container: 'locksmith-content' } ); }; }; if (typeof Locksmith !== 'undefined') { load(); } else { window.addEventListener('load', load); } </script> </div> <div id="shopify-section-footer-newsletter" class="shopify-section js-section__footer-newsletter"><style type="text/css"> .section--footer-newsletter .newsletter { background-color: #f998a6; } </style> <section class="section section--footer-newsletter"> <div class="container"> <div class="newsletter newsletter--dark"> <div class="newsletter__content"> <div class="newsletter__title section__title section__title--center section__title--desc"> <h2 class="section__title-text">Sign Up For Our Newsletter</h2> <div class="section__title-desc rte"><p>Receive special offers and first look at new products.</p></div> </div> <div class="newsletter__form-wrapper"> <form method="post" action="/contact#newsletter" id="newsletter" accept-charset="UTF-8" class="newsletter__form-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /> <div class="o-layout o-layout--flush"> <div class="o-layout__item u-1/1 u-2/3@tab"> <input type="hidden" name="contact[tags]" value="newsletter"> <label for="Email-Footer" class="u-hidden-visually">Email</label> <input type="email" name="contact[email]" id="Email-Footer" class="newsletter__input" value="" placeholder="email@example.com" autocorrect="off" autocapitalize="off"> </div> <div class="o-layout__item u-1/1 u-1/3@tab"> <button type="submit" class="c-btn c-btn--full c-btn--primary newsletter__btn" name="commit" id="Subscribe-Footer">Subscribe</button> </div> </div> </form> </div> </div> </div> </div> </section> </div> <div id="shopify-section-footer" class="shopify-section js-section__footer"><style type="text/css"> .footer { background-color: #ad2542; } .footer__bottom { background-color: #98213a; } </style> <footer role="contentinfo" id="footer" class="footer footer--light"> <div class="container"> <div class="footer__content"> <div class="o-layout"> <div class="o-layout__item u-1/1 u-1/2@tab u-1/4@desk" > <div class="footer-nav"> <ul class="footer-nav__items o-list-bare"> <li class="footer-nav__item"><a href="/collections/all-products" class="footer-nav__link">Shop</a></li> <li class="footer-nav__item"><a href="/collections/for-bitter-for-worse-drinks-club" class="footer-nav__link">Subscribe</a></li> <li class="footer-nav__item"><a href="https://forbitterforworse.com/blogs/news/tagged/all-recipes" class="footer-nav__link">Recipes</a></li> <li class="footer-nav__item footer-nav__item--active"><a href="/blogs/news" class="footer-nav__link">Blog</a></li> <li class="footer-nav__item"><a href="/pages/about" class="footer-nav__link">About</a></li> <li class="footer-nav__item"><a href="https://for-bitter-for-worse.myshopify.com/pages/faq" class="footer-nav__link">FAQ</a></li> <li class="footer-nav__item"><a href="http://for-bitter-for-worse.myshopify.com/pages/store-locator" class="footer-nav__link">Stockists</a></li> <li class="footer-nav__item"><a href="/pages/contact" class="footer-nav__link">Contact</a></li> <li class="footer-nav__item"><a href="/pages/ccpa-opt-out" class="footer-nav__link">Do not sell my personal information</a></li> </ul> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab u-1/4@desk" > <div class="footer-nav"> <ul class="footer-nav__items o-list-bare"> <li class="footer-nav__item"><a href="/collections/varietals" class="footer-nav__link">Varietals</a></li> <li class="footer-nav__item"><a href="/policies/terms-of-service" class="footer-nav__link">Terms of Service</a></li> <li class="footer-nav__item"><a href="/policies/refund-policy" class="footer-nav__link">Refund policy</a></li> <li class="footer-nav__item"><a href="https://app.joinrise.co/company/forbitterforworse" class="footer-nav__link">Careers</a></li> </ul> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab u-1/4@desk" > <div class="footer-nav footer-nav--social"> <h3 class="footer-nav__title h5">Social</h3> <ul class="footer-nav__social-items o-list-bare"> <li class="footer-nav__social-item"> <a href="https://www.facebook.com/ForBitterForWorse/" class="footer-nav__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--facebook" aria-hidden="true"></i> <span class="icon-fallback__text">Facebook</span> </a> </li> <li class="footer-nav__social-item"> <a href="https://www.instagram.com/forbitterforworse/" class="footer-nav__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--instagram" aria-hidden="true"></i> <span class="icon-fallback__text">Instagram</span> </a> </li> <li class="footer-nav__social-item"> <a href="https://www.tiktok.com/@forbitterforworse?_t=8nWp5wIIflL&_r=1" class="footer-nav__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--tiktok" aria-hidden="true"></i> <span class="icon-fallback__text">TikTok</span> </a> </li> <li class="footer-nav__social-item"> <a href="https://www.youtube.com/@forbitterforworse2752" class="footer-nav__social-link icon-fallback" target="_blank" rel="noopener"> <i class="icon icon--youtube" aria-hidden="true"></i> <span class="icon-fallback__text">YouTube</span> </a> </li> </ul> </div> </div> <div class="o-layout__item u-1/1 u-1/2@tab u-1/4@desk" > <div class="footer-nav"> <h3 class="footer-nav__title h5">Send Your Questions, Compliments, and Love Letters To:</h3> <div class="footer-nav__text rte"> <p>cheers {at} forbitterforworse.com</p><p>Or via snail mail at:</p><p>100 NE Farragut St. Unit 106A Portland OR 97211</p> </div> </div> </div> </div> </div> </div> <div class="footer__bottom"> <div class="container container--full"> <div class="footer__bottom__left"><div class="footer__icons footer__bottom__left-item"> <ul class="footer__icons-items o-list-bare"> <li class="footer__icons-item"> <svg class="payment-icon" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-american_express" viewBox="0 0 38 24" width="38" height="24"><title id="pi-american_express">American Express</title><path fill="#000" 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" opacity=".07"/><path fill="#006FCF" 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"/><path fill="#FFF" d="M22.012 19.936v-8.421L37 11.528v2.326l-1.732 1.852L37 17.573v2.375h-2.766l-1.47-1.622-1.46 1.628-9.292-.02Z"/><path fill="#006FCF" d="M23.013 19.012v-6.57h5.572v1.513h-3.768v1.028h3.678v1.488h-3.678v1.01h3.768v1.531h-5.572Z"/><path fill="#006FCF" d="m28.557 19.012 3.083-3.289-3.083-3.282h2.386l1.884 2.083 1.89-2.082H37v.051l-3.017 3.23L37 18.92v.093h-2.307l-1.917-2.103-1.898 2.104h-2.321Z"/><path fill="#FFF" d="M22.71 4.04h3.614l1.269 2.881V4.04h4.46l.77 2.159.771-2.159H37v8.421H19l3.71-8.421Z"/><path fill="#006FCF" d="m23.395 4.955-2.916 6.566h2l.55-1.315h2.98l.55 1.315h2.05l-2.904-6.566h-2.31Zm.25 3.777.875-2.09.873 2.09h-1.748Z"/><path fill="#006FCF" d="M28.581 11.52V4.953l2.811.01L32.84 9l1.456-4.046H37v6.565l-1.74.016v-4.51l-1.644 4.494h-1.59L30.35 7.01v4.51h-1.768Z"/></svg> </li> <li class="footer__icons-item"> <svg class="payment-icon" 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 0 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> </li> <li class="footer__icons-item"> <svg class="payment-icon" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</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 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="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg> </li> <li class="footer__icons-item"> <svg class="payment-icon" width="38" height="24" role="img" aria-labelledby="pi-metapay" viewBox="0 0 38 24" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-metapay">Meta 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 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="#fff"/><path d="M4.983 12.986c0 .348.076.614.176.776a.6.6 0 00.524.3c.257 0 .491-.063.943-.688.362-.5.788-1.204 1.076-1.645l.486-.747c.337-.518.728-1.095 1.176-1.486.366-.319.76-.496 1.158-.496.667 0 1.302.386 1.788 1.111.532.794.79 1.793.79 2.825 0 .613-.12 1.064-.326 1.42-.2.345-.587.688-1.238.688v-.981c.558 0 .697-.513.697-1.1 0-.836-.195-1.764-.624-2.427-.305-.47-.7-.757-1.134-.757-.47 0-.848.354-1.274.986-.226.336-.457.745-.718 1.207l-.287.508c-.576 1.02-.722 1.254-1.01 1.637-.504.672-.935.927-1.502.927-.674 0-1.1-.291-1.363-.73C4.106 13.956 4 13.486 4 12.95l.983.035z" fill="#0081FB"/><path d="M4.775 10.18C5.225 9.486 5.875 9 6.622 9c.432 0 .861.128 1.31.494.49.4 1.013 1.06 1.665 2.146l.234.39c.565.94.886 1.424 1.074 1.652.242.293.411.38.631.38.558 0 .697-.512.697-1.099l.867-.027c0 .613-.12 1.064-.326 1.42-.2.345-.587.688-1.238.688-.405 0-.764-.088-1.16-.462-.306-.287-.663-.798-.937-1.257l-.816-1.363c-.41-.684-.785-1.194-1.003-1.425-.234-.249-.534-.549-1.014-.549-.388 0-.718.273-.994.69l-.837-.498z" fill="url(#pi-paint0_linear_1164_3)"/><path d="M6.606 9.988c-.388 0-.718.273-.994.69-.39.588-.629 1.466-.629 2.308 0 .348.076.614.176.776l-.838.552C4.106 13.956 4 13.486 4 12.95c0-.973.267-1.987.775-2.77C5.225 9.485 5.875 9 6.622 9l-.016.988z" fill="url(#pi-paint1_linear_1164_3)"/><path d="M15.01 9.191h1.138l1.933 3.498 1.934-3.498h1.112v5.747h-.928v-4.405l-1.695 3.05h-.87l-1.696-3.05v4.405h-.927V9.191zm9.023 2.143c-.665 0-1.066.5-1.162 1.12h2.258c-.046-.638-.415-1.12-1.096-1.12zm-2.081 1.474c0-1.305.843-2.254 2.097-2.254 1.234 0 1.971.937 1.971 2.323v.255h-3.148c.111.674.559 1.129 1.28 1.129.576 0 .936-.176 1.277-.497l.493.603c-.465.427-1.055.674-1.803.674-1.358 0-2.167-.99-2.167-2.233zm5.193-1.392h-.854v-.76h.854V9.402h.895v1.256h1.297v.76H28.04v1.924c0 .657.21.89.726.89.236 0 .371-.02.57-.053v.752c-.248.07-.485.102-.742.102-.966 0-1.45-.528-1.45-1.584v-2.032zm5.96.739a1.207 1.207 0 00-1.17-.788c-.766 0-1.256.543-1.256 1.428 0 .863.451 1.433 1.22 1.433.603 0 1.034-.351 1.206-.788v-1.285zM34 14.938h-.878v-.6c-.246.353-.693.703-1.417.703-1.164 0-1.941-.975-1.941-2.246 0-1.283.796-2.241 1.99-2.241.591 0 1.055.236 1.368.653v-.55H34v4.281z" fill="#000000"/><defs><linearGradient id="pi-paint0_linear_1164_3" x1="5.93" y1="12.703" x2="12.196" y2="13.019" gradientUnits="userSpaceOnUse"><stop stop-color="#0064E1"/><stop offset=".4" stop-color="#0064E1"/><stop offset=".83" stop-color="#0073EE"/><stop offset="1" stop-color="#0082FB"/></linearGradient><linearGradient id="pi-paint1_linear_1164_3" x1="5.424" y1="13.399" x2="5.424" y2="11.089" gradientUnits="userSpaceOnUse"><stop stop-color="#0082FB"/><stop offset="1" stop-color="#0064E0"/></linearGradient></defs></svg> </li> <li class="footer__icons-item"> <svg class="payment-icon" 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.06zM23.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> </li> <li class="footer__icons-item"> <svg class="payment-icon" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-master"><title id="pi-master">Mastercard</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="#F79E1B" cx="23" cy="12" r="7"/><path fill="#FF5F00" 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> </li> <li class="footer__icons-item"> <svg class="payment-icon" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</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"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 0-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg> </li> <li class="footer__icons-item"> <svg class="payment-icon" 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> </li> <li class="footer__icons-item"> <svg class="payment-icon" viewBox="0 0 38 24" width="38" height="24" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pi-venmo"><title id="pi-venmo">Venmo</title><g fill="none" fill-rule="evenodd"><rect fill-opacity=".07" fill="#000" width="38" height="24" rx="3"/><path fill="#3D95CE" 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="M24.675 8.36c0 3.064-2.557 7.045-4.633 9.84h-4.74L13.4 6.57l4.151-.402 1.005 8.275c.94-1.566 2.099-4.025 2.099-5.702 0-.918-.154-1.543-.394-2.058l3.78-.783c.437.738.634 1.499.634 2.46z" fill="#FFF" fill-rule="nonzero"/></g></svg> </li> <li class="footer__icons-item"> <svg class="payment-icon" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" aria-labelledby="pi-visa"><title id="pi-visa">Visa</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"/><path d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2 0-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.1.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2 0-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z" fill="#142688"/></svg> </li> </ul> </div></div> <div class="footer__bottom__right"> <div class="footer-copyright"> <p class="footer-copyright__text"> <span class="footer-copyright__span footer-copyright__span--powered"><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a></span> <span class="footer-copyright__span footer-copyright__span--shop">&copy; 2024, For Bitter For Worse</span> </p> </div> </div> </div> </div> </footer> </div> <div id="shopify-section-promo-pop" class="shopify-section js-section__promo-pop"> <div class="promo-pop js-promo-pop promo-pop--no-mobile" data-promo-enabled="true" data-promo-delay="5000" data-promo-expiry="3"> <a href="#" class="promo-pop__close js-promo-pop-close icon-fallback"> <i class="icon icon--close" aria-hidden="true"></i> <span class="icon-fallback__text">Close (esc)</span> </a> <div class="promo-pop__wrapper"> <div class="promo-pop__content"> <div class="section__title promo-pop__title"> <h4 class="section__title-text">JOIN OUR EMAIL LIST</h4> </div> <div class="promo-pop__desc rte"><p>SIGN UP FOR OUR NEWSLETTER</p><p>Receive special offers and first look at new products.</p></div> <div class="promo-pop__form"> <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="promo-pop__form-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /> <div class="promo-pop__fieldset"> <input type="hidden" name="contact[tags]" value="newsletter"> <label for="Email" class="u-hidden-visually">Email</label> <input type="email" name="contact[email]" id="Email" class="promo-pop__fieldset-item promo-pop__input" value="" placeholder="email@example.com" autocorrect="off" autocapitalize="off"> <button type="submit" class="c-btn c-btn--primary promo-pop__fieldset-item promo-pop__btn" name="commit" id="Subscribe">Subscribe</button> </div> </form> </div> </div> </div> </div> </div> <div id="shopify-section-age-checker" class="shopify-section js-section__age-checker"><div class="age-checker js-age-draw mfp-hide" data-age-check-enabled="false"> <div class="age-checker__wrapper"> <div class="age-checker__content"> <div class="section__title section__title--center age-checker__title"> <h3 class="section__title-text">Age verification</h3> </div> <div class="age-checker__desc"><p>By clicking enter you are verifying that you are old enough to consume alcohol.</p></div> <div class="age-checker__actions"> <a href="#" class="age-checker__btn c-btn c-btn--primary c-btn--full js-age-close">Enter</a> </div> </div> </div> </div> </div> </div> <div class="search-draw js-search-draw mfp-hide"> <div class="search-draw__wrapper"> <div class="search__head"> <div class="search__label"> <h3 class="search__label-title h4">Search</h3> </div> </div> <div class="search__inner"> <form action="/search" method="get" class="search__form" role="search"> <input type="hidden" name="type" value="product,article,page"> <input type="search" name="q" class="search__form-input js-search-input" value="" placeholder="Search our store..." aria-label="Search our store..."> <button type="submit" class="search__form-submit"> <i class="icon icon--search" aria-hidden="true"></i> <span class="icon-fallback__text">Search</span> </button> </form> <div class="search__nav"> <h4 class="search__nav-title h5">MAIN MENU</h4> <ul class="search__nav-items o-list-bare"> <li class="search__nav-item"> <a href="/" class="search__nav-link">Home</a> </li> <li class="search__nav-item"> <a href="/collections/all-products" class="search__nav-link">Shop</a> </li> <li class="search__nav-item"> <a href="/collections/for-bitter-for-worse-drinks-club" class="search__nav-link">Subscribe</a> </li> <li class="search__nav-item"> <a href="/blogs/recipes" class="search__nav-link">Recipes</a> </li> <li class="search__nav-item"> <a href="https://forbitterforworse.com/pages/store-locator" class="search__nav-link">Stockists</a> </li> <li class="search__nav-item"> <a href="/blogs/news" class="search__nav-link">Blog</a> </li> <li class="search__nav-item"> <a href="/pages/about" class="search__nav-link">About</a> </li> <li class="search__nav-item"> <a href="/pages/faq" class="search__nav-link">FAQ</a> </li> </ul> </div> </div> </div> </div> <div class="ajaxcart-draw js-cart-draw mfp-hide ajaxcart-draw--notification"> <div class="ajaxcart-draw__wrapper js-cart-draw-inner"> <div class="ajaxcart-draw__scroll"> <div class="ajaxcart__head"> <div class="ajaxcart__label"> <h4 class="ajaxcart__label-title">Added to cart</h4> </div> </div> <div id="CartContainer"></div> </div> </div> </div> <script id="CartTemplate" type="text/template"> <form action="/cart" method="post" novalidate class="cart ajaxcart__form"> <div class="ajaxcart__inner"> <div class="ajaxcart__products"> {{#items}} <div class="ajaxcart__product"> <div class="ajaxcart__row" data-line="{{line}}"> <div class="o-layout o-layout--tiny u-flex u-flex--middle"> <div class="o-layout__item u-1/1 u-5/10@tab"> <div class="o-layout o-layout--tiny u-flex u-flex--middle"> <div class="o-layout__item u-1/3 u-1/4@tab"> <a href="{{url}}" class="ajaxcart__product-image"> <div class="o-ratio o-ratio--bg-product"> {{#if img}} <img src="{{img}}" class="o-ratio__content" alt="{{ name }}"> {{else}} <img src="//forbitterforworse.com/cdn/shop/t/96/assets/placeholder_240x.png?v=113555733946226816651719426550" class="o-ratio__content" alt="{{ name }}"> {{/if}} </div> </a> </div> <div class="o-layout__item u-2/3 u-3/4@tab"> <a href="{{url}}"><h4 class="ajaxcart__product-name f-family--body">{{name}}</h4></a> {{#if variation}} <p class="ajaxcart__product-meta">{{variation}}</p> {{/if}} {{#properties}} {{#each this}} {{#if this}} {{#iffirstnoteq @key "_"}} <p class="ajaxcart__product-meta">{{@key}}:{{this}}</p> {{/iffirstnoteq}} {{/if}} {{/each}} {{/properties}} {{#if sellingPlan}} <p class="ajaxcart__product-meta">{{ sellingPlan }}</p> {{/if}} </div> </div> </div> <div class="o-layout__item u-4/10 u-2/10@tab"> <div class="ajaxcart__qty"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}" data-line="{{line}}"> <span aria-hidden="true">&minus;</span> <span class="u-hidden-visually">Reduce item quantity by one</span> </button> <input type="text" name="updates[]" class="ajaxcart__qty-num js-qty-input" value="{{itemQty}}" min="0" data-id="{{key}}" data-line="{{line}}" aria-label="quantity" pattern="[0-9]*" autocomplete="off"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-line="{{line}}" data-qty="{{itemAdd}}"> <span aria-hidden="true">+</span> <span class="u-hidden-visually">Increase item quantity by one</span> </button> </div> </div> <div class="o-layout__item u-6/10 u-3/10@tab"> {{#if lineDiscount}} <div class="ajaxcart-item__price ajaxcart-item__price--original"><s><span class="money">{{{originalLinePrice}}}</span></s></div> <div class="ajaxcart-item__discount"> {{#each lineDiscounts}} <p class="ajaxcart-item__discount-text"> {{ this.discount_application.title }} (-<span class="money">{{{ this.amount }}}</span>) </p> {{/each}} </div> <div class="ajaxcart-item__price ajaxcart-item__price--sale"><span class="money">{{{lineDiscountedPrice}}}</span></div> {{else}} <div class="ajaxcart-item__price"><span class="money">{{{linePrice}}}</span></div> {{/if}} {{#if unitPriceExists}} <div class="ajaxcart-item__price ajaxcart-item__price--unit">{{{ unitPrice }}}<span aria-hidden="true">/</span><span class="u-hidden-visually">per&nbsp;</span>{{#ifnoteq unitReferenceValue "1"}}{{{ unitReferenceValue }}}{{/ifnoteq}}{{{ unitReferenceUnit }}}</div> {{/if}} </div> </div> </div> </div> {{/items}} </div> </div> <div class="ajaxcart__footer"> <div class="o-layout o-layout--tiny o-layout--reverse"> <div class="o-layout__item u-1/1 u-1/3@tab"> {{#if cartDiscounts}} {{#each cartDiscounts}} <p class="ajaxcart__footer-discount">{{ this.title }} (-<span class="money">{{ this.total_allocated_amount }}</span>)</p> {{/each}} {{/if}} <p class="ajaxcart__footer-total">Subtotal <span class="money">{{{totalPrice}}}</span></p> </div> <div class="o-layout__item u-1/1 u-2/3@tab"> <p class="ajaxcart__footer-message">Shipping &amp; taxes calculated at checkout</p> </div> </div> </div> <div class="ajaxcart__button"> <div class="o-layout o-layout--tiny o-layout--reverse"> <div class="o-layout__item u-1/1 u-1/2@tab"> <button type="submit" class="c-btn c-btn--full c-btn--primary ajaxcart__checkout" name="checkout">Check Out</button> </div> <div class="o-layout__item u-1/1 u-1/2@tab"> <a href="/" class="c-btn c-btn--full c-btn--hollow js-close-mfp ajaxcart__continue">Continue shopping</a> </div> </div> </div> </form> </script> <script id="NotificationTemplate" type="text/template"> <div class="ajaxcart__inner"> <div class="o-layout o-layout--tiny u-flex u-flex--middle"> <div class="o-layout__item u-1/1 u-3/5@mob"> <div class="ajaxcart__product"> <div class="o-layout o-layout--small u-flex u-flex--middle"> <div class="o-layout__item u-1/3"> <div class="ajaxcart__product-image-wrapper"> <div class="ajaxcart__product-image"> <div class="o-ratio o-ratio--bg-product"> {{#if thisItem.img}} <img src="{{ thisItem.img }}" class="o-ratio__content" alt="{{ thisItem.name }}"> {{else}} <img src="//forbitterforworse.com/cdn/shop/t/96/assets/placeholder_240x.png?v=113555733946226816651719426550" class="o-ratio__content" alt="{{ thisItem.name }}"> {{/if}} </div> </div> </div> </div> <div class="o-layout__item u-2/3"> <p class="ajaxcart__product-name f-family--body">{{ thisItem.name }}</p> <p class="ajaxcart__product-meta">{{ thisItem.variation }}</p> <p class="ajaxcart__product-meta">{{ thisItem.sellingPlan }}</p> <p class="ajaxcart__product-meta">{{ thisItem.price }}</p> {{#if thisItem.unitPriceExists}} <div class="ajaxcart__product-meta ajaxcart-item__price--unit">{{{ thisItem.unitPrice }}}<span aria-hidden="true">/</span><span class="u-hidden-visually">per&nbsp;</span>{{#ifnoteq thisItem.unitReferenceValue "1"}}{{{ thisItem.unitReferenceValue }}}{{/ifnoteq}}{{{ thisItem.unitReferenceUnit }}}</div> {{/if}} </div> </div> </div> </div> <div class="o-layout__item u-1/1 u-2/5@mob"> <a href="/cart" class="c-btn c-btn--small c-btn--full c-btn--primary ajaxcart__checkout" name="checkout">View cart</a> <a href="/" class="c-btn c-btn--small c-btn--full c-btn--hollow js-close-mfp ajaxcart__continue">Continue shopping</a> </div> </div> </div> </script> <script id="AjaxQty" type="text/template"> <div class="ajaxcart__qty"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--minus" data-id="{{key}}" data-qty="{{itemMinus}}"> <span aria-hidden="true">&minus;</span> <span class="u-hidden-visually">Reduce item quantity by one</span> </button> <input type="text" class="ajaxcart__qty-num js-qty-input" value="{{itemQty}}" min="0" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" autocomplete="off"> <button type="button" class="ajaxcart__qty-adjust ajaxcart__qty--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> <span aria-hidden="true">+</span> <span class="u-hidden-visually">Increase item quantity by one</span> </button> </div> </script> <script id="JsQty" type="text/template"> <div class="js-qty"> <button type="button" class="js-qty__adjust js-qty__adjust--minus icon-fallback-text" data-id="{{key}}" data-qty="{{itemMinus}}"> <span aria-hidden="true">&minus;</span> <span class="u-hidden-visually">Reduce item quantity by one</span> </button> <input type="text" class="js-qty__num js-qty-input" value="{{itemQty}}" min="1" data-id="{{key}}" aria-label="quantity" pattern="[0-9]*" name="{{inputName}}" autocomplete="off"> <button type="button" class="js-qty__adjust js-qty__adjust--plus" data-id="{{key}}" data-qty="{{itemAdd}}"> <span aria-hidden="true">+</span> <span class="u-hidden-visually">Increase item quantity by one</span> </button> </div> </script> <script> //cart functions theme.ajaxCartInit = function() { ajaxCart.init({ sourceId: '#NotificationTemplate', triggerSelector: '.js-cart-icon', formSelector: '.js-product-form', addToCartSelector: '.js-product-add', cartContainer: '#CartContainer', cartCountSelector: '#CartCount', cartCostSelector: '#CartCost', emptySelector: '#EmptyCart', moneyFormat: "${{amount}}" }); }; </script> <!-- Venue theme by Safe As Milk - http://safeasmilk.co/ --> <!-- Theme version 7.0.2 --> <link rel="dns-prefetch" href="https://swymstore-v3free-01.swymrelay.com" crossorigin> <link rel="dns-prefetch" href="//swymv3free-01.azureedge.net/code/swym-shopify.js"> <link rel="preconnect" href="//swymv3free-01.azureedge.net/code/swym-shopify.js"> <script id="swym-snippet"> window.swymLandingURL = document.URL; window.swymCart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0}; window.swymPageLoad = function(){ window.SwymProductVariants = window.SwymProductVariants || {}; window.SwymHasCartItems = 0 > 0; window.SwymPageData = {}, window.SwymProductInfo = {}; var unknown = {et: 0}; window.SwymPageData = unknown; window.SwymPageData.uri = window.swymLandingURL; }; if(window.selectCallback){ (function(){ // Variant select override var originalSelectCallback = window.selectCallback; window.selectCallback = function(variant){ originalSelectCallback.apply(this, arguments); try{ if(window.triggerSwymVariantEvent){ window.triggerSwymVariantEvent(variant.id); } }catch(err){ console.warn("Swym selectCallback", err); } }; })(); } window.swymCustomerId = null; window.swymCustomerExtraCheck = null; var swappName = ("Wishlist" || "Wishlist"); var swymJSObject = { pid: "i5HiRXRUn7O8CiQmFUmsZ2wP0gYa7M0wjDIiLulwtBo=" || "i5HiRXRUn7O8CiQmFUmsZ2wP0gYa7M0wjDIiLulwtBo=", interface: "/apps/swym" + swappName + "/interfaces/interfaceStore.php?appname=" + swappName }; window.swymJSShopifyLoad = function(){ if(window.swymPageLoad) swymPageLoad(); if(!window._swat) { (function (s, w, r, e, l, a, y) { r['SwymRetailerConfig'] = s; r[s] = r[s] || function (k, v) { r[s][k] = v; }; })('_swrc', '', window); _swrc('RetailerId', swymJSObject.pid); _swrc('Callback', function(){initSwymShopify();}); }else if(window._swat.postLoader){ _swrc = window._swat.postLoader; _swrc('RetailerId', swymJSObject.pid); _swrc('Callback', function(){initSwymShopify();}); }else{ initSwymShopify(); } } if(!window._SwymPreventAutoLoad) { swymJSShopifyLoad(); } window.swymGetCartCookies = function(){ var RequiredCookies = ["cart", "swym-session-id", "swym-swymRegid", "swym-email"]; var reqdCookies = {}; RequiredCookies.forEach(function(k){ reqdCookies[k] = _swat.storage.getRaw(k); }); var cart_token = window.swymCart.token; var data = { action:'cart', token:cart_token, cookies:reqdCookies }; return data; } window.swymGetCustomerData = function(){ return {status:1}; } </script> <style id="safari-flasher-pre"></style> <script> if (navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) { document.getElementById("safari-flasher-pre").innerHTML = '' + '#swym-plugin,#swym-hosted-plugin{display: none;}' + '.swym-button.swym-add-to-wishlist{display: none;}' + '.swym-button.swym-add-to-watchlist{display: none;}' + '#swym-plugin #swym-notepad, #swym-hosted-plugin #swym-notepad{opacity: 0; visibility: hidden;}' + '#swym-plugin #swym-notepad, #swym-plugin #swym-overlay, #swym-plugin #swym-notification,' + '#swym-hosted-plugin #swym-notepad, #swym-hosted-plugin #swym-overlay, #swym-hosted-plugin #swym-notification' + '{-webkit-transition: none; transition: none;}' + ''; window.SwymCallbacks = window.SwymCallbacks || []; window.SwymCallbacks.push(function(tracker){ tracker.evtLayer.addEventListener(tracker.JSEvents.configLoaded, function(){ // flash-preventer var x = function(){ SwymUtils.onDOMReady(function() { var d = document.createElement("div"); d.innerHTML = "<style id='safari-flasher-post'>" + "#swym-plugin:not(.swym-ready),#swym-hosted-plugin:not(.swym-ready){display: none;}" + ".swym-button.swym-add-to-wishlist:not(.swym-loaded){display: none;}" + ".swym-button.swym-add-to-watchlist:not(.swym-loaded){display: none;}" + "#swym-plugin.swym-ready #swym-notepad, #swym-plugin.swym-ready #swym-overlay, #swym-plugin.swym-ready #swym-notification," + "#swym-hosted-plugin.swym-ready #swym-notepad, #swym-hosted-plugin.swym-ready #swym-overlay, #swym-hosted-plugin.swym-ready #swym-notification" + "{-webkit-transition: opacity 0.3s, visibility 0.3ms, -webkit-transform 0.3ms !important;-moz-transition: opacity 0.3s, visibility 0.3ms, -moz-transform 0.3ms !important;-ms-transition: opacity 0.3s, visibility 0.3ms, -ms-transform 0.3ms !important;-o-transition: opacity 0.3s, visibility 0.3ms, -o-transform 0.3ms !important;transition: opacity 0.3s, visibility 0.3ms, transform 0.3ms !important;}" + "</style>"; document.head.appendChild(d); }); }; setTimeout(x, 10); }); }); } // Get the money format for the store from shopify window.SwymOverrideMoneyFormat = "${{amount}}"; </script> <style id="swym-product-view-defaults"> /* Hide when not loaded */ .swym-button.swym-add-to-wishlist-view-product:not(.swym-loaded){ display: none; } </style> <script id="pre-order-helper"> /*============================================================================== # WARNING: This file is auto-generated and any changes that are made may be lost. ==============================================================================*/ var _POConfig = _POConfig || {}; _POConfig = {"button":{"visible":"true","widget_button_enabled":"true","buttonBorderColor":"","buttonColor":"","buttonTextDecoration":"","buttonMarginTop":"","caption":"Reserve Now","buttonFontWeight":"","buttonMarginBottom":"","buttonPaddingTop":"","buttonFontSize":"","buttonBackgroundColor":"","buttonPaddingLeft":"","buttonBorderRadius":"","buttonBorderWidth":"","buttonFontFamily":""},"generic_trigger_handler":true,"require_inventory_management":true,"shop":"for-bitter-for-worse.myshopify.com","app_hostname":"xfm8r4vsg4.execute-api.us-west-1.amazonaws.com","quantity_field_enabled":false,"preorder_enabled":true,"ignore_duplicate_skus":false,"instock_qty_level":1,"selectors":{"priceContainerSelector":"","payment_button_selectors":".shopify-payment-button","cartLabelSelector":"","priceRegularValueContainerSelector":"","atcButtonSelector":""},"defaultSetting":{"quantityLimit":0,"overallQuantityLimit":0,"totalQuantityOrdered":0,"buttonText":"Reserve Now","buttonMessage":"The first batch sold out in just 19 days. Reserve yours now and you'll have these cute and tasty cans in your hand by mid September!","buttonMessageVisibility":"ALWAYS","cartCheckoutLabel":"Pre-ordered items","preOrderTimeEnable":false,"dateStart":"-1","dateStop":"-1","discountValue":0.0,"discountType":"PERCENTAGE","showPriceOnCheckoutLabelOnCart":true,"showFullPriceLabelOnCart":true,"showSellingPlanLabelOnCart":true,"showPurchaseOptions":true,"showPurchaseOptionsOnSingleSellingPlan":false,"orderTag":"appikon-pre-order","comingSoonEnable":false,"comingSoonHeader":"Coming Soon","comingSoonMessage":"Dropping on","comingSoonAvailableFrom":"-1","showPreOrderLabelOnCollectionPage":false,"collectionPagePreOrderLabelText":"","collectionPagePreOrderLabelClass":"","collectionPagePreOrderLabelCSS":"","preOrderClosedMessage":"Sold Out"},"partials":{"empty":true}}; _POConfig.shop = 'for-bitter-for-worse.myshopify.com'; _POConfig.cart={"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"USD","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0} </script> <script> /*============================================================================== # WARNING: This file is auto-generated and any changes that are made may be lost. ==============================================================================*/ let signal = false; document.addEventListener('click', async function(e) { if (!signal) { await cartItem(); setTimeout(async function() { await cartItem(); signal = false; }, 2000); } signal = true; }); document.addEventListener('DOMContentLoaded', async function(e) { await cartItem(); }); //This function update the quantity of a item in cart if it has pre order enabled and the quantity set is more than the allowed and add the properties selected async function cartItem() { const cartData = await fetch(window.Shopify.routes.root+'cart.js', { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const cartDataJson = await cartData.json(); const cartItems = cartDataJson.items; if (window._POConfig) { let hasChanged = false; let needReload = false; for (const item of cartItems) { const variantSetting = window._POConfig.variantSettings[item.id]; if (variantSetting && variantSetting.preOrderEnabled) { const itemLine = cartItems.findIndex(it => it == item); const productData = await fetch(window.Shopify.routes.root + 'products/' + item.handle + '.js', { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const prudctDataJson = await productData.json(); let formQuantityData = addQuantityToFormData(item, variantSetting); let formPropertiesData = addPropertiesToFormData(itemLine, item, variantSetting, cartDataJson.currency, prudctDataJson); if (itemPropertiesHaveChanged(item.properties, formPropertiesData.properties) || item.quantity !== formQuantityData.quantity) { let formData=formPropertiesData; if(!itemPropertiesHaveChanged(item.properties, formPropertiesData.properties)){ delete formData.properties } if(item.quantity !== formQuantityData.quantity){ needReload = true; } formData={ ...formData, quantity: formQuantityData.quantity } await fetch('/cart/change.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); hasChanged = true; } } } if (hasChanged) { hasChanged = false; if(!window.location.href.includes("products") || needReload){ needReload=false; window.location.reload(); } } } } function addQuantityToFormData(item, variantSetting) { var overallAvailable = variantSetting.overallQuantityLimit - variantSetting.totalQuantityOrdered; var fixedQuant = variantSetting.quantityLimit; let formQuantityData = { id: item.id.toString(), quantity: item.quantity }; if (variantSetting.overallQuantityLimit == 0 && variantSetting.quantityLimit == 0) { return formQuantityData; } if (overallAvailable > 0 && variantSetting.quantityLimit > 0) { fixedQuant = Math.min(overallAvailable, variantSetting.quantityLimit); if (item.quantity > variantSetting.quantityLimit || item.quantity > overallAvailable) { formQuantityData.quantity = fixedQuant; } } if (item.quantity > variantSetting.quantityLimit && variantSetting.quantityLimit != 0 && variantSetting.overallQuantityLimit == 0) { formQuantityData.quantity = variantSetting.quantityLimit; } if (item.quantity > overallAvailable && variantSetting.quantityLimit == 0 && overallAvailable > 0) { formQuantityData.quantity = overallAvailable; } return formQuantityData; } function addPropertiesToFormData(itemLine, item, variantSetting, currency, product){ const cartLabel = variantSetting.cartCheckoutLabel; let formPropertiesData = { line: parseInt(itemLine)+1, properties: { } }; if(item.selling_plan_allocation){ let properties = formPropertiesData.properties; formPropertiesData.properties = {...properties, "Pre-order": cartLabel} } if(item.selling_plan_allocation && variantSetting.showSellingPlanLabelOnCart){ let properties = formPropertiesData.properties; formPropertiesData.properties = {...properties, 'Purchase option': item.selling_plan_allocation.selling_plan.name} } if (item.selling_plan_allocation && variantSetting.showFullPriceLabelOnCart) { let properties = formPropertiesData.properties; formPropertiesData.properties = { ...properties, 'Full price': item.final_price / 100 + ' ' + currency }; } if(item.selling_plan_allocation && variantSetting.showPriceOnCheckoutLabelOnCart){ let properties = formPropertiesData.properties; if(item.properties && item.properties['Price at checkout']){ formPropertiesData.properties = {...properties, 'Price at checkout': item.properties['Price at checkout'] }; } else{ const selector = item.id+'-'+item.selling_plan_allocation.selling_plan.id+'-price-at-checkout'; let helper = document.getElementById(selector); if(helper){ formPropertiesData.properties = {...properties, 'Price at checkout': parseFloat(parseInt(helper.innerHTML)/100).toFixed(2) + ' ' + currency }; } } } return formPropertiesData; } function itemPropertiesHaveChanged(itemProperties, formDataProperties){ if(!itemProperties && formDataProperties){ return true; } if( itemProperties['Pre-order']!==formDataProperties['Pre-order'] ){ return true; } if( itemProperties['Purchase option']!==formDataProperties['Purchase option'] ){ return true; } if( itemProperties['Full price']!==formDataProperties['Full price'] ){ return true; } //Comented because product api doesnt return checkout_charge property on selling plan if (itemProperties['Price at checkout'] !== formDataProperties['Price at checkout']) { return true; } return false; } cartItem(); </script> <div class='appikon-pre-order-liquid-helper' style="display: none!important;"> </div><script> /*============================================================================== # WARNING: This file is auto-generated and any changes that are made may be lost. ==============================================================================*/ setTimeout(()=>{ let helper = document.querySelector('.appikon-pre-order-form-complement-helper-hidden'); let productDataHelper = document.querySelector('.appikon-pre-order-product-data-helper-hidden'); let product = undefined; if (productDataHelper) { product = JSON.parse(productDataHelper.dataset.product); } var spg = Array.from(helper.querySelectorAll('.purchase-option')); let originalButonText = ''; let variantSelectedReference = undefined; let KT_countdown_update = null; // ----------------------- Load jQuery -------------------------------- (function() { var head = document.getElementsByTagName('head')[0]; var startingTime = new Date().getTime(); if (typeof jQuery == 'undefined') { var jQueryScript = document.createElement('script'); jQueryScript.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'; jQueryScript.type = 'text/javascript'; head.appendChild(jQueryScript); } // Poll for jQuery to come into existance var checkReady = function(callback) { if (window.jQuery) { callback(jQuery); } else { window.setTimeout(function() { checkReady(callback); }, 20); } }; // Start polling... checkReady(function($) { $(function() { var endingTime = new Date().getTime(); var tookTime = endingTime - startingTime; console.log('jQuery is loaded, after ' + tookTime + ' milliseconds!'); }); }); })(); // ----------------------- Load jQuery -------------------------------- //----------------------- HTML elements getters - Custom theme -------------------------------- function getFormWithSellingPlan() { const variant = findSelectedVariant(); if (variant) { const variantSettings = window._POConfig.variantSettings[variant.id]; if (variantSettings && variantSettings.showPurchaseOptions !== false) { let formWithSellingPlan = document.querySelector('.appikon-pre-order-form-complement-helper'); return formWithSellingPlan; } } var forms = Array.from(document.querySelectorAll("form[action$='/cart/add']")); let formWithSellingPlan = undefined; for (const form of forms) { if (form.querySelector('[name="selling_plan"]')) { formWithSellingPlan = form; break; } } return formWithSellingPlan; } function getSellingPlanSelected() { let formWithSellingPlan = getFormWithSellingPlan(); let sellingPlan = undefined; if (formWithSellingPlan) { sellingPlan = formWithSellingPlan.querySelector('[name="selling_plan"]'); } return sellingPlan; } function getFormWithButton() { var forms = Array.from(document.querySelectorAll("form[action$='/cart/add']")); let formWithButton = undefined; for (const form of forms) { var submitButtons = Array.from(form.querySelectorAll("[type='submit']")); for (let submitButton of submitButtons) { let classList = Array.from(submitButton.classList); if (!classList.find(cl => cl === 'appikon-pre-order-button-customization')) { formWithButton = form; break; } } } return formWithButton; } function getActionButton() { if (window._POConfig && window._POConfig.selectors.atcButtonSelector && window._POConfig.selectors.atcButtonSelector !== '') { var submitButtons = Array.from(document.querySelectorAll(window._POConfig.selectors.atcButtonSelector)); for (let submitButton of submitButtons) { let classList = Array.from(submitButton.classList); if (!classList.find(cl => cl === 'appikon-pre-order-button-customization')) { return submitButton; } } return undefined; } var formWithButton = getFormWithButton(); if (formWithButton) { var submitButtons = Array.from(formWithButton.querySelectorAll("[type='submit']")); for (let submitButton of submitButtons) { let classList = Array.from(submitButton.classList); if (!classList.find(cl => cl === 'appikon-pre-order-button-customization')) { return submitButton; } } } return undefined; } function getPriceContainer() { if (window._POConfig && window._POConfig.selectors.priceContainerSelector && window._POConfig.selectors.priceContainerSelector !== '') { let priceContainer = document.querySelector(window._POConfig.selectors.priceContainerSelector); return priceContainer; } let priceContainer = undefined; if(document){ let body = document.querySelector('body'); if (body) { let main = body.querySelector('main'); if (main) { priceContainer = main.querySelector('.price'); } } } return priceContainer; } function getRegularPriceContainer() { if ( window._POConfig && window._POConfig.selectors.priceRegularValueContainerSelector && window._POConfig.selectors.priceRegularValueContainerSelector !== '' ) { let priceRegularValueContainer = document.querySelector(window._POConfig.selectors.priceRegularValueContainerSelector); return priceRegularValueContainer; } let priceContainer = getPriceContainer(); let priceRegularValue = undefined; if (priceContainer) { let priceContainerChild = priceContainer.querySelector('.price__container'); if (priceContainerChild) { let priceRegularContainer = priceContainerChild.querySelector('.price__regular'); if (priceRegularContainer) { priceRegularValue = priceRegularContainer.querySelector('.price-item'); } } } return priceRegularValue; } //----------------------- HTML elements getters - Custom theme -------------------------------- //----------------------- Listeners -------------------------------- document.addEventListener('click', function() { setTimeout(function() { let newSelectedVariant = findSelectedVariant(); if (newSelectedVariant && newSelectedVariant !== variantSelectedReference) { variantSelectedReference = newSelectedVariant; showOrHidePreOrder(); } }, 100); }); document.addEventListener('change', function(event) { setTimeout(function() { showOrHidePreOrder(); }, 100); }); let sellingPlanSelected = getSellingPlanSelected(); if (sellingPlanSelected) { sellingPlanSelected.addEventListener('change', function(e) { showPreOrderDiscount(); }); } //----------------------- Listeners -------------------------------- //----------------------- Logic -------------------------------- function findSelectedVariant() { //Find in location url the value for variant param let url = new URL(window.location.href); let variantId = url.searchParams.get('variant'); if (variantId) { let selectedVariantId = parseInt(variantId); let selectedVariant; for (let i = 0; i < product.variants.length; i++) { if (product.variants[i].id === selectedVariantId) { selectedVariant = product.variants[i]; break; } } return selectedVariant; } //Find if there is a select with class single-option-selector by title let singleOptionSelectors = document.querySelectorAll('select.single-option-selector'); let selectorValuesArray = []; if (singleOptionSelectors != null) { for (let singleOptionSelector of singleOptionSelectors) { if (singleOptionSelector != null && singleOptionSelector.selectedIndex != null && singleOptionSelector.selectedIndex !== -1) { selectorValuesArray.push(singleOptionSelector[singleOptionSelector.selectedIndex].value); } } } if (selectorValuesArray.length > 0) { let selectedVariantTitle = selectorValuesArray.join(' / '); for (let i = 0; i < product.variants.length; i++) { if (product.variants[i].title === selectedVariantTitle) { return product.variants[i]; } } } // Select by default the first variant if (window._POConfig && window._POConfig.product) { let selectedVariant = window._POConfig.product.selected_or_first_available_variant; return selectedVariant; } return undefined; } function showOrHidePreOrder() { const variant = findSelectedVariant(); if (window._POConfig && variant) { const variantSettings = window._POConfig.variantSettings[variant.id]; const variantData = window._POConfig.product.variants.find(item => item.id.toString() === variant.id.toString()); const cartQuantity = getVariantCartQuantity(variant.id); if ( //solo se muestra el bloque si: variantData && //existe la variant data variantSettings.preOrderEnabled && //la variante esta habilitada para pre order variantData.inventory_quantity <= 0 && //su inventario es igual o menor a cero variantData.available //si tiene continue selling without stock habilitado ) { // Chequea si existe la configuracion de la variante para analizar si existe una configuracion de tiempo durante el cual tiene que estar habilitado el pre order if (variantSettings.preOrderTimeEnable && variantSettings.dateStart && variantSettings.dateStop) { const now = new Date(); if (parseInt(variantSettings.dateStart) <= now.getTime() && parseInt(variantSettings.dateStop) >= now.getTime()) { createCustomCSS(); showPurchaseOptions(); showPreOrderButton(); showOrHideCountDownTimer(true); showPreOrderTag(); } else { createCustomCSS(); showSoldOutMessage(); hidePurchaseOptions(); showOrHideCountDownTimer(true); showPreOrderTag(); } } else if ( (variantSettings.overallQuantityLimit > 0 && variantSettings.overallQuantityLimit <= variantSettings.totalQuantityOrdered + cartQuantity) || (variantSettings.quantityLimit > 0 && variantSettings.quantityLimit <= cartQuantity) ) { //Condiciones: //1- Si se tiene un limite de cantidad TOTAL (implica la cantidad total que se puede comprar de un producto: overallQuantityLimit) seteado y se supera ese limite sumando la cantidad que hay compradas en todas las ordenes mas la cantidad que el usuario tiene en el carrito (que puede ser cero) -> se muestra sold out //2- Si se tiene un limite de cantidad POR ORDEN y el usuario tiene en su carrito esa cantidad o mas -> se muestra sold out createCustomCSS(); showSoldOutMessage(); hidePurchaseOptions(); showOrHideCountDownTimer(true); showPreOrderTag(); } else { createCustomCSS(); showPurchaseOptions(); showPreOrderButton(); showOrHideCountDownTimer(true); showPreOrderTag(); } } else { hidePurchaseOptions(); hidePreOrderButton(); hideSoldOutMessage(); showOrHideCountDownTimer(false); hidePreOrderTag(); } } else { hidePurchaseOptions(); hidePreOrderButton(); hideSoldOutMessage(); showOrHideCountDownTimer(false); hidePreOrderTag(); } } function createCustomCSS() { if (!document.getElementById('AppikonCustomAndPOLabelStyle')) { var AppikonCustomAndPOLabelstyle = document.createElement('style'); AppikonCustomAndPOLabelstyle.id = 'AppikonCustomAndPOLabelStyle'; AppikonCustomAndPOLabelstyle.innerHTML = window._POConfig.defaultSetting.collectionPagePreOrderLabelCSS; document.head.appendChild(AppikonCustomAndPOLabelstyle); } } function getVariantCartQuantity(variantId) { if (window._POConfig && window._POConfig.cart && window._POConfig.cart.items) { const cartItems = window._POConfig.cart.items; for (let item of cartItems) { if (item.id === variantId) { return item.quantity; } } } return 0; } function showPurchaseOptions() { const variant = findSelectedVariant(); const variantSettings = window._POConfig.variantSettings[variant.id]; if (variantSettings.showPurchaseOptions !== false) { let helper = document.querySelector('.appikon-pre-order-form-complement-helper-hidden'); let purchaseOptions = document.querySelector('.appikon-pre-order-form-complement-helper'); let actionButton = getActionButton(); if (helper && actionButton && !purchaseOptions) { purchaseOptions = helper.cloneNode(true); purchaseOptions.classList.remove('appikon-pre-order-form-complement-helper-hidden'); purchaseOptions.classList.remove('hidden'); purchaseOptions.classList.add('appikon-pre-order-form-complement-helper'); let purchaseOptionsInputs = Array.from(purchaseOptions.querySelectorAll('.purchase-option')); for (const input of purchaseOptionsInputs) { input.addEventListener('change', function(e) { let formWithSellingPlan = getFormWithSellingPlan(); let radio = input.querySelector('input[type="radio"]'); if (formWithSellingPlan && radio.checked) { let sellingPlan = getSellingPlanSelected(); sellingPlan.value = input.id; let sellingPlanDescription = purchaseOptions.querySelector('.appikon-pre-order-purchase-option-description'); const sellingPlanGroupData = product.selling_plan_groups.find( sellingPlanGroup => sellingPlanGroup.selling_plans[0].id.toString() === input.id.toString() ); sellingPlanDescription.innerHTML = sellingPlanGroupData.selling_plans[0].description; } showPreOrderDiscount(); }); } actionButton.before(purchaseOptions); } if (purchaseOptions) { showOrHideSellingPlans(purchaseOptions); } let variant = findSelectedVariant(); let formWithSellingPlan = getFormWithSellingPlan(); if (variant && formWithSellingPlan) { let sellingPlan = getSellingPlanSelected(); let existSellingPlan = variant.selling_plan_allocations.find( variantSellingPlan => variantSellingPlan.selling_plan_id.toString() === sellingPlan.value.toString() ); if (!existSellingPlan) { let newValue; if (variant.selling_plan_allocations.length > 0) { newValue = variant.selling_plan_allocations[0].selling_plan_id; } else { newValue = ''; } let purchaseOptions = document.querySelector('.appikon-pre-order-form-complement-helper'); if (purchaseOptions) { let purchaseOptionsInputs = Array.from(purchaseOptions.querySelectorAll('.purchase-option')); for (const input of purchaseOptionsInputs) { let radio = input.querySelector('input[type="radio"]'); if (input.id.toString() === newValue.toString()) { radio.checked = true; let sellingPlanDescription = purchaseOptions.querySelector('.appikon-pre-order-purchase-option-description'); const sellingPlanGroupData = product.selling_plan_groups.find( sellingPlanGroup => sellingPlanGroup.selling_plans[0].id.toString() === input.id.toString() ); sellingPlanDescription.innerHTML = sellingPlanGroupData.selling_plans[0].description; } else { radio.checked = false; } } } sellingPlan.value = newValue; } } } else { hidePurchaseOptions(); } } function hidePurchaseOptions() { let purchaseOptions = document.querySelector('.appikon-pre-order-form-complement-helper'); if (purchaseOptions) { purchaseOptions.remove(); } } function showOrHideSellingPlans(purchaseOptions) { purchaseOptions = document.querySelector('.appikon-pre-order-form-complement-helper'); const variant = findSelectedVariant(); var spgOptions = Array.from(purchaseOptions.querySelectorAll('.purchase-option')); const variantSettings = window._POConfig.variantSettings[variant.id]; if (variant.selling_plan_allocations.length > 0) { if (variantSettings.showPurchaseOptionsOnSingleSellingPlan !== true) { if (variant.selling_plan_allocations.length == 1) { purchaseOptions.classList.add('appikon-pre-order-single-option-hidden'); } else { purchaseOptions.classList.remove('appikon-pre-order-single-option-hidden'); } } else { purchaseOptions.classList.remove('appikon-pre-order-single-option-hidden'); } for (const sp of spgOptions) { const existSellingPlan = variant.selling_plan_allocations.find( sellingPlan => sellingPlan.selling_plan_id.toString() === sp.id.toString() ); if (existSellingPlan) { sp.classList.remove('hidden'); } else { sp.classList.add('hidden'); } } } } function showPreOrderButton() { hideSoldOutMessage(true); //hidePreOrderButton(true); const submitButton = getActionButton(); if (submitButton) { const variant = findSelectedVariant(); const variantSettings = window._POConfig.variantSettings[variant.id]; let preOrderButtonContainerExists = document.querySelector('.appikon-pre-order-button'); if(preOrderButtonContainerExists){ let preOrderButton = preOrderButtonContainerExists.querySelector('.appikon-pre-order-button-customization'); if(!preOrderButton){ preOrderButtonContainerExists.remove(); preOrderButtonContainerExists = null; } } if (!preOrderButtonContainerExists) { const preOrderButtonContainerHidden = document.querySelector('.appikon-pre-order-button-hidden'); const preOrderButtonContainer = preOrderButtonContainerHidden.cloneNode(true); preOrderButtonContainer.classList.remove('appikon-pre-order-button-hidden'); preOrderButtonContainer.classList.remove('hidden'); preOrderButtonContainer.classList.add('appikon-pre-order-button'); let preOrderButton = preOrderButtonContainer.querySelector('.appikon-pre-order-button-customization'); // copy css classes from submit button to pre order button preOrderButton.classList.add(...submitButton.classList); preOrderButton.classList.remove('hidden'); preOrderButton.innerHTML = variantSettings.buttonText || window._POConfig.defaultSetting.buttonText; //Needed workaround for themes that needs a span element inside button to not fail on click event const span = document.createElement('span'); span.classList.add('hidden'); preOrderButton.appendChild(span); // add event listener to pre order button preOrderButton.addEventListener('click', function(e) { setTimeout(() => { cartItem(); }, 700); }); if (variantSettings.buttonMessageVisibility === 'ON_HOVER') { preOrderButton.title = variantSettings.buttonMessage || window._POConfig.defaultSetting.buttonMessage; let preOrderButtonMessage = preOrderButtonContainer.querySelector('.appikon-pre-order-button-message'); if (preOrderButtonMessage) { preOrderButtonMessage.classList.add('hidden'); } } else { let preOrderButtonMessage = preOrderButtonContainer.querySelector('.appikon-pre-order-button-message'); preOrderButtonMessage.classList.remove('hidden'); preOrderButtonMessage.innerHTML = variantSettings.buttonMessage || window._POConfig.defaultSetting.buttonMessage; } let formWithSellingPlan = getFormWithSellingPlan(); if (formWithSellingPlan) { let sellingPlan = getSellingPlanSelected(); if (!sellingPlan || sellingPlan.value === '') { preOrderButton.disabled = true; } else { let existSellingPlanOnVariant = variant.selling_plan_allocations.find( variantSellingPlan => variantSellingPlan.selling_plan_id.toString() === sellingPlan.value.toString() ); if (!existSellingPlanOnVariant) { preOrderButton.disabled = true; } else { preOrderButton.disabled = false; } } } else { preOrderButton.disabled = true; } //insert submitButton.before(preOrderButtonContainer); for (let i = 0; i < 1; i = i + 1) { setTimeout(() => { hideOtherButtonsInForm(); }, i); } } else { let preOrderButton = preOrderButtonContainerExists.querySelector('.appikon-pre-order-button-customization'); preOrderButton.innerHTML = variantSettings.buttonText || window._POConfig.defaultSetting.buttonText; //Needed workaround for themes that needs a span element inside button to not fail on click event const span = document.createElement('span'); span.classList.add('hidden'); preOrderButton.appendChild(span); if (variantSettings.buttonMessageVisibility === 'ON_HOVER') { preOrderButton.title = variantSettings.buttonMessage || window._POConfig.defaultSetting.buttonMessage; let preOrderButtonMessage = preOrderButtonContainerExists.querySelector('.appikon-pre-order-button-message'); if (preOrderButtonMessage) { preOrderButtonMessage.classList.add('hidden'); } } else { let preOrderButtonMessage = preOrderButtonContainerExists.querySelector('.appikon-pre-order-button-message'); preOrderButtonMessage.classList.remove('hidden'); preOrderButtonMessage.innerHTML = variantSettings.buttonMessage || window._POConfig.defaultSetting.buttonMessage; } let formWithSellingPlan = getFormWithSellingPlan(); if (formWithSellingPlan) { let sellingPlan = getSellingPlanSelected(); if (!sellingPlan || sellingPlan.value === '') { preOrderButton.disabled = true; } else { let existSellingPlanOnVariant = variant.selling_plan_allocations.find( variantSellingPlan => variantSellingPlan.selling_plan_id.toString() === sellingPlan.value.toString() ); if (!existSellingPlanOnVariant) { preOrderButton.disabled = true; } else { preOrderButton.disabled = false; } } let errorMessage = document.querySelector('.appikon-pre-order-purchase-option-error'); if (errorMessage) { if (preOrderButton.disabled) { errorMessage.classList.remove('hidden'); } else { errorMessage.classList.add('hidden'); } } } else { preOrderButton.disabled = true; } } } } function showSoldOutMessage() { hidePreOrderButton(true); const submitButton = getActionButton(); if (submitButton) { const variant = findSelectedVariant(); const variantSettings = window._POConfig.variantSettings[variant.id]; const preOrderSoldOutMessageExists = document.querySelector('.appikon-pre-order-sold-out-message'); if (!preOrderSoldOutMessageExists) { const preOrderSoldOutMessageHidden = document.querySelector('.appikon-pre-order-sold-out-message-hidden'); //clone const preOrderSoldOutMessage = preOrderSoldOutMessageHidden.cloneNode(true); preOrderSoldOutMessage.classList.remove('appikon-pre-order-sold-out-message-hidden'); preOrderSoldOutMessage.classList.add('appikon-pre-order-sold-out-message'); preOrderSoldOutMessage.innerHTML = variantSettings.preOrderClosedMessage; preOrderSoldOutMessage.classList.add(...submitButton.classList); preOrderSoldOutMessage.classList.remove('hidden'); //insert submitButton.before(preOrderSoldOutMessage); for (let i = 0; i < 1; i = i + 1) { setTimeout(() => { hideOtherButtonsInForm(); }, i); } } } } function hidePreOrderButton(hideOtherButtons) { let preOrderButtonContainer = document.querySelector('.appikon-pre-order-button'); if (preOrderButtonContainer) { preOrderButtonContainer.remove(); if (hideOtherButtons) { hideOtherButtonsInForm(); } else { showOtherButtonsInForm(); } } } function hideSoldOutMessage(hideOtherButtons) { let preOrderSoldOutMessage = document.querySelector('.appikon-pre-order-sold-out-message'); if (preOrderSoldOutMessage) { preOrderSoldOutMessage.remove(); if (hideOtherButtons) { hideOtherButtonsInForm(); } else { showOtherButtonsInForm(); } } } function showOtherButtonsInForm() { if (window._POConfig && window._POConfig.selectors.payment_button_selectors) { var paymentButton = document.querySelector(window._POConfig.selectors.payment_button_selectors); if (paymentButton) { paymentButton.classList.remove('hidden'); paymentButton.disabled = false; } } let actionButton = getActionButton(); if (actionButton) { actionButton.classList.remove('hidden'); actionButton.disabled = false; hidePreOrderTag(); if (actionButton instanceof HTMLInputElement) { console.log('is input'); actionButton.classList.remove('appikon-pre-order-hide-input'); } } let preOrderButton = document.querySelector('.appikon-pre-order-button-customization'); if (preOrderButton) { preOrderButton.classList.add('hidden'); } } function hideOtherButtonsInForm() { if (window._POConfig && window._POConfig.selectors.payment_button_selectors) { var paymentButton = document.querySelector(window._POConfig.selectors.payment_button_selectors); if (paymentButton) { paymentButton.classList.add('hidden'); paymentButton.disabled = false; } } let actionButton = getActionButton(); if (actionButton) { actionButton.classList.add('hidden'); actionButton.disabled = false; if (actionButton instanceof HTMLInputElement) { console.log('is input'); actionButton.classList.add('appikon-pre-order-hide-input'); } } let preOrderButton = document.querySelector('.appikon-pre-order-button-customization'); if (preOrderButton) { preOrderButton.classList.remove('hidden'); } } function createUserCustomizations() { if (window._POConfig) { createButtonCustomizations(); createPillCustomizations(); } } function createButtonCustomizations() { if (window._POConfig) { var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '.appikon-pre-order-button-customization { background-color: ' + (window._POConfig.button.buttonBackgroundColor || 'transparent') + '; border-color: ' + (window._POConfig.button.buttonBorderColor || 'black') + '; border-radius: ' + window._POConfig.button.buttonBorderRadius + 'px; border-width: ' + (window._POConfig.button.buttonBorderWidth || '1') + 'px; color: ' + (window._POConfig.button.buttonColor || 'black') + '; padding-left: ' + window._POConfig.button.buttonPadding + 'px; padding-right: ' + window._POConfig.button.buttonPadding + 'px; font-size: ' + window._POConfig.button.buttonFontSize + 'px; font-family: ' + window._POConfig.button.buttonFontFamily + '; font-weight: ' + window._POConfig.button.buttonFontWeight + '; text-decoration: ' + window._POConfig.button.buttonTextDecoration + '; margin-top: ' + window._POConfig.button.buttonMarginTop + 'px; margin-bottom: ' + window._POConfig.button.buttonMarginBottom + 'px;' + 'border-style: solid;' + '}'; document.getElementsByTagName('head')[0].appendChild(style); } } function createPillCustomizations() { if (window._POConfig) { //Toma la customizacion del boton y la aplica al pill (solo colores y bordes, no toda la customizacion) var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '.appikon-pre-order-pill-customization { background-color: ' + (window._POConfig.button.buttonBackgroundColor || 'transparent') + '; border-color: ' + (window._POConfig.button.buttonBorderColor || 'black') + '; border-radius: ' + window._POConfig.button.buttonBorderRadius + 'px; border-width: ' + (window._POConfig.button.buttonBorderWidth || '1') + 'px; color: ' + (window._POConfig.button.buttonColor || 'black') + '; padding-left: ' + window._POConfig.button.buttonPadding + 'px; padding-right: ' + window._POConfig.button.buttonPadding + 'px; font-size: ' + window._POConfig.button.buttonFontSize + 'px; font-family: ' + window._POConfig.button.buttonFontFamily + '; font-weight: ' + window._POConfig.button.buttonFontWeight + '; text-decoration: ' + window._POConfig.button.buttonTextDecoration + '; margin-top: ' + window._POConfig.button.buttonMarginTop + 'px; margin-bottom: ' + window._POConfig.button.buttonMarginBottom + 'px;' + 'margin-left: 10px; border-style: solid;' + '}'; // style.innerHTML = // '.appikon-pre-order-pill-customization { background-color: ' + // (window._POConfig.button.buttonBackgroundColor || 'transparent') + // '; border-color: ' + // window._POConfig.button.buttonBorderColor + // '; border-width: ' + // (window._POConfig.button.buttonBorderWidth || '1') + // 'px; color: ' + // (window._POConfig.button.buttonColor || 'black') + // '; font-size: ' + // (window._POConfig.button.buttonFontSize || '14') + // 'px; font-family: ' + // window._POConfig.button.buttonFontFamily + // '; font-weight: ' + // window._POConfig.button.buttonFontWeight + // '; text-decoration: ' + // window._POConfig.button.buttonTextDecoration + // '; margin-left: 10px;' + // 'border-style: solid;' + // '}'; document.getElementsByTagName('head')[0].appendChild(style); } } function showOrHideCountDownTimer(show) { if (window._POConfig) { const preOrderButton = document.querySelector('.appikon-pre-order-button'); const soldOutMessage = document.querySelector('.appikon-pre-order-sold-out-message'); if (preOrderButton || soldOutMessage) { const countDownTimer = document.querySelector('.appikon-pre-order-countdown-timer-hidden'); const countDownTimerHeader = countDownTimer.querySelector('.appikon-pre-order-countdown-timer-header'); const countDownTimerMessage = countDownTimer.querySelector('.appikon-pre-order-countdown-timer-message'); if (show && countDownTimer && countDownTimerHeader && countDownTimerMessage) { const variant = findSelectedVariant(); const variantSettings = window._POConfig.variantSettings[variant.id]; if (variantSettings.comingSoonEnable && variantSettings.comingSoonAvailableFrom) { countDownTimerHeader.innerHTML = variantSettings.comingSoonHeader; countDownTimerMessage.innerHTML = variantSettings.comingSoonMessage; const second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24; const countDown = new Date(parseInt(variantSettings.comingSoonAvailableFrom)).getTime(); if (KT_countdown_update !== null) { clearInterval(KT_countdown_update); } let countDownTimerCopy = document.querySelector('.appikon-pre-order-countdown-timer'); if (!countDownTimerCopy) { countDownTimerCopy = countDownTimer.cloneNode(true); countDownTimerCopy.classList.remove('appikon-pre-order-countdown-timer-hidden'); countDownTimerCopy.classList.add('appikon-pre-order-countdown-timer'); const actionButton = getActionButton(); if (actionButton) { actionButton.after(countDownTimerCopy); } else { const soldOutMessage = document.querySelector('.appikon-pre-order-sold-out-message'); if (soldOutMessage) { soldOutMessage.after(countDownTimerCopy); } } } let now = new Date().getTime(); if (countDown - now < 0) { if (KT_countdown_update !== null) { clearInterval(KT_countdown_update); } const countDownTimer = document.querySelector('.appikon-pre-order-countdown-timer'); if (countDownTimer) { countDownTimer.remove(); } } else { countDownTimerCopy.classList.remove('hidden'); loadAppkionTimer(); } } else { if (KT_countdown_update !== null) { clearInterval(KT_countdown_update); } const countDownTimer = document.querySelector('.appikon-pre-order-countdown-timer'); if (countDownTimer) { countDownTimer.remove(); } } } else { if (KT_countdown_update !== null) { clearInterval(KT_countdown_update); } const countDownTimer = document.querySelector('.appikon-pre-order-countdown-timer'); if (countDownTimer) { countDownTimer.remove(); } } } else { if (KT_countdown_update !== null) { clearInterval(KT_countdown_update); } const countDownTimer = document.querySelector('.appikon-pre-order-countdown-timer'); if (countDownTimer) { countDownTimer.remove(); } } } } function showPreOrderTag() { for (let i = 0; i < 1000; i++) { setTimeout(function() { let tagExists = document.querySelector('.appikon-pre-order-tag'); if (!tagExists) { let priceContainer = getPriceContainer(); const node = document.createElement('span'); node.classList.add('appikon-pre-order-tag'); node.classList.add('appikon-pre-order-pill-customization'); node.innerHTML = 'Pre-order'; if (priceContainer) { priceContainer.appendChild(node); } } showPreOrderDiscount(); }, i); } } function hidePreOrderTag() { // for (let i = 0; i < 1000; i++) { // setTimeout(function() { // let tagExists = document.querySelector('.appikon-pre-order-tag'); // if (tagExists) { // tagExists.remove(); // let actionButton = getActionButton(); // if (actionButton) { // actionButton.disabled = false; // } // if (window._POConfig && window._POConfig.selectors.payment_button_selectors) { // var paymentButton = document.querySelector(window._POConfig.selectors.payment_button_selectors); // if (paymentButton) { // paymentButton.disabled = false; // } // } // } // hidePreOrderDiscount(); // }, i); // } setTimeout(function() { let tagExists = document.querySelector('.appikon-pre-order-tag'); if (tagExists) { tagExists.remove(); let actionButton = getActionButton(); if (actionButton) { actionButton.disabled = false; } if (window._POConfig && window._POConfig.selectors.payment_button_selectors) { var paymentButton = document.querySelector(window._POConfig.selectors.payment_button_selectors); if (paymentButton) { paymentButton.disabled = false; } } } hidePreOrderDiscount(); }, 1000); } function showPreOrderDiscount() { let priceRegularValueContainer = getRegularPriceContainer(); let sellingPlanSelected = getSellingPlanSelected(); if (priceRegularValueContainer && sellingPlanSelected) { const variant = findSelectedVariant(); const sellingPlanData = variant.selling_plan_allocations.find( sp => sp.selling_plan_id.toString() === sellingPlanSelected.value.toString() ); if (sellingPlanData && sellingPlanData.price_adjustments.length > 0) { const price = Number.parseFloat(sellingPlanData.price / 100).toFixed(2); let preOrderDiscountContainer = document.querySelector('.appikon-pre-order-discount'); if (!preOrderDiscountContainer) { // si no se creo ese container lo crea const node = document.createElement('div'); node.classList = { ...priceRegularValueContainer.classList }; node.classList.add('appikon-pre-order-discount'); preOrderDiscountContainer = node; //asocia ese container creado al del tag pre order let preOrderTag = document.querySelector('.appikon-pre-order-tag'); if (preOrderTag) { preOrderTag.before(preOrderDiscountContainer); } } let newHtml = price + (window._POConfig && window._POConfig.cart && window._POConfig.cart.currency ? window._POConfig.cart.currency : ''); if (preOrderDiscountContainer.innerHTML.replace(' ', '') !== newHtml.replace(' ', '')) { preOrderDiscountContainer.innerHTML = newHtml.replace(' ', ''); } let classes = priceRegularValueContainer.classList; if (!classes.contains('appikon-pre-order-price-line-through')) { classes.add('appikon-pre-order-price-line-through'); } } else { hidePreOrderDiscount(); } } else { hidePreOrderDiscount(); } } function hidePreOrderDiscount() { let priceRegularValueContainer = getRegularPriceContainer(); if (priceRegularValueContainer) { priceRegularValueContainer.classList.remove('appikon-pre-order-price-line-through'); } let preOrderDiscountContainer = document.querySelector('.appikon-pre-order-discount'); if (preOrderDiscountContainer) { preOrderDiscountContainer.remove(); } } //--------------------New timer-------------------- function loadAppkionTimer() { function playanimation(old_value_po, new_value_po, type) { old_value_po = '0' + old_value_po; old_value_po = old_value_po.split('').reverse(); new_value_po = '0' + new_value_po; new_value_po = new_value_po.split('').reverse(); var left = '.countdown-KT .' + type + '0'; var right = '.countdown-KT .' + type + '1'; var isRightFlip = false; var isLeftFlip = false; isRightFlip = jQuery(right + ' .card-text-KT').text() != jQuery(right + ' .card-back-text-KT').text(); isLeftFlip = jQuery(left + ' .card-text-KT').text() != jQuery(left + ' .card-back-text-KT').text(); if (isRightFlip) { jQuery(right).addClass('flip-KT'); } if (isLeftFlip) { jQuery(left).addClass('flip-KT'); } setTimeout(function() { jQuery(right + ' .card-text-KT').html(old_value_po[0]); jQuery(right + ' .card-bottom-back-text-KT').html(old_value_po[0]); jQuery(right + ' .card-back-text-KT').html(new_value_po[0]); jQuery(right + ' .card-bottom-text-KT').html(new_value_po[0]); jQuery(left + ' .card-text-KT').html(old_value_po[1]); jQuery(left + ' .card-bottom-back-text-KT').html(old_value_po[1]); jQuery(left + ' .card-back-text-KT').html(new_value_po[1]); jQuery(left + ' .card-bottom-text-KT').html(new_value_po[1]); if (isLeftFlip) { jQuery(left).removeClass('flip-KT'); } if (isRightFlip) { jQuery(right).removeClass('flip-KT'); } }, 900); } function update_KT_CT() { var days_old_po = Math.floor(KT_TOTAL / (60 * 60 * 24)); var hrs_old_po = Math.floor((KT_TOTAL % (60 * 60 * 24)) / (60 * 60)); var mins_old_po = Math.floor((KT_TOTAL % (60 * 60)) / 60); var secs_old_po = KT_TOTAL % 60; KT_TOTAL--; var days_po = Math.floor(KT_TOTAL / (60 * 60 * 24)); var hrs_po = Math.floor((KT_TOTAL % (60 * 60 * 24)) / (60 * 60)); var mins_po = Math.floor((KT_TOTAL % (60 * 60)) / 60); var secs_po = KT_TOTAL % 60; if (KT_TOTAL < 0) { jQuery('.countdown-KT-full-width').css('display', 'none'); clearInterval(KT_countdown_update); return; } playanimation(days_old_po, days_po, 'days'); playanimation(hrs_old_po, hrs_po, 'hrs'); playanimation(mins_old_po, mins_po, 'mins'); playanimation(secs_old_po, secs_po, 'secs'); } function initDigit(old_value_po, new_value_po, type) { old_value_po = '0' + old_value_po; old_value_po = old_value_po.split('').reverse(); new_value_po = '0' + new_value_po; new_value_po = new_value_po.split('').reverse(); var left = '.countdown-KT .' + type + '0'; var right = '.countdown-KT .' + type + '1'; jQuery(right + ' .card-text-KT').html(old_value_po[0]); jQuery(right + ' .card-bottom-back-text-KT').html(old_value_po[0]); jQuery(right + ' .card-back-text-KT').html(new_value_po[0]); jQuery(right + ' .card-bottom-text-KT').html(new_value_po[0]); jQuery(left + ' .card-text-KT').html(old_value_po[1]); jQuery(left + ' .card-bottom-back-text-KT').html(old_value_po[1]); jQuery(left + ' .card-back-text-KT').html(new_value_po[1]); jQuery(left + ' .card-bottom-text-KT').html(new_value_po[1]); } function initValues() { var days_old_po = Math.floor(KT_TOTAL / (60 * 60 * 24)); var hrs_old_po = Math.floor((KT_TOTAL % (60 * 60 * 24)) / (60 * 60)); var mins_old_po = Math.floor((KT_TOTAL % (60 * 60)) / 60); var secs_old_po = KT_TOTAL % 60; KT_TOTAL--; var days_po = Math.floor(KT_TOTAL / (60 * 60 * 24)); var hrs_po = Math.floor((KT_TOTAL % (60 * 60 * 24)) / (60 * 60)); var mins_po = Math.floor((KT_TOTAL % (60 * 60)) / 60); var secs_po = KT_TOTAL % 60; initDigit(days_old_po, days_po, 'days'); initDigit(hrs_old_po, hrs_po, 'hrs'); initDigit(mins_old_po, mins_po, 'mins'); initDigit(secs_old_po, secs_po, 'secs'); } function start_Countdown_KT() { if (KT_countdown_update) { clearInterval(KT_countdown_update); } var variant = findSelectedVariant(); const variantSetting = window._POConfig.variantSettings[variant.id]; KT_TOTAL = variantSetting ? Math.round((variantSetting.comingSoonAvailableFrom - Date.now()) / 1000) : -1; if (variantSetting.comingSoonEnable) { var n = 2; while (KT_TOTAL <= 0) { KT_TOTAL = Math.round((variantSetting.comingSoonAvailableFrom + n * 86400 - Date.now()) / 1000); n = n * 2; } } if (KT_TOTAL < 0) { return; } setTimeout(function() { initValues(); }, 1000); KT_countdown_update = window.setInterval(() => { update_KT_CT(); }, 1000); jQuery('.countdown-KT-full-width').removeClass('hide-KT'); jQuery('.countdown-KT-full-width').addClass('fade-in-KT'); } //only call if jQuery is loaded if (window.jQuery) { start_Countdown_KT(); } else { window.setTimeout(function() { loadAppkionTimer(); }, 20); } } //--------------------New timer-------------------- //--------------------Add cart items properties-------------------- //Used to add properties to item when it is added to cart async function cartItem() { const cartData = await fetch('/cart.js', { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const cartDataJson = await cartData.json(); const cartItems = cartDataJson.items; if (window._POConfig) { let hasChanged = false; let needReload = false; for (const item of cartItems) { const variantSetting = window._POConfig.variantSettings[item.id]; if (variantSetting && variantSetting.preOrderEnabled) { const itemLine = cartItems.findIndex(it => it == item); let formQuantityData = addQuantityToFormData(item, variantSetting); let formPropertiesData = addPropertiesToFormData(itemLine, item, variantSetting, cartDataJson.currency); if (itemPropertiesHaveChanged(item.properties, formPropertiesData.properties) || item.quantity !== formQuantityData.quantity) { let formData = formPropertiesData; if (!itemPropertiesHaveChanged(item.properties, formPropertiesData.properties)) { delete formData.properties; } if (item.quantity !== formQuantityData.quantity) { needReload = true; } formData = { ...formData, quantity: formQuantityData.quantity }; await fetch('/cart/change.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); hasChanged = true; } } } if (hasChanged) { hasChanged = false; if (needReload) { needReload = false; location.reload(); } } } } function addQuantityToFormData(item, variantSetting) { var overallAvailable = variantSetting.overallQuantityLimit - variantSetting.totalQuantityOrdered; var fixedQuant = variantSetting.quantityLimit; let formQuantityData = { id: item.id.toString(), quantity: item.quantity }; if (variantSetting.overallQuantityLimit == 0 && variantSetting.quantityLimit == 0) { return formQuantityData; } if (overallAvailable > 0 && variantSetting.quantityLimit > 0) { fixedQuant = Math.min(overallAvailable, variantSetting.quantityLimit); if (item.quantity > variantSetting.quantityLimit || item.quantity > overallAvailable) { formQuantityData.quantity = fixedQuant; } } if (item.quantity > variantSetting.quantityLimit && variantSetting.quantityLimit != 0 && variantSetting.overallQuantityLimit == 0) { formQuantityData.quantity = variantSetting.quantityLimit; } if (item.quantity > overallAvailable && variantSetting.quantityLimit == 0 && overallAvailable > 0) { formQuantityData.quantity = overallAvailable; } return formQuantityData; } function addPropertiesToFormData(itemLine, item, variantSetting, currency) { const cartLabel = variantSetting.cartCheckoutLabel; let formPropertiesData = { line: parseInt(itemLine) + 1, properties: {} }; if (item.selling_plan_allocation) { let properties = formPropertiesData.properties; formPropertiesData.properties = { ...properties, 'Pre-order': cartLabel }; } if (item.selling_plan_allocation && variantSetting.showSellingPlanLabelOnCart) { let properties = formPropertiesData.properties; formPropertiesData.properties = { ...properties, 'Purchase option': item.selling_plan_allocation.selling_plan.name }; } if (item.selling_plan_allocation && variantSetting.showFullPriceLabelOnCart) { let properties = formPropertiesData.properties; formPropertiesData.properties = { ...properties, 'Full price': item.final_price / 100 + ' ' + currency }; } if (item.selling_plan_allocation && variantSetting.showPriceOnCheckoutLabelOnCart) { if (product.selling_plan_groups && product.selling_plan_groups.length > 0) { const sellingPlanGroup = product.selling_plan_groups.find( spg => spg.selling_plans[0].id.toString() === item.selling_plan_allocation.selling_plan.id.toString() ); if (sellingPlanGroup) { if (sellingPlanGroup.selling_plans[0].checkout_charge) { let value; if (sellingPlanGroup.selling_plans[0].checkout_charge.value_type === 'percentage') { value = Number.parseFloat((item.final_price / 100) * (sellingPlanGroup.selling_plans[0].checkout_charge.value / 100)).toFixed( 2 ); } if (sellingPlanGroup.selling_plans[0].checkout_charge.value_type === 'price') { value = sellingPlanGroup.selling_plans[0].checkout_charge.value / 100; } let properties = formPropertiesData.properties; formPropertiesData.properties = { ...properties, 'Price at checkout': value + ' ' + currency }; } } } } return formPropertiesData; } function itemPropertiesHaveChanged(itemProperties, formDataProperties) { if (!itemProperties && formDataProperties) { return true; } if (itemProperties['Pre-order'] !== formDataProperties['Pre-order']) { return true; } if (itemProperties['Purchase option'] !== formDataProperties['Purchase option']) { return true; } if (itemProperties['Full price'] !== formDataProperties['Full price']) { return true; } if (itemProperties['Price at checkout'] !== formDataProperties['Price at checkout']) { return true; } return false; } //--------------------Add cart items properties-------------------- //--------------------On page load-------------------- function onLoad() { showOrHidePreOrder(); createUserCustomizations(); } setTimeout(() => { onLoad(); }, 500); document.addEventListener('DOMContentLoaded', onLoad); //--------------------On page load-------------------- }, 300); </script><style type="text/css"> .hidden { display: none!important; } .appikon-pre-order-tag { border-radius: 19px; padding: 4px 8px; border-style: solid; } .appikon-pre-order-discount-hidden{ display:none; } .appikon-pre-order-price-line-through{ text-decoration: line-through; } .appikon-pre-order-hide-input{ position: absolute; left: -9999px; } .appikon-pre-order-single-option-hidden{ display: none; } .appikon-pre-order-countdown-timer li { display: inline-block; font-size: 14px; list-style-type: none; padding: 4px; } .appikon-pre-order-countdown-timer li span { display: block; font-size: 14px; } @media all and (max-width: 768px) { .appikon-pre-order-countdown-timer h1 { font-size: calc(1.5rem * var(--smaller)); } .appikon-pre-order-countdown-timer li { font-size: calc(1.125rem * var(--smaller)); } .appikon-pre-order-countdown-timer li span { font-size: calc(3.375rem * var(--smaller)); } } .countdown-KT-full-width { width: 100% } @media (min-width: 981px) { .countdown-KT-full-width { text-align: center } } @media (max-width: 980px) { .countdown-KT-full-width { text-align: center } } .countdown-KT { margin-top: 0; display: inline-block; font-family: Arial, Helvetica, sans-serif; line-height: 1.3 } .countdown-KT .countdown-section-KT { display: inline-block } .countdown-KT .separator-KT { color: rgba(0, 0, 0, 1.00); position: relative; display: inline-block; vertical-align: top; height: 46px; top: 13px; margin: 0 5px; font-weight: 900 } .countdown-KT .message-KT { display: inline-block; color: rgba(0, 0, 0, 1.00); text-align: center; font-family: Josefin Sans, serif; font-size: 16pt; width: 100%; margin: 10px 0; padding-left: 5px; padding-right: 5px } .countdown-KT .digit-KT { display: inline-block; margin: 0 2px; width: 28px; height: 45px; -webkit-perspective: 100px; perspective: 100px } .countdown-KT .title-KT { display: block; color: rgba(0, 0, 0, 1.00); font-family: Arial, Helvetica, sans-serif; font-size: 8pt; position: relative; text-align: center; margin-top: 5px } .countdown-KT .digit-KT .card-back-KT, .countdown-KT .digit-KT .card-KT { background-color: rgba(255, 255, 255, 1.00); color: rgba(0, 0, 0, 1.00); font-family: Josefin Sans, serif; font-size: 24pt; position: absolute; border-radius: 6px 6px 0 0; width: 28px; height: 22px; overflow: hidden; text-align: center } .countdown-KT .digit-KT .card-back-KT, .countdown-KT .digit-KT .card-bottom-back-KT { box-shadow: 1px 1px 4px rgba(0, 0, 0, .5) } .countdown-KT .digit-KT .card-bottom-back-KT, .countdown-KT .digit-KT .card-bottom-KT { background-color: rgba(255, 255, 255, 1.00); color: rgba(0, 0, 0, 1.00); font-family: Josefin Sans, serif; font-size: 24pt; position: absolute; top: 23px; border-radius: 0 0 6px 6px; width: 28px; height: 22px; overflow: hidden; text-align: center } .countdown-KT .digit-KT .card-KT, .countdown-KT .digit-KT .card-bottom-back-KT { z-index: 1 } .countdown-KT .digit-KT .card-back-KT, .countdown-KT .digit-KT .card-bottom-KT { z-index: 0 } .countdown-KT .digit-KT .card-back-text-KT, .countdown-KT .digit-KT .card-text-KT { line-height: 1.19; position: relative; top: 6px } .countdown-KT .digit-KT .card-bottom-back-text-KT, .countdown-KT .digit-KT .card-bottom-text-KT { line-height: 1.19; position: relative; top: -17px } .countdown-KT .flip-KT .card-KT { -webkit-animation: flipTop-KT .5s cubic-bezier(0.56, 0.56, 0.69, 0.69); animation: flipTop-KT .5s cubic-bezier(0.56, 0.56, 0.69, 0.69); -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-transform-origin: center bottom; transform-origin: center bottom } .countdown-KT .flip-KT .card-bottom-KT { z-index: 2; -webkit-transform-origin: center top; transform-origin: center top; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation: flipBottom-KT 1.0s cubic-bezier(0.56, 0.56, 0.69, 0.69); animation: flipBottom-KT 1.0s cubic-bezier(0.56, 0.56, 0.69, 0.69) } @-webkit-keyframes flipTop-KT { 0% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg) } 99% { -webkit-transform: rotateX(-90deg); transform: rotateX(-90deg); opacity: 1 } 100% { opacity: 0 } } @keyframes flipTop-KT { 0% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg) } 99% { -webkit-transform: rotateX(-90deg); transform: rotateX(-90deg); opacity: 1 } 100% { opacity: 0 } } @-webkit-keyframes flipBottom-KT { 0% { opacity: 0 } 50% { opacity: 0; -webkit-transform: rotateX(90deg); transform: rotateX(90deg) } 51% { opacity: 1 } 100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg) } } @keyframes flipBottom-KT { 0% { opacity: 0 } 50% { opacity: 0; -webkit-transform: rotateX(90deg); transform: rotateX(90deg) } 51% { opacity: 1 } 100% { -webkit-transform: rotateX(0deg); transform: rotateX(0deg) } } .hide-KT { display: none } .fade-in-KT { -webkit-animation: fade-in-anim-KT 2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both; animation: fade-in-anim-KT 2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both } .countdown-text{ margin-bottom: 5px } .countdown-message{ font-size: 15px } @media (max-width: 768px) { .countdown-KT .message-KT { text-align: center !important } } @-webkit-keyframes fade-in-anim-KT { 0% { opacity: 0 } 100% { opacity: 1 } } @keyframes fade-in-anim-KT { 0% { opacity: 0 } 100% { opacity: 1 } } </style> <div class="appikon-pre-order-product-data-helper-hidden hidden" data-product='null'> </div> <div class="appikon-pre-order-form-complement-helper-hidden hidden"> <fieldset class="selling-plan-fieldset"> <input type="hidden" name="selling_plan" value=""/> <legend>Purchase options</legend> </fieldset> <div class="appikon-pre-order-purchase-option-description" style="margin-top: 20px;"> </div> <div class="appikon-pre-order-purchase-option-error hidden"> <span style="color:red;"> Select a purchase option to pre order this product </span> </div> </div> <div class='appikon-pre-order-button-hidden hidden'> <button type="submit" name="add" class="appikon-pre-order-button-customization"> </button> <span class="appikon-pre-order-button-message hidden"> </span> </div> <button class="appikon-pre-order-sold-out-message-hidden hidden" disabled> </button> <div class="appikon-pre-order-countdown-timer-hidden hidden container" style="margin-top: 20px;"> <span class="appikon-pre-order-countdown-timer-header" style="font-weight: bold;">Countdown header</span><br/> <span class="appikon-pre-order-countdown-timer-message" style="font-stlye: italic;">Countdown message</span> <div class="countdown-KT-full-width hide-KT" id="countdownultimate-KT"><div class="countdown-KT"><div class="message-KT"><h3 id="comingSoonHeader" class="countdown-text"/><span id="comingSoonMessage" class="countdown-message countdown-text"/></div><br style="height: 0px;"><div class="countdown-section-KT day"><div class="digit-KT days0"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="digit-KT days1"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="title-KT">DAYS</div></div><div class="separator-KT sday">:</div><div class="countdown-section-KT hour"><div class="digit-KT hrs0"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="digit-KT hrs1"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="title-KT">HRS</div></div><div class="separator-KT shour">:</div><div class="countdown-section-KT minute"><div class="digit-KT mins0"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="digit-KT mins1"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="title-KT">MINS</div></div><div class="separator-KT sminute">:</div><div class="countdown-section-KT second"><div class="digit-KT secs0"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="digit-KT secs1"><div class="card-KT"><div class="card-text-KT"></div></div><div class="card-back-KT"><div class="card-back-text-KT"></div></div><div class="card-bottom-KT"><div class="card-bottom-text-KT"></div></div><div class="card-bottom-back-KT"><div class="card-bottom-back-text-KT"></div></div></div><div class="title-KT">SECS</div></div><div style="text-align: right;display: block !important;width: 100% !important; max-width: 100% !important; height: 100% !important; max-height: 100% !important;"></div></div></div> </div><div id="shopify-block-12652517025168875117" class="shopify-block shopify-app-block"> <script>let snickettDeals = [{"offer":{"_id":"65a73d731243a73e97f7f69c","channels":["web"],"contents":[],"detailed_contents":[],"name":"Snaxshot Offer","perk":{"_id":"65a73d801243a73e97f7f69d","details":{"discount":{"amount":15,"combinations":{"orderDiscounts":false,"productDiscounts":false,"shippingDiscounts":false},"minimumOrder":0,"type":"percentage"},"emailSubscriptions":false},"type":"discount"},"redemptions":null,"snickett_design":{"color":"linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, rgba(0, 0, 0, 0.71) 100%), #FFD97C","gift_og_image":"https://cdn.shopthru.app/images/core/e09b8deeb72c80c814e6ba1f24ad98d119baad92.webp","image":"https://cdn.shopthru.app/images/core/e431635258529dd4ee147c44c8d8b927a93ad478.webp","logo":"https://cdn.shopthru.app/images/core/045cf765b0bd8adf3267a4693c9c1e23839a6314.webp","snickett_og_image":"https://cdn.shopthru.app/images/core/3f2032349a0649d288dc09191cc0e979e50d91bb.webp"},"target":"store"},"collabs":[{"_id":"65a73dbf8d3705922e7ad60e","community":null,"end":"2024-02-16T02:38:55.416Z","start":"2024-01-17T02:38:55.416Z"}]}] if (!snickettDeals) { snickettDeals = []; } window.snicketts = { storeName: "For Bitter For Worse", embeddedAppSettings: 0 ? 0 : null, deals : snickettDeals.map((item) => { item.collabs = item.collabs.filter((deal) => { const now = new Date(); const start = new Date(deal.start); if (start > now) return false; if (!deal.end) return true; const endDate = new Date(deal.end); return endDate > now; }); item.type = "collab"; return item; }).filter((item) => item.collabs.length > 0), }; </script> <!-- BEGIN app snippet: snicketts-embedded-block --> <div id="snicketts-embedded-block" data-snicketts-deal="" data-snicketts-keys="" > </div> <script src="https://cdn.shopify.com/extensions/84393f6e-743b-4271-8a09-47b3dd80c2db/snicketts-gifting-promos-14/assets/themeConfig.js" defer></script> <!-- END app snippet --> <script async type="module" src="https://cdn.shopify.com/extensions/84393f6e-743b-4271-8a09-47b3dd80c2db/snicketts-gifting-promos-14/assets/index.js"></script> </div></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10