CINXE.COM

FBFW at Coachella! – For Bitter For Worse

<!doctype html> <html class="no-js" lang="en"> <head> <script type="application/vnd.locksmith+json" data-locksmith>{"version":"v173","locked":false,"initialized":true,"scope":"article","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":"article","theme":142940897501,"product":null,"collection":null,"page":null,"blog":"news","article":588678889693,"app":null},"now":1740851475,"path":"\/blogs\/news\/fbfw-at-coachella","locale_root_url":"\/","canonical_url":"https:\/\/forbitterforworse.com\/blogs\/news\/fbfw-at-coachella","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\":\"v173\",\"locked\":false,\"initialized\":true,\"scope\":\"article\",\"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\":\"article\",\"theme\":142940897501,\"product\":null,\"collection\":null,\"page\":null,\"blog\":\"news\",\"article\":588678889693,\"app\":null},\"now\":1740851475,\"path\":\"\\\/blogs\\\/news\\\/fbfw-at-coachella\",\"locale_root_url\":\"\\\/\",\"canonical_url\":\"https:\\\/\\\/forbitterforworse.com\\\/blogs\\\/news\\\/fbfw-at-coachella\",\"customer_id\":null,\"customer_id_signature\":\"e59a4435124ef32df563f9003ec498bd5d4bc91f430ac9093fca154d559d02fa\",\"cart\":null}\u003c\/script\u003e";Locksmith.jsonTagSignature="8bd6a52c13fb943a469cff0effd3d7e46a76568746e37fa803ff5f6ced04a5d1"</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/fbfw-at-coachella"> <link rel="shortcut icon" href="//forbitterforworse.com/cdn/shop/files/Monogram-FBFW_32x32.jpg?v=1662710621" type="image/png"> <!-- Title and description ================================================== --><title>FBFW at Coachella! &ndash; For Bitter For Worse</title><meta name="description" content="Our pals at The New Bar are making Coachella history by sponsoring the first nonalcoholic bars at the legendary music festival. We’re thrilled to announce that Eva’s Spritz will join the fun! It’s a big deal for an ambitious, scrappy brand like us to be a part of such a huge event and we’re thrilled to rise to the occa"> <!-- /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/fbfw-at-coachella"><meta property="og:title" content="FBFW at Coachella!"> <meta property="og:type" content="article"> <meta property="og:description" content="Our pals at The New Bar are making Coachella history by sponsoring the first nonalcoholic bars at the legendary music festival. We’re thrilled to announce that Eva’s Spritz will join the fun! It’s a big deal for an ambitious, scrappy brand like us to be a part of such a huge event and we’re thrilled to rise to the occa"> <meta property="og:image" content="http://forbitterforworse.com/cdn/shop/articles/2_1200x1200.png?v=1680202695"> <meta property="og:image:secure_url" content="https://forbitterforworse.com/cdn/shop/articles/2_1200x1200.png?v=1680202695"> <meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="FBFW at Coachella!"> <meta name="twitter:description" content="Our pals at The New Bar are making Coachella history by sponsoring the first nonalcoholic bars at the legendary music festival. We’re thrilled to announce that Eva’s Spritz will join the fun! It’s a big deal for an ambitious, scrappy brand like us to be a part of such a huge event and we’re thrilled to rise to the occa"> <!-- 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="qwRhXoW5q0rCgzcUpNEsPBqMOGKccht3z2HIbJgsqRI"> <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" /> <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 - 12\/3\/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":"article"}</script> <script> window.Shopify = window.Shopify || {}; if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; window.Shopify.featureAssets['shop-js'] = {"init-fed-cm":["modules/v2/client.init-fed-cm_DZx4LRQF.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js"],"shop-cash-offers":["modules/v2/client.shop-cash-offers_CDW8OnNN.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"pay-button":["modules/v2/client.pay-button_8lcLPtoo.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js"],"shop-toast-manager":["modules/v2/client.shop-toast-manager_MR7FZzRc.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/client.init-shop-email-lookup-coordinator_CTjWhnsq.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js"],"avatar":["modules/v2/client.avatar_BTnouDA3.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/client.init-customer-accounts-sign-up_CVpyShNx.en.esm.js","modules/v2/client.shop-login-button_CPXL2ZAG.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"init-customer-accounts":["modules/v2/client.init-customer-accounts_BpZZ3TVZ.en.esm.js","modules/v2/client.shop-login-button_CPXL2ZAG.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"shop-follow-button":["modules/v2/client.shop-follow-button_Cnc0GIC0.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"checkout-modal":["modules/v2/client.checkout-modal_CK50b1vT.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"lead-capture":["modules/v2/client.lead-capture_DiwqaWat.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/client.init-shop-for-new-customer-accounts_DaXQkIrP.en.esm.js","modules/v2/client.shop-login-button_CPXL2ZAG.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"shop-login-button":["modules/v2/client.shop-login-button_CPXL2ZAG.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.esm.js"],"payment-terms":["modules/v2/client.payment-terms_DvbijP_f.en.esm.js","modules/v2/chunk.common_qm8O_TDX.esm.js","modules/v2/chunk.modal_5tfjldhx.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:\/\/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:\/\/cdn.giftship.app\/build\/storefront\/giftship.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/amaicdn.com\/storelocator-prod\/setting\/for-bitter-for-worse-1739467653.js?shop=for-bitter-for-worse.myshopify.com","https:\/\/amaicdn.com\/storelocator-prod\/wtb\/for-bitter-for-worse-1739467653.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":"f9f796a2-d99c-43de-a60d-cb36f4ae324e-1740851475","pageurl":"forbitterforworse.com\/blogs\/news\/fbfw-at-coachella","s":"articles-588678889693","u":"3380018fd1db","p":"article","rtyp":"article","rid":588678889693};</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(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.2.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script> <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> <link rel="stylesheet" media="screen" href="https://forbitterforworse.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> <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/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 block --><!-- 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 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: "article"};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,n,o,r,i){if(!Boolean(null===(t=null===(a=window.Shopify)||void 0===a?void 0:a.analytics)||void 0===t?void 0:t.replayQueue)){var a,t,s=function(){var d={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:?[ /-](13[1-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[2-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[1-9]|1[4-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:?[ /-](13[1-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[2-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[1-9]|1[4-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+|)/},e=d.modern,n=d.legacy,o=navigator.userAgent;return e.test(o)?"modern":(n.test(o),"legacy")}(),l=null!=i?i:{modern:"",legacy:""};window.Shopify=window.Shopify||{};var u=window.Shopify;u.analytics=u.analytics||{};var c=u.analytics;c.replayQueue=[],c.publish=function(d,e,n){return c.replayQueue.push([d,e,n]),!0};try{self.performance.mark("wpm:start")}catch(d){}var f=[n,"/wpm","/b",r,s.substring(0,1),".js"].join(""),h=l[s];!function(d){var e=d.src,n=d.async,o=void 0===n||n,r=d.onload,i=d.onerror,a=d.sri,t=document.createElement("script"),s=document.head,l=document.body;t.async=o,t.src=e,a&&(t.integrity=a,t.crossOrigin="anonymous"),r&&t.addEventListener("load",r),i&&t.addEventListener("error",i),s?s.appendChild(t):l?l.appendChild(t):console.error("Did not find a head or body element to append the script")}({src:f,async:!0,onload:function(){if(!function(){var d,e;return Boolean(null===(e=null===(d=window.Shopify)||void 0===d?void 0:d.analytics)||void 0===e?void 0:e.initialized)}()){var n=window.webPixelsManager.init(d)||void 0;if(n){e(n);var o=window.Shopify.analytics;o.replayQueue.forEach((function(d){var e=d[0],o=d[1],r=d[2];n.publishCustomEvent(e,o,r)})),o.replayQueue=[],o.publish=n.publishCustomEvent,o.visitor=n.visitor,o.initialized=!0}}},onerror:function(){var e=d.storefrontBaseUrl.replace(/\/$/,""),n="".concat(e,"/.well-known/shopify/monorail/unstable/produce_batch"),r=JSON.stringify({metadata:{event_sent_at_ms:(new Date).getTime()},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:o||"latest",bundle_target:s,page_url:self.location.href,status:"failed",surface:d.surface,error_msg:"".concat(f," has failed to load")},metadata:{event_created_at_ms:(new Date).getTime()}}]});try{if(self.navigator.sendBeacon.bind(self.navigator)(n,r))return!0}catch(d){}var i=new XMLHttpRequest;try{return i.open("POST",n,!0),i.setRequestHeader("Content-Type","text/plain"),i.send(r),!0}catch(d){console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging a load error.")}return!1},sri:function(d){return"string"==typeof d&&/^sha384-[A-Za-z0-9+/=]+$/.test(d)}(h)?h:""})}})({shopId: 31608897672,storefrontBaseUrl: "https://forbitterforworse.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",surface: "storefront-renderer",enabledBetaFlags: ["6a396365"],webPixelsConfigList: [{"id":"485523677","configuration":"{\"config\":\"{\\\"pixel_id\\\":\\\"G-S5X3RJHSPX\\\",\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-S5X3RJHSPX\\\",\\\"MC-4Y677EP3RF\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-S5X3RJHSPX\\\",\\\"MC-4Y677EP3RF\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-S5X3RJHSPX\\\",\\\"MC-4Y677EP3RF\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-S5X3RJHSPX\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bb488f4fe6500d2c9bba3ab22eaa32f2","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":"0290","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0290","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,effectiveTopLevelDomain: "",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","c139b0f3a1f1e734f26d97f41e6b9ec7210d2071","9cacd384w71a05d20pea23f07dm124062b8",{"modern":"","legacy":""});</script> <script>window.ShopifyAnalytics = window.ShopifyAnalytics || {}; window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; window.ShopifyAnalytics.meta.currency = 'USD'; var meta = {"page":{"pageType":"article","resourceType":"article","resourceId":588678889693}}; for (var attr in meta) { window.ShopifyAnalytics.meta[attr] = meta[attr]; }</script> <script>window.ShopifyAnalytics.merchantGoogleAnalytics = function() { }; </script> <script class="analytics">(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.68728afc2577e1593a48001edcb560128ef43fd2.min.js"}); }; scriptFallback.async = true; scriptFallback.src = '//forbitterforworse.com/cdn/s/trekkie.storefront.68728afc2577e1593a48001edcb560128ef43fd2.min.js'; first.parentNode.insertBefore(scriptFallback, first); }; script.async = true; script.src = '//forbitterforworse.com/cdn/s/trekkie.storefront.68728afc2577e1593a48001edcb560128ef43fd2.min.js'; first.parentNode.insertBefore(script, first); }; trekkie.load( {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":31608897672,"isMerchantRequest":null,"themeId":142940897501,"themeCityHash":"10602711571732946992","contentLanguage":"en","currency":"USD"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain"},"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; var originalDocumentWrite = document.write; document.write = customDocumentWrite; try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; document.write = originalDocumentWrite; window.ShopifyAnalytics.lib.page(null,{"pageType":"article","resourceType":"article","resourceId":588678889693,"shopifyEmitted":true}); 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-bbbf3223c550be0dd72914a2fa06aaa88eb8943e96f9ea31fb63e7e27e0f97f4.js"; document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); })();</script> <script> if (!window.ga || (window.ga && typeof window.ga !== 'function')) { window.ga = function ga() { (window.ga.q = window.ga.q || []).push(arguments); Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); }; Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); } </script> <script defer src="https://forbitterforworse.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-1.4.0.min.js" data-application="storefront-renderer" data-shop-id="31608897672" data-render-region="gcp-asia-southeast1" data-page-type="article" data-theme-instance-id="142940897501" data-monorail-region="shop_domain" data-resource-timing-sampling-rate="10" ></script> </head> <body id="fbfw-at-coachella" class="template-article" 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: #ad2542; } .nav__sub-wrap:after { border-bottom-color: #ad2542; } .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: #c2294a; } .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: #98213a; } .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--light 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--18022997065949__main" class="shopify-section js-section__article"> <section class="section section--article article"> <div class="container container--mob-0"> <div class="article__featured-media" style="background-image: url('//forbitterforworse.com/cdn/shop/articles/2_1x1.png?v=1680202695')"> <img class="article__featured-media__img " src="//forbitterforworse.com/cdn/shop/articles/2_300x.png?v=1680202695" srcset="//forbitterforworse.com/cdn/shop/articles/2_180x.png?v=1680202695 180w 180h, //forbitterforworse.com/cdn/shop/articles/2_360x.png?v=1680202695 360w 360h, //forbitterforworse.com/cdn/shop/articles/2_540x.png?v=1680202695 540w 540h, //forbitterforworse.com/cdn/shop/articles/2_720x.png?v=1680202695 720w 720h, //forbitterforworse.com/cdn/shop/articles/2_900x.png?v=1680202695 900w 900h, //forbitterforworse.com/cdn/shop/articles/2_1080x.png?v=1680202695 1080w 1080h, //forbitterforworse.com/cdn/shop/articles/2_1296x.png?v=1680202695 1296w 1296h, //forbitterforworse.com/cdn/shop/articles/2.png?v=1680202695 1485w 1485h" sizes="(min-width: 981px) 50vw, 100vw" width="300" height="300" alt="FBFW at Coachella!" loading="lazy" /> </div> </div> <div class="container container--small"> <div class="article__blocks"> <div class="article__block article__block--tags" > <div class="article__tags"> <ul class="article__tags-items o-list-bare"> <li class="article__tags-item"><a href="/blogs/news/tagged/evas-spritz" title="Show articles tagged Eva&#39;s Spritz">Eva's Spritz</a> / </li> <li class="article__tags-item"><a href="/blogs/news/tagged/lifestyle" title="Show articles tagged Lifestyle">Lifestyle</a></li> </ul> </div> </div> <div class="article__block article__block--title" > <div class="article__title"> <div class="section__title section__title--center"> <h1 class="section__title-text h2">FBFW at Coachella!</h1> </div> </div> </div><div class="article__block article__block--content" > <div class="article__content rte" itemprop="articleBody"> <p><span style="font-weight: 400;">Our pals at </span><a href="https://thenewbar.com/"><span style="font-weight: 400;">The New Bar</span></a><span style="font-weight: 400;"> are making </span><a href="https://coachella.com/"><span style="font-weight: 400;">Coachella</span></a><span style="font-weight: 400;"> history by sponsoring the first nonalcoholic bars at the legendary music festival. We’re thrilled to announce that </span><a href="https://forbitterforworse.com/collections/all-products/products/copy-of-evas-spritz-can"><span style="font-weight: 400;">Eva’s Spritz</span></a><span style="font-weight: 400;"> will join the fun! It’s a big deal for an ambitious, scrappy brand like us to be a part of such a huge event and we’re thrilled to rise to the occasion. </span></p> <p> </p> <p><span style="font-weight: 400;">Because we are newbies to the Coachella scene, we’re pulling back the curtain and inviting you in on our preparation and planning process! </span></p> <div style="text-align: left;"><img src="https://cdn.shopify.com/s/files/1/0316/0889/7672/files/1_474989f7-87ff-4456-84e0-97d24eb58baa_480x480.png?v=1680202670" style="margin-top: 15px; margin-right: 15px; margin-bottom: 15px; float: left;" width="413" height="413"></div> <p><span style="font-weight: 400;">The</span> <span style="font-weight: 400;">Basics</span></p> <p><a href="https://www.rollingstone.com/music/music-news/coachella-festival-guide-tips-1234704857/"><span style="font-weight: 400;">This</span></a><span style="font-weight: 400;"> Rolling Stone article goes over all the information a newbie needs to know, for example:  the lineup is identical for both weekends, how to access the livestream </span><a href="https://blog.youtube/news-and-events/coachella-livestream-youtube-goldenvoice-2023/"><span style="font-weight: 400;">link</span></a><span style="font-weight: 400;">, ticketing basics, and lodging. They also walk you through what to bring 101–we bought high fidelity earplugs right after reading! </span></p> <p> </p> <p><span style="font-weight: 400;">Got my pass, what’s next? </span></p> <p><span style="font-weight: 400;">This </span><a href="https://www.travelgrom.com/travel-blog/coachella-tips-tricks-survival-guide"><span style="font-weight: 400;">listicle</span></a><span style="font-weight: 400;"> gets into the practical nitty gritty beyond sunscreen, water, and hand sanitizer. We are definitely renting a locker. Important takeaways: keep all medication in original bottles and buy merch on the first day.</span></p> <p> </p> <p><span style="font-weight: 400;">Follow </span><a href="https://www.instagram.com/forbitterforworse/"><span style="font-weight: 400;">FBFW</span></a><span style="font-weight: 400;"> </span></p> <p><span style="font-weight: 400;">We will have team members at the festival both weekends, so if you’re going—shoot us an email, DM us on IG. We want to meet you! Swing by one of the two </span><a href="https://thenewbar.com/"><span style="font-weight: 400;">New Bar</span></a><span style="font-weight: 400;"> locations and say hi! Come along for the ride as we ramp-up for this exhilarating experience: follow us on </span><a href="https://www.instagram.com/forbitterforworse/"><span style="font-weight: 400;">Instagram</span></a><span style="font-weight: 400;"> and TikTok. </span></p> <p> </p> <p><span style="font-weight: 400;">Cheers to Coachella, </span></p> <p><span style="font-weight: 400;">FBFW team </span><br style="font-weight: 400;"><br></p> </div> </div><div class="article__block article__block--meta" > <div class="article__meta"> <div class="article__meta-wrapper"> <div class="article__meta-author"> <p class="article__meta-author__text">Shelley Elkovich</p> </div> <div class="article__meta-share"> <ul class="article__share-items"> <li class="article__share-item"> <a href="//www.facebook.com/sharer.php?u=https://forbitterforworse.com/blogs/news/fbfw-at-coachella" class="article__share-link icon-fallback" target="_blank"> <i class="icon icon--facebook" aria-hidden="true"></i> <span class="icon-fallback__text">Facebook</span> </a> </li> <li class="article__share-item"> <a href="//twitter.com/share?text=FBFW%20at%20Coachella!&amp;url=https://forbitterforworse.com/blogs/news/fbfw-at-coachella" class="article__share-link icon-fallback" target="_blank"> <i class="icon icon--twitter" aria-hidden="true"></i> <span class="icon-fallback__text">Twitter</span> </a> </li> <li class="article__share-item"> <a href="http://pinterest.com/pin/create/button/?url=https://forbitterforworse.com/blogs/news/fbfw-at-coachella&amp;media=//forbitterforworse.com/cdn/shop/articles/2_1024x1024.png?v=1680202695&amp;description=FBFW%20at%20Coachella!" class="article__share-link icon-fallback" target="_blank"> <i class="icon icon--pinterest" aria-hidden="true"></i> <span class="icon-fallback__text">Pinterest</span> </a> </li> </ul> </div> </div> </div> </div></div> </div> <div class="article-paginate"> <div class="article-paginate__wrapper"> <div class="article-paginate__item article-paginate__item--prev"> <a href="/blogs/news/2023-good-food-awards-finalist" class="article-paginate__link icon-fallback"> <i class="icon icon--left-t" aria-hidden="true"></i> <span class="icon-fallback__text">Older Post</span> </a> </div> <div class="article-paginate__item article-paginate__item--next"> <a href="/blogs/news/build-your-own-mimosa-bar" class="article-paginate__link icon-fallback"> <i class="icon icon--right-t" aria-hidden="true"></i> <span class="icon-fallback__text">Newer Post</span> </a> </div> </div> </div> </section> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Article", "articleBody": "Our pals at The New Bar are making Coachella history by sponsoring the first nonalcoholic bars at the legendary music festival. We’re thrilled to announce that Eva’s Spritz will join the fun! It’s a big deal for an ambitious, scrappy brand like us to be a part of such a huge event and we’re thrilled to rise to the occasion. \n \nBecause we are newbies to the Coachella scene, we’re pulling back the curtain and inviting you in on our preparation and planning process! \n\nThe Basics\nThis Rolling Stone article goes over all the information a newbie needs to know, for example:  the lineup is identical for both weekends, how to access the livestream link, ticketing basics, and lodging. They also walk you through what to bring 101–we bought high fidelity earplugs right after reading! \n \nGot my pass, what’s next? \nThis listicle gets into the practical nitty gritty beyond sunscreen, water, and hand sanitizer. We are definitely renting a locker. Important takeaways: keep all medication in original bottles and buy merch on the first day.\n \nFollow FBFW \nWe will have team members at the festival both weekends, so if you’re going—shoot us an email, DM us on IG. We want to meet you! Swing by one of the two New Bar locations and say hi! Come along for the ride as we ramp-up for this exhilarating experience: follow us on Instagram and TikTok. \n \nCheers to Coachella, \nFBFW team ", "mainEntityOfPage": { "@type": "WebPage", "@id": "https:\/\/forbitterforworse.com" }, "headline": "FBFW at Coachella!", "image": [ "https:\/\/forbitterforworse.com\/cdn\/shop\/articles\/2_1485x.png?v=1680202695" ], "datePublished": "2023-03-30T11:55:53Z", "dateCreated": "2023-03-30T11:41:19Z", "author": { "@type": "Person", "name": "Shelley Elkovich" }, "publisher": { "@type": "Organization", "name": "For Bitter For Worse" } } </script> </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" 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; 2025, 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-AajV1eWp5K3d2ZGNBV__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