1<!doctype html> 2<html class="no-js" lang="en" dir="ltr"> 3<head> 4 5 6 7 8 <meta name="google-site-verification" content="C6B25uAXiff22Bkw8oliXwJnmXfV1tApcMwlZ-8mMoY" /> 9 <meta name="google-site-verification" content="1syvOKR70hKetmkqyeTO5qbjf1lKovPQMMHUttGkXvg" /> 10 <meta name="google-site-verification" content="o4vABvLTzTJvH5IibBiseHSRJTcxc52A01rqMIJTvQw"> 11 <meta name="google-site-verification" content="QhmMrLOfZkVZuK255MLiDmGX9Sg1UR0Bdl9W1RvQy7U" /> 12 13<!-- AccessiBe -->
14<script> (function(){ var s = document.createElement('script'); var h = document.querySelector('head') || document.body; s.src = 'https://acsbapp.com/apps/app/dist/js/app.js'; s.async = true; s.onload = function(){ acsbJS.init({ statementLink : '', footerHtml : '', hideMobile : false, hideTrigger : false, disableBgProcess : false, language : 'en', position : 'left', leadColor : '#161616', triggerColor : '#161616', triggerRadius : '50%', triggerPositionX : 'right', triggerPositionY : 'bottom', triggerIcon : 'people', triggerSize : 'medium', triggerOffsetX : 20, triggerOffsetY : 20, mobile : { triggerSize : 'small', triggerPositionX : 'right', triggerPositionY : 'bottom', triggerOffsetX : 10, triggerOffsetY : 10, triggerRadius : '50%' } }); }; h.appendChild(s); })(); </script>
14 15<!-- End - AccessiBe--> 16 17 18 <meta charset="utf-8"> 19 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 20 <meta name="viewport" content="width=device-width,initial-scale=1"> 21 <meta name="theme-color" content="#111111"> 22 <link rel="canonical" href="https://philwickham.store/cart"> 23 <link rel="preconnect" href="https://cdn.shopify.com" crossorigin> 24 <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin> 25 <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com"> 26 <link rel="dns-prefetch" href="https://ajax.googleapis.com"> 27 <link rel="dns-prefetch" href="https://maps.googleapis.com"> 28 <link rel="dns-prefetch" href="https://maps.gstatic.com"><link rel="shortcut icon" href="//philwickham.store/cdn/shop/files/favicon_-_Brandon_Lake-1_32x32.png?v=1701807547" type="image/png" /><title>Your Shopping Cart 29– Phil Wickham 30</title> 31<meta property="og:site_name" content="Phil Wickham"> 32 <meta property="og:url" content="https://philwickham.store/cart"> 33 <meta property="og:title" content="Your Shopping Cart"> 34 <meta property="og:type" content="website"> 35 <meta property="og:description" content="The official online store for Phil Wickham. Shop music, clothing, accessories and more."><meta property="og:image" content="http://philwickham.store/cdn/shop/files/NewWebBanner-06_7f46ff71-0c86-422c-9cd5-75205e2c0232.jpg?v=1709145359"> 36 <meta property="og:image:secure_url" content="https://philwickham.store/cdn/shop/files/NewWebBanner-06_7f46ff71-0c86-422c-9cd5-75205e2c0232.jpg?v=1709145359"> 37 <meta property="og:image:width" content="1200"> 38 <meta property="og:image:height" content="658"><meta name="twitter:site" content="@"> 39 <meta name="twitter:card" content="summary_large_image"> 40 <meta name="twitter:title" content="Your Shopping Cart"> 41 <meta name="twitter:description" content="The official online store for Phil Wickham. Shop music, clothing, accessories and more."> 42<style data-shopify>@font-face { 43 font-family: "Libre Franklin"; 44 font-weight: 700; 45 font-style: normal; 46 font-display: swap; 47 src: url("//philwickham.store/cdn/fonts/libre_franklin/librefranklin_n7.6739620624550b8695d0cc23f92ffd46eb51c7a3.woff2") format("woff2"), 48 url("//philwickham.store/cdn/fonts/libre_franklin/librefranklin_n7.7cebc205621b23b061b803310af0ad39921ae57d.woff") format("woff"); 49} 50 51 52 53 54 55 56</style><link href="//philwickham.store/cdn/shop/t/32/assets/theme.css?v=44263594034188710391777670661" rel="stylesheet" type="text/css" media="all" /> 57<style data-shopify>:root { 58 --typeHeaderPrimary: "Libre Franklin"; 59 --typeHeaderFallback: sans-serif; 60 --typeHeaderSize: 36px; 61 --typeHeaderWeight: 700; 62 --typeHeaderLineHeight: 1; 63 --typeHeaderSpacing: 0.0em; 64 65 --typeBasePrimary:Helvetica; 66 --typeBaseFallback:Arial, sans-serif; 67 --typeBaseSize: 16px; 68 --typeBaseWeight: 400; 69 --typeBaseSpacing: 0.025em; 70 --typeBaseLineHeight: 1.4; 71 --typeBaselineHeightMinus01: 1.3; 72 73 --typeCollectionTitle: 20px; 74 75 --iconWeight: 2px; 76 --iconLinecaps: miter; 77 78 79 --buttonRadius: 0; 80 81 82 --colorGridOverlayOpacity: 0.1; 83 } 84 85 .placeholder-content { 86 background-image: linear-gradient(100deg, #ffffff 40%, #f7f7f7 63%, #ffffff 79%); 87 }</style>
87<script> 88 document.documentElement.className = document.documentElement.className.replace('no-js', 'js'); 89 90 window.theme = window.theme || {}; 91 theme.routes = { 92 home: "/", 93 cart: "/cart.js", 94 cartPage: "/cart", 95 cartAdd: "/cart/add.js", 96 cartChange: "/cart/change.js", 97 search: "/search", 98 predictiveSearch: "/search/suggest" 99 }; 100 theme.strings = { 101 soldOut: "Sold Out", 102 unavailable: "Unavailable", 103 inStockLabel: "In stock, ready to ship", 104 oneStockLabel: "Low stock - [count] item left", 105 otherStockLabel: "Low stock - [count] items left", 106 willNotShipUntil: "Ready to ship [date]", 107 willBeInStockAfter: "Back in stock [date]", 108 waitingForStock: "Inventory on the way", 109 savePrice: "Save [saved_amount]", 110 cartEmpty: "Your cart is currently empty.", 111 cartTermsConfirmation: "You must agree with the terms and conditions of sales to check out", 112 searchCollections: "Collections", 113 searchPages: "Pages", 114 searchArticles: "Articles", 115 productFrom: "from ", 116 maxQuantity: "You can only have [quantity] of [title] in your cart." 117 }; 118 theme.settings = { 119 cartType: "drawer", 120 isCustomerTemplate: false, 121 moneyFormat: "${{amount_no_decimals}}", 122 saveType: "dollar", 123 productImageSize: "square", 124 productImageCover: false, 125 predictiveSearch: false, 126 predictiveSearchType: null, 127 predictiveSearchVendor: false, 128 predictiveSearchPrice: false, 129 quickView: false, 130 themeName: 'Impulse', 131 themeVersion: "7.4.0" 132 }; 133 </script>
133 134 135
135<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
135<meta name="facebook-domain-verification" content="bjecceb2iwdx2d0qe9mwss47a731fx"> 136<meta name="facebook-domain-verification" content="rs31gikvlwkdn2rx1zdnikuv1z00bz"> 137<meta name="google-site-verification" content="QhmMrLOfZkVZuK255MLiDmGX9Sg1UR0Bdl9W1RvQy7U"> 138<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/29219160098/digital_wallets/dialog"> 139<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="alternate" hreflang="x-default" href="https://philwickham.store/cart"> 140<link rel="alternate" hreflang="en" href="https://philwickham.store/cart"> 141<link rel="alternate" hreflang="en-AD" href="https://philwickham.store/en-int/cart"> 142<link rel="alternate" hreflang="en-AE" href="https://philwickham.store/en-int/cart"> 143<link rel="alternate" hreflang="en-AG" href="https://philwickham.store/en-int/cart"> 144<link rel="alternate" hreflang="en-AI" href="https://philwickham.store/en-int/cart"> 145<link rel="alternate" hreflang="en-AL" href="https://philwickham.store/en-int/cart"> 146<link rel="alternate" hreflang="en-AM" href="https://philwickham.store/en-int/cart"> 147<link rel="alternate" hreflang="en-AO" href="https://philwickham.store/en-int/cart"> 148<link rel="alternate" hreflang="en-AR" href="https://philwickham.store/en-int/cart"> 149<link rel="alternate" hreflang="en-AT" href="https://philwickham.store/en-int/cart"> 150<link rel="alternate" hreflang="en-AU" href="https://philwickham.store/en-int/cart"> 151<link rel="alternate" hreflang="en-AW" href="https://philwickham.store/en-int/cart"> 152<link rel="alternate" hreflang="en-AZ" href="https://philwickham.store/en-int/cart"> 153<link rel="alternate" hreflang="en-BA" href="https://philwickham.store/en-int/cart"> 154<link rel="alternate" hreflang="en-BB" href="https://philwickham.store/en-int/cart"> 155<link rel="alternate" hreflang="en-BD" href="https://philwickham.store/en-int/cart"> 156<link rel="alternate" hreflang="en-BE" href="https://philwickham.store/en-int/cart"> 157<link rel="alternate" hreflang="en-BF" href="https://philwickham.store/en-int/cart"> 158<link rel="alternate" hreflang="en-BG" href="https://philwickham.store/en-int/cart"> 159<link rel="alternate" hreflang="en-BH" href="https://philwickham.store/en-int/cart"> 160<link rel="alternate" hreflang="en-BI" href="https://philwickham.store/en-int/cart"> 161<link rel="alternate" hreflang="en-BJ" href="https://philwickham.store/en-int/cart"> 162<link rel="alternate" hreflang="en-BL" href="https://philwickham.store/en-int/cart"> 163<link rel="alternate" hreflang="en-BM" href="https://philwickham.store/en-int/cart"> 164<link rel="alternate" hreflang="en-BN" href="https://philwickham.store/en-int/cart"> 165<link rel="alternate" hreflang="en-BO" href="https://philwickham.store/en-int/cart"> 166<link rel="alternate" hreflang="en-BQ" href="https://philwickham.store/en-int/cart"> 167<link rel="alternate" hreflang="en-BR" href="https://philwickham.store/en-int/cart"> 168<link rel="alternate" hreflang="en-BS" href="https://philwickham.store/en-int/cart"> 169<link rel="alternate" hreflang="en-BW" href="https://philwickham.store/en-int/cart"> 170<link rel="alternate" hreflang="en-BZ" href="https://philwickham.store/en-int/cart"> 171<link rel="alternate" hreflang="en-CA" href="https://philwickham.store/en-int/cart"> 172<link rel="alternate" hreflang="en-CH" href="https://philwickham.store/en-int/cart"> 173<link rel="alternate" hreflang="en-CK" href="https://philwickham.store/en-int/cart"> 174<link rel="alternate" hreflang="en-CL" href="https://philwickham.store/en-int/cart"> 175<link rel="alternate" hreflang="en-CM" href="https://philwickham.store/en-int/cart"> 176<link rel="alternate" hreflang="en-CN" href="https://philwickham.store/en-int/cart"> 177<link rel="alternate" hreflang="en-CO" href="https://philwickham.store/en-int/cart"> 178<link rel="alternate" hreflang="en-CR" href="https://philwickham.store/en-int/cart"> 179<link rel="alternate" hreflang="en-CV" href="https://philwickham.store/en-int/cart"> 180<link rel="alternate" hreflang="en-CW" href="https://philwickham.store/en-int/cart"> 181<link rel="alternate" hreflang="en-CY" href="https://philwickham.store/en-int/cart"> 182<link rel="alternate" hreflang="en-CZ" href="https://philwickham.store/en-int/cart"> 183<link rel="alternate" hreflang="en-DE" href="https://philwickham.store/en-int/cart"> 184<link rel="alternate" hreflang="en-DJ" href="https://philwickham.store/en-int/cart"> 185<link rel="alternate" hreflang="en-DK" href="https://philwickham.store/en-int/cart"> 186<link rel="alternate" hreflang="en-DM" href="https://philwickham.store/en-int/cart"> 187<link rel="alternate" hreflang="en-DO" href="https://philwickham.store/en-int/cart"> 188<link rel="alternate" hreflang="en-DZ" href="https://philwickham.store/en-int/cart"> 189<link rel="alternate" hreflang="en-EC" href="https://philwickham.store/en-int/cart"> 190<link rel="alternate" hreflang="en-EE" href="https://philwickham.store/en-int/cart"> 191<link rel="alternate" hreflang="en-EG" href="https://philwickham.store/en-int/cart"> 192<link rel="alternate" hreflang="en-ES" href="https://philwickham.store/en-int/cart"> 193<link rel="alternate" hreflang="en-ET" href="https://philwickham.store/en-int/cart"> 194<link rel="alternate" hreflang="en-FI" href="https://philwickham.store/en-int/cart"> 195<link rel="alternate" hreflang="en-FJ" href="https://philwickham.store/en-int/cart"> 196<link rel="alternate" hreflang="en-FK" href="https://philwickham.store/en-int/cart"> 197<link rel="alternate" hreflang="en-FO" href="https://philwickham.store/en-int/cart"> 198<link rel="alternate" hreflang="en-FR" href="https://philwickham.store/en-int/cart"> 199<link rel="alternate" hreflang="en-GA" href="https://philwickham.store/en-int/cart"> 200<link rel="alternate" hreflang="en-GB" href="https://philwickham.store/en-int/cart"> 201<link rel="alternate" hreflang="en-GD" href="https://philwickham.store/en-int/cart"> 202<link rel="alternate" hreflang="en-GE" href="https://philwickham.store/en-int/cart"> 203<link rel="alternate" hreflang="en-GF" href="https://philwickham.store/en-int/cart"> 204<link rel="alternate" hreflang="en-GG" href="https://philwickham.store/en-int/cart"> 205<link rel="alternate" hreflang="en-GH" href="https://philwickham.store/en-int/cart"> 206<link rel="alternate" hreflang="en-GI" href="https://philwickham.store/en-int/cart"> 207<link rel="alternate" hreflang="en-GL" href="https://philwickham.store/en-int/cart"> 208<link rel="alternate" hreflang="en-GM" href="https://philwickham.store/en-int/cart"> 209<link rel="alternate" hreflang="en-GN" href="https://philwickham.store/en-int/cart"> 210<link rel="alternate" hreflang="en-GP" href="https://philwickham.store/en-int/cart"> 211<link rel="alternate" hreflang="en-GQ" href="https://philwickham.store/en-int/cart"> 212<link rel="alternate" hreflang="en-GR" href="https://philwickham.store/en-int/cart"> 213<link rel="alternate" hreflang="en-GT" href="https://philwickham.store/en-int/cart"> 214<link rel="alternate" hreflang="en-GW" href="https://philwickham.store/en-int/cart"> 215<link rel="alternate" hreflang="en-GY" href="https://philwickham.store/en-int/cart"> 216<link rel="alternate" hreflang="en-HK" href="https://philwickham.store/en-int/cart"> 217<link rel="alternate" hreflang="en-HN" href="https://philwickham.store/en-int/cart"> 218<link rel="alternate" hreflang="en-HR" href="https://philwickham.store/en-int/cart"> 219<link rel="alternate" hreflang="en-HT" href="https://philwickham.store/en-int/cart"> 220<link rel="alternate" hreflang="en-HU" href="https://philwickham.store/en-int/cart"> 221<link rel="alternate" hreflang="en-ID" href="https://philwickham.store/en-int/cart"> 222<link rel="alternate" hreflang="en-IE" href="https://philwickham.store/en-int/cart"> 223<link rel="alternate" hreflang="en-IL" href="https://philwickham.store/en-int/cart"> 224<link rel="alternate" hreflang="en-IN" href="https://philwickham.store/en-int/cart"> 225<link rel="alternate" hreflang="en-IS" href="https://philwickham.store/en-int/cart"> 226<link rel="alternate" hreflang="en-IT" href="https://philwickham.store/en-int/cart"> 227<link rel="alternate" hreflang="en-JE" href="https://philwickham.store/en-int/cart"> 228<link rel="alternate" hreflang="en-JM" href="https://philwickham.store/en-int/cart"> 229<link rel="alternate" hreflang="en-JO" href="https://philwickham.store/en-int/cart"> 230<link rel="alternate" hreflang="en-JP" href="https://philwickham.store/en-int/cart"> 231<link rel="alternate" hreflang="en-KE" href="https://philwickham.store/en-int/cart"> 232<link rel="alternate" hreflang="en-KG" href="https://philwickham.store/en-int/cart"> 233<link rel="alternate" hreflang="en-KH" href="https://philwickham.store/en-int/cart"> 234<link rel="alternate" hreflang="en-KI" href="https://philwickham.store/en-int/cart"> 235<link rel="alternate" hreflang="en-KM" href="https://philwickham.store/en-int/cart"> 236<link rel="alternate" hreflang="en-KN" href="https://philwickham.store/en-int/cart"> 237<link rel="alternate" hreflang="en-KR" href="https://philwickham.store/en-int/cart"> 238<link rel="alternate" hreflang="en-KW" href="https://philwickham.store/en-int/cart"> 239<link rel="alternate" hreflang="en-KY" href="https://philwickham.store/en-int/cart"> 240<link rel="alternate" hreflang="en-KZ" href="https://philwickham.store/en-int/cart"> 241<link rel="alternate" hreflang="en-LA" href="https://philwickham.store/en-int/cart"> 242<link rel="alternate" hreflang="en-LC" href="https://philwickham.store/en-int/cart"> 243<link rel="alternate" hreflang="en-LI" href="https://philwickham.store/en-int/cart"> 244<link rel="alternate" hreflang="en-LK" href="https://philwickham.store/en-int/cart"> 245<link rel="alternate" hreflang="en-LS" href="https://philwickham.store/en-int/cart"> 246<link rel="alternate" hreflang="en-LT" href="https://philwickham.store/en-int/cart"> 247<link rel="alternate" hreflang="en-LU" href="https://philwickham.store/en-int/cart"> 248<link rel="alternate" hreflang="en-LV" href="https://philwickham.store/en-int/cart"> 249<link rel="alternate" hreflang="en-MA" href="https://philwickham.store/en-int/cart"> 250<link rel="alternate" hreflang="en-MC" href="https://philwickham.store/en-int/cart"> 251<link rel="alternate" hreflang="en-MD" href="https://philwickham.store/en-int/cart"> 252<link rel="alternate" hreflang="en-ME" href="https://philwickham.store/en-int/cart"> 253<link rel="alternate" hreflang="en-MF" href="https://philwickham.store/en-int/cart"> 254<link rel="alternate" hreflang="en-MG" href="https://philwickham.store/en-int/cart"> 255<link rel="alternate" hreflang="en-MK" href="https://philwickham.store/en-int/cart"> 256<link rel="alternate" hreflang="en-MN" href="https://philwickham.store/en-int/cart"> 257<link rel="alternate" hreflang="en-MO" href="https://philwickham.store/en-int/cart"> 258<link rel="alternate" hreflang="en-MQ" href="https://philwickham.store/en-int/cart"> 259<link rel="alternate" hreflang="en-MR" href="https://philwickham.store/en-int/cart"> 260<link rel="alternate" hreflang="en-MS" href="https://philwickham.store/en-int/cart"> 261<link rel="alternate" hreflang="en-MT" href="https://philwickham.store/en-int/cart"> 262<link rel="alternate" hreflang="en-MU" href="https://philwickham.store/en-int/cart"> 263<link rel="alternate" hreflang="en-MV" href="https://philwickham.store/en-int/cart"> 264<link rel="alternate" hreflang="en-MW" href="https://philwickham.store/en-int/cart"> 265<link rel="alternate" hreflang="en-MX" href="https://philwickham.store/en-int/cart"> 266<link rel="alternate" hreflang="en-MY" href="https://philwickham.store/en-int/cart"> 267<link rel="alternate" hreflang="en-MZ" href="https://philwickham.store/en-int/cart"> 268<link rel="alternate" hreflang="en-NA" href="https://philwickham.store/en-int/cart"> 269<link rel="alternate" hreflang="en-NC" href="https://philwickham.store/en-int/cart"> 270<link rel="alternate" hreflang="en-NG" href="https://philwickham.store/en-int/cart"> 271<link rel="alternate" hreflang="en-NI" href="https://philwickham.store/en-int/cart"> 272<link rel="alternate" hreflang="en-NL" href="https://philwickham.store/en-int/cart"> 273<link rel="alternate" hreflang="en-NO" href="https://philwickham.store/en-int/cart"> 274<link rel="alternate" hreflang="en-NP" href="https://philwickham.store/en-int/cart"> 275<link rel="alternate" hreflang="en-NR" href="https://philwickham.store/en-int/cart"> 276<link rel="alternate" hreflang="en-NU" href="https://philwickham.store/en-int/cart"> 277<link rel="alternate" hreflang="en-NZ" href="https://philwickham.store/en-int/cart"> 278<link rel="alternate" hreflang="en-OM" href="https://philwickham.store/en-int/cart"> 279<link rel="alternate" hreflang="en-PA" href="https://philwickham.store/en-int/cart"> 280<link rel="alternate" hreflang="en-PE" href="https://philwickham.store/en-int/cart"> 281<link rel="alternate" hreflang="en-PF" href="https://philwickham.store/en-int/cart"> 282<link rel="alternate" hreflang="en-PG" href="https://philwickham.store/en-int/cart"> 283<link rel="alternate" hreflang="en-PH" href="https://philwickham.store/en-int/cart"> 284<link rel="alternate" hreflang="en-PK" href="https://philwickham.store/en-int/cart"> 285<link rel="alternate" hreflang="en-PL" href="https://philwickham.store/en-int/cart"> 286<link rel="alternate" hreflang="en-PT" href="https://philwickham.store/en-int/cart"> 287<link rel="alternate" hreflang="en-PY" href="https://philwickham.store/en-int/cart"> 288<link rel="alternate" hreflang="en-QA" href="https://philwickham.store/en-int/cart"> 289<link rel="alternate" hreflang="en-RE" href="https://philwickham.store/en-int/cart"> 290<link rel="alternate" hreflang="en-RO" href="https://philwickham.store/en-int/cart"> 291<link rel="alternate" hreflang="en-RS" href="https://philwickham.store/en-int/cart"> 292<link rel="alternate" hreflang="en-RW" href="https://philwickham.store/en-int/cart"> 293<link rel="alternate" hreflang="en-SA" href="https://philwickham.store/en-int/cart"> 294<link rel="alternate" hreflang="en-SB" href="https://philwickham.store/en-int/cart"> 295<link rel="alternate" hreflang="en-SC" href="https://philwickham.store/en-int/cart"> 296<link rel="alternate" hreflang="en-SE" href="https://philwickham.store/en-int/cart"> 297<link rel="alternate" hreflang="en-SG" href="https://philwickham.store/en-int/cart"> 298<link rel="alternate" hreflang="en-SI" href="https://philwickham.store/en-int/cart"> 299<link rel="alternate" hreflang="en-SK" href="https://philwickham.store/en-int/cart"> 300<link rel="alternate" hreflang="en-SL" href="https://philwickham.store/en-int/cart"> 301<link rel="alternate" hreflang="en-SM" href="https://philwickham.store/en-int/cart"> 302<link rel="alternate" hreflang="en-SN" href="https://philwickham.store/en-int/cart"> 303<link rel="alternate" hreflang="en-SR" href="https://philwickham.store/en-int/cart"> 304<link rel="alternate" hreflang="en-ST" href="https://philwickham.store/en-int/cart"> 305<link rel="alternate" hreflang="en-SV" href="https://philwickham.store/en-int/cart"> 306<link rel="alternate" hreflang="en-SZ" href="https://philwickham.store/en-int/cart"> 307<link rel="alternate" hreflang="en-TC" href="https://philwickham.store/en-int/cart"> 308<link rel="alternate" hreflang="en-TD" href="https://philwickham.store/en-int/cart"> 309<link rel="alternate" hreflang="en-TG" href="https://philwickham.store/en-int/cart"> 310<link rel="alternate" hreflang="en-TH" href="https://philwickham.store/en-int/cart"> 311<link rel="alternate" hreflang="en-TL" href="https://philwickham.store/en-int/cart"> 312<link rel="alternate" hreflang="en-TN" href="https://philwickham.store/en-int/cart"> 313<link rel="alternate" hreflang="en-TO" href="https://philwickham.store/en-int/cart"> 314<link rel="alternate" hreflang="en-TT" href="https://philwickham.store/en-int/cart"> 315<link rel="alternate" hreflang="en-TV" href="https://philwickham.store/en-int/cart"> 316<link rel="alternate" hreflang="en-TW" href="https://philwickham.store/en-int/cart"> 317<link rel="alternate" hreflang="en-TZ" href="https://philwickham.store/en-int/cart"> 318<link rel="alternate" hreflang="en-UG" href="https://philwickham.store/en-int/cart"> 319<link rel="alternate" hreflang="en-UY" href="https://philwickham.store/en-int/cart"> 320<link rel="alternate" hreflang="en-UZ" href="https://philwickham.store/en-int/cart"> 321<link rel="alternate" hreflang="en-VC" href="https://philwickham.store/en-int/cart"> 322<link rel="alternate" hreflang="en-VG" href="https://philwickham.store/en-int/cart"> 323<link rel="alternate" hreflang="en-VN" href="https://philwickham.store/en-int/cart"> 324<link rel="alternate" hreflang="en-VU" href="https://philwickham.store/en-int/cart"> 325<link rel="alternate" hreflang="en-WS" href="https://philwickham.store/en-int/cart"> 326<link rel="alternate" hreflang="en-YT" href="https://philwickham.stor
326e/en-int/cart"> 327<link rel="alternate" hreflang="en-ZA" href="https://philwickham.store/en-int/cart"> 328<link rel="alternate" hreflang="en-ZM" href="https://philwickham.store/en-int/cart">
329<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=923664702"></script>
329 330<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
331<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&default_configuration_id=923664702&shop_id=29219160098" crossorigin="anonymous"></script>
vendor: 1 bytes, line 331
331
332<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":29219160098,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/29219160098","merchantName":"Phil Wickham","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Phil Wickham","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 332
332
333<script id="shopify-features" type="application/json">{"accessToken":"7f408546b72f28d1d032e58aa1e7779b","betas":["rich-media-storefront-analytics"],"domain":"philwickham.store","predictiveSearch":true,"shopId":29219160098,"locale":"en"}</script>
vendor: 1 bytes, line 333
333
334<script>var Shopify = Shopify || {}; 335Shopify.shop = "phil-wickham-online-store.myshopify.com"; 336Shopify.locale = "en"; 337Shopify.currency = {"active":"USD","rate":"1.0"}; 338Shopify.country = "US"; 339Shopify.theme = {"name":"May 2025 - EDH","id":185529336126,"schema_name":"Impulse","schema_version":"7.4.0","theme_store_id":857,"role":"main"}; 340Shopify.theme.handle = "null"; 341Shopify.theme.style = {"id":null,"handle":null}; 342Shopify.cdnHost = "philwickham.store/cdn"; 343Shopify.routes = Shopify.routes || {}; 344Shopify.routes.root = "/"; 345Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 346Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 347Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 348Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 348
348
349<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 349
349
350<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 350
350
351<script> 352 window.ShopifyPay = window.ShopifyPay || {}; 353 window.ShopifyPay.apiHost = "shop.app\/pay"; 354 window.ShopifyPay.redirectState = null; 355</script>
vendor: 1 bytes, line 355
355
356<script> 357 window.Shopify = window.Shopify || {}; 358 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 359 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 360 window.Shopify.SignInWithShop.eligible = true; 361</script>
vendor: 1 bytes, line 361
361
362<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 362
362
363<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 363
363
364<script type="module"> 365 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 366 367 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 368 369</script>
vendor: 1 bytes, line 369
369
370<script> 371 window.Shopify = window.Shopify || {}; 372 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 373 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 374</script>
vendor: 1 bytes, line 374
374
375<script>(function() { 376 var isLoaded = false; 377 function asyncLoad() { 378 if (isLoaded) return; 379 isLoaded = true; 380 var urls = ["https:\/\/cdn.attn.tv\/philwickham\/dtag.js?shop=phil-wickham-online-store.myshopify.com","https:\/\/api-na1.hubapi.com\/scriptloader\/v1\/43907278.js?shop=phil-wickham-online-store.myshopify.com","https:\/\/api-na1.hubapi.com\/scriptloader\/v1\/45841132.js?shop=phil-wickham-online-store.myshopify.com"]; 381 for (var i = 0; i < urls.length; i++) { 382 var s = document.createElement('script'); 383 s.type = 'text/javascript'; 384 s.async = true; 385 s.src = urls[i]; 386 var x = document.getElementsByTagName('script')[0]; 387 x.parentNode.insertBefore(s, x); 388 } 389 }; 390 if(window.attachEvent) { 391 window.attachEvent('onload', asyncLoad); 392 } else { 393 window.addEventListener('load', asyncLoad, false); 394 } 395})();</script>
vendor: 1 bytes, line 395
395
396<script id="__st">var __st={"a":29219160098,"offset":-18000,"reqid":"08e3270a-8ec2-4ca4-ae5d-f79019a1b93c-1790966337","pageurl":"philwickham.store\/cart","u":"76c0b8e54cc8","p":"cart"};</script>
vendor: 1 bytes, line 396
396
397<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 397
397
398<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'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,!1)}();</script>
vendor: 1 bytes, line 398
398
399<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//philwickham.store/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 399
399
400<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//philwickham.store/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
400<script crossorigin="anonymous" defer="defer" src="//philwickham.store/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 400
400
401<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 401
401
402<script> 403 window.Shopify = window.Shopify || {}; 404 window.Shopify.MCP = window.Shopify.MCP || {}; 405 window.Shopify.MCP.enabled = true; 406 window.Shopify.MCP.shop = "phil-wickham-online-store.myshopify.com"; 407 window.Shopify.MCP.mcpEndpoint = "https:\/\/philwickham.store\/api\/mcp"; 408 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 409</script>
vendor: 1 bytes, line 409
409
410<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/philwickham.store\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 411</script>
vendor: 1 bytes, line 411
411
412<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://philwickham.store/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 413</script>
vendor: 1 bytes, line 413
413
414<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 415 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 416</script>
vendor: 1 bytes, line 416
416
417<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 418</script>
vendor: 1 bytes, line 418
418
419<script id='scb4127' type='text/javascript' async='' src='https://philwickham.store/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
419<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://philwickham.store/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 420<style id="shopify-accelerated-checkout-cart"> 421 #shopify-buyer-consent { 422 margin-top: 1em; 423 display: inline-block; 424 width: 100%; 425} 426 427#shopify-buyer-consent.hidden { 428 display: none; 429} 430 431#shopify-subscription-policy-button { 432 background: none; 433 border: none; 434 padding: 0; 435 text-decoration: underline; 436 font-size: inherit; 437 cursor: pointer; 438} 439 440#shopify-subscription-policy-button::before { 441 box-shadow: none; 442} 443 444 </style> 445
446<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
446 447 448
448<script src="//philwickham.store/cdn/shop/t/32/assets/vendor-scripts-v11.js" defer="defer"></script>
448<link rel="stylesheet" href="//philwickham.store/cdn/shop/t/32/assets/country-flags.css">
448<script src="//philwickham.store/cdn/shop/t/32/assets/theme.js?v=13442417270687149961777670645" defer="defer"></script>
448 449<!-- BEGIN app block: shopify://apps/attentive/blocks/attn-tag/8df62c72-8fe4-407e-a5b3-72132be30a0d -->
449<script type="text/javascript" src="https://cdn.attn.tv/philwickham/dtag.js?source=app-embed" defer="defer"></script>
449 450 451 452<!-- END app block --><!-- BEGIN app block: shopify://apps/fbp-fast-bundle/blocks/fast_bundle/9e87fbe2-9041-4c23-acf5-322413994cef --> 453 454 455 456<!-- BEGIN app snippet: fast_bundle --> 457 458 459 460 461 462
463<script> 464 if (Math.random() < 0.05) { 465 window.FastBundleRenderTimestamp = Date.now(); 466 } 467 468 // Main initialization 469 const apiURL = 'https://api.fastbundle.co'; 470 const sdkBaseUrl = 'https://sdk.fastbundle.co'; 471 const rbrCartUrl = `${apiURL}/scripts/cart.js`; 472 const mainAppUrl = 'https://cdn.shopify.com/extensions/01a0f2a3-ce8c-7f09-b09d-297fc1e69c10/fast-bundle-product-bundles-165/assets/main.min.js' 473 const vendorUrl = 'https://cdn.shopify.com/extensions/01a0f2a3-ce8c-7f09-b09d-297fc1e69c10/fast-bundle-product-bundles-165/assets/vendor.js'; 474 const styleUrl = 'https://cdn.shopify.com/extensions/01a0f2a3-ce8c-7f09-b09d-297fc1e69c10/fast-bundle-product-bundles-165/assets/main.min.css'; 475 const legacyAppUrl = `${apiURL}/react-src/static/js/main.min.js`; 476 const previousScriptLoaded = Boolean(document.querySelectorAll(`script[src*="${sdkBaseUrl}"]`).length) 477 const previousLegacyScriptLoaded = Boolean(document.querySelectorAll(`script[src*="${legacyAppUrl}"]`).length) 478 479 if (!(previousScriptLoaded || previousLegacyScriptLoaded)) { 480 const FastBundleConf = {"enable_bap_modal":false,"frontend_version":"1.29.04","storefront_record_submitted":true,"use_shopify_prices":false,"currencies":[{"id":2574354243,"code":"AED","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354244,"code":"ALL","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354245,"code":"AMD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354246,"code":"ANG","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354247,"code":"AUD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354248,"code":"AWG","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354249,"code":"AZN","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354250,"code":"BAM","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354251,"code":"BBD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354252,"code":"BDT","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354253,"code":"BIF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354254,"code":"BND","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354255,"code":"BOB","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354256,"code":"BSD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354257,"code":"BWP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354258,"code":"BZD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354259,"code":"CAD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354260,"code":"CHF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354261,"code":"CNY","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354262,"code":"CRC","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354263,"code":"CVE","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354264,"code":"CZK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354265,"code":"DJF","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354266,"code":"DKK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354267,"code":"DOP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354268,"code":"DZD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354269,"code":"EGP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354270,"code":"ETB","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354271,"code":"EUR","conversion_fee":1.0,"roundup_number":0.95,"rounding_enabled":true},{"id":2574354272,"code":"FJD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354273,"code":"FKP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354274,"code":"GBP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354275,"code":"GMD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354276,"code":"GNF","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354277,"code":"GTQ","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354278,"code":"GYD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354279,"code":"HKD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354280,"code":"HNL","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354281,"code":"HUF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354282,"code":"IDR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354283,"code":"ILS","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354284,"code":"INR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354285,"code":"ISK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354286,"code":"JMD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354287,"code":"JPY","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354288,"code":"KES","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354289,"code":"KGS","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354290,"code":"KHR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354291,"code":"KMF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354292,"code":"KRW","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354293,"code":"KYD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354294,"code":"KZT","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354295,"code":"LAK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354296,"code":"LKR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354297,"code":"MAD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354298,"code":"MDL","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354299,"code":"MKD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354300,"code":"MNT","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354301,"code":"MOP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354302,"code":"MUR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354303,"code":"MVR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354304,"code":"MWK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354305,"code":"MYR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354306,"code":"NGN","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354307,"code":"NIO","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354308,"code":"NPR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354309,"code":"NZD","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354310,"code":"PEN","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354311,"code":"PGK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354312,"code":"PHP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354313,"code":"PKR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354314,"code":"PLN","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354315,"code":"PYG","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354316,"code":"QAR","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354317,"code":"RON","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354318,"code":"RSD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354319,"code":"RWF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354320,"code":"SAR","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354321,"code":"SBD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354322,"code":"SEK","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354323,"code":"SGD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354324,"code":"SLL","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354325,"code":"STD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354326,"code":"THB","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354327,"code":"TOP","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354328,"code":"TTD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354329,"code":"TWD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354330,"code":"TZS","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354331,"code":"UGX","conversion_fee":1.
4800,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354332,"code":"USD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354333,"code":"UYU","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354334,"code":"UZS","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354335,"code":"VND","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354336,"code":"VUV","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354337,"code":"WST","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354338,"code":"XAF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354339,"code":"XCD","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354340,"code":"XOF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true},{"id":2574354341,"code":"XPF","conversion_fee":1.0,"roundup_number":0.0,"rounding_enabled":true}],"is_active":true,"override_product_page_forms":true,"allow_funnel":true,"do_not_track_bundle_visibility":false,"translations":[],"pid":"","bap_ids":[12370449858878,12370616090942,12370462343486,12370615730494,11948546818366,11613079568702,11242243719486,11948548489534,11242222158142,11583368560958,11583411487038,11607202595134,11242244931902,11242236739902,11242242179390,11242224812350,11583429443902,11242223
480632702,11242226057534],"active_bundles_count":7,"use_color_swatch":false,"use_shop_price":false,"dropdown_color_swatch":true,"option_config":{},"enable_subscriptions":false,"has_fbt_bundle":false,"use_shopify_function_discount":true,"use_bundle_builder_modal":true,"use_cart_hidden_attributes":true,"bap_override_fetch":true,"invalid_bap_override_fetch":true,"volume_discount_add_on_override_fetch":true,"pmm_new_design":true,"merged_mix_and_match":false,"change_vd_product_picture":false,"buy_it_now":true,"rgn":978368,"baps":{"12370449858878":{"bundle_id":517099,"variant_id":53423042593086,"handle":"everyday-hallelujah-bundle","type":"multi","use_cart_transform":false},"12370616090942":{"bundle_id":517202,"variant_id":53423724495166,"handle":"book-journal-bundle","type":"multi","use_cart_transform":false},"12370462343486":{"bundle_id":517104,"variant_id":53423099937086,"handle":"everyday-hallelujah-10-book-bundle","type":"multi","use_cart_transform":false},"12370615730494":{"bundle_id":517201,"variant_id":53423722725694,"handle":"book-blanket-bundle","type":"multi","use_cart_transform":false},"11948546818366":{"bundle_id":364371,"variant_id":51932112290110,"handle":"fan-pack-1","type":"multi","use_cart_transform":false},"11613079568702":{"bundle_id":265218,"variant_id":50727184499006,"handle":"mix-match-1","type":"multi","use_cart_transform":false},"11242243719486":{"bundle_id":220818,"variant_id":49897028387134,"handle":"bap-0250692a-d3ba-452d-bdd6-837423431f8d","type":"multi","use_cart_transform":false},"11948548489534":{"bundle_id":364374,"variant_id":51932122939710,"handle":"limited-edition-song-of-the-saints-signed-cd-amen-hat-fan-pack","type":"multi","use_cart_transform":false},"11242222158142":{"bundle_id":220812,"variant_id":49896973271358,"handle":"bap-db46e428-e0af-4bdd-9a8c-97e15af1f596","type":"multi","use_cart_transform":false},"11583368560958":{"bundle_id":263714,"variant_id":50684476227902,"handle":"bundle-angels-hoodie-angels-tee-signed-cd-vinyl","type":"multi","use_cart_transform":false},"11583411487038":{"bundle_id":263725,"variant_id":50684533735742,"handle":"christmas-bundle-angels-tee-hallelujah-its-christmas-cd","type":"multi","use_cart_transform":false},"11607202595134":{"bundle_id":264833,"variant_id":50717069934910,"handle":"christmas-bundle-angels-tee-signed-cd-ornament-card","type":"multi","use_cart_transform":false},"11242244931902":{"bundle_id":220819,"variant_id":49897032450366,"handle":"bap-091ac50c-43c8-4bc8-9757-e5df81156a71","type":"multi","use_cart_transform":false},"11242236739902":{"bundle_id":220816,"variant_id":49897008333118,"handle":"bap-a946bec5-1dbe-4485-9ca4-21f258028d2b","type":"multi","use_cart_transform":false},"11242242179390":{"bundle_id":220817,"variant_id":49897022783806,"handle":"bap-0dbbb415-aeef-459f-bf18-33ec5e87768e","type":"multi","use_cart_transform":false},"11242224812350":{"bundle_id":220814,"variant_id":49896985624894,"handle":"bap-eb926637-3d0f-4a39-883b-8a25c26114ea","type":"multi","use_cart_transform":false},"11583429443902":{"bundle_id":263726,"variant_id":50684557623614,"handle":"christmas-bundle-angels-hoodie-hallelujah-its-christmas-vinyl","type":"multi","use_cart_transform":false},"11242223632702":{"bundle_id":220813,"variant_id":49896980185406,"handle":"bap-0e18accd-fb93-4ff3-8bd5-6dd602d42cf9","type":"multi","use_cart_transform":false},"11242226057534":{"bundle_id":220815,"variant_id":49896989327678,"handle":"bap-813d5fbd-9b90-4798-9711-5382d6e1f9cf","type":"multi","use_cart_transform":false}},"has_multilingual_permission":true,"use_vd_templating":true,"use_payload_variant_id_in_fetch_override":false,"use_compare_at_price":false,"storefront_access_token":"4702ff6f84eac154fedd7952d48090d6","serverless_vd_display":false,"serverless_vd_discount":false,"serverless_vd_auto_detection":false,"serverless_fixed_display":false,"serverless_add_on_display":false,"serverless_mix_and_match_display":false,"serverless_fixed_discount":false,"products_with_add_on":{},"collections_with_add_on":{},"ssr_add_on":false,"has_required_plan":true,"bundleBox":{"id":65707,"bundle_page_enabled":true,"bundle_page_style":null,"currency":"USD","currency_format":"$%s","percentage_format":"%s%","show_sold_out":true,"track_inventory":true,"shop_page_external_script":"","page_external_script":"","shop_page_style":null,"shop_page_title":null,"shop_page_description":null,"app_version":"v2","show_logo":false,"show_info":false,"money_format":"amount_no_decimals","tax_factor":1.0,"primary_locale":"en","discount_code_prefix":"BUNDLE","is_active":true,"created":"2024-06-07T17:46:22.575460Z","updated":"2024-06-07T17:46:22.575475Z","title":"Don't miss this offer","style":null,"inject_selector":null,"mix_inject_selector":null,"fbt_inject_selector":null,"volume_inject_selector":null,"volume_variant_selector":null,"button_title":"Buy this bundle","bogo_button_title":"Buy {quantity} items","price_description":"Add bundle to cart | Save {discount}
480","version":"v2.3","bogo_version":"v1","nth_child":1,"redirect_to_cart":true,"column_numbers":3,"color":null,"btn_font_color":"white","add_to_cart_selector":null,"cart_info_version":"v2","button_position":"bottom","bundle_page_shape":"row","add_bundle_action":"cart-page","requested_bundle_action":null,"request_action_text":null,"cart_drawer_function":"","cart_drawer_function_svelte":"","theme_template":"light","external_script":"","pre_add_script":"","shop_external_script":"","shop_style":"","bap_inject_selector":"","bap_none_selector":"","bap_form_script":"","bap_button_selector":"","bap_style_object":{"standard":{"custom_code":{"main":{"custom_js":"","custom_css":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"","width":""},"separator_line_style":{"backgroundColor":"#e5e5e5"},"variant_selector_style":{"color":"#000000","height":46,"backgroundColor":"#fafafa"}}},"mix_and_match":{"custom_code":{"main":{"custom_js":"","custom_css":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"","width":""},"checkbox_style":{"checked":"","unchecked":"","checked_color":"#2c6ecb"},"quantities_style":{"color":"","backgroundColor":""},"product_card_style":{"checked_border":"","unchecked_border":"","checked_background":""},"separator_line_style":{"backgroundColor":"#e5e5e5"},"variant_selector_style":{"color":"#000000","height":46,"backgroundColor":"#fafafa"},"quantities_selector_style":{"color":"#000000","backgroundColor":"#fafafa"}}}},"bundles_page_style_object":null,"style_object":{"fbt":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"bogo":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"discount_label":{"background":{"backgroundColor":"#262626"},"text_style":{"color":"#FFFFFF"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"bxgyf":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"standard":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"discount_label":{"background":{"backgroundColor":"#262626"},"text_style":{"color":"#FFFFFF"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"mix_and_match":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}},"col_mix_and_match":{"box":{"error":{"fill":"#D72C0D","color":"#D72C0D","fontSize":14,"fontFamily":"inherit","borderColor":"#E0B5B2","borderRadius":8,"backgroundColor":"#FFF4FA"},"title":{"color":"#191919","fontSize":22,"fontFamily":"inherit","fontWeight":600},"border":{"borderColor":"#CBCBCB","borderWidth":1,"borderRadius":12},"selected":{"borderColor":"#262626","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(38, 38, 38, 0.2)"}},"poweredBy":{"color":"#191919","fontSize":14,"fontFamily":"inherit","fontWeight":400},"background":{"backgroundColor":"#FFFFFF"},"fastBundle":{"color":"#262626","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"notSelected":{"borderColor":"rgba(203, 203, 203, 0.4)","borderWidth":1,"borderRadius":12,"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"}},"sellingPlan":{"color":"#262626","fontSize":18,"fontFamily":"inherit","fontWeight":400,"borderColor":"#262626","borderRadius":8,"backgroundColor":"transparent"}},"plus":{"style":{"fill":"#FFFFFF","backgroundColor":"#262626"}},"title":{"style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500},"alignment":{"textAlign":"left"}},"button":{"border":{"borderColor":"transparent","borderRadius":8},"background":{"backgroundColor":"#262626"},"button_label":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500},"button_position":{"position":"bottom"},"backgroundSecondary":{"backgroundColor":"rgba(38, 38, 38, 0.7)"},"button_labelSecondary":{"color":"#FFFFFF","fontSize":18,"fontFamily":"inherit","fontWeight":500}},"design":{"main":{"design":"modern"}},"option":{"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit","fontWeight":500},"option_text_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":14,"fontFamily":"inherit"}},"innerBox":{"border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":8},"background":{"backgroundColor":"rgba(255, 255, 255, 0.4)"}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"soldOutBadge":{"background":{"backgroundColor":"#E8144B","borderTopRightRadius":8}},"total_section":{"text":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"border":{"borderRadius":8},"background":{"backgroundColor":"rgba(38, 38, 38, 0.05)"},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"}},"discount_badge":{"background":{"backgroundColor":"#E8144B","borderTopLeftRadius":8},"text_style":{"color":"#FFFFFF","fontSize":14,"fontFamily":"inherit"}},"product_detail":{"price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"image_border":{"borderColor":"rgba(203, 203, 203, 0.4)","borderRadius":6},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"checkbox_style":{"checked_color":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"final_price_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"original_price_style":{"color":"rgba(25, 25, 25, 0.5)","fontSize":16,"fontFamily":"inherit"},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"variant_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"},"quantities_selector_style":{"color":"#000000","borderColor":"#EBEBEB","borderRadius":6,"backgroundColor":"#FAFAFA"}},"discount_options":{"applied":{"color":"#13A165","backgroundColor":"#E0FAEF"},"unApplied":{"color":"#5E5E5E","backgroundColor":"#F1F1F1"}},"collection_details":{"title_style":{"color":"#191919","fontSize":16,"fontFamily":"inherit"},"pluses_style":{"fill":"#FFFFFF","backgroundColor":"#262626"},"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":14,"fontFamily":"inherit","fontWeight":400},"separator_line_style":{"backgroundColor":"rgba(203, 203, 203, 0.2)"},"collection_image_border":{"borderColor":"rgba(203, 203, 203, 0.4)"}},"title_and_description":{"alignment":{"textAlign":"left"},"title_style":{"color":"#191919","fontSize":18,"fontFamily":"inherit","fontWeight":500}
480,"subtitle_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400},"description_style":{"color":"rgba(25, 25, 25, 0.7)","fontSize":16,"fontFamily":"inherit","fontWeight":400}}}},"old_style_object":null,"zero_discount_btn_title":"Add to cart","mix_btn_title":"Add selected to cart","collection_btn_title":"Add selected to cart","cart_page_issue":null,"cart_drawer_issue":null,"volume_btn_title":"Add {quantity} | save {discount}","badge_color":"#C30000","badge_price_description":"Save {discount}!","use_discount_on_cookie":true,"show_bap_buy_button":false,"bap_version":"v1","bap_price_selector":null,"bap_compare_price_selector":null,"bundles_display":"vertical","use_first_variant":false,"shop":59149},"bundlePageInfo":{"title":null,"description":null,"enabled":true,"handle":"fastbundles","shop_style":null,"shop_external_script":"","style":null,"external_script":"","bundles_alignment":"bottom","bundles_display":"horizontal"},"cartInfo":{"id":65721,"currency":"USD","currency_format":"$%s","box_discount_description":"Add bundle to cart | Save {discount}","box_button_title":"Buy this bundle","free_shipping_translation":null,"shipping_cost_translation":null,"is_reference":false,"subtotal_selector":".cart__page>.cart__page-col:nth-child(2)>.cart__item-sub.cart__item-row","subtotal_price_selector":".cart__page>.cart__page-col:nth-child(2)>.cart__item-sub.cart__item-row> div:nth-child(2)","subtotal_title_selector":"","line_items_selector":".cart__item","discount_tag_html":"<div class=\"cart__item-sub cart__item-row %class\">\r\n <div>Bundle (-%discount)</div>\r\n <div data-subtotal=\"\"><span class=\"money\" ls-currency-gbp=\"39.94\" ls-currency-aud=\"70.64296082565752\" ls-currency=\"aud\">%final_price</span></div>\r\n </div>","free_shipping_tag":null,"form_subtotal_selector":".drawer__footer.appear-animation.appear-delay-4>.cart__item-sub.cart__item-row","form_subtotal_price_selector":".drawer__footer.appear-animation.appear-delay-4>.cart__item-sub.cart__item-row> div:nth-child(2)","form_line_items_selector":".cart__item","form_discount_html_tag":"<div class=\"cart__item-sub cart__item-row %class\">\r\n <div class=\"ajaxcart__subtotal\">Bundle (-%discount)</div>\r\n <div data-subtotal=\"\"><span class=\"money\" ls-currency-gbp=\"39.94\" ls-currency-aud=\"70.64296082565752\" ls-currency=\"aud\">%final_price</span></div>\r\n </div>","form_free_shipping_tag":null,"external_script":"","funnel_show_method":"three_seconds","funnel_popup_title":"Complete your cart with this bundle and save","funnel_alert":"This item is already in your cart.","funnel_discount_description":"save {discount}","style":"","shop_style":null,"shop_external_script":"","funnel_color":"","funnel_badge_color":"","style_object":{"standard":{"box":{"background":{"backgroundColor":"#ffffff"}},"badge":{"main":{"switchBtn":""},"background":{"backgroundColor":""},"text_style":{"color":"","total":"","fontSize":"","fontFamily":""}},"button":{"background":{"backgroundColor":"#000000"},"button_label":{"color":"#ffffff","fontSize":16,"fontFamily":"","price_description":"","zero_discount_btn_title":""}},"custom_code":{"main":{"custom_js":"","custom_css":""}},"bundle_title":{"style":{"color":"#303030","fontSize":22,"fontFamily":""},"alignment":{"textAlign":"left"}},"pop_up_title":{"style":{"color":"","fontSize":"","fontFamily":"","price_description":""},"alignment":{"textAlign":"left"}},"total_section":{"text":{"color":"#303030","fontSize":16,"fontFamily":""},"background":{"backgroundColor":"#e5e5e5"},"final_price_style":{"color":"#008060","fontSize":16,"fontFamily":""},"original_price_style":{"color":"#D72C0D","fontSize":16,"fontFamily":""}},"product_detail":{"price_style":{"color":"#5e5e5e","fontSize":16,"fontFamily":""},"title_style":{"color":"#303030","fontSize":16,"fontFamily":""},"image_border":{"borderColor":"#e5e5e5"},"pluses_style":{"fill":"#000000","width":16},"variant_selector_style":{"color":"#5e5e5e","height":"","backgroundColor":"#FAFAFA"}},"pre_selected_products":{"final_price_style":{"color":"","total":"","fontSize":"","fontFamily":""}}}},"old_style_object":null,"funnel_button_description":"Buy this bundle | Save {discount}","funnel_injection_constraint":"","show_discount_section":false,"discount_section_style":null,"discount_section_selector":null,"reload_after_change_detection":false,"app_version":"v2","show_info":false,"box_zero_discount_title":"Add to cart"}}; 481 FastBundleConf.pid = ''; 482 FastBundleConf.domain = 'phil-wickham-online-store.myshopify.com'; 483 FastBundleConf.variantIds = []; 484 window.FastBundleConf = FastBundleConf; 485 486 // add random generated number query parameter to clear the cache 487 const urlQueryParameter = `?rgn=${FastBundleConf?.rgn}`; 488 loadFastBundleAssets(mainAppUrl, vendorUrl, styleUrl, rbrCartUrl + urlQueryParameter); 489 } 490 491 // if the product id is set and the bap_override_fetch is not set, we add the style to the theme to hide the add to cart buttons 492 if (window.FastBundleConf?.pid && !window.FastBundleConf?.bap_override_fetch) { 493 if (window.FastBundleConf.bap_ids.includes(+window.FastBundleConf.pid)) { 494 const styleElement = document.createElement('style') 495 let bundleBox = window.FastBundleConf?.bundleBox 496 styleElement.id = 'fb-bap-style' 497 let externalSelector = bundleBox?.bap_button_selector ? `, ${bundleBox?.bap_button_selector}` : '' 498 styleElement.innerHTML = ` 499 button[name="add"], form[action="/cart/add"] button[type="submit"], input[name="add"] ${externalSelector}{ 500 display: none !important; 501 }` 502 document.head.appendChild(styleElement) 503 } 504 } 505 506 // Helper function to load FastBundle assets 507 function loadFastBundleAssets(mainAppUrl, vendorUrl, styleUrl, cartUrl) { 508 509 // Preconnect to the asset origin. Two hints are emitted because browsers 510 // maintain separate HTTP/2 connection pools per CORS-mode: the anonymous 511 // one is reused by the module scripts (vendor + main); the non-anonymous
512 // one is reused by the non-CORS stylesheet. DNS resolution is shared. 513 // Origin is parsed from mainAppUrl so this works whether assets are served 514 // from the SDK CDN or from the Shopify CDN (browser dedupes either way). 515 const assetOrigin = new URL(mainAppUrl, location.href).origin; 516 517 const preconnectAnon = document.createElement('link'); 518 preconnectAnon.rel = 'preconnect'; 519 preconnectAnon.href = assetOrigin; 520 preconnectAnon.crossOrigin = 'anonymous'; 521 document.head.appendChild(preconnectAnon); 522 523 const preconnect = document.createElement('link'); 524 preconnect.rel = 'preconnect'; 525 preconnect.href = assetOrigin; 526 document.head.appendChild(preconnect); 527 528 // Load vendor script with modulepreload 529 const vendorScript = document.createElement('link'); 530 vendorScript.rel = 'modulepreload'; 531 vendorScript.href = vendorUrl; 532 document.head.appendChild(vendorScript); 533 534 // Load main app script 535 const mainScript = document.createElement('script'); 536 mainScript.defer = true; 537 mainScript.type = 'module'; 538 mainScript.src = mainAppUrl; 539 document.head.appendChild(mainScript); 540 541 // Load cart script 542 const cartScript = document.createElement('script'); 543 cartScript.src = cartUrl; 544 cartScript.defer = true; 545 cartScript.type = 'text/javascript'; 546 document.head.appendChild(cartScript); 547 548 // Load stylesheet 549 const styleLink = document.createElement('link'); 550 styleLink.rel = 'stylesheet'; 551 styleLink.href = styleUrl; 552 document.head.appendChild(styleLink); 553 } 554 555 </script>
555 556 557<!-- END app snippet --> 558 <!-- BEGIN app snippet: fast_bundle_shared -->
558<script> 559 (function(){ 560 const FastBundleConf = window?.FastBundleConf || {}; 561 562 const shopDomain = FastBundleConf?.shop_domain || "phil-wickham-online-store.myshopify.com"; 563 const countryByMarket = "US"; 564 const countryByLocale = null; 565 const countryCode = countryByMarket || countryByLocale || FastBundleConf?.country_code || 'US'; 566 const language = {"shop_locale":{"locale":"en","enabled":true,"primary":true,"published":true}}; 567 const shopLocale = language.shop_locale.locale || null; 568 const firstRawLanguage = "en"; 569 const SecondRawLanguage = "en"; 570 const langCandidates = [ 571 firstRawLanguage, 572 SecondRawLanguage, 573 navigator.language, 574 navigator.userLanguage, 575 null, 576 ]; 577 let shopLanguage = null; 578 for (const candidate of langCandidates) { 579 shopLanguage = fastBundleExtractValidLanguage(candidate); 580 if (shopLanguage) break; 581 } 582 if (!shopLanguage) shopLanguage = "EN"; 583 const storefrontAccessToken = "4702ff6f84eac154fedd7952d48090d6" || ''; 584 const mainProduct = null; 585 window.FastBundleShared = window.FastBundleShared || {}; 586 window.FastBundleShared.functions = window.FastBundleShared.functions || {}; 587 588 function fastBundleExtractValidLanguage(raw) { 589 if (!raw || typeof raw !== "string") return null; 590 const clean = raw.trim().toLowerCase(); 591 if (/^[a-z]{2}$/.test(clean)) { 592 return clean.toUpperCase(); 593 } 594 if (/^[a-z]{2}-[a-z0-9]+$/.test(clean)) { 595 return clean.split('-')[0].toUpperCase(); 596 } 597 if (/^[a-z]{2}_[a-z0-9]+$/.test(clean)) { 598 return clean.split('_')[0].toUpperCase(); 599 } 600 return null; 601 } 602 603 window.FastBundleShared.defineFunction = function (name, fn) { 604 if (!window.FastBundleShared.functions[name]) { 605 window.FastBundleShared.functions[name] = fn; 606 } else { 607 console.warn(`Function "${name}" is already defined.`); 608 } 609 }; 610 611 612 window.FastBundleShared.config = { 613 shopDomain: shopDomain, 614 countryCode: countryCode, 615 shopLanguage: shopLanguage, 616 storefrontAccessToken: storefrontAccessToken, 617 }; 618 window.FastBundleShared.__ready = window.FastBundleShared.__ready || new Promise(function (resolve) { 619 const script = document.createElement('script'); 620 script.src = "https://cdn.shopify.com/extensions/01a0f2a3-ce8c-7f09-b09d-297fc1e69c10/fast-bundle-product-bundles-165/assets/fast_bundle_shared.js"; 621 script.onload = resolve; 622 script.onerror = function () { 623 console.error('FastBundle: failed to load fast_bundle_shared.js'); 624 resolve(); 625 }; 626 (document.head || document.documentElement).appendChild(script); 627 }); 628 629 // A stale CDN copy of the asset may predate a fetcher, so fall back to the 630 // shape each caller expects rather than throwing. 631 function fastBundleDeferToAsset(name, emptyValue) { 632 return async function () { 633 await window.FastBundleShared.__ready; 634 const fn = window.FastBundleShared.__impl?.[name]; 635 if (typeof fn !== 'function') { 636 console.error(`FastBundle: ${name} unavailable (fast_bundle_shared.js did not load)`); 637 return emptyValue; 638 } 639 return fn.apply(null, arguments); 640 }; 641 } 642 643 window.FastBundleShared.defineFunction('fetchProductByID', fastBundleDeferToAsset('fetchProductByID', null)); 644 window.FastBundleShared.defineFunction('fetchProductsByIDs', fastBundleDeferToAsset('fetchProductsByIDs', {})); 645 window.FastBundleShared.defineFunction('fetchAllProductVariants', fastBundleDeferToAsset('fetchAllProductVariants', null)); 646 window.FastBundleShared.defineFunction('ensureAllVariants', fastBundleDeferToAsset('ensureAllVariants', null)); 647 648 // fast_bundle_volume.liquid reads this synchronously at parse time, so it 649 // cannot defer to the asset like the fetchers above. 650 window.FastBundleShared.defineFunction('formatMoney', function (amount, currency = 'USD') { 651 return new Intl.NumberFormat('en-US', { 652 style: 'currency', 653 currency, 654 }).format(amount); 655 }); 656 657 window.FastBundleShared.defineFunction('getMainProduct', function () { 658 if (!mainProduct) return null; 659 660 mainProduct.collections = []; 661 mainProduct.body_html = mainProduct.description; 662 mainProduct.image = mainProduct.images.length ? mainProduct.images[0] : null; 663 mainProduct.raw_price = mainProduct.price / 100; 664 665 mainProduct.price = ""; 666 667 mainProduct.options_with_values = [ 668 669 ]; 670 mainProduct.options = mainProduct.options_with_values; 671 delete mainProduct.options_with_values 672 return mainProduct; 673 }) 674 675 window.FastBundleShared.defineFunction('excludeVariants', function (product, excludedVariants) { 676 let preprocessedProduct = { ...product }; 677 if (excludedVariants.length) { 678 const excludedIds = new Set(excludedVariants.map((id) => Number(id))); 679 preprocessedProduct.variants = product.variants.filter((variant) => !excludedIds.has(variant.id)); 680 } 681 return preprocessedProduct; 682 }); 683 684 window.FastBundleShared.defineFunction('handleTranslations', async function(offer, bundleTranslationKeys, discountTranslationKeys, itemTranslationKeys = []) { 685 const translations = offer.translations || {}; 686 const t = translations[shopLocale] || {}; 687 bundleTranslationKeys.forEach((key) => { 688 if (t[key]) { 689 offer[key] = t[key]; 690 } 691 }); 692 delete offer.translations; 693 if (offer.discounts && Array.isArray(offer.discounts)) {
694 offer.discounts.forEach((discount, j) => { 695 const discountTranslations = discount.translations || {}; 696 const dt = discountTranslations[shopLocale] || {}; 697 discountTranslationKeys.forEach((key) => { 698 if (dt[key]) { 699 offer.discounts[j][key] = dt[key]; 700 } 701 }); 702 delete discount.translations; 703 }); 704 } 705 // Item-level translations (offer.items[].translations), keyed by locale like 706 // the offer/discount ones. Only mix & match passes item keys today; callers 707 // that omit them keep the exact previous behaviour, translations included. 708 if (itemTranslationKeys.length && Array.isArray(offer.items)) { 709 offer.items.forEach((item, k) => { 710 const itemTranslations = item.translations || {}; 711 const it = itemTranslations[shopLocale] || {}; 712 itemTranslationKeys.forEach((key) => { 713 if (it[key]) { 714 offer.items[k][key] = it[key]; 715 } 716 }); 717 delete item.translations; 718 }); 719 } 720 }); 721 722 window.FastBundleShared.defineFunction('isPreview', function(){ 723 const params = new URLSearchParams(window.location.search.toLowerCase()); 724 const isPreview = params.get('ispreview') === 'true'; 725 return isPreview 726 }) 727 728 window.FastBundleShared.defineFunction('conditionalLog', function (...args) { 729 try { 730 if (localStorage.getItem('allowRBRLogs') === 'true') { 731 console.log('From Extension:***', ...args); 732 } 733 } catch (error) { 734 console.error(error); 735 } 736 }); 737 })(); 738</script>
738 739<!-- END app snippet --> 740 <!-- BEGIN app snippet: fast_bundle_volume --> 741
742<script> 743 (async function() { 744 const FastBundleConf = window?.FastBundleConf || {}; 745 const fetchProductByID = window.FastBundleShared.functions.fetchProductByID; 746 const getMainProduct = window.FastBundleShared.functions.getMainProduct; 747 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 748 const mainProduct = getMainProduct(); 749 conditionalLog('mainProduct',mainProduct); 750 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 751 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 752 if (FastBundleConf?.serverless_vd || FastBundleConf?.serverless_vd_display) { 753 if (!mainProduct) return; 754 window.FastBundleConf.change_vd_product_picture = true; 755 let FastBundleVolumeOffers = []; 756 conditionalLog('FastBundleVolumeOffers', FastBundleVolumeOffers); 757 window.FastBundleVolumeOffers = FastBundleVolumeOffers; 758 759 function finishWithNoVolumeOffer() { 760 window.FastBundleVolumeOffer = []; 761 document.dispatchEvent(new CustomEvent('FastBundleVolumeOffersReady', { detail: [] })); 762 } 763 764 765 const totalVariantsCount = null || 0; 766 const shopCurrency = "USD"; 767 const shopMoneyFormat = "${{amount_no_decimals}}"; 768 const fetchAllProductVariants = window.FastBundleShared.functions.fetchAllProductVariants; 769 const formatMoney = window.FastBundleShared.functions.formatMoney; 770 771 function formatWithDelimiters(cents, precision, thousands, decimal) { 772 const fixed = (cents / 100).toFixed(precision); 773 const parts = fixed.split('.'); 774 const units = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + thousands); 775 return parts[1] ? units + decimal + parts[1] : units; 776 } 777 778 function formatMoneyLikeLiquid(cents, currencyCode) { 779 // Reproduce the Liquid money filter so appended variants display like the first 250. 780 // Fall back to Intl formatting when the price is not in the shop currency. 781 if (currencyCode !== shopCurrency || !shopMoneyFormat) { 782 return formatMoney(cents / 100, currencyCode); 783 } 784 const placeholderRegex = /\{\{\s*(\w+)\s*\}\}/; 785 const placeholder = (shopMoneyFormat.match(placeholderRegex) || [])[1]; 786 let value; 787 switch (placeholder) { 788 case 'amount_no_decimals': value = formatWithDelimiters(cents, 0, ',', '.'); break; 789 case 'amount_with_comma_separator': value = formatWithDelimiters(cents, 2, '.', ','); break; 790 case 'amount_no_decimals_with_comma_separator': value = formatWithDelimiters(cents, 0, '.', ','); break; 791 case 'amount_with_apostrophe_separator': value = formatWithDelimiters(cents, 2, "'", '.'); break; 792 default: value = formatWithDelimiters(cents, 2, ',', '.'); 793 } 794 return shopMoneyFormat.replace(placeholderRegex, value); 795 } 796 797 function convertStorefrontVariant(node) { 798 const variantId = Number(String(node?.id || '').split('/').pop()); 799 const currencyCode = node?.price?.currencyCode; 800 const rawPrice = parseFloat(node?.price?.amount || 0); 801 const rawCompareAtPrice = node?.compareAtPrice ? parseFloat(node.compareAtPrice.amount) : rawPrice; 802 const rawQuantity = node?.quantityAvailable; 803 const isTracked = typeof rawQuantity === 'number' && rawQuantity !== -1; 804 const sellsWhenOutOfStock = !!node?.currentlyNotInStock && node?.availableForSale === true; 805 const inventoryManagement = isTracked ? 'shopify' : null; 806 const inventoryPolicy = isTracked ? (sellsWhenOutOfStock ? 'continue' : 'deny') : 'continue'; 807 const inventoryQuantity = isTracked ? rawQuantity : (node?.availableForSale ? 1 : 0); 808 const image = node?.image?.url ? { src: node.image.url, alt: null } : null; 809 const selectedOptions = node?.selectedOptions || []; 810 return { 811 id: variantId, 812 title: node?.title, 813 name: mainProduct.title + ' - ' + node?.title, 814 public_title: node?.title, 815 available: node?.availableForSale === true, 816 availableForSale: node?.availableForSale === true, 817 currentlyNotInStock: !!node?.currentlyNotInStock, 818 is_inventory_tracked: isTracked, 819 option1: selectedOptions[0]?.value ?? null, 820 option2: selectedOptions[1]?.value ?? null, 821 option3: selectedOptions[2]?.value ?? null, 822 selectedOptions: selectedOptions, 823 sku: node?.sku || null, 824 requires_shipping: node?.requiresShipping !== false, 825 taxable: node?.taxable !== false, 826 barcode: null, 827 weight: 0, 828 featured_image: image, 829 featured_media: null,
830 requires_selling_plan: false, 831 selling_plan_allocations: [], 832 quantity_price_breaks: [], 833 quantity_rule: { min: 1, max: null, increment: 1 }, 834 // raw_price is in currency units to match getMainProduct() (variant.price | divided_by: 100.0) 835 raw_price: rawPrice, 836 price: formatMoneyLikeLiquid(Math.round(rawPrice * 100), currencyCode), 837 raw_compare_at_price: rawCompareAtPrice, 838 compare_at_price: formatMoneyLikeLiquid(Math.round(rawCompareAtPrice * 100), currencyCode), 839 image: image, 840 inventory_policy: inventoryPolicy, 841 inventory_quantity: inventoryQuantity, 842 inventory_management: inventoryManagement, 843 quantity: (inventoryManagement && inventoryPolicy === 'deny') ? inventoryQuantity : 1, 844 }; 845 } 846 847 async function ensureAllVariants(product) { 848 if (!totalVariantsCount || totalVariantsCount <= product.variants.length) return product; 849 if (typeof fetchAllProductVariants !== 'function') return product; 850 try { 851 const nodes = await fetchAllProductVariants(product.id); 852 if (!nodes || !nodes.length) return product; 853 const knownIds = new Set(product.variants.map((variant) => variant.id)); 854 const missingVariants = nodes 855 .map(convertStorefrontVariant) 856 .filter((variant) => variant.id && !knownIds.has(variant.id)); 857 if (!missingVariants.length) return product; 858 conditionalLog('Volume: appended variants beyond the Liquid 250 cap', { 859 rendered: product.variants.length, 860 fetched: nodes.length, 861 appended: missingVariants.length, 862 }); 863 // Return a copy: mainProduct is shared with the other bundle types and must stay capped for them. 864 return { ...product, variants: product.variants.concat(missingVariants) }; 865 } catch (error) { 866 conditionalLog('Volume: full variant fetch failed, falling back to the first 250 variants', error); 867 return product; 868 } 869 } 870 871 if (!FastBundleVolumeOffers.length) { 872 conditionalLog('No Volume Offers Found'); 873 finishWithNoVolumeOffer(); 874 return; 875 } 876 877 for (const offer of FastBundleVolumeOffers) { 878 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 879 offer.discount = offer.discounts[0] || {}; 880 await handleTranslations( 881 offer, 882 ['title', 883 'description', 884 'volume_show_price_per_item_suffix'], 885 ['badge', 886 'description', 887 'label', 888 'subtitle'] 889 ); 890 } 891 async function attachFastBundleFreeGifts() { 892 const offersWithDiscounts = window.FastBundleVolumeOffer || []; 893 const promises = []; 894 offersWithDiscounts.forEach((offer) => { 895 if (offer.discounts && Array.isArray(offer.discounts)) { 896 offer.discounts.forEach((discount) => { 897 if (discount.free_gift && discount.free_gift.product_id) { 898 const numericId = discount.free_gift.product_id; 899 const gid = `gid://shopify/Product/${numericId}`; 900 const p = fetchProductByID(gid).then(product => { 901 if (product) { 902 discount.free_gift.product = product; 903 } 904 }); 905 promises.push(p); 906 } 907 }); 908 } 909 }); 910 911 await Promise.all(promises); 912 document.dispatchEvent(new CustomEvent('FastBundleVolumeFreeGiftsReady', { detail: offersWithDiscounts })); 913 window.FastBundleVolumeOffer = offersWithDiscounts; 914 } 915 function isFastBundleOfferActive(offer) { 916 const isPreview = window.FastBundleShared.functions.isPreview; 917 if (!isPreview() && !offer?.enabled) return false; 918 const now = new Date(); 919 if (offer.start_datetime && new Date(offer.start_datetime) > now) return false; 920 if (offer.end_datetime && new Date(offer.end_datetime) < now) return false; 921 return true; 922 } 923 async function determineFastBundlVolumeeOffer() { 924 for (const offer of FastBundleVolumeOffers) { 925 if (isFastBundleOfferActive(offer)) return offer; 926 } 927 return {}; 928 } 929 determineFastBundlVolumeeOffer().then(async offer => { 930 if (!offer?.id) { 931 conditionalLog('No Active Volume Offer Found'); 932 finishWithNoVolumeOffer(); 933 return; 934 } 935 936 const volumeProduct = await ensureAllVariants(mainProduct); 937 const excludedVariants = [ 938 ...(offer?.item?.excluded_variants || []), 939 ...(offer?.item?.collect_excluded_variants?.[mainProduct.id] || []), 940 ]; 941 conditionalLog('excludedVariants', excludedVariants); 942 const preprocessedProduct = excludeVariants(volumeProduct, excludedVariants); 943 preprocessedProduct.item_id = offer?.item?.id || 0; 944 offer.items = [preprocessedProduct]; 945 window.FastBundleVolumeOffer = [offer]; 946 await attachFastBundleFreeGifts(); 947 document.dispatchEvent(new CustomEvent('FastBundleVolumeOffersReady', { detail: window.FastBundleVolumeOffer })); 948 }).catch(error => { 949 conditionalLog('Error determining FastBundleVolumeOffer', error); 950 }); 951 } 952 })(); 953</script>
953 954<!-- END app snippet --> 955 <!-- BEGIN app snippet: fast_bundle_cross_sell -->
955<script> 956 (async function(){ 957 let FastBundleCrossSellOffers = []; 958 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 959 conditionalLog('FastBundleCrossSellOffers', FastBundleCrossSellOffers); 960 const FastBundleConf = window?.FastBundleConf || {}; 961 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 962 const isPreview = window.FastBundleShared.functions.isPreview; 963 964 function isCrossSellOfferActive(offer) { 965 if (offer?.enabled === false) return false; 966 const now = Date.now(); 967 if (offer.start_datetime && Date.parse(offer.start_datetime) > now) return false; 968 if (offer.end_datetime && Date.parse(offer.end_datetime) < now) return false; 969 return true; 970 } 971 972 if (!isPreview()) { 973 FastBundleCrossSellOffers = (FastBundleCrossSellOffers || []).filter(isCrossSellOfferActive); 974 } 975 976 async function attachFastBundleItems(offer) { 977 if (!offer) return; 978 const getMainProduct = window.FastBundleShared.functions.getMainProduct; 979 const fetchProductByID = window.FastBundleShared.functions.fetchProductByID; 980 const mainProduct = getMainProduct(); 981 const pid = ''; 982 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 983 const uniqueChildIds = offer.children?.flatMap(child => 984 (child.items || []).map(item => item.item_id) 985 ) || []; 986 const uniqueProductIds = [ 987 ...new Set([ 988 ...(uniqueChildIds || []), 989 offer.main_item_id ? String(offer.main_item_id) : null, 990 ].filter(Boolean)) 991 ] 992 const productMap = {}; 993 try { 994 const results = await Promise.all( 995 uniqueProductIds.map(async (id) => { 996 const gid = id.startsWith('gid://') ? id : `gid://shopify/Product/${id}`; 997 const product = await fetchProductByID(gid, false); 998 if (product) productMap[id] = product; 999 }) 1000 ); 1001 } catch (err) { 1002 console.error('Error fetching products:', err); 1003 } 1004 offer.main_item = productMap[String(offer.main_item_id)] || null; 1005 const filteredChildren = (offer.children || []).filter(child => 1006 (child.items || []).every(item => productMap[item.item_id]) 1007 ); 1008 offer.children = filteredChildren.map(child => ({ 1009 ...child, 1010 items: child.items.map(item => ({ 1011 ...item, 1012 ...excludeVariants(productMap[item.item_id], item.excluded_variants) || {}, 1013 })), 1014 volume_single_variant_selector: offer?.volume_single_variant_selector, 1015 })); 1016 window.FastBundleCrossSellOffer = offer; 1017 } 1018 if (FastBundleCrossSellOffers?.length) { 1019 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferExists', { 1020 detail: true 1021 })); 1022 await attachFastBundleItems(FastBundleCrossSellOffers[0]); 1023 await handleTranslations( 1024 FastBundleCrossSellOffers[0], 1025 ['title', 'description'], 1026 ['description'] 1027 ); 1028 FastBundleCrossSellOffers[0].use_compare_at_price = FastBundleConf?.use_compare_at_price; 1029 for (const child of FastBundleCrossSellOffers[0].children) { 1030 await handleTranslations( 1031 child, 1032 ['title', 'description'], 1033 ['description'] 1034 ); 1035 child.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1036 child.is_child = true; 1037 child.discount = child.discounts[0] || {}; 1038 } 1039 window.FastBundleCrossSellOffer = [FastBundleCrossSellOffers?.[0]].filter(Boolean); 1040 } else { 1041 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferExists', { 1042 detail: false 1043 })); 1044 window.FastBundleCrossSellOffer = null; 1045 } 1046 1047 document.dispatchEvent(new CustomEvent('FastBundleCrossSellOfferReady', { 1048 detail: window.FastBundleCrossSellOffer || {} 1049 })); 1050 })(); 1051</script>
1051 1052<!-- END app snippet --> 1053 <!-- BEGIN app snippet: fast_bundle_add_on --> 1054<!-- BEGIN app snippet: fast_bundle_add_on_match -->
1055<script> 1056(async function () { 1057const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 1058 1059let FastBundleAddOnOffers = []; 1060conditionalLog('FastBundleAddOnOffers', FastBundleAddOnOffers); 1061const FastBundleConf = window?.FastBundleConf || {}; 1062const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1063const isPreview = window.FastBundleShared.functions.isPreview; 1064 1065function isAddOnOfferActive(offer) { 1066if (offer?.enabled === false) return false; 1067const now = Date.now(); 1068if (offer.start_datetime && Date.parse(offer.start_datetime) > now) return false; 1069if (offer.end_datetime && Date.parse(offer.end_datetime) < now) return false; 1070return true; 1071} 1072 1073if (!isPreview()) { 1074FastBundleAddOnOffers = (FastBundleAddOnOffers || []).filter(isAddOnOfferActive); 1075conditionalLog('FastBundleAddOnOffers after active filter', FastBundleAddOnOffers); 1076} 1077 1078const ADD_ON_ITEM_TYPE_PRIORITY = { 1079product: 0, 1080collection: 1, 1081general: 2, 1082}; 1083 1084function pickBestAddOnOfferFB(offers) { 1085const list = [...(offers || [])]; 1086if (!list.length) return null; 1087 1088list.sort((a, b) => { 1089const priorityDiff = 1090(ADD_ON_ITEM_TYPE_PRIORITY[a.item_type] ?? 99) - 1091(ADD_ON_ITEM_TYPE_PRIORITY[b.item_type] ?? 99); 1092if (priorityDiff !== 0) return priorityDiff; 1093return (a.products_page_priority ?? 0) - (b.products_page_priority ?? 0); 1094}); 1095 1096return list[0]; 1097} 1098 1099async function attachFastBundleItemsFB(offer) { 1100if (!offer) { 1101conditionalLog('No offer found'); 1102return false 1103}; 1104const getMainProduct = window.FastBundleShared.functions.getMainProduct; 1105const fetchProductsByIDs = window.FastBundleShared.functions.fetchProductsByIDs; 1106const excludeVariants = window.FastBundleShared.functions.excludeVariants; 1107 1108const items = offer.items || []; 1109if (!items.length) { 1110conditionalLog('No items found'); 1111return false; 1112}; 1113 1114const mainProduct = getMainProduct(); 1115if (!mainProduct) { 1116conditionalLog('No main product found'); 1117return false; 1118}; 1119 1120const addOnProductIds = [ 1121...new Set( 1122items 1123.filter((item) =>
1123 item.is_add_on === true) 1124.map((item) => String(item.item_id)) 1125.filter(Boolean) 1126), 1127]; 1128 1129const productMap = {}; 1130try { 1131if (!fetchProductsByIDs && addOnProductIds.length) { 1132conditionalLog('fetchProductsByIDs function is missing, add-on products cannot be fetched'); 1133} 1134if (fetchProductsByIDs && addOnProductIds.length) { 1135const fetchedProducts = await fetchProductsByIDs(addOnProductIds, false); 1136conditionalLog('fetchedProducts', fetchedProducts); 1137Object.keys(fetchedProducts || {}).forEach((id) => { 1138if (fetchedProducts[id]) productMap[id] = fetchedProducts[id]; 1139}); 1140} 1141} catch (err) { 1142conditionalLog('Error fetching products:', err); 1143return false; 1144} 1145 1146const hydratedItems = []; 1147for (const item of items) { 1148if (item.is_add_on === false || item.type === 'collection' || item.type === 'general') { 1149const excludedVariants = [ 1150...(item.excluded_variants || []), 1151...(item.collect_excluded_variants?.[mainProduct.id] || []), 1152]; 1153const preprocessedProduct = excludeVariants(mainProduct, excludedVariants) || {}; 1154if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1155conditionalLog('No variants left after exclusions on main product', mainProduct.id); 1156return false; 1157} 1158hydratedItems.push({ 1159...item, 1160...preprocessedProduct, 1161id: item.id, 1162item_id: String(mainProduct.id), 1163}); 1164continue; 1165} 1166
1167if (item.is_add_on === true) { 1168const product = productMap[String(item.item_id)]; 1169if (!product) { 1170conditionalLog('Add-on product not found in fetched products', item.item_id); 1171return false; 1172}; 1173const preprocessedProduct = excludeVariants(product, item.excluded_variants || []) || {}; 1174if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1175conditionalLog('No variants left after exclusions on add-on product', item.item_id); 1176return false; 1177} 1178hydratedItems.push({ ...item, ...preprocessedProduct }); 1179} 1180} 1181conditionalLog('hydratedItems', hydratedItems); 1182offer.items = hydratedItems; 1183return true; 1184} 1185 1186const pageMatchingOffers = FastBundleAddOnOffers || []; 1187const bestOffer = pickBestAddOnOfferFB(pageMatchingOffers); 1188conditionalLog('bestOffer', bestOffer); 1189if (bestOffer) { 1190document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: true })); 1191window.FastBundleAddOnOffers = pageMatchingOffers; 1192 1193const ok = await attachFastBundleItemsFB(bestOffer); 1194conditionalLog('attachFastBundleItemsFB result', ok); 1195if (!ok) { 1196document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: false })); 1197// Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1198window.FastBundleAddOnOffer = []; 1199conditionalLog('Set window.FastBundleAddOnOffer = [] -> offer item hydration failed (see previous log for the reason), falling back to serverfull'); 1200window.FastBundleAddOnOffers = null; 1201document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferReady', { detail: [] })); 1202return; 1203} 1204 1205bestOffer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1206bestOffer.discount = bestOffer.discounts?.[0] || {}; 1207await handleTranslations( 1208bestOffer, 1209['title', 'description'], 1210['description', 'label', 'badge', 'subtitle'] 1211); 1212window.FastBundleAddOnOffer = [bestOffer]; 1213} else { 1214document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferExists', { detail: false })); 1215// Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1216window.FastBundleAddOnOffer = []; 1217conditionalLog('Set window.FastBundleAddOnOffer = [] -> no active add-on offer matches this page, falling back to serverfull'); 1218window.FastBundleAddOnOffers = null; 1219} 1220 1221document.dispatchEvent(new CustomEvent('FastBundleAddOnOfferReady', { 1222detail: window.FastBundleAddOnOffer || [] 1223})); 1224})(); 1225</script>
1225<!-- END app snippet --><!-- END app snippet --> 1226 <!-- BEGIN app snippet: fast_bundle_fixed -->
1226<script> 1227 (async function(){ 1228 let FastBundleFixedOffers = []; 1229 const FastBundleConf = window?.FastBundleConf || {}; 1230 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1231 const isPreview = window.FastBundleShared.functions.isPreview; 1232 1233 function isFixedOfferActive(offer) { 1234 if (offer?.enabled === false) return false; 1235 const now = Date.now(); 1236 if (offer.start_datetime && new Date(offer.start_datetime).getTime() > now) return false; 1237 if (offer.end_datetime && new Date(offer.end_datetime).getTime() < now) return false; 1238 return true; 1239 } 1240 1241 if (!isPreview()) { 1242 FastBundleFixedOffers = (FastBundleFixedOffers || []).filter(isFixedOfferActive); 1243 } 1244 1245 // Returns true only if every bundle item resolves to a fetched product with 1246 // at least one selectable variant. Deleted/hidden products (or products that 1247 // collapse to zero variants after `excluded_variants`) cause the whole bundle 1248 // to be dropped â partial bundles must never reach the storefront. 1249 async function attachFastBundleItems(offer) { 1250 if (!offer) return false; 1251 const fetchProductsByIDs = window.FastBundleShared.functions.fetchProductsByIDs; 1252 const excludeVariants = window.FastBundleShared.functions.excludeVariants; 1253 1254 const items = offer.items || []; 1255 if (!items.length) return false; 1256 1257 const uniqueProductIds = [ 1258 ...new Set(items.map(item => String(item.item_id))) 1259 ]; 1260 1261 const productMap = {}; 1262 try { 1263 if (fetchProductsByIDs && uniqueProductIds.length) { 1264 const fetchedProducts = await fetchProductsByIDs(uniqueProductIds, false); 1265 Object.keys(fetchedProducts || {}).forEach((id) => { 1266 if (fetchedProducts[id]) productMap[id] = fetchedProducts[id]; 1267 }); 1268 } 1269 } catch (err) { 1270 console.error('Error fetching products:', err); 1271 return false; 1272 } 1273 1274 const hydratedItems = []; 1275 for (const item of items) { 1276 const product = productMap[item.item_id]; 1277 if (!product) return false; 1278 const preprocessedProduct = excludeVariants(product, item.excluded_variants) || {}; 1279 if (!Array.isArray(preprocessedProduct.variants) || preprocessedProduct.variants.length === 0) { 1280 return false; 1281 } 1282 hydratedItems.push({ ...item, ...preprocessedProduct }); 1283 } 1284 1285 offer.items = hydratedItems; 1286 return true; 1287 } 1288 1289 if (FastBundleFixedOffers?.length) { 1290 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: true })); 1291 const hydratedOffers = []; 1292 for (const offer of FastBundleFixedOffers) { 1293 const ok = await attachFastBundleItems(offer); 1294 if (!ok) continue; 1295 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1296 offer.discount = offer.discounts[0] || {}; 1297 await handleTranslations( 1298 offer, 1299 ['title', 'description'], 1300 ['description', 'label', 'badge', 'subtitle'] 1301 ); 1302 hydratedOffers.push(offer); 1303 } 1304 if (hydratedOffers.length === 0) { 1305 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: false })); 1306 window.FastBundleFixedOffer = []; 1307 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferReady', { detail: [] })); 1308 return; 1309 } 1310 window.FastBundleFixedOffer = hydratedOffers; 1311 } else { 1312 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferExists', { detail: false })); 1313 // Empty array = "serverless checked, no offer" -> SDK falls back to serverfull. 1314 window.FastBundleFixedOffer = []; 1315 } 1316 1317 document.dispatchEvent(new CustomEvent('FastBundleFixedOfferReady', { 1318 detail: window.FastBundleFixedOffer || [] 1319 })); 1320 })(); 1321</script>
1321 1322<!-- END app snippet --> 1323 <!-- BEGIN app snippet: fast_bundle_mix_and_match -->
1324<script> 1325 (async function () { 1326 let FastBundleMixAndMatchOffers = []; 1327 1328 const FastBundleConf = window?.FastBundleConf || {}; 1329 const conditionalLog = window.FastBundleShared?.functions?.conditionalLog || (() => {}); 1330 const handleTranslations = window.FastBundleShared.functions.handleTranslations; 1331 const isPreview = window.FastBundleShared.functions.isPreview; 1332 conditionalLog('FastBundleMixAndMatchOffers', FastBundleMixAndMatchOffers); 1333 function isMixAndMatchOfferActive(offer) { 1334 if (offer?.enabled === false) return false; 1335 const now = Date.now(); 1336 if (offer.start_datetime && new Date(offer.start_datetime).getTime() > now) return false; 1337 if (offer.end_datetime && new Date(offer.end_datetime).getTime() < now) return false; 1338 return true; 1339 } 1340 1341 if (!isPreview()) { 1342 FastBundleMixAndMatchOffers = (FastBundleMixAndMatchOffers || []).filter(isMixAndMatchOfferActive); 1343 } 1344 1345 // No product/collection hydration and no price/id transform here â the front 1346 // project fetches collection products via the Shopify Storefront GraphQL API.
1347 // We only localize the offer-level strings so the storefront gets the same 1348 // localized copy the serverfull backend would have returned. 1349 for (const offer of FastBundleMixAndMatchOffers) { 1350 offer.use_compare_at_price = FastBundleConf?.use_compare_at_price; 1351 offer.discount = offer.discounts?.[0] || {}; 1352 await handleTranslations( 1353 offer, 1354 ['title', 'description'], 1355 ['description', 'label', 'badge', 'subtitle'], 1356 // Item-level: the metafield carries a translations entry for EVERY shop 1357 // locale (primary included, rebuilt from the flat section_* values) on every 1358 // item, manual and smart alike, covering all three of the backend's 1359 // CollectionBundleItem.TRANSLATABLE_FIELDS. A locale the merchant never 1360 // filled in ships nulls for description/badge, which handleTranslations 1361 // skips, so the primary-locale wording stays. 1362 ['section_title', 'section_description', 'section_badge'] 1363 ); 1364 } 1365 1366 // Contract: array of product-related offers ([] when none), serves both widget 1367 // and BAP. Empty array => the front falls back to the serverfull path. 1368 window.FastBundleMixAndMatchOffer = FastBundleMixAndMatchOffers || []; 1369 conditionalLog('FastBundleMixAndMatchOffer', window.FastBundleMixAndMatchOffer); 1370 document.dispatchEvent(new CustomEvent('FastBundleMixAndMatchOfferReady', { 1371 detail: window.FastBundleMixAndMatchOffer, 1372 })); 1373 })(); 1374</script>
1374 1375<!-- END app snippet --> 1376 <!-- BEGIN app snippet: recording_consent -->
1377<script src="https://cdn.shopify.com/extensions/01a0f2a3-ce8c-7f09-b09d-297fc1e69c10/fast-bundle-product-bundles-165/assets/fast_bundle_recording_consent.js" defer 1378 data-fb-record-submitted="true" 1379 data-fb-shop-id="59149"></script>
1379 1380<!-- END app snippet --> 1381 1382 1383 1384<!-- END app block --><!-- BEGIN app block: shopify://apps/eg-auto-add-to-cart/blocks/app-embed/0f7d4f74-1e89-4820-aec4-6564d7e535d2 --> 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397
1397<script 1398 async 1399 type="text/javascript" 1400 src="https://cdn.506.io/eg/script.js?shop=phil-wickham-online-store.myshopify.com&v=12" 1401 ></script>
1401 1402 1403 1404 1405 1406 <meta id="easygift-shop" itemid="c2hvcF8kXzE3OTA5NjYzMzc=" content="{"isInstalled":true,"installedOn":"2025-10-30T19:02:13.544Z","appVersion":"3.0","subscriptionName":"Standard","cartAnalytics":true,"freeTrialEndsOn":null,"settings":{"reminderBannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"closingMode":"doNotAutoClose","cssStyles":"","displayAfter":5,"headerText":"","imageUrl":null,"primaryColor":"#000000","reshowBannerAfter":"everyNewSession","selfcloseAfter":5,"showImage":false,"subHeaderText":""},"addedItemIdentifier":"_Gifted","ignoreOtherAppLineItems":null,"customVariantsInfoLifetimeMins":1440,"redirectPath":null,"ignoreNonStandardCartRequests":false,"bannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"cssStyles":null,"primaryColor":"#000000"},"themePresetId":null,"notificationStyle":{"position":{"horizontal":null,"vertical":null},"cssStyles":null,"duration":null,"hasCustomizations":false,"primaryColor":null},"fetchCartData":false,"useLocalStorage":{"enabled":false,"expiryMinutes":null},"popupStyle":{"addButtonText":null,"cssStyles":null,"dismissButtonText":null,"hasCustomizations":false,"imageUrl":null,"outOfStockButtonText":null,"primaryColor":null,"secondaryColor":null,"showProductLink":false,"subscriptionLabel":null},"refreshAfterBannerClick":false,"disableReapplyRules":false,"disableReloadOnFailedAddition":false,"autoReloadCartPage":false,"ajaxRedirectPath":null,"allowSimultaneousRequests":false,"applyRulesOnCheckout":false,"enableCartCtrlOverrides":true,"scriptSettings":{"branding":{"removalRequestSent":null,"show":false},"productPageRedirection":{"enabled":false,"products":[],"redirectionURL":"\/"},"debugging":{"enabled":false,"enabledOn":null,"stringifyObj":false},"customCSS":null,"decodePayload":false,"delayUpdates":2000,"enableBuyNowInterceptions":false,"fetchCartDataBeforeRequest":false,"fetchProductInfoFromSavedDomain":false,"hideAlertsOnFrontend":false,"hideGiftedPropertyText":false,"removeEGPropertyFromSplitActionLineItems":false,"removeProductsAddedFromExpiredRules":false,"useFinalPrice":true}},"translations":null,"defaultLocale":"en","shopDomain":"philwickham.store"}"> 1407 1408
1409<script defer> 1410 (async function() { 1411 try { 1412 1413 const blockVersion = "v3" 1414 if (blockVersion != "v3") { 1415 return 1416 } 1417 1418 let metaErrorFlag = false; 1419 if (metaErrorFlag) { 1420 return 1421 } 1422 1423 // Parse metafields as JSON 1424 const metafields = {}; 1425 1426 // Process metafields in JavaScript 1427 let savedRulesArray = []; 1428 for (const [key, value] of Object.entries(metafields)) { 1429 if (value) { 1430 for (const prop in value) { 1431 // avoiding Object.Keys for performance gain -- no need to make an array of keys. 1432 savedRulesArray.push(value); 1433 break; 1434 } 1435 } 1436 } 1437 1438 const metaTag = document.createElement('meta'); 1439 metaTag.id = 'easygift-rules'; 1440 metaTag.content = JSON.stringify(savedRulesArray); 1441 metaTag.setAttribute('itemid', 'cnVsZXNfJF8xNzkwOTY2MzM3'); 1442 1443 document.head.appendChild(metaTag); 1444 } catch (err) { 1445 1446 } 1447 })(); 1448</script>
1448 1449 1450 1451
1451<script 1452 type="text/javascript" 1453 defer 1454 > 1455 1456 (function () { 1457 try { 1458 window.EG_INFO = window.EG_INFO || {}; 1459 var shopInfo = {"isInstalled":true,"installedOn":"2025-10-30T19:02:13.544Z","appVersion":"3.0","subscriptionName":"Standard","cartAnalytics":true,"freeTrialEndsOn":null,"settings":{"reminderBannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"closingMode":"doNotAutoClose","cssStyles":"","displayAfter":5,"headerText":"","imageUrl":null,"primaryColor":"#000000","reshowBannerAfter":"everyNewSession","selfcloseAfter":5,"showImage":false,"subHeaderText":""},"addedItemIdentifier":"_Gifted","ignoreOtherAppLineItems":null,"customVariantsInfoLifetimeMins":1440,"redirectPath":null,"ignoreNonStandardCartRequests":false,"bannerStyle":{"position":{"horizontal":"right","vertical":"bottom"},"cssStyles":null,"primaryColor":"#000000"},"themePresetId":null,"notificationStyle":{"position":{"horizontal":null,"vertical":null},"cssStyles":null,"duration":null,"hasCustomizations":false,"primaryColor":null},"fetchCartData":false,"useLocalStorage":{"enabled":false,"expiryMinutes":null},"popupStyle":{"addButtonText":null,"cssStyles":null,"dismissButtonText":null,"hasCustomizations":false,"imageUrl":null,"outOfStockButtonText":null,"primaryColor":null,"secondaryColor":null,"showProductLink":false,"subscriptionLabel":null},"refreshAfterBannerClick":false,"disableReapplyRules":false,"disableReloadOnFailedAddition":false,"autoReloadCartPage":false,"ajaxRedirectPath":null,"allowSimultaneousRequests":false,"applyRulesOnCheckout":false,"enableCartCtrlOverrides":true,"scriptSettings":{"branding":{"removalRequestSent":null,"show":false},"productPageRedirection":{"enabled":false,"products":[],"redirectionURL":"\/"},"debugging":{"enabled":false,"enabledOn":null,"stringifyObj":false},"customCSS":null,"decodePayload":false,"delayUpdates":2000,"enableBuyNowInterceptions":false,"fetchCartDataBeforeRequest":false,"fetchProductInfoFromSavedDomain":false,"hideAlertsOnFrontend":false,"hideGiftedPropertyText":false,"removeEGPropertyFromSplitActionLineItems":false,"removeProductsAddedFromExpiredRules":false,"useFinalPrice":true}},"translations":null,"defaultLocale":"en","shopDomain":"philwickham.store"}; 1460 var productRedirectionEnabled = shopInfo.settings.scriptSettings.productPageRedirection.enabled; 1461 if (["Unlimited", "Enterprise"].includes(shopInfo.subscriptionName) && productRedirectionEnabled) { 1462 var products = shopInfo.settings.scriptSettings.productPageRedirection.products; 1463 if (products.length > 0) { 1464 var productIds = products.map(function(prod) { 1465 var productGid = prod.id; 1466 var productIdNumber = parseInt(productGid.split('/').pop()); 1467 return productIdNumber; 1468 }); 1469 var productInfo = null; 1470 var isProductInList = productIds.includes(productInfo.id); 1471 if (isProductInList) { 1472 var redirectionURL = shopInfo.settings.scriptSettings.productPageRedirection.redirectionURL; 1473 if (redirectionURL) { 1474 window.location = redirectionURL; 1475 } 1476 } 1477 } 1478 } 1479 1480 1481 } catch(err) { 1482 return 1483 }}
1483)() 1484 </script>
1484 1485 1486 1487 1488<!-- END app block -->
1488<script src="https://cdn.shopify.com/extensions/a424d896-690a-47f2-a3ae-a82565eec47e/preorder-now-wolf-5/assets/preorde_panda.js" type="text/javascript" defer="defer"></script>
1488 1489<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1490<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 29219160098,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1490
1490
1491<script> 1492 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 1493</script>
vendor: 1 bytes, line 1493
1493
1494<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1494).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 29219160098,storefrontBaseUrl: "https://philwickham.store",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://philwickham.store/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1889206590","configuration":"{\"accountID\":\"phil-wickham-online-store\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1d4c781273105676f6b02a329648437f","type":"APP","apiClientId":32196493313,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]}
1494,{"id":"1490059582","configuration":"{\"env\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"8a9a175b11d15038a70fe78d09c59720","type":"APP","apiClientId":3977633,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"830538046","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-NY3EZL233D\\\",\\\"GT-TNPXDF3J\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-NY3EZL233D\\\",\\\"MC-PN409GWY74\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-NY3EZL233D\\\",\\\"MC-PN409GWY74\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-NY3EZL233D\\\",\\\"MC-PN409GWY74\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-NY3EZL233D\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Phil Wickham","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"phil-wickham-online-store.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/philwickham.store"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://philwickham.store/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"185529336126","themeStoreId":"857","themePublished":"true","eventMetadataId":"de66cd28-5af6-4436-a7a1-de10d3623f60","pageType":"cart","shopId":"29219160098","storefrontBaseUrl":"https:\/\/philwickham.store","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1494<script> 1495 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1496 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1497 window.ShopifyAnalytics.meta.currency = 'USD'; 1498 var meta = {"page":{"pageType":"cart","requestId":"08e3270a-8ec2-4ca4-ae5d-f79019a1b93c-1790966337"}}; 1499 for (var attr in meta) { 1500 window.ShopifyAnalytics.meta[attr] = meta[attr]; 1501 } 1502</script>
vendor: 1 bytes, line 1502
1502
1503<script class="analytics"> 1504 (function () { 1505 var customDocumentWrite = function(content) { 1506 var jquery = null; 1507 1508 if (window.jQuery) { 1509 jquery = window.jQuery; 1510 } else if (window.Checkout && window.Checkout.$) { 1511 jquery = window.Checkout.$; 1512 } 1513 1514 if (jquery) { 1515 jquery('body').append(content); 1516 } 1517 }; 1518 1519 var hasLoggedConversion = function(token) { 1520 if (token) { 1521 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 1522 } 1523 return false; 1524 } 1525 1526 var setCookieIfConversion = function(token) { 1527 if (token) { 1528 var twoMonthsFromNow = new Date(Date.now()); 1529 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 1530 1531 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 1532 } 1533 } 1534 1535 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 1536 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 1537 if (trekkie.integrations) { 1538 return; 1539 } 1540 trekkie.methods = [ 1541 'identify', 1542 'page', 1543 'ready', 1544 'track', 1545 'trackForm', 1546 'trackLink' 1547 ]; 1548 trekkie.factory = function(method) { 1549 return function() { 1550 var args = Array.prototype.slice.call(arguments); 1551 args.unshift(method); 1552 trekkie.push(args); 1553 if (method == 'track' || method == 'page') { 1554 var pageUrl; 1555 try { 1556 pageUrl = window.location.href; 1557 } catch (e) {} 1558 var pageReferrer; 1559 try { 1560 pageReferrer = document.referrer; 1561 } catch (e) {} 1562 try { 1563 if (window.__TREKKIE_SHIM_QUEUE == null) { 1564 window.__TREKKIE_SHIM_QUEUE = []; 1565 } 1566 window.__TREKKIE_SHIM_QUEUE.push({ 1567 from: 'trekkie-stub', 1568 method: method, 1569 args: args.slice(1), 1570 pageContext: { 1571 url: pageUrl, 1572 referrer: pageReferrer 1573 } 1574 }); 1575 } catch (e) { 1576 // no-op 1577 } 1578 } 1579 return trekkie; 1580 }; 1581 }; 1582 for (var i = 0; i < trekkie.methods.length; i++) { 1583 var key = trekkie.methods[i]; 1584 trekkie[key] = trekkie.factory(key); 1585 } 1586 trekkie.load = function(config) { 1587 trekkie.config = config || {}; 1588 trekkie.config.initialDocumentCookie = document.cookie; 1589 var first = document.getElementsByTagName('script')[0]; 1590var script = document.createElement('script'); 1591script.type = 'text/javascript'; 1592script.onerror = function(e) { 1593 var scriptFallback = document.createElement('script'); 1594 scriptFallback.type = 'text/javascript'; 1595 scriptFallback.onerror = function(error) { 1596 var Monorail = { 1597 produce: function produce(monorailDomain, schemaId, payload) { 1598 var currentMs = new Date().getTime(); 1599 var event = { 1600 schema_id: schemaId, 1601 payload: payload, 1602 metadata: { 1603 event_created_at_ms: currentMs, 1604 event_sent_at_ms: currentMs 1605 } 1606 }; 1607 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 1608 }, 1609 sendRequest: function sendRequest(endpointUrl, payload) { 1610 // Try the sendBeacon API 1611 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 1612 var blobData = new window.Blob([payload], { 1613 type: 'text/plain' 1614 }); 1615 1616 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 1617 return true; 1618 } // sendBeacon was not successful 1619 1620 } // XHR beacon 1621 1622 var xhr = new XMLHttpRequest(); 1623 1624 try { 1625 xhr.open('POST', endpointUrl); 1626 xhr.setRequestHeader('Content-Type', 'text/plain'); 1627 xhr.send(payload); 1628 } catch (e) { 1629 console.log(e); 1630 } 1631 1632 return false; 1633 }, 1634 isIos12: function isIos12() { 1635 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 1636 } 1637 }; 1638 Monorail.produce('monorail-edge.shopifysvc.com', 1639 'trekkie_storefront_load_errors/1.1', 1640 {shop_id: 29219160098, 1641 theme_id: 185529336126, 1642 app_name: "storefront", 1643 context_url: window.location.href, 1644 source_url: "//philwickham.store/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 1645 1646 }; 1647 scriptFallback.async = true; 1648 scriptFallback.src = '//philwickham.store/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1649 first.parentNode.insertBefore(scriptFallback, first); 1650}; 1651script.async = true; 1652script.src = '//philwickham.store/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 1653first.parentNode.insertBefore(script, first); 1654 1655 }; 1656 trekkie.load( 1657 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":29219160098,"isMerchantRequest":null,"themeId":185529336126,"themeCityHash":"13288154585895685844","contentLanguage":"en","currency":"USD","eventMetadataId":"de66cd28-5af6-4436-a7a1-de10d3623f60"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 1658 ); 1659 1660 var loaded = false;
1661 trekkie.ready(function() { 1662 if (loaded) return; 1663 loaded = true; 1664 1665 window.ShopifyAnalytics.lib = window.trekkie; 1666 1667 var originalDocumentWrite = document.write; 1668 document.write = customDocumentWrite; 1669 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 1670 document.write = originalDocumentWrite; 1671 1672 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 1673 var token = match? match[1]: undefined; 1674 if (!hasLoggedConversion(token)) { 1675 setCookieIfConversion(token); 1676 1677 } 1678 }); 1679 1680 window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"08e3270a-8ec2-4ca4-ae5d-f79019a1b93c-1790966337","shopifyEmitted":true}); 1681 1682 var eventsListenerScript = document.createElement('script'); 1683 eventsListenerScript.async = true; 1684 eventsListenerScript.src = "//philwickham.store/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 1685 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 1686})();</script>
vendor: 1 bytes, line 1686
1686
1687<script 1688 defer 1689 src="https://philwickham.store/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 1690 data-application="storefront-renderer" 1691 data-shop-id="29219160098" 1692 data-render-region="gcp-us-central1" 1693 data-page-type="cart" 1694 data-theme-instance-id="185529336126" 1695 data-theme-name="Impulse" 1696 data-theme-version="7.4.0" 1697 data-monorail-region="shop_domain" 1698 data-resource-timing-sampling-rate="10" 1699 data-shs="true" 1700 data-shs-beacon="true" 1701 data-shs-export-with-fetch="true" 1702 data-shs-logs-sample-rate="1" 1703 data-shs-beacon-endpoint="https://philwickham.store/api/collect" 1704></script>
1704 1705<meta name="shopify-y" content="95970dd3-5041-4ed1-a2c9-8b4caf21f1c2" data-expiration="1822523937000"><meta name="shopify-s" content="50b0b0dd-fd8b-43c0-80e9-23a0a589bf68" data-expiration="1790968137000"><meta name="new-cookie-storage-activated" content="t"> 1706</head> 1707 1708<body class="template-cart" data-center-text="true" data-button_style="square" data-type_header_capitalize="true" data-type_headers_align_text="false" data-type_product_capitalize="true" data-swatch_style="round" > 1709 1710 <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a> 1711 1712 <div id="PageContainer" class="page-container"> 1713 <div class="transition-body"><!-- BEGIN sections: header-group --> 1714<div id="shopify-section-sections--26358922281278__header" class="shopify-section shopify-section-group-header-group"> 1715 1716<div id="NavDrawer" class="drawer drawer--left"> 1717 <div class="drawer__contents"> 1718 <div class="drawer__fixed-header"> 1719 <div class="drawer__header appear-animation appear-delay-1"> 1720 <div class="h2 drawer__title"></div> 1721 <div class="drawer__close"> 1722 <button type="button" class="drawer__close-button js-drawer-close"> 1723 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg> 1724 <span class="icon__fallback-text">Close menu</span> 1725 </button> 1726 </div> 1727 </div> 1728 </div> 1729 <div class="drawer__scrollable"> 1730 <ul class="mobile-nav" role="navigation" aria-label="Primary"><li class="mobile-nav__item appear-animation appear-delay-2"><div class="mobile-nav__has-sublist"><a href="#0" 1731 class="mobile-nav__link mobile-nav__link--top-level" 1732 id="Label-01" 1733 > 1734 Merch 1735 </a> 1736 <div class="mobile-nav__toggle"> 1737 <button type="button" 1738 aria-controls="Linklist-01" 1739 aria-labelledby="Label-01" 1740 class="collapsible-trigger collapsible--auto-height"><span class="collapsible-trigger__icon collapsible-trigger__icon--open" role="presentation"> 1741 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewBox="0 0 28 16"><path d="m1.57 1.59 12.76 12.77L27.1 1.59" stroke-width="2" stroke="#000" fill="none"/></svg> 1742</span> 1743</button> 1744 </div></div><div id="Linklist-01" 1745 class="mobile-nav__sublist collapsible-content collapsible-content--all" 1746 > 1747 <div class="collapsible-content__inner"> 1748 <ul class="mobile-nav__sublist"><li class="mobile-nav__item"> 1749 <div class="mobile-nav__child-item"><a href="/collections/t-shirts" 1750 class="mobile-nav__link" 1751 id="Sublabel-collections-t-shirts1" 1752 > 1753 Tees 1754 </a></div></li><li class="mobile-nav__item"> 1755 <div class="mobile-nav__child-item"><a href="/collections/hoodies" 1756 class="mobile-nav__link" 1757 id="Sublabel-collections-hoodies2" 1758 > 1759 Hoodies 1760 </a></div></li><li class="mobile-nav__item"> 1761 <div class="mobile-nav__child-item"><a href="/collections/hats" 1762 class="mobile-nav__link" 1763 id="Sublabel-collections-hats3" 1764 > 1765 Hats 1766 </a></div></li><li class="mobile-nav__item"> 1767 <div class="mobile-nav__child-item"><a href="/collections/books/books" 1768 class="mobile-nav__link" 1769 id="Sublabel-collections-books-books4" 1770 > 1771 Books 1772 </a></div></li></ul> 1773 </div> 1774 </div></li><li class="mobile-nav__item appear-animation appear-delay-3"><div class="mobile-nav__has-sublist"><a href="/" 1775 class="mobile-nav__link mobile-nav__link--top-level" 1776 id="Label-2" 1777 > 1778 Shop by Collections 1779 </a> 1780 <div class="mobile-nav__toggle"> 1781 <button type="button" 1782 aria-controls="Linklist-2" 1783 aria-labelledby="Label-2" 1784 class="collapsible-trigger collapsible--auto-height"><span class="collapsible-trigger__icon collapsible-trigger__icon--open" role="presentation"> 1785 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewB
1785ox="0 0 28 16"><path d="m1.57 1.59 12.76 12.77L27.1 1.59" stroke-width="2" stroke="#000" fill="none"/></svg> 1786</span> 1787</button> 1788 </div></div><div id="Linklist-2" 1789 class="mobile-nav__sublist collapsible-content collapsible-content--all" 1790 > 1791 <div class="collapsible-content__inner"> 1792 <ul class="mobile-nav__sublist"><li class="mobile-nav__item"> 1793 <div class="mobile-nav__child-item"><a href="/collections/everyday-hallelujah" 1794 class="mobile-nav__link" 1795 id="Sublabel-collections-everyday-hallelujah1" 1796 > 1797 Everyday Hallelujah 1798 </a></div></li><li class="mobile-nav__item"> 1799 <div class="mobile-nav__child-item"><a href="/collections/song-of-the-saints" 1800 class="mobile-nav__link" 1801 id="Sublabel-collections-song-of-the-saints2" 1802 > 1803 Song Of The Saints 1804 </a></div></li><li class="mobile-nav__item"> 1805 <div class="mobile-nav__child-item"><a href="/collections/homesick-for-heaven" 1806 class="mobile-nav__link" 1807 id="Sublabel-collections-homesick-for-heaven3" 1808 > 1809 Homesick For Heaven 1810 </a></div></li><li class="mobile-nav__item"> 1811 <div class="mobile-nav__child-item"><a href="/collections/what-an-awesome-god" 1812 class="mobile-nav__link" 1813 id="Sublabel-collections-what-an-awesome-god4" 1814 > 1815 What An Awesome God 1816 </a></div></li><li class="mobile-nav__item"> 1817 <div class="mobile-nav__child-item"><a href="/collections/the-king-is-in-the-room" 1818 class="mobile-nav__link" 1819 id="Sublabel-collections-the-king-is-in-the-room5" 1820 > 1821 The King Is In The Room 1822 </a></div></li><li class="mobile-nav__item"> 1823 <div class="mobile-nav__child-item"><a href="/collections/christmas" 1824 class="mobile-nav__link" 1825 id="Sublabel-collections-christmas6" 1826 > 1827 Hallelujah! It's Christmas! 1828 </a></div></li><li class="mobile-nav__item"> 1829 <div class="mobile-nav__child-item"><a href="/collections/singalong" 1830 class="mobile-nav__link" 1831 id="Sublabel-collections-singalong7" 1832 > 1833 Singalong 1834 </a></div></li><li class="mobile-nav__item"> 1835 <div class="mobile-nav__child-item"><a href="/collections/hometown-collection" 1836 class="mobile-nav__link" 1837 id="Sublabel-collections-hometown-collection8" 1838 > 1839 Hometown 1840 </a></div></li><li class="mobile-nav__item"> 1841 <div class="mobile-nav__child-item"><a href="/collections/psalm-23" 1842 class="mobile-nav__link" 1843 id="Sublabel-collections-psalm-239" 1844 > 1845 Psalm 23 1846 </a></div></li><li class="mobile-nav__item"> 1847 <div class="mobile-nav__child-item"><a href="/collections/i-believe" 1848 class="mobile-nav__link" 1849 id="Sublabel-collections-i-believe10" 1850 > 1851 I BELIEVE 1852 </a></div></li><li class="mobile-nav__item"> 1853 <div class="mobile-nav__child-item"><a href="/collections/i-believe-bundles" 1854 class="mobile-nav__link" 1855 id="Sublabel-collections-i-believe-bundles11" 1856 > 1857 Bundles 1858 </a></div></li></ul> 1859 </div> 1860 </div></li><li class="mobile-nav__item appear-animation appear-delay-4"><div class="mobile-nav__has-sublist"><a href="#0" 1861 class="mobile-nav__link mobile-nav__link--top-level" 1862 id="Label-03" 1863 > 1864 Shop by Album 1865 </a> 1866 <div class="mobile-nav__toggle"> 1867 <button type="button" 1868 aria-controls="Linklist-03" 1869 aria-labelledby="Label-03" 1870 class="collapsible-trigger collapsible--auto-height"><span class="collapsible-trigger__icon collapsible-trigger__icon--open" role="presentation"> 1871 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon--wide icon-chevron-down" viewB
1871ox="0 0 28 16"><path d="m1.57 1.59 12.76 12.77L27.1 1.59" stroke-width="2" stroke="#000" fill="none"/></svg> 1872</span> 1873</button> 1874 </div></div><div id="Linklist-03" 1875 class="mobile-nav__sublist collapsible-content collapsible-content--all" 1876 > 1877 <div class="collapsible-content__inner"> 1878 <ul class="mobile-nav__sublist"><li class="mobile-nav__item"> 1879 <div class="mobile-nav__child-item"><a href="/collections/song-of-the-saints" 1880 class="mobile-nav__link" 1881 id="Sublabel-collections-song-of-the-saints1" 1882 > 1883 Song Of The Saints 1884 </a></div></li><li class="mobile-nav__item"> 1885 <div class="mobile-nav__child-item"><a href="/collections/christmas" 1886 class="mobile-nav__link" 1887 id="Sublabel-collections-christmas2" 1888 > 1889 Hallelujah! It's Christmas! 1890 </a></div></li><li class="mobile-nav__item"> 1891 <div class="mobile-nav__child-item"><a href="/collections/hometown-collection" 1892 class="mobile-nav__link" 1893 id="Sublabel-collections-hometown-collection3" 1894 > 1895 I BELIEVE ⢠HOMETOWN VERSION 1896 </a></div></li><li class="mobile-nav__item"> 1897 <div class="mobile-nav__child-item"><a href="/collections/i-believe-tour" 1898 class="mobile-nav__link" 1899 id="Sublabel-collections-i-believe-tour4" 1900 > 1901 I BELIEVE 1902 </a></div></li></ul> 1903 </div> 1904 </div></li><li class="mobile-nav__item appear-animation appear-delay-5"><a href="/collections/music" class="mobile-nav__link mobile-nav__link--top-level">Music</a></li><li class="mobile-nav__item appear-animation appear-delay-6"><a href="/collections/gifts" class="mobile-nav__link mobile-nav__link--top-level">Gifts</a></li><li class="mobile-nav__item appear-animation appear-delay-7"><a href="/collections/sale-1" class="mobile-nav__link mobile-nav__link--top-level">Sale</a></li><li class="mobile-nav__item mobile-nav__item--secondary"> 1905 <div class="grid"><div class="grid__item one-half appear-animation appear-delay-8"> 1906 <a href="/account" class="mobile-nav__link">Log in 1907</a> 1908 </div></div> 1909 </li></ul><ul class="mobile-nav__social appear-animation appear-delay-9"><li class="mobile-nav__social-item"> 1910 <a target="_blank" rel="noopener" href="https://www.instagram.com/philwickham/?hl=en" title="Phil Wickham on Instagram"> 1911 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 32 32"><title>instagram</title><path fill="#444" d="M16 3.094c4.206 0 4.7.019 6.363.094 1.538.069 2.369.325 2.925.544.738.287 1.262.625 1.813 1.175s.894 1.075 1.175 1.813c.212.556.475 1.387.544 2.925.075 1.662.094 2.156.094 6.363s-.019 4.7-.094 6.363c-.069 1.538-.325 2.369-.544 2.925-.288.738-.625 1.262-1.175 1.813s-1.075.894-1.813 1.175c-.556.212-1.387.475-2.925.544-1.663.075-2.156.094-6.363.094s-4.7-.019-6.363-.094c-1.537-.069-2.369-.325-2.925-.544-.737-.288-1.263-.625-1.813-1.175s-.894-1.075-1.175-1.813c-.212-.556-.475-1.387-.544-2.925-.075-1.663-.094-2.156-.094-6.363s.019-4.7.094-6.363c.069-1.537.325-2.369.544-2.925.287-.737.625-1.263 1.175-1.813s1.075-.894 1.813-1.175c.556-.212 1.388-.475 2.925-.544 1.662-.081 2.156-.094 6.363-.094zm0-2.838c-4.275 0-4.813.019-6.494.094-1.675.075-2.819.344-3.819.731-1.037.4-1.913.944-2.788 1.819S1.486 4.656 1.08 5.688c-.387 1-.656 2.144-.731 3.825-.075 1.675-.094 2.213-.094 6.488s.019 4.813.094 6.494c.075 1.675.344 2.819.731 3.825.4 1.038.944 1.913 1.819 2.788s1.756 1.413 2.788 1.819c1 .387 2.144.656 3.825.731s2.213.094 6.494.094 4.813-.019 6.494-.094c1.675-.075 2.819-.344 3.825-.731 1.038-.4 1.913-.944 2.788-1.819s1.413-1.756 1.819-2.788c.387-1 .656-2.144.731-3.825s.094-2.212.094-6.494-.019-4.813-.094-6.494c-.075-1.675-.344-2.819-.731-3.825-.4-1.
1911038-.944-1.913-1.819-2.788s-1.756-1.413-2.788-1.819c-1-.387-2.144-.656-3.825-.731C20.812.275 20.275.256 16 .256z"/><path fill="#444" d="M16 7.912a8.088 8.088 0 0 0 0 16.175c4.463 0 8.087-3.625 8.087-8.088s-3.625-8.088-8.088-8.088zm0 13.338a5.25 5.25 0 1 1 0-10.5 5.25 5.25 0 1 1 0 10.5zM26.294 7.594a1.887 1.887 0 1 1-3.774.002 1.887 1.887 0 0 1 3.774-.003z"/></svg> 1912 <span class="icon__fallback-text">Instagram</span> 1913 </a> 1914 </li><li class="mobile-nav__social-item"> 1915 <a target="_blank" rel="noopener" href="https://www.facebook.com/philwickham" title="Phil Wickham on Facebook"> 1916 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook" viewBox="0 0 14222 14222"><path d="M14222 7112c0 3549.352-2600.418 6491.344-6000 7024.72V9168h1657l315-2056H8222V5778c0-562 275-1111 1159-1111h897V2917s-814-139-1592-139c-1624 0-2686 984-2686 2767v1567H4194v2056h1806v4968.72C2600.418 13603.344 0 10661.352 0 7112 0 3184.703 3183.703 1 7111 1s7111 3183.703 7111 7111Zm-8222 7025c362 57 733 86 1111 86-377.945 0-749.003-29.485-1111-86.28Zm2222 0v-.28a7107.458 7107.458 0 0 1-167.717 24.267A7407.158 7407.158 0 0 0 8222 14137Zm-167.717 23.987C7745.664 14201.89 7430.797 14223 7111 14223c319.843 0 634.675-21.479 943.283-62.013Z"/></svg> 1917 <span class="icon__fallback-text">Facebook</span> 1918 </a> 1919 </li><li class="mobile-nav__social-item"> 1920 <a target="_blank" rel="noopener" href="https://www.youtube.com/channel/UC-XSYe_TuXZX1iIBVbUG7sg" title="Phil Wickham on YouTube"> 1921 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube" viewBox="0 0 21 20"><path fill="#444" d="M-.196 15.803q0 1.23.812 2.092t1.977.861h14.946q1.165 0 1.977-.861t.812-2.092V3.909q0-1.23-.82-2.116T17.539.907H2.593q-1.148 0-1.969.886t-.82 2.116v11.894zm7.465-2.149V6.058q0-.115.066-.18.049-.016.082-.016l.082.016 7.153 3.806q.066.066.066.164 0 .066-.066.131l-7.153 3.806q-.033.033-.066.033-.066 0-.098-.033-.066-.066-.066-.131z"/></svg> 1922 <span class="icon__fallback-text">YouTube</span> 1923 </a> 1924 </li><li class="mobile-nav__social-item"> 1925 <a target="_blank" rel="noopener" href="https://www.tiktok.com/@philwickhamofficial?lang=en" title="Phil Wickham on TickTok"> 1926 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok" viewBox="0 0 2859 3333"><path d="M2081 0c55 473 319 755 778 785v532c-266 26-499-61-770-225v995c0 1264-1378 1659-1932 753-356-583-138-1606 1004-1647v561c-87 14-180 36-265 65-254 86-398 247-358 531 77 544 1075 705 992-358V1h551z"/></svg> 1927 <span class="icon__fallback-text">TikTok</span> 1928 </a> 1929 </li></ul> 1930 </div> 1931 </div> 1932</div> 1933<div id="CartDrawer" class="drawer drawer--right"> 1934 <form id="CartDrawerForm" action="/cart" method="post" novalidate class="drawer__contents" data-location="cart-drawer"> 1935 <div class="drawer__fixed-header"> 1936 <div class="drawer__header appear-animation appear-delay-1"> 1937 <div class="h2 drawer__title">Cart</div> 1938 <div class="drawer__close"> 1939 <button type="button" class="drawer__close-button js-drawer-close"> 1940 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg> 1941 <span class="icon__fallback-text">Close cart</span> 1942 </button> 1943 </div> 1944 </div> 1945 </div> 1946 1947 <div class="drawer__inner"> 1948 <div class="drawer__scrollable"> 1949 <div data-products class="appear-animation appear-delay-2"></div> 1950 1951 1952 </div> 1953 1954 <div class="drawer__footer appear-animation appear-delay-4"> 1955 <div data-discounts> 1956 1957 </div> 1958 1959 <div class="cart__item-sub cart__item-row"> 1960 <div class="ajaxcart__subtotal">Subtotal</div> 1961 <div data-subtotal>$0</div> 1962 </div> 1963 1964 <div class="cart__item-row text-center"> 1965 <small> 1966 Shipping, taxes, and discount codes calculated at checkout.<br /> 1967 </small> 1968 </div> 1969 1970 1971 1972 <div class="cart__checkout-wrapper"> 1973 <button type="submit" name="checkout" data-terms-required="false" class="btn cart__checkout"> 1974 Check out 1975 </button> 1976 1977 1978 <div class="additional-checkout-buttons additional-checkout-buttons--vertical"><div class="dynamic-checkout__content" id="dynamic-checkout-cart" data-shopify="dynamic-checkout-cart">
1978 <shopify-accelerated-checkout-cart wallet-configs="[{"supports_subs":true,"supports_def_opts":false,"name":"shop_pay","wallet_params":{"shopId":29219160098,"merchantName":"Phil Wickham","personalized":true}}]" access-token="7f408546b72f28d1d032e58aa1e7779b" buyer-country="US" buyer-locale="en" buyer-currency="USD" shop-id="29219160098" cart-id="deaa1f941b1dfd1652792ca8c1d009f4" enabled-flags="["1172c16a","a1d1f9a1","f5afabb3","370070f3"]" > <div class="wallet-button-wrapper"> <ul class='wallet-cart-grid wallet-cart-grid--skeleton' role="list" data-shopify-buttoncontainer="true"> <li data-testid='grid-cell' class='wallet-cart-button-container'><div class='wallet-cart-button wallet-cart-button__skeleton' role='button' disabled aria-hidden='true'> </div></li> </ul> </div> </shopify-accelerated-checkout-cart> </div></div> 1979 1980 </div> 1981 </div> 1982 </div> 1983 1984 <div class="drawer__cart-empty appear-animation appear-delay-2"> 1985 <div class="drawer__scrollable"> 1986 Your cart is currently empty. 1987 </div> 1988 </div> 1989 </form> 1990 </div><style> 1991 .site-nav__link, 1992 .site-nav__dropdown-link:not(.site-nav__dropdown-link--top-level) { 1993 font-size: 13px; 1994 } 1995 1996 .site-nav__link, .mobile-nav__link--top-level { 1997 text-transform: uppercase; 1998 letter-spacing: 0.2em; 1999 } 2000 .mobile-nav__link--top-level { 2001 font-size: 1.1em; 2002 } 2003 2004 2005 2006 2007 2008 .megamenu__collection-image { 2009 display: none; 2010 } 2011 2012</style> 2013 2014<div data-section-id="sections--26358922281278__header" data-section-type="header"><div class="toolbar small--hide"> 2015 <div class="page-width"> 2016 <div class="toolbar__content"><div class="toolbar__item"> 2017 <ul class="no-bullets social-icons inline-list toolbar__social"><li> 2018 <a target="_blank" rel="noopener" href="https://www.instagram.com/philwickham/?hl=en" title="Phil Wickham on Instagram"> 2019 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 32 32"><title>instagram</title><path fill="#444" d="M16 3.094c4.206 0 4.7.019 6.363.094 1.538.069 2.369.325 2.925.544.738.287 1.262.625 1.813 1.175s.894 1.075 1.175 1.813c.212.556.475 1.387.544 2.925.075 1.662.094 2.156.094 6.363s-.019 4.7-.094 6.363c-.069 1.538-.325 2.369-.544 2.925-.288.738-.625 1.262-1.175 1.813s-1.075.894-1.813 1.175c-.556.212-1.387.475-2.925.544-1.663.075-2.156.094-6.363.094s-4.7-.019-6.363-.094c-1.537-.069-2.369-.325-2.925-.544-.737-.288-1.263-.625-1.813-1.175s-.894-1.075-1.175-1.813c-.212-.556-.475-1.387-.544-2.925-.075-1.663-.094-2.156-.094-6.363s.019-4.7.094-6.363c.069-1.537.325-2.369.544-2.925.287-.737.625-1.263 1.175-1.813s1.075-.894 1.813-1.175c.556-.212 1.388-.475 2.925-.544 1.662-.081 2.156-.094 6.363-.094zm0-2.838c-4.275 0-4.813.019-6.494.094-1.675.075-2.819.344-3.819.731-1.037.4-1.913.944-2.788 1.819S1.486 4.656 1.08 5.688c-.387 1-.656 2.144-.731 3.825-.075 1.675-.094 2.213-.094 6.488s.019 4.813.094 6.494c.075 1.675.344 2.819.731 3.825.4 1.038.944 1.913 1.819 2.788s1.756 1.413 2.788 1.819c1 .387 2.144.656 3.825.731s2.213.094 6.494.094 4.813-.019 6.494-.094c1.675-.075 2.819-.344 3.825-.731 1.038-.4 1.913-.944 2.788-1.819s1.413-1.756 1.819-2.788c.387-1 .656-2.144.731-3.825s.094-2.212.094-6.494-.019-4.813-.094-6.494c-.075-1.675-.344-2.819-.731-3.825-.4-1.038-.944-1.913-1.819-2.788s-1.756-1.413-2.788-1.819c-1-.387-2.144-.656-3.825-.731C20.812.275 20.275.256 16 .256z"/><path fill="#444" d="M16 7.912a8.088 8.088 0 0 0 0 16.175c4.463 0 8.087-3.625 8.087-8.088s-3.625-8.088-8.088-8.088zm0 13.338a5.25 5.25 0 1 1 0-10.5 5.25 5.25 0 1 1 0 10.5zM26.294 7.594a1.887 1.887 0 1 1-3.774.002 1.887 1.887 0 0 1 3.774-.003z"/></svg> 2020 <span class="icon__fallback-text">Instagram</span> 2021 </a> 2022 </li><li> 2023 <a target="_blank" rel="noopener" href="https://www.facebook.com/philwickham" title="Phil Wickham on Facebook"> 2024 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook" viewB
2024ox="0 0 14222 14222"><path d="M14222 7112c0 3549.352-2600.418 6491.344-6000 7024.72V9168h1657l315-2056H8222V5778c0-562 275-1111 1159-1111h897V2917s-814-139-1592-139c-1624 0-2686 984-2686 2767v1567H4194v2056h1806v4968.72C2600.418 13603.344 0 10661.352 0 7112 0 3184.703 3183.703 1 7111 1s7111 3183.703 7111 7111Zm-8222 7025c362 57 733 86 1111 86-377.945 0-749.003-29.485-1111-86.28Zm2222 0v-.28a7107.458 7107.458 0 0 1-167.717 24.267A7407.158 7407.158 0 0 0 8222 14137Zm-167.717 23.987C7745.664 14201.89 7430.797 14223 7111 14223c319.843 0 634.675-21.479 943.283-62.013Z"/></svg> 2025 <span class="icon__fallback-text">Facebook</span> 2026 </a> 2027 </li><li> 2028 <a target="_blank" rel="noopener" href="https://www.youtube.com/channel/UC-XSYe_TuXZX1iIBVbUG7sg" title="Phil Wickham on YouTube"> 2029 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube" viewBox="0 0 21 20"><path fill="#444" d="M-.196 15.803q0 1.23.812 2.092t1.977.861h14.946q1.165 0 1.977-.861t.812-2.092V3.909q0-1.23-.82-2.116T17.539.907H2.593q-1.148 0-1.969.886t-.82 2.116v11.894zm7.465-2.149V6.058q0-.115.066-.18.049-.016.082-.016l.082.016 7.153 3.806q.066.066.066.164 0 .066-.066.131l-7.153 3.806q-.033.033-.066.033-.066 0-.098-.033-.066-.066-.066-.131z"/></svg> 2030 <span class="icon__fallback-text">YouTube</span> 2031 </a> 2032 </li><li> 2033 <a target="_blank" rel="noopener" href="https://www.tiktok.com/@philwickhamofficial?lang=en" title="Phil Wickham on TikTok"> 2034 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok" viewBox="0 0 2859 3333"><path d="M2081 0c55 473 319 755 778 785v532c-266 26-499-61-770-225v995c0 1264-1378 1659-1932 753-356-583-138-1606 1004-1647v561c-87 14-180 36-265 65-254 86-398 247-358 531 77 544 1075 705 992-358V1h551z"/></svg> 2035 <span class="icon__fallback-text">TikTok</span> 2036 </a> 2037 </li></ul> 2038 2039 </div></div> 2040 2041 </div> 2042</div> 2043<div class="header-sticky-wrapper"> 2044 <div id="HeaderWrapper" class="header-wrapper"><header 2045 id="SiteHeader" 2046 class="site-header" 2047 data-sticky="true" 2048 data-overlay="false"> 2049 <div class="page-width"> 2050 <div 2051 class="header-layout header-layout--center-drawer" 2052 data-logo-align="center"><div class="header-item header-item--left header-item--navigation"><div class="site-nav"> 2053 <button 2054 type="button" 2055 class="site-nav__link site-nav__link--icon js-drawer-open-nav" 2056 aria-controls="NavDrawer"> 2057 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-hamburger" viewBox="0 0 64 64"><title>icon-hamburger</title><path d="M7 15h51M7 32h43M7 49h51"/></svg> 2058 <span class="icon__fallback-text">Site navigation</span> 2059 </button> 2060 </div> 2061 </div><div class="header-item header-item--logo"><style data-shopify>.header-item--logo, 2062 .header-layout--left-center .header-item--logo, 2063 .header-layout--left-center .header-item--icons { 2064 -webkit-box-flex: 0 1 190px; 2065 -ms-flex: 0 1 190px; 2066 flex: 0 1 190px; 2067 } 2068 2069 @media only screen and (min-width: 769px) { 2070 .header-item--logo, 2071 .header-layout--left-center .header-item--logo, 2072 .header-layout--left-center .header-item--icons { 2073 -webkit-box-flex: 0 0 250px; 2074 -ms-flex: 0 0 250px; 2075 flex: 0 0 250px; 2076 } 2077 } 2078 2079 .site-header__logo a { 2080 width: 190px; 2081 } 2082 .is-light .site-header__logo .logo--inverted { 2083 width: 190px; 2084 } 2085 @media only screen and (min-width: 769px) { 2086 .site-header__logo a { 2087 width: 250px; 2088 } 2089 2090 .is-light .site-header__logo .logo--inverted { 2091 width: 250px; 2092 } 2093 }</style><div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization" > 2094 <a 2095 href="/" 2096 itemprop="url" 2097 class="site-header__logo-link" 2098 style="padding-top: 4.6875%"> 2099 2100 2101 2102 2103 2104 2105 2106<image-element data-aos="image-fade-in" data-aos-offset="150"> 2107 2108 2109 2110 2111 <img src="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=500" alt="" srcset="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=250 250w, //philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=500 500w" width="250" height="11.71875" loading="eager" class="small--hide image-element" sizes="250px" itemprop="logo" style="max-height: 11.71875px;max-width: 250px;"> 2112 2113 2114 2115</image-element> 2116 2117 2118 2119 2120 2121 2122<image-element data-aos="image-fade-in" data-aos-offset="150"> 2123 2124 2125 2126 2127 <img src="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=380" alt="" srcset="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=190 190w, //philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=380 380w" width="190" height="8.90625" loading="eager" class="medium-up--hide image-element" sizes="190px" style="max-height: 8.90625px;max-width: 190px;"> 2128 2129 2130 2131</image-element> 2132 2133 2134</a></div></div><div class="header-item header-item--icons"><div class="site-nav"> 2135 <div class="site-nav__icons"><a class="site-nav__link site-nav__link--icon small--hide" href="/account"> 2136 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-user" viewBox="0 0 64 64"><title>account</title><path d="M35 39.84v-2.53c3.3-1.91 6-6.66 6-11.41 0-7.63 0-13.82-9-13.82s-9 6.19-9 13.82c0 4.75 2.7 9.51 6 11.41v2.53c-10.18.85-18 6-18 12.16h42c0-6.19-7.82-11.31-18-12.16Z"/></svg>
2137 <span class="icon__fallback-text">Log in 2138</span> 2139 </a><a href="/cart" class="site-nav__link site-nav__link--icon js-drawer-open-cart" aria-controls="CartDrawer" data-icon="cart"> 2140 <span class="cart-link"><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-cart" viewBox="0 0 64 64"><path style="stroke-miterlimit:10" d="M14 17.44h46.79l-7.94 25.61H20.96l-9.65-35.1H3"/><circle cx="27" cy="53" r="2"/><circle cx="47" cy="53" r="2"/></svg><span class="icon__fallback-text">Cart</span> 2141 <span class="cart-link__bubble"></span> 2142 </span> 2143 </a> 2144 </div> 2145</div> 2146</div> 2147 </div></div> 2148 <div class="site-header__search-container"> 2149 <div class="site-header__search"> 2150 <div class="page-width"> 2151 <predictive-search data-context="header" data-enabled="false" data-dark="false"> 2152 <div class="predictive__screen" data-screen></div> 2153 <form action="/search" method="get" role="search"> 2154 <label for="Search" class="hidden-label">Search</label> 2155 <div class="search__input-wrap"> 2156 <input 2157 class="search__input" 2158 id="Search" 2159 type="search" 2160 name="q" 2161 value="" 2162 role="combobox" 2163 aria-expanded="false" 2164 aria-owns="predictive-search-results" 2165 aria-controls="predictive-search-results" 2166 aria-haspopup="listbox" 2167 aria-autocomplete="list" 2168 autocorrect="off" 2169 autocomplete="off" 2170 autocapitalize="off" 2171 spellcheck="false" 2172 placeholder="Search" 2173 tabindex="0" 2174 > 2175 <input name="options[prefix]" type="hidden" value="last"> 2176 <button class="btn--search" type="submit"> 2177 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-search" viewBox="0 0 64 64"><defs><style>.cls-1{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:2px}</style></defs><path class="cls-1" d="M47.16 28.58A18.58 18.58 0 1 1 28.58 10a18.58 18.58 0 0 1 18.58 18.58zM54 54L41.94 42"/></svg> 2178 <span class="icon__fallback-text">Search</span> 2179 </button> 2180 </div> 2181 2182 <button class="btn--close-search"> 2183 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><defs><style>.cls-1{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:2px}</style></defs><path class="cls-1" d="M19 17.61l27.12 27.13m0-27.13L19 44.74"/></svg> 2184 </button> 2185 <div id="predictive-search" class="search__results" tabindex="-1"></div> 2186 </form> 2187</predictive-search> 2188 2189 </div> 2190 </div> 2191 </div> 2192 </header> 2193 </div> 2194 </div> 2195</div> 2196 2197 2198</div> 2199<!-- END sections: header-group --><!-- BEGIN sections: popup-group --> 2200 2201<!-- END sections: popup-group --><main class="main-content" id="MainContent"> 2202 2203<div id="shopify-section-template--26358927524158__main" class="shopify-section"><div class="page-width page-content"> 2204<header class="section-header text-center section-header--404"> 2205 <h1 class="section-header__title">Cart</h1> 2206 <div class="rte text-spacing"><p>Your cart is currently empty.</p><p><a href='/collections/all'>Continue shopping</a></p> 2207 </div> 2208 </header></div> 2209 2210 2211</div><div id="shopify-section-template--26358927524158__recently-viewed" class="shopify-section"><div 2212 data-subsection 2213 data-section-id="template--26358927524158__recently-viewed" 2214 data-section-type="recently-viewed" 2215 data-product-handle="" 2216 data-recent-count="5" 2217 data-grid-item-class="small--one-half medium-up--one-fifth" 2218 data-row-of="5" 2219 data-image-sizes="(min-width: 769px) 20vw, 39vw" 2220> 2221 <hr class="hr--large"> 2222 <div class="index-section index-section--small"> 2223 <div class="page-width"> 2224 <header class="section-header"> 2225 <h3 class="section-header__title">Recently viewed</h3> 2226 </header> 2227 </div> 2228 2229 <div class="page-width page-width--flush-small"> 2230 <div class="grid-overflow-wrapper"> 2231 <div id="RecentlyViewed-template--26358927524158__recently-viewed" class="grid grid--uniform" data-aos="overflow__animation"></div> 2232 </div> 2233 </div> 2234 </div> 2235</div> 2236 2237 2238</div> 2239 2240 </main><!-- BEGIN sections: footer-group --> 2241<div id="shopify-section-sections--26358922150206__footer" class="shopify-section shopify-section-group-footer-group"><footer class="site-footer" data-section-id="sections--26358922150206__footer" data-section-type="footer-section"> 2242 <div class="page-width"> 2243 2244 <div class="grid"><div class="grid__item footer__item--logo_social_UebnF9" data-type="logo_social"><style data-shopify>@media only screen and (min-width: 769px) and (max-width: 959px) { 2245 .footer__item--logo_social_UebnF9 { 2246 width: 50%; 2247 padding-top: 40px; 2248 } 2249 .footer__item--logo_social_UebnF9:nth-child(2n + 1) { 2250 clear: left; 2251 } 2252 } 2253 @media only screen and (min-width: 960px) { 2254 .footer__item--logo_social_UebnF9 { 2255 width: 19%; 2256 } 2257 2258 }</style><style data-shopify>.footer__logo a { 2259 height: 9px; 2260 }</style><div class="footer__logo"> 2261 <a href="/"> 2262 2263 2264 2265<image-element data-aos="image-fade-in" data-aos-offset="150"> 2266 2267 2268 2269 2270 <img src="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=384" alt="" srcset="//philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=192 192w, //philwickham.store/cdn/shop/files/PHIL_WICKHAM_16ae524d-223b-464e-8f8a-2253cfe16791.png?v=1617326126&width=384 384w" height="9" loading="lazy" class=" image-element" sizes="192.0px" style="max-width: 192.0px;max-height: 9px;"> 2271 2272 2273 2274</image-element> 2275 2276 2277</a> 2278 2279 2280 </div></div><div class="grid__item footer__item--footer-1" data-type="menu"><style data-shopify>@media only screen and (min-width: 769px) and (max-width: 959px) { 2281 .footer__item--footer-1 { 2282 width: 50%; 2283 padding-top: 40px; 2284 } 2285 .footer__item--footer-1:nth-child(2n + 1) { 2286 clear: left; 2287 } 2288 } 2289 @media only screen and (min-width: 960px) { 2290 .footer__item--footer-1 { 2291 width: 15%; 2292 } 2293 2294 }</style><div 2295 > 2296 <div class="collapsible-content__inner">
2297 <div class="footer__collapsible footer_collapsible--disabled"> 2298 <ul class="no-bullets site-footer__linklist"><li><a href="#0">Merch</a></li><li><a href="/">Shop by Collections</a></li><li><a href="#0">Shop by Album</a></li><li><a href="/collections/music">Music</a></li><li><a href="/collections/gifts">Gifts</a></li><li><a href="/collections/sale-1">Sale</a></li></ul> 2299 </div> 2300 </div> 2301 </div></div><div class="grid__item footer__item--menu_ftRatt" data-type="menu"><style data-shopify>@media only screen and (min-width: 769px) and (max-width: 959px) { 2302 .footer__item--menu_ftRatt { 2303 width: 50%; 2304 padding-top: 40px; 2305 } 2306 .footer__item--menu_ftRatt:nth-child(2n + 1) { 2307 clear: left; 2308 } 2309 } 2310 @media only screen and (min-width: 960px) { 2311 .footer__item--menu_ftRatt { 2312 width: 25%; 2313 } 2314 2315 }</style><div 2316 > 2317 <div class="collapsible-content__inner"> 2318 <div class="footer__collapsible footer_collapsible--disabled"> 2319 <ul class="no-bullets site-footer__linklist"><li><a href="https://philwickham.store/account">Order Status</a></li><li><a href="/pages/returns-and-exchanges-shipping">Returns and Exchanges / Shipping</a></li><li><a href="/policies/terms-of-service">Terms of Service</a></li><li><a href="/policies/privacy-policy">Privacy Policy</a></li></ul> 2320 </div> 2321 </div> 2322 </div></div></div><ul class="no-bullets social-icons footer__social"><li> 2323 <a target="_blank" rel="noopener" href="https://www.instagram.com/philwickham/?hl=en" title="Phil Wickham on Instagram"> 2324 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram" viewBox="0 0 32 32"><title>instagram</title><path fill="#444" d="M16 3.094c4.206 0 4.7.019 6.363.094 1.538.069 2.369.325 2.925.544.738.287 1.262.625 1.813 1.175s.894 1.075 1.175 1.813c.212.556.475 1.387.544 2.925.075 1.662.094 2.156.094 6.363s-.019 4.7-.094 6.363c-.069 1.538-.325 2.369-.544 2.925-.288.738-.625 1.262-1.175 1.813s-1.075.894-1.813 1.175c-.556.212-1.387.475-2.925.544-1.663.075-2.156.094-6.363.094s-4.7-.019-6.363-.094c-1.537-.069-2.369-.325-2.925-.544-.737-.288-1.263-.625-1.813-1.175s-.894-1.075-1.175-1.813c-.212-.556-.475-1.387-.544-2.925-.075-1.663-.094-2.156-.094-6.363s.019-4.7.094-6.363c.069-1.537.325-2.369.544-2.925.287-.737.625-1.263 1.175-1.813s1.075-.894 1.813-1.175c.556-.212 1.388-.475 2.925-.544 1.662-.081 2.156-.094 6.363-.094zm0-2.838c-4.275 0-4.813.019-6.494.094-1.675.075-2.819.344-3.819.731-1.037.4-1.913.944-2.788 1.819S1.486 4.656 1.08 5.688c-.387 1-.656 2.144-.731 3.825-.075 1.675-.094 2.213-.094 6.488s.019 4.813.094 6.494c.075 1.675.344 2.819.731 3.825.4 1.038.944 1.913 1.819 2.788s1.756 1.413 2.788 1.819c1 .387 2.144.656 3.825.731s2.213.094 6.494.094 4.813-.019 6.494-.094c1.675-.075 2.819-.344 3.825-.731 1.038-.4 1.913-.944 2.788-1.819s1.413-1.756 1.819-2.788c.387-1 .656-2.144.731-3.825s.094-2.212.094-6.494-.019-4.813-.094-6.494c-.075-1.675-.344-2.819-.731-3.825-.4-1.038-.944-1.913-1.819-2.788s-1.756-1.413-2.788-1.819c-1-.387-2.144-.656-3.825-.731C20.812.275 20.275.256 16 .256z"/><path fill="#444" d="M16 7.912a8.088 8.088 0 0 0 0 16.175c4.463 0 8.087-3.625 8.087-8.088s-3.625-8.088-8.088-8.088zm0 13.338a5.25 5.25 0 1 1 0-10.5 5.25 5.25 0 1 1 0 10.5zM26.294 7.594a1.887 1.887 0 1 1-3.774.002 1.887 1.887 0 0 1 3.774-.003z"/></svg> 2325 <span class="icon__fallback-text">Instagram</span> 2326 </a> 2327 </li><li> 2328 <a target="_blank" rel="noopener" href="https://www.facebook.com/philwickham" title="Phil Wickham on Facebook"> 2329 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook" viewBox="0 0 14222 14222"><path d="M14222 7112c0 3549.352-2600.418 6491.344-6000 7024.72V9168h1657l315-2056H8222V5778c0-562 275-1111 1159-1111h897V2917s-814-139-1592-139c-1624 0-2686 984-2686 2767v1567H4194v2056h1806v4968.72C2600.418 13603.344 0 10661.352 0 7112 0 3184.703 3183.703 1 7111 1s7111 3183.703 7111 7111Zm-8222 7025c362 57 733 86 1111 86-377.945 0-749.003-29.485-1111-86.28Zm2222 0v-.28a7107.458 7107.458 0 0 1-167.717 24.267A7407.158 7407.158 0 0 0 8222 14137Zm-167.717 23.987C7745.664 14201.89 7430.797 14223 7111 14223c319.843 0 634.675-21.479 943.283-62.013Z"/></svg>
2330 <span class="icon__fallback-text">Facebook</span> 2331 </a> 2332 </li><li> 2333 <a target="_blank" rel="noopener" href="https://www.youtube.com/channel/UC-XSYe_TuXZX1iIBVbUG7sg" title="Phil Wickham on YouTube"> 2334 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube" viewBox="0 0 21 20"><path fill="#444" d="M-.196 15.803q0 1.23.812 2.092t1.977.861h14.946q1.165 0 1.977-.861t.812-2.092V3.909q0-1.23-.82-2.116T17.539.907H2.593q-1.148 0-1.969.886t-.82 2.116v11.894zm7.465-2.149V6.058q0-.115.066-.18.049-.016.082-.016l.082.016 7.153 3.806q.066.066.066.164 0 .066-.066.131l-7.153 3.806q-.033.033-.066.033-.066 0-.098-.033-.066-.066-.066-.131z"/></svg> 2335 <span class="icon__fallback-text">YouTube</span> 2336 </a> 2337 </li><li> 2338 <a target="_blank" rel="noopener" href="https://www.tiktok.com/@philwickhamofficial?lang=en" title="Phil Wickham on TikTok"> 2339 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-tiktok" viewBox="0 0 2859 3333"><path d="M2081 0c55 473 319 755 778 785v532c-266 26-499-61-770-225v995c0 1264-1378 1659-1932 753-356-583-138-1606 1004-1647v561c-87 14-180 36-265 65-254 86-398 247-358 531 77 544 1075 705 992-358V1h551z"/></svg> 2340 <span class="icon__fallback-text">TikTok</span> 2341 </a> 2342 </li></ul> 2343 2344 2345 2346 2347 <p class="footer__small-text"> 2348 © 2026 Phil Wickham 2349. All Rights Reserved. 2350</p> 2351 2352 <p class="footer__small-text"> 2353 Powered by <a href="https://www.elevatehq.com/">ELEVATE Merch</a> 2354 </p></div> 2355</footer> 2356 2357 2358<style> #shopify-section-sections--26358922150206__footer .grid {margin: 0px !important;} #shopify-section-sections--26358922150206__footer .grid__item:after {border-bottom: 0px solid;} #shopify-section-sections--26358922150206__footer .footer__social {text-align: center;} #shopify-section-sections--26358922150206__footer .footer__social li {margin: 0 0px 15px 15px;} @media screen and (max-width: 768px) {#shopify-section-sections--26358922150206__footer .site-footer {padding-top: 20px; border-top: 1px #222222 solid; }} </style></div> 2359<!-- END sections: footer-group --></div> 2360 </div><div id="VideoModal" class="modal modal--solid"> 2361 <div class="modal__inner"> 2362 <div class="modal__centered page-width text-center"> 2363 <div class="modal__centered-content"> 2364 <div class="video-wrapper video-wrapper--modal"> 2365 <div id="VideoHolder"></div> 2366 </div> 2367 </div> 2368 </div> 2369 </div> 2370 2371 <button type="button" class="modal__close js-modal-close text-link"> 2372 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg> 2373 <span class="icon__fallback-text">"Close (esc)"</span> 2374 </button> 2375</div> 2376<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"> 2377 <div class="pswp__bg"></div> 2378 <div class="pswp__scroll-wrap"> 2379 <div class="pswp__container"> 2380 <div class="pswp__item"></div> 2381 <div class="pswp__item"></div> 2382 <div class="pswp__item"></div> 2383 </div> 2384 2385 <div class="pswp__ui pswp__ui--hidden"> 2386 <button class="btn btn--body btn--circle pswp__button pswp__button--arrow--left" title="Previous"> 2387 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-left" viewBox="0 0 284.49 498.98"><path d="M249.49 0a35 35 0 0 1 24.75 59.75L84.49 249.49l189.75 189.74a35.002 35.002 0 1 1-49.5 49.5L10.25 274.24a35 35 0 0 1 0-49.5L224.74 10.25A34.89 34.89 0 0 1 249.49 0Z"/></svg> 2388 </button> 2389 2390 <button class="btn btn--body btn--circle btn--large pswp__button pswp__button--close" title="Close (esc)"> 2391 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg> 2392 </button> 2393 2394 <button class="btn btn--body btn--circle pswp__button pswp__button--arrow--right" title="Next"> 2395 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-right" viewBox="0 0 284.49 498.98"><title>icon-chevron</title><path d="M35 498.98a35 35 0 0 1-24.75-59.75l189.74-189.74L10.25 59.75a35.002 35.002 0 0 1 49.5-49.5l214.49 214.49a35 35 0 0 1 0 49.5L59.75 488.73A34.89 34.89 0 0 1 35 498.98Z"/></svg> 2396 </button> 2397 </div> 2398 </div> 2399</div> 2400<tool-tip data-tool-tip=""> 2401 <div class="tool-tip__inner" data-tool-tip-inner> 2402 <button class="tool-tip__close" data-tool-tip-close=""><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg></button> 2403 <div data-tool-tip-title>Your Shopping Cart</div> 2404 <div class="tool-tip__content" data-tool-tip-content> 2405 </div> 2406 </div> 2407</tool-tip> 2408 2409 <template id="naturalImageMarkup"> 2410 <div class="image-wrap" style="height: 0;"> 2411 <image-element data-aos="image-fade-in" data-aos-offset="150"> 2412 <img class="grid-product__image image-element" width height src srcset loading="lazy" alt> 2413 </image-element> 2414 </div> 2415 </template> 2416 <template id="fixedRatioImageMarkup"> 2417 <div class="grid__image-ratio"> 2418 <image-element data-aos="image-fade-in" data-aos-offset="150"> 2419 <img class="image-element" width height src srcset loading="lazy" alt> 2420 </image-element> 2421 </div> 2422 </template> 2423<style> .btn--small {padding: 13px 14px;} .btn--secondary {color: #000; color: #ffffff !important; border: 0px solid; background-color: #000000 !important;} .index-section {margin: 40px 0;} #CollectionSection-template--21628907847998__bb7d61b6-6795-4629-838f-1c8127c4eddc {margin-top: -50px;} </style> 2424<div id="shopify-block-AbGRNWFRpbUt4QTQra__6986766168588894248" class="shopify-block shopify-app-block"> 2425</div><div id="shopify-block-ANWk3VXE0N3BIWEMvV__11349500561483629931" class="shopify-block shopify-app-block">
2425<script id="ReStock-config"> 2426 var _ReStockConfig = window._ReStockConfig || {}; 2427 2428 _ReStockConfig.templateName = "cart"; 2429 _ReStockConfig.isB2BCustomer = null; 2430 _ReStockConfig.currentLocationId = null; 2431 _ReStockConfig.moneyFormat = "${{amount_no_decimals}}";_ReStockConfig.marketHandle = "us"; 2432 _ReStockConfig.marketId = 199098402;let metafieldConfigData = null;metafieldConfigData = {"ask_for_gdpr_consent_enabled":false,"not_selectable_variants_enabled":false,"pre_order_products_enabled":false,"ui_style":{"notify_me_styles":[{"wrapper":null,"page":"COLLECTION_PAGE","inline_display_mode":"NOT_DISPLAYED","show_floating_button":false,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"inject_to_all_elements_of_each_wrapper":false,"handle_rerenders":true,"prepend_to_wrapper":false,"custom_styles":null,"enable_variant_listener_on_cards":false,"product_card_selector":null,"displayed_product_resolution_enabled":false,"variant_picker_selector":null,"selected_anchor_selector":null,"general_card_placement_enabled":false,"card_scoped_wrapper_enabled":false,"variant_group_availability_enabled":false,"quick_view_widget_lifecycle_enabled":false,"style_mode":"SMART"},{"wrapper":null,"page":"LANDING_PAGES","inline_display_mode":"NOT_DISPLAYED","show_floating_button":false,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"inject_to_all_elements_of_each_wrapper":false,"handle_rerenders":true,"prepend_to_wrapper":false,"custom_styles":null,"enable_variant_listener_on_cards":false,"product_card_selector":null,"displayed_product_resolution_enabled":false,"variant_picker_selector":null,"selected_anchor_selector":null,"general_card_placement_enabled":false,"card_scoped_wrapper_enabled":false,"variant_group_availability_enabled":false,"quick_view_widget_lifecycle_enabled":false,"style_mode":"SMART"}],"product_page_notify_me_style":{"wrapper":[".payment-buttons",".product-single__form"],"support_wrapper":null,"css_selector_from_theme":null,"inline_display_mode":"BUTTON","show_floating_button":false,"hide_buy_it_now_button":true,"inject_in_parent_of_wrapper":false,"inject_to_all_wrappers":false,"handle_rerenders":true,"prepend_to_wrapper":false,"css_selector":"div.payment-buttons>button[type='submit'].btn.btn--full.add-to-cart.btn--secondary","css_selector_by_support":null,"custom_styles":{},"custom_variant_listener":{"element":null,"property":null,"is_dataset_property":false},"use_add_to_cart_button_selector":true,"style_mode":"SMART"},"subscription_form_style":{"custom_styles":null,"style_mode":"SMART","name_field_is_visible":false,"name_field_is_required":false,"email_field_is_required":false,"phone_field_is_required":false,"whatsapp_field_is_required":false,"quantity_field_is_visible":false,"quantity_max_value":10},"button_classes":["btn","btn--full","add-to-cart","btn--secondary"],"global_raw_css":".brandingStyle {\ndisplay: none;\n}\n.restock-alerts-notify-button,.restock-alerts-submit-button { \n color: white!important;\nbackground: black!important;}","product_page_raw_css":null,"after_subscribe_message_styles":{"toastColor":"fff","toastBackgroundColor":"000000"}},"ui_contents":[{"notify_me_contents":[{"page":"COLLECTION_PAGE","button_text":"Notify Me","not_selectable_variants_button_text":"Out of stock? Click here"},{"page":"LANDING_PAGES","button_text":"Notify Me","not_selectable_variants_button_text":"Out of stock? Click here"},{"page":"PRODUCT_PAGE","button_text":"Notify Me When Available","not_selectable_variants_button_text":"Out of stock? Click here"}],"subscription_form_content":{"form_title":"Notify me via:","email_input_placeholder":"Email Address ...","email_input_below_text":"Donât worry! We hate spam as much as you do.","email_label":"Email","full_name_label":"Name","full_name_placeholder":"Full name ...","push_label":"Push notification","sms_label":"Sms","sms_input_placeholder":"1234567890","whatsapp_label":"Whatsapp","whatsapp_input_placeholder":"Whatsapp Number ...","empty_name_error_message":"Name is required.","name_length_error_message":"Name is too long.","invalid_email_error_message":"Your email address is not val
2432id.","empty_email_error_message":"Email is required.","invalid_phone_number_error_message":"Your phone number is not valid.","empty_phone_number_error_message":"Phone number is required.","no_channels_selected_error_message":"You need to subscribe to one of the channels.","button_text":"Notify Me When Available","add_to_contacts_checkbox_text":"Notify me about other news or offers too","privacy_policy_text":"I have read and agree to the {{privacy_policy_url_text}}.","privacy_policy_url_text":"privacy policy","privacy_policy_url":"","privacy_policy_error_message":"You must accept our privacy policy","after_subscribe_message_text":"We will notify you when the item is available","already_subscribed_message_text":"You already have subscribed for this item","push_is_not_allowed_message_text":"You didn\\'t allow this site to send you push notifications. To receive back-in-stock notification from this shop.","style_mode":"SMART","quantity_label":"Quantity"},"language":"en"},{"notify_me_contents":[{"page":"PRODUCT_PAGE","button_text":"Prévenez-moi","not_selectable_variants_button_text":"Rupture de stock?Cliquez ici"},{"page":"COLLECTION_PAGE","button_text":"Prévenez-moi","not_selectable_variants_button_text":"Rupture de stock?Cliquez ici"},{"page":"LANDING_PAGES","button_text":"Prévenez-moi","not_selectable_variants_button_text":"Rupture de stock?Cliquez ici"}],"subscription_form_content":{"form_title":"Me notifier via:","email_input_placeholder":"Adresse e-mail ...","email_input_below_text":"Ne vous inquiétez pas!Nous détestons le spam autant que vous.","email_label":"E-mail","full_name_label":"Name","full_name_placeholder":"Full name ...","push_label":"Notification push","sms_label":"SMS","sms_input_placeholder":"Numéro de téléphone ...","whatsapp_label":"Whatsapp","whatsapp_input_placeholder":"Whatsapp Number ...","empty_name_error_message":"Name is required.","name_length_error_message":"Name is too long.","invalid_email_error_message":"Votre adresse e-mail n'est pas valide.","empty_email_error_message":"Email is required.","invalid_phone_number_error_message":"Votre numéro de téléphone n'est pas valide.","empty_phone_number_error_message":"Phone number is required.","no_channels_selected_error_message":"You need to subscribe to one of the channels.","button_text":"Informez-moi lorsqu'il est disponible","add_to_contacts_checkbox_text":"Me notifiez aussi d'autres nouvelles ou offres","privacy_policy_text":"I have read and agree to the {{privacy_policy_url_text}}.","privacy_policy_url_text":"privacy policy","privacy_policy_url":"","privacy_policy_error_message":"You must accept our privacy policy","after_subscribe_message_text":"Nous vous informerons lorsque l'article sera disponible","already_subscribed_message_text":"Vous vous êtes déjà abonné à cet article","push_is_not_allowed_message_text":"Vous n'avez pas permis à ce site de vous envoyer des notifications push.Pour recevoir une notification en stock de cette boutique.","style_mode":"SMART","quantity_label":"Quantity"},"language":"fr"}],"default_language":"en","shop_id":22772,"app_enabled":true,"base_url":"https://api.notify-me.app","excluded_from_back_in_stock_variants":[],"included_in_back_in_stock_variants":[],"has_contact_integration":true,"ask_for_contact_integration_is_hidden":false,"privacy_policy_is_hidden":true,"disable_branding_permission":true,"is_email_hidden":false,"is_sms_hidden":true,"is_push_hidden":true,"is_whatsapp_hidden":true,"collection_page_show_button_when_any_variant_is_out_of_stock":false,"home_page_show_button_when_any_variant_is_out_of_stock":false,"subscription_limit_reached":false,"is_back_in_stock_active":true,"back_
2432in_stock_product_selection_mode":"ALL","low_stock":{"excluded_variants":[],"is_service_active":false,"widget_settings":{"show_mode":"ALL","inventory_threshold":1},"product_page":{"is_elements_shown":false,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"fr":{"description":"Il ne reste que {{remaining_quantity}} articles en stock !"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]},"collection_page":{"is_elements_shown":false,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"fr":{"description":"Il ne reste que {{remaining_quantity}} articles en stock !"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]},"landing_page":{"is_elements_shown":false,"ui_contents":{"en":{"description":"Only {{remaining_quantity}} items left in stock!"},"fr":{"description":"Il ne reste que {{remaining_quantity}} articles en stock !"}},"style_mode":"SMART","widget":{"custom_styles":{"show_icon":true,"icon_color":"EE442E","text_color":"EE442E"},"wrapper_by_support":null,"inject_to_all_wrappers":false},"inline_button_placements":[]}},"is_suspended":false,"default_country_code":null};let metafieldPreOrderData = null;metafieldPreOrderData = {"product_page":{"ui_styles":{"badge":{"custom_styles":{"text_color":"000","border_radius":10,"background_color":"e4e5e7"},"is_hidden":false},"button":{"custom_styles":null,"is_visible":true},"description":{"is_hidden":false},"hide_buy_it_now_button":true,"is_active":true,"price":{"custom_styles":null,"format":"{symbol}{price}","is_hidden":false},"replace_with_add_to_cart_button":true,"selling_plan_selector":{"custom_styles":{"badgeTextColor":"000000","cardTitleColor":"202223","cardBorderColor":"e4e5e7","cardBorderRadius":"8","badgeBorderRadius":"6","cardBackgroundColor":"ffffff","badgeBackgroun
2432dColor":"e4e5e7","cardDescriptionColor":"6d7175"},"is_active":false,"custom_css":""},"style_mode":"SMART"},"ui_contents":{"en":{"badge_text":"Pre-order","widget_description":"Product will be available soon!","btn_text":"Pre-order now","availability_date_label":"Expected availability","payment_label":"Payment","soon_available_text":"Coming soon","billing_full_payment_text":"Full payment at checkout","billing_due_now_label":"Due now","billing_due_later_label":"Due later on","selling_plan_full_payment_title":"Full payment","selling_plan_partial_payment_title":"Reserve now, pay later","selling_plan_selector_save_label":"Save"},"fr":{"badge_text":"Pré-commander","widget_description":"Le produit sera bientôt disponible !","btn_text":"Pré commandez maintenant","availability_date_label":"Disponibilité prévue","payment_label":"Paiement","soon_available_text":"à venir","billing_full_payment_text":"Paiement intégral à la caisse","billing_due_now_label":"à payer maintenant","billing_due_later_label":"à payer plus tard","selling_plan_full_payment_title":"Full payment","selling_plan_partial_payment_title":"Reserve now, pay later","selling_plan_selector_save_label":"Save"}},"elements_selectors":{"button":{"css_selector":"div.payment-buttons>button[type='submit'].btn.btn--full.add-to-cart.btn--secondary","css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"description":{"wrapper_by_support":null},"selling_plan_selector":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false}},"collection_page":{"ui_styles":{"is_active":true,"button":{"custom_styles":null,"is_visible":true},"badge":{"custom_styles":{"text_color":"000","border_radius":10,"background_color":"e4e5e7","discount_text_color":"000"},"is_visible":false,"position":"TOP_RIGHT"},"style_mode":"SMART"},"ui_contents":{"en":{"btn_text":"Pre-order now","badge_text":"Pre-order"},"fr":{"btn_text":"Pré commandez maintenant","badge_text":"Pre-order"}},"elements_selectors":{"button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"badge_parent":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null,"format":"{symbol}{price}","is_hidden":false},"quick_view_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section_add_to_cart_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"featured_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false},"enable_variant_listener_on_cards":false},"landing_page":{"ui_styles":{"is_active":false,"button":{"custom_styles":null,"is_visible":true},"badge":{"custom_styles":{"text_color":"000","border_radius":10,"background_color":"e4e5e7","discount_text_color":"000"},"is_visible":false,"position":"TOP_RIGHT"},"style_mode":"SMART","featured_product_is_active":false},"ui_contents":{"en":{"btn_text":"Pre-order now","badge_text":"Pre-order"},"fr":{"btn_text":"Pré commandez maintenant","badge_text":"Pre-order"}},"elements_selectors":{"button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"badge_parent":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"price":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null,"format":"{symbol}{price}","is_hidden":false},"quick_view_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"quick_view_section_add_to_cart_button":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"featured_section":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"inject_to_all_wrappers":false},"enable_variant_listener_on_cards":false},"limit_reached":false,"variant_ids":[47937148125502,47937148027198,47937148059966,47937148092734,47937148158270,39296215121954,47937115783486,47937115816254,47937115685182,47937115717950,47937115750718,32297945727010,32297945825314,46522949075262,46522949304638,46522949140798,46522949173566,46522949206334,46522949271870,46522949337406,46522949402942,46522949370174,46522949435710],"is_selling_plan_removed_by_support":false,"selling_plans_settings":{"15141962046":{"has_discount":false,"value_type":"percentage","value":0.0}},"selling_plans_billing_settings":{"15141962046":{"payment_type":"FULL","checkout_charge":{"percentage":50,"charge_type":"PERCENTAGE","exact_amount":0},"remaining_fee_checkout_time":{"date_type":"AFTER_SOME_DAYS","exact_date":null,"after_some_days":7}}},"selling_plan_id_to_market_ids":{},"selling_plan_id_to_variant_ids":{"15141962046":[32297945727010,32297945825314,39296215121954,46522949075262,46522949140798,46522949173566,46522949206334,46522949271870,46522949304638,46522949337406,46522949370174,46522949402942,46522949435710,47937115685182,47937115717950,47937115750718,47937115783486,47937115816254,47937148027198,47937148059966,47937148092734,47937148125502,47937148158270]},"is_service_active":true,"override_cart_requests":true,"excluded_catalogs_products":[],"excluded_catalogs_collections":[],"excluded_company_locations":[],"description_availability_config":{"15141962046":{"type":"SOON","config":{}}},"mixed_cart_alert":{"show_mixed_cart_alert":false,"is_active":false,"ui_styles":{"show_icon":true,"show_title":true,"show_body":true,"style_mode":"SMART","custom_css":"","custom_styles":{"color":"1A1A1A","iconColor":"616161","borderColor":"F1F1F1","borderRadius":8,"backgroundColor":"F1F1F1"}},"elements_selectors":{"cart_page":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null},"cart_drawer":{"css_selector":null,"css_selector_by_support":null,"css_selector_from_theme":null}},"ui_contents":{"en":{"title":"Shipping Notice","body":"Your order
2432contains items with different delivery dates."},"fr":{"title":"Shipping Notice","body":"Your order contains items with different delivery dates."}}}};let metafieldWishlistData = undefined;metafieldWishlistData = {"is_service_active":false,"wishlist_buttons":{"product_page":{"is_visible":true,"style_mode":"SMART","wrapper_by_support":null,"custom_styles":null,"inject_to_all_wrappers":false,"icon":"heart"}},"limit_reached":false,"ui_contents":{"en":{"id":17494,"add_to_wishlist_button_label":"Add to wishlist","remove_from_wishlist_button_label":"Itâs in wishlist","list_access_button_label":"Wishlist","list_title":"Wishlist","list_add_all_to_cart_button_label":"Add all to cart","product_card_add_to_cart_button_label":"Add to cart","product_card_out_of_stock_button_label":"Out of stock","empty_list_description":"You didn't like any products yet!","empty_list_explore_button_label":"Explore store","add_to_cart_toast_message":"Added to your cart","login_modal_button_label":"Login","login_modal_description":"Log in to your account to add products to your wishlist and view your previously saved items.","login_modal_title":"Login required"},"fr":{"id":17501,"add_to_wishlist_button_label":"Ajouter à la liste de souhaits","remove_from_wishlist_button_label":"C'est dans la liste de souhaits","list_access_button_label":"Liste de souhaits","list_title":"Liste de souhaits","list_add_all_to_cart_button_label":"Ajouter tout au panier","product_card_add_to_cart_button_label":"Ajouter au panier","product_card_out_of_stock_button_label":"En rupture de stock","empty_list_description":"Vous n'avez pas encore aimé aucun produit !","empty_list_explore_button_label":"Explorer le magasin","add_to_cart_toast_message":"Ajouté à votre panier","login_modal_button_label":"Se connecter","login_modal_description":"Connectez-vous à votre compte pour ajouter des produits à votre liste de souhaits et afficher vos articles précédemment enregistrés.","login_modal_title":"Connexion requise"}},"access_button":{"custom_styles":null,"icon":"heart","position":"bottom-left"},"drawer":{"custom_styles":null,"position":"left"},"add_to_cart_message":{"custom_styles":null,"position":"bottom-right"}};let metafieldFlagsData = null;metafieldFlagsData = {};_ReStockConfig._metafields = { 2433 sdkConfig: metafieldConfigData, 2434 preOrderConfig: metafieldPreOrderData, 2435 wishlistConfig: metafieldWishlistData, 2436 featureFlags: metafieldFlagsData 2437 }; 2438</script>
2438 2439 2440<!-- BEGIN app snippet: early-cart-guard -->
2440<script id="ReStock-early-cart-guard"> 2441(function (window) { 2442 try { 2443 if (window.__nmPreorderEarlyGuard) return; 2444 2445 let cfg = null; 2446 const metafields = window._ReStockConfig?._metafields; 2447 if (metafields?.preOrderConfig && typeof metafields.preOrderConfig === 'object') { 2448 cfg = metafields.preOrderConfig; 2449 } 2450 2451 let wrappersInstalled = false; 2452 2453 window.__nmPreorderEarlyGuard = { 2454 v: 1, 2455 active: true, 2456 setConfig: function (nextConfig) { 2457 if (!nextConfig || typeof nextConfig !== 'object') return; 2458 cfg = nextConfig; 2459 if (cfg.override_cart_requests === true) installWrappers(); 2460 } 2461 }; 2462 2463 function isGuardActive() { 2464 return window.__nmPreorderEarlyGuard?.active === true; 2465 } 2466 2467 function isCartAddUrl(url) { 2468 try { 2469 const parsed = new URL(String(url), window.document.baseURI); 2470 return /(?:^|\/)cart\/add(?:\.js(?:on)?)?$/.test(parsed.pathname); 2471 } catch (error) { 2472 return false; 2473 } 2474 } 2475 2476 function isPageActive() { 2477 const template = window._ReStockConfig?.templateName; 2478 let pageConfig = null; 2479 if (template === 'product') { 2480 pageConfig = cfg.product_page; 2481 } else if (template === 'collection' || template === 'list-collections' || template === 'search' || template === 'page') { 2482 pageConfig = cfg.collection_page; 2483 } else if (template === 'index') { 2484 pageConfig = cfg.landing_page; 2485 } 2486 return pageConfig?.ui_styles?.is_active === true; 2487 } 2488 2489 function shouldEnrich() { 2490 if (!cfg) return false; 2491 if (cfg.override_cart_requests !== true) return false; 2492 if (cfg.is_service_active !== true) return false; 2493 if (cfg.limit_reached === true) return false; 2494 if (window._ReStockConfig?.isB2BCustomer) return false; 2495 return isPageActive(); 2496 } 2497 2498 function isPlanVisibleInMarket(planId) { 2499 const planToMarkets = cfg.selling_plan_id_to_market_ids; 2500 if (!planToMarkets) return true; 2501 const allowedMarketIds = planToMarkets[planId]; 2502 if (!allowedMarketIds || allowedMarketIds.length === 0) return true; 2503 const marketId = window._ReStockConfig?.marketId; 2504 if (marketId == null) return true; 2505 return allowedMarketIds.includes(Number(marketId)); 2506 } 2507 2508 function findSellingPlanId(variantId) { 2509 const planToVariants = cfg.selling_plan_id_to_variant_ids; 2510 if (!planToVariants) return null; 2511 for (const planId of Object.keys(planToVariants)) { 2512 const variantIds = planToVariants[planId]; 2513 if (variantIds && variantIds.includes(variantId) && isPlanVisibleInMarket(planId)) return planId; 2514 } 2515 return null; 2516 } 2517 2518 function localizedContents() { 2519 const contents = cfg.product_page?.ui_contents; 2520 if (!contents || typeof contents !== 'object') return {}; 2521 return contents[shopLanguage()] || contents['en'] || Object.values(contents)[0] || {}; 2522 } 2523 2524 function shopLanguage() { 2525 const locale = window.Shopify?.locale; 2526 if (locale) return locale; 2527 const documentLanguage = window.document?.documentElement?.lang; 2528 if (documentLanguage && documentLanguage !== 'null') return documentLanguage; 2529 return null; 2530 } 2531 2532 function formatDate(date) { 2533 return date.toISOString().split('T')[0]; 2534 } 2535 2536 function toFiniteNumber(value) { 2537 if (typeof value === 'number') return Number.isFinite(value) ? value : null; 2538 if (typeof value === 'string') { 2539 const parsed = parseFloat(value); 2540 return Number.isFinite(parsed) ? parsed : null; 2541 } 2542 return null; 2543 } 2544 2545 function clamp(value, min, max) { 2546 return Math.min(max, Math.max(min, value)); 2547 } 2548 2549 function availabilityDateText(planId) { 2550 const settings = cfg.description_availability_config?.[planId]; 2551 if (!settings) return ''; 2552 if (settings.type === 'SOON') return localizedContents().soon_available_text || ''; 2553 if (settings.type === 'SPECIFIC_DATE') { 2554 const parsed = new Date(settings.config.date); 2555 return isNaN(parsed.getTime()) ? '' : formatDate(parsed); 2556 } 2557 if (settings.type === 'RELATIVE_DATE') { 2558 const days = typeof settings.config.days === 'string' ? parseInt(settings.config.days, 10) : settings.config.days; 2559 if (isNaN(days)) return ''; 2560 const futureDate = new Date(); 2561 futureDate.setDate(futureDate.getDate() + days); 2562 return formatDate(futureDate); 2563 } 2564 return ''; 2565 } 2566 2567 function inlineVariantPrice(variantId) { 2568 const variants = window._ReStockConfig?.product?.variants;
2569 if (!Array.isArray(variants)) return null; 2570 const variant = variants.find(function (candidate) { 2571 return Number(candidate?.id) === variantId; 2572 }); 2573 if (!variant) return null; 2574 return variant.price ? variant.price / 100 : 0; 2575 } 2576 2577 function finalPriceForPlan(price, planId) { 2578 const adjustment = cfg.selling_plans_settings?.[planId]; 2579 if (!adjustment?.has_discount) return price; 2580 if (adjustment.value_type === 'percentage') return price * (1 - adjustment.value / 100); 2581 if (adjustment.value_type === 'fixed_amount') return price - adjustment.value * (window.Shopify?.currency?.rate ?? 1); 2582 return price; 2583 } 2584 2585 function formatMoneyIntl(price) { 2586 const currency = window.Shopify?.currency?.active || 'USD'; 2587 const locale = window.Shopify?.locale || 'en-US'; 2588 try { 2589 return new Intl.NumberFormat(locale, { style: 'currency', currency: currency }).format(price); 2590 } catch (error) { 2591 return currency + ' ' + price.toFixed(2); 2592 } 2593 } 2594 2595 const AMOUNT_PLACEHOLDER = /\{\{\s*(\w+)\s*\}\}/; 2596 2597 function delimit(cents, precision, thousands, decimal) { 2598 const parts = (cents / 100).toFixed(precision).split('.'); 2599 const grouped = parts[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + thousands); 2600 return parts[1] ? grouped + (decimal || '.') + parts[1] : grouped; 2601 } 2602 2603 const AMOUNT_FORMATTERS = new Map([ 2604 ['amount', function (cents) { return delimit(cents, 2, ','); }], 2605 ['amount_no_decimals', function (cents) { return delimit(cents, 0, ','); }], 2606 ['amount_with_comma_separator', function (cents) { return delimit(cents, 2, '.', ','); }], 2607 ['amount_no_decimals_with_comma_separator', function (cents) { return delimit(cents, 0, '.'); }], 2608 ['amount_with_apostrophe_separator', function (cents) { return delimit(cents, 2, "'"); }], 2609 ['amount_no_decimals_with_space_separator', function (cents) { return delimit(cents, 0, ' '); }], 2610 ['amount_with_space_separator', function (cents) { return delimit(cents, 2, ' ', ','); }], 2611 ['amount_with_period_and_space_separator', function (cents) { return delimit(cents, 2, ' '); }] 2612 ]); 2613 2614 function decodeEntities(s) { 2615 var el = window.document.createElement('textarea'); el.innerHTML = s; return el.value; 2616 } 2617 2618 function moneyFormat() { 2619 const format = window._ReStockConfig?.moneyFormat; 2620 return typeof format === 'string' ? decodeEntities(format.replace(/<[^>]*>/g, '')) : ''; 2621 } 2622 2623 function formatMoney(amount) { 2624 const format = moneyFormat(); 2625 const formatAmount = AMOUNT_FORMATTERS.get(AMOUNT_PLACEHOLDER.exec(format)?.[1] ?? ''); 2626 if (!formatAmount) return formatMoneyIntl(amount); 2627 return format.replace(AMOUNT_PLACEHOLDER, formatAmount(Math.round(amount * 100))); 2628 } 2629 2630 function calculateCheckoutCharge(price, policy) { 2631 const { charge_type, exact_amount, percentage } = policy.checkout_charge; 2632 if (!Number.isFinite(price) || price <= 0) return 0; 2633 if (charge_type === 'PERCENTAGE') return clamp(price * ((toFiniteNumber(percentage) ?? 0) / 100), 0, price); 2634 return clamp(toFiniteNumber(exact_amount) ?? 0, 0, price); 2635 } 2636 2637 function formatRemainingDueDate(policy) { 2638 const { date_type, exact_date, after_some_days } = policy.remaining_fee_checkout_time; 2639 if (date_type === 'EXACT_DATE' && exact_date) { 2640 const parsed = new Date(exact_date + 'T12:00:00Z'); 2641 if (!isNaN(parsed.getTime())) return formatDate(parsed); 2642 } 2643 if (date_type === 'AFTER_SOME_DAYS' && after_some_days) { 2644 const days = toFiniteNumber(after_some_days); 2645 if (days === null) return ''; 2646 const futureDate = new Date(); 2647 futureDate.setDate(futureDate.getDate() + days); 2648 return formatDate(futureDate); 2649 } 2650 return ''; 2651 } 2652 2653 function paymentText(planId, variantId) { 2654 const policy = cfg.selling_plans_billing_settings?.[planId]; 2655 if (!policy) return ''; 2656 const contents = localizedContents(); 2657 if (policy.payment_type === 'FULL') return contents.billing_full_payment_text || 'Full payment at checkout'; 2658 2659 const price = inlineVariantPrice(variantId); 2660 if (price == null) return ''; 2661 2662 const planPrice = finalPriceForPlan(price, planId); 2663 const dueNowAmount = calculateCheckoutCharge(planPrice, policy); 2664 const dueLaterAmount = clamp(planPrice - dueNowAmount, 0, planPrice); 2665 const dueDate = formatRemainingDueDate(policy); 2666 2667 const dueNowLabel = contents.billing_due_now_label || 'Due now'; 2668 const dueLaterLabel = contents.billing_due_later_label || 'Due later on'; 2669 const formattedDueNow = formatMoney(dueNowAmount); 2670 const formattedDueLater = formatMoney(dueLaterAmount); 2671 const dueLaterPart = dueDate 2672 ? formattedDueLater + ' ' + dueLaterLabel + ' ' + dueDate 2673 : formattedDueLater + ' ' + dueLaterLabel; 2674 2675 return formattedDueNow + ' ' + dueNowLabel + ' · ' + dueLaterPart; 2676 } 2677 2678 const DEFAULT_AVAILABILITY_LABEL = 'Expected availability'; 2679 const DEFAULT_PAYMENT_LABEL = 'Payment'; 2680 const TYPE_MARKER = 'Type'; 2681 2682 function cleanLabel(raw) { 2683 return String(raw == null ? '' : raw) 2684 .replace(/[[\]]/g, '') 2685 .replace(/[\s:ï¼]+$/, '') 2686 .trim(); 2687 } 2688 2689 function resolvePaymentLabel(raw) { 2690 const cleaned = cleanLabel(raw); 2691 if (!cleaned || cleaned.charAt(0) === '_' || cleaned === TYPE_MARKER || cleaned === DEFAULT_AVAILABILITY_LABEL) { 2692 return DEFAULT_PAYMENT_LABEL; 2693 } 2694 return cleaned; 2695 } 2696 2697 function resolveAvailabilityLabel(raw, paymentLabel) { 2698 const cleaned = cleanLabel(raw); 2699 if (!cleaned || cleaned.charAt(0) === '_' || cleaned === TYPE_MARKER || cleaned === paymentLabel) { 2700 return DEFAULT_AVAILABILITY_LABEL; 2701 } 2702 return cleaned; 2703 } 2704 2705 function visibleCartProperties(planId, variantId) { 2706 const properties = {};
2707 try { 2708 const contents = localizedContents(); 2709 const paymentLabel = resolvePaymentLabel(contents.payment_label); 2710 const availabilityLabel = resolveAvailabilityLabel(contents.availability_date_label, paymentLabel); 2711 const availabilityDate = availabilityDateText(planId); 2712 if (availabilityDate) properties[availabilityLabel] = availabilityDate; 2713 const payment = paymentText(planId, variantId); 2714 if (payment) properties[paymentLabel] = payment; 2715 } catch (error) {} 2716 return properties; 2717 } 2718 2719 function setJsonProperty(item, name, value) { 2720 const properties = item.properties && typeof item.properties === 'object' && !Array.isArray(item.properties) ? item.properties : {}; 2721 if (properties[name] === value) return false; 2722 properties[name] = value; 2723 item.properties = properties; 2724 return true; 2725 } 2726 2727 function coerceJsonNumbers(item) { 2728 if (item.id) item.id = Number(item.id); 2729 if (item.quantity) item.quantity = Number(item.quantity); 2730 } 2731 2732 function applyVisibleJsonProperties(item, planId, variantId) { 2733 const properties = visibleCartProperties(planId, variantId); 2734 let changed = false; 2735 for (const name of Object.keys(properties)) { 2736 if (setJsonProperty(item, name, properties[name])) changed = true; 2737 } 2738 return changed; 2739 } 2740 2741 function enrichJsonItem(item) { 2742 if (!item || typeof item !== 'object') return false; 2743 const variantId = Number(item.id); 2744 if (!Number.isFinite(variantId)) return false; 2745 const planId = findSellingPlanId(variantId); 2746 if (planId == null) return false; 2747 2748 if (cfg.is_selling_plan_removed_by_support) { 2749 const tagged = setJsonProperty(item, '_purchase_type', 'NM-preorder'); 2750 const typed = setJsonProperty(item, 'Type', 'Pre-order'); 2751 if (!tagged && !typed) return false; 2752 coerceJsonNumbers(item); 2753 return true; 2754 } 2755 2756 if (item.selling_plan != null && item.selling_plan !== '' && String(item.selling_plan) === String(planId)) return false; 2757 2758 setJsonProperty(item, '_purchase_type', 'NM-preorder'); 2759 if (item.selling_plan == null || item.selling_plan === '') item.selling_plan = Number(planId); 2760 if (item.properties._selling_plan_id == null) setJsonProperty(item, '_selling_plan_id', String(planId)); 2761 applyVisibleJsonProperties(item, planId, variantId); 2762 coerceJsonNumbers(item); 2763 return true; 2764 } 2765 2766 function enrichJson(data) { 2767 if (!data || typeof data !== 'object') return false; 2768 if (Array.isArray(data.items)) { 2769 let changed = false; 2770 for (const item of data.items) { 2771 if (enrichJsonItem(item)) changed = true; 2772 } 2773 return changed; 2774 } 2775 if (data.items && typeof data.items === 'object') return enrichJsonItem(data.items); 2776 return enrichJsonItem(data); 2777 } 2778 2779 function paramScopes(params) { 2780 const prefixes = []; 2781 const seen = {}; 2782 params.forEach(function (value, key) { 2783 const match = /^items\[(\d+)\]\[id\]$/.exec(key); 2784 if (match && !seen[match[1]]) { 2785 seen[match[1]] = true; 2786 prefixes.push('items[' + match[1] + ']'); 2787 } 2788 }); 2789 if (prefixes.length > 0) return prefixes; 2790 if (params.get('items[id]') != null) return ['items']; 2791 if (params.get('id') != null) return ['']; 2792 return []; 2793 } 2794 2795 function scopeKey(prefix, name) { 2796 return prefix ? prefix + '[' + name + ']' : name; 2797 } 2798 2799 function scopePropertyKey(prefix, name) { 2800 return prefix ? prefix + '[properties][' + name + ']' : 'properties[' + name + ']'; 2801 } 2802 2803 function setParam(params, key, value) { 2804 if (params.get(key) === value) return false; 2805 params.set(key, value); 2806 return true; 2807 } 2808 2809 function applyRemovedBySupportParams(params, prefix) { 2810 const tagged = setParam(params, scopePropertyKey(prefix, '_purchase_type'), 'NM-preorder'); 2811 const typed = setParam(params, scopePropertyKey(prefix, 'Type'), 'Pre-order'); 2812 return tagged || typed; 2813 } 2814 2815 function applyVisibleParamProperties(params, prefix, planId, variantId) { 2816 const properties = visibleCartProperties(planId, variantId); 2817 let changed = false;
2818 for (const name of Object.keys(properties)) { 2819 if (setParam(params, scopePropertyKey(prefix, name), properties[name])) changed = true; 2820 } 2821 return changed; 2822 } 2823 2824 function enrichParamScope(params, prefix, planId, variantId) { 2825 if (cfg.is_selling_plan_removed_by_support) return applyRemovedBySupportParams(params, prefix); 2826 2827 const existingPlan = params.get(scopeKey(prefix, 'selling_plan')); 2828 if (existingPlan != null && existingPlan !== '' && String(existingPlan) === String(planId)) return false; 2829 2830 let changed = setParam(params, scopePropertyKey(prefix, '_purchase_type'), 'NM-preorder'); 2831 if (existingPlan == null || existingPlan === '') { 2832 params.set(scopeKey(prefix, 'selling_plan'), String(planId)); 2833 changed = true; 2834 } 2835 if (params.get(scopePropertyKey(prefix, '_selling_plan_id')) == null) { 2836 params.set(scopePropertyKey(prefix, '_selling_plan_id'), String(planId)); 2837 changed = true; 2838 } 2839 if (applyVisibleParamProperties(params, prefix, planId, variantId)) changed = true; 2840 return changed; 2841 } 2842 2843 function enrichParams(params) { 2844 const scopes = paramScopes(params); 2845 let changed = false; 2846 for (const prefix of scopes) { 2847 const variantId = Number(params.get(scopeKey(prefix, 'id'))); 2848 if (!Number.isFinite(variantId)) continue; 2849 const planId = findSellingPlanId(variantId); 2850 if (planId == null) continue; 2851 if (enrichParamScope(params, prefix, planId, variantId)) changed = true; 2852 } 2853 return changed; 2854 } 2855 2856 function enrichBody(body) { 2857 if (typeof body === 'string') { 2858 let jsonData = null; 2859 try { 2860 jsonData = JSON.parse(body); 2861 } catch (error) { 2862 jsonData = null; 2863 } 2864 if (jsonData && typeof jsonData === 'object') { 2865 return enrichJson(jsonData) ? { body: JSON.stringify(jsonData), changed: true } : { body: body, changed: false }; 2866 } 2867 const params = new URLSearchParams(body); 2868 return enrichParams(params) ? { body: params.toString(), changed: true } : { body: body, changed: false }; 2869 } 2870 if (typeof FormData !== 'undefined' && body instanceof FormData) { 2871 return { body: body, changed: enrichParams(body) }; 2872 } 2873 if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) { 2874 return { body: body, changed: enrichParams(body) }; 2875 } 2876 return { body: body, changed: false }; 2877 } 2878 2879 function extractRequestUrl(input) { 2880 if (typeof input === 'string') return input; 2881 if (typeof input?.url === 'string') return input.url; 2882 if (typeof input?.href === 'string') return input.href; 2883 return ''; 2884 } 2885 2886 function maybeEnrichFetchInit(input, init) { 2887 if (!isGuardActive() || !init || init.body == null) return init; 2888 const url = extractRequestUrl(input); 2889 if (!isCartAddUrl(url) || !shouldEnrich()) return init; 2890 const enriched = enrichBody(init.body); 2891 if (!enriched.changed) return init; 2892 return { ...init, body: enriched.body }; 2893 } 2894 2895 function installWrappers() { 2896 if (wrappersInstalled) return; 2897 wrappersInstalled = true; 2898 2899 const originalFetch = window.fetch; 2900 window.fetch = function (input, init) { 2901 let nextInit = init; 2902 try { 2903 nextInit = maybeEnrichFetchInit(input, init); 2904 } catch (error) {} 2905 return originalFetch.call(this || window, input, nextInit); 2906 }; 2907 2908 const xhrPrototype = window.XMLHttpRequest?.prototype; 2909 if (xhrPrototype) { 2910 const originalOpen = xhrPrototype.open; 2911 const originalSend = xhrPrototype.send; 2912 xhrPrototype.open = function () { 2913 try { 2914 this.__nmEarlyGuardUrl = arguments[1]; 2915 } catch (error) {} 2916 return originalOpen.apply(this, arguments); 2917 }; 2918 xhrPrototype.send = function (body) { 2919 try { 2920 if (isGuardActive() && body != null && this.__nmEarlyGuardUrl != null && isCartAddUrl(this.__nmEarlyGuardUrl) && shouldEnrich()) { 2921 const enriched = enrichBody(body); 2922 if (enriched.changed) return originalSend.call(this, enriched.body); 2923 } 2924 } catch (error) {} 2925 return originalSend.apply(this, arguments); 2926 }; 2927 } 2928 } 2929 2930 if (cfg?.override_cart_requests === true) installWrappers(); 2931 } catch (error) {} 2932})(window); 2933</script>
2933 2934<!-- END app snippet --> 2935<!-- BEGIN app snippet: wishlist-page-container -->
2935<script id="ReStock-wishlist-page-container"> 2936(function (window) { 2937 try { 2938 if (window.__nmWishlistPageContainer) return; 2939 2940 const CONTAINER_ID = 'nm-wishlist-page-root'; 2941 const TARGET_SELECTORS = ['main#MainContent', 'main', '[role="main"]']; 2942 const RELATIVE_PLACEMENTS = ['before', 'after', 'start', 'end']; 2943 2944 function trimTrailingSlash(path) { 2945 const value = String(path); 2946 return value.length > 1 && value.charAt(value.length - 1) === '/' ? value.slice(0, -1) : value; 2947 } 2948 2949 function stripRoutesRoot(pathname) { 2950 const root = window.Shopify?.routes?.root; 2951 if (typeof root !== 'string') return pathname; 2952 const prefix = trimTrailingSlash(root); 2953 if (prefix === '' || prefix === '/') return pathname; 2954 if (pathname === prefix) return '/'; 2955 return pathname.indexOf(prefix + '/') === 0 ? pathname.slice(prefix.length) : pathname; 2956 } 2957 2958 function isConfiguredPage(pagePath) { 2959 const pathname = window.location?.pathname; 2960 if (typeof pathname !== 'string') return false; 2961 return trimTrailingSlash(stripRoutesRoot(pathname)) === trimTrailingSlash(pagePath); 2962 } 2963 2964 function hasShareToken() { 2965 const search = window.location?.search; 2966 if (!search) return false; 2967 return !!new URLSearchParams(search).get('w'); 2968 } 2969 2970 function isBootable(wishlistConfig, sdkConfig) { 2971 if (!sdkConfig || typeof sdkConfig !== 'object') return false; 2972 if (sdkConfig.app_enabled !== true) return false; 2973 if (sdkConfig.is_suspended === true) return false; 2974 return wishlistConfig.is_service_active === true; 2975 } 2976 2977 function matchElement(selector) { 2978 try { 2979 return window.document.querySelector(selector) || null; 2980 } catch (error) { 2981 return null; 2982 } 2983 } 2984 2985 function configuredTarget(placement) { 2986 if (!placement || typeof placement !== 'object') return null; 2987 if (typeof placement.css_selector !== 'string' || placement.css_selector === '') return null; 2988 const element = matchElement(placement.css_selector); 2989 if (!element) return null; 2990 const relative = RELATIVE_PLACEMENTS.indexOf(placement.relative_placement) === -1 ? 'start' : placement.relative_placement; 2991 return { element: element, relative: relative }; 2992 } 2993 2994 function builtInTarget() { 2995 for (const selector of TARGET_SELECTORS) { 2996 const element = matchElement(selector); 2997 if (element) return { element: element, relative: 'start' }; 2998 } 2999 return null; 3000 } 3001 3002 function insertContainer(container, target) { 3003 if (target.relative === 'before' || target.relative === 'after') { 3004 const parent = target.element.parentNode; 3005 if (!parent) return false; 3006 parent.insertBefore(container, target.relative === 'before' ? target.element : target.element.nextSibling || null); 3007 return true; 3008 } 3009 target.element.insertBefore(container, target.relative === 'end' ? null : target.element.firstChild || null); 3010 return true; 3011 } 3012 3013 function createContainer(placement) { 3014 const target = configuredTarget(placement) || builtInTarget(); 3015 if (!target) return null; 3016 const container = window.document.createElement('div'); 3017 container.id = CONTAINER_ID; 3018 container.setAttribute('data-nm-container-source', 'fallback'); 3019 return insertContainer(container, target) ? container : null; 3020 } 3021 3022 function usablePagePath(wishlistConfig) { 3023 const myWishlist = wishlistConfig && typeof wishlistConfig === 'object' ? wishlistConfig.my_wishlist : null; 3024 return myWishlist && typeof myWishlist.page_path === 'string' ? myWishlist.page_path : ''; 3025 } 3026 3027 function wishlistPageConfig(wishlistConfig) { 3028 const pagePath = usablePagePath(wishlistConfig); 3029 return pagePath && isConfiguredPage(pagePath) ? wishlistConfig.my_wishlist : null; 3030 } 3031 3032 function armContainer(myWishlist) { 3033 const container = window.document.getElementById(CONTAINER_ID) || createContainer(myWishlist.container_placement); 3034 if (container) container.removeAttribute('data-nm-page-state'); 3035 } 3036 3037 function markInactive() { 3038 const container = window.document.getElementById(CONTAINER_ID); 3039 if (container) container.setAttribute('data-nm-page-state', 'inactive'); 3040 } 3041 3042 function dearmContainer() { 3043 const stale = window.document.getElementById(CONTAINER_ID); 3044 if (stale && stale.getAttribute('data-nm-container-source') === 'fallback') stale.remove(); 3045 else markInactive(); 3046 } 3047 3048 function ensure(wishlistConfig, sdkConfig) {
3049 try { 3050 const myWishlist = wishlistPageConfig(wishlistConfig); 3051 if (!myWishlist) { 3052 if (usablePagePath(wishlistConfig)) dearmContainer(); 3053 return; 3054 } 3055 const active = myWishlist.type === 'separate_page' || hasShareToken(); 3056 if (active && isBootable(wishlistConfig, sdkConfig)) armContainer(myWishlist); 3057 else markInactive(); 3058 } catch (error) {} 3059 } 3060 3061 window.__nmWishlistPageContainer = { v: 1, ensure: ensure }; 3062 3063 const metafields = window._ReStockConfig?._metafields; 3064 ensure(metafields?.wishlistConfig, metafields?.sdkConfig); 3065 } catch (error) {} 3066})(window); 3067</script>
3067 3068<!-- END app snippet --> 3069
3070<script src="https://cdn.shopify.com/extensions/01a0e83c-88a3-702e-8442-82641270f3fe/bestpush-110/assets/restock-sdk-loader.js?v=1790602660" defer></script>
3070 3071 3072<style> 3073 #nm-wishlist-page-root { 3074 min-height: 60vh; 3075 } 3076 3077 #nm-wishlist-page-root[data-nm-container-source="fallback"] { 3078 box-sizing: border-box; 3079 max-width: 1200px; 3080 margin: 0 auto; 3081 padding: 0 1.5rem; 3082 } 3083 3084 #nm-wishlist-page-root[data-nm-page-state="inactive"]:empty { 3085 display: none; 3086 } 3087 3088 #nm-wishlist-page-root:empty { 3089 display: flex; 3090 align-items: center; 3091 justify-content: center; 3092 } 3093 3094 #nm-wishlist-page-root:empty::after { 3095 content: ""; 3096 width: 36px; 3097 height: 36px; 3098 border: 3px solid #e3e3e3; 3099 border-top-color: #1773b0; 3100 border-radius: 50%; 3101 animation: nm-wishlist-page-boot-spin 0.7s linear infinite; 3102 } 3103 3104 @keyframes nm-wishlist-page-boot-spin { 3105 to { 3106 transform: rotate(360deg); 3107 } 3108 } 3109 3110 body:has(#nm-wishlist-page-root:not([data-nm-page-state="inactive"])) .main-page-title, 3111 body:has(#nm-wishlist-page-root:not([data-nm-page-state="inactive"])) .page-title, 3112 body:has(#nm-wishlist-page-root:not(:empty)) .main-page-title, 3113 body:has(#nm-wishlist-page-root:not(:empty)) .page-title { 3114 display: none !important; 3115 } 3116</style> 3117 3118 3119</div>
3119<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3119 3120</body> 3121</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.