PageSourceSearch

https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g

html sowandarrow.com collected 2026-10-04 04:02:53 UTC 462,027 bytes, 6,579 lines download raw bytes

1<!doctype html>
2
3<html lang="en" dir="ltr">
4  <head>
5    <meta charset="utf-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0, height=device-height, minimum-scale=1.0, maximum-scale=5.0">
7
8    <title>Pure Peanut Crackers - Cracked Black Pepper - 20g</title><meta name="description" content="Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings. These bites are a great alternative to traditional chips or other unhealthy snacks, provid"><link rel="canonical" href="https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g"><link rel="shortcut icon" href="//sowandarrow.com/cdn/shop/files/Website_Favicon.png?v=1752265315&width=96">
9      <link rel="apple-touch-icon" href="//sowandarrow.com/cdn/shop/files/Website_Favicon.png?v=1752265315&width=180"><link rel="preload" href="//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n4.3c051773a9f927cd8737c10568a7e4175690f7d9.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n4.db86542ae5e1596dbdb28c279ae6c2086c4c5bfa.woff2" as="font" type="font/woff2" crossorigin><meta property="og:type" content="product">
10  <meta property="og:title" content="Pure Peanut Crackers - Cracked Black Pepper - 20g">
11  <meta property="product:price:amount" content="1.65">
12  <meta property="product:price:currency" content="GBP">
13  <meta property="product:availability" content="in stock"><meta property="og:image" content="http://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&width=2048">
14  <meta property="og:image:secure_url" content="https://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&width=2048">
15  <meta property="og:image:width" content="996">
16  <meta property="og:image:height" content="996"><meta property="og:description" content="Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings. These bites are a great alternative to traditional chips or other unhealthy snacks, provid"><meta property="og:url" content="https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g">
17<meta property="og:site_name" content="Sow &amp; Arrow"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="Pure Peanut Crackers - Cracked Black Pepper - 20g">
18  <meta name="twitter:description" content="Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings. 
19These bites are a great alternative to traditional chips or other unhealthy snacks, providing a grain-free, low-carb, delicious snacking experience. Whether you&#39;re a fan of bold flavours or just looking for a healthier snack option, our Cracked Black Pepper Peanut Bites are sure to satisfy your cravings."><meta name="twitter:image" content="https://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?crop=center&height=1200&v=1788431863&width=1200">
20  <meta name="twitter:image:alt" content="">
20<script type="application/ld+json">{"@context":"http:\/\/schema.org\/","@id":"\/products\/pure-peanut-crackers-cracked-black-pepper-20g#product","@type":"Product","brand":{"@type":"Brand","name":"Uppernut"},"category":"Crackers","description":"Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings. \nThese bites are a great alternative to traditional chips or other unhealthy snacks, providing a grain-free, low-carb, delicious snacking experience. Whether you're a fan of bold flavours or just looking for a healthier snack option, our Cracked Black Pepper Peanut Bites are sure to satisfy your cravings.","gtin":"5070000615929","image":"https:\/\/sowandarrow.com\/cdn\/shop\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863\u0026width=1920","name":"Pure Peanut Crackers - Cracked Black Pepper - 20g","offers":{"@id":"\/products\/pure-peanut-crackers-cracked-black-pepper-20g?variant=57225090072954#offer","@type":"Offer","availability":"http:\/\/schema.org\/InStock","price":"1.65","priceCurrency":"GBP","url":"https:\/\/sowandarrow.com\/products\/pure-peanut-crackers-cracked-black-pepper-20g?variant=57225090072954"},"url":"https:\/\/sowandarrow.com\/products\/pure-peanut-crackers-cracked-black-pepper-20g"}</script>
20<script type="application/ld+json">
21  {
22    "@context": "https://schema.org",
23    "@type": "BreadcrumbList",
24    "itemListElement": [{
25        "@type": "ListItem",
26        "position": 1,
27        "name": "Home",
28        "item": "https://sowandarrow.com"
29      },{
30            "@type": "ListItem",
31            "position": 2,
32            "name": "Pure Peanut Crackers - Cracked Black Pepper - 20g",
33            "item": "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g"
34          }]
35  }
36</script>
36<style>@font-face {
37  font-family: "Instrument Sans";
38  font-weight: 500;
39  font-style: normal;
40  font-display: fallback;
41  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n5.1ce463e1cc056566f977610764d93d4704464858.woff2") format("woff2"),
42       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n5.9079eb7bba230c9d8d8d3a7d101aa9d9f40b6d14.woff") format("woff");
43}
44@font-face {
45  font-family: "Instrument Sans";
46  font-weight: 500;
47  font-style: italic;
48  font-display: fallback;
49  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i5.d2033775d4997e4dcd0d47ebdd5234b5c14e3f53.woff2") format("woff2"),
50       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i5.8e3cfa86b65acf809ce72bc4f9b58f185ef6b8c7.woff") format("woff");
51}
52@font-face {
53  font-family: "Bricolage Grotesque";
54  font-weight: 400;
55  font-style: normal;
56  font-display: fallback;
57  src: url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n4.3c051773a9f927cd8737c10568a7e4175690f7d9.woff2") format("woff2"),
58       url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n4.58698d726495f44d45631b33dcda62f474c467fc.woff") format("woff");
59}
60@font-face {
61  font-family: "Bricolage Grotesque";
62  font-weight: 600;
63  font-style: normal;
64  font-display: fallback;
65  src: url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n6.17eeb21593c407cef2956fb34ef1600d7c579b0c.woff2") format("woff2"),
66       url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n6.730eb5f49d56c0f7b763727330354d7315ee8a60.woff") format("woff");
67}
68@font-face {
69  font-family: Inter;
70  font-weight: 400;
71  font-style: italic;
72  font-display: fallback;
73  src: url("//sowandarrow.com/cdn/fonts/inter/inter_i4.feae1981dda792ab80d117249d9c7e0f1017e5b3.woff2") format("woff2"),
74       url("//sowandarrow.com/cdn/fonts/inter/inter_i4.62773b7113d5e5f02c71486623cf828884c85c6e.woff") format("woff");
75}
76@font-face {
77  font-family: "Instrument Sans";
78  font-weight: 400;
79  font-style: normal;
80  font-display: fallback;
81  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n4.db86542ae5e1596dbdb28c279ae6c2086c4c5bfa.woff2") format("woff2"),
82       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n4.510f1b081e58d08c30978f465518799851ef6d8b.woff") format("woff");
83}
84@font-face {
85  font-family: "Instrument Sans";
86  font-weight: 400;
87  font-style: italic;
88  font-display: fallback;
89  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i4.028d3c3cd8d085648c808ceb20cd2fd1eb3560e5.woff2") format("woff2"),
90       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i4.7e90d82df8dee29a99237cd19cc529d2206706a2.woff") format("woff");
91}
92@font-face {
93  font-family: "Instrument Sans";
94  font-weight: 500;
95  font-style: normal;
96  font-display: fallback;
97  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n5.1ce463e1cc056566f977610764d93d4704464858.woff2") format("woff2"),
98       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n5.9079eb7bba230c9d8d8d3a7d101aa9d9f40b6d14.woff") format("woff");
99}
100@font-face {
101  font-family: "Instrument Sans";
102  font-weight: 600;
103  font-style: normal;
104  font-display: fallback;
105  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n6.27dc66245013a6f7f317d383a3cc9a0c347fb42d.woff2") format("woff2"),
106       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_n6.1a71efbeeb140ec495af80aad612ad55e19e6d0e.woff") format("woff");
107}
108@font-face {
109  font-family: "Instrument Sans";
110  font-weight: 600;
111  font-style: italic;
112  font-display: fallback;
113  src: url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i6.ba8063f6adfa1e7ffe690cc5efa600a1e0a8ec32.woff2") format("woff2"),
114       url("//sowandarrow.com/cdn/fonts/instrument_sans/instrumentsans_i6.a5bb29b76a0bb820ddaa9417675a5d0bafaa8c1f.woff") format("woff");
115}
116:root {
117    /* Container */
118    --container-max-width: 100%;
119    --container-gutter: 1.25rem;
120
121    /* Spacing */
122    --section-vertical-spacing: 3rem;
123    --section-stack-row-gap: 2rem;
124
125    /* Form settings */
126    --form-gap: 1rem; /* Gap between fieldset and submit button */
127    --fieldset-gap: 0.5rem; /* Gap between each form input within a fieldset */
128    --form-control-gap: 0.5rem; /* Gap between input and label (ignored for floating label) */
129    --checkbox-control-gap: 0.75rem; /* Horizontal gap between checkbox and its associated label */
130    --input-padding-block: 0.65rem; /* Vertical padding for input, textarea and native select */
131    --input-padding-inline: 1rem; /* Horizontal padding for input, textarea and native select */
132    --checkbox-size: 0.875rem; /* Size (width and height) for checkbox */
133
134    /* Product listing gaps */
135    --product-list-column-gap: 0px;
136    --product-list-padding-inline: clamp(0px, var(--product-list-column-gap) , min(1.75rem, var(--product-list-column-gap)));--product-list-row-gap: 0px;/* Other sizes */
137    --header-group-height: calc(var(--announcement-bar-height, 0px) + var(--countdown-condensed-height, 0px) + var(--header-height, 0px));
138    --sticky-area-height: calc(var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px) + var(--header-is-sticky, 0) * var(--header-height, 0px));
139    --sticky-offset: calc(var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px) + var(--header-is-sticky, 0) * var(--header-is-visible, 1) * var(--header-height, 0px));
140
141    /* RTL support */
142    --transform-logical-flip: 1;
143    --transform-origin-start: left;
144    --transform-origin-end: right;
145
146    /**
147     * ---------------------------------------------------------------------
148     * TYPOGRAPHY
149     * ---------------------------------------------------------------------
150     */
151
152    /* Font properties */
153    --subheading-font-family: "Instrument Sans", sans-serif;
154    --subheading-font-weight: 500;
155    --subheading-font-style: normal;
156    --subheading-font-size: 0.8125rem;
157    --subheading-text-transform: none;
158    --subheading-letter-spacing: 0.04em;
159    --heading-font-family: "Bricolage Grotesque", sans-serif;
160    --heading-font-weight: 400;
161    --heading-font-style: normal;
162    --heading-text-transform: none;
163    --heading-letter-spacing: -0.05em;
164    --heading-line-height: 0.9;
165    --heading-italic-font-family: Inter, sans-serif;
166    --heading-italic-font-weight: 400;
167    --heading-italic-font-size-multiplier: 0%;
168    --text-font-family: "Instrument Sans", sans-serif;
169    --text-font-weight: 400;
170    --text-font-style: normal;
171    --text-transform: none;
172    --text-letter-spacing: 0.0em;
173    --text-line-height: 1.4;
174    --text-font-medium-weight: 500;
175    --text-font-bold-weight: 600;
176    --button-font: var(--text-font-style) var(--text-font-weight) var(--button-font-size) / normal var(--text-font-family);
177    --button-text-transform: none;
178    --button-letter-spacing: 0.0em;
179
180    /* Font sizes */--text-heading-size-factor: 0.9;
181    --text-display-xl: max(0.75rem, clamp(3.5rem, 1.9223rem + 6.7314vw, 10rem) * var(--text-heading-size-factor));
182    --text-display-l: max(0.75rem, clamp(3.375rem, 2.1311rem + 5.3074vw, 8.5rem) * var(--text-heading-size-factor));
183    --text-display-m: max(0.75rem, clamp(3.25rem, 2.3701rem + 3.7540vw, 6.875rem) * var(--text-heading-size-factor));
184    --text-h1: max(0.75rem, clamp(3rem, 2.3325rem + 2.8479vw, 5.75rem) * var(--text-heading-size-factor));
185    --text-h2: max(0.75rem, clamp(2.5rem, 1.9539rem + 2.3301vw, 4.75rem) * var(--text-heading-size-factor));
186    --text-h3: max(0.75rem, clamp(2rem, 1.6359rem + 1.5534vw, 3.5rem) * var(--text-heading-size-factor));
187    --text-h4: max(0.75rem, clamp(1.75rem, 1.4466rem + 1.2945vw, 3rem) * var(--text-heading-size-factor));
188    --text-h5: max(0.75rem, clamp(1.375rem, 1.2233rem + 0.6472vw, 2rem) * var(--text-heading-size-factor));
189    --text-h6: max(0.75rem, clamp(1.1875rem, 1.1117rem + 0.3236vw, 1.5rem) * var(--text-heading-size-factor));
190    --text-h7: max(0.75rem, clamp(1rem, 0.9545rem + 0.1942vw, 1.1875rem) * var(--text-heading-size-factor));
191    --text-xs: 0.6875rem;
192    --text-sm: 0.75rem;
193    --text-base: 0.875rem;
194    --text-lg: 1.0625rem;
195    --button-font-size: 0.875rem;
196
197    /* Rounded variables (used for border radius) */
198    --rounded-full: 9999px;
199    --subheading-border-radius: 0.0rem;
200    --button-border-radius: 1.875rem;
201    --input-border-radius: 1.875rem;
202
203    /* Product card variables */
204    --product-card-row-count: 2;
205
206    /**
207     * ---------------------------------------------------------------------
208     * OTHER
209     * ---------------------------------------------------------------------
210     */
211
212    --icon-stroke-width: 1px;
213    --quotation-mark-svg: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" focusable="false" width="62" fill="none" viewBox="0 0 62 57"><path fill="%23000" d="M.79 31.904 11.924.816h12.296l-8.12 31.088h7.888V56.96H.79V31.904Zm37.351 0L49.277.816h12.064l-8.12 31.088h7.888V56.96H38.141V31.904Z" /></svg>');
214  }
215
216  [dir="rtl"]:root {
217    /* RTL support */
218    --transform-logical-flip: -1;
219    --transform-origin-start: right;
220    --transform-origin-end: left;
221  }
222
223  @media screen and (min-width: 700px) {
224    :root {
225      --text-xs: 0.6875rem;
226      --text-sm: 0.8125rem;
227      --text-base: 0.9375rem;
228      --text-lg: 1.125rem;
229      --subheading-font-size: 0.875rem;
230
231      /* Spacing */
232      --container-gutter: 2rem;
233
234      /* Form settings */
235      --form-gap: 1.25rem; /* Gap between fieldset and submit button */
236      --fieldset-gap: 0.75rem; /* Gap between each form input within a fieldset */
237      --input-padding-block: 0.75rem; /* Vertical padding for input, textarea and native select */
238
239      /* Font sizes */
240      --button-font-size: 0.9375rem;
241
242      /* Product listing gaps */--product-list-column-gap: 0px;
243        --product-list-row-gap: 0px;}
244  }
245
246  @media screen and (min-width: 1000px) {
247    :root {
248      /* Spacing settings */
249      --section-vertical-spacing: 4.5rem;
250      --section-stack-row-gap: 3rem;
251    }
252  }
253
254  @media screen and (min-width: 1399px) {
255    :root {
256      /* Spacing settings */
257      --section-vertical-spacing: 5.5rem;
258      --container-gutter: 3rem;
259    }
260  }
261
262  /**
263   * ---------------------------------------------------------------------
264   * COLORS
265   * ---------------------------------------------------------------------
266   */
267
268  :root {--page-overlay: 0 0 0 / 0.4;
269    --dialog-backdrop-blur: 12px;
270
271    /* Status colors */
272    --success-background: 227 240 232;
273    --success-text: 22 131 66;
274    --warning-background: 253 241 224;
275    --warning-text: 237 138 0;
276    --error-background: 251 224 224;
277    --error-text: 224 0 0;
278
279    /* Product colors */
280    --on-sale-text: 250 63 63;
281    --on-sale-badge-background: 250 63 63;
282    --on-sale-badge-text: 255 255 255;
283    --sold-out-badge-background: 50 30 30;
284    --sold-out-badge-text: 255 255 255;
285    --custom-badge-background: 28 110 131;
286    --custom-badge-text: 255 255 255;
287    --star-color: 246 164 41;
288  }.color-scheme--scheme-1 {
289      --accent: 50 30 30;
290      --background: 250 244 240;
291      --background-gradient: ;
292      --background-secondary: 255 255 255;
293      --has-transparent-background: 0;
294      --has-filled-background: 1;
295      --text-color: 50 30 30;--border-color: 230 223 219;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
296      --subheading-border: none;
297      --subheading-text-color: 50 30 30;
298      --subheading-has-padding: 0;
299
300      /* Heading highlight */
301      --heading-highlight-accent-color: 50 30 30;
302      --heading-highlight-text-color: 255 255 255;
303
304      /* Button colors */
305      --button-background-primary: 50 30 30;
306      --button-text-primary: 255 255 255;
307
308      /* Form inputs */
309      --input-background: 255 255 255;
310      --input-text-color: 50 30 30;
311      --input-text-transform: none;
312    }.shopify-section:has(> .color-scheme--scheme-1) + .shopify-section:has(> .color-scheme--scheme-1) {
313          --section-has-same-background-as-previous-section: 1;
314        }.color-scheme--scheme-2 {
315      --accent: 50 30 30;
316      --background: 255 255 255;
317      --background-gradient: ;
318      --background-secondary: 250 244 240;
319      --has-transparent-background: 0;
320      --has-filled-background: 1;
321      --text-color: 50 30 30;--border-color: 235 233 233;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
322      --subheading-border: none;
323      --subheading-text-color: 50 30 30;
324      --subheading-has-padding: 0;
325
326      /* Heading highlight */
327      --heading-highlight-accent-color: 50 30 30;
328      --heading-highlight-text-color: 255 255 255;
329
330      /* Button colors */
331      --button-background-primary: 50 30 30;
332      --button-text-primary: 255 255 255;
333
334      /* Form inputs */
335      --input-background: 255 255 255;
336      --input-text-color: 50 30 30;
337      --input-text-transform: none;
338    }.shopify-section:has(> .color-scheme--scheme-2) + .shopify-section:has(> .color-scheme--scheme-2) {
339          --section-has-same-background-as-previous-section: 1;
340        }.color-scheme--scheme-3 {
341      --accent: 255 255 255;
342      --background: 0 0 0 / 0;
343      --background-gradient: ;
344      --background-secondary: 240 240 240;
345      --has-transparent-background: 1;
346      --has-filled-background: 0;
347      --text-color: 255 255 255;--border-color: 255 255 255 / 0.6;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
348      --subheading-border: none;
349      --subheading-text-color: 255 255 255;
350      --subheading-has-padding: 0;
351
352      /* Heading highlight */
353      --heading-highlight-accent-color: 3 3 5;
354      --heading-highlight-text-color: 255 255 255;
355
356      /* Button colors */
357      --button-background-primary: 255 255 255;
358      --button-text-primary: 8 9 18;
359
360      /* Form inputs */
361      --input-background: 255 255 255;
362      --input-text-color: 3 3 5;
363      --input-text-transform: none;
364    }.shopify-section:has(> .color-scheme--scheme-3) + .shopify-section:has(> .color-scheme--scheme-3) {
365          --section-has-same-background-as-previous-section: 1;
366        }.color-scheme--scheme-4 {
367      --accent: 250 244 240;
368      --background: 50 30 30;
369      --background-gradient: ;
370      --background-secondary: 255 255 255;
371      --has-transparent-background: 0;
372      --has-filled-background: 1;
373      --text-color: 250 244 240;--border-color: 70 51 51;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
374      --subheading-border: none;
375      --subheading-text-color: 250 244 240;
376      --subheading-has-padding: 0;
377
378      /* Heading highlight */
379      --heading-highlight-accent-color: 250 244 240;
380      --heading-highlight-text-color: 50 30 30;
381
382      /* Button colors */
383      --button-background-primary: 250 244 240;
384      --button-text-primary: 50 30 30;
385
386      /* Form inputs */
387      --input-background: 35 15 15;
388      --input-text-color: 255 255 255;
389      --input-text-transform: none;
390    }.shopify-section:has(> .color-scheme--scheme-4) + .shopify-section:has(> .color-scheme--scheme-4) {
391          --section-has-same-background-as-previous-section: 1;
392        }.color-scheme--scheme-5 {
393      --accent: 50 30 30;
394      --background: 241 228 211;
395      --background-gradient: ;
396      --background-secondary: 255 255 255;
397      --has-transparent-background: 0;
398      --has-filled-background: 1;
399      --text-color: 50 30 30;--border-color: 222 208 193;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
400      --subheading-border: none;
401      --subheading-text-color: 50 30 30;
402      --subheading-has-padding: 0;
403
404      /* Heading highlight */
405      --heading-highlight-accent-color: 163 42 26;
406      --heading-highlight-text-color: 255 255 255;
407
408      /* Button colors */
409      --button-background-primary: 50 30 30;
410      --button-text-primary: 255 255 255;
411
412      /* Form inputs */
413      --input-background: 255 255 255;
414      --input-text-color: 50 30 30;
415      --input-text-transform: none;
416    }.shopify-section:has(> .color-scheme--scheme-5) + .shopify-section:has(> .color-scheme--scheme-5) {
417          --section-has-same-background-as-previous-section: 1;
418        }.color-scheme--scheme-6 {
419      --accent: 255 255 255;
420      --background: 82 87 46;
421      --background-gradient: ;
422      --background-secondary: 255 255 255;
423      --has-transparent-background: 0;
424      --has-filled-background: 1;
425      --text-color: 255 255 255;--border-color: 99 104 67;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
426      --subheading-border: none;
427      --subheading-text-color: 255 255 255;
428      --subheading-has-padding: 0;
429
430      /* Heading highlight */
431      --heading-highlight-accent-color: 255 255 255;
432      --heading-highlight-text-color: 82 87 46;
433
434      /* Button colors */
435      --button-background-primary: 255 255 255;
436      --button-text-primary: 82 87 46;
437
438      /* Form inputs */
439      --input-background: 255 255 255;
440      --input-text-color: 82 87 46;
441      --input-text-transform: none;
442    }.shopify-section:has(> .color-scheme--scheme-6) + .shopify-section:has(> .color-scheme--scheme-6) {
443          --section-has-same-background-as-previous-section: 1;
444        }.color-scheme--scheme-7 {
445      --accent: 255 255 255;
446      --background: 0 0 0;
447      --background-gradient: ;
448      --background-secondary: 0 0 0;
449      --has-transparent-background: 0;
450      --has-filled-background: 1;
451      --text-color: 255 255 255;--border-color: 26 26 26;/* Subheading colors */--subheading-background: 0 0 0 / 0.0;
452      --subheading-border: none;
453      --subheading-text-color: 255 255 255;
454      --subheading-has-padding: 0;
455
456      /* Heading highlight */
457      --heading-highlight-accent-color: 255 255 255;
458      --heading-highlight-text-color: 255 255 255;
459
460      /* Button colors */
461      --button-background-primary: 255 255 255;
462      --button-text-primary: 0 0 0;
463
464      /* Form inputs */
465      --input-background: 0 0 0;
466      --input-text-color: 255 255 255;
467      --input-text-transform: none;
468    }.shopify-section:has(> .color-scheme--scheme-7) + .shopify-section:has(> .color-scheme--scheme-7) {
469          --section-has-same-background-as-previous-section: 1;
470        }</style>
471<script>
472  // This allows to expose several variables to the global scope, to be used in scripts
473  window.themeVariables = {
474    settings: {
475      pageType: "product",
476      moneyFormat: "£{{amount}}",
477      moneyWithCurrencyFormat: "£{{amount}} GBP",
478      currencyCodeEnabled: false,
479      cartType: "drawer",
480      showHeadingEffectAnimation: true,
481      staggerProducts: true
482    },
483
484    strings: {
485      addedToCart: "{{product_title}} was added to cart",
486      closeGallery: "Close gallery",
487      zoomGallery: "Zoom",
488      errorGallery: "Image cannot be loaded",
489      shippingEstimatorNoResults: "Sorry, we do not ship to your address.",
490      shippingEstimatorOneResult: "There is one shipping rate for your address:",
491      shippingEstimatorMultipleResults: "There are several shipping rates for your address:",
492      shippingEstimatorError: "One or more error occurred while retrieving shipping rates:",
493      next: "Next",
494      previous: "Previous"
495    },
496
497    mediaQueries: {
498      'sm': 'screen and (min-width: 700px)',
499      'md': 'screen and (min-width: 1000px)',
500      'lg': 'screen and (min-width: 1150px)',
501      'xl': 'screen and (min-width: 1400px)',
502      '2xl': 'screen and (min-width: 1600px)',
503      'sm-max': 'screen and (max-width: 699px)',
504      'md-max': 'screen and (max-width: 999px)',
505      'lg-max': 'screen and (max-width: 1149px)',
506      'xl-max': 'screen and (max-width: 1399px)',
507      '2xl-max': 'screen and (max-width: 1599px)',
508      'motion-safe': '(prefers-reduced-motion: no-preference)',
509      'motion-reduce': '(prefers-reduced-motion: reduce)',
510      'supports-hover': 'screen and (pointer: fine)',
511      'supports-touch': 'screen and (pointer: coarse)'
512    }
513  };</script>
513<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 513
513
514<script type="importmap">{
515        "imports": {
516          "vendor": "//sowandarrow.com/cdn/shop/t/46/assets/vendor.min.js?v=30802987683311202721771353812",
517          "theme": "//sowandarrow.com/cdn/shop/t/46/assets/theme.js?v=48395685618620578471771353812",
518          "photoswipe": "//sowandarrow.com/cdn/shop/t/46/assets/photoswipe.min.js?v=13374349288281597431771353812"
519        }
520      }
521    </script>
521
522
523    
523<script type="module" src="//sowandarrow.com/cdn/shop/t/46/assets/vendor.min.js?v=30802987683311202721771353812"></script>
523
524    
524<script type="module" src="//sowandarrow.com/cdn/shop/t/46/assets/theme.js?v=48395685618620578471771353812"></script>
524
525
526    
526<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
526<meta name="google-site-verification" content="xPOQFUeFAPPQEexrW-jJtmZZ9ojbqXsAKBZ2TzYQZ2U">
527<meta name="facebook-domain-verification" content="172d8m1onh7tlnuy1qedyy1wv27y5e">
528<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/75289362745/digital_wallets/dialog">
529<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/57225090072954:1?ucp/version=2026-08-25&amp;context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" type="application/json+oembed" href="https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g.oembed">
530<script async="async" src="/checkouts/internal/preloads.js?locale=en-GB"></script>
530
531<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
532<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-GB&shop_id=75289362745" crossorigin="anonymous"></script>
vendor: 1 bytes, line 532
532
533<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":75289362745,"countryCode":"GB","currencyCode":"GBP","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/75289362745","merchantName":"Sow \u0026 Arrow","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex","discover","elo"],"total":{"type":"pending","label":"Sow \u0026 Arrow","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 533
533
534<script id="shopify-features" type="application/json">{"accessToken":"ac5f488cd338211fdf6d4c7833c3e413","betas":["rich-media-storefront-analytics"],"domain":"sowandarrow.com","predictiveSearch":true,"shopId":75289362745,"locale":"en"}</script>
vendor: 1 bytes, line 534
534
535<script>var Shopify = Shopify || {};
536Shopify.shop = "sowandarrow.myshopify.com";
537Shopify.locale = "en";
538Shopify.currency = {"active":"GBP","rate":"1.0"};
539Shopify.country = "GB";
540Shopify.theme = {"name":"Stretch - Recommendations V2","id":183195631994,"schema_name":"Stretch","schema_version":"1.6.0","theme_store_id":null,"role":"main"};
541Shopify.theme.handle = "null";
542Shopify.theme.style = {"id":null,"handle":null};
543Shopify.cdnHost = "sowandarrow.com/cdn";
544Shopify.routes = Shopify.routes || {};
545Shopify.routes.root = "/";
546Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
547Shopify.SignInWithShop = Shopify.SignInWithShop || {};
548Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
549Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 549
549
550<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 550
550
551<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 551
551
552<script>
553  window.ShopifyPay = window.ShopifyPay || {};
554  window.ShopifyPay.apiHost = "shop.app\/pay";
555  window.ShopifyPay.redirectState = null;
556</script>
vendor: 1 bytes, line 556
556
557<script>
558  window.Shopify = window.Shopify || {};
559  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
560  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
561  window.Shopify.SignInWithShop.eligible = true;
562</script>
vendor: 1 bytes, line 562
562
563<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 563
563
564<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 564
564
565<script type="module">
566  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
567
568  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
569
570</script>
vendor: 1 bytes, line 570
570
571<script>
572  window.Shopify = window.Shopify || {};
573  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
574  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"]};
575</script>
vendor: 1 bytes, line 575
575
576<script>(function() {
577  var isLoaded = false;
578  function asyncLoad() {
579    if (isLoaded) return;
580    isLoaded = true;
581    var urls = ["https:\/\/loox.io\/widget\/zOPWEQsJt6\/loox.1709898965797.js?shop=sowandarrow.myshopify.com","https:\/\/pc-quiz.s3.us-east-2.amazonaws.com\/current\/quiz-loader.min.js?shop=sowandarrow.myshopify.com","https:\/\/static.rechargecdn.com\/assets\/js\/widget.min.js?shop=sowandarrow.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=sowandarrow.myshopify.com","https:\/\/shopify-widget.route.com\/shopify.widget.js?shop=sowandarrow.myshopify.com","https:\/\/cdn.rebuyengine.com\/onsite\/js\/rebuy.js?shop=sowandarrow.myshopify.com"];
582    for (var i = 0; i < urls.length; i++) {
583      var s = document.createElement('script');
584      s.type = 'text/javascript';
585      s.async = true;
586      s.src = urls[i];
587      var x = document.getElementsByTagName('script')[0];
588      x.parentNode.insertBefore(s, x);
589    }
590  };
591  if(window.attachEvent) {
592    window.attachEvent('onload', asyncLoad);
593  } else {
594    window.addEventListener('load', asyncLoad, false);
595  }
596})();</script>
vendor: 1 bytes, line 596
596
597<script id="__st">var __st={"a":75289362745,"offset":3600,"reqid":"0a923e05-d0fc-4b8d-a2e2-06452336f69c-1791086572","pageurl":"sowandarrow.com\/products\/pure-peanut-crackers-cracked-black-pepper-20g","u":"6927dcb82341","p":"product","rtyp":"product","rid":16190750032250};</script>
vendor: 1 bytes, line 597
597
598<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 598
598
599<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'])})(!1,!0)}();</script>
vendor: 1 bytes, line 599
599
600<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//sowandarrow.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 600
600
601<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 = "//sowandarrow.com/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>
601<script crossorigin="anonymous" defer="defer" src="//sowandarrow.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 601
601
602<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 602
602
603<script>
604  window.Shopify = window.Shopify || {};
605  window.Shopify.MCP = window.Shopify.MCP || {};
606  window.Shopify.MCP.enabled = true;
607  window.Shopify.MCP.shop = "sowandarrow.myshopify.com";
608  window.Shopify.MCP.mcpEndpoint = "https:\/\/sowandarrow.com\/api\/mcp";
609  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"]}}];
610</script>
vendor: 1 bytes, line 610
610
611<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("\/\/sowandarrow.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
612</script>
vendor: 1 bytes, line 612
612
613<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://sowandarrow.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
614</script>
vendor: 1 bytes, line 614
614
615<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
616  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);
617</script>
vendor: 1 bytes, line 617
617
618<script>
619  function portableWalletsCleanup(e){e&&e.src&&console.error("Failed to load portable wallets script "+e.src);var t=document.querySelectorAll("shopify-accelerated-checkout .shopify-payment-button__skeleton, shopify-accelerated-checkout-cart .wallet-cart-button__skeleton"),e=document.getElementById("shopify-buyer-consent");for(let e=0;e<t.length;e++)t[e].remove();e&&e.remove()}function portableWalletsNotLoadedAsModule(e){e instanceof ErrorEvent&&"string"==typeof e.message&&e.message.includes("import.meta")&&"string"==typeof e.filename&&e.filename.includes("portable-wallets")&&(window.removeEventListener("error",portableWalletsNotLoadedAsModule),window.Shopify.PaymentButton.failedToLoad=e,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",window.Shopify.PaymentButton.init):window.Shopify.PaymentButton.init())}window.addEventListener("error",portableWalletsNotLoadedAsModule);
620</script>
620
621
622<script type="module" src="https://sowandarrow.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js" onError="portableWalletsCleanup(this)" crossorigin="anonymous"></script>
vendor: 1 bytes, line 622
622
623<script nomodule>
624  document.addEventListener("DOMContentLoaded", portableWalletsCleanup);
625</script>
625
626
627<script id='scb4127' type='text/javascript' async='' src='https://sowandarrow.com/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
627<script integrity="sha256-/LA1C2Bx6899fYCos0FS9qLj2opaGFm7AXrTUvBEb4s=" data-source-attribution="shopify.remote_product_tracking" data-shopify-remote-tracking="{&quot;session_id&quot;:&quot;01M42H8CT8258TNN6ZKBWKZAB5&quot;,&quot;publisher_shop_id&quot;:75289362745,&quot;theme_id&quot;:183195631994,&quot;theme_published&quot;:true,&quot;theme_store_id&quot;:0,&quot;placement&quot;:&quot;collection&quot;,&quot;event_data&quot;:{&quot;source_product_id&quot;:16190750032250,&quot;handle&quot;:&quot;pure-peanut-crackers-cracked-black-pepper-20g&quot;,&quot;page_type&quot;:&quot;product&quot;},&quot;recommendations_tracking_enabled&quot;:true}" defer="defer" src="//sowandarrow.com/cdn/shopifycloud/storefront/assets/storefront/remote_product_tracking-91d95044.js" crossorigin="anonymous"></script>
627
628<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://sowandarrow.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
629<style id="shopify-accelerated-checkout-cart">
630        #shopify-buyer-consent {
631  margin-top: 1em;
632  display: inline-block;
633  width: 100%;
634}
635
636#shopify-buyer-consent.hidden {
637  display: none;
638}
639
640#shopify-subscription-policy-button {
641  background: none;
642  border: none;
643  padding: 0;
644  text-decoration: underline;
645  font-size: inherit;
646  cursor: pointer;
647}
648
649#shopify-subscription-policy-button::before {
650  box-shadow: none;
651}
652
653      </style>
654
655<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
655
656    
656<script>window.__WINDFALL_STOREFRONT_CONTRACT__ = {"version":1,"currency":"GBP","updatedAt":"2026-10-04T04:00:50.890Z","offers":[{"id":"love-mushroom-facemask","type":"combo_gift","status":"active","discountTitle":"Love Mushroom Facemask","label":"Free Facemask","gift":{"variantId":"gid:\/\/shopify\/ProductVariant\/57051372749178"},"requires":{"allOf":[{"id":"omegas","label":"Regenerative Omegas","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/8429687832889","gid:\/\/shopify\/Product\/15338667213178","gid:\/\/shopify\/Product\/15629678248314"],"resolvedProductIds":["gid:\/\/shopify\/Product\/8429687832889","gid:\/\/shopify\/Product\/15338667213178","gid:\/\/shopify\/Product\/15629678248314"]},{"source":"subscribed_to","productIds":[],"collectionIds":[],"useCartProducts":true,"resolvedProductIds":[]}]},{"id":"love-mushroom","label":"any Love Mushroom product","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/16143740961146","gid:\/\/shopify\/Product\/16144944038266","gid:\/\/shopify\/Product\/16143786967418","gid:\/\/shopify\/Product\/16145058955642","gid:\/\/shopify\/Product\/16163974513018","gid:\/\/shopify\/Product\/16145075863930"],"collectionIds":[],"resolvedProductIds":["gid:\/\/shopify\/Product\/16143740961146","gid:\/\/shopify\/Product\/16144944038266","gid:\/\/shopify\/Product\/16143786967418","gid:\/\/shopify\/Product\/16145058955642","gid:\/\/shopify\/Product\/16163974513018","gid:\/\/shopify\/Product\/16145075863930"]},{"source":"subscribed_to","productIds":[],"collectionIds":[],"useCartProducts":true,"resolvedProductIds":[]}]}]},"autoAdd":true,"maxQuantity":10,"giftLineProperty":"_sow_gift","ui":{"badge":"FREE GIFT","lockedMessage":"Add {{missing}} for a Free Gift","unlockedMessage":"Free Gift Unlocked","showInCartRow":true},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278439813498","startsAt":"2026-08-13T23:15:49Z","endsAt":null},{"id":"spend-5-percent-100","type":"percent_off","status":"active","discountTitle":"5% Off","label":"5% Off","percent":5,"qualifying":{"requiresShipping":true,"excludeGiftLines":true},"ui":{"progressTier":1,"lockedMessage":"{{remaining}} away from 5% Off","unlockedMessage":"5% Off unlocked!"},"requires":{"allOf":[{"id":"spend-spend-5-percent-100","label":"Spend goal","anyOf":[{"source":"cart_value","amount":"100.00"}]}]},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278424117626","startsAt":"2026-08-13T23:07:51Z","endsAt":null,"combines":{"productDiscounts":true}},{"id":"free-cacto-drink","type":"combo_gift","status":"active","discountTitle":"Cacto Drink","label":"Free Cacto Drink","qualifying":{"requiresShipping":true,"excludeGiftLines":true},"autoAdd":true,"maxQuantity":10,"giftLineProperty":"_sow_gift","ui":{"lockedMessage":"Add {{missing}} to unlock your free Cacto drink","unlockedMessage":"Free gift unlocked!","badge":"FREE GIFT"},"requires":{"allOf":[{"id":"group-1-ptf0dc","label":"any Cacto Soda","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/16123905999226","gid:\/\/shopify\/Product\/16123908325754"],"collectionIds":[],"resolvedProductIds":["gid:\/\/shopify\/Product\/16123905999226","gid:\/\/shopify\/Product\/16123908325754"]}]}]},"gift":{"variantId":"gid:\/\/shopify\/ProductVariant\/57162383491450"},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278448857466","startsAt":"2026-08-14T11:54:42Z","endsAt":null},{"id":"quick-discounts","type":"quick_discount","status":"active","label":"Quick discounts","discountTitle":"Quick discounts","items":[{"productId":"gid:\/\/shopify\/Product\/9391544729913","variantId":"gid:\/\/shopify\/ProductVariant\/49080416207161","productTitle":"Organic Chaga Turmeric Latte - 120g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-chaga-turmeric-latte-120g-from-mushrooms-for-life-available-at-sow-arrow-469473.webp?v=1726162087","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/9391522644281","variantId":"gid:\/\/shopify\/ProductVariant\/49080212914489","productTitle":"Organic Cordyceps Beetroot Latte - 130g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-cordyceps-beetroot-latte-130g-from-mushrooms-for-life-available-at-sow-arrow-435353.webp?v=1726162096","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15071473926522","variantId":"gid:\/\/shopify\/ProductVariant\/55311076622714","productTitle":"Organic Lion's Mane Matcha L
656atte - 75g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-matcha-latte-75g-from-mushrooms-for-life-available-at-sow-arrow-691063.webp?v=1745773903","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15519066521978","variantId":"gid:\/\/shopify\/ProductVariant\/56244032864634","productTitle":"Cheese, Bone Broth \u0026 Pumpkin Seed Muffins - 2 Pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/cheese-bone-broth-pumpkin-seed-muffins-2-pack-from-sow-arrow-available-at-sow-arrow-9071253.jpg?v=1770159078","price":"7.99","salePrice":"6.99","percent":12.5,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8254166237497","variantId":"gid:\/\/shopify\/ProductVariant\/45022310105401","productTitle":"Hungry Woman by Pauline Cox - Signed Edition","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/hungry-woman-by-pauline-cox-signed-edition-from-pauline-cox-available-at-sow-arrow-899776.png?v=1726161909","price":"30.00","salePrice":"22.00","percent":26.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058965299578","variantId":"gid:\/\/shopify\/ProductVariant\/55277108756858","productTitle":"Dr. Immune Five Syrup (Reishi, Agaricus, Oyster, Chaga, Shiitake) - 250ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/dr-immune-five-syrup-reishi-agaricus-oyster-chaga-shiitake-250ml-from-hiffas-da-terra-available-at-sow-arrow-828675.webp?v=1745028198","price":"29.99","salePrice":"22.99","percent":23.3,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16147013566842","variantId":"gid:\/\/shopify\/ProductVariant\/57056531906938","productTitle":"Creatine Monohydrate with Magnesium - 28 servings","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/creatine-monohydrate-with-magnesium-28-servings-from-hunter-gather-available-at-sow-arrow-6532218.webp?v=1783748113","price":"23.99","salePrice":"21.25","percent":11.4,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154190741882","variantId":"gid:\/\/shopify\/ProductVariant\/57081625575802","productTitle":"Grain-free Granola - Cinnamon","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-cinnamon-from-fudi-available-at-sow-arrow-7886385.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154157121914","variantId":"gid:\/\/shopify\/ProductVariant\/57081501483386","productTitle":"Grain-free Granola - Cocoa","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-cocoa-from-fudi-available-at-sow-arrow-5704363.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154161578362","variantId":"gid:\/\/shopify\/ProductVariant\/57081508594042","productTitle":"Grain-free Granola - Original","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-original-from-fudi-available-at-sow-arrow-2115599.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154154303866","variantId":"gid:\/\/shopify\/ProductVariant\/57081494929786","productTitle":"Grain-free Granola - Spiced Biscuit","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-spiced-biscuit-from-fudi-available-at-sow-arrow-1060331.png?v=1784328208","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16143786967418","variantId":"gid:\/\/shopify\/ProductVariant\/57046455681402","productTitle":"Organic Calm Reish Mushroom Drops (Alcohol Free) -  50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-calm-reish-mushroom-drops-alcohol-free-50ml-from-love-mushrooms-available-at-sow-arrow-7132081.webp?v=1783416673","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16163974513018","variantId":"gid:\/\/shopify\/ProductVariant\/57122866594170","productTitle":"Organic Cordyceps Vitality liquid extract - 50ml (alcohol free)","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-cordyceps-vitality-liquid-extract-50ml-alcohol
656-free-from-love-mushrooms-available-at-sow-arrow-4674430.webp?v=1785322450","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16143740961146","variantId":"gid:\/\/shopify\/ProductVariant\/57046219391354","productTitle":"Organic Lion’s Mane Mushroom Extract (Alcohol Free) -  50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-mushroom-extract-alcohol-free-50ml-from-love-mushrooms-available-at-sow-arrow-2774941.webp?v=1783416673","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16144944038266","variantId":"gid:\/\/shopify\/ProductVariant\/57051002208634","productTitle":"Organic Lion's Mane (4000mg per capsule) - 60 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-4000mg-per-capsule-60-capsules-from-love-mushrooms-available-at-sow-arrow-6279251.webp?v=1783500129","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16145058955642","variantId":"gid:\/\/shopify\/ProductVariant\/57051261370746","productTitle":"Organic Reishi (4000mg per capsule) - 60 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-reishi-4000mg-per-capsule-60-capsules-from-love-mushrooms-available-at-sow-arrow-6810727.webp?v=1783582390","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16145075863930","variantId":"gid:\/\/shopify\/ProductVariant\/57051365114234","productTitle":"Collagen Truffle Cotton Face Mask - 5 pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/collagen-truffle-cotton-face-mask-5-pack-from-sow-arrow-available-at-sow-arrow-6192698.webp?v=1783582389","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173430309242","variantId":"gid:\/\/shopify\/ProductVariant\/57160314323322","productTitle":"Organic Bean Chilli - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-bean-chilli-415g-from-stoked-available-at-sow-arrow-9059328.webp?v=1786565719","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173429129594","variantId":"gid:\/\/shopify\/ProductVariant\/57160310980986","productTitle":"Organic Bolognese - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-bolognese-415g-from-stoked-available-at-sow-arrow-8077676.webp?v=1786565719","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173424148858","variantId":"gid:\/\/shopify\/ProductVariant\/57160300036474","productTitle":"Organic Lentil Dhal - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lentil-dhal-415g-from-stoked-available-at-sow-arrow-3947139.webp?v=1786565721","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173427458426","variantId":"gid:\/\/shopify\/ProductVariant\/57160307048826","productTitle":"Organic Thai Green Curry - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-thai-green-curry-415g-from-stoked-available-at-sow-arrow-1957289.webp?v=1786565720","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173431652730","variantId":"gid:\/\/shopify\/ProductVariant\/57160321794426","productTitle":"Organic Nacho Sauce - 400g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-nacho-sauce-400g-from-stoked-available-at-sow-arrow-8783507.webp?v=1786565718","price":"4.75","salePrice":"4.05","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173249659258","variantId":"gid:\/\/shopify\/ProductVariant\/57159452492154","productTitle":"Crispy Shitake Seaweed Snacks - 5 Pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/crispy-shitake-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-1069586.webp?v=1786565724","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173251133818","variantId":"gid:\/\/shopify\/ProductVariant\/57159465009530","productTitle":"Organic Olive Oil Seaweed Snacks - 5 Pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-olive-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-2065874.webp?v=1786565723","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/14864049734010","variantId":"gid:\/\/shopify\/ProductVariant\/54849733099898","productTitle":"Biodynamic, Organic Fine Drinking Chocolate - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/biodynamic-organic-fine-drinking-chocolate-300g-from-vivani-available-at-sow-arrow-895931.webp?v=1732881687","price":"6.49","salePrice":"3.99","percent":38.5,"reason":"Short dated"},{"productId":"gid:\/\/shopify\/Product\/15632127000954","variantId":"gid:\/\/shopify\/ProductVariant\/56489454633338","productTitle":"Keto Pizza Base - 6 Pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/keto-pizza-base-6-pack-from-sow-arrow-available-at-sow-arrow-4180271.jpg?v=1770159081","price":"14.99","salePrice":"13.49","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058953601402","variantId":"gid:\/\/shopify\/ProductVariant\/55277083853178","productTitle":"Organic Mico Cord (Cordyceps Extract) 835mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-cord-cordyceps-extract-835mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-164438.webp?v=1745028201","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058048582010","variantId":"gid:\/\/shopify\/ProductVariant\/55275421335930","productTitle":"Organic Mico-Chaga (Chaga Extract) 610mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-chaga-chaga-extract-610mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-509322.jpg?v=1744945379","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058005950842","variantId":"gid:\/\/shopify\/ProductVariant\/55275276697978","productTitle":"Organic Mico-Rei (Reishi Extract) 641mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-rei-reishi-extract-641mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-460826.webp?v=1744945383","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058025480570","variantId":"gid:\/\/shopify\/ProductVariant\/55275322507642","productTitle":"Organic Mico-Vir (Reishi \u0026 Cordyceps Extract) 670mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-vir-reishi-cordyceps-extract-670mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-487132.webp?v=1744945379","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16110621884794","variantId":"gid:\/\/shopify\/ProductVariant\/56900480696698","productTitle":"Free-Range Chicken Bone Broth Powder - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/free-range-chicken-bone-broth-powder-300g-from-hunter-gather-available-at-sow-arrow-3329877.webp?v=1786565721","price":"31.99","salePrice":"28.89","percent":9.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15927167025530","variantId":"gid:\/\/shopify\/ProductVariant\/56750704296314","productTitle":"Organic, British Authentic Desi Ghee - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-british-authentic-desi-ghee-300g-from-shobhnas-ghee-available-at-sow-arrow-2538408.jpg?v=1775821527","price":"11.99","salePrice":"10.79","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16099802677626","variantId":"gid:\/\/shopify\/ProductVariant\/56859597177210","productTitle":"Collagen, MCT, Coffee Powder - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/collagen-mct-coffee-powder-300g-from-hunter-gather-available-at-sow-arrow-9156615.webp?v=1778113822","price":"34.00","salePrice":"30.60","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8730633896249","variantId":"gid:\/\/shopify\/ProductVariant\/46954128539961","productTitle":"Nano Gold \u0026 Platinum Glow \u0026 Shine - 50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/nano-gold-platinum-glow-shine-50ml-from-the-health-factory-available-at-sow-arrow-524214.png?v=1726161966","price":"44.95","salePrice":"35.96","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240018653497","variantId":"gid:\/\/shopify\/ProductVariant\/44853200814393","productTitle":"Nano Gold \u0026 Platinum Glow \u0026 Shine Collagen Support - 15ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/nano-gold-platinum-glow-shine-collagen-support-15ml-from-the-health-factory-available-at-sow-arrow-373680.png?v=1726161966","price":"24.99","salePrice":"19.99","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190764384634","variantId":"gid:\/\/shopify\/ProductVariant\/57225131164026","productTitle":"Pure Peanut Crackers -Fiery Chilli Flakes - 20g","
656imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190754488698","variantId":"gid:\/\/shopify\/ProductVariant\/57225101803898","productTitle":"Pure Peanut Crackers - Original - 20g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190750032250","variantId":"gid:\/\/shopify\/ProductVariant\/57225090072954","productTitle":"Pure Peanut Crackers - Cracked Black Pepper - 20g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185733611898","variantId":"gid:\/\/shopify\/ProductVariant\/57208215503226","productTitle":"Popped Foxnuts - Black Pepper - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-black-pepper-25g-from-bare-truth-available-at-sow-arrow-5601646.webp?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185731875194","variantId":"gid:\/\/shopify\/ProductVariant\/57208213635450","productTitle":"Popped Foxnuts - Chilli Paprika - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185729122682","variantId":"gid:\/\/shopify\/ProductVariant\/57208208261498","productTitle":"Popped Foxnuts - Cinnamon Vanilla - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185728172410","variantId":"gid:\/\/shopify\/ProductVariant\/57208207245690","productTitle":"Popped Foxnuts - Coconut Cacao - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-coconut-cacao-25g-from-bare-truth-available-at-sow-arrow-1139398.jpg?v=1787974038","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185703956858","variantId":"gid:\/\/shopify\/ProductVariant\/57208158454138","productTitle":"Crispy Sesame Oil Seaweed Snacks - 5 pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/crispy-sesame-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-1604112.webp?v=1788389354","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185703563642","variantId":"gid:\/\/shopify\/ProductVariant\/57208157372794","productTitle":"Avocado Oil Seaweed Snacks - 5 pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/avocado-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-4521024.webp?v=1788389358","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185706414458","variantId":"gid:\/\/shopify\/ProductVariant\/57208164581754","productTitle":"Avocado Oil Seaweed Snacks - Single - 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/avocado-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-4521024.webp?v=1788389358","price":"1.29","salePrice":"1.10","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173468320122","variantId":"gid:\/\/shopify\/ProductVariant\/57160449753466","productTitle":"Organic Olive Oil Seaweed Snacks - Single pack - 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-olive-oil-seaweed-snacks-single-pack-4g-from-morish-available-at-sow-arrow-8776612.webp?v=1788719775","price":"1.29","salePrice":"1.10","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196423844218","variantId":"gid:\/\/shopify\/ProductVariant\/57248296763770","productTitle":"Organic Garden Pea \u0026 Vegetable Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196414472570","variantId":"gid:\/\/shopify\/ProductVariant\/57248216514938","productTitle":"Organic Pumpkin, Carrot \u0026 Chilli  Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196413129082","variantId":"gid:\/\/shopify\/ProductVariant\/57248213696890","productTitle":"Organic Tomato \u0026 Lentil Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16099857695098","variantId":"gid:\/\/shopify\/ProductVariant\/56859825996154","productTitle":"Vitamin D3 + K2 Oral Spray","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-k2-oral-spray-from-kiki-health-available-at-sow-arrow-2500733.webp?v=1778113820","price":"20.99","salePrice":"16.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16210802966906","variantId":"gid:\/\/shopify\/ProductVariant\/57297137435002","productTitle":"Grain-free, low carb - Original Toasted Muesli - 250g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/14866288705914","variantId":"gid:\/\/shopify\/ProductVariant\/54853839913338","productTitle":"Vitamin D3 (2
656000IU) \u0026 K2 - 100 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-k2-100-capsules-from-terranova-available-at-sow-arrow-553422.webp?v=1733047619","price":"51.99","salePrice":"41.59","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020095289","variantId":"gid:\/\/shopify\/ProductVariant\/44853202977081","productTitle":"Vitamin D3 (2000IU) \u0026 K2 - 50 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-k2-50-capsules-from-terranova-available-at-sow-arrow-579237.jpg?v=1726162431","price":"28.69","salePrice":"22.95","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020128057","variantId":"gid:\/\/shopify\/ProductVariant\/44865340899641","productTitle":"Vitamin D3 2000IU (50ug) Complex - 50 or 100 capsules","variantTitle":"50 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-50ug-complex-50-or-100-capsules-from-terranova-available-at-sow-arrow-595618.jpg?v=1726162432","price":"15.29","salePrice":"12.32","percent":19.4,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020128057","variantId":"gid:\/\/shopify\/ProductVariant\/44865340932409","productTitle":"Vitamin D3 2000IU (50ug) Complex - 50 or 100 capsules","variantTitle":"100 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-50ug-complex-50-or-100-capsules-from-terranova-available-at-sow-arrow-992320.jpg?v=1726162432","price":"28.89","salePrice":"21.51","percent":25.5,"reason":"Special Offers"}],"quickDefaults":{"reasons":["Sale","Clearance","Short dated","Damaged packaging","Display stock","Special Offers","Quick discounts"],"reasonsConfigured":true},"qualifying":{"requiresShipping":true,"excludeGiftLines":true},"ui":{"showInCart":false},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278451577210","startsAt":"2026-08-14T11:54:43Z","endsAt":null,"subscriptions":{"recurringCycleLimit":1},"quickReasons":["Special Offers","Short dated"],"quickItems":[["49080416207161","21.25",0],["49080212914489","21.25",0],["55311076622714","21.25",0],["56244032864634","6.99",0],["45022310105401","22.00",0],["55277108756858","22.99",0],["57056531906938","21.25",0],["57081625575802","6.75",0],["57081501483386","6.75",0],["57081508594042","6.75",0],["57081494929786","6.75",0],["57046455681402","13.60",0],["57122866594170","13.60",0],["57046219391354","13.60",0],["57051002208634","16.99",0],["57051261370746","16.99",0],["57051365114234","16.99",0],["57160314323322","4.20",0],["57160310980986","4.20",0],["57160300036474","4.20",0],["57160307048826","4.20",0],["57160321794426","4.05",0],["57159452492154","4.25",0],["57159465009530","4.25",0],["54849733099898","3.99",1],["56489454633338","13.49",0],["55277083853178","52.79",0],["55275421335930","52.79",0],["55275276697978","52.79",0],["55275322507642","52.79",0],["56900480696698","28.89",0],["56750704296314","10.79",0],["56859597177210","30.60",0],["46954128539961","35.96",0],["44853200814393","19.99",0],["57225131164026","1.32",0],["57225101803898","1.32",0],["57225090072954","1.32",0],["57208215503226","1.95",0],["57208213635450","1.95",0],["57208208261498","1.95",0],["57208207245690","1.95",0],["57208158454138","4.25",0],["57208157372794","4.25",0],["57208164581754","1.10",0],["57160449753466","1.10",0],["57248296763770","2.03",0],["57248216514938","2.03",0],["57248213696890","2.03",0],["56859825996154","16.79",0],["57297137435002","6.75",0]]}]};</script>
656
657    
657<script src="//sowandarrow.com/cdn/shop/t/46/assets/windfall-product-promotions.js?v=71566852928092204341786684190" defer></script>
657
658    <link href="//sowandarrow.com/cdn/shop/t/46/assets/subscription-controls.css?v=28222874430186728211788641162" rel="stylesheet" type="text/css" media="all" />
659    
659<script src="//sowandarrow.com/cdn/shop/t/46/assets/subscription-selector.js?v=76638960017526934061788641162" defer></script>
659
660    
660<script src="//sowandarrow.com/cdn/shop/t/46/assets/subscription-modifier.js?v=128681309436634824231788641167" defer></script>
660
661    
661<script src="//sowandarrow.com/cdn/shop/t/46/assets/cross-sell.js?v=26270625333127106461788641163" defer></script>
661<link href="//sowandarrow.com/cdn/shop/t/46/assets/theme.css?v=405593962759408251786684190" rel="stylesheet" type="text/css" media="all" /><!-- BEGIN app block: shopify://apps/foxify-page-builder/blocks/app-embed/4e19e422-f550-4994-9ea0-84f23728223d -->
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677  
677<script id='foxify-recently-viewed-product'>
678    const productHandle = "pure-peanut-crackers-cracked-black-pepper-20g";
679    let max = 20;
680    const saveKey = 'foxify:recently-viewed';
681    const products = localStorage.getItem(saveKey) ? JSON.parse(localStorage.getItem(saveKey)) : [];
682    if (productHandle && !products.includes(productHandle)) {
683      products.push(productHandle)
684    }
685    localStorage.setItem(saveKey, JSON.stringify(products.filter((x, i) => {
686      return i <= max - 1
687    })))
688  </script>
688
689
690
691
692
693
694<!-- END app block --><!-- BEGIN app block: shopify://apps/pwa-mobile-app/blocks/app-embbed/f3b239f7-3e90-4ab2-8458-5a83727f15a6 --><link rel="manifest" href="/a/progressify/sowandarrow/manifest.json">
694<script
695  type="text/javascript"
696  async
697  src="https://pwa.lightifyme.com/progressify/sowandarrow/main.js"></script>
697
698
699
700
701
702
703
704<!-- END app block --><!-- BEGIN app block: shopify://apps/inbox/blocks/chat/841fc607-4181-4ad1-842d-e24d7f8bad6b --><link rel='modulepreload' href='https://cdn.shopify.com/storefront/web-components/chat.js' crossorigin fetchpriority='low'>
705
706<script id='shopify-chat-app-embed-data' type='application/json'>
707  {
708    "settings": {
709      "invertActivatorColors": false,
710      "greetingMessage": "",
711      "showFeaturedProducts": true,
712      "featuredProducts": [],
713      "horizontalPosition": "bottom_right",
714      "icon": "chat_bubble",
715      "buttonLabel": ""
716    }
717  }
718</script>
718
719
720<style data-shopify>
721  
722    @font-face {
723  font-family: "Bricolage Grotesque";
724  font-weight: 400;
725  font-style: normal;
726  font-display: swap;
727  src: url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n4.3c051773a9f927cd8737c10568a7e4175690f7d9.woff2") format("woff2"),
728       url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n4.58698d726495f44d45631b33dcda62f474c467fc.woff") format("woff");
729}
730
731    @font-face {
732  font-family: "Bricolage Grotesque";
733  font-weight: 700;
734  font-style: normal;
735  font-display: swap;
736  src: url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n7.de5675dd7a8e145fdc4cb2cfe67a16cb085528d0.woff2") format("woff2"),
737       url("//sowandarrow.com/cdn/fonts/bricolage_grotesque/bricolagegrotesque_n7.d701b766b46c76aceb10c78473f491dff9b09e5e.woff") format("woff");
738}
739
740    
741    
742  
743
744  /* Shadow DOM content does not prevent theme-wide :empty rules from matching the host. */
745  shopify-chat:defined:empty {
746    display: grid;
747  }
748
749  :root {
750    --shopify-chat-bg-color: #FAF4F0;
751    --shopify-chat-text-color: #000000;
752    --shopify-chat-accent-bg-color: #000000;
753    --shopify-chat-accent-text-color: #FAF4F0;
754    --shopify-chat-activator-offset: 20px;
755
756    
757      --shopify-chat-heading-font-family: "Bricolage Grotesque", sans-serif;
758      --shopify-chat-body-font-family: "Bricolage Grotesque", sans-serif;
759      --shopify-chat-font-size: 14px;
760    
761
762    --shopify-chat-activator-font-size: 13px;
763    --shopify-chat-border-radius: 16px;
764  }
765
766  
767    shopify-chat {
768      font-weight: 400;
769      font-style: normal;
770    }
771  
772</style>
773
774<script src='https://cdn.shopify.com/storefront/web-components/chat.js' type='module' crossorigin fetchpriority='low' async></script>
774
775
776
777<!-- END app block --><!-- BEGIN app block: shopify://apps/pwa-mobile-app/blocks/app-head-top/f3b239f7-3e90-4ab2-8458-5a83727f15a6 -->
778
779
780
781<script>
782
783    document.addEventListener('DOMContentLoaded', () => {
784
785    let filed = "true"
786    console.log(filed,'filed');
787    
788    
789        const shopDomain = "sowandarrow";
790        const shop = "sowandarrow.myshopify.com";
791
792        const manifestLink = document.createElement('link');
793            manifestLink.rel = 'manifest';
794            manifestLink.href = `/a/progressify/${shopDomain}/manifest.json`;
795
796            const scriptTag = document.createElement('script');
797            scriptTag.type = 'text/javascript';
798            scriptTag.async = true;
799            scriptTag.src = `https://pwa.lightifyme.com/progressify/${shopDomain}/main.js`;
800
801        if (scriptTag.src.includes(shopDomain)) {
802            document.head.prepend(scriptTag);
803        }
804
805        if (manifestLink.href.includes(shopDomain)) {
806            document.head.prepend(manifestLink);
807        }
808    });
809</script>
809<!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/breadcrumbs-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 -->
809<script type="application/ld+json" id="tinyimg-breadcrumbs-json-ld">
810      {
811        "@context": "https://schema.org",
812        "@type": "BreadcrumbList",
813        "itemListElement": [
814          {
815            "@type": "ListItem",
816            "position": 1,
817            "item": {
818              "@id": "https://sowandarrow.com",
819          "name": "Home"
820        }
821      }
822      
823        
824        
825        
826        
827        
828      ,{
829        "@type": "ListItem",
830        "position": 2,
831        "item": {
832          "@id": "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g",
833          "name": "Pure Peanut Crackers - Cracked Black Pepper - 20g"
834        }
835      }
836      
837      ]
838    }
839  </script>
839
840<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
841
842
843
844
845
846
847
848
849
850
851
852
853  
853<script async src="https://static.klaviyo.com/onsite/js/U6jjPm/klaviyo.js?company_id=U6jjPm"></script>
853
854  
854<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
854
855
856  
857    
857<script id="viewed_product">
858      if (item == null) {
859        var _learnq = _learnq || [];
860
861        var MetafieldReviews = null
862        var MetafieldYotpoRating = null
863        var MetafieldYotpoCount = null
864        var MetafieldLooxRating = null
865        var MetafieldLooxCount = null
866        var okendoProduct = null
867        var okendoProductReviewCount = null
868        var okendoProductReviewAverageValue = null
869        try {
870          // The following fields are used for Customer Hub recently viewed in order to add reviews.
871          // This information is not part of __kla_viewed. Instead, it is part of __kla_viewed_reviewed_items
872          MetafieldReviews = {};
873          MetafieldYotpoRating = null
874          MetafieldYotpoCount = null
875          MetafieldLooxRating = null
876          MetafieldLooxCount = null
877
878          okendoProduct = null
879          // If the okendo metafield is not legacy, it will error, which then requires the new json formatted data
880          if (okendoProduct && 'error' in okendoProduct) {
881            okendoProduct = null
882          }
883          okendoProductReviewCount = okendoProduct ? okendoProduct.reviewCount : null
884          okendoProductReviewAverageValue = okendoProduct ? okendoProduct.reviewAverageValue : null
885        } catch (error) {
886          console.error('Error in Klaviyo onsite reviews tracking:', error);
887        }
888
889        var item = {
890          Name: "Pure Peanut Crackers - Cracked Black Pepper - 20g",
891          ProductID: 16190750032250,
892          Categories: ["New Arrivals","Offers","Our Full Range","Picnic Perfection","Products","Snacks","Store Cupboard Essentials"],
893          ImageURL: "https://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_small.avif?v=1788431863",
894          URL: "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g",
895          Brand: "Uppernut",
896          Price: "£1.65",
897          Value: "1.65",
898          CompareAtPrice: "£0.00"
899        };
900        _learnq.push(['track', 'Viewed Product', item]);
901        _learnq.push(['trackViewedItem', {
902          Title: item.Name,
903          ItemId: item.ProductID,
904          Categories: item.Categories,
905          ImageUrl: item.ImageURL,
906          Url: item.URL,
907          Metadata: {
908            Brand: item.Brand,
909            Price: item.Price,
910            Value: item.Value,
911            CompareAtPrice: item.CompareAtPrice
912          },
913          metafields:{
914            reviews: MetafieldReviews,
915            yotpo:{
916              rating: MetafieldYotpoRating,
917              count: MetafieldYotpoCount,
918            },
919            loox:{
920              rating: MetafieldLooxRating,
921              count: MetafieldLooxCount,
922            },
923            okendo: {
924              rating: okendoProductReviewAverageValue,
925              count: okendoProductReviewCount,
926            }
927          }
928        }]);
929      }
930    </script>
930
931  
932
933
934
935
936  
936<script>
937    window.klaviyoReviewsProductDesignMode = false
938  </script>
938
939
940
941
942  <!-- BEGIN app snippet: customer-hub-data -->
942<script>
943  if (!window.customerHub) {
944    window.customerHub = {};
945  }
946  window.customerHub.storefrontRoutes = {
947    login: "/account/login?return_url=%2F%23k-hub",
948    register: "/account/register?return_url=%2F%23k-hub",
949    logout: "/account/logout",
950    profile: "/account",
951    addresses: "/account/addresses",
952  };
953  
954  window.customerHub.userId = null;
955  
956  window.customerHub.storeDomain = "sowandarrow.myshopify.com";
957
958  
959    window.customerHub.activeProduct = {
960      name: "Pure Peanut Crackers - Cracked Black Pepper - 20g",
961      category: null,
962      imageUrl: "https://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_small.avif?v=1788431863",
963      id: "16190750032250",
964      link: "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g",
965      options: [
966        
967          {
968            name: "Title",
969            values: [
970              
971                
972                
973                {
974                  name: "Default Title",
975                  colorHex: null,
976                  swatchImageUrl: null
977                }
978              
979            ]
980          }
981        
982      ],
983      variants: [
984        
985          {
986            id: "57225090072954",
987            selectedOptions: [
988              
989                
990                {
991                  name: "Title",
992                  value: "Default Title"
993                }
994              
995            ],
996            
997            imageUrl: null,
998            
999            price: "165",
1000            currency: "GBP",
1001            availableForSale: true,
1002            title: "Default Title",
1003          },
1004        
1005      ],
1006    };
1007    window.customerHub.activeProduct.variants.forEach((variant) => {
1008        
1009        variant.price = `${variant.price.slice(0, -2)}.${variant.price.slice(-2)}`;
1010    });
1011  
1012
1013  
1014    window.customerHub.storeLocale = {
1015        currentLanguage: 'en',
1016        currentCountry: 'GB',
1017        availableLanguages: [
1018          
1019            {
1020              iso_code: 'en',
1021              endonym_name: 'English'
1022            }
1023          
1024        ],
1025        availableCountries: [
1026          
1027            {
1028              iso_code: 'GG',
1029              name: 'Guernsey',
1030              currency_code: 'GBP'
1031            },
1032          
1033            {
1034              iso_code: 'JE',
1035              name: 'Jersey',
1036              currency_code: 'GBP'
1037            },
1038          
1039            {
1040              iso_code: 'GB',
1041              name: 'United Kingdom',
1042              currency_code: 'GBP'
1043            }
1044          
1045        ]
1046    };
1047  
1048</script>
1048
1049<!-- END app snippet -->
1050
1051
1052
1053
1054
1055
1056
1057<!-- END app block --><!-- BEGIN app block: shopify://apps/tinyseo-seo-speed/blocks/product-json-ld-embed/0605268f-f7c4-4e95-b560-e43df7d59ae4 -->
1057<script type="application/ld+json" id="tinyimg-product-json-ld">
1058    {
1059    "@context": "https://schema.org",
1060    "@graph": [
1061    {
1062    "@type": "Product",
1063    "@id": "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g",
1064    "productID": "16190750032250",
1065    "name": "Pure Peanut Crackers - Cracked Black Pepper - 20g","image": "https://sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863","description": "Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings.  These bites are a great alternative to traditional chips or other unhealthy snacks, providing a grain-free, low-carb, delicious snacking experience. Whether you\u0026#39;re a fan of bold flavours or just looking for a healthier snack option, our Cracked Black Pepper Peanut Bites are sure to satisfy your cravings.",
1066    "url": "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g","manufacturer": {
1067      "@type": "Organization",
1068      "name": "Uppernut"
1069    },
1070"category": "Food, Beverages \u0026 Tobacco \u003e Food Items \u003e Snack Foods \u003e Crackers",
1071"weight": {
1072      "@type": "QuantitativeValue",
1073      "value": "20",
1074      "unitCode": "GRM"
1075    },
1076"offers" : [
1077    {
1078      "@type" : "Offer" ,"gtin13": "5070000615929",
1079      "sku": "57225090072954",
1080"priceCurrency" : "GBP" ,
1081      "price": "1.65",
1082      "priceValidUntil": "2027-01-02",
1083      "validFrom": "2026-09-03",
1084      
1085      
1086      "availability" : "https://schema.org/InStock",
1087      
1088      "itemCondition": "https://schema.org/NewCondition",
1089      
1090
1091      "url" : "https://sowandarrow.com/products/pure-peanut-crackers-cracked-black-pepper-20g?variant=57225090072954",
1092      
1093
1094      
1095      
1096      
1097      "seller" : {
1098        "@type" : "Organization",
1099        "name": "Sow \u0026amp; Arrow"
1100      }
1101      }
1102    ],
1103    "brand": {
1104      "@type": "Brand",
1105      "name": "Uppernut"
1106    }
1107    }
1108    
1109    
1110    
1111    ]
1112 }
1113  </script>
1113
1114<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
1115<script type="text/javascript">
1116  (function (c, l, a, r, i, t, y) {
1117    c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
1118    t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify";
1119    y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
1120
1121    c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => {
1122      if (error) {
1123        console.error("Error loading Shopify features:", error);
1124        return;
1125      }
1126
1127      c[a]('consentv2', {
1128        ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied",
1129        analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied",
1130        source: 101,
1131      });
1132    });
1133
1134    l.addEventListener("visitorConsentCollected", function (e) {
1135      c[a]('consentv2', {
1136        ad_Storage: e.detail.marketingAllowed ? "granted" : "denied",
1137        analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied",
1138        source: 101,
1139      });
1140    });
1141  })(window, document, "clarity", "script", "srn1o2afpx");
1142</script>
1142
1143
1144
1145
1146<!-- END app block --><!-- BEGIN app block: shopify://apps/rebuy-personalization-engine/blocks/rebuy-global-embed/a26ae9b9-933b-40bf-bbc6-bf1220bbc4dc -->
1147<script>
1148  window.Rebuy = window.Rebuy || {};
1149  window.Rebuy.customer = window.Rebuy.customer || {};
1150  
1151  window.Rebuy.market = window.Rebuy.market || {};
1152  
1153  window.Rebuy.market.country = "GB";
1154  
1155  
1156  window.Rebuy.market.locale = "en";
1157  
1158</script>
1158
1159
1160
1161
1162
1163
1164<!-- END app block -->
1164<script src="https://cdn.shopify.com/extensions/01a0f6c2-aa0c-7102-a352-5a313c71c89c/bixgrow-affiliate-203/assets/bixgrow_tracker_logic.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1164
1164
1165<script src="https://cdn.shopify.com/extensions/01a101d9-652a-7b73-904c-cf9ed89a9db5/2026-10-03-12-58-30-UTC--0fc6178/assets/smile-loader.js" type="text/javascript" defer="defer"></script>
1165
1166<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1167<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: 75289362745,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};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 1167
1167
1168<script>
1169  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1170</script>
vendor: 1 bytes, line 1170
1170
1171<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}
1171).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: 75289362745,storefrontBaseUrl: "https://sowandarrow.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://sowandarrow.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2703851898","configuration":"{\"shopId\":\"75289362745\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"83adcaf06c5deacff41ffdf8f92d9129","type":"APP","apiClientId":246667608065,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2619670906","configuration":"{\"pixelCode\":\"D81M3RJC77U0NC104QR0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"2546631034","configuration":"{\"shopId\":\"39312\",\"domainStatus\":\"0\",\"domain\":\"sowandarrow.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"13124b044e9b3aaaba4080cdba031853","type":"APP","apiClientId":5443297,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1171,"dataSharingState":"unrestricted"},{"id":"2059436410","configuration":"{\"accountID\":\"U6jjPm\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"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":"1947500922","configuration":"{\"projectId\":\"srn1o2afpx\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1853587834","configuration":"{\"shopId\":\"sowandarrow.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"7093dff47f098f6de2afb75b62011ebe","type":"APP","apiClientId":2753413,"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"},{"id":"1644790138","configuration":"{\"accountID\":\"2de2ed03-0af8-4fa2-a602-a56f522d5573\",\"configs\":\"foxify,420dde02-66e0-4e84-a285-abcd1bbc3790,https:\/\/tracking.foxecom.app\/track\/batch\",\"appType\":\"production\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"9f2319e6a77ced168521277a4f8f9877","type":"APP","apiClientId":12239405057,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1513881978","configuration":"{\n        \"accountID\":\"sowandarrow.myshopify.com\",\n        \"environment\":\"production\",\n        \"apiURL\":\"https:\/\/api.quizkitapp.com\"\n        }","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8b4008b7d9cf69ef6aab7ff3dbda8179","type":"APP","apiClientId":4291957,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1513718138","configuration":"{\"store_id\":\"199628\",\"environment\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"10c4f173702937db6fa4bf871600cafd","type":"APP","apiClientId":294517,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"766148921","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\",\\\"GT-MR2PDWH5\\\"],\\\"target_country\\\":\\\"GB\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/tm1KCMzmpMMZEMzHg8Ao\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/INISCMbmpMMZEMzHg8Ao\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-9EGY9XD0HN\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/d5YcCMPmpMMZEMzHg8Ao\\\",\\\"MC-M1HQDEEWSE\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-9EGY9XD0HN\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/bnnUCL3mpMMZEMzHg8Ao\\\",\\\"MC-M1HQDEEWSE\\\"]}
1171,{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/VnhhCMDmpMMZEMzHg8Ao\\\",\\\"MC-M1HQDEEWSE\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-9EGY9XD0HN\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/MIMVCM_mpMMZEMzHg8Ao\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-9EGY9XD0HN\\\",\\\"AW-10871694284\\\/EFI1CMnmpMMZEMzHg8Ao\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-9EGY9XD0HN\\\"}],\\\"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":"393347385","configuration":"{\"pixel_id\":\"2923452311160796\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"168689977","configuration":"{\"myshopifyDomain\":\"sowandarrow.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"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":"Sow \u0026 Arrow","paymentSettings":{"currencyCode":"GBP"},"myshopifyDomain":"sowandarrow.myshopify.com","countryCode":"GB","storefrontUrl":"https:\/\/sowandarrow.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":1.65,"currencyCode":"GBP"},"product":{"title":"Pure Peanut Crackers - Cracked Black Pepper - 20g","vendor":"Uppernut","id":"16190750032250","untranslatedTitle":"Pure Peanut Crackers - Cracked Black Pepper - 20g","url":"\/products\/pure-peanut-crackers-cracked-black-pepper-20g","type":"Snacks"},"id":"57225090072954","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}],"products":[{"id":"16190750032250","handle":"pure-peanut-crackers-cracked-black-pepper-20g","isCollective":false,"title":"Pure Peanut Crackers - Cracked Black Pepper - 20g","type":"Snacks","untranslatedTitle":"Pure Peanut Crackers - Cracked Black Pepper - 20g","url":"\/products\/pure-peanut-crackers-cracked-black-pepper-20g","vendor":"Uppernut","remoteShopId":null,"variants":[{"id":"57225090072954","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863"},"price":{"amount":1.65,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16190754488698","handle":"pure-peanut-crackers-fiery-chilli-flakes-20g","isCollective":false,"title":"Pure Peanut Crackers - Original - 20g","type":"Snacks","untranslatedTitle":"Pure Peanut Crackers - Original - 20g","url":"\/products\/pure-peanut-crackers-fiery-chilli-flakes-20g","vendor":"Uppernut","remoteShopId":null,"variants":[{"id":"57225101803898","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535"},"price":{"amount":1.65,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]}
1171,{"id":"16190764384634","handle":"pure-peanut-crackers-fiery-chilli-flakes-20g-copy","isCollective":false,"title":"Pure Peanut Crackers -Fiery Chilli Flakes - 20g","type":"Snacks","untranslatedTitle":"Pure Peanut Crackers -Fiery Chilli Flakes - 20g","url":"\/products\/pure-peanut-crackers-fiery-chilli-flakes-20g-copy","vendor":"Uppernut","remoteShopId":null,"variants":[{"id":"57225131164026","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935"},"price":{"amount":1.65,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16196423844218","handle":"organic-pumpkin-carrot-chilli-soup-copy","isCollective":false,"title":"Organic Garden Pea \u0026 Vegetable Soup","type":"Soup","untranslatedTitle":"Organic Garden Pea \u0026 Vegetable Soup","url":"\/products\/organic-pumpkin-carrot-chilli-soup-copy","vendor":"Mr Organic","remoteShopId":null,"variants":[{"id":"57248296763770","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290"},"price":{"amount":2.39,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16196413129082","handle":"organic-tomato-lentil-soup","isCollective":false,"title":"Organic Tomato \u0026 Lentil Soup","type":"Soup","untranslatedTitle":"Organic Tomato \u0026 Lentil Soup","url":"\/products\/organic-tomato-lentil-soup","vendor":"Mr Organic","remoteShopId":null,"variants":[{"id":"57248213696890","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289"},"price":{"amount":2.39,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16196414472570","handle":"organic-tomato-lentil-soup-copy","isCollective":false,"title":"Organic Pumpkin, Carrot \u0026 Chilli  Soup","type":"Soup","untranslatedTitle":"Organic Pumpkin, Carrot \u0026 Chilli  Soup","url":"\/products\/organic-tomato-lentil-soup-copy","vendor":"Mr Organic","remoteShopId":null,"variants":[{"id":"57248216514938","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290"},"price":{"amount":2.39,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16185731875194","handle":"popped-foxnuts-coconut-cacao-25g-copy","isCollective":false,"title":"Popped Foxnuts - Chilli Paprika - 25g","type":null,"untranslatedTitle":"Popped Foxnuts - Chilli Paprika - 25g","url":"\/products\/popped-foxnuts-coconut-cacao-25g-copy","vendor":"Bare Truth","remoteShopId":null,"variants":[{"id":"57208213635450","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039"},"price":{"amount":2.29,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16185729122682","handle":"popped-foxnuts-cinnamon-vanilla-25g","isCollective":false,"title":"Popped Foxnuts - Cinnamon Vanilla - 25g","type":"Snacks","untranslatedTitle":"Popped Foxnuts - Cinnamon Vanilla - 25g","url":"\/products\/popped-foxnuts-cinnamon-vanilla-25g","vendor":"Bare Truth","remoteShopId":null,"variants":[{"id":"57208208261498","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039"},"price":{"amount":2.29,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16210802966906","handle":"grain-free-low-carb-original-toasted-muesli-250g","isCollective":false,"title":"Grain-free, low carb - Original Toasted Muesli - 250g","type":"Cereal","untranslatedTitle":"Grain-free, low carb - Original Toasted Muesli - 250g","url":"\/products\/grain-free-low-carb-original-toasted-muesli-250g","vendor":"Fudi","remoteShopId":null,"variants":[{"id":"57297137435002","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191"},"price":{"amount":7.49,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]}
1171,{"id":"16207781626234","handle":"montezuma-dark-cherry-and-pistachio-90g-copy","isCollective":false,"title":"Montezuma's Milk Chocolate Gingerbread - 90g","type":"Chocolate","untranslatedTitle":"Montezuma's Milk Chocolate Gingerbread - 90g","url":"\/products\/montezuma-dark-cherry-and-pistachio-90g-copy","vendor":"Montezuma's","remoteShopId":null,"variants":[{"id":"57281611334010","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191"},"price":{"amount":4.49,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16207780905338","handle":"montezuma-dark-cherry-and-pistachio-90g","isCollective":false,"title":"Montezuma's - Dark Cherry and Pistachio - 90g","type":"Chocolate","untranslatedTitle":"Montezuma's - Dark Cherry and Pistachio - 90g","url":"\/products\/montezuma-dark-cherry-and-pistachio-90g","vendor":"Montezuma's","remoteShopId":null,"variants":[{"id":"57281607500154","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189"},"price":{"amount":4.49,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"16207780348282","handle":"montezuma-blonde-cinnamon-90g","isCollective":false,"title":"Montezuma's - Blonde Cinnamon - 90g","type":"Chocolate","untranslatedTitle":"Montezuma's - Blonde Cinnamon - 90g","url":"\/products\/montezuma-blonde-cinnamon-90g","vendor":"Montezuma's","remoteShopId":null,"variants":[{"id":"57281606582650","image":{"src":"\/\/sowandarrow.com\/cdn\/shop\/files\/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192"},"price":{"amount":4.49,"currencyCode":"GBP"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]}],"purchasingCompany":null},},"https://sowandarrow.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"183195631994","themePublished":"true","eventMetadataId":"3b3bc413-9772-4d0f-ac7e-9d3038c27ce3","pageType":"product","resourceId":"16190750032250","shopId":"75289362745","storefrontBaseUrl":"https:\/\/sowandarrow.com","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\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":1.65,\"currencyCode\":\"GBP\"},\"product\":{\"title\":\"Pure Peanut Crackers - Cracked Black Pepper - 20g\",\"vendor\":\"Uppernut\",\"id\":\"16190750032250\",\"untranslatedTitle\":\"Pure Peanut Crackers - Cracked Black Pepper - 20g\",\"url\":\"\/products\/pure-peanut-crackers-cracked-black-pepper-20g\",\"type\":\"Snacks\"},\"id\":\"57225090072954\",\"image\":{\"src\":\"\/\/sowandarrow.com\/cdn\/shop\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863\"},\"sku\":null,\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});})();</script>
1171<script>
1172  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1173  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1174  window.ShopifyAnalytics.meta.currency = 'GBP';
1175  var meta = {"product":{"id":16190750032250,"gid":"gid:\/\/shopify\/Product\/16190750032250","vendor":"Uppernut","type":"Snacks","handle":"pure-peanut-crackers-cracked-black-pepper-20g","variants":[{"id":57225090072954,"price":165,"name":"Pure Peanut Crackers - Cracked Black Pepper - 20g","public_title":null,"sku":null}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":16190750032250,"requestId":"0a923e05-d0fc-4b8d-a2e2-06452336f69c-1791086572"}};
1176  for (var attr in meta) {
1177    window.ShopifyAnalytics.meta[attr] = meta[attr];
1178  }
1179</script>
vendor: 1 bytes, line 1179
1179
1180<script class="analytics">
1181  (function () {
1182    var customDocumentWrite = function(content) {
1183      var jquery = null;
1184
1185      if (window.jQuery) {
1186        jquery = window.jQuery;
1187      } else if (window.Checkout && window.Checkout.$) {
1188        jquery = window.Checkout.$;
1189      }
1190
1191      if (jquery) {
1192        jquery('body').append(content);
1193      }
1194    };
1195
1196    var hasLoggedConversion = function(token) {
1197      if (token) {
1198        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1199      }
1200      return false;
1201    }
1202
1203    var setCookieIfConversion = function(token) {
1204      if (token) {
1205        var twoMonthsFromNow = new Date(Date.now());
1206        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1207
1208        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1209      }
1210    }
1211
1212    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1213    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1214    if (trekkie.integrations) {
1215      return;
1216    }
1217    trekkie.methods = [
1218      'identify',
1219      'page',
1220      'ready',
1221      'track',
1222      'trackForm',
1223      'trackLink'
1224    ];
1225    trekkie.factory = function(method) {
1226      return function() {
1227        var args = Array.prototype.slice.call(arguments);
1228        args.unshift(method);
1229        trekkie.push(args);
1230        if (method == 'track' || method == 'page') {
1231          var pageUrl;
1232          try {
1233            pageUrl = window.location.href;
1234          } catch (e) {}
1235          var pageReferrer;
1236          try {
1237            pageReferrer = document.referrer;
1238          } catch (e) {}
1239          try {
1240            if (window.__TREKKIE_SHIM_QUEUE == null) {
1241              window.__TREKKIE_SHIM_QUEUE = [];
1242            }
1243            window.__TREKKIE_SHIM_QUEUE.push({
1244              from: 'trekkie-stub',
1245              method: method,
1246              args: args.slice(1),
1247              pageContext: {
1248                url: pageUrl,
1249                referrer: pageReferrer
1250              }
1251            });
1252          } catch (e) {
1253            // no-op
1254          }
1255        }
1256        return trekkie;
1257      };
1258    };
1259    for (var i = 0; i < trekkie.methods.length; i++) {
1260      var key = trekkie.methods[i];
1261      trekkie[key] = trekkie.factory(key);
1262    }
1263    trekkie.load = function(config) {
1264      trekkie.config = config || {};
1265      trekkie.config.initialDocumentCookie = document.cookie;
1266      var first = document.getElementsByTagName('script')[0];
1267var script = document.createElement('script');
1268script.type = 'text/javascript';
1269script.onerror = function(e) {
1270  var scriptFallback = document.createElement('script');
1271  scriptFallback.type = 'text/javascript';
1272  scriptFallback.onerror = function(error) {
1273          var Monorail = {
1274      produce: function produce(monorailDomain, schemaId, payload) {
1275        var currentMs = new Date().getTime();
1276        var event = {
1277          schema_id: schemaId,
1278          payload: payload,
1279          metadata: {
1280            event_created_at_ms: currentMs,
1281            event_sent_at_ms: currentMs
1282          }
1283        };
1284        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1285      },
1286      sendRequest: function sendRequest(endpointUrl, payload) {
1287        // Try the sendBeacon API
1288        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1289          var blobData = new window.Blob([payload], {
1290            type: 'text/plain'
1291          });
1292
1293          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1294            return true;
1295          } // sendBeacon was not successful
1296
1297        } // XHR beacon
1298
1299        var xhr = new XMLHttpRequest();
1300
1301        try {
1302          xhr.open('POST', endpointUrl);
1303          xhr.setRequestHeader('Content-Type', 'text/plain');
1304          xhr.send(payload);
1305        } catch (e) {
1306          console.log(e);
1307        }
1308
1309        return false;
1310      },
1311      isIos12: function isIos12() {
1312        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1313      }
1314    };
1315    Monorail.produce('monorail-edge.shopifysvc.com',
1316      'trekkie_storefront_load_errors/1.1',
1317      {shop_id: 75289362745,
1318      theme_id: 183195631994,
1319      app_name: "storefront",
1320      context_url: window.location.href,
1321      source_url: "//sowandarrow.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1322
1323  };
1324  scriptFallback.async = true;
1325  scriptFallback.src = '//sowandarrow.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1326  first.parentNode.insertBefore(scriptFallback, first);
1327};
1328script.async = true;
1329script.src = '//sowandarrow.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1330first.parentNode.insertBefore(script, first);
1331
1332    };
1333    trekkie.load(
1334      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":75289362745,"isMerchantRequest":null,"themeId":183195631994,"themeCityHash":"10284350431010864312","contentLanguage":"en","currency":"GBP","eventMetadataId":"3b3bc413-9772-4d0f-ac7e-9d3038c27ce3"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1335    );
1336
1337    var loaded = false;
1338    trekkie.ready(function() {
1339      if (loaded) return;
1340      loaded = true;
1341
1342      window.ShopifyAnalytics.lib = window.trekkie;
1343
1344      var originalDocumentWrite = document.write;
1345      document.write = customDocumentWrite;
1346      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1347      document.write = originalDocumentWrite;
1348
1349      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1350      var token = match? match[1]: undefined;
1351      if (!hasLoggedConversion(token)) {
1352        setCookieIfConversion(token);
1353        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"GBP","variantId":57225090072954,"productId":16190750032250,"productGid":"gid:\/\/shopify\/Product\/16190750032250","name":"Pure Peanut Crackers - Cracked Black Pepper - 20g","price":"1.65","sku":null,"brand":"Uppernut","variant":null,"category":"Snacks","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true});
1354      }
1355    });
1356
1357    window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":16190750032250,"requestId":"0a923e05-d0fc-4b8d-a2e2-06452336f69c-1791086572","shopifyEmitted":true});
1358
1359    var eventsListenerScript = document.createElement('script');
1360    eventsListenerScript.async = true;
1361    eventsListenerScript.src = "//sowandarrow.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1362    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1363})();</script>
vendor: 1 bytes, line 1363
1363
1364<script
1365  defer
1366  src="https://sowandarrow.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1367  data-application="storefront-renderer"
1368  data-shop-id="75289362745"
1369  data-render-region="gcp-us-west1"
1370  data-page-type="product"
1371  data-theme-instance-id="183195631994"
1372  data-theme-name="Stretch"
1373  data-theme-version="1.6.0"
1374  data-monorail-region="shop_domain"
1375  data-resource-timing-sampling-rate="10"
1376  data-shs="true"
1377  data-shs-beacon="true"
1378  data-shs-export-with-fetch="true"
1379  data-shs-logs-sample-rate="1"
1380  data-shs-beacon-endpoint="https://sowandarrow.com/api/collect"
1381></script>
vendor: 1 bytes, line 1381
1381
1382<script id="shopify-chat-page-data" type="application/json">{"greetingMessage":"Welcome to Sow \u0026 Arrow. How can I help?","customerServiceEmail":"[email protected]","onlineStorePasswordProtected":false,"continueAsChip":false,"translations":[{"key":"agent_chat.panel.open_chat","value":"Open chat"},{"key":"agent_chat.panel.ask_anything","value":"Ask anything"},{"key":"agent_chat.panel.title","value":"Storekick"},{"key":"agent_chat.panel.unread_replies","value":"Unread replies"},{"key":"agent_chat.panel.back_to_chat","value":"Back to chat"},{"key":"agent_chat.panel.see_history","value":"See chat history"},{"key":"agent_chat.panel.new_chat","value":"Create a new chat"},{"key":"agent_chat.panel.close","value":"Close chat"},{"key":"agent_chat.panel.undock","value":"Undock chat"},{"key":"agent_chat.panel.dock","value":"Dock chat"},{"key":"agent_chat.panel.expand","value":"Expand chat"},{"key":"agent_chat.panel.contract","value":"Contract chat"},{"key":"agent_chat.panel.jump_to_latest","value":"Jump to latest"},{"key":"agent_chat.panel.loading_chat","value":"Loading chat"},{"key":"agent_chat.input.label","value":"Type your message"},{"key":"agent_chat.input.placeholder","value":"Ask anything..."},{"key":"agent_chat.input.send","value":"Send"},{"key":"agent_chat.input.stop","value":"Stop generating"},{"key":"agent_chat.thinking","value":"Thinking..."},{"key":"agent_chat.first_response_delayed","value":"Agent is taking longer to respond…"},{"key":"agent_chat.searching","value":"Searching..."},{"key":"agent_chat.message.sent_timestamp","value":"Sent · {{time}}"},{"key":"agent_chat.message.automated_label","value":"Automated"},{"key":"agent_chat.message.automated_timestamp","value":"Automated · {{time}}"},{"key":"agent_chat.liveAgentHandoff","value":"Someone from our team will be with you shortly"},{"key":"agent_chat.human_handoff.action","value":"Chat with our team"},{"key":"agent_chat.human_handoff.request","value":"I’d like to talk to someone from your team"},{"key":"agent_chat.human_handoff.ai_assistant","value":"AI assistant"},{"key":"agent_chat.greeting.default","value":"Hi there!"},{"key":"agent_chat.greeting.with_name","value":"Hi {{name}}!"},{"key":"agent_chat.greeting.welcome","value":"You can ask questions about shopping, sizing\/dimensions, shipping, returns, or order status."},{"key":"agent_chat.greeting.welcome_back","value":"Welcome back to %{shop_name}! How can I help?"},{"key":"agent_chat.greeting.welcome_back_no_shop","value":"Welcome back! How can I help?"},{"key":"agent_chat.greeting.welcome_to_shop","value":"Welcome to %{shop_name}. How can I help?"},{"key":"agent_chat.greeting.generic","value":"How can I help?"},{"key":"agent_chat.disclaimer.text","value":"This chat is powered by AI from Shopify and may make mistakes. Your messages are visible to {{shop_name}}. See"},{"key":"agent_chat.disclaimer.text_human","value":"Your messages are visible to {{shop_name}} and to Shopify for the provision and improvement of the services. See"},{"key":"agent_chat.disclaimer.link_text","value":"privacy policy"},{"key":"agent_chat.error.response_unavailable","value":"Response unavailable"},{"key":"agent_chat.error.generic","value":"Something went wrong."},{"key":"agent_chat.error.response_failed","value":"Couldn’t load this message"},{"key":"agent_chat.error.message_send_failed","value":"Your message couldn’t be sent"},{"key":"agent_chat.error.attachment_upload_failed","value":"Your attachment didn’t upload"},{"key":"agent_chat.error.first_response_stalled","value":"Agent couldn’t respond"},{"key":"agent_chat.error.try_again","value":"Try again"},{"key":"agent_chat.error.unavailable","value":"Chat isn't available right now - try again later"},{"key":"agent_chat.error.usage_limit","value":"Message limit reached — try again later or email us at {{email}}"},{"key":"agent_chat.error.usage_limit_no_email","value":"Message limit reached — try again later"},{"key":"agent_chat.error.cost_quota_unhandled","value":"Chat isn’t available right now—email us at {{email}}"},{"key":"agent_chat.error.cost_quota_unhandled_no_email","value":"Chat isn’t available right now"},{"key":"agent_chat.error.cost_quota_handover","value":"AI assistant isn’t available right now — our team will reply shortly"},{"key":"agent_chat.history.heading","value":"Chat history"},{"key":"agent_chat.history.loading","value":"Loading conversation history"},{"key":"agent_chat.history.aria_label","value":"Conversation history"},{"key":"agent_chat.history.no_conversations","value":"No conversations"},{"key":"agent_chat.history.conversation.one","value":"conversation"},{"key":"agent_chat.history.conversation.other","value":"conversations"},{"key":"agent_chat.history.error_message","value":"Something went wrong."},{"key":"agent_chat.history.try_again","value":"Try again"},{"key":"agent_chat.history.no_past","value":"No past conversations"},{"key":"agent_chat.history.start_new","value":"Start a new chat"},{"key":"agent_chat.history.untitled","value":"Untitled conversation"},{"key":"agent_chat.history.resume","value":"Resume: {{title}}"},{"key":"agent_chat.history.resume_with_time","value":"Resume: {{title}}, {{time}}"},{"key":"agent_chat.history.delete","value":"Delete conversation: {{title}}"},{"key":"agent_chat.history.delete_failed","value":"Could not delete conversation"},{"key":"agent_chat.feedback.group_label","value":"Message feedback"},{"key":"agent_chat.feedback.thumbs_up","value":"Thumbs up"},{"key":"agent_chat.feedback.thumbs_down","value":"Thumbs down"},{"key":"agent_chat.feedback.add_comment","value":"Add comment"},{"key":"agent_chat.feedback.thanks","value":"Thanks for your feedback"},{"key":"agent_chat.feedback.placeholder_up","value":"Tell us what went well"},{"key":"agent_chat.feedback.placeholder_down","value":"Tell us what could have been better"},{"key":"agent_chat.feedback.comment_label","value":"Feedback comment"},{"key":"agent_chat.feedback.cancel","value":"Cancel"},{"key":"agent_chat.feedback.submit","value":"Submit"},{"key":"agent_chat.feedback.character_count","value":"{{current}}\/{{max}}"},{"key":"agent_chat.feedback.character_limit_reached","value":"Maximum length reached. Feedback is limited to {{max}} characters."},{"key":"agent_chat.buyer_profile.button.open","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.title","value":"Buyer Profile"},{"key":"agent_chat.buyer_profile.empty","value":"No buyer profile available."},{"key":"agent_chat.buyer_profile.close","value":"Close"},{"key":"agent_chat.suggestions.empty_state_label","value":"Suggested questions"},{"key":"agent_chat.suggestions.quick_reply_label","value":"Suggested replies"},{"key":"agent_chat.auth.sign_in_to_continue","value":"Sign in to continue"},{"key":"agent_chat.auth.sign_in","value":"Sign in"},{"key":"agent_chat.auth.skip_and_chat","value":"Skip and start chatting"},{"key":"agent_chat.auth.pre_chat_title","value":"Sign in to personalize and save your chats"},{"key":"agent_chat.auth.pre_chat_subtitle","value":"Sign in or create an account"},{"key":"agent_chat.auth.staff_chat_required_title","value":"Don't miss a reply"},{"key":"agent_chat.auth.staff_chat_required_subtitle","value":"Sign in to chat with our team. We'll email you if you leave the chat."},{"key":"agent_chat.auth.share_disclaimer","value":"By continuing, Shop will share your name and email with this store. See their {{terms_link}} and {{privacy_link}}"},{"key":"agent_chat.auth.terms_link","value":"terms"},{"key":"agent_chat.auth.privacy_link","value":"privacy policy"},{"key":"agent_chat.auth.declined_pre_chat","value":"I can’t connect you with the store unless you sign in."},{"key":"agent_chat.reply_by_email.continuation_prompt","value":"If you leave the chat, we’ll email you when there’s a reply."},{"key":"agent_chat.reply_by_email.sign_in_prompt","value":"Sign in to get emailed when there’s a reply."},{"key":"agent_chat.order_lookup.track_order","value":"Track my order"},{"key":"agent_chat.order_lookup.track_another_order","value":"Track another order"},{"key":"agent_chat.order_lookup.new_conversation","value":"New conversation"},{"key":"agent_chat.order_lookup.follow_up_label","value":"Order lookup actions"},{"key":"agent_chat.order_lookup.enter_order_information","value":"Enter order information"},{"key":"agent_chat.order_lookup.prompt","value":"To see your order status, please provide your order details."},{"key":"agent_chat.order_lookup.form_title","value":"Track my order"},{"key":"agent_chat.order_lookup.form_subtitle","value":"Please provide your information."},{"key":"agent_chat.order_lookup.order_number_label","value":"Order number"},{"key":"agent_chat.order_lookup.email_label","value":"Email address"},{"key":"agent_chat.order_lookup.submit","value":"Track my order"},{"key":"agent_chat.order_lookup.cancel","value":"Cancel"},{"key":"agent_chat.order_lookup.invalid_order_number","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_order_number_whitespace","value":"Please enter a valid order number with only numbers and letters, no spaces (e.g. 1006)."},{"key":"agent_chat.order_lookup.invalid_email","value":"Please enter a valid email address"},{"key":"agent_chat.order_lookup.generic_error","value":"There was a problem looking up your order. Please try again."},{"key":"agent_chat.order_lookup.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.order_lookup.locked_composer_status","value":"Order lookup is in progress. Start a new conversation to ask something else."},{"key":"agent_chat.legacy_contact.form_title","value":"Before we get started"},{"key":"agent_chat.legacy_contact.form_subtitle","value":"Please provide your information so we can reply to you if you leave the chat."},{"key":"agent_chat.legacy_contact.first_name_label","value":"First name"},{"key":"agent_chat.legacy_contact.last_name_label","value":"Last name"},{"key":"agent_chat.legacy_contact.email_label","value":"Email"},{"key":"agent_chat.legacy_contact.marketing_opt_in","value":"Email me with news and offers"},{"key":"agent_chat.legacy_contact.submit","value":"Start chat"},{"key":"agent_chat.legacy_contact.cancel","value":"Cancel"}
1382,{"key":"agent_chat.legacy_contact.invalid_first_name","value":"Enter a valid first name."},{"key":"agent_chat.legacy_contact.invalid_last_name","value":"Enter a valid last name."},{"key":"agent_chat.legacy_contact.invalid_email","value":"Enter a valid email address."},{"key":"agent_chat.legacy_contact.invalid_email_length","value":"Email address is too long."},{"key":"agent_chat.legacy_contact.generic_error","value":"Something went wrong."},{"key":"agent_chat.legacy_contact.rate_limited_error","value":"Too many attempts. Try again later."},{"key":"agent_chat.discountCard.useDiscount","value":"Use discount"},{"key":"agent_chat.discountCard.discountApplicationContext","value":"Applies automatically at checkout"},{"key":"agent_chat.cart.checkout","value":"Checkout"},{"key":"agent_chat.product.add_to_cart","value":"Add to cart"},{"key":"agent_chat.product.view_details","value":"View details"},{"key":"agent_chat.product.out_of_stock","value":"Out of stock"},{"key":"agent_chat.product.compare_suggestions","value":"Compare suggestions"},{"key":"agent_chat.product.hide_suggestions","value":"Hide suggestions"},{"key":"agent_chat.product.sold_out","value":"Sold out"},{"key":"agent_chat.order.item.one","value":"item"},{"key":"agent_chat.order.item.other","value":"items"},{"key":"agent_chat.order.less_items.one","value":"- hide {{count}} item"},{"key":"agent_chat.order.less_items.other","value":"- hide {{count}} items"},{"key":"agent_chat.order.more_items.one","value":"+ {{count}} more item"},{"key":"agent_chat.order.more_items.other","value":"+ {{count}} more items"},{"key":"agent_chat.order.view_order","value":"View order {{orderId}}"},{"key":"agent_chat.order.track_shipment","value":"Track shipment"},{"key":"agent_chat.order.of_total","value":"{{index}} of {{total}}"},{"key":"agent_chat.order.label","value":"Order {{number}}"},{"key":"agent_chat.order.count.one","value":"{{count}} Order"},{"key":"agent_chat.order.count.other","value":"{{count}} Orders"},{"key":"agent_chat.order.ordered_on","value":"Ordered {{date}}"},{"key":"agent_chat.order.select","value":"Select order {{number}}"},{"key":"agent_chat.return.heading","value":"Select items to return"},{"key":"agent_chat.return.toggle_item","value":"Select {{name}}"},{"key":"agent_chat.return.select_item_non_returnable","value":"{{name}}, not returnable"},{"key":"agent_chat.return.quantity_label","value":"Return quantity"},{"key":"agent_chat.return.reason_label","value":"Reason for return"},{"key":"agent_chat.return.reason_placeholder","value":"Select a reason"},{"key":"agent_chat.return.confirm","value":"Request return"},{"key":"agent_chat.return.confirmed","value":"Return requested"},{"key":"agent_chat.return.reason.size_too_small","value":"Size too small"},{"key":"agent_chat.return.reason.size_too_large","value":"Size too large"},{"key":"agent_chat.return.reason.unwanted","value":"Unwanted"},{"key":"agent_chat.return.reason.not_as_described","value":"Not as described"},{"key":"agent_chat.return.reason.wrong_item","value":"Wrong item"},{"key":"agent_chat.return.reason.defective","value":"Defective"},{"key":"agent_chat.return.reason.style","value":"Style"},{"key":"agent_chat.return.reason.color","value":"Color"},{"key":"agent_chat.return.reason.other_reason","value":"Other"},{"key":"agent_chat.scroll.previous","value":"Previous"},{"key":"agent_chat.scroll.next","value":"Next"}]}</script>
vendor: 1 bytes, line 1382
1382
1383<script id="shopify-customer-account-data" type="application/json">{"customer":null,"shop":{"id":"75289362745","customerAccountTranslations":[{"key":"account_menu.signed_out_state.sheet_title","value":"Sign in or create account"},{"key":"account_menu.signed_out_state.section_divider","value":"More ways to sign in"},{"key":"account_menu.signed_out_state.alternate_divider","value":"OR"},{"key":"account_menu.signed_out_state.email_field_label","value":"Email"},{"key":"account_menu.signed_out_state.orders_button","value":"Orders"},{"key":"account_menu.signed_out_state.profile_button","value":"Profile"},{"key":"account_menu.signed_out_state.shop_login_button","value":"Sign in with Shop"},{"key":"account_menu.signed_out_state.continue_with_google","value":"Continue with Google"},{"key":"account_menu.signed_out_state.continue_with_facebook","value":"Continue with Facebook"},{"key":"account_menu.signed_out_state.marketing_consent_label","value":"Email me with news and offers"},{"key":"account_menu.signed_in_state.greeting_with_name","value":"Hi, {{first_name}}"},{"key":"account_menu.signed_in_state.greeting_without_name","value":"Account"},{"key":"account_menu.signed_in_state.orders_button","value":"Orders"},{"key":"account_menu.signed_in_state.profile_button","value":"Profile"},{"key":"account_menu.location_picker.sheet_title","value":"Locations"},{"key":"account_menu.location_picker.search_field_placeholder","value":"Search"},{"key":"account_menu.aria_labels.close_menu","value":"Close menu"},{"key":"account_menu.aria_labels.back_to_main_menu","value":"Back to main menu from {{title}}"},{"key":"account_menu.aria_labels.open_submenu","value":"{{title}}, opens submenu"},{"key":"account_menu.aria_labels.loading_menu","value":"Loading menu"},{"key":"account_menu.aria_labels.account","value":"Account"},{"key":"account_menu.aria_labels.sign_in_with_email","value":"Sign in with email"},{"key":"account_menu.aria_labels.sign_in","value":"Sign in"}],"socialLoginProviders":[{"handle":"Shop"}],"legacyCustomerAccounts":true,"signInLinksVisible":true,"b2bEnabled":false,"marketingConsentSigninEnabled":false},"visitor":{"country":"GB","language":"en"}}</script>
1383
1384<meta name="shopify-y" content="4e074c64-9ea9-4db6-8ae4-7ce754ef90f4" data-expiration="1822644172000"><meta name="shopify-s" content="3a1b0e2a-aa85-4075-aacb-02d4ca2fccc1" data-expiration="1791088372000"><meta name="new-cookie-storage-activated" content="t">
1385</head>
1386
1387  
1388
1389  <body class="features--zoom-image ">        
1390        
1391<template id="drawer-default-template">
1392  <div part="base">
1393    <div part="overlay"></div>
1394
1395    <div part="content">
1396      <header part="header">
1397        <dialog-close-button style="display: contents">
1398          <button type="button" part="close-button">
1399            <span class="sr-only" part="sr-only">Close</span><svg
1400        aria-hidden="true"
1401        focusable="false"
1402        width="10"
1403        class="icon icon-close"
1404        
1405        part="icon"
1406        fill="none"
1407        viewBox="0 0 10 10"
1408      >
1409        <path stroke="currentColor" d="m1 1 8 8m0-8L1 9" />
1410      </svg></button>
1411        </dialog-close-button>
1412
1413        <slot name="header"></slot>
1414      </header>
1415
1416      <div part="body">
1417        <slot></slot>
1418      </div>
1419
1420      <footer part="footer">
1421        <slot name="footer"></slot>
1422      </footer>
1423    </div>
1424  </div>
1425</template><template id="drawer-popover-default-template">
1426  <div part="base">
1427    <div part="overlay"></div>
1428
1429    <div part="content">
1430      <header part="header">
1431        <dialog-close-button style="display: contents">
1432          <button type="button" part="close-button">
1433            <span class="sr-only" part="sr-only">Close</span><svg
1434        aria-hidden="true"
1435        focusable="false"
1436        width="10"
1437        class="icon icon-close"
1438        
1439        part="icon"
1440        fill="none"
1441        viewBox="0 0 10 10"
1442      >
1443        <path stroke="currentColor" d="m1 1 8 8m0-8L1 9" />
1444      </svg></button>
1445        </dialog-close-button>
1446
1447        <slot name="header"></slot>
1448      </header>
1449
1450      <div part="body">
1451        <slot></slot>
1452      </div>
1453    </div>
1454  </div>
1455</template><template id="modal-default-template">
1456  <div part="base">
1457    <div part="overlay"></div>
1458
1459    <div part="content">
1460      <slot name="image"></slot>
1461
1462      <div part="body">
1463        <dialog-close-button style="display: contents">
1464          <button type="button" part="close-button">
1465            <span class="sr-only" part="sr-only">Close</span><svg
1466        aria-hidden="true"
1467        focusable="false"
1468        width="10"
1469        class="icon icon-close"
1470        
1471        part="icon"
1472        fill="none"
1473        viewBox="0 0 10 10"
1474      >
1475        <path stroke="currentColor" d="m1 1 8 8m0-8L1 9" />
1476      </svg></button>
1477        </dialog-close-button>
1478
1479        <slot></slot>
1480      </div>
1481    </div>
1482  </div>
1483</template><template id="popover-default-template">
1484  <div part="base">
1485    <div part="overlay"></div>
1486
1487    <div part="content">
1488      <header part="header">
1489        <slot name="header"></slot>
1490
1491        <dialog-close-button style="display: contents">
1492          <button type="button" part="close-button">
1493            <span class="sr-only" part="sr-only">Close</span><svg
1494        aria-hidden="true"
1495        focusable="false"
1496        width="10"
1497        class="icon icon-close"
1498        
1499        part="icon"
1500        fill="none"
1501        viewBox="0 0 10 10"
1502      >
1503        <path stroke="currentColor" d="m1 1 8 8m0-8L1 9" />
1504      </svg></button>
1505        </dialog-close-button>
1506      </header>
1507
1508      <div part="body">
1509        <slot></slot>
1510      </div>
1511    </div>
1512  </div>
1513</template><template id="simple-popover-default-template">
1514  <div part="base">
1515    <div part="overlay"></div>
1516
1517    <div part="content">
1518      <dialog-close-button style="display: contents">
1519        <button type="button" part="close-button overlaid-close-button">
1520          <span class="sr-only" part="sr-only">Close</span><svg
1521        aria-hidden="true"
1522        focusable="false"
1523        width="10"
1524        class="icon icon-close"
1525        
1526        part="icon"
1527        fill="none"
1528        viewBox="0 0 10 10"
1529      >
1530        <path stroke="currentColor" d="m1 1 8 8m0-8L1 9" />
1531      </svg></button>
1532      </dialog-close-button>
1533
1534      <div part="body">
1535        <slot></slot>
1536      </div>
1537    </div>
1538  </div>
1539</template><template id="video-media-default-template">
1540  <slot></slot>
1541
1542  <div part="play-button"><svg
1543        aria-hidden="true"
1544        focusable="false"
1545        width="12"
1546        class="icon icon-play-triangle"
1547        
1548        part="icon"
1549        fill="none"
1550        viewBox="0 0 12 17"
1551      >
1552        <path fill="#ffffff" d="M1.783 15.889A1 1 0 0 1 .2 15.076V1.148A1 1 0 0 1 1.783.335l9.71 6.964a1 1 0 0 1 0 1.626l-9.71 6.964Z"/>
1553      </svg></div>
1554</template><loading-bar class="loading-bar" aria-hidden="true"></loading-bar>
1555
1556    <a href="#main" allow-hash-change class="skip-to-content sr-only">Skip to content</a>
1557
1558    <span id="header-scroll-tracker" style="position: absolute; width: 1px; height: 1px; top: 200px; left: 0;"></span><!-- BEGIN sections: header-group -->
1559<header id="shopify-section-sections--25965682524538__header" class="shopify-section shopify-section-group-header-group shopify-section--header"><style>
1560  :root {
1561    --header-is-sticky: 1;
1562  }
1563
1564  #shopify-section-sections--25965682524538__header {--header-grid: "primary-nav logo secondary-nav" / minmax(0, 1fr) auto minmax(0, 1fr);--header-transparent-header-text-color: 255 255 255;
1565    --header-non-transparent-text-color: 50 30 30;
1566  }
1567
1568  @media screen and (min-width: 1000px) {
1569    #shopify-section-sections--25965682524538__header {--header-grid: "logo primary-nav secondary-nav" / auto minmax(0, 1fr) auto;}
1570  }#shopify-section-sections--25965682524538__header {
1571      position: sticky;
1572      top: 0;
1573    }
1574
1575    .shopify-section--announcement-bar ~ #shopify-section-sections--25965682524538__header {
1576      top: calc(var(--announcement-bar-is-sticky, 0) * var(--announcement-bar-height, 0px));
1577    }</style>
1578
1579<height-observer variable="header">
1580  <x-header
1581    class="header color-scheme color-scheme--scheme-1"
1582    
1583  >
1584      <a href="/" class="header__logo"><p class="header__logo-text heading">Sow &amp; Arrow</p></a>
1585    
1586<nav
1587        class="header__primary-nav "
1588        aria-label="Primary navigation"
1589      >
1590        <button
1591          type="button"
1592          aria-controls="menu-drawer"
1593          class="tap-area md:hidden"
1594        >
1595          <span class="sr-only">Menu</span>
1596
1597          <div class="h-stack gap-3" aria-hidden="true">
1598            <div class="header__hamburger">
1599              <span></span>
1600              <span></span>
1601            </div>
1602
1603            <span class="subheading md-max:hidden">Menu</span>
1604          </div>
1605        </button><a
1606            href="/search"
1607            class="header__search-link tap-area md:hidden"
1608            aria-controls="search-drawer"
1609          >
1610            <span class="sr-only">Search</span><svg
1611        aria-hidden="true"
1612        focusable="false"
1613        width="16"
1614        fill="none"
1615        class="icon icon-search"
1616        
1617        part="icon"
1618        viewBox="0 0 16 16"
1619      >
1620        <path stroke-width="1" stroke="currentColor" d="M1.333 7.333a6 6 0 1 0 12 0 6 6 0 0 0-12 0ZM11.575 11.576l3.09 3.09" />
1621      </svg></a><ul class="contents unstyled-list md-max:hidden">
1622
1623              <li><a
1624                  href="/"
1625                  class="block subheading link-reversed"
1626                  
1627                  
1628                >Home</a></li>
1629
1630              <li><a
1631                  href="/collections/new"
1632                  class="block subheading link-reversed"
1633                  
1634                  
1635                >New</a></li>
1636
1637              <li><a
1638                  href="/collections/shop"
1639                  class="block subheading link-reversed"
1640                  
1641                  
1642                >Shop</a></li>
1643
1644              <li><a
1645                  href="/collections/shop"
1646                  class="block subheading link-reversed"
1647                  
1648                  
1649                    aria-expanded="false" aria-controls="header-menu-dropdown-4"
1650                    data-open-on-hover
1651                >Discover</a><header-dropdown-menu
1652                      class="header__dropdown-menu color-scheme color-scheme--scheme-1"
1653                      id="header-menu-dropdown-4"
1654                    >
1655                      <ul class="unstyled-list"><li>
1656                            <a
1657                              href="/collections/shop"
1658                              class="subheading link-faded-reverse"
1659                              
1660                              
1661                            >All Products</a></li><li>
1662                            <a
1663                              href="/collections/new"
1664                              class="subheading link-faded-reverse"
1665                              
1666                              
1667                            >New Arrivals</a></li><li>
1668                            <a
1669                              href="/collections/best-sellers"
1670                              class="subheading link-faded-reverse"
1671                              
1672                              
1673                            >Best Sellers</a></li><li>
1674                            <a
1675                              href="/collections/supplements"
1676                              class="subheading link-faded-reverse"
1677                              
1678                              
1679                            >Supplements</a></li><li>
1680                            <a
1681                              href="/collections/essentials"
1682                              class="subheading link-faded-reverse"
1683                              
1684                              
1685                            >Store Cupboard Essentials</a></li><li>
1686                            <a
1687                              href="/collections/personal-care"
1688                              class="subheading link-faded-reverse"
1689                              
1690                              
1691                            >Personal Care</a></li><li>
1692                            <a
1693                              href="/collections/bakery"
1694                              class="subheading link-faded-reverse"
1695                              
1696                              
1697                            >Low-Carb Bakery</a></li></ul>
1698                    </header-dropdown-menu></li>
1699
1700              <li><a
1701                  href="/collections/offers"
1702                  class="block subheading link-reversed"
1703                  
1704                  
1705                >Offers</a></li>
1706
1707              <li><a
1708                  href="/blogs/health"
1709                  class="block subheading link-reversed"
1710                  
1711                  
1712                >Blogs</a></li></ul></nav><nav class="header__secondary-nav" aria-label="Secondary navigation">
1713      <ul class="contents unstyled-list"><li class="hidden md:contents">
1714            <div class="h-stack justify-between"><div class="h-stack gap-5"><div class="relative">
1715      <button type="button" class="h-stack gap-2" aria-controls="popover-localization-secondary-nav-sections--25965682524538__header-country" aria-label="Change country or currency" aria-expanded="false"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span class="subheading subheading-xs">
1716            GBP £</span><svg
1717        aria-hidden="true"
1718        focusable="false"
1719        width="10"
1720        class="icon icon-chevron-down"
1721        
1722        part="icon"
1723        viewBox="0 0 10 9"
1724      >
1725        <path fill="none" stroke="currentColor" stroke-width="1.5" d="m1 2.5 4 4 4-4" />
1726      </svg></button>
1727
1728      <x-popover id="popover-localization-secondary-nav-sections--25965682524538__header-country" class="popover color-scheme color-scheme--scheme-1" preferred-alignment="start" >
1729        <p slot="header" class="subheading">Country</p><form method="post" action="/localization" id="localization-form-secondary-nav-sections--25965682524538__header-country" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/products/pure-peanut-crackers-cracked-black-pepper-20g" /><div class="popover__value-list"><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GG" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60" alt="Guernsey" srcset="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Guernsey (GBP £)</span>
1730              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="JE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60" alt="Jersey" srcset="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Jersey (GBP £)</span>
1731              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GB" aria-selected="true"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>United Kingdom (GBP £)</span>
1732              </button></div></form></x-popover>
1733    </div></div></div>
1734
1735            <hr class="header__secondary-nav-separator">
1736          </li><li class="header__account-link md-max:hidden">
1737            <a href="/account" class="tap-area">
1738              <span class="sr-only">Login</span><svg
1739        aria-hidden="true"
1740        focusable="false"
1741        width="16"
1742        fill="none"
1743        class="icon icon-account"
1744        
1745        part="icon"
1746        viewBox="0 0 16 16"
1747      >
1748        <path stroke-width="1" stroke="currentColor" d="M15.418 15A8.003 8.003 0 0 0 .581 15" />
1749        <circle stroke-width="1" cx="8" cy="4.5" r="3" stroke="currentColor" />
1750      </svg></a>
1751          </li><li class="header__news-link" hidden>
1752          <news-modal-button class="contents">
1753            <button class="tap-area" aria-controls="news-modal" aria-expanded="false">
1754              <span class="sr-only">News modal</span><svg
1755        aria-hidden="true"
1756        focusable="false"
1757        width="16"
1758        fill="none"
1759        class="icon icon-bell"
1760        
1761        part="icon"
1762        viewBox="0 0 16 16"
1763      >
1764        <path stroke-width="1" stroke="currentColor" d="M3.333 7v3.333L2 12.5h12l-1.333-2.167V7A4.665 4.665 0 0 0 4.7 3.7 4.667 4.667 0 0 0 3.333 7ZM6.5 15.5h3" />
1765      </svg></button>
1766          </news-modal-button>
1767        </li>
1768
1769        <li class="header__search-link md-max:hidden">
1770          <a href="/search" class="tap-area" aria-controls="search-drawer">
1771            <span class="sr-only">Search</span><svg
1772        aria-hidden="true"
1773        focusable="false"
1774        width="16"
1775        fill="none"
1776        class="icon icon-search"
1777        
1778        part="icon"
1779        viewBox="0 0 16 16"
1780      >
1781        <path stroke-width="1" stroke="currentColor" d="M1.333 7.333a6 6 0 1 0 12 0 6 6 0 0 0-12 0ZM11.575 11.576l3.09 3.09" />
1782      </svg></a>
1783        </li>
1784        <li class="header__search-link">
1785          <a
1786            href="/pages/wishlist"
1787            class="tap-area"
1788          >
1789            <span class="sr-only">Open wishlist</span><svg width="16" class="icon icon-heart" fill="none" viewBox="0 0 16 16">
1790        <path stroke="currentColor" stroke-width="1" d="M7.105 3.105 8 4l.895-.895a3.771 3.771 0 1 1 5.334 5.333l-6.23 6.229-6.228-6.23a3.771 3.771 0 0 1 5.334-5.332Z"/>
1791      </svg></a>
1792        </li>
1793        <li class="header__cart-link relative">
1794          <a
1795            href="/cart"
1796            class="tap-area"
1797            
1798              aria-controls="cart-drawer"
1799            
1800            data-no-instant
1801          >
1802            <span class="sr-only">Cart</span><svg
1803            aria-hidden="true"
1804            focusable="false"
1805            width="16"
1806            fill="none"
1807            class="icon icon-cart"
1808            
1809            part="icon"
1810            viewBox="0 0 16 16"
1811          >
1812            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
1813            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
1814          </svg></a>
1815
1816          <cart-count
1817            class="header__active-dot"hidden
1818            
1819          >
1820            <span class="sr-only">0 items</span>
1821          </cart-count>
1822        </li></ul>
1823    </nav><header-menu-drawer id="menu-drawer" class="menu-drawer color-scheme color-scheme--scheme-1">
1824  <template>
1825    <div part="overlay"></div>
1826
1827    <div part="content">
1828      <slot></slot>
1829    </div>
1830  </template><header-menu-drawer-panel id="menu-drawer-panel-main" data-main-panel class="menu-drawer__panel">
1831    <div class="menu-drawer__panel-body"><ul class="v-stack gap-3 faded-linklist unstyled-list"><li><a href="/" class="h4 w-full">Home</a></li><li><a href="/collections/new" class="h4 w-full">New</a></li><li><a href="/collections/shop" class="h4 w-full">Shop</a></li><li><button type="button" class="h4 text-start w-full" data-panel-toggle aria-controls="menu-drawer-panel-4">
1832                  <div class="h-stack gap-3 sm:gap-5">Discover<svg
1833        aria-hidden="true"
1834        focusable="false"
1835        width="36"
1836        class="shrink-0 capped-icon icon icon-big-arrow-right"
1837        
1838        part="icon"
1839        viewBox="0 0 36 36"
1840      >
1841        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
1842      </svg></div>
1843                </button></li><li><a href="/collections/offers" class="h4 w-full">Offers</a></li><li><a href="/blogs/health" class="h4 w-full">Blogs</a></li></ul><hr class="menu-drawer__separator"><ul class="v-stack gap-3 unstyled-list"><li>
1844              <a href="https://sowandarrow.com/account" class="subheading link-reversed">Your Account</a>
1845            </li><li>
1846              <a href="/pages/climate-commitment" class="subheading link-reversed">Our Impact</a>
1847            </li><li>
1848              <a href="/pages/contact" class="subheading link-reversed">Contact Us</a>
1849            </li></ul></div><div class="menu-drawer__panel-footer"><div class="menu-drawer__footer-item"><ul class="social-media unstyled-list" role="list"><li class="social-media__item branding-colors--facebook">
1850      <a href="https://www.facebook.com/sowandarrow/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg
1851        aria-hidden="true"
1852        focusable="false"
1853        width="24"
1854        class="icon icon-facebook"
1855        
1856        viewBox="0 0 24 24"
1857      >
1858        <path fill="currentColor" fill-rule="evenodd" d="M2 12c0 4.95 3.6 9.05 8.35 9.9l.059-.048-.009-.002V14.8H7.9V12h2.5V9.8c0-2.5 1.6-3.9 3.9-3.9.7 0 1.5.1 2.2.2v2.55h-1.3c-1.2 0-1.5.6-1.5 1.4V12h2.65l-.45 2.8h-2.2v7.05l-.09.016.04.034C18.4 21.05 22 16.95 22 12c0-5.5-4.5-10-10-10S2 6.5 2 12Z" clip-rule="evenodd"/>
1859      </svg></a>
1860    </li><li class="social-media__item branding-colors--instagram">
1861      <a href="https://www.instagram.com/sowandarrow/?hl=en" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg
1862        aria-hidden="true"
1863        focusable="false"
1864        width="24"
1865        class="icon icon-instagram"
1866        
1867        viewBox="0 0 24 24"
1868      >
1869        <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/>
1870      </svg></a>
1871    </li></ul></div><div class="menu-drawer__footer-item lg:hidden">
1872          <div class="h-stack justify-between"><div class="h-stack gap-5"><div class="relative">
1873      <button type="button" class="h-stack gap-2" aria-controls="popover-localization-menu-drawer-sections--25965682524538__header-country" aria-label="Change country or currency" aria-expanded="false"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span class="subheading">
1874            GBP £</span><svg
1875        aria-hidden="true"
1876        focusable="false"
1877        width="10"
1878        class="icon icon-chevron-down"
1879        
1880        part="icon"
1881        viewBox="0 0 10 9"
1882      >
1883        <path fill="none" stroke="currentColor" stroke-width="1.5" d="m1 2.5 4 4 4-4" />
1884      </svg></button>
1885
1886      <x-popover id="popover-localization-menu-drawer-sections--25965682524538__header-country" class="popover color-scheme color-scheme--scheme-1"  preferred-position="above">
1887        <p slot="header" class="subheading">Country</p><form method="post" action="/localization" id="localization-form-menu-drawer-sections--25965682524538__header-country" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/products/pure-peanut-crackers-cracked-black-pepper-20g" /><div class="popover__value-list"><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GG" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60" alt="Guernsey" srcset="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Guernsey (GBP £)</span>
1888              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="JE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60" alt="Jersey" srcset="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Jersey (GBP £)</span>
1889              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GB" aria-selected="true"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>United Kingdom (GBP £)</span>
1890              </button></div></form></x-popover>
1891    </div></div><a href="/account" class="h-stack gap-2.5"><svg
1892        aria-hidden="true"
1893        focusable="false"
1894        width="16"
1895        fill="none"
1896        class="icon icon-account"
1897        
1898        part="icon"
1899        viewBox="0 0 16 16"
1900      >
1901        <path stroke-width="1" stroke="currentColor" d="M15.418 15A8.003 8.003 0 0 0 .581 15" />
1902        <circle stroke-width="1" cx="8" cy="4.5" r="3" stroke="currentColor" />
1903      </svg><span class="subheading">Account</span>
1904              </a></div>
1905        </div></div></header-menu-drawer-panel><header-menu-drawer-panel id="menu-drawer-panel-4" class="menu-drawer__panel color-scheme color-scheme--scheme-1">
1906        <div class="menu-drawer__panel-body">
1907          <div class="v-stack gap-5.5">
1908            <button type="button" class="back-button justify-self-start" data-panel-toggle aria-controls="menu-drawer-panel-main"><svg
1909        aria-hidden="true"
1910        focusable="false"
1911        width="10"
1912        class="icon icon-back-arrow  icon--direction-aware"
1913        
1914        part="icon"
1915        fill="none"
1916        viewBox="0 0 10 11"
1917      >
1918        <path stroke="currentColor" d="M5.5 1 1 5.5m0 0L5.5 10M1 5.5h9" />
1919      </svg><span class="subheading">Back</span>
1920            </button>
1921
1922            <div class="v-stack gap-8"><ul class="v-stack gap-2.5 unstyled-list"><li>
1923                        <a href="/collections/shop" class="link-reversed">All Products</a>
1924                      </li><li>
1925                        <a href="/collections/new" class="link-reversed">New Arrivals</a>
1926                      </li><li>
1927                        <a href="/collections/best-sellers" class="link-reversed">Best Sellers</a>
1928                      </li><li>
1929                        <a href="/collections/supplements" class="link-reversed">Supplements</a>
1930                      </li><li>
1931                        <a href="/collections/essentials" class="link-reversed">Store Cupboard Essentials</a>
1932                      </li><li>
1933                        <a href="/collections/personal-care" class="link-reversed">Personal Care</a>
1934                      </li><li>
1935                        <a href="/collections/bakery" class="link-reversed">Low-Carb Bakery</a>
1936                      </li></ul></div>
1937          </div>
1938        </div>
1939      </header-menu-drawer-panel></header-menu-drawer></x-header>
1940</height-observer>
1941
1942<script>
1943  document.documentElement.style.setProperty('--header-height', `${Math.round(document.getElementById('shopify-section-sections--25965682524538__header').clientHeight)}px`);
1944</script>
1944
1945
1946
1947</header>
1948<!-- END sections: header-group --><!-- BEGIN sections: overlay-group -->
1949<section id="shopify-section-sections--25965682557306__cart-drawer" class="shopify-section shopify-section-group-overlay-group shopify-section--cart-drawer"><link href="//sowandarrow.com/cdn/shop/t/46/assets/cart-v2.css?v=165999826207480415951786684190" rel="stylesheet" type="text/css" media="all" /><cart-drawer
1950    id="cart-drawer"
1951    class="drawer drawer--cart color-scheme color-scheme--scheme-1 cart-drawer--v2"
1952    aria-label="Cart"
1953    handle-editor-events
1954  ><div class="cart-v2-header-tabs" slot="header" role="tablist" aria-label="Cart drawer sections">
1955        <button type="button" role="tab" aria-selected="true" data-cart-v2-tab-index="0"><svg
1956            aria-hidden="true"
1957            focusable="false"
1958            width="14"
1959            fill="none"
1960            class="icon icon-cart"
1961            
1962            part="icon"
1963            viewBox="0 0 16 16"
1964          >
1965            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
1966            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
1967          </svg>Cart (0)
1968        </button>
1969        <button type="button" role="tab" aria-selected="false" data-cart-v2-tab-index="1"><svg width="14" class="icon icon-heart" fill="none" viewBox="0 0 16 16">
1970        <path stroke="currentColor" stroke-width="1" d="M7.105 3.105 8 4l.895-.895a3.771 3.771 0 1 1 5.334 5.333l-6.23 6.229-6.228-6.23a3.771 3.771 0 0 1 5.334-5.332Z"/>
1971      </svg>Wishlist
1972        </button>
1973        <button type="button" role="tab" aria-selected="false" data-cart-v2-tab-index="2"><svg
1974        aria-hidden="true"
1975        focusable="false"
1976        fill="none"
1977        width="14"
1978        class="icon icon-gift"
1979        viewBox="0 0 16 16"
1980      >
1981        <path stroke-width="1" stroke="currentColor" d="M2.5 8V5.5h11V8h-11ZM3.5 14.5V8h9v6.5h-9ZM8 5.5v8.75M8 4a1.875 1.875 0 0 0-3.75 0M11.813 4a1.875 1.875 0 1 0-3.75 0"/>
1982      </svg><span class="tab-pills__dot-indicator">Offers</span>
1983        </button>
1984      </div><x-tabs class="tab-pills">
1985        <button type="button" slot="tab" data-drawer-tab="cart"><span class="subheading">
1986            Cart
1987          </span>
1988        </button>
1989
1990        <div
1991          slot="tabpanel"
1992          
1993        ><div class="empty-state cart-v2-empty-state">
1994          <div class="prose prose-justify-center">
1995            <p class="h5">Your cart is empty</p>
1996<a  class="cart-v2-empty-state__button button button--sm" href="/collections/all" ><button-content class="button__content" up-text="Continue shopping">Continue shopping</button-content></a></div>
1997        </div></div>
1998
1999        <button type="button" slot="tab" data-drawer-tab="wishlist"><span class="subheading">Wishlist</span>
2000        </button>
2001
2002        <div slot="tabpanel" class="cart-wishlist-panel"><style>
2003  /* Fixed media frame overrides */
2004  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper,
2005  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper a,
2006  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper img {
2007    width: 88px !important;
2008    height: 88px !important;
2009    display: flex !important;
2010    align-items: center !important;
2011    justify-content: center !important;
2012    overflow: hidden !important;
2013    object-fit: contain !important;
2014  }
2015
2016  /* Fixed media frame overrides */
2017  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper { width: 88px !important; height: 88px !important; display: flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 0.25rem; }
2018  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media { max-width: 100% !important; max-height: 100% !important; object-fit: contain !important; }
2019  /* Ensure link fills wrapper */
2020  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper > a { display: block !important; width: 100% !important; height: 100% !important; }
2021  /* Remove outer padding on line items */
2022  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item { padding: 0 !important; }
2023  /* Container behaviour matches cart-cross-sell widget */
2024  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer {
2025    display: block;
2026    width: 100%;
2027    min-height: 100%;
2028    margin-top: 0;
2029  }
2030
2031  .cart-wishlist-panel {
2032    min-height: 100%;
2033  }
2034
2035  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer:has(.wishlist-empty, .wishlist-login) {
2036    display: grid;
2037    align-items: center;
2038  }
2039
2040  @keyframes wishlist-fade-in {
2041    from { opacity: 0; transform: translateY(10px); }
2042    to { opacity: 1; transform: translateY(0); }
2043  }
2044  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-suggestion {
2045    background: rgb(var(--background) / .5);
2046    border-radius: 0.5rem;
2047    padding: 1rem;
2048    border: 1px dashed rgb(var(--border-color) / .3);
2049    opacity: 0;
2050    animation: wishlist-fade-in 0.3s ease-out 150ms forwards;
2051  }
2052  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .suggestion-pill {
2053    background: rgb(var(--accent-color));
2054    color: rgb(var(--background));
2055    padding: 0.25rem 0.5rem;
2056    border-radius: 1rem;
2057    font-size: 0.75rem;
2058    font-weight: 600;
2059    display: inline-flex;
2060    align-items: center;
2061    gap: 0.25rem;
2062    margin-bottom: 0.25rem;
2063  }
2064
2065  /* Animate each wishlist item like suggestions */
2066  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item {
2067    display: flex;
2068    align-items: center;
2069    gap: 1rem;
2070    background: rgb(var(--background));
2071    border: 1px solid rgb(var(--border-color) / .2);
2072    border-radius: 0.5rem;
2073    padding: 0.75rem 1rem;
2074    margin-bottom: 1rem;
2075    opacity: 0;
2076    animation: wishlist-fade-in 0.3s ease-out 150ms forwards;
2077  }
2078
2079
2080
2081  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-empty,
2082  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-login {
2083     padding: 1.5rem 0;
2084   }
2085  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-login a.button {
2086     display: inline-block;
2087     width: auto;
2088     margin: 0.5rem auto 0;
2089   }
2090   /* Cart cross-sell button styling */
2091   #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .action-button {
2092     background: rgb(var(--accent-color));
2093     color: rgb(var(--background));
2094     border: none;
2095     padding: 0.5rem 1rem;
2096     border-radius: 0.25rem;
2097     font-size: 0.875rem;
2098     font-weight: 500;
2099     cursor: pointer;
2100     transition: all 0.2s ease;
2101     align-self: flex-start;
2102   }
2103   #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .action-button:hover {
2104     background: rgb(var(--accent-color) / 0.9);
2105   }
2106   #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .action-button:disabled {
2107     opacity: 0.5;
2108     cursor: not-allowed;
2109   }
2110   #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .in-cart-label {
2111     background: rgb(var(--success-color) / .1);
2112     color: rgb(var(--success-color));
2113     padding: 0.5rem 1rem;
2114     border-radius: 0.25rem;
2115     font-size: 0.875rem;
2116     font-weight: 500;
2117     align-self: flex-start;
2118   }
2119#cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-empty,
2120  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .wishlist-login {
2121    padding: 1.5rem 0;
2122    text-align: center;
2123    color: rgb(var(--text-color) / .7);
2124  }
2125  /* Wishlist item layout */
2126    /* Media wrapper */
2127
2128  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__info {
2129    flex: 1;
2130    display: flex;
2131    flex-direction: column;
2132    gap: 0.25rem;
2133  }
2134  /* Enforce fixed media frame */
2135  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media-wrapper {
2136    width: 88px !important;
2137    height: 88px !important;
2138    flex-shrink: 0;
2139    display: flex;
2140    align-items: center;
2141    justify-content: center;
2142    overflow: hidden;
2143    border-radius: 0.25rem;
2144  }
2145  #cart-wishlist-wrapper-sections--25965682557306__cart-drawer .line-item__media {
2146    display: block;
2147    max-width: 100% !important;
2148    max-height: 100% !important;
2149    object-fit: contain !important;
2150  }
2151</style>
2152  
2153    <div id="cart-wishlist-wrapper-sections--25965682557306__cart-drawer" class="cart-wishlist-widget">
2154      <div class="wishlist-login v-stack gap-2 text-center">
2155        <p class="h5">Login to access all your favourites in one place</p>
2156        <p class="body-text text-subdued">Create an account to save your favourite items, build lists, and easily revisit them anytime.</p>
2157        <a href="/account/login" class="button button--primary">Login</a>
2158      </div>
2159    </div>
2160  
2161
2162</div>
2163
2164        <button type="button" slot="tab" data-drawer-tab="offers"><span class="subheading tab-pills__dot-indicator">Offers</span>
2165        </button>
2166
2167        <div slot="tabpanel"><div class="cart-offers"><div class="cart-offers__item cart-offers__item--full" >
2168  <div class="v-stack gap-4"><p class="h6">Offers</p><product-list
2169        class="product-list cart-offers__product-list"
2170        style="--product-list-column-count: 2;"
2171      ><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="pure-peanut-crackers-cracked-black-pepper-20g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><on-sale-badge class="badge badge--on-sale ">Save 20%</on-sale-badge></badge-list><a href="/products/pure-peanut-crackers-cracked-black-pepper-20g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=900 900w" width="996" height="996" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=900 900w" width="996" height="996" loading="lazy" class="product-card__image product-card__image--secondary" fetchpriority="low" sizes="(max-width: 699px) calc(50vw - 24px), 268px" draggable="false"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16190750032250" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2171<input type="hidden" name="id" value="57225090072954">
2172<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2173                <span class="sr-only">Add to cart</span>
2174
2175                <button-content><svg
2176            aria-hidden="true"
2177            focusable="false"
2178            width="16"
2179            fill="none"
2180            class="icon icon-cart"
2181            
2182            part="icon"
2183            viewBox="0 0 16 16"
2184          >
2185            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2186            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2187          </svg></button-content>
2188              </button><input type="hidden" name="product-id" value="16190750032250" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2189    <div class="v-stack gap-2.5 justify-items-start text-start">
2190      <div class="v-stack gap-0.5">
2191        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2192            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Uppernut" class="vendor subheading text-subdued">Uppernut</a><a href="/products/pure-peanut-crackers-cracked-black-pepper-20g" class="product-title subheading "  data-instant>Pure Peanut Crackers - Cracked Black Pepper - 20g</a>
2193            </div></div>
2194        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2195        <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="subheading text-subdued line-through">
2196        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
2197</div></div></div>
2198  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="pure-peanut-crackers-fiery-chilli-flakes-20g-copy"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><on-sale-badge class="badge badge--on-sale ">Save 20%</on-sale-badge></badge-list><a href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g-copy" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=996" alt="Pure Peanut Crackers -Fiery Chilli Flakes - 20g" srcset="//sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935&amp;width=900 900w" width="996" height="996" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"><img src="//sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=996" alt="Pure Peanut Crackers -Fiery Chilli Flakes - 20g" srcset="//sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/FieryChilliFlakesPeanutCrackers.avif?v=1788432934&amp;width=900 900w" width="996" height="996" loading="lazy" class="product-card__image product-card__image--secondary" fetchpriority="low" sizes="(max-width: 699px) calc(50vw - 24px), 268px" draggable="false"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16190764384634" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2198<input type="hidden" name="id" value="57225131164026">
2199<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2200                <span class="sr-only">Add to cart</span>
2201
2202                <button-content><svg
2203            aria-hidden="true"
2204            focusable="false"
2205            width="16"
2206            fill="none"
2207            class="icon icon-cart"
2208            
2209            part="icon"
2210            viewBox="0 0 16 16"
2211          >
2212            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2213            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2214          </svg></button-content>
2215              </button><input type="hidden" name="product-id" value="16190764384634" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2216    <div class="v-stack gap-2.5 justify-items-start text-start">
2217      <div class="v-stack gap-0.5">
2218        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2219            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Uppernut" class="vendor subheading text-subdued">Uppernut</a><a href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g-copy" class="product-title subheading "  data-instant>Pure Peanut Crackers -Fiery Chilli Flakes - 20g</a>
2220            </div></div>
2221        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2222        <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="subheading text-subdued line-through">
2223        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
2224</div></div></div>
2225  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="pure-peanut-crackers-fiery-chilli-flakes-20g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><on-sale-badge class="badge badge--on-sale ">Save 20%</on-sale-badge></badge-list><a href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=996" alt="Pure Peanut Crackers - Original - 20g" srcset="//sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535&amp;width=900 900w" width="996" height="996" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"><img src="//sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=996" alt="Pure Peanut Crackers - Original - 20g" srcset="//sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/HighProteinPeanutCrackers_2.avif?v=1788432535&amp;width=900 900w" width="996" height="996" loading="lazy" class="product-card__image product-card__image--secondary" fetchpriority="low" sizes="(max-width: 699px) calc(50vw - 24px), 268px" draggable="false"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16190754488698" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2225<input type="hidden" name="id" value="57225101803898">
2226<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2227                <span class="sr-only">Add to cart</span>
2228
2229                <button-content><svg
2230            aria-hidden="true"
2231            focusable="false"
2232            width="16"
2233            fill="none"
2234            class="icon icon-cart"
2235            
2236            part="icon"
2237            viewBox="0 0 16 16"
2238          >
2239            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2240            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2241          </svg></button-content>
2242              </button><input type="hidden" name="product-id" value="16190754488698" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2243    <div class="v-stack gap-2.5 justify-items-start text-start">
2244      <div class="v-stack gap-0.5">
2245        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2246            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Uppernut" class="vendor subheading text-subdued">Uppernut</a><a href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g" class="product-title subheading "  data-instant>Pure Peanut Crackers - Original - 20g</a>
2247            </div></div>
2248        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2249        <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="subheading text-subdued line-through">
2250        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
2251</div></div></div>
2252  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="organic-pumpkin-carrot-chilli-soup-copy"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span><on-sale-badge class="badge badge--on-sale ">Save 15%</on-sale-badge></badge-list><a href="/products/organic-pumpkin-carrot-chilli-soup-copy" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=1280" alt="Organic Garden Pea &amp; Vegetable Soup from Mr Organic | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=1000 1000w, //sowandarrow.com/cdn/shop/files/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290&amp;width=1200 1200w" width="1280" height="1280" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16196423844218" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2252<input type="hidden" name="id" value="57248296763770">
2253<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2254                <span class="sr-only">Add to cart</span>
2255
2256                <button-content><svg
2257            aria-hidden="true"
2258            focusable="false"
2259            width="16"
2260            fill="none"
2261            class="icon icon-cart"
2262            
2263            part="icon"
2264            viewBox="0 0 16 16"
2265          >
2266            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2267            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2268          </svg></button-content>
2269              </button><input type="hidden" name="product-id" value="16196423844218" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2270    <div class="v-stack gap-2.5 justify-items-start text-start">
2271      <div class="v-stack gap-0.5">
2272        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2273            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Mr%20Organic" class="vendor subheading text-subdued">Mr Organic</a><a href="/products/organic-pumpkin-carrot-chilli-soup-copy" class="product-title subheading "  data-instant>Organic Garden Pea & Vegetable Soup</a>
2274            </div></div>
2275        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2276        <span class="sr-only">Sale price</span>£2.03</sale-price><compare-at-price class="subheading text-subdued line-through">
2277        <span class="sr-only">Regular price</span>£2.39</compare-at-price></price-list>
2278</div></div></div>
2279  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="organic-tomato-lentil-soup"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span><sold-out-badge   class="badge badge--sold-out ">Sold out</sold-out-badge><on-sale-badge class="badge badge--on-sale ">Save 15%</on-sale-badge></badge-list><a href="/products/organic-tomato-lentil-soup" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289&amp;width=500" alt="Organic Tomato &amp; Lentil Soup from Mr Organic | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289&amp;width=500 500w" width="500" height="500" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a></div><div class="product-card__info  ">
2280    <div class="v-stack gap-2.5 justify-items-start text-start">
2281      <div class="v-stack gap-0.5">
2282        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2283            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Mr%20Organic" class="vendor subheading text-subdued">Mr Organic</a><a href="/products/organic-tomato-lentil-soup" class="product-title subheading "  data-instant>Organic Tomato & Lentil Soup</a>
2284            </div></div>
2285        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2286        <span class="sr-only">Sale price</span>£2.03</sale-price><compare-at-price class="subheading text-subdued line-through">
2287        <span class="sr-only">Regular price</span>£2.39</compare-at-price></price-list>
2288</div></div></div>
2289  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="organic-tomato-lentil-soup-copy"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span><on-sale-badge class="badge badge--on-sale ">Save 15%</on-sale-badge></badge-list><a href="/products/organic-tomato-lentil-soup-copy" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=1280" alt="Organic Pumpkin, Carrot &amp; Chilli Soup from Mr Organic | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=1000 1000w, //sowandarrow.com/cdn/shop/files/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290&amp;width=1200 1200w" width="1280" height="1280" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16196414472570" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="57248216514938">
2290<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2291                <span class="sr-only">Add to cart</span>
2292
2293                <button-content><svg
2294            aria-hidden="true"
2295            focusable="false"
2296            width="16"
2297            fill="none"
2298            class="icon icon-cart"
2299            
2300            part="icon"
2301            viewBox="0 0 16 16"
2302          >
2303            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2304            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2305          </svg></button-content>
2306              </button><input type="hidden" name="product-id" value="16196414472570" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2307    <div class="v-stack gap-2.5 justify-items-start text-start">
2308      <div class="v-stack gap-0.5">
2309        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2310            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Mr%20Organic" class="vendor subheading text-subdued">Mr Organic</a><a href="/products/organic-tomato-lentil-soup-copy" class="product-title subheading "  data-instant>Organic Pumpkin, Carrot & Chilli  Soup</a>
2311            </div></div>
2312        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2313        <span class="sr-only">Sale price</span>£2.03</sale-price><compare-at-price class="subheading text-subdued line-through">
2314        <span class="sr-only">Regular price</span>£2.39</compare-at-price></price-list>
2315</div></div></div>
2316  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="popped-foxnuts-coconut-cacao-25g-copy"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><sold-out-badge   class="badge badge--sold-out ">Sold out</sold-out-badge><on-sale-badge class="badge badge--on-sale ">Save 15%</on-sale-badge></badge-list><a href="/products/popped-foxnuts-coconut-cacao-25g-copy" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=1080" alt="Popped Foxnuts - Chilli Paprika - 25g from Bare Truth | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039&amp;width=1000 1000w" width="1080" height="1080" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"><img src="//sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=1080" alt="Popped Foxnuts - Chilli Paprika - 25g from Bare Truth | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-4849374.webp?v=1787974040&amp;width=1000 1000w" width="1080" height="1080" loading="lazy" class="product-card__image product-card__image--secondary" fetchpriority="low" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" draggable="false"></a></div><div class="product-card__info  ">
2317    <div class="v-stack gap-2.5 justify-items-start text-start">
2318      <div class="v-stack gap-0.5">
2319        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2320            <div class="v-stack gap-0.5">
2320<a href="/collections/vendors?q=Bare%20Truth" class="vendor subheading text-subdued">Bare Truth</a><a href="/products/popped-foxnuts-coconut-cacao-25g-copy" class="product-title subheading "  data-instant>Popped Foxnuts - Chilli Paprika - 25g</a>
2321            </div></div>
2322        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2323        <span class="sr-only">Sale price</span>£1.95</sale-price><compare-at-price class="subheading text-subdued line-through">
2324        <span class="sr-only">Regular price</span>£2.29</compare-at-price></price-list>
2325</div></div></div>
2326  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="popped-foxnuts-cinnamon-vanilla-25g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><on-sale-badge class="badge badge--on-sale ">Save 15%</on-sale-badge></badge-list><a href="/products/popped-foxnuts-cinnamon-vanilla-25g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=1080" alt="Popped Foxnuts - Cinnamon Vanilla - 25g from Bare Truth | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039&amp;width=1000 1000w" width="1080" height="1080" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"><img src="//sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=1080" alt="Popped Foxnuts - Cinnamon Vanilla - 25g from Bare Truth | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-4459179.webp?v=1787974039&amp;width=1000 1000w" width="1080" height="1080" loading="lazy" class="product-card__image product-card__image--secondary" fetchpriority="low" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" draggable="false"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16185729122682" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2326<input type="hidden" name="id" value="57208208261498">
2327<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2328                <span class="sr-only">Add to cart</span>
2329
2330                <button-content><svg
2331            aria-hidden="true"
2332            focusable="false"
2333            width="16"
2334            fill="none"
2335            class="icon icon-cart"
2336            
2337            part="icon"
2338            viewBox="0 0 16 16"
2339          >
2340            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2341            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2342          </svg></button-content>
2343              </button><input type="hidden" name="product-id" value="16185729122682" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2344    <div class="v-stack gap-2.5 justify-items-start text-start">
2345      <div class="v-stack gap-0.5">
2346        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2347            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Bare%20Truth" class="vendor subheading text-subdued">Bare Truth</a><a href="/products/popped-foxnuts-cinnamon-vanilla-25g" class="product-title subheading "  data-instant>Popped Foxnuts - Cinnamon Vanilla - 25g</a>
2348            </div></div>
2349        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2350        <span class="sr-only">Sale price</span>£1.95</sale-price><compare-at-price class="subheading text-subdued line-through">
2351        <span class="sr-only">Regular price</span>£2.29</compare-at-price></price-list>
2352</div></div></div>
2353  </div></product-card></product-list>
2354<a  class="self-start button button--sm button--outline" style="--button-text-color: var(--button-background-primary);" href="/collections/offers" ><button-content class="button__content" up-text="View All Offers">View All Offers</button-content></a></div>
2355</div>
2356<div class="cart-offers__item cart-offers__item--full" >
2357  <div class="v-stack gap-4"><p class="h6">New Arrivals</p><product-list
2358        class="product-list cart-offers__product-list"
2359        style="--product-list-column-count: 2;"
2360      ><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="grain-free-low-carb-original-toasted-muesli-250g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span><on-sale-badge class="badge badge--on-sale ">Save 10%</on-sale-badge></badge-list><a href="/products/grain-free-low-carb-original-toasted-muesli-250g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=990" alt="Grain-free, low carb - Original Toasted Muesli - 250g from Fudi | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191&amp;width=900 900w" width="990" height="990" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16210802966906" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2360<input type="hidden" name="id" value="57297137435002">
2361<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2362                <span class="sr-only">Add to cart</span>
2363
2364                <button-content><svg
2365            aria-hidden="true"
2366            focusable="false"
2367            width="16"
2368            fill="none"
2369            class="icon icon-cart"
2370            
2371            part="icon"
2372            viewBox="0 0 16 16"
2373          >
2374            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2375            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2376          </svg></button-content>
2377              </button><input type="hidden" name="product-id" value="16210802966906" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2378    <div class="v-stack gap-2.5 justify-items-start text-start">
2379      <div class="v-stack gap-0.5">
2380        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2381            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Fudi" class="vendor subheading text-subdued">Fudi</a><a href="/products/grain-free-low-carb-original-toasted-muesli-250g" class="product-title subheading "  data-instant>Grain-free, low carb - Original Toasted Muesli - 250g</a>
2382            </div></div>
2383        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-on-sale">
2384        <span class="sr-only">Sale price</span>£6.75</sale-price><compare-at-price class="subheading text-subdued line-through">
2385        <span class="sr-only">Regular price</span>£7.49</compare-at-price></price-list>
2386</div></div></div>
2387  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="montezuma-dark-cherry-and-pistachio-90g-copy"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span></badge-list><a href="/products/montezuma-dark-cherry-and-pistachio-90g-copy" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=1445" alt="Montezuma&#39;s Milk Chocolate Gingerbread - 90g from Montezuma&#39;s | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=1000 1000w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=1200 1200w, //sowandarrow.com/cdn/shop/files/montezumas-milk-chocolate-gingerbread-90g-from-montezumas-available-at-sow-arrow-3963050.webp?v=1790211191&amp;width=1400 1400w" width="1445" height="1445" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16207781626234" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2387<input type="hidden" name="id" value="57281611334010">
2388<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2389                <span class="sr-only">Add to cart</span>
2390
2391                <button-content><svg
2392            aria-hidden="true"
2393            focusable="false"
2394            width="16"
2395            fill="none"
2396            class="icon icon-cart"
2397            
2398            part="icon"
2399            viewBox="0 0 16 16"
2400          >
2401            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2402            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2403          </svg></button-content>
2404              </button><input type="hidden" name="product-id" value="16207781626234" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2405    <div class="v-stack gap-2.5 justify-items-start text-start">
2406      <div class="v-stack gap-0.5">
2407        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2408            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Montezuma%27s" class="vendor subheading text-subdued">Montezuma's</a><a href="/products/montezuma-dark-cherry-and-pistachio-90g-copy" class="product-title subheading "  data-instant>Montezuma's Milk Chocolate Gingerbread - 90g</a>
2409            </div></div>
2410        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-subdued">
2411        <span class="sr-only">Sale price</span>£4.49</sale-price></price-list>
2412</div></div></div>
2413  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="montezuma-dark-cherry-and-pistachio-90g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span></badge-list><a href="/products/montezuma-dark-cherry-and-pistachio-90g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=1445" alt="Montezuma&#39;s - Dark Cherry and Pistachio - 90g from Montezuma&#39;s | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=1000 1000w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=1200 1200w, //sowandarrow.com/cdn/shop/files/montezumas-dark-cherry-and-pistachio-90g-from-montezumas-available-at-sow-arrow-6115485.webp?v=1790211189&amp;width=1400 1400w" width="1445" height="1445" sizes="(max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16207780905338" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2413<input type="hidden" name="id" value="57281607500154">
2414<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2415                <span class="sr-only">Add to cart</span>
2416
2417                <button-content><svg
2418            aria-hidden="true"
2419            focusable="false"
2420            width="16"
2421            fill="none"
2422            class="icon icon-cart"
2423            
2424            part="icon"
2425            viewBox="0 0 16 16"
2426          >
2427            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2428            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2429          </svg></button-content>
2430              </button><input type="hidden" name="product-id" value="16207780905338" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2431    <div class="v-stack gap-2.5 justify-items-start text-start">
2432      <div class="v-stack gap-0.5">
2433        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2434            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Montezuma%27s" class="vendor subheading text-subdued">Montezuma's</a><a href="/products/montezuma-dark-cherry-and-pistachio-90g" class="product-title subheading "  data-instant>Montezuma's - Dark Cherry and Pistachio - 90g</a>
2435            </div></div>
2436        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-subdued">
2437        <span class="sr-only">Sale price</span>£4.49</sale-price></price-list>
2438</div></div></div>
2439  </div></product-card><product-card class="product-card product-card--bordered product-card--info-outside color-scheme color-scheme--scheme-1"  handle="montezuma-blonde-cinnamon-90g"><div class="product-card__figure"><badge-list class="badge-list badge-list--column align-start place-self-start"><span class="badge badge--custom badge--new ">New</span></badge-list><a href="/products/montezuma-blonde-cinnamon-90g" class="product-card__media" data-instant><img src="//sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=1445" alt="Montezuma&#39;s - Blonde Cinnamon - 90g from Montezuma&#39;s | Available at Sow &amp; Arrow" srcset="//sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=800 800w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=900 900w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=1000 1000w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=1200 1200w, //sowandarrow.com/cdn/shop/files/montezumas-blonde-cinnamon-90g-from-montezumas-available-at-sow-arrow-6315176.webp?v=1790211192&amp;width=1400 1400w" width="1445" height="1445" loading="lazy" sizes="auto, (max-width: 699px) calc(50vw - 24px), 268px" class="product-card__image product-card__image--primary size-full object-cover aspect-square"></a><div class="product-card__quick-buy  "><product-form><form method="post" action="/cart/add" id="product_form_16207780348282" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" />
2439<input type="hidden" name="id" value="57281606582650">
2440<button type="submit"  class="touch:hidden button w-full" style="--button-background: 250 244 240;--button-text-color: 50 30 30;" ><button-content class="button__content" up-text="Add to cart">Add to cart</button-content></button><button type="submit" class="block tap-area no-touch:hidden">
2441                <span class="sr-only">Add to cart</span>
2442
2443                <button-content><svg
2444            aria-hidden="true"
2445            focusable="false"
2446            width="16"
2447            fill="none"
2448            class="icon icon-cart"
2449            
2450            part="icon"
2451            viewBox="0 0 16 16"
2452          >
2453            <path stroke-width="1" stroke="currentColor" d="m1.5 14.5 1-12h11l1 12h-13Z"/>
2454            <path stroke-width="1" stroke="currentColor" d="M5.5 5c.238.833 1.071 2.5 2.5 2.5s2.262-1.667 2.5-2.5"/>
2455          </svg></button-content>
2456              </button><input type="hidden" name="product-id" value="16207780348282" /><input type="hidden" name="section-id" value="sections--25965682557306__cart-drawer" /></form></product-form></div></div><div class="product-card__info  ">
2457    <div class="v-stack gap-2.5 justify-items-start text-start">
2458      <div class="v-stack gap-0.5">
2459        <div class="v-stack gap-2.5"><div class="v-stack gap-1">
2460            <div class="v-stack gap-0.5"><a href="/collections/vendors?q=Montezuma%27s" class="vendor subheading text-subdued">Montezuma's</a><a href="/products/montezuma-blonde-cinnamon-90g" class="product-title subheading "  data-instant>Montezuma's - Blonde Cinnamon - 90g</a>
2461            </div></div>
2462        </div><div class="v-stack gap-1"><price-list class="price-list "><sale-price class="subheading text-subdued">
2463        <span class="sr-only">Sale price</span>£4.49</sale-price></price-list>
2464</div></div></div>
2465  </div></product-card></product-list>
2466<a  class="self-start button button--sm button--outline" style="--button-text-color: var(--button-background-primary);" href="/collections/new" ><button-content class="button__content" up-text="View All">View All</button-content></a></div>
2467</div>
2468</div></div>
2469      </x-tabs><style>
2470        /* Drawer layout */
2471        .drawer--cart .drawer__body {
2472          display:flex;
2473          flex-direction:column;
2474        }
2475
2476        /* Cross-sell wrapper */
2477        .cart-cross-sell-widget{
2478          display:block;
2479          margin-top:auto;
2480          will-change:opacity,transform;
2481          contain:layout style;
2482          overflow:visible;
2483        }
2484
2485        /* Hidden state: keep in flow so JS can animate, just make it invisible */
2486        .cart-cross-sell-widget[hidden]{
2487          display:none!important;
2488          opacity:0!important;
2489          pointer-events:none;
2490          transform:translateY(10px);
2491        }
2492      </style>
2493
2494      <style>
2495  /* header → carousel spacing halved */
2496  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper > .h-stack {
2497    margin-bottom: 0.75rem;
2498    margin-top: 0.75rem;
2499  }
2500  /* smaller product card */
2501  .product-cross-sell {
2502    border: 1px solid #dcd7d3;
2503    border-radius: 4px;
2504    background: #fff;
2505    display: flex;
2506    align-items: center;
2507    gap: 0.5rem;
2508    padding: 0.75rem;
2509    margin-bottom: 0.5rem;
2510  }
2511  .product-cross-sell img {
2512    max-width: 80px;
2513    max-height: 80px;
2514    border-radius: 4px;
2515    object-fit: cover;
2516  }
2517  /* Price + stars container */
2518  .product-cross-sell__price-wrapper {
2519    display: flex;
2520    align-items: center;
2521    gap: 0.75rem;
2522  }
2523  .product-cross-sell__price {
2524    font-size: .95rem;
2525    color: rgb(var(--text-color) / .6);
2526  }
2527  .star-rating {
2528    display: flex;
2529    align-items: center;
2530  }
2531  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .star-rating span {
2532    margin-left: 0.25rem;
2533    font-size: .85rem;
2534    color: rgb(var(--text-color)/.6);
2535    line-height: 1;
2536  }
2537  .product-cross-sell__form button {
2538    align-self: flex-start;
2539  }
2540  /* loading state */
2541  .cross-sell-loading {
2542    padding: 1rem;
2543    text-align: center;
2544  }
2545  .cross-sell-loading::before {
2546    content: '';
2547    display: block;
2548    margin: 0 auto 0.5rem;
2549    width: 20px;
2550    height: 20px;
2551    border: 3px solid #dcd7d3;
2552    border-top-color: transparent;
2553    border-radius: 50%;
2554    animation: spin 1s linear infinite;
2555  }
2556  @keyframes spin { to { transform: rotate(360deg) } }
2557  /* Accordion & nav arrows */
2558  .accordion__summary { display: flex; align-items: center; }
2559  .accordion__summary > span:first-child { margin-right: .5rem; }
2560  .accordion__summary .h-stack { margin-left: auto; display: flex; gap: 5px; }
2561  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .accordion__disclosure:not([open]) .circle-button {
2562    opacity: 0 !important; pointer-events: none;
2563  }
2564  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-start,
2565  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-end {
2566    opacity: 0.6 !important; cursor: default !important;
2567    pointer-events: none !important;
2568  }
2569  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-start:hover,
2570  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-end:hover,
2571  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-start:focus,
2572  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-end:focus,
2573  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-start:active,
2574  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-end:active {
2575    background: transparent !important;
2576    box-shadow: none !important;
2577    transform: none !important;
2578    border-color: inherit !important;
2579    color: inherit !important;
2580  }
2581  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-start svg,
2582  #cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper .circle-button.at-end svg {
2583    fill: currentColor !important;
2584  }
2585</style>
2586
2587<div
2588  id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper"
2589  class="cart-cross-sell-widget cart-cross-sell-widget--v2"
2590  hidden
2591  data-rebuy-widget-id="YOUR_DEFAULT_CART_WIDGET_ID"
2592><div id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-container">
2593      <div class="cart-cross-sell-placeholder cross-sell-loading">Loading recommendations…</div>
2594      <div class="cart-v2-recommendations" data-cart-v2-recommendations hidden>
2595        <section class="cart-v2-recommendation-section" aria-labelledby="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-title">
2596          <div class="cart-v2-recommendation-heading h-stack justify-between gap-3">
2597            <p id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-title" class="h6">Community favourites</p>
2598            <div class="h-stack gap-2 hidden md:flex">
2599              <button id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-prev" class="circle-button" type="button" aria-controls="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-carousel">
2600                <span class="sr-only">Previous</span><svg
2601        aria-hidden="true"
2602        focusable="false"
2603        width="9"
2604        class="icon icon-big-arrow-left  icon--direction-aware"
2605        
2606        part="icon"
2607        viewBox="0 0 36 36"
2608      >
2609        <path fill="none" stroke="currentColor" stroke-width="2" d="M35 18H3M19.5 34.5 3 18 19.5 1.5"/>
2610      </svg></button>
2611              <button id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-next" class="circle-button" type="button" aria-controls="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-carousel">
2612                <span class="sr-only">Next</span><svg
2613        aria-hidden="true"
2614        focusable="false"
2615        width="9"
2616        class="icon icon-big-arrow-right  icon--direction-aware"
2617        
2618        part="icon"
2619        viewBox="0 0 36 36"
2620      >
2621        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
2622      </svg></button>
2623            </div>
2624          </div>
2625          <div id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community"></div>
2626        </section>
2627
2628        <section class="cart-v2-recommendation-section" aria-labelledby="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-more-title">
2629          <div class="cart-v2-recommendation-heading h-stack justify-between gap-3">
2630            <p id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-more-title" class="h6">You may also like</p>
2631            <div class="h-stack gap-2 hidden md:flex">
2632              <button id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-prev" class="circle-button" type="button" aria-controls="cart-cross-sell-carousel-sections--25965682557306__cart-drawer">
2633                <span class="sr-only">Previous</span><svg
2634        aria-hidden="true"
2635        focusable="false"
2636        width="9"
2637        class="icon icon-big-arrow-left  icon--direction-aware"
2638        
2639        part="icon"
2640        viewBox="0 0 36 36"
2641      >
2642        <path fill="none" stroke="currentColor" stroke-width="2" d="M35 18H3M19.5 34.5 3 18 19.5 1.5"/>
2643      </svg></button>
2644              <button id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-next" class="circle-button" type="button" aria-controls="cart-cross-sell-carousel-sections--25965682557306__cart-drawer">
2645                <span class="sr-only">Next</span><svg
2646        aria-hidden="true"
2647        focusable="false"
2648        width="9"
2649        class="icon icon-big-arrow-right  icon--direction-aware"
2650        
2651        part="icon"
2652        viewBox="0 0 36 36"
2653      >
2654        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
2655      </svg></button>
2656            </div>
2657          </div>
2658          <div id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-strip"></div>
2659        </section>
2660      </div>
2661    </div></div>
2662
2663<template id="cart-cross-sell-carousel-sections--25965682557306__cart-drawer-template">
2664  <div class="product-cross-sell snap-start">
2665    <a href="#" data-instant class="product-cross-sell__link">
2666      <img src="" alt="" width="80" height="80">
2667    </a>
2668    <div class="v-stack gap-1">
2669      <a href="#" class="subheading" data-instant></a>
2670      <div class="product-cross-sell__price-wrapper">
2671        <span class="product-cross-sell__price"></span>
2672        <span data-loox-rating class="star-rating"></span>
2673      </div>
2674      <div class="product-cross-sell__form">
2675        <button type="button" class="link subheading subheading-xs action-button" aria-controls=""></button>
2676      </div>
2677      <quick-buy-modal
2678        id=""
2679        product-url=""
2680        class="modal modal--quick-buy color-scheme color-scheme--scheme-1"
2681      ></quick-buy-modal>
2682    </div>
2683  </div>
2684</template>
2685
2686<script
2687  data-cross-sell="sections--25965682557306__cart-drawer"
2688>
2689(function () {
2690  /* avoid double-instantiation */
2691  const KEY = '__crossSell_sections--25965682557306__cart-drawer';
2692  if (window[KEY]) { window[KEY].init(); return; }
2693
2694  /* ============================================================
2695     Core
2696  ============================================================ */
2697  let inCartIds = new Set();
2698  let isLoading = false;
2699  let navigationResizeObservers = [];
2700  const cartV2 = true;
2701  const liquidCardRequests = new Map();
2702
2703  async function fetchLiquidProductCards(recs) {
2704    const productIds = Array.from(new Set(recs.map((rec) => String(rec.productId || rec.id || '')).filter(Boolean)));
2705    if (!productIds.length) return [];
2706
2707    const requestKey = productIds.join(',');
2708    if (!liquidCardRequests.has(requestKey)) {
2709      liquidCardRequests.set(requestKey, (async () => {
2710        const query = productIds.map((id) => `id:${id}`).join(' OR ');
2711        const requestUrl = new URL(`${window.Shopify.routes.root}search`, window.location.origin);
2712        requestUrl.searchParams.set('type', 'product');
2713        requestUrl.searchParams.set('q', query);
2714        requestUrl.searchParams.set('section_id', 'cart-recommendation-card-renderer');
2715
2716        const response = await fetch(`${requestUrl.pathname}${requestUrl.search}`, {
2717          headers: { Accept: 'text/html' },
2718          priority: 'low'
2719        });
2720        if (!response.ok) throw new Error(`Liquid card request returned ${response.status}`);
2721
2722        const html = await response.text();
2723        const parsedDocument = new DOMParser().parseFromString(html, 'text/html');
2724        const cardContainer = parsedDocument.querySelector('[data-cart-v2-liquid-cards]');
2725        if (!cardContainer) throw new Error('Liquid card response is missing its container');
2726
2727        return Array.from(cardContainer.querySelectorAll(':scope > [data-cart-v2-liquid-card]'));
2728      })());
2729    }
2730
2731    const cards = await liquidCardRequests.get(requestKey);
2732    const cardsByProductId = new Map(
2733      cards.map((card) => [String(card.dataset.productId || ''), card])
2734    );
2735
2736    return recs
2737      .map((rec) => {
2738        const card = cardsByProductId.get(String(rec.productId || rec.id || ''));
2739        return card ? { rec, card: document.importNode(card, true) } : null;
2740      })
2741      .filter(Boolean);
2742  }
2743
2744  function toCardRecommendation(rec) {
2745    const selectedVariantId = rec?.selected_or_first_available_variant_id || rec?.variants?.[0]?.id || null;
2746    const variantCount = Number(rec?.variant_count || rec?.variants?.length || 0);
2747    const available = typeof rec?.available === 'boolean' ? rec.available : (rec?.variants?.[0]?.available ?? true);
2748    const priceCents = Number.isFinite(Number(rec?.price_min)) ? Number(rec.price_min) : rec?.variants?.[0]?.price != null ? Math.round(parseFloat(rec.variants[0].price) * 100) : null;
2749
2750    return {
2751      id: rec?.id ?? rec?.product_id ?? null,
2752      productId: rec?.product_id ?? rec?.id ?? null,
2753      title: rec?.title || '',
2754      vendor: rec?.vendor || '',
2755      description: rec?.short_description || rec?.description || rec?.body_html || '',
2756      url: rec?.url || rec?.link || (rec?.handle ? `/products/${rec.handle}` : null),
2757      image: {
2758        src: rec?.featured_image?.url || rec?.image?.src || rec?.image?.url || rec?.image || rec?.images?.[0]?.src || rec?.images?.[0]?.url || '',
2759        alt: rec?.featured_image?.alt || rec?.image?.alt || rec?.title || ''
2760      },
2761      rating: rec?.metafields?.loox?.avg_rating ?? null,
2762      variantId: selectedVariantId,
2763      variantCount,
2764      available,
2765      priceCents,
2766      reason: rec?.reason || null
2767    };
2768  }
2769
2770  function getRecSessionId() {
2771    let id;
2772    try { id = sessionStorage.getItem('rec_session_id'); } catch {}
2773    if (!id) {
2774      id = window.__recSessionId || (crypto.randomUUID ? crypto.randomUUID() : `rec-session-${Date.now()}`);
2775      try { sessionStorage.setItem('rec_session_id', id); } catch {}
2776    }
2777    window.__recSessionId = id;
2778    return id;
2779  }
2780
2781  function sendRecEvent(payload) {
2782    const body = JSON.stringify({
2783      ...payload,
2784      session_id: getRecSessionId(),
2785      page_path: window.location.pathname,
2786      timestamp: new Date().toISOString()
2787    });
2788
2789    const endpoint = 'https://api.sowandarrow.com/recommendations';
2790    const pingUrl = `${endpoint}?rx=1&d=${encodeURIComponent(body)}`;
2791    const img = new Image();
2792    window.__recoEventPings = window.__recoEventPings || [];
2793    window.__recoEventPings.push(img);
2794    img.onload = img.onerror = () => {
2795      window.__recoEventPings = window.__recoEventPings.filter((x) => x !== img);
2796    };
2797    img.src = pingUrl;
2798  }
2799
2800  const sentImpressions = new Set();
2801  function observeRecImpression(el, payload) {
2802    if (!el) return;
2803    const key = [
2804      payload.placement || 'unknown',
2805      payload.request_uuid || 'no-request',
2806      payload.variant_id || payload.product_id || 'no-product'
2807    ].join('|');
2808    if (sentImpressions.has(key)) return;
2809
2810    const observer = new IntersectionObserver((entries, obs) => {
2811      if (!entries.some(entry => entry.isIntersecting && entry.intersectionRatio >= 0.35)) return;
2812      sentImpressions.add(key);
2813      sendRecEvent({ ...payload, event_type: 'recommendation_impression' });
2814      obs.disconnect();
2815    }, { threshold: [0.35] });
2816
2817    observer.observe(el);
2818  }
2819
2820  const api = {
2821    async init () {
2822      if (isLoading) return;
2823
2824      const container = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-container');
2825      if (!container) { console.warn('[Cross-sell] container not found'); return; }
2826
2827      const cartDrawer = document.getElementById('cart-drawer');
2828      if (cartDrawer && !cartDrawer.hasAttribute('open')) {
2829        return;
2830      }
2831
2832      const tabs = document.querySelector('x-tabs.tab-pills');
2833      if (tabs && tabs.getAttribute('selected-index') !== '0') {
2834        return;
2835      }
2836
2837      isLoading = true;
2838      try {
2839      navigationResizeObservers.forEach(observer => observer.disconnect());
2840      navigationResizeObservers = [];
2841
2842      /* 0 – measure one template card off-screen to lock spinner height */
2843      const probe = document.createElement('div');
2844      probe.style.cssText = 'position:absolute;visibility:hidden;pointer-events:none';
2845      probe.appendChild(
2846        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-template').content.cloneNode(true)
2847      );
2848      document.body.appendChild(probe);
2849      const phHeight = probe.offsetHeight + 8;
2850      probe.remove();
2851
2852      /* 1 – placeholder */
2853      if (cartV2) {
2854        const placeholder = container.querySelector('.cross-sell-loading');
2855        if (placeholder) placeholder.style.height = `${phHeight}px`;
2856      } else {
2857        container.innerHTML = `
2858          <div class="cart-cross-sell-placeholder cross-sell-loading"
2859               style="height:${phHeight}px">
2860            Loading recommendations…
2861          </div>`;
2862      }
2863
2864      /* 2 – get cart contents */
2865      let cart = { items: [], item_count: 0, items_subtotal_price: 0 };
2866      try {
2867        cart = await fetch('/cart.js').then(r => r.json());
2868      } catch (err) { console.warn('[Cross-sell] /cart.js failed', err); }
2869      const customerProfile = null;
2870
2871      const inCartPids = new Set(cart.items.map(item => String(item.product_id)));
2872      const inCartVids = new Set(cart.items.map(item => String(item.variant_id)));
2873      inCartIds.clear();
2874      inCartIds = new Set([...inCartPids, ...inCartVids]);
2875
2876      /* 3 – fetch recommendations */
2877        let recs = [];
2878        let requestUuid = null;
2879        let sourceProductIdsForEvent = '';
2880        try {
2881          const params  = new URLSearchParams();
2882          params.set('type', 'cart');
2883      params.set('session_id', getRecSessionId());
2884
2885          const contextProductIds = Array.from(new Set((cart.items || []).map((item) => String(item.product_id)).filter(Boolean)));
2886          if (contextProductIds.length > 0) {
2887            const productContext = contextProductIds.join(',');
2888            params.set('shopify_product_ids', productContext);
2889            sourceProductIdsForEvent = productContext;
2890          } else {
2891            sourceProductIdsForEvent = '';
2892          }
2893
2894          
2895
2896          if (customerProfile) {
2897            params.set('customer_profile', typeof customerProfile === 'string' ? customerProfile : JSON.stringify(customerProfile));
2898          }
2899
2900          params.set('metafields', 'yes');
2901          params.set('variant_metafields', 'true');
2902          params.set('format', 'pretty');
2903          /* Ask for a few spare candidates because Shopify search can omit a
2904             product that the recommendation service still knows about. */
2905          params.set('limit', '16');
2906          params.set('time', new Date().toISOString());
2907          requestUuid = crypto.randomUUID ? crypto.randomUUID() : `uuid-${Date.now()}`;
2908          params.set('uuid', requestUuid);
2909          params.set('url', window.location.pathname);
2910          const localeCountry = ((navigator.language || '').split('-').pop() || '').toUpperCase();
2911          const cc = /^[A-Z]{2}$/.test(localeCountry) ? localeCountry : "GB";
2912          if (cc) params.set('country_code', cc);
2913
2914          console.log('[Cart]', `https://api.sowandarrow.com/rec
2914ommendations?${params}`);
2915          const data = await fetch(`https://api.sowandarrow.com/recommendations?${params}`,{credentials:'include'})
2916                          .then(r => r.json());
2917
2918          const responseRequestUuid = data.request_uuid || requestUuid;
2919          const source = Array.isArray(data.products) ? data.products : [];
2920          recs = source
2921            .map(toCardRecommendation)
2922            .filter((rec) => rec.url && rec.variantId)
2923            .filter((rec) => rec.available)
2924            .filter((rec) => !inCartIds.has(String(rec.productId)) && !inCartIds.has(String(rec.variantId)))
2925            .map((rec) => ({ ...rec, __request_uuid: responseRequestUuid }))
2926            .slice(0, 16);
2927
2928          /* A narrow cart context can legitimately return only one or two
2929             matches. Backfill it with the engine's context-free cart picks so
2930             both native Liquid recommendation rows remain useful. */
2931          if (recs.length < 16 && contextProductIds.length > 0) {
2932            const fallbackParams = new URLSearchParams(params);
2933            fallbackParams.delete('shopify_product_ids');
2934            fallbackParams.set('limit', '20');
2935            const fallbackRequestUuid = crypto.randomUUID ? crypto.randomUUID() : `uuid-${Date.now()}-fallback`;
2936            fallbackParams.set('uuid', fallbackRequestUuid);
2937
2938            const fallbackData = await fetch(`https://api.sowandarrow.com/rec
2938ommendations?${fallbackParams}`, { credentials: 'include' })
2939              .then(r => r.json());
2940            const fallbackResponseUuid = fallbackData.request_uuid || fallbackRequestUuid;
2941            const seenProductIds = new Set(recs.map(rec => String(rec.productId)));
2942
2943            const fallbackRecs = (Array.isArray(fallbackData.products) ? fallbackData.products : [])
2944              .map(toCardRecommendation)
2945              .filter((rec) => rec.url && rec.variantId)
2946              .filter((rec) => rec.available)
2947              .filter((rec) => !inCartIds.has(String(rec.productId)) && !inCartIds.has(String(rec.variantId)))
2948              .filter((rec) => {
2949                const productId = String(rec.productId);
2950                if (seenProductIds.has(productId)) return false;
2951                seenProductIds.add(productId);
2952                return true;
2953              })
2954              .map((rec) => ({ ...rec, __request_uuid: fallbackResponseUuid }));
2955
2956            recs = [...recs, ...fallbackRecs].slice(0, 16);
2957          }
2958        } catch (err) {
2959          console.error('[Cart] rec fetch error', err);
2960        }
2961
2962      if (!recs.length) {
2963        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper')?.remove();
2964        isLoading = false;
2965        return;
2966      }
2967
2968      /* 4 – build recommendation cards */
2969      const tplHTML = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-template').innerHTML;
2970
2971      const buildCard = async (rec, cardClass = '') => {
2972        const card = document.createRange()
2973                         .createContextualFragment(tplHTML)
2974                         .firstElementChild;
2975        if (cardClass) card.classList.add(cardClass);
2976
2977        /* link / image / title / price */
2978        const imageLink = card.querySelector('a.product-cross-sell__link');
2979        imageLink.href = rec.url;
2980        const img = card.querySelector('img');
2981        img.src = rec.image.src; img.alt = rec.image.alt;
2982
2983        const titleEl = card.querySelector('a.subheading');
2984        titleEl.href = rec.url; titleEl.textContent = rec.title;
2985
2986        const vendorEl = card.querySelector('.product-cross-sell__vendor');
2987        if (vendorEl) {
2988          vendorEl.textContent = rec.vendor;
2989          vendorEl.hidden = !rec.vendor;
2990        }
2991
2992        const trackClick = () => {
2993          sendRecEvent({
2994            event_type: 'recommendation_click',
2995            recommendation_type: rec.reason || 'cart',
2996            placement: 'cart-cross-sell',
2997            request_uuid: rec.__request_uuid || requestUuid,
2998            source_product_ids: sourceProductIdsForEvent,
2999            product_id: rec.id,
3000            variant_id: rec.variantId,
3001            url: rec.url,
3002            customer_id: null
3003          });
3004          if (window.__storeRecContext) {
3005            window.__storeRecContext({
3006              product_id: rec.id,
3007              variant_id: rec.variantId,
3008              recommendation_type: rec.reason || 'cart',
3009              placement: 'cart-cross-sell',
3010              request_uuid: rec.__request_uuid || requestUuid,
3011              source_product_ids: sourceProductIdsForEvent,
3012              customer_id: null
3013            });
3014          }
3015        };
3016        imageLink.addEventListener('click', trackClick);
3017        titleEl.addEventListener('click', trackClick);
3018
3019        if (rec.priceCents != null) {
3020          card.querySelector('.product-cross-sell__price').textContent = Shopify.formatMoney(rec.priceCents, Shopify.money_format);
3021        }
3022
3023        /* rating */
3024        const raw = parseFloat(rec.rating || NaN);
3025        const rEl  = card.querySelector('[data-loox-rating]');
3026        if (!isNaN(raw) && raw > 0) {
3027          rEl.innerHTML =
3028            `<svg
3029        aria-hidden="true"
3030        focusable="false"
3031        width="16"
3032        class="icon icon-star-rating"
3033        
3034        part="icon"
3035        viewBox="0 0 13 13"
3036      >
3037        <path fill="#f6a429" d="m6.5 0 1.607 4.623 4.893.1-3.9 2.956 1.417 4.685L6.5 9.568l-4.017 2.796L3.9 7.679 0 4.723l4.893-.1L6.5 0Z"/>
3038      </svg><span>${raw.toFixed(1)}</span>`;
3039        } else {
3040          rEl.remove();
3041        }
3042
3043        /* stock/options check */
3044        const variantId = rec.variantId;
3045        let inStock = rec.available, needsOpt = rec.variantCount > 1;
3046        let productData = null;
3047        try {
3048          productData = await fetch(`${rec.url.replace(/\/$/, '')}.js`).then(r => r.json());
3049          const m  = productData.variants?.find(v => String(v.id) === String(variantId));
3050          inStock  = m?.available ?? true;
3051          needsOpt = (productData.variants?.length > 1) || (productData.selling_plan_groups?.length > 0);
3052        } catch {}
3053
3054        const descriptionEl = card.querySelector('.product-cross-sell__description');
3055        if (descriptionEl && cardClass === 'cart-v2-community-favourite') {
3056          const descriptionSource = rec.description || productData?.description || '';
3057          const descriptionProbe = document.createElement('div');
3058          descriptionProbe.innerHTML = descriptionSource;
3059          const description = descriptionProbe.textContent.replace(/\s+/g, ' ').trim();
3060          if (description) {
3061            descriptionEl.textContent = description;
3062            descriptionEl.hidden = false;
3063          }
3064        }
3065
3066        const btn   = card.querySelector('.action-button');
3067        const modal = card.querySelector('quick-buy-modal');
3068        const qbId = `cart-quick-buy-${variantId}`;
3069        modal.id = qbId;
3070        modal.setAttribute('product-url', rec.url);
3071        btn.setAttribute('aria-controls', qbId);
3072
3073        if (!inStock) {
3074          btn.textContent = 'Sold out';
3075          btn.disabled    = true;
3076          btn.classList.add('opacity-50', 'is-sold-out');
3077        } else if (needsOpt) {
3078          btn.textContent = 'Choose options';
3079          btn.onclick = async () => {
3080            if (!modal.showModal) await customElements.whenDefined('quick-buy-modal');
3081            modal.showModal();
3082          };
3083        } else {
3084          btn.textContent = 'Add to cart';
3085          btn.onclick = async () => {
3086            btn.disabled = true; btn.textContent = 'Adding…';
3087            try {
3088              await fetch('/cart/add.js', {
3089                method: 'POST',
3090                headers: { 'Content-Type':'application/json' },
3091                body: JSON.stringify({ items:[{ id: variantId, quantity: 1 }] })
3092              });
3093              sendRecEvent({
3094                event_type: 'recommendation_add_to_cart',
3095                recommendation_type: rec.reason || 'cart',
3096                placement: 'cart-cross-sell',
3097                request_uuid: rec.__request_uuid || requestUuid,
3098                source_product_ids: sourceProductIdsForEvent,
3099                product_id: rec.id,
3100                variant_id: variantId,
3101                customer_id: null
3102              });
3103              document.documentElement.dispatchEvent(
3104                new CustomEvent('cart:refresh', { bubbles:true })
3105              );
3106            } catch {
3107              btn.disabled = false; btn.textContent = 'Add to cart';
3108            }
3109          };
3110        }
3111
3112        observeRecImpression(card, {
3113          recommendation_type: rec.reason || 'cart',
3114          placement: 'cart-cross-sell',
3115          request_uuid: rec.__request_uuid || requestUuid,
3116          source_product_ids: sourceProductIdsForEvent,
3117          product_id: rec.id,
3118          variant_id: rec.variantId,
3119          customer_id: null
3120        });
3121        return card;
3122      };
3123
3124      const scroller = document.createElement('scroll-carousel');
3125      scroller.id = 'cart-cross-sell-carousel-sections--25965682557306__cart-drawer';
3126      scroller.className = 'cart-drawer__cross-sell-carousel scroll-area bleed';
3127      scroller.setAttribute('role', 'region');
3128      scroller.setAttribute('aria-label', 'Swipe to browse recommended products');
3129
3130      if (cartV2) {
3131        const communityTarget = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community');
3132        const stripTarget = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-strip');
3133        const recommendationContent = container.querySelector('[data-cart-v2-recommendations]');
3134        const moreSection = stripTarget?.closest('.cart-v2-recommendation-section');
3135        let liquidCards = [];
3136
3137        try {
3138          liquidCards = await fetchLiquidProductCards(recs);
3139          liquidCards = liquidCards.slice(0, 10);
3140        } catch (error) {
3141          console.warn('[Cart] Native Liquid recommendation cards failed', error);
3142        }
3143
3144        if (!liquidCards.length) {
3145          document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper')?.remove();
3146          return;
3147        }
3148
3149        const wireLiquidCard = ({ rec, card }) => {
3150          const eventPayload = {
3151            recommendation_type: rec.reason || 'cart',
3152            placement: 'cart-cross-sell',
3153            request_uuid: rec.__request_uuid || requestUuid,
3154            source_product_ids: sourceProductIdsForEvent,
3155            product_id: rec.id,
3156            variant_id: rec.variantId,
3157            customer_id: null
3158          };
3159
3160          const trackClick = () => {
3161            sendRecEvent({ event_type: 'recommendation_click', ...eventPayload, url: rec.url });
3162            window.__storeRecContext?.({ ...eventPayload, url: rec.url });
3163          };
3164
3165          card.querySelector('a.product-title')?.addEventListener('click', trackClick);
3166          card.querySelector('a.product-card__media')?.addEventListener('click', trackClick);
3167          card.querySelectorAll('form.shopify-product-form').forEach((form) => {
3168            form.addEventListener('submit', () => {
3169              sendRecEvent({ event_type: 'recommendation_add_to_cart', ...eventPayload });
3170            });
3171          });
3172
3173          observeRecImpression(card, eventPayload);
3174          return card;
3175        };
3176
3177        const communityScroller = document.createElement('scroll-carou
3177sel');
3178        communityScroller.id = 'cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-carousel';
3179        communityScroller.className = 'cart-v2-community-carousel scroll-area bleed';
3180        communityScroller.setAttribute('role', 'region');
3181        communityScroller.setAttribute('aria-label', 'Swipe through Community favourites');
3182
3183        liquidCards.slice(0, 3).forEach((entry) => {
3184          communityScroller.appendChild(wireLiquidCard(entry));
3185        });
3186
3187        liquidCards.slice(3).forEach((entry) => {
3188          scroller.appendChild(wireLiquidCard(entry));
3189        });
3190
3191        communityTarget?.replaceChildren(communityScroller);
3192        stripTarget?.replaceChildren(scroller);
3193        if (moreSection) moreSection.hidden = scroller.children.length === 0;
3194        container.querySelector('.cross-sell-loading')?.remove();
3195        if (recommendationContent) recommendationContent.hidden = false;
3196      } else {
3197        for (const rec of recs) {
3198          scroller.appendChild(await buildCard(rec));
3199        }
3200
3201        /* 5 – swap in */
3202        container.replaceChildren(scroller);
3203      }
3204
3205      const widget = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper');
3206      if (widget) {
3207        const tabs = document.querySelector('x-tabs.tab-pills');
3208        widget.hidden = tabs ? tabs.getAttribute('selected-index') !== '0' : false;
3209      }
3210
3211      /* 6 – navigation arrows */
3212      const guardTouchDragClicks = (targetScroller) => {
3213        const dragThreshold = 10;
3214        let activePointerId = null;
3215        let startX = 0;
3216        let startY = 0;
3217        let suppressClickUntil = 0;
3218
3219        targetScroller.addEventListener('pointerdown', (event) => {
3220          if (event.pointerType !== 'touch' && event.pointerType !== 'pen') return;
3221
3222          activePointerId = event.pointerId;
3223          startX = event.clientX;
3224          startY = event.clientY;
3225          suppressClickUntil = 0;
3226        }, { passive: true });
3227
3228        targetScroller.addEventListener('pointermove', (event) => {
3229          if (event.pointerId !== activePointerId) return;
3230
3231          const movedX = Math.abs(event.clientX - startX);
3232          const movedY = Math.abs(event.clientY - startY);
3233          if (Math.max(movedX, movedY) >= dragThreshold) {
3234            suppressClickUntil = performance.now() + 700;
3235          }
3236        }, { passive: true });
3237
3238        targetScroller.addEventListener('pointercancel', (event) => {
3239          if (event.pointerId !== activePointerId) return;
3240          suppressClickUntil = performance.now() + 700;
3241          activePointerId = null;
3242        }, { passive: true });
3243
3244        targetScroller.addEventListener('pointerup', (event) => {
3245          if (event.pointerId === activePointerId) activePointerId = null;
3246        }, { passive: true });
3247
3248        targetScroller.addEventListener('click', (event) => {
3249          if (event.detail === 0 || performance.now() > suppressClickUntil) return;
3250
3251          event.preventDefault();
3252          event.stopImmediatePropagation();
3253          suppressClickUntil = 0;
3254        }, true);
3255      };
3256
3257      const setupCarouselNavigation = (targetScroller, prev, next) => {
3258        if (!targetScroller || !prev || !next || targetScroller.children.length === 0) return;
3259
3260        guardTouchDragClicks(targetScroller);
3261
3262        const navigationTolerance = 2;
3263        let pendingNavigationTarget = null;
3264
3265        const getNavigationState = () => {
3266          const max = Math.max(0, targetScroller.scrollWidth - targetScroller.clientWidth);
3267          const scrollPadding = parseFloat(getComputedStyle(targetScroller).scrollPaddingInlineStart) || 0;
3268          const stops = Array.from(targetScroller.children)
3269            .filter(card => !card.hidden)
3270            .map(card => Math.min(max, Math.max(0, card.offsetLeft - scrollPadding)))
3271            .filter((stop, index, values) =>
3272              index === 0 || Math.abs(stop - values[index - 1]) > navigationTolerance
3273            );
3274
3275          return {
3276            max,
3277            position: Math.min(max, Math.max(0, targetScroller.scrollLeft)),
3278            stops
3279          };
3280        };
3281
3282        const updateArrows = () => {
3283          const { max, position } = getNavigationState();
3284          prev.classList.toggle('at-start', max <= navigationTolerance || position <= navigationTolerance);
3285          next.classList.toggle('at-end', max <= navigationTolerance || position >= max - navigationTolerance);
3286        };
3287
3288        const clearPendingNavigationTarget = () => {
3289          pendingNavigationTarget = null;
3290        };
3291
3292        const moveCarousel = direction => {
3293          const { max, position, stops } = getNavigationState();
3294          if (max <= navigationTolerance || !stops.length) return;
3295
3296          const from = pendingNavigationTarget ?? position;
3297          let target;
3298
3299          if (direction === 'next') {
3300            target = stops.find(stop => stop >
3300 from + navigationTolerance);
3301            if (target == null) target = max;
3302          } else {
3303            target = stops.slice().reverse().find(stop => stop < from - navigationTolerance);
3304            if (target == null) target = 0;
3305          }
3306
3307          pendingNavigationTarget = target;
3308          prev.classList.toggle('at-start', target <= navigationTolerance);
3309          next.classList.toggle('at-end', target >= max - navigationTolerance);
3310          targetScroller.scrollTo({
3311            left: target,
3312            behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth'
3313          });
3314        };
3315
3316        prev.onclick = () => moveCarousel('previous');
3317        next.onclick = () => moveCarousel('next');
3318        targetScroller.addEventListener('scroll', updateArrows, { passive: true });
3319        targetScroller.addEventListener('scrollend', () => {
3320          clearPendingNavigationTarget();
3321          updateArrows();
3322        });
3323        targetScroller.addEventListener('pointerdown', clearPendingNavigationTarget, { passive: true });
3324        targetScroller.addEventListener('touchstart', clearPendingNavigationTarget, { passive: true });
3325        targetScroller.addEventListener('wheel', clearPendingNavigationTarget, { passive: true });
3326
3327        const resizeObserver = new ResizeObserver(updateArrows);
3328        resizeObserver.observe(targetScroller);
3329        navigationResizeObservers.push(resizeObserver);
3330
3331        targetScroller.scrollTo({ left: 0, behavior: 'auto' });
3332        updateArrows();
3333      };
3334
3335      setupCarouselNavigation(
3336        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-carousel'),
3337        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-prev'),
3338        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-community-next')
3339      );
3340      setupCarouselNavigation(
3341        scroller,
3342        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-prev'),
3343        document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-next')
3344      );
3345
3346      } finally {
3347        isLoading = false;
3348
3349        /* A cart refresh can replace this snippet while the previous request is
3350           still resolving. If that happened, initialise the new container once
3351           instead of leaving its loading state behind. */
3352        const latestContainer = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-container');
3353        if (latestContainer && latestContainer !== container) {
3354          requestAnimationFrame(api.init);
3355        }
3356      }
3357    }
3358  };
3359
3360  /* ============================================================
3361     Standardized formatMoney
3362  ============================================================ */
3363  window.Shopify = window.Shopify || {};
3364  Shopify.money_format = "£{{amount}}";
3365  if (!Shopify.formatMoney) {
3366    Shopify.formatMoney = function(cents, format) {
3367      const money = format || Shopify.money_format;
3368      const placeholder = /\{\{\s*amount\s*\}\}/;
3369      const formatted = isNaN(cents) ? '0.00' : (cents/100).toFixed(2);
3370      return money.replace(placeholder, formatted);
3371    };
3372  }
3373
3374  /* ============================================================
3375     Boot
3376  ============================================================ */
3377  window[KEY] = api;
3378
3379  /* Native product forms emit variant:add only after Shopify confirms the
3380     add. Close the quick-view layer at that point so it cannot remain over
3381     the refreshed cart drawer. */
3382  document.addEventListener('variant:add', (event) => {
3383    const quickBuyModal = event.target?.closest?.('quick-buy-modal.modal--quick-buy');
3384    if (quickBuyModal?.open) quickBuyModal.hide();
3385  }, true);
3386
3387  document.addEventListener('DOMContentLoaded', api.init);
3388  ['cart:change','variant:add','cart:refresh'].forEach(ev =>
3389    document.addEventListener(ev, api.init)
3390  );
3391  document.addEventListener('click', (event) => {
3392    if (event.target.closest("x-tabs.tab-pills button[slot='tab']")) {
3393      requestAnimationFrame(api.init);
3394    }
3395  });
3396
3397  const cartDrawerEl = document.getElementById('cart-drawer');
3398  if (cartDrawerEl) {
3399    cartDrawerEl.addEventListener('dialog:after-show', () => requestAnimationFrame(api.init));
3400  }
3401
3402  /* fallback: drawer re-render */
3403  const drawer = document.querySelector('[data-cart-drawer]') || document.getElementById('cart-drawer');
3404  if (drawer) {
3405    new MutationObserver(m =>
3406      m.some(x => x.type === 'childList') && requestAnimationFrame(api.init)
3407    ).observe(drawer, { childList:true });
3408
3409      // Keep the cross-sell out of layout until the native tab transition has
3410      // finished. A single cancellable controller prevents delayed callbacks
3411      // or recommendation responses from shifting the Wishlist panel.
3412      let visibilityDelayId = null;
3413      let visibilityAnimation = null;
3414
3415      function clearVisibilityMotion() {
3416        if (visibilityDelayId !== null) {
3417          clearTimeout(visibilityDelayId);
3418          visibilityDelayId = null;
3419        }
3420        visibilityAnimation?.cancel();
3421        visibilityAnimation = null;
3422      }
3423
3424      function syncCartVisibility(immediate = false) {
3425        const t = document.querySelector('x-tabs.tab-pills');
3426        const w = document.getElementById('cart-cross-sell-carousel-sections--25965682557306__cart-drawer-wrapper');
3427        if (!t || !w) return;
3428
3429        const onCart = t.getAttribute('selected-index') === '0';
3430        clearVisibilityMotion();
3431
3432        if (onCart) {
3433          if (!w.hidden) {
3434            w.style.opacity = '';
3435            w.style.transform = '';
3436            requestAnimationFrame(api.init);
3437            return;
3438          }
3439
3440          const show = () => {
3441            visibilityDelayId = null;
3442            if (document.querySelector('x-tabs.tab-pills')?.getAttribute('selected-index') !== '0') return;
3443
3444            w.hidden = false;
3445            requestAnimationFrame(api.init);
3446
3447            if (immediate) return;
3448            visibilityAnimation = w.animate([
3449              { opacity: 0, transform: 'translateY(10px)' },
3450              { opacity: 1, transform: 'translateY(0)' }
3451            ], { duration: 100, easing: 'ease-out' });
3452            visibilityAnimation.finished.catch(() => {}).finally(() => {
3453              visibilityAnimation = null;
3454            });
3455          };
3456
3457          if (immediate) {
3458            show();
3459          } else {
3460            visibilityDelayId = setTimeout(show, (t.animationDuration || 0.15) * 1000 + 20);
3461          }
3462          return;
3463        }
3464
3465        if (w.hidden) return;
3466        if (immediate) {
3467          w.hidden = true;
3468          w.style.opacity = '';
3469          w.style.transform = '';
3470          return;
3471        }
3472
3473        visibilityAnimation = w.animate([
3474          { opacity: 1, transform: 'translateY(0)' },
3475          { opacity: 0, transform: 'translateY(10px)' }
3476        ], { duration: 100, easing: 'ease-out' });
3477        visibilityAnimation.finished.catch(() => {}).finally(() => {
3478          visibilityAnimation = null;
3479          if (document.querySelector('x-tabs.tab-pills')?.getAttribute('selected-index') !== '0') {
3480            w.hidden = true;
3481          }
3482        });
3483      }
3484
3485      syncCartVisibility(true);
3486      new MutationObserver(() => syncCartVisibility(false)).observe(document, { subtree:true, attributes:true, attributeFilter:['selected-index'] });
3487  }
3488})();
3489</script>
3489
3490
3491<script data-cart-tab-persistence>
3492      (() => {
3493        const key = '__cartDrawerTabPersistence';
3494
3495        if (window[key]) {
3496          window[key].restore();
3497          return;
3498        }
3499
3500        let selectedIndex = 0;
3501
3502        const getTabs = () => document.querySelector('#cart-drawer x-tabs.tab-pills');
3503        const getHeaderTabs = () => Array.from(document.querySelectorAll('#cart-drawer [data-cart-v2-tab-index]'));
3504        const resetDrawerScroll = () => {
3505          requestAnimationFrame(() => {
3506            const drawerBody = document.querySelector('#cart-drawer')?.shadowRoot?.querySelector('[part="body"]');
3507            if (drawerBody) drawerBody.scrollTop = 0;
3508          });
3509        };
3510
3511        const syncHeaderTabs = () => {
3512          getHeaderTabs().forEach(button => {
3513            button.setAttribute('aria-selected', String(Number(button.dataset.cartV2TabIndex) === selectedIndex));
3514          });
3515        };
3516
3517        const restore = () => {
3518          const tabs = getTabs();
3519          if (!tabs) return;
3520
3521          selectedIndex = Math.min(selectedIndex, tabs.querySelectorAll('button[slot="tab"]').length - 1);
3522          if (tabs.selectedIndex !== selectedIndex) tabs.selectedIndex = selectedIndex;
3523          syncHeaderTabs();
3524        };
3525
3526        document.addEventListener('click', event => {
3527          const headerButton = event.target.closest('#cart-drawer [data-cart-v2-tab-index]');
3528          if (headerButton) {
3529            const index = Number(headerButton.dataset.cartV2TabIndex);
3530            const tabs = getTabs();
3531            if (!Number.isInteger(index) || !tabs) return;
3532
3533            const didChangeTab = index !== (tabs.selectedIndex ?? selectedIndex);
3534            selectedIndex = index;
3535            tabs.selectedIndex = index;
3536            syncHeaderTabs();
3537            if (didChangeTab) resetDrawerScroll();
3538            return;
3539          }
3540
3541          const button = event.target.closest('#cart-drawer x-tabs.tab-pills button[slot="tab"]');
3542          if (!button) return;
3543
3544          const buttons = Array.from(button.parentElement.querySelectorAll(':scope > button[slot="tab"]'));
3545          const index = buttons.indexOf(button);
3546          if (index >= 0) {
3547            const didChangeTab = index !== selectedIndex;
3548            selectedIndex = index;
3549            syncHeaderTabs();
3550            if (didChangeTab) resetDrawerScroll();
3551          }
3552        });
3553
3554        document.addEventListener('keydown', event => {
3555          if (!event.target.matches('#cart-drawer x-tabs.tab-pills button[role="tab"]')) return;
3556          if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;
3557
3558          requestAnimationFrame(() => {
3559            const nextIndex = getTabs()?.selectedIndex ?? selectedIndex;
3560            const didChangeTab = nextIndex !== selectedIndex;
3561            selectedIndex = nextIndex;
3562            syncHeaderTabs();
3563            if (didChangeTab) resetDrawerScroll();
3564          });
3565        });
3566
3567        /* A successful add initiated while Wishlist or Offers is selected is
3568           deliberate navigation back to Cart. Plain cart refreshes retain the
3569           current tab through the normal restore path below. */
3570        document.addEventListener('variant:add', () => {
3571          const tabs = getTabs();
3572          const activeIndex = tabs?.selectedIndex ?? selectedIndex;
3573          if (activeIndex !== 1 && activeIndex !== 2) return;
3574
3575          selectedIndex = 0;
3576          if (tabs) tabs.selectedIndex = 0;
3577          syncHeaderTabs();
3578          resetDrawerScroll();
3579        });
3580
3581        new MutationObserver(mutations => {
3582          const tabsWasReplaced = mutations.some(mutation =>
3583            Array.from(mutation.addedNodes).some(node =>
3584              node.nodeType === Node.ELEMENT_NODE &&
3585              (node.matches?.('x-tabs.tab-pills') || node.querySelector?.('x-tabs.tab-pills'))
3586            )
3587          );
3588
3589          if (tabsWasReplaced) queueMicrotask(restore);
3590        }).observe(document.getElementById('cart-drawer'), { childList: true, subtree: true });
3591
3592        document.getElementById('cart-drawer')?.addEventListener('cart-drawer:refreshed', restore);
3593
3594        window[key] = { restore };
3595        syncHeaderTabs();
3596      })();
3597    </script>
3597
3598
3599    
3599<script data-cart-savings-toggle>
3600      (() => {
3601        const key = '__cartSavingsToggle';
3602        if (window[key]) return;
3603        window[key] = true;
3604
3605        document.addEventListener('click', event => {
3606          const summary = event.target.closest('#cart-drawer .cart-v2-savings__summary');
3607          if (!summary) return;
3608          event.preventDefault();
3609
3610          const details = summary.closest('details');
3611          const breakdown = details?.querySelector('.cart-v2-savings__breakdown');
3612          if (!details || !breakdown || details.dataset.animating) return;
3613
3614          details.dataset.animating = 'true';
3615          const finish = () => delete details.dataset.animating;
3616          const timing = { duration: 220, easing: 'ease' };
3617
3618          if (details.open) {
3619            details.classList.remove('is-open');
3620            const animation = breakdown.animate(
3621              { height: [`${breakdown.offsetHeight}px`, '0px'], opacity: [1, 0], marginTop: ['0.5rem', '0rem'] },
3622              timing
3623            );
3624            animation.onfinish = () => {
3625              details.open = false;
3626              finish();
3627            };
3628          } else {
3629            details.open = true;
3630            details.classList.add('is-open');
3631            const animation = breakdown.animate(
3632              { height: ['0px', `${breakdown.offsetHeight}px`], opacity: [0, 1], marginTop: ['0rem', '0.5rem'] },
3633              timing
3634            );
3635            animation.onfinish = finish;
3636          }
3637        });
3638      })();
3639    </script>
3639</cart-drawer>
3640
3641</section><div id="shopify-section-sections--25965682557306__search-drawer" class="shopify-section shopify-section-group-overlay-group">
3642
3643<style>
3644  /* Custom carousel controls */
3645  .custom-carousel-controls {
3646    display: flex;
3647    justify-content: center;
3648    gap: 1rem;
3649    margin-top: 0.5rem;
3650  }
3651  .custom-carousel-controls .circle-button {
3652    background: var(--button-background);
3653    color: var(--button-text-color);
3654  }
3655  .search-drawer__recommended .h-stack.nav-buttons {
3656    gap: 15px;
3657  }
3658  .search-drawer__recommended .search-drawer__product-carousel {
3659    align-items: stretch;
3660    position: relative;
3661  }
3662  .search-drawer__recommended .search-drawer__product-carousel > product-card {
3663    grid-template-rows: auto 1fr;
3664  }
3665</style>
3666
3667<x-drawer
3668  id="search-drawer"
3669  class="drawer drawer--search color-scheme color-scheme--scheme-1"
3670  handle-editor-events
3671>
3672  <!-- HEADER: Search form -->
3673  <div slot="header">
3674    <form
3675      action="/search"
3676      id="predictive-search-form"
3677      method="GET"
3678      aria-owns="predictive-search"
3679      class="h-stack gap-2.5"
3680      role="search"
3681    ><svg
3682        aria-hidden="true"
3683        focusable="false"
3684        width="16"
3685        fill="none"
3686        class="icon icon-search"
3687        
3688        part="icon"
3689        viewBox="0 0 16 16"
3690      >
3691        <path stroke-width="1" stroke="currentColor" d="M1.333 7.333a6 6 0 1 0 12 0 6 6 0 0 0-12 0ZM11.575 11.576l3.09 3.09" />
3692      </svg><label for="search-drawer-input" class="sr-only">
3693        Search for...
3694      </label>
3695      <input
3696        id="search-drawer-input"
3697        type="search"
3698        class="search-drawer__input h7"
3699        name="q"
3700        placeholder="Search for..."
3701      >
3702    </form>
3703  </div>
3704
3705  <!-- ▸ PREDICTIVE SEARCH -->
3706  <predictive-search id="predictive-search">
3707    <!-- ▸ PLACEHOLDER (shown before the user types) -->
3708    <div slot="placeholder">
3709      <div class="v-stack gap-8 sm:gap-12"><div class="v-stack gap-4.5"><p class="subheading text-subdued">Popular searches</p><div class="v-stack justify-items-start gap-3.5"><a href="/collections/new" class="h7 link-reversed">New Arrivals</a><a href="/collections/offers" class="h7 link-reversed">Special Offers</a><a href="/products/regenerative-omegas-fish-free-120-capsules" class="h7 link-reversed">Regenerative Omegas</a><a href="/collections/personal-care" class="h7 link-reversed">Personal Care</a></div>
3710          </div><!-- ▸ DYNAMIC RECOMMENDED PRODUCTS -->
3711          <div
3712            class="search-drawer__recommended v-stack gap-4.5"
3713            data-section-id="sections--25965682557306__search-drawer"
3714          >
3715            <div class="h-stack justify-between items-center">
3716              <!-- dynamic, i18n’d heading -->
3717              <p class="subheading text-subdued">
3718                Recommended for you
3719              </p>
3720
3721              <!-- nav arrows inline with title -->
3722              <div class="h-stack nav-buttons">
3723                <button
3724                  disabled
3725                  type="button"
3726                  id="recs-prev-sections--25965682557306__search-drawer"
3727                  class="circle-button carousel-btn--prev"
3728                  aria-label="Previous"
3729                ><svg
3730        aria-hidden="true"
3731        focusable="false"
3732        width="9"
3733        class="icon icon-big-arrow-left  icon--direction-aware"
3734        
3735        part="icon"
3736        viewBox="0 0 36 36"
3737      >
3738        <path fill="none" stroke="currentColor" stroke-width="2" d="M35 18H3M19.5 34.5 3 18 19.5 1.5"/>
3739      </svg></button>
3740
3741                <button
3742                  type="button"
3743                  id="recs-next-sections--25965682557306__search-drawer"
3744                  class="circle-button carousel-btn--next"
3745                  aria-label="Next"
3746                ><svg
3747        aria-hidden="true"
3748        focusable="false"
3749        width="9"
3750        class="icon icon-big-arrow-right  icon--direction-aware"
3751        
3752        part="icon"
3753        viewBox="0 0 36 36"
3754      >
3755        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
3756      </svg></button>
3757              </div>
3758            </div>
3759
3760            <!-- ▸ CAROUSEL TRACK -->
3761            <scroll-carousel
3762              id="recs-carousel-sections--25965682557306__search-drawer"
3763              class="search-drawer__product-carousel scroll-area bleed"
3764            ></scroll-carousel>
3765          </div></div>
3766      <!-- /.v-stack -->
3767    </div>
3768    <!-- /slot="placeholder" -->
3769
3770    <!-- ▸ RESULTS (filled by theme’s predictive-search JS) -->
3771    <div slot="results" class="contents"></div>
3772  </predictive-search>
3773</x-drawer>
3774
3775
3776
3777<script>
3778// Define Shopify.formatMoney globally if not already defined
3779window.Shopify = window.Shopify || {};
3780Shopify.money_format = "£{{amount}}";
3781if (!Shopify.formatMoney) {
3782  Shopify.formatMoney = function(cents, format) {
3783    const money = format || Shopify.money_format;
3784    const placeholder = /\{\{\s*amount\s*\}\}/;
3785    const formatted = isNaN(cents) ? '0.00' : (cents/100).toFixed(2);
3786    return money.replace(placeholder, formatted);
3787  };
3788}
3789
3790document.addEventListener('DOMContentLoaded', () => {
3791  const endpoint = 'https://api.sowandarrow.com/recommendations';
3792  const recLimit = 6;
3793  const recTimeoutMs = 4000;
3794
3795  function getRecSessionId() {
3796    let id;
3797    try { id = sessionStorage.getItem('rec_session_id'); } catch {}
3798    if (!id) {
3799      id = window.__recSessionId || (crypto.randomUUID ? crypto.randomUUID() : `rec-session-${Date.now()}`);
3800      try { sessionStorage.setItem('rec_session_id', id); } catch {}
3801    }
3802    window.__recSessionId = id;
3803    return id;
3804  }
3805
3806  function sendRecEvent(payload) {
3807    const body = {
3808      ...payload,
3809      session_id: getRecSessionId(),
3810      page_path: window.location.pathname,
3811      timestamp: new Date().toISOString()
3812    };
3813
3814    fetch(endpoint, {
3815      method: 'POST',
3816      headers: { 'Content-Type': 'application/json' },
3817      credentials: 'include',
3818      keepalive: true,
3819      body: JSON.stringify(body)
3820    }).catch((error) => {
3821      console.warn('[Search Drawer] Event post failed:', error);
3822    });
3823  }
3824
3825  const sentImpressions = new Set();
3826  function observeRecImpression(el, payload) {
3827    if (!el) return;
3828    const key = [
3829      payload.placement || 'unknown',
3830      payload.request_uuid || 'no-request',
3831      payload.variant_id || payload.product_id || 'no-product'
3832    ].join('|');
3833    if (sentImpressions.has(key)) return;
3834
3835    const observer = new IntersectionObserver((entries, obs) => {
3836      if (!entries.some(entry => entry.isIntersecting && entry.intersectionRatio >= 0.35)) return;
3837      sentImpressions.add(key);
3838      sendRecEvent({ ...payload, event_type: 'recommendation_impression' });
3839      obs.disconnect();
3840    }, { threshold: [0.35] });
3841
3842    observer.observe(el);
3843  }
3844
3845  function toCardRecommendation(rec) {
3846    const selectedVariantId = rec?.selected_or_first_available_variant_id || rec?.variants?.[0]?.id || null;
3847    const variantCount = Number(rec?.variant_count || rec?.variants?.length || 0);
3848    const available = typeof rec?.available === 'boolean' ? rec.available : (rec?.variants?.[0]?.available ?? true);
3849    const priceCents = Number.isFinite(Number(rec?.price_min)) ? Number(rec.price_min) : rec?.variants?.[0]?.price != null ? Math.round(parseFloat(rec.variants[0].price) * 100) : null;
3850    const compareAtCents = Number.isFinite(Number(rec?.compare_at_price_min)) ? Number(rec.compare_at_price_min) : rec?.variants?.[0]?.compare_at_price != null ? Math.round(parseFloat(rec.variants[0].compare_at_price) * 100) : null;
3851
3852    return {
3853      id: rec?.id ?? rec?.product_id ?? null,
3854      title: rec?.title || '',
3855      url: rec?.url || rec?.link || (rec?.handle ? `/products/${rec.handle}` : null),
3856      handle: rec?.handle || null,
3857      vendor: rec?.vendor || null,
3858      image: {
3859        src: rec?.featured_image?.url || rec?.image?.src || rec?.image?.url || rec?.image || rec?.images?.[0]?.src || rec?.images?.[0]?.url || '',
3860        alt: rec?.featured_image?.alt || rec?.image?.alt || rec?.title || ''
3861      },
3862      secondaryImage: rec?.images?.[1]?.src || rec?.images?.[1]?.url || null,
3863      recommendationId: rec?.recommendation_id || rec?.recommendationId || null,
3864      variantId: selectedVariantId,
3865      variantCount,
3866      available,
3867      priceCents,
3868      compareAtCents,
3869      reason: rec?.reason || null
3870    };
3871  }
3872
3873  function readRecentlyViewedProductIds() {
3874    try {
3875      const value = JSON.parse(localStorage.getItem('theme:recently-viewed-products') || '[]');
3876      return Array.isArray(value) ? value.map((id) => String(id)).filter(Boolean) : [];
3877    } catch {
3878      return [];
3879    }
3880  }
3881
3882  async function fetchRecommendations(params) {
3883    const controller = new AbortController();
3884    const timeoutId = setTimeout(() => controller.abort(), recTimeoutMs);
3885    try {
3886      const response = await fetch(`${endpoint}?${params.toString()}`, {
3887        credentials: 'include',
3888        signal: controller.signal
3889      });
3890
3891      if (!response.ok) {
3892        throw new Error(`Unexpected status ${response.status}`);
3893      }
3894
3895      return await response.json();
3896    } finally {
3897      clearTimeout(timeoutId);
3898    }
3899  }
3900
3901  const searchDrawer = document.getElementById('search-drawer');
3902  const wrapper = document.querySelector('.search-drawer__recommended');
3903  if (!searchDrawer || !wrapper) return;
3904
3905  const sid      = wrapper.dataset.sectionId;
3906  const carousel = document.getElementById(`recs-carousel-${sid}`);
3907  const prevBtn  = wrapper.querySelector('.carousel-btn--prev');
3908  const nextBtn  = wrapper.querySelector('.carousel-btn--next');
3909  if (!carousel || !prevBtn || !nextBtn) return;
3910
3911  const navigationTolerance = 2;
3912  let pendingNavigationTarget = null;
3913
3914  function getCarouselNavigationState() {
3915    const max = Math.max(0, carousel.scrollWidth - carousel.clientWidth);
3916    const scrollPadding = parseFloat(getComputedStyle(carousel).scrollPaddingInlineStart) || 0;
3917    const stops = Array.from(carousel.children)
3918      .filter((card) => !card.hidden)
3919      .map((card) => Math.min(max, Math.max(0, card.offsetLeft - scrollPadding)))
3920      .filter((stop, index, values) => index === 0 || Math.abs(stop - values[index - 1]) > navigationTolerance);
3921
3922    return {
3923      max,
3924      position: Math.min(max, Math.max(0, carousel.scrollLeft)),
3925      stops
3926    };
3927  }
3928
3929  function updateCarouselNavigation() {
3930    const { max, position } = getCarouselNavigationState();
3931    prevBtn.disabled = max <= navigationTolerance || position <= navigationTolerance;
3932    nextBtn.disabled = max <= navigationTolerance || position >= max - navigationTolerance;
3933  }
3934
3935  function clearPendingNavigationTarget() {
3936    pendingNavigationTarget = null;
3937  }
3938
3939  function moveCarousel(direction) {
3940    const { max, position, stops } = getCarouselNavigationState();
3941    if (max <= navigationTolerance || !stops.length) return;
3942
3943    const from = pendingNavigationTarget ?? position;
3944    let target;
3945
3946    if (direction === 'next') {
3947      target = stops.find((stop) => stop > from + navigationTolerance);
3948      if (target == null) target = max;
3949    } else {
3950      target = stops.slice().reverse().find((stop) => stop < from - navigationTolerance);
3951      if (target == null) target = 0;
3952    }
3953
3954    pendingNavigationTarget = target;
3955    prevBtn.disabled = target <= navigationTolerance;
3956    nextBtn.disabled = target >= max - navigationTolerance;
3957    carousel.scrollTo({
3958      left: target,
3959      behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth'
3960    });
3961  }
3962
3963  prevBtn.addEventListener('click', () => moveCarousel('previous'));
3964  nextBtn.addEventListener('click', () => moveCarousel('next'));
3965  carousel.addEventListener('scroll', updateCarouselNavigation, { passive: true });
3966  carousel.addEventListener('scrollend', () => {
3967    clearPendingNavigationTarget();
3968    updateCarouselNavigation();
3969  });
3970  carousel.addEventListener('pointerdown', clearPendingNavigationTarget, { passive: true });
3971  carousel.addEventListener('touchstart', clearPendingNavigationTarget, { passive: true });
3972  carousel.addEventListener('wheel', clearPendingNavigationTarget, { passive: true });
3973
3974  const carouselNavigationResizeObserver = new ResizeObserver(updateCarouselNavigation);
3975  carouselNavigationResizeObserver.observe(carousel);
3976
3977  let fallbackEl = wrapper.querySelector('.search-drawer__recs-fallback');
3978  if (!fallbackEl) {
3979    fallbackEl = document.createElement('p');
3980    fallbackEl.className = 'search-drawer__recs-fallback h7 text-subdued';
3981    fallbackEl.textContent = 'No recommendations available right now.';
3982    fallbackEl.hidden = true;
3983    carousel.insertAdjacentElement('afterend', fallbackEl);
3984  }
3985
3986  function readCachedRecs(key) {
3987    try {
3988      const raw = localStorage.getItem(key);
3989      if (!raw) return [];
3990      const parsed = JSON.parse(raw);
3991      return Array.isArray(parsed) ? parsed : [];
3992    } catch {
3993      return [];
3994    }
3995  }
3996
3997  function writeCachedRecs(key, value) {
3998    try {
3999      localStorage.setItem(key, JSON.stringify(value));
4000      return;
4001    } catch {}
4002
4003    try {
4004      const prefix = `searchDrawerRecs:${sid}:`;
4005      Object.keys(localStorage)
4006        .filter((k) => k.startsWith(prefix) && k !== key)
4007        .forEach((k) => localStorage.removeItem(k));
4008      localStorage.setItem(key, JSON.stringify(value));
4009    } catch {}
4010  }
4011
4012  function showFallback() {
4013    carousel.replaceChildren();
4014    fallbackEl.hidden = false;
4015    prevBtn.disabled = true;
4016    nextBtn.disabled = true;
4017    wrapper.dataset.recommendationsState = 'fallback';
4018  }
4019
4020  function showRecommendationsState() {
4021    fallbackEl.hidden = true;
4022    wrapper.dataset.recommendationsState = 'loaded';
4023  }
4024
4025  function buildEventPayload(rec, sourceProductIds) {
4026    return {
4027      recommendation_type: rec.reason || 'search-drawer',
4028      placement: 'search-drawer',
4029      request_uuid: rec.__request_uuid || null,
4030      recommendation_id: rec.__recommendation_id || null,
4031      product_id: rec.id,
4032      variant_id: rec.variantId,
4033      served_rank: rec.__served_rank || null,
4034      source_product_ids: sourceProductIds,
4035      product_title: rec.title || null,
4036      product_handle: rec.handle || null,
4037      url: rec.url || null,
4038      customer_id: null
4039    };
4040  }
4041
4042  const liquidCardRequests = new Map();
4043
4044  async function fetchLiquidProductCards(recs) {
4045    const productIds = Array.from(new Set(recs.map((rec) =>
4045 String(rec.id || '')).filter(Boolean)));
4046    if (!productIds.length) return [];
4047
4048    const requestKey = productIds.join(',');
4049    if (!liquidCardRequests.has(requestKey)) {
4050      liquidCardRequests.set(requestKey, (async () => {
4051        const query = productIds.map((id) => `id:${id}`).join(' OR ');
4052        const requestUrl = new URL(`${window.Shopify.routes.root}search`, window.location.origin);
4053        requestUrl.searchParams.set('type', 'product');
4054        requestUrl.searchParams.set('q', query);
4055        requestUrl.searchParams.set('section_id', 'search-recommendation-card-renderer');
4056
4057        const response = await fetch(`${requestUrl.pathname}${requestUrl.search}`, {
4058          headers: { Accept: 'text/html' },
4059          priority: 'low'
4060        });
4061        if (!response.ok) {
4062          throw new Error(`Liquid card request returned ${response.status}`);
4063        }
4064
4065        const html = await response.text();
4066        const parsedDocument = new DOMParser().parseFromString(html, 'text/html');
4067        const container = parsedDocument.querySelector('[data-search-recommendation-liquid-cards]');
4068        if (!container) throw new Error('Liquid card response is missing its container');
4069
4070        return Array.from(container.querySelectorAll(':scope > product-card'));
4071      })());
4072    }
4073
4074    const cards = await liquidCardRequests.get(requestKey);
4075    const cardsByHandle = new Map(
4076      cards.map((card) => [card.getAttribute('handle'), card])
4077    );
4078
4079    return recs
4080      .map((rec) => {
4081        const card = cardsByHandle.get(rec.handle);
4082        return card ? { rec, card: document.importNode(card, true) } : null;
4083      })
4084      .filter(Boolean);
4085  }
4086
4087  async function renderRecommendations(recs, sourceProductIds) {
4088    const liquidCards = await fetchLiquidProductCards(recs);
4089    if (!liquidCards.length) return false;
4090
4091    showRecommendationsState();
4092    carousel.replaceChildren();
4093
4094    liquidCards.forEach(({ rec: rawRec, card: cardRoot }, idx) => {
4095      const rec = {
4096        ...rawRec,
4097        __served_rank: rawRec.__served_rank || idx + 1
4098      };
4099
4100      const eventPayload = buildEventPayload(rec, sourceProductIds);
4101
4102      const trackClick = () => {
4103        sendRecEvent({
4104          event_type: 'recommendation_click',
4105          ...eventPayload
4106        });
4107        if (window.__storeRecContext) {
4108          window.__storeRecContext(eventPayload);
4109        }
4110      };
4111
4112      cardRoot.querySelector('a.product-title')?.addEventListener('click', trackClick);
4113      cardRoot.querySelector('a.product-card__media')?.addEventListener('click', trackClick);
4114
4115      cardRoot.querySelectorAll('form.shopify-product-form').forEach((form) => {
4116        form.addEventListener('submit', () => {
4117          sendRecEvent({
4118            event_type: 'recommendation_add_to_cart',
4119            ...eventPayload
4120          });
4121        });
4122      });
4123
4124      carousel.appendChild(cardRoot);
4125      observeRecImpression(cardRoot, eventPayload);
4126    });
4127
4128    requestAnimationFrame(() => {
4129      clearPendingNavigationTarget();
4130      carousel.scrollTo({ left: 0, behavior: 'auto' });
4131      updateCarouselNavigation();
4132    });
4133
4134    return true;
4135  }
4136
4137  let isLoading = false;
4138  async function loadRecommendationsOnOpen() {
4139    if (isLoading) return;
4140    isLoading = true;
4141    let hasRendered = false;
4142
4143    try {
4144      let cart = {};
4145      try {
4146        cart = await fetch('/cart.js').then((r) => r.json());
4147      } catch (error) {
4148        console.warn('[Search Drawer] Unable to fetch cart:', error);
4149      }
4150
4151      const inCart = (cart.items || []).map((item) => item.variant_id);
4152      const cartContextProductIds = (cart.items || []).map((item) => String(item.product_id)).filter(Boolean);
4153      const recentlyViewedProductIds = readRecentlyViewedProductIds();
4154      const contextProductIds = Array.from(new Set([...cartContextProductIds, ...recentlyViewedProductIds]));
4155      const sourceProductIdsForEvent = contextProductIds.slice(0, 20);
4156
4157      const customerProfile = null;
4158      const cartVersion = [
4159        cart.updated_at || '',
4160        cart.item_count || 0,
4161        cart.items_subtotal_price || 0
4162      ].join('-');
4163      const cacheKey = `searchDrawerRecs:${sid}:${cartVersion}:${sourceProductIdsForEvent.join(',')}`;
4164      const cachedRecs = readCachedRecs(cacheKey);
4165      if (cachedRecs.length) {
4166        try {
4167          hasRendered = await renderRecommendations(cachedRecs, sourceProductIdsForEvent);
4168        } catch (error) {
4169          console.warn('[Search Drawer] Cached Liquid cards failed:', error);
4170        }
4171      }
4172
4173      const params = new URLSearchParams();
4174      params.set('type', 'search-drawer');
4175      params.set('session_id', getRecSessionId());
4176      params.set('shopify_product_ids', sourceProductIdsForEvent.join(','));
4177      params.set('limit', String(recLimit));
4178      params.set('time', new Date().toISOString());
4179      params.set('url', window.location.pathname);
4180
4181      
4182
4183      if (customerProfile) {
4184        params.set('customer_profile', typeof customerProfile === 'string' ? customerProfile : JSON.stringify(customerProfile));
4185      }
4186
4187      const localeCountry = ((navigator.language || '').split('-').pop() || '').toUpperCase();
4188      const cc = /^[A-Z]{2}$/.test(localeCountry) ? localeCountry : "GB";
4189      if (cc) params.set('country_code', cc);
4190
4191      console.log('[Search Drawer]', `${endpoint}?${params.toString()}`);
4192      const data = await fetchRecommendations(params);
4193      const requestUuid = data?.request_uuid || null;
4194      const source = Array.isArray(data?.products) ? data.products : [];
4195      const inCartSet = new Set(inCart.map((id) => String(id)));
4196
4197      const freshRecs = source
4198        .map(toCardRecommendation)
4199        .filter((rec) => rec.url && rec.variantId)
4200        .filter((rec) => !inCartSet.has(String(rec.variantId)))
4201        .slice(0, recLimit)
4202        .map((rec, idx) => ({
4203          ...rec,
4204          __request_uuid: requestUuid,
4205          __recommendation_id: rec.recommendationId || null,
4206          __served_rank: idx + 1
4207        }));
4208
4209      if (freshRecs.length) {
4210        const rendered = await renderRecommendations(freshRecs, sourceProductIdsForEvent);
4211        if (rendered) {
4212          writeCachedRecs(cacheKey, freshRecs);
4213          hasRendered = true;
4214          return;
4215        }
4216      }
4217
4218      if (!hasRendered) showFallback();
4219    } catch (error) {
4220      console.warn('[Search Drawer] Recommendation fetch failed:', error);
4221      if (!hasRendered) showFallback();
4222    } finally {
4223      isLoading = false;
4224    }
4225  }
4226
4227  searchDrawer.addEventListener('dialog:after-show', loadRecommendationsOnOpen);
4228  if (searchDrawer.hasAttribute('open')) {
4229    loadRecommendationsOnOpen();
4230  }
4231});
4232</script>
4232
4233
4234<style>
4235  /* --- search-drawer carousel controls (recommendations only) --- */
4236  .carousel-wrapper{position:relative}
4237  .carousel-btn{
4238    position:absolute;top:50%;transform:translateY(-50%);
4239    width:2.5rem;height:2.5rem;border-radius:50%;border:none;
4240    background:#fff;font-size:1.5rem;line-height:1;cursor:pointer;
4241    box-shadow:0 1px 3px rgba(0,0,0,.15);transition:opacity .2s;
4242  }
4243  .carousel-btn[disabled]{opacity:.35;cursor:not-allowed}
4244  .carousel-btn--prev{left:.25rem}
4245  .carousel-btn--next{right:.25rem}
4246</style>
4247</div>
4248<!-- END sections: overlay-group --><main id="main" class="anchor">
4249      <section id="shopify-section-template--25965682590074__main" class="shopify-section shopify-section--main-product"><style>#shopify-section-template--25965682590074__main .product {
4250      padding-block-start: min(1.75rem, var(--container-gutter));
4251    }@media screen and (min-width: 1000px) {
4252    #shopify-section-template--25965682590074__main {
4253      --product-grid: auto / minmax(0, 0.5fr) minmax(0, 0.5fr);
4254    }
4255  }
4256</style>
4257
4258<div
4259  class="color-scheme color-scheme--scheme-1"
4260  
4261>
4262  <div class="container"><product-rerender
4263      id="product-info-16190750032250-template--25965682590074__main"
4264      observe-form="product-form-main-16190750032250-template--25965682590074__main"
4265      allow-partial-rerender
4266    >
4267      <div class="product"><style>
4268    @media screen and (max-width: 999px) {
4269      #shopify-section-template--25965682590074__main {--product-gallery-gap: 0rem;}
4270    }
4271
4272  @media screen and (min-width: 1000px) {
4273    #shopify-section-template--25965682590074__main {--product-gallery-gap: 0rem;}}
4274</style>
4275
4276<product-gallery id="product-gallery-product-gallery-carousel-16190750032250-template--25965682590074__main" class="product-gallery " form="product-form-main-16190750032250-template--25965682590074__main" filtered-indexes="[]"  allow-zoom="3" zoom-color-scheme-id="scheme-1">
4277  <div class="product-gallery__image-list"><div class="relative">
4278      <scroll-carousel adaptive-height id="product-gallery-carousel-16190750032250-template--25965682590074__main" class="product-gallery__carousel scroll-area bleed md:unbleed" role="region"><div class="product-gallery__media snap-center is-initial " data-media-type="image" data-media-id="71649845969274" role="group" aria-label="Item 1 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="eager" fetchpriority="high" sizes="(max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846002042" role="group" aria-label="Item 2 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846034810" role="group" aria-label="Item 3 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846067578" role="group" aria-label="Item 4 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div>
4278</scroll-carousel><custom-cursor class="product-gallery__cursor custom-cursor" >
4279          <div class="circle-button circle-button--xl"><svg
4280        aria-hidden="true"
4281        focusable="false"
4282        width="12"
4283        class="icon icon-big-arrow-right"
4284        
4285        part="icon"
4286        viewBox="0 0 36 36"
4287      >
4288        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
4289      </svg></div>
4290        </custom-cursor><open-lightbox-button aria-controls="product-gallery-carousel-16190750032250-template--25965682590074__main" >
4291          <button class="product-zoom-button"><svg
4292        aria-hidden="true"
4293        focusable="false"
4294        width="16"
4295        class="icon icon-zoom-plus"
4296        
4297        part="icon"
4298        viewBox="0 0 15 15"
4299      >
4300        <path d="M7 0L7 7H0V8H7V15H8V8L15 8V7L8 7L8 0H7Z" fill="currentColor"/>
4301      </svg><span class="product-zoom-button__label">Zoom</span>
4302          </button>
4303        </open-lightbox-button></div><div class="product-gallery__controls-floating hidden md:contents"><carousel-navigation class="scroll-marker-group scroll-marker-group--lines align-self-center" aria-controls="product-gallery-carousel-16190750032250-template--25965682590074__main"><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="true">
4304                <span class="sr-only">Go to item 1</span>
4305              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4306                <span class="sr-only">Go to item 2</span>
4307              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4308                <span class="sr-only">Go to item 3</span>
4309              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4310                <span class="sr-only">Go to item 4</span>
4311              </button></carousel-navigation></div><div class="product-gallery__controls-floating contents md:hidden"><carousel-navigation class="scroll-marker-group scroll-marker-group--lines align-self-center" aria-controls="product-gallery-carousel-16190750032250-template--25965682590074__main"><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="true">
4312                <span class="sr-only">Go to item 1</span>
4313              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4314                <span class="sr-only">Go to item 2</span>
4315              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4316                <span class="sr-only">Go to item 3</span>
4317              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
4318                <span class="sr-only">Go to item 4</span>
4319              </button></carousel-navigation></div></div></product-gallery><safe-sticky class="product-info text-start">
4320  <div class="product-info__block-list">
4321<div
4322        class="product-info__block-item"
4323        data-block-id="vendor"
4324        data-block-type="vendor"
4325        
4326        
4327
4328      ><a href="/collections/vendors?q=Uppernut" class="vendor subheading text-subdued">Uppernut</a></div>
4329<div
4330        class="product-info__block-item"
4331        data-block-id="title"
4332        data-block-type="title"
4333        
4334        
4335
4336      ><h1 class="product-title h3">Pure Peanut Crackers - Cracked Black Pepper - 20g</h1></div>
4337<div
4338        class="product-info__block-item"
4339        data-block-id="badges"
4340        data-block-type="badges"
4341        
4342          data-block-allow-rerender
4343        
4344        
4345
4346      ><badge-list class="badge-list badge-list--row justify-start "><on-sale-badge class="badge badge--on-sale ">Save 20%</on-sale-badge></badge-list></div>
4347<div
4348        class="product-info__block-item"
4349        data-block-id="price"
4350        data-block-type="price"
4351        
4352          data-block-allow-rerender
4353        
4354        
4355
4356      ><div class="v-stack gap-2"><div class="price-rating" style="display: flex; align-items: center; gap: 0.75rem;">
4357                      <!-- Price -->
4358                      <div class="price"><price-list class="price-list justify-start"><sale-price class="h6 text-on-sale">
4359      <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="h7 line-through">
4360        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
4361</div></div></div></div>
4362<div
4363        class="product-info__block-item"
4364        data-block-id="payment_terms"
4365        data-block-type="payment-terms"
4366        
4367          data-block-allow-rerender
4368        
4369        
4370
4371      ><payment-terms class="payment-terms"><form method="post" action="/cart/add" id="product-form-main-16190750032250-template--25965682590074__main-payment-installment" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="57225090072954"><input type="hidden" name="product-id" value="16190750032250" /><input type="hidden" name="section-id" value="template--25965682590074__main" /></form></payment-terms></div>
4372<div
4373        class="product-info__block-item"
4374        data-block-id="inventory_ePBmxB"
4375        data-block-type="inventory"
4376        
4377          data-block-allow-rerender
4378        
4379        
4380
4381      ><variant-inventory class="inventory text-success justify-items-start"><span class="inventory__text">20 in stock</span>
4381<progress-bar
4382        id="progress-bar-template--25965682590074__main-16190750032250"
4383        class="progress-bar"
4384        animate-on-scroll
4385        aria-valuenow="20"
4386        aria-valuemax="50"
4387      ></progress-bar></variant-inventory></div>
4388<div
4389        class="product-info__block-item"
4390        data-block-id="countdown_j36wXB"
4391        data-block-type="countdown"
4392        
4393        
4394
4395      ></div>
4396<div
4397        class="product-info__block-item"
4398        data-block-id="AZnBrV3NDUnVmL2JVK__loox_reviews_loox_reviews_stories_mKPtR6-1"
4399        data-block-type="@app"
4400        
4401        
4402      ><div id="shopify-block-AZnBrV3NDUnVmL2JVK__loox_reviews_loox_reviews_stories_mKPtR6" class="shopify-block shopify-app-block"><loox-reviews-stories-entry-widget
4403	class='loox-widget'
4404	
4405	
4406		product-id='16190750032250'
4407		product-name='Pure Peanut Crackers - Cracked Black Pepper - 20g'
4408		product-image='//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&width=64'
4409		tags='Blood Sugar Management,Crackers,Grain Free,High Protein,Kids Favourites,Nuts,Peanut Butter,Snacks,Truffles &amp; Bites'
4410	
4411></loox-reviews-stories-entry-widget>
4412
4413
4414</div></div>
4415<div
4416        class="product-info__block-item"
4417        data-block-id="AOFRCS0RaZUhmVHBRd__loox_reviews_loox_snippets_widget_Amnn7Y-1"
4418        data-block-type="@app"
4419        
4420        
4421      ><div id="shopify-block-AOFRCS0RaZUhmVHBRd__loox_reviews_loox_snippets_widget_Amnn7Y" class="shopify-block shopify-app-block"><loox-snippets-widget
4422	
4423	reviews-type='product-reviews'
4424	product-id='16190750032250'
4425	review-count=''
4426	show-border='true'
4427	show-rating='true'
4428	color-scheme='default'
4429	shadow=''
4430	font-size='14px'
4431	background-color='#ffffff'
4432	text-color='#321e1e'
4433	name-color=''
4434	border-color='#f1e4d3'
4435	rating-icon-color='#f6a429'
4436	border-radius='8px'
4437	show-image='true'
4438	hide-arrows-mobile='false'
4439	reviews-limit='10'
4440	shadow-color=''
4441	alignment='left'
4442	max-width=''
4443	class="loox-widget"
4444>
4445</loox-snippets-widget>
4446
4447
4448</div></div>
4449<div
4450        class="product-info__block-item"
4451        data-block-id="product_variations_kMDzb9"
4452        data-block-type="product-variations"
4453        
4454        
4455
4456      ><div class="variant-picker">
4457                <div class="variant-picker__option justify-start"><div class="h-stack gap-2">
4458                      <p class="text-subdued">Flavour:</p><span>Cracked Black Pepper</span></div><div class="variant-picker__option-values h-stack gap-3 wrap"><a
4459      href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g" 
4460
4461      class="block-swatch   "
4462    ><span>Original</span>
4463    </a><a
4464      href="/products/pure-peanut-crackers-cracked-black-pepper-20g" 
4465
4466      class="block-swatch   is-selected"
4467    ><span>Cracked Black Pepper</span>
4468    </a><a
4469      href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g-copy" 
4470
4471      class="block-swatch   "
4472    ><span>Fiery Chilli Flakes</span>
4473    </a></div>
4474                </div>
4475              </div></div>
4476<div
4477        class="product-info__block-item"
4478        data-block-id="variant_picker"
4479        data-block-type="variant-picker"
4480        
4481          data-block-allow-rerender
4482        
4483        
4484
4485      ></div>
4486<div class="product-info__block-group accordion-group" data-group-type="accordion-group"><div
4487        class="product-info__block-item"
4488        data-block-id="accordion_N7g99J"
4489        data-block-type="accordion"
4490        
4491        
4492      ><accordion-disclosure class="accordion   " >
4493  <details class="accordion__disclosure"  >
4494    <summary class="accordion__summary   "><div class="text-with-icon"><span>Description</span></div><svg
4495        aria-hidden="true"
4496        focusable="false"
4497        width="11"
4498        class="icon icon-accordion-small-arrow"
4499        
4500        part="icon"
4501        fill="none"
4502        viewBox="0 0 11 7"
4503      >
4504        <path stroke="currentColor" stroke-width="1.5" d="M10 1 5.5 5.5 1 1" />
4505      </svg></summary>
4506
4507    <div class="accordion__content prose"><p><meta charset="utf-8"><span>Uppernut Cracked Black Pepper Peanut cracker Bites offer a unique and satisfying crunch, with just the right amount of bold, peppery flavour. Each 20g pack is the perfect on-the-go snack to satisfy your hunger and spice cravings. </span></p>
4508<p><span>These bites are a great alternative to traditional chips or other unhealthy snacks, providing a grain-free, low-carb, delicious snacking experience. Whether you're a fan of bold flavours or just looking for a healthier snack option, our Cracked Black Pepper Peanut Bites are sure to satisfy your cravings.</span></p></div>
4509  </details>
4510</accordion-disclosure>
4511</div>
4512<div
4513        class="product-info__block-item"
4514        data-block-id="nutrition_combined"
4515        data-block-type="nutrition-combined"
4516        
4517        
4518
4519      ><accordion-disclosure class="accordion   " >
4520  <details class="accordion__disclosure"  >
4521    <summary class="accordion__summary   "><span>Ingredients & Nutrition</span><svg
4522        aria-hidden="true"
4523        focusable="false"
4524        width="11"
4525        class="icon icon-accordion-small-arrow"
4526        
4527        part="icon"
4528        fill="none"
4529        viewBox="0 0 11 7"
4530      >
4531        <path stroke="currentColor" stroke-width="1.5" d="M10 1 5.5 5.5 1 1" />
4532      </svg></summary>
4533
4534    <div class="accordion__content "><div class="v-stack gap-5"><div class="v-stack gap-2"><p class="subheading text-subdued">Ingredients</p><div class="prose"><div class="metafield-rich_text_field"><p>Organic <strong>peanuts</strong> 97%, sea salt, xanthan gum, bicarbonate of soda, peppercorn.</p></div></div>
4535        </div><div class="v-stack gap-2"><p class="subheading text-subdued">Nutritional information</p><style>
4536  .nutrition-table{width:100%;border-collapse:collapse;display:block;overflow-x:auto;}
4537  .nutrition-table thead,.nutrition-table tbody{width:100%;}
4538  .nutrition-table tr{display:table;width:100%;table-layout:fixed;}
4539  .nutrition-table th,.nutrition-table td{padding:.5rem .6rem;border-bottom:1px solid #e5e5e5;text-align:left;}
4540  .nutrition-table th:last-child,.nutrition-table td:last-child{text-align:right;}
4541  .nutrition-table tr:last-child th,.nutrition-table tr:last-child td{border-bottom:none;}
4542  @media (max-width:480px){.nutrition-table th,.nutrition-table td{padding:.4rem .5rem;}}
4543</style>
4544
4545
4546
4547
4548
4549  
4550  
4551    <table class="nutrition-table">
4552      <thead>
4553        <tr>
4554          <th>Nutrient</th><th>Per 100g</th><th>Per 20g Serving</th>
4555        </tr>
4556      </thead>
4557      <tbody>
4558        
4559          
4560          
4561            <tr>
4562              
4563                <th>Energy</th>
4564              
4565                <td>1823 kJ / 435 kcal</td>
4566              
4567                <td>364.6 kJ / 87 kcal</td>
4568              
4569            </tr>
4570          
4571        
4572          
4573          
4574            <tr>
4575              
4576                <th>Fat</th>
4577              
4578                <td>17.3g</td>
4579              
4580                <td>3.46g</td>
4581              
4582            </tr>
4583          
4584        
4585          
4586          
4587            <tr>
4588              
4589                <th>- of which Saturates</th>
4590              
4591                <td>3.8g</td>
4592              
4593                <td>0.76g</td>
4594              
4595            </tr>
4596          
4597        
4598          
4599          
4600            <tr>
4601              
4602                <th>- Mono-unsaturated</th>
4603              
4604                <td>6.4g</td>
4605              
4606                <td>1.28g</td>
4607              
4608            </tr>
4609          
4610        
4611          
4612          
4613            <tr>
4614              
4615                <th>- Poly-unsaturated</th>
4616              
4617                <td>7.2g</td>
4618              
4619                <td>1.44g</td>
4620              
4621            </tr>
4622          
4623        
4624          
4625          
4626            <tr>
4627              
4628                <th>Carbohydrate</th>
4629              
4630                <td>17.9g</td>
4631              
4632                <td>3.58g</td>
4633              
4634            </tr>
4635          
4636        
4637          
4638          
4639            <tr>
4640              
4641                <th>- of which Sugars</th>
4642              
4643                <td>8.5g</td>
4644              
4645                <td>1.7g</td>
4646              
4647            </tr>
4648          
4649        
4650          
4651          
4652            <tr>
4653              
4654                <th>Fibre</th>
4655              
4656                <td>10.6g</td>
4657              
4658                <td>2.12g</td>
4659              
4660            </tr>
4661          
4662        
4663          
4664          
4665            <tr>
4666              
4667                <th>Protein</th>
4668              
4669                <td>46.7g</td>
4670              
4671                <td>9.34g</td>
4672              
4673            </tr>
4674          
4675        
4676          
4677          
4678            <tr>
4679              
4680                <th>Salt</th>
4681              
4682                <td>2.6g</td>
4683              
4684                <td>0.52g</td>
4685              
4686            </tr>
4687          
4688        
4689      </tbody>
4690    </table>
4691        </div><div class="v-stack gap-2"><p class="subheading text-subdued">Dietary</p><style>
4692    .diet-badge{
4693      display:inline-block;
4694      margin:0 0.25rem 0.4rem 0;
4695      padding:0.3rem 0.75rem;
4696      border:1px solid #E6DFDA;
4697      border-radius:9999px;
4698      line-height:1.1;
4699    }
4700  </style>
4701
4702  
4703
4704    
4705    <div class="dietary-tags">
4706      <span class="diet-badge subheading">Dairy Free</span>
4707    
4708      <span class="diet-badge subheading">Gluten Free</span>
4709    
4710      <span class="diet-badge subheading">Keto</span>
4711    
4712      <span class="diet-badge subheading">Low Carb</span>
4713    
4714      <span class="diet-badge subheading">Low Sugar</span>
4715    
4716      <span class="diet-badge subheading">Vegan</span>
4717    
4718      <span class="diet-badge subheading">Vegetarian</span>
4719      <p class="text-subdued" style="margin-top:0.5rem;font-size:0.75rem;">
4720        Please check the product packaging for the most up-to-date dietary and allergen details&nbsp;&mdash;&nbsp;information shown here cannot be guaranteed.
4721      </p>
4722    </div>
4723        </div></div></div>
4724  </details>
4725</accordion-disclosure>
4726</div>
4727<div
4728        class="product-info__block-item"
4729        data-block-id="accordion_zyTtgQ"
4730        data-block-type="accordion"
4731        
4732        
4733      ></div>
4734<div
4735        class="product-info__block-item"
4736        data-block-id="complementary_products_pmGxXA"
4737        data-block-type="complementary-products"
4738        
4739        
4740
4741      ><style>
4742  /* smaller product card */
4743  .product-cross-sell {
4744    border: 1px solid #dcd7d3;
4745    border-radius: 4px;
4746    background: #fff;
4747    display: flex;
4748    align-items: center;
4749    gap: 0.5rem;
4750    padding: 0.75rem;
4751    margin-bottom: 0.5rem;
4752  }
4753  .product-cross-sell img {
4754    max-width: 80px;
4755    max-height: 80px;
4756    border-radius: 4px;
4757    object-fit: cover;
4758  }
4759
4760  /* Price + stars container */
4761  .product-cross-sell__price-wrapper {
4762    display: flex;
4763    align-items: center;
4764    gap: 0.75rem;
4765  }
4766  .product-cross-sell__price {
4767    font-size: .95rem;
4768    color: rgb(var(--text-color) / .6);
4769  }
4770  .star-rating {
4771    display: flex;
4772    align-items: center;
4773  }
4774  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .star-rating span {
4775    margin-left: 0.25rem;
4776    font-size: .85rem;
4777    color: rgb(var(--text-color)/.6);
4778    line-height: 1;
4779  }
4780  .product-cross-sell__form button {
4781    align-self: flex-start;
4782  }
4783  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .product-cross-sell__promotion-badges {
4784    align-self: flex-start;
4785    margin-bottom: .25rem;
4786  }
4787  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .product-cross-sell__price s {
4788    margin-left: .35rem;
4789    color: rgb(var(--text-color) / .6);
4790  }
4791
4792  /* Accordion & nav arrows */
4793  .accordion__summary { display: flex; align-items: center; }
4794  .accordion__summary > span:first-child { margin-right: .5rem; }
4795  .accordion__summary .h-stack {
4796    margin-left: auto;
4797    display: flex;
4798    gap: 5px;
4799  }
4800  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .accordion__disclosure:not([open]) .circle-button {
4801    opacity: 0 !important;
4802    pointer-events: none;
4803  }
4804  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-start,
4805  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-end {
4806    opacity: 0.6 !important;
4807    cursor: default !important;
4808    pointer-events: none !important;
4809  }
4810  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-start:hover,
4811  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-end:hover,
4812  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-start:focus,
4813  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-end:focus,
4814  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-start:active,
4815  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-end:active {
4816    background-color: transparent !important;
4817    box-shadow:       none       !important;
4818    transform:        none       !important;
4819    border-color:     inherit    !important;
4820    color:            inherit    !important;
4821  }
4822  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-start svg,
4823  #cart-drawer-cross-sell-template--25965682590074__main-wrapper .circle-button.at-end svg {
4824    fill: currentColor !important;
4825  }
4826</style>
4827
4828<accordion-disclosure
4829  id="cart-drawer-cross-sell-template--25965682590074__main-wrapper"
4830  class="accordion"
4831  
4832>
4833  <details class="accordion__disclosure">
4834    <summary class="accordion__summary subheading_title">
4835      <span>Perfect Pairings</span>
4836      <div class="h-stack">
4837        <button id="cart-drawer-cross-sell-template--25965682590074__main-prev" class="circle-button" onclick="event.stopPropagation()">
4838          <span class="sr-only">Previous</span><svg
4839        aria-hidden="true"
4840        focusable="false"
4841        width="9"
4842        class="icon icon-big-arrow-left  icon--direction-aware"
4843        
4844        part="icon"
4845        viewBox="0 0 36 36"
4846      >
4847        <path fill="none" stroke="currentColor" stroke-width="2" d="M35 18H3M19.5 34.5 3 18 19.5 1.5"/>
4848      </svg></button>
4849        <button id="cart-drawer-cross-sell-template--25965682590074__main-next" class="circle-button" onclick="event.stopPropagation()">
4850          <span class="sr-only">Next</span><svg
4851        aria-hidden="true"
4852        focusable="false"
4853        width="9"
4854        class="icon icon-big-arrow-right  icon--direction-aware"
4855        
4856        part="icon"
4857        viewBox="0 0 36 36"
4858      >
4859        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
4860      </svg></button>
4861      </div><svg
4862        aria-hidden="true"
4863        focusable="false"
4864        width="11"
4865        class="icon icon-accordion-small-arrow"
4866        
4867        part="icon"
4868        fill="none"
4869        viewBox="0 0 11 7"
4870      >
4871        <path stroke="currentColor" stroke-width="1.5" d="M10 1 5.5 5.5 1 1" />
4872      </svg></summary>
4873    <div class="accordion__content">
4874      <scroll-carousel id="cart-drawer-cross-sell-template--25965682590074__main" class="cart-drawer__cross-sell-carousel scroll-area bleed">
4875      </scroll-carousel>
4876    </div>
4877  </details>
4878</accordion-disclosure>
4879
4880<template id="cart-drawer-cross-sell-template--25965682590074__main-template">
4881  <div class="product-cross-sell snap-start">
4882    <a href="#" data-instant class="product-cross-sell__link">
4883      <div class="product-cross-sell__image-placeholder"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 525.5 525.5"><path d="M324.5 212.7H203c-1.6 0-2.8 1.3-2.8 2.8V308c0 1.6 1.3 2.8 2.8 2.8h121.6c1.6 0 2.8-1.3 2.8-2.8v-92.5c0-1.6-1.3-2.8-2.9-2.8zm1.1 95.3c0 .6-.5 1.1-1.1 1.1H203c-.6 0-1.1-.5-1.1-1.1v-92.5c0-.6.5-1.1 1.1-1.1h121.6c.6 0 1.1.5 1.1 1.1V308z"/><path d="M210.4 299.5H240v.1s.1 0 .2-.1h75.2v-76.2h-105v76.2zm1.8-7.2l20-20c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l1.5 1.5 16.8 16.8c-12.9 3.3-20.7 6.3-22.8 7.2h-27.7v-5.5zm101.5-10.1c-20.1 1.7-36.7 4.8-49.1 7.9l-16.9-16.9 26.3-26.3c1.6-1.6 3.8-2.5 6.1-2.5s4.5.9 6.1 2.5l27.5 27.5v7.8zm-68.9 15.5c9.7-3.5 33.9-10.9 68.9-13.8v13.8h-68.9zm68.9-72.7v46.8l-26.2-26.2c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-26.3 26.3-.9-.9c-1.9-1.9-4.5-3-7.3-3s-5.4 1.1-7.3 3l-18.8 18.8V225h101.4z"/><path d="M232.8 254c4.6 0 8.3-3.7 8.3-8.3s-3.7-8.3-8.3-8.3-8.3 3.7-8.3 8.3 3.7 8.3 8.3 8.3zm0-14.9c3.6 0 6.6 2.9 6.6 6.6s-2.9 6.6-6.6 6.6-6.6-2.9-6.6-6.6 3-6.6 6.6-6.6z"/></svg></div>
4884    </a>
4885    <div class="v-stack gap-1">
4886      <div class="badge-list badge-list--row product-cross-sell__promotion-badges"></div>
4887      <a href="#" class="subheading" data-instant></a>
4888      <div class="product-cross-sell__price-wrapper">
4889        <span class="product-cross-sell__price"></span>
4890        <span data-loox-rating class="star-rating"></span>
4891      </div>
4892      <button type="button" class="link subheading subheading-xs" aria-controls=""></button>
4893      <quick-buy-modal
4894        id=""
4895        product-url=""
4896        class="modal modal--quick-buy color-scheme color-scheme--scheme-1"
4897      ></quick-buy-modal>
4898    </div>
4899  </div>
4900</template>
4901
4902<script>
4903  // Define Shopify.formatMoney globally if not already defined
4904  window.Shopify = window.Shopify || {};
4905  Shopify.money_format = "£{{amount}}";
4906  if (!Shopify.formatMoney) {
4907    Shopify.formatMoney = function(cents, format) {
4908      const money = format || Shopify.money_format;
4909      const placeholder = /\{\{\s*amount\s*\}\}/;
4910      const formatted = isNaN(cents) ? '0.00' : (cents/100).toFixed(2);
4911      return money.replace(placeholder, formatted);
4912    };
4913  }
4914
4915  function renderStars(el, rating) {
4916    const SVG = `<svg
4917        aria-hidden="true"
4918        focusable="false"
4919        width="16"
4920        class="icon icon-star-rating"
4921        
4922        part="icon"
4923        viewBox="0 0 13 13"
4924      >
4925        <path fill="#f6a429" d="m6.5 0 1.607 4.623 4.893.1-3.9 2.956 1.417 4.685L6.5 9.568l-4.017 2.796L3.9 7.679 0 4.723l4.893-.1L6.5 0Z"/>
4926      </svg>`;
4927    el.innerHTML = `${SVG}<span>${rating.toFixed(1)}</span>`;
4928  }
4929
4930  function toCardRecommendation(rec) {
4931    const featuredImage = rec?.featured_image?.url || rec?.image?.src || rec?.image?.url || rec?.image || rec?.images?.[0]?.src || rec?.images?.[0]?.url || '';
4932    const selectedVariantId = rec?.selected_or_first_available_variant_id || rec?.variants?.[0]?.id || null;
4933    const variantCount = Number(rec?.variant_count || rec?.variants?.length || 0);
4934    const available = typeof rec?.available === 'boolean' ? rec.available : (rec?.variants?.[0]?.available ?? true);
4935    const priceCents = rec?.price_min != null && Number.isFinite(Number(rec.price_min)) ? Number(rec.price_min) : rec?.variants?.[0]?.price != null ? Math.round(parseFloat(rec.variants[0].price) * 100) : null;
4936    const compareAtCents = rec?.compare_at_price_min != null && Number.isFinite(Number(rec.compare_at_price_min)) ? Number(rec.compare_at_price_min) : rec?.variants?.[0]?.compare_at_price != null ? Math.round(parseFloat(rec.variants[0].compare_at_price) * 100) : null;
4937
4938    return {
4939      id: rec?.product_id ?? rec?.id ?? null,
4940      url: rec?.url || rec?.link || (rec?.handle ? `/products/${rec.handle}` : null),
4941      title: rec?.title || '',
4942      image: { src: featuredImage, alt: rec?.featured_image?.alt || rec?.image?.alt || rec?.title || '' },
4943      variantId: selectedVariantId,
4944      variantCount,
4945      available,
4946      priceCents,
4947      compareAtCents,
4948      rating: rec?.metafields?.loox?.avg_rating ?? null,
4949      reason: rec?.reason || null
4950    };
4951  }
4952
4953  async function refreshRecommendationProduct(rec) {
4954    const controller = new AbortController();
4955    const timeout = setTimeout(() => controller.abort(), 4000);
4956    try {
4957      const url = new URL(rec.url, window.location.origin);
4958      if (url.origin !== window.location.origin) throw new Error('Invalid product origin');
4959      url.pathname = url.pathname.replace(/\/$/, '') + '.js';
4960      url.search = '';
4961      url.hash = '';
4962      const response = await fetch(url.href, { credentials: 'same-origin', cache: 'no-store', signal: controller.signal, headers: { Accept: 'application/json' } });
4963      if (!response.ok) throw new Error('Product could not be loaded');
4964      const product = await response.json();
4965      const variants = Array.isArray(product.variants) ? product.variants : [];
4966      const selected = variants.find(variant => String(variant.id) === String(rec.variantId) && variant.available)
4967        || variants.find(variant => variant.available) || variants[0];
4968      if (!selected || selected.price == null || !Number.isFinite(Number(selected.price))) throw new Error('Product price unavailable');
4969      return {
4970        ...rec, id: product.id, variantId: selected.id,
4971        priceCents: Number(selected.price), compareAtCents: Number(selected.compare_at_price) || null,
4972        variantCount: variants.length, available: Boolean(selected.available),
4973        needsOptions: variants.length > 1 || (Array.isArray(product.selling_plan_groups) && product.selling_plan_groups.length > 0)
4974      };
4975    } catch {
4976      return { ...rec, priceCents: null, compareAtCents: null, needsOptions: true };
4977    } finally {
4978      clearTimeout(timeout);
4979    }
4980  }
4981
4982  function getRecSessionId() {
4983      let id;
4984      try { id = sessionStorage.getItem('rec_session_id'); } catch {}
4985      if (!id) {
4986        id = window.__recSessionId || (crypto.randomUUID ? crypto.randomUUID() : `rec-session-${Date.now()}`);
4987        try { sessionStorage.setItem('rec_session_id', id); } catch {}
4988      }
4989      window.__recSessionId = id;
4990      return id;
4991    }
4992
4993  function sendRecEvent(payload) {
4994    const body = JSON.stringify({
4995      ...payload,
4996      session_id: getRecSessionId(),
4997      page_path: window.location.pathname,
4998      timestamp: new Date().toISOString()
4999    });
5000
5001    const endpoint = 'https://api.sowandarrow.com/recommendations';
5002    const pingUrl = `${endpoint}?rx=1&d=${encodeURIComponent(body)}`;
5003    const img = new Image();
5004    window.__recoEventPings = window.__recoEventPings || [];
5005    window.__recoEventPings.push(img);
5006    img.onload = img.onerror = () => {
5007      window.__recoEventPings = window.__recoEventPings.filter((x) => x !== img);
5008    };
5009    img.src = pingUrl;
5010  }
5011
5012  const sentImpressions = new Set();
5013  function observeRecImpression(el, payload) {
5014    if (!el) return;
5015    const key = [
5016      payload.placement || 'unknown',
5017      payload.request_uuid || 'no-request',
5018      payload.variant_id || payload.product_id || 'no-product'
5019    ].join('|');
5020    if (sentImpressions.has(key)) return;
5021
5022    const observer = new IntersectionObserver((entries, obs) => {
5023      if (!entries.some(entry => entry.isIntersecting && entry.intersectionRatio >= 0.35)) return;
5024      sentImpressions.add(key);
5025      sendRecEvent({ ...payload, event_type: 'recommendation_impression' });
5026      obs.disconnect();
5027    }, { threshold: [0.35] });
5028
5029    observer.observe(el);
5030  }
5031
5032  document.addEventListener('DOMContentLoaded', () => {
5033    requestAnimationFrame(async () => {
5034      const wrapper  = document.getElementById('cart-drawer-cross-sell-template--25965682590074__main-wrapper');
5035      const details  = wrapper.querySelector('details.accordion__disclosure');
5036      const summary  = details.querySelector('summary');
5037      const carousel = wrapper.querySelector('#cart-drawer-cross-sell-template--25965682590074__main');
5038      const prevBtn  = wrapper.querySelector('#cart-drawer-cross-sell-template--25965682590074__main-prev');
5039      const nextBtn  = wrapper.querySelector('#cart-drawer-cross-sell-template--25965682590074__main-next');
5040      const tpl      = document.getElementById('cart-drawer-cross-sell-template--25965682590074__main-template');
5041
5042      if (!details || !summary || !carousel || !tpl) return;
5043
5044      // disable manual toggle until ready
5045      summary.style.pointerEvents = 'none';
5046
5047      // 1) load cart.js for dynamic cart params
5048      let cart = { items: [], item_count: 0, items_subtotal_price: 0 };
5049      try {
5050        cart = await fetch('/cart.js').then(r => r.json());
5051      } catch {}
5052
5053      const variantIdsArr = cart.items.map(i => i.variant_id);
5054      const customerProfile = null;
5055
5056      // 2) build query params
5057      const params = new URLSearchParams();
5058      params.set('type', 'product-page');
5059      params.set('shopify_product_ids', '16190750032250');
5060      
5061      if (customerProfile) {
5062        params.set('customer_profile', typeof customerProfile === 'string' ? customerProfile : JSON.stringify(customerProfile));
5063      }
5064      params.set('metafields', 'yes');
5065      params.set('variant_metafields', 'true');
5066      params.set('time', new Date().toISOString());
5067      const requestUuid = crypto.randomUUID ? crypto.randomUUID() : `uuid-${Date.now()}`;
5068      params.set('uuid', requestUuid);
5069      params.set('session_id', getRecSessionId());
5070      params.set('limit', '10');
5071      // optional url, format, country_code if you choose to set them via JS or data-attrs
5072      params.set('url', window.location.pathname);
5073      params.set('format', 'pretty');
5074      const localeCountry = ((navigator.language || '').split('-').pop() || '').toUpperCase();
5075      const cc = /^[A-Z]{2}$/.test(localeCountry) ? localeCountry : "GB";
5076      if (cc) params.set('country_code', cc);
5077      params.set('type', 'product-page');
5078
5079      // 3) fetch recommendations
5080      const endpoint = `https://api.sowandarrow.com/recommendations?${params}`;
5081      let recs = [];
5082      try {
5083        const json = await fetch(endpoint, { credentials:'include' }).then(r => r.json());
5084
5085        const requestId = json.request_uuid || requestUuid;
5086        const source = Array.isArray(json.products) ? json.products : [];
5087        recs = source
5088          .map(toCardRecommendation)
5089          .filter((rec) => rec.url && rec.variantId)
5090          .map((rec) => ({ ...rec, __request_uuid: requestId }))
5091          .slice(0, 10);
5092      } catch {
5093      }
5094
5095      // filter out in-cart variants
5096      const inCartSet = new Set(variantIdsArr.map((id) => String(id)));
5097      recs = recs.filter((rec) => !inCartSet.has(String(rec.variantId)));
5098      if (!recs.length) {
5099        wrapper.style.display = 'none';
5100        return;
5101      }
5102
5103      recs = await Promise.all(recs.map(refreshRecommendationProduct));
5104      recs = recs.filter(rec => !inCartSet.has(String(rec.variantId)));
5105      if (!recs.length) { wrapper.style.display = 'none'; summary.style.pointerEvents = ''; return; }
5106
5107      // auto-open accordion with local animation (avoids bubbling clicks in cart drawer)
5108      setTimeout(() => {
5109        if (!details.open) {
5110          const summaryHeight = summary.clientHeight;
5111
5112          wrapper.classList.add('is-open');
5113          details.open = true;
5114          details.style.overflow = 'hidden';
5115
5116          const fullHeight = details.clientHeight;
5117
5118          details.animate(
5119            [
5120              { height: `${summaryHeight}px` },
5121              { height: `${fullHeight}px` }
5122            ],
5123            { duration: 250, easing: 'ease-in-out' }
5124          ).finished.finally(() => {
5125            details.style.height = '';
5126            details.style.overflow = '';
5127          });
5128
5129          const content = details.querySelector('summary + *');
5130          if (content) {
5131            content.animate(
5132              [
5133                { opacity: 0, transform: 'translateY(4px)' },
5134                { opacity: 1, transform: 'translateY(0px)' }
5135              ],
5136              { duration: 150, delay: 150, easing: 'ease' }
5137            );
5138          }
5139        }
5140
5141        summary.style.pointerEvents = '';
5142      }, 500);
5143
5144      // 4) render cards
5145      carousel.innerHTML = '';
5146      for (const rec of recs) {
5147        const frag = document.createRange().createContextualFragment(tpl.innerHTML);
5148        const card = frag.firstElementChild;
5149        const link      = card.querySelector('a.product-cross-sell__link');
5150        const title     = card.querySelector('a.subheading');
5151        const priceEl   = card.querySelector('.product-cross-sell__price');
5152        const promotionBadges = card.querySelector('.product-cross-sell__promotion-badges');
5153        const ratingEl  = card.querySelector('[data-loox-rating]');
5154
5155        const trackClick = () => {
5156          sendRecEvent({
5157            event_type: 'recommendation_click',
5158            recommendation_type: rec.reason || 'product-page',
5159            placement: 'product-accordion',
5160            request_uuid: rec.__request_uuid || requestUuid,
5161            source_product_id: Number('16190750032250'),
5162            product_id: rec.id,
5163            variant_id: rec.variantId,
5164            url: rec.url,
5165            customer_id: null
5166          });
5167          if (window.__storeRecContext) {
5168            window.__storeRecContext({
5169              product_id: rec.id,
5170              variant_id: rec.variantId,
5171              recommendation_type: rec.reason || 'product-page',
5172              placement: 'product-accordion',
5173              request_uuid: rec.__request_uuid || requestUuid,
5174              source_product_id: Number('16190750032250'),
5175              customer_id: null
5176            });
5177          }
5178        };
5179
5180        link.addEventListener('click', trackClick);
5181        title.addEventListener('click', trackClick);
5182
5183        link.href = rec.url;
5184
5185        const imgPlaceholder = card.querySelector('.product-cross-sell__image-placeholder');
5186        if (imgPlaceholder) {
5187            const img = document.createElement('img');
5188            img.src = rec.image.src;
5189            img.alt = rec.image.alt || rec.title;
5190            img.width = 100;
5191            img.height = 100;
5192            imgPlaceholder.replaceWith(img);
5193        }
5194        title.href = rec.url;
5195        title.textContent = rec.title;
5196
5197        // 1) price + stars
5198        // set the price
5199        if (rec.priceCents != null) {
5200          const promotion = window.WindfallProductPromotion?.({
5201            productId: rec.id,
5202            variantId: rec.variantId,
5203            priceCents: rec.priceCents,
5204            compareAtCents: rec.compareAtCents
5205          }) || { effectivePrice: rec.priceCents, struckPrice: rec.compareAtCents || 0 };
5206          priceEl.textContent = Shopify.formatMoney(promotion.effectivePrice, Shopify.money_format);
5207          if (promotion.struckPrice > promotion.effectivePrice) {
5208            const compare = document.createElement('s');
5209            compare.textContent = Shopify.formatMoney(promotion.struckPrice, Shopify.money_format);
5210            priceEl.appendChild(compare);
5211            const saleBadge = document.createElement('span');
5212            saleBadge.className = 'badge badge--on-sale';
5213            saleBadge.textContent = `Save ${promotion.savingPercent}%`;
5214            promotionBadges.appendChild(saleBadge);
5215          }
5216          if (promotion.specialOffer) {
5217            const specialBadge = document.createElement('span');
5218            specialBadge.className = 'badge badge--on-sale badge--special-offer';
5219            specialBadge.textContent = 'Special Offer';
5220            promotionBadges.appendChild(specialBadge);
5221          }
5222          if (!promotionBadges.children.length) promotionBadges.remove();
5223        }
5224      
5225        // pull out, parse & render the rating
5226        const rawRating = rec.rating;
5227        const rating    = rawRating != null ? parseFloat(rawRating) : NaN;
5228      
5229        if (!isNaN(rating) && rating > 0) {
5230          renderStars(ratingEl, rating);
5231        } else {
5232          ratingEl.remove();
5233        }
5234
5235        // stock/options/add-to-cart
5236        const variantId = rec.variantId;
5237        const inStock = rec.available;
5238        const needsOpt = rec.needsOptions;
5239        const placeholder = card.querySelector('button');
5240        const modal       = card.querySelector('quick-buy-modal');
5241        const qbId        = `cart-drawer-cross-sell-template--25965682590074__main-qb-${rec.id}`;
5242
5243        if (!inStock) {
5244          const f = document.createElement('form');
5245          f.className = 'product-cross-sell__form';
5246          const b = document.createElement('button');
5247          b.type = 'submit'; b.disabled = true;
5248          b.className = 'link subheading subheading-xs';
5249          b.textContent = "Sold out";
5250          f.append(b); placeholder.replaceWith(f);
5251          modal?.remove();
5252
5253        } else if (needsOpt) {
5254          const f = document.createElement('form');
5255          f.className = 'product-cross-sell__form';
5256          const b = document.createElement('button');
5257          b.type = 'button';
5258          b.className = 'link subheading subheading-xs';
5259          b.textContent = "Choose options";
5260          b.setAttribute('aria-controls', qbId);
5261          b.addEventListener('click', trackClick);
5262          f.append(b); placeholder.replaceWith(f);
5263          if (modal) { modal.id = qbId; modal.setAttribute('product-url', rec.url); }
5264
5265        } else {
5266          const f = document.createElement('form');
5267          f.className = 'product-cross-sell__form';
5268          f.method = 'post';
5269          f.action = '/cart/add.js';
5270          f.addEventListener('submit', async e => {
5271            e.preventDefault();
5272            try {
5273              const response = await fetch('/cart/add.js', {
5274                method: 'POST',
5275                headers: {'Content-Type':'application/json'},
5276                body: JSON.stringify({ id: variantId, quantity: 1 })
5277              });
5278              if (!response.ok) throw new Error('Cart request failed');
5279              sendRecEvent({
5280                event_type: 'recommendation_add_to_cart',
5281                recommendation_type: rec.reason || 'product-page',
5282                placement: 'product-accordion',
5283                request_uuid: rec.__request_uuid || requestUuid,
5284                source_product_id: Number('16190750032250'),
5285                product_id: rec.id,
5286                variant_id: variantId,
5287                customer_id: null
5288              });
5289              document.dispatchEvent(new CustomEvent('cart:refresh',{ bubbles:true }));
5290              document.querySelector('a[href="/cart"]')?.click();
5291            } catch {}
5292          });
5293          const inp = document.createElement('input');
5294          inp.type = 'hidden'; inp.name = 'id'; inp.value = variantId;
5295          const sb = document.createElement('button');
5296          sb.type = 'submit';
5297          sb.className = 'link subheading subheading-xs';
5298          sb.textContent = "Add to cart";
5299          f.append(inp, sb);
5300          placeholder.replaceWith(f);
5301          modal?.remove();
5302        }
5303
5304        carousel.appendChild(card);
5305        observeRecImpression(card, {
5306          recommendation_type: rec.reason || 'product-page',
5307          placement: 'product-accordion',
5308          request_uuid: rec.__request_uuid || requestUuid,
5309          source_product_id: Number('16190750032250'),
5310          product_id: rec.id,
5311          variant_id: rec.variantId,
5312          customer_id: null
5313        });
5314      }
5315
5316      // 5) arrows
5317      function updateArrows() {
5318        const max = carousel.scrollWidth - carousel.clientWidth;
5319        prevBtn.classList.toggle('at-start', carousel.scrollLeft <= 0);
5320        nextBtn.classList.toggle('at-end',   carousel.scrollLeft >= max);
5321      }
5322      updateArrows();
5323      prevBtn.addEventListener('click', e => {
5324        e.stopPropagation();
5325        if (!prevBtn.classList.contains('at-start')) {
5326          carousel.scrollBy({ left:-carousel.clientWidth, behavior:'smooth' });
5327        }
5328      });
5329      nextBtn.addEventListener('click', e => {
5330        e.stopPropagation();
5331        if (!nextBtn.classList.contains('at-end')) {
5332          carousel.scrollBy({ left:carousel.clientWidth, behavior:'smooth' });
5333        }
5334      });
5335      carousel.addEventListener('scroll', updateArrows);
5336    });
5337  });
5338</script>
5338
5339
5340</div></div>
5341<div
5342        class="product-info__block-item"
5343        data-block-id="delivery_countdown_VCLrUj"
5344        data-block-type="delivery-countdown"
5345        
5346        
5347
5348      >
5349<div id="delivery-countdown-delivery_countdown_VCLrUj" class="h-stack align-start gap-2.5 delivery-countdown" hidden><svg
5350        aria-hidden="true"
5351        focusable="false"
5352        width="14"
5353        class="text-success icon icon-success-checkmark offset-icon"
5354        
5355        part="icon"
5356        viewBox="0 0 14 12"
5357      >
5358        <path fill="none" stroke="currentColor" d="m1 6 4 4 8-8"/>
5359      </svg><div class="v-stack gap-1">
5360    <p class="delivery-countdown__buy"></p>
5361    <p class="delivery-countdown__eta subheading subheading-xs text-subdued"></p>
5362  </div>
5363</div>
5364
5365
5366
5367<script>
5368(() => {
5369  const root = document.getElementById('delivery-countdown-delivery_countdown_VCLrUj');
5370  if (!root) return;
5371
5372  const CONFIG = {
5373    cutoff: '13:00',
5374    etaDays: 2,
5375    fallbackBuy: "Order Before Midnight",
5376    fallbackEta: "for Carbon Neutral Speedy Delivery.",
5377    showNonUK: true
5378  };
5379
5380  function isUK() {
5381    try {
5382      return Intl.DateTimeFormat().resolvedOptions().timeZone.startsWith('Europe');
5383    } catch { return true; }
5384  }
5385  if (!isUK() && !CONFIG.showNonUK) return;
5386
5387  const cutoffParts = CONFIG.cutoff.split(':').map(Number);
5388
5389  function render() {
5390  const root = document.getElementById('delivery-countdown-delivery_countdown_VCLrUj');
5391  if (!root) return;
5392
5393  const CONFIG = {
5394    cutoff: '13:00',
5395    etaDays: 2,
5396    fallbackBuy: "Order Before Midnight",
5397    fallbackEta: "for Carbon Neutral Speedy Delivery.",
5398    showNonUK: true
5399  };
5400
5401  function isUK() {
5402    try {
5403      return Intl.DateTimeFormat().resolvedOptions().timeZone.startsWith('Europe');
5404    } catch { return true; }
5405  }
5406  if (!isUK() && !CONFIG.showNonUK) return;
5407
5408    const now = new Date();
5409    const cutoff = new Date(); cutoff.setHours(cutoffParts[0],cutoffParts[1],0,0);
5410    let diff = cutoff - now;
5411  let buyCopy = '', etaCopy = '';
5412  if (diff > 0) {
5413    const mins = Math.ceil(diff/60000);
5414    if (mins < 60) {
5415      buyCopy = `Order in the next ${mins}m`;
5416    } else {
5417      const hrs = Math.floor(mins/60);
5418      const mm = String(mins%60).padStart(2,'0');
5419      buyCopy = `Order in the next ${hrs}h ${mm}m`;
5420    }
5421  } else {
5422    buyCopy = CONFIG.fallbackBuy;
5423    etaCopy = CONFIG.fallbackEta;
5424  }
5425  if (!etaCopy) {
5426    if (CONFIG.etaDays > 2) {
5427      etaCopy = CONFIG.fallbackEta;
5428    } else {
5429      const deliveryDate = new Date(now);
5430      deliveryDate.setDate(deliveryDate.getDate() + CONFIG.etaDays);
5431      const weekday = deliveryDate.toLocaleDateString('en-GB', { weekday: 'long' });
5432      etaCopy = `Estimated delivery ${CONFIG.etaDays === 1 ? 'Tomorrow' : weekday}.`;
5433    }
5434  }
5435    root.querySelector('.delivery-countdown__buy').textContent = buyCopy;
5436    root.querySelector('.delivery-countdown__eta').textContent = etaCopy;
5437    root.hidden = false;
5438  }
5439
5440  // initial render
5441  render();
5442  // align first update to next full minute
5443  const nowMs = Date.now();
5444  const msToNextMinute = 60000 - (nowMs % 60000);
5445  setTimeout(() => {
5446    render();
5447    setInterval(render, 60000);
5448  }, msToNextMinute);
5449})();
5450</script>
5450
5451
5452</div>
5453<div
5454        class="product-info__block-item"
5455        data-block-id="pickup_availability_btGJA6"
5456        data-block-type="pickup-availability"
5457        
5458          data-block-allow-rerender
5459        
5460        
5461
5462      ><pickup-availability class="pickup-availability"><div class="h-stack align-start justify-start gap-2.5"><svg
5463        aria-hidden="true"
5464        focusable="false"
5465        width="14"
5466        class="text-success icon icon-success-checkmark offset-icon"
5467        
5468        part="icon"
5469        viewBox="0 0 14 12"
5470      >
5471        <path fill="none" stroke="currentColor" d="m1 6 4 4 8-8"/>
5472      </svg><div class="v-stack justify-items-start gap-3.5">
5473          <div><p>Pickup available at Sow &amp; Arrow - Clevedon</p>
5474              <p class="subheading subheading-xs text-subdued">Usually ready in 4 hours</p></div>
5475
5476          <button type="button" class="subheading subheading-xs link" aria-controls="store-availability-drawer-16190750032250" aria-expanded="false">View store information</button>
5477        </div>
5478      </div>
5479
5480      <x-drawer id="store-availability-drawer-16190750032250" class="drawer drawer--pickup-availability color-scheme color-scheme--scheme-1">
5481        <div class="h-stack gap-5" slot="header"><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=72 72w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=144 144w" width="996" height="996" loading="lazy" sizes="72px" class="constrained-image" style="--image-max-width: 72px"><div class="v-stack gap-1">
5482            <p class="h6">Pure Peanut Crackers - Cracked Black Pepper - 20g</p></div>
5483        </div>
5484
5485        <div class="v-stack gap-6"><div class="v-stack gap-2.5">
5486              <div class="v-stack gap-2">
5487                <p class="h6">Sow &amp; Arrow - Clevedon</p>
5488
5489                <div class="h-stack gap-2.5"><svg
5490        aria-hidden="true"
5491        focusable="false"
5492        width="14"
5493        class="text-success icon icon-success-checkmark"
5494        
5495        part="icon"
5496        viewBox="0 0 14 12"
5497      >
5498        <path fill="none" stroke="currentColor" d="m1 6 4 4 8-8"/>
5499      </svg><span>Pickup available, Usually ready in 4 hours</span></div>
5500              </div>
5501
5502              <div class="text-subdued"><p>15 Old Street<br>Clevedon BS21 6ND<br>United Kingdom</p><a href="tel:+441275870762">+441275870762</a></div>
5503            </div></div>
5504      </x-drawer></pickup-availability></div>
5505<div
5506        class="product-info__block-item"
5507        data-block-id="buy_buttons"
5508        data-block-type="buy-buttons"
5509        
5510          data-block-allow-rerender
5511        
5512        
5513
5514      ><product-form><form method="post" action="/cart/add" id="product-form-main-16190750032250-template--25965682590074__main" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="57225090072954">
5515
5516      
5517
5518      <div class="v-stack gap-4"><div class="v-stack gap-2">
5519          <buy-buttons
5520            class="buy-buttons buy-buttons--has-dynamic"
5521            form="product-form-main-16190750032250-template--25965682590074__main"
5522          >
5523            <div class="v-stack gap-2"><div class="h-stack gap-2"><quantity-selector class="quantity-selector " ><button type="button" class="quantity-selector__button" disabled>
5524      <span class="sr-only">Decrease quantity</span><svg
5525        aria-hidden="true"
5526        focusable="false"
5527        width="8"
5528        fill="none"
5529        class="icon icon-quantity-minus"
5530        
5531        part="icon"
5532        viewBox="0 0 8 2"
5533      >
5534        <path d="M0 1H8" stroke="currentColor" stroke-width="1.5"/>
5535      </svg></button><quantity-input class="contents">
5536    <input class="quantity-selector__input subheading" type="number" value="1" name="quantity" inputmode="numeric" step="1" min="1" max="20" form="product-form-main-16190750032250-template--25965682590074__main"  aria-label="Change quantity"></quantity-input><button type="button" class="quantity-selector__button" >
5537      <span class="sr-only">Increase quantity</span><svg
5538        aria-hidden="true"
5539        focusable="false"
5540        width="8"
5541        fill="none"
5542        class="icon icon-quantity-plus"
5543        
5544        part="icon"
5545        viewBox="0 0 8 8"
5546      >
5547        <path d="M0 4H8" stroke="currentColor" stroke-width="1.5"/>
5548        <path d="M4 0V8" stroke="currentColor" stroke-width="1.5"/>
5549      </svg></button></quantity-selector>
5550
5551<button type="submit"  class="add-to-cart-button button w-full" ><button-content class="button__content" up-text="Add To Cart">Add To Cart</button-content></button></div><div data-shopify="payment-button" class="shopify-payment-button"> <shopify-accelerated-checkout recommended="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:false,&quot;name&quot;:&quot;shop_pay&quot;,&quot;wallet_params&quot;:{&quot;shopId&quot;:75289362745,&quot;merchantName&quot;:&quot;Sow \u0026 Arrow&quot;,&quot;personalized&quot;:true}}" fallback="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:true,&quot;name&quot;:&quot;buy_it_now&quot;,&quot;wallet_params&quot;:{}}" access-token="ac5f488cd338211fdf6d4c7833c3e413" buyer-country="GB" buyer-locale="en" buyer-currency="GBP" variant-params="[{&quot;id&quot;:57225090072954,&quot;requiresShipping&quot;:true}]" shop-id="75289362745" enabled-flags="[&quot;1172c16a&quot;,&quot;a1d1f9a1&quot;,&quot;f5afabb3&quot;,&quot;370070f3&quot;]" > <div class="shopify-payment-button__button" role="button" disabled aria-hidden="true" style="background-color: transparent; border: none"> <div class="shopify-payment-button__skeleton">&nbsp;</div> </div> <div class="shopify-payment-button__more-options shopify-payment-button__skeleton" role="button" disabled aria-hidden="true">&nbsp;</div> </shopify-accelerated-checkout> </div><style>
5552                  #product-form-main-16190750032250-template--25965682590074__main .shopify-payment-button__button {}
5553                </style></div>
5554          </buy-buttons>
5555        </div>
5556      </div><input type="hidden" name="product-id" value="16190750032250" /><input type="hidden" name="section-id" value="template--25965682590074__main" /></form></product-form></div></div></safe-sticky>
5557</div>
5558    </product-rerender>
5559  </div>
5560</div><product-sticky-add-to-cart class="product-sticky-add-to-cart color-scheme color-scheme--scheme-1" main-product-form="product-form-main-16190750032250-template--25965682590074__main">
5561    <product-rerender id="product-sticky-add-to-cart-16190750032250-template--25965682590074__main" observe-form="product-form-main-16190750032250-template--25965682590074__main">
5562      <div class="h-stack gap-6 sm-max:hidden"><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=70 70w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=140 140w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=210 210w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=280 280w" width="996" height="996" loading="lazy" class="constrained-image" style="--image-max-width: 70px"><div class="v-stack gap-0.5">
5563          <span class="subheading">Pure Peanut Crackers - Cracked Black Pepper - 20g</span><price-list class="price-list "><sale-price class="h6 text-on-sale">
5564      <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="h7 line-through">
5565        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
5566</div>
5567      </div>
5568<button type="submit"  class="sm-max:hidden sticky-atc-button button button--outline" style="--button-text-color: var(--button-background-primary);" form="product-form-main-16190750032250-template--25965682590074__main" ><button-content class="button__content" up-text="Add To Cart">Add To Cart</button-content></button>
5569<button type="submit"  class="sm:hidden sticky-atc-button button" form="product-form-main-16190750032250-template--25965682590074__main" ><button-content class="button__content" up-text="Add To Cart">Add To Cart</button-content></button><span hidden data-subscription-button-labels data-onetime="Add To Cart" data-subscription="Add &amp; Subscribe"></span>
5570    </product-rerender>
5571  </product-sticky-add-to-cart><template id="quick-buy-content">
5572  <product-rerender id="quick-buy-modal-content" observe-form="product-form-quick-buy-16190750032250-template--25965682590074__main">
5573    <div class="quick-buy">
5574      <style>
5575    @media screen and (max-width: 999px) {
5576      #shopify-section-template--25965682590074__main {--product-gallery-gap: 0rem;}
5577    }
5578
5579  @media screen and (min-width: 1000px) {
5580    #shopify-section-template--25965682590074__main {--product-gallery-gap: 0rem;}}
5581</style>
5582
5583<product-gallery id="product-gallery-product-gallery-carousel-16190750032250-template--25965682590074__main" class="product-gallery md-max:hidden" form="product-form-quick-buy-16190750032250-template--25965682590074__main" filtered-indexes="[]"  >
5584  <div class="product-gallery__image-list"><div class="relative">
5585      <scroll-carousel adaptive-height id="product-gallery-carousel-16190750032250-template--25965682590074__main" class="product-gallery__carousel scroll-area bleed md:unbleed" role="region"><div class="product-gallery__media snap-center is-initial " data-media-type="image" data-media-id="71649845969274" role="group" aria-label="Item 1 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="eager" fetchpriority="high" sizes="(max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846002042" role="group" aria-label="Item 2 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_3.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846034810" role="group" aria-label="Item 3 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_2.avif?v=1788431863&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div><div class="product-gallery__media snap-center  " data-media-type="image" data-media-id="71649846067578" role="group" aria-label="Item 4 of 4" ><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=400 400w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=500 500w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=600 600w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=700 700w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers_1.avif?v=1788431862&amp;width=800 800w" width="996" height="996" loading="lazy" sizes="auto, (max-width: 699px) 100vw, 50vw" style=" "></div>
5585</scroll-carousel><custom-cursor class="product-gallery__cursor custom-cursor" >
5586          <div class="circle-button circle-button--xl"><svg
5587        aria-hidden="true"
5588        focusable="false"
5589        width="12"
5590        class="icon icon-big-arrow-right"
5591        
5592        part="icon"
5593        viewBox="0 0 36 36"
5594      >
5595        <path fill="none" stroke="currentColor" stroke-width="2" d="M1 18h32M16.5 1.5 33 18 16.5 34.5"/>
5596      </svg></div>
5597        </custom-cursor></div><div class="product-gallery__controls-floating hidden md:contents"><carousel-navigation class="scroll-marker-group scroll-marker-group--lines align-self-center" aria-controls="product-gallery-carousel-16190750032250-template--25965682590074__main"><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="true">
5598                <span class="sr-only">Go to item 1</span>
5599              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
5600                <span class="sr-only">Go to item 2</span>
5601              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
5602                <span class="sr-only">Go to item 3</span>
5603              </button><button type="button" class="scroll-marker tap-area tap-area--sm"  aria-current="false">
5604                <span class="sr-only">Go to item 4</span>
5605              </button></carousel-navigation></div><div class="product-gallery__controls-floating contents md:hidden"></div></div></product-gallery>
5606
5607      <div class="v-stack gap-6">
5608        <div class="h-stack gap-6 md:hidden"><img src="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=996" alt="Pure Peanut Crackers - Cracked Black Pepper - 20g" srcset="//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=100 100w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=200 200w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=300 300w, //sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&amp;width=400 400w" width="996" height="996" loading="lazy" sizes="100px" class="quick-buy__product-image"><div class="v-stack gap-4">
5609            <div class="v-stack gap-2">
5610              <p class="h6">Pure Peanut Crackers - Cracked Black Pepper - 20g</p><price-list class="price-list "><sale-price class="subheading text-on-sale">
5611      <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="subheading text-subdued line-through">
5612        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
5613</div>
5614
5615            <a href="/products/pure-peanut-crackers-cracked-black-pepper-20g?variant=57225090072954" class="link justify-self-start">View details</a>
5616          </div>
5617        </div>
5618
5619        <hr class="divider md:hidden">
5620
5621        <div class="quick-buy__info"><safe-sticky class="product-info text-start">
5622  <div class="product-info__block-list">
5623<div
5624        class="product-info__block-item"
5625        data-block-id="vendor"
5626        data-block-type="vendor"
5627        
5628        
5629
5630      ><a href="/collections/vendors?q=Uppernut" class="vendor subheading text-subdued">Uppernut</a></div>
5631<div
5632        class="product-info__block-item"
5633        data-block-id="title"
5634        data-block-type="title"
5635        
5636        
5637
5638      ><h2 class="product-title h4">
5639                <a href="/products/pure-peanut-crackers-cracked-black-pepper-20g">Pure Peanut Crackers - Cracked Black Pepper - 20g</a>
5640              </h2></div>
5641<div
5642        class="product-info__block-item"
5643        data-block-id="badges"
5644        data-block-type="badges"
5645        
5646          data-block-allow-rerender
5647        
5648        
5649
5650      ><badge-list class="badge-list badge-list--row justify-start "><on-sale-badge class="badge badge--on-sale ">Save 20%</on-sale-badge></badge-list></div>
5651<div
5652        class="product-info__block-item"
5653        data-block-id="price"
5654        data-block-type="price"
5655        
5656          data-block-allow-rerender
5657        
5658        
5659
5660      ><div class="v-stack gap-2"><div class="price-rating" style="display: flex; align-items: center; gap: 0.75rem;">
5661                      <!-- Price -->
5662                      <div class="price"><price-list class="price-list justify-start"><sale-price class="h6 text-on-sale">
5663      <span class="sr-only">Sale price</span>£1.32</sale-price><compare-at-price class="h7 line-through">
5664        <span class="sr-only">Regular price</span>£1.65</compare-at-price></price-list>
5665</div></div></div></div>
5666<div
5667        class="product-info__block-item"
5668        data-block-id="payment_terms"
5669        data-block-type="payment-terms"
5670        
5671          data-block-allow-rerender
5672        
5673        
5674
5675      ><payment-terms class="payment-terms"><form method="post" action="/cart/add" id="product-form-quick-buy-16190750032250-template--25965682590074__main-payment-installment" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="57225090072954"><input type="hidden" name="product-id" value="16190750032250" /><input type="hidden" name="section-id" value="template--25965682590074__main" /></form></payment-terms></div>
5676<div
5677        class="product-info__block-item"
5678        data-block-id="inventory_ePBmxB"
5679        data-block-type="inventory"
5680        
5681          data-block-allow-rerender
5682        
5683        
5684
5685      ><variant-inventory class="inventory text-success justify-items-start"><span class="inventory__text">20 in stock</span>
5685<progress-bar
5686        id="progress-bar-template--25965682590074__main-16190750032250"
5687        class="progress-bar"
5688        animate-on-scroll
5689        aria-valuenow="20"
5690        aria-valuemax="50"
5691      ></progress-bar></variant-inventory></div>
5692<div
5693        class="product-info__block-item"
5694        data-block-id="AZnBrV3NDUnVmL2JVK__loox_reviews_loox_reviews_stories_mKPtR6-2"
5695        data-block-type="@app"
5696        
5697        
5698      ><div id="shopify-block-AZnBrV3NDUnVmL2JVK__loox_reviews_loox_reviews_stories_mKPtR6-1" class="shopify-block shopify-app-block"><loox-reviews-stories-entry-widget
5699	class='loox-widget'
5700	
5701	
5702		product-id='16190750032250'
5703		product-name='Pure Peanut Crackers - Cracked Black Pepper - 20g'
5704		product-image='//sowandarrow.com/cdn/shop/files/CrackedBlackPepperPeanutCrackers.avif?v=1788431863&width=64'
5705		tags='Blood Sugar Management,Crackers,Grain Free,High Protein,Kids Favourites,Nuts,Peanut Butter,Snacks,Truffles &amp; Bites'
5706	
5707></loox-reviews-stories-entry-widget>
5708
5709
5710</div></div>
5711<div
5712        class="product-info__block-item"
5713        data-block-id="AOFRCS0RaZUhmVHBRd__loox_reviews_loox_snippets_widget_Amnn7Y-2"
5714        data-block-type="@app"
5715        
5716        
5717      ><div id="shopify-block-AOFRCS0RaZUhmVHBRd__loox_reviews_loox_snippets_widget_Amnn7Y-1" class="shopify-block shopify-app-block"><loox-snippets-widget
5718	
5719	reviews-type='product-reviews'
5720	product-id='16190750032250'
5721	review-count=''
5722	show-border='true'
5723	show-rating='true'
5724	color-scheme='default'
5725	shadow=''
5726	font-size='14px'
5727	background-color='#ffffff'
5728	text-color='#321e1e'
5729	name-color=''
5730	border-color='#f1e4d3'
5731	rating-icon-color='#f6a429'
5732	border-radius='8px'
5733	show-image='true'
5734	hide-arrows-mobile='false'
5735	reviews-limit='10'
5736	shadow-color=''
5737	alignment='left'
5738	max-width=''
5739	class="loox-widget"
5740>
5741</loox-snippets-widget>
5742
5743
5744</div></div>
5745<div
5746        class="product-info__block-item"
5747        data-block-id="product_variations_kMDzb9"
5748        data-block-type="product-variations"
5749        
5750        
5751
5752      ><div class="variant-picker">
5753                <div class="variant-picker__option justify-start"><div class="h-stack gap-2">
5754                      <p class="text-subdued">Flavour:</p><span>Cracked Black Pepper</span></div><div class="variant-picker__option-values h-stack gap-3 wrap"><a
5755      href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g" 
5756
5757      class="block-swatch   "
5758    ><span>Original</span>
5759    </a><a
5760      href="/products/pure-peanut-crackers-cracked-black-pepper-20g" 
5761
5762      class="block-swatch   is-selected"
5763    ><span>Cracked Black Pepper</span>
5764    </a><a
5765      href="/products/pure-peanut-crackers-fiery-chilli-flakes-20g-copy" 
5766
5767      class="block-swatch   "
5768    ><span>Fiery Chilli Flakes</span>
5769    </a></div>
5770                </div>
5771              </div></div>
5772<div
5773        class="product-info__block-item"
5774        data-block-id="variant_picker"
5775        data-block-type="variant-picker"
5776        
5777          data-block-allow-rerender
5778        
5779        
5780
5781      ></div>
5782<div
5783        class="product-info__block-item"
5784        data-block-id="buy_buttons"
5785        data-block-type="buy-buttons"
5786        
5787          data-block-allow-rerender
5788        
5789        
5790
5791      ><product-form><form method="post" action="/cart/add" id="product-form-quick-buy-16190750032250-template--25965682590074__main" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="id" value="57225090072954">
5792
5793      
5794
5795      <div class="v-stack gap-4"><div class="v-stack gap-2">
5796          <buy-buttons
5797            class="buy-buttons buy-buttons--has-dynamic"
5798            form="product-form-quick-buy-16190750032250-template--25965682590074__main"
5799          >
5800            <div class="v-stack gap-2"><div class="h-stack gap-2"><quantity-selector class="quantity-selector " ><button type="button" class="quantity-selector__button" disabled>
5801      <span class="sr-only">Decrease quantity</span><svg
5802        aria-hidden="true"
5803        focusable="false"
5804        width="8"
5805        fill="none"
5806        class="icon icon-quantity-minus"
5807        
5808        part="icon"
5809        viewBox="0 0 8 2"
5810      >
5811        <path d="M0 1H8" stroke="currentColor" stroke-width="1.5"/>
5812      </svg></button><quantity-input class="contents">
5813    <input class="quantity-selector__input subheading" type="number" value="1" name="quantity" inputmode="numeric" step="1" min="1" max="20" form="product-form-quick-buy-16190750032250-template--25965682590074__main"  aria-label="Change quantity"></quantity-input><button type="button" class="quantity-selector__button" >
5814      <span class="sr-only">Increase quantity</span><svg
5815        aria-hidden="true"
5816        focusable="false"
5817        width="8"
5818        fill="none"
5819        class="icon icon-quantity-plus"
5820        
5821        part="icon"
5822        viewBox="0 0 8 8"
5823      >
5824        <path d="M0 4H8" stroke="currentColor" stroke-width="1.5"/>
5825        <path d="M4 0V8" stroke="currentColor" stroke-width="1.5"/>
5826      </svg></button></quantity-selector>
5827
5828<button type="submit"  class="add-to-cart-button button w-full" ><button-content class="button__content" up-text="Add To Cart">Add To Cart</button-content></button></div><div data-shopify="payment-button" class="shopify-payment-button"> <shopify-accelerated-checkout recommended="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:false,&quot;name&quot;:&quot;shop_pay&quot;,&quot;wallet_params&quot;:{&quot;shopId&quot;:75289362745,&quot;merchantName&quot;:&quot;Sow \u0026 Arrow&quot;,&quot;personalized&quot;:true}}" fallback="{&quot;supports_subs&quot;:true,&quot;supports_def_opts&quot;:true,&quot;name&quot;:&quot;buy_it_now&quot;,&quot;wallet_params&quot;:{}}" access-token="ac5f488cd338211fdf6d4c7833c3e413" buyer-country="GB" buyer-locale="en" buyer-currency="GBP" variant-params="[{&quot;id&quot;:57225090072954,&quot;requiresShipping&quot;:true}]" shop-id="75289362745" enabled-flags="[&quot;1172c16a&quot;,&quot;a1d1f9a1&quot;,&quot;f5afabb3&quot;,&quot;370070f3&quot;]" > <div class="shopify-payment-button__button" role="button" disabled aria-hidden="true" style="background-color: transparent; border: none"> <div class="shopify-payment-button__skeleton">&nbsp;</div> </div> <div class="shopify-payment-button__more-options shopify-payment-button__skeleton" role="button" disabled aria-hidden="true">&nbsp;</div> </shopify-accelerated-checkout> </div><style>
5829                  #product-form-quick-buy-16190750032250-template--25965682590074__main .shopify-payment-button__button {}
5830                </style></div>
5831          </buy-buttons>
5832        </div>
5833      </div><input type="hidden" name="product-id" value="16190750032250" /><input type="hidden" name="section-id" value="template--25965682590074__main" /></form></product-form></div><a href="/products/pure-peanut-crackers-cracked-black-pepper-20g" class="link sm-max:hidden">View details</a></div></safe-sticky>
5834</div>
5835      </div>
5836    </div>
5837  </product-rerender>
5838</template>
5839<script>
5840  // We save the product ID in local storage to be eventually used for recently viewed section
5841  try {
5842    let recentlyViewedProducts = JSON.parse(localStorage.getItem('theme:recently-viewed-products') || '[]');
5843
5844    recentlyViewedProducts = recentlyViewedProducts.filter(item => item !== 16190750032250); // Delete product to remove to the start
5845    recentlyViewedProducts.unshift(16190750032250); // Add at the start
5846
5847    localStorage.setItem('theme:recently-viewed-products', JSON.stringify(recentlyViewedProducts));
5848  } catch (e) {
5849    // Safari in private mode does not allow setting item, we silently fail
5850  }
5851</script>
5851
5852
5853
5854</section><section id="shopify-section-template--25965682590074__related-products" class="shopify-section shopify-section--related-products"><style>
5855  #shopify-section-template--25965682590074__related-products {
5856    --product-list-column-count: 1;
5857  }
5858
5859  @media screen and (min-width: 700px) {
5860    #shopify-section-template--25965682590074__related-products {
5861      --product-list-column-count: 2;
5862    }
5863  }
5864
5865  @media screen and (min-width: 1000px) {
5866    #shopify-section-template--25965682590074__related-products {
5867      --product-list-column-count: 4;
5868    }
5869  }
5870</style>
5871
5872<product-recommendations class="block color-scheme color-scheme--scheme-1" product="16190750032250" limit="10" intent="related"></product-recommendations>
5873
5874<script>
5875  (function() {
5876    if (window.__shopifyRelatedRecoTrackingInit) return;
5877    window.__shopifyRelatedRecoTrackingInit = true;
5878
5879    function getRecSessionId() {
5880      let id;
5881      try { id = sessionStorage.getItem('rec_session_id'); } catch {}
5882      if (!id) {
5883        id = window.__recSessionId || (crypto.randomUUID ? crypto.randomUUID() : `rec-session-${Date.now()}`);
5884        try { sessionStorage.setItem('rec_session_id', id); } catch {}
5885      }
5886      window.__recSessionId = id;
5887      return id;
5888    }
5889
5890    function sendRecEvent(payload) {
5891      const body = JSON.stringify({
5892        ...payload,
5893        session_id: getRecSessionId(),
5894        page_path: window.location.pathname,
5895        timestamp: new Date().toISOString()
5896      });
5897
5898      const endpoint = 'https://api.sowandarrow.com/recommendations';
5899
5900      const pingUrl = `${endpoint}?rx=1&d=${encodeURIComponent(body)}`;
5901      const img = new Image();
5902      window.__recoEventPings = window.__recoEventPings || [];
5903      window.__recoEventPings.push(img);
5904      img.onload = img.onerror = () => {
5905        window.__recoEventPings = window.__recoEventPings.filter((x) => x !== img);
5906      };
5907      img.src = pingUrl;
5908    }
5909
5910    const sentImpressions = new Set();
5911    const sentServed = new Set();
5912    const observer = new IntersectionObserver((entries) => {
5913      entries.forEach((entry) => {
5914        if (!entry.isIntersecting || entry.intersectionRatio < 0.35) return;
5915
5916        const card = entry.target;
5917        const requestUuid = card.dataset.recoRequestUuid;
5918        const href = card.dataset.recoUrl || null;
5919        const key = `${requestUuid || 'no-request'}|${href || card.dataset.recoHandle || 'unknown'}`;
5920        if (sentImpressions.has(key)) return;
5921
5922        sentImpressions.add(key);
5923        sendRecEvent({
5924          event_type: 'recommendation_impression',
5925          recommendation_type: 'shopify-related',
5926          placement: 'shopify-related-products',
5927          request_uuid: requestUuid || null,
5928          url: href,
5929          product_id: Number(card.dataset.recoProductId) || null,
5930          variant_id: Number(card.dataset.recoVariantId) || null,
5931          source_product_id: Number(card.dataset.recoSourceProductId) || null,
5932          served_rank: Number(card.dataset.recoRank) || null,
5933          customer_id: null
5934        });
5935      });
5936    }, { threshold: [0.35] });
5937
5938    function primeCard(card) {
5939      if (!card || card.dataset.recoObserved === '1') return;
5940
5941      const host = card.closest('product-recommendations');
5942      if (host && !host.dataset.recoRequestUuid) {
5943        host.dataset.recoRequestUuid = crypto.randomUUID ? crypto.randomUUID() : `rec-request-${Date.now()}`;
5944      }
5945
5946      const link = card.querySelector('a.product-card__media, a.product-title, a[data-instant]');
5947      card.dataset.recoHandle = card.getAttribute('handle') || '';
5948      let products = {};
5949      try { products = JSON.parse(host?.querySelector('[data-reco-products]')?.textContent || '{}'); } catch {}
5950      const product = products[card.dataset.recoHandle];
5951      card.dataset.recoProductId = product?.product_id || '';
5952      card.dataset.recoVariantId = product?.variant_id || '';
5953      card.dataset.recoSourceProductId = host?.getAttribute('product') || '';
5954      card.dataset.recoUrl = link?.getAttribute('href') || '';
5955      card.dataset.recoRequestUuid = host?.dataset.recoRequestUuid || '';
5956      card.dataset.recoObserved = '1';
5957      observer.observe(card);
5958    }
5959
5960    function primeAllCards() {
5961      const cards = Array.from(document.querySelectorAll('product-recommendations[intent="related"] .product-card'));
5962      const ranks = new Map();
5963      cards.forEach((card) => {
5964        const host = card.closest('product-recommendations');
5965        const rank = (ranks.get(host) || 0) + 1;
5966        ranks.set(host, rank);
5967        card.dataset.recoRank = String(rank);
5968        primeCard(card);
5969      });
5970
5971      cards.forEach((card, index) => {
5972        const requestUuid = card.dataset.recoRequestUuid || null;
5973        const link = card.querySelector('a.product-title, a.product-card__media, a[data-instant]');
5974        const title = (card.querySelector('a.product-title')?.textContent || '').trim() || null;
5975        const url = card.dataset.recoUrl || link?.getAttribute('href') || null;
5976        const key = `${requestUuid || 'no-request'}|${url || card.dataset.recoHandle || 'unknown'}|${card.dataset.recoRank}`;
5977        if (sentServed.has(key)) return;
5978
5979        sentServed.add(key);
5980        sendRecEvent({
5981          event_type: 'recommendation_served',
5982          recommendation_type: 'shopify-related',
5983          placement: 'shopify-related-products',
5984          request_uuid: requestUuid,
5985          product_id: Number(card.dataset.recoProductId) || null,
5986          variant_id: Number(card.dataset.recoVariantId) || null,
5987          source_product_id: Number(card.dataset.recoSourceProductId) || null,
5988          product_title: title,
5989          product_handle: card.dataset.recoHandle || null,
5990          url,
5991          served_rank: Number(card.dataset.recoRank) || null,
5992          customer_id: null
5993        });
5994      });
5995    }
5996
5997    document.addEventListener('click', (event) => {
5998      const control = event.target.closest('product-recommendations[intent="related"] .product-card a.product-card__media, product-recommendations[intent="related"] .product-card a.product-title, product-recommendations[intent="related"] .product-card a[data-instant], product-recommendations[intent="related"] .product-card button[aria-controls*="product-quick-buy"], product-recommendations[intent="related"] .product-card button[type="submit"]');
5999      if (!control) return;
6000      const card = control.closest('.product-card');
6001      if (!card) return;
6002      primeCard(card);
6003      const context = {
6004        recommendation_type: 'shopify-related',
6005        placement: 'shopify-related-products',
6006        request_uuid: card.dataset.recoRequestUuid || null,
6007        product_id: Number(card.dataset.recoProductId) || null,
6008        variant_id: Number(card.dataset.recoVariantId) || null,
6009        source_product_id: Number(card.dataset.recoSourceProductId) || null,
6010        served_rank: Number(card.dataset.recoRank) || null,
6011        customer_id: null
6012      };
6013      if (context.product_id) window.__storeRecContext?.(context);
6014      sendRecEvent({ ...context, event_type: 'recommendation_click', url: card.dataset.recoUrl || control.getAttribute('href') || null });
6015    });
6016
6017    const mo = new MutationObserver(primeAllCards);
6018    mo.observe(document.documentElement, { childList: true, subtree: true });
6019    primeAllCards();
6020  })();
6021</script>
6021
6022
6023
6024</section><section id="shopify-section-template--25965682590074__17516520624c5580e2" class="shopify-section shopify-section--apps"><div class="color-scheme color-scheme--scheme-1">
6025    <div class="container section-spacing"><div class="section-header " ><div class="prose prose-justify-left" ><h2 id="shopify-block-AUjZRbzRzNG90S1B1V__section-header" class="h3" >Reviews</h2><div class="max-w-md"><p>Take a look at reviews about this product to get a better about how people found it.</p></div>
6026</div></div><div id="shopify-block-AdENPUk42L3huaUxHV__loox_reviews_loox_dynamic_section_7KVYw3" class="shopify-block shopify-app-block">
6027
6028
6029
6030
6031
6032<div
6033	id="looxReviews"
6034	class="loox-widget"
6035	data-limit="20"
6036	
6037	
6038	data-product-thumbnails="false"
6039	
6040		data-product-id="16190750032250"
6041	�
6042	
6043	 data-reviews-to-display="" 
6044	 data-default-tab="automatic" 
6045	style="margin:0 auto;max-width:1920px;"
6046>
6047	<!-- BEGIN app snippet: loox-ssr-reviews-feed -->
6048<!-- END app snippet -->
6049</div>
6050
6051</div></div>
6052  </div>
6053</section>
6054    </main><!-- BEGIN sections: footer-group -->
6055<section id="shopify-section-sections--25965682491770__trust-icons" class="shopify-section shopify-section-group-footer-group shopify-section--trust-icons"><style>
6056    #shopify-section-sections--25965682491770__trust-icons {
6057      --trust-icons-item-count: 4;
6058    }
6059  </style>
6060
6061  <div class="color-scheme color-scheme--scheme-2">
6062    <div class="trust-icons"><scroll-carousel id="carousel-sections--25965682491770__trust-icons" class="trust-icons__carousel snap-x scroll-area bleed md:unbleed"><div class="trust-icons__item snap-center" role="group" aria-label="Item 1 of 4" >
6063            <div class="prose prose-justify-center prose--compact"><svg
6064        aria-hidden="true"
6065        focusable="false"
6066        width="20"
6067        class="shrink-0 icon icon-picto-truck"
6068        
6069          style="--icon-mobile-max-width: 20px; --icon-max-width: 24px"
6070        
6071        viewBox="0 0 24 24"
6072      >
6073        <path vector-effect="non-scaling-stroke" d="M4.05494 18.7851H0.999756V3H13.9998V6H20L23 12V18.7851H20" fill="none" stroke="currentColor" stroke-width="1"/>
6074        <path vector-effect="non-scaling-stroke" d="M9 18.7852H15" fill="none" stroke="currentColor" stroke-width="1"/>
6075        <path vector-effect="non-scaling-stroke" d="M23 12H13.9998V6" fill="none" stroke="currentColor" stroke-width="1"/>
6076        <path vector-effect="non-scaling-stroke" d="M4 18.5C4 19.163 4.26339 19.7989 4.73223 20.2678C5.20107 20.7366 5.83696 21 6.5 21C7.16304 21 7.79893 20.7366 8.26777 20.2678C8.73661 19.7989 9 19.163 9 18.5C9 17.837 8.73661 17.2011 8.26777 16.7322C7.79893 16.2634 7.16304 16 6.5 16C5.83696 16 5.20107 16.2634 4.73223 16.7322C4.26339 17.2011 4 17.837 4 18.5Z" fill="none" stroke="currentColor" stroke-width="1"/>
6077        <path vector-effect="non-scaling-stroke" d="M15 18.5C15 19.163 15.2634 19.7989 15.7322 20.2678C16.2011 20.7366 16.837 21 17.5 21C18.163 21 18.7989 20.7366 19.2678 20.2678C19.7366 19.7989 20 19.163 20 18.5C20 17.837 19.7366 17.2011 19.2678 16.7322C18.7989 16.2634 18.163 16 17.5 16C16.837 16 16.2011 16.2634 15.7322 16.7322C15.2634 17.2011 15 17.837 15 18.5Z" fill="none" stroke="currentColor" stroke-width="1"/>
6078      </svg><p class="subheading">Free Deliver Over £55</p><p class="text-subdued">Completely free shipping when you spend over £55.</p></div>
6079          </div><div class="trust-icons__item snap-center" role="group" aria-label="Item 2 of 4" >
6080            <div class="prose prose-justify-center prose--compact"><svg
6081        aria-hidden="true"
6082        focusable="false"
6083        width="20"
6084        class="shrink-0 icon icon-picto-express-delivery"
6085        
6086          style="--icon-mobile-max-width: 20px; --icon-max-width: 24px"
6087        
6088        viewBox="0 0 24 24"
6089      >
6090        <path vector-effect="non-scaling-stroke" d="M14 1V5" fill="none" stroke="currentColor" stroke-width="1"/>
6091        <path vector-effect="non-scaling-stroke" d="M11 1H17" fill="none" stroke="currentColor" stroke-width="1"/>
6092        <path vector-effect="non-scaling-stroke" d="M6.5166 9C6.84179 8.51328 7.21599 8.05604 7.63599 7.63604C9.32382 5.94821 11.6131 5 14 5C16.387 5 18.6761 5.94821 20.364 7.63604C22.0518 9.32387 23 11.6131 23 14C23 16.3869 22.0518 18.6761 20.364 20.364C18.6761 22.0518 16.387 23 14 23C11.6131 23 9.32382 22.0518 7.636 20.364C7.21599 19.944 6.84179 19.4867 6.5166 19" fill="none" stroke="currentColor" stroke-width="1"/>
6093        <path vector-effect="non-scaling-stroke" d="M14 9V14H18" fill="none" stroke="currentColor" stroke-width="1"/>
6094        <path vector-effect="non-scaling-stroke" d="M0 12H7" fill="none" stroke="currentColor" stroke-width="1"/>
6095        <path vector-effect="non-scaling-stroke" d="M3 16H7" fill="none" stroke="currentColor" stroke-width="1"/>
6096      </svg><p class="subheading">Next Day Delivery</p><p class="text-subdued">When you order before 1pm Mon - Thu.</p></div>
6097          </div><div class="trust-icons__item snap-center" role="group" aria-label="Item 3 of 4" >
6098            <div class="prose prose-justify-center prose--compact"><svg
6099        aria-hidden="true"
6100        focusable="false"
6101        width="20"
6102        class="shrink-0 icon icon-picto-chat"
6103        
6104          style="--icon-mobile-max-width: 20px; --icon-max-width: 24px"
6105        
6106        viewBox="0 0 24 24"
6107      >
6108        <path vector-effect="non-scaling-stroke" d="M2 2H22V19H11.1L6.25 22V19H2V2Z" fill="none" stroke="currentColor" stroke-width="1"/>
6109        <path vector-effect="non-scaling-stroke" d="M9 9.5V9C9 7.34315 10.3431 6 12 6C13.6569 6 15 7.34315 15 9V9.75L12 11.5V13" fill="none" stroke="currentColor" stroke-width="1"/>
6110        <path vector-effect="non-scaling-stroke" d="M12 14.5V16.5" fill="none" stroke="currentColor" stroke-width="1"/>
6111      </svg><p class="subheading">Customer Support</p><p class="text-subdued">You can live chat with us anytime.</p></div>
6112          </div><div class="trust-icons__item snap-center" role="group" aria-label="Item 4 of 4" >
6113            <div class="prose prose-justify-center prose--compact"><svg
6114        aria-hidden="true"
6115        focusable="false"
6116        width="20"
6117        class="shrink-0 icon icon-picto-secure"
6118        
6119          style="--icon-mobile-max-width: 20px; --icon-max-width: 24px"
6120        
6121        viewBox="0 0 24 24"
6122      >
6123        <path vector-effect="non-scaling-stroke" d="M3 1V18L11.9999 22.86L21 18V1H3Z" fill="none" stroke="currentColor" stroke-width="1"/>
6124        <path vector-effect="non-scaling-stroke" d="M8 10.5H16V15.5H8V10.5Z" fill="none" stroke="currentColor" stroke-width="1"/>
6125        <path vector-effect="non-scaling-stroke" d="M9.5 10.5V7.50002C9.5 6.1193 10.6193 5 12 5C13.3807 5 14.5 6.1193 14.5 7.50002V10.5" fill="none" stroke="currentColor" stroke-width="1"/>
6126      </svg><p class="subheading">Secure payment</p><p class="text-subdued">Your payment information is processed securely.</p></div>
6127          </div></scroll-carousel><carousel-navigation class="scroll-marker-group scroll-marker-group--lines justify-self-center md:hidden" aria-controls="carousel-sections--25965682491770__trust-icons"><button class="scroll-marker tap-area tap-area--sm" aria-current="true">
6128              <span class="sr-only">Go to item 1</span>
6129            </button><button class="scroll-marker tap-area tap-area--sm" aria-current="false">
6130              <span class="sr-only">Go to item 2</span>
6131            </button><button class="scroll-marker tap-area tap-area--sm" aria-current="false">
6132              <span class="sr-only">Go to item 3</span>
6133            </button><button class="scroll-marker tap-area tap-area--sm" aria-current="false">
6134              <span class="sr-only">Go to item 4</span>
6135            </button></carousel-navigation></div>
6136  </div>
6137</section><footer id="shopify-section-sections--25965682491770__footer" class="shopify-section shopify-section-group-footer-group shopify-section--footer"><div class="footer color-scheme color-scheme--scheme-2">
6138  <div class="container"><div class="footer__content"><div class="footer__block-list"><div class="footer__block footer__block--links footer__block--accordion-links" ><div class="v-stack gap-4.5 sm-max:hidden"><p class="subheading">Footer menu</p><ul class="v-stack gap-2.5 unstyled-list" role="list"><li>
6139                            <a href="/search" class="link-reversed link-tap-area">Search</a>
6140                          </li><li>
6141                            <a href="/blogs/health" class="link-reversed link-tap-area">Blogs</a>
6142                          </li><li>
6143                            <a href="/pages/refer-a-friend" class="link-reversed link-tap-area">Refer a Friend</a>
6144                          </li><li>
6145                            <a href="/policies/privacy-policy" class="link-reversed link-tap-area">Privacy Policy</a>
6146                          </li><li>
6147                            <a href="/policies/refund-policy" class="link-reversed link-tap-area">Refund Policy</a>
6148                          </li><li>
6149                            <a href="/policies/terms-of-service" class="link-reversed link-tap-area">Terms of Service</a>
6150                          </li></ul></div><accordion-disclosure class="accordion   sm:hidden" >
6151  <details class="accordion__disclosure"  >
6152    <summary class="accordion__summary   subheading"><span>Footer menu</span><svg
6153        aria-hidden="true"
6154        focusable="false"
6155        width="11"
6156        class="icon icon-accordion-small-arrow"
6157        
6158        part="icon"
6159        fill="none"
6160        viewBox="0 0 11 7"
6161      >
6162        <path stroke="currentColor" stroke-width="1.5" d="M10 1 5.5 5.5 1 1" />
6163      </svg></summary>
6164
6165    <div class="accordion__content "><ul class="v-stack gap-2.5 unstyled-list" role="list"><li>
6166                            <a href="/search" class="link-reversed link-tap-area">Search</a>
6167                          </li><li>
6168                            <a href="/blogs/health" class="link-reversed link-tap-area">Blogs</a>
6169                          </li><li>
6170                            <a href="/pages/refer-a-friend" class="link-reversed link-tap-area">Refer a Friend</a>
6171                          </li><li>
6172                            <a href="/policies/privacy-policy" class="link-reversed link-tap-area">Privacy Policy</a>
6173                          </li><li>
6174                            <a href="/policies/refund-policy" class="link-reversed link-tap-area">Refund Policy</a>
6175                          </li><li>
6176                            <a href="/policies/terms-of-service" class="link-reversed link-tap-area">Terms of Service</a>
6177                          </li></ul></div>
6178  </details>
6179</accordion-disclosure>
6180</div><div class="footer__block footer__block--text " ><div class="v-stack gap-4.5"><p class="subheading">We do things differently</p><div class="prose"><p>From our freshly baked low-carb bakes created without compromise, to our carefully selected range of supplements and products, everything we offer is chosen with purpose and backed by knowledge.</p></div></div></div></div></div><hr class="separator full-bleed">
6181
6182    <div class="footer__aside"><div class="h-stack gap-5 md:justify-start"><div class="relative">
6183      <button type="button" class="h-stack gap-2" aria-controls="popover-localization--sections--25965682491770__footer-country" aria-label="Change country or currency" aria-expanded="false"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span class="subheading">
6184            United Kingdom (GBP £)</span><svg
6185        aria-hidden="true"
6186        focusable="false"
6187        width="10"
6188        class="icon icon-chevron-down"
6189        
6190        part="icon"
6191        viewBox="0 0 10 9"
6192      >
6193        <path fill="none" stroke="currentColor" stroke-width="1.5" d="m1 2.5 4 4 4-4" />
6194      </svg></button>
6195
6196      <x-popover id="popover-localization--sections--25965682491770__footer-country" class="popover color-scheme color-scheme--scheme-1"  preferred-position="above">
6197        <p slot="header" class="subheading">Country</p><form method="post" action="/localization" id="localization-form--sections--25965682491770__footer-country" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="return_to" value="/products/pure-peanut-crackers-cracked-black-pepper-20g" /><div class="popover__value-list"><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GG" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60" alt="Guernsey" srcset="//cdn.shopify.com/static/images/flags/gg.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Guernsey (GBP £)</span>
6198              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="JE" aria-selected="false"><img src="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60" alt="Jersey" srcset="//cdn.shopify.com/static/images/flags/je.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>Jersey (GBP £)</span>
6199              </button><button type="submit" name="country_code" class="popover__value-option subheading link-faded-reverse" role="option" value="GB" aria-selected="true"><img src="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60" alt="United Kingdom" srcset="//cdn.shopify.com/static/images/flags/gb.svg?format=jpg&amp;width=60 60w" width="60" height="45" loading="lazy" class="country-flag"><span>United Kingdom (GBP £)</span>
6200              </button></div></form></x-popover>
6201    </div></div><ul class="social-media unstyled-list" role="list"><li class="social-media__item branding-colors--facebook">
6202      <a href="https://www.facebook.com/sowandarrow/" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Facebook"><svg
6203        aria-hidden="true"
6204        focusable="false"
6205        width="24"
6206        class="icon icon-facebook"
6207        
6208        viewBox="0 0 24 24"
6209      >
6210        <path fill="currentColor" fill-rule="evenodd" d="M2 12c0 4.95 3.6 9.05 8.35 9.9l.059-.048-.009-.002V14.8H7.9V12h2.5V9.8c0-2.5 1.6-3.9 3.9-3.9.7 0 1.5.1 2.2.2v2.55h-1.3c-1.2 0-1.5.6-1.5 1.4V12h2.65l-.45 2.8h-2.2v7.05l-.09.016.04.034C18.4 21.05 22 16.95 22 12c0-5.5-4.5-10-10-10S2 6.5 2 12Z" clip-rule="evenodd"/>
6211      </svg></a>
6212    </li><li class="social-media__item branding-colors--instagram">
6213      <a href="https://www.instagram.com/sowandarrow/?hl=en" class="tap-area" target="_blank" rel="noopener" aria-label="Follow on Instagram"><svg
6214        aria-hidden="true"
6215        focusable="false"
6216        width="24"
6217        class="icon icon-instagram"
6218        
6219        viewBox="0 0 24 24"
6220      >
6221        <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.4c-2.607 0-2.934.011-3.958.058-1.022.046-1.72.209-2.33.446a4.705 4.705 0 0 0-1.7 1.107 4.706 4.706 0 0 0-1.108 1.7c-.237.611-.4 1.31-.446 2.331C2.41 9.066 2.4 9.392 2.4 12c0 2.607.011 2.934.058 3.958.046 1.022.209 1.72.446 2.33a4.706 4.706 0 0 0 1.107 1.7c.534.535 1.07.863 1.7 1.108.611.237 1.309.4 2.33.446 1.025.047 1.352.058 3.959.058s2.934-.011 3.958-.058c1.022-.046 1.72-.209 2.33-.446a4.706 4.706 0 0 0 1.7-1.107 4.706 4.706 0 0 0 1.108-1.7c.237-.611.4-1.31.446-2.33.047-1.025.058-1.352.058-3.959s-.011-2.934-.058-3.958c-.047-1.022-.209-1.72-.446-2.33a4.706 4.706 0 0 0-1.107-1.7 4.705 4.705 0 0 0-1.7-1.108c-.611-.237-1.31-.4-2.331-.446C14.934 2.41 14.608 2.4 12 2.4Zm0 1.73c2.563 0 2.867.01 3.88.056.935.042 1.443.199 1.782.33.448.174.768.382 1.104.718.336.336.544.656.718 1.104.131.338.287.847.33 1.783.046 1.012.056 1.316.056 3.879 0 2.563-.01 2.867-.056 3.88-.043.935-.199 1.444-.33 1.782a2.974 2.974 0 0 1-.719 1.104 2.974 2.974 0 0 1-1.103.718c-.339.131-.847.288-1.783.33-1.012.046-1.316.056-3.88.056-2.563 0-2.866-.01-3.878-.056-.936-.042-1.445-.199-1.783-.33a2.974 2.974 0 0 1-1.104-.718 2.974 2.974 0 0 1-.718-1.104c-.131-.338-.288-.847-.33-1.783-.047-1.012-.056-1.316-.056-3.879 0-2.563.01-2.867.056-3.88.042-.935.199-1.443.33-1.782.174-.448.382-.768.718-1.104a2.974 2.974 0 0 1 1.104-.718c.338-.131.847-.288 1.783-.33C9.133 4.14 9.437 4.13 12 4.13Zm0 11.07a3.2 3.2 0 1 1 0-6.4 3.2 3.2 0 0 1 0 6.4Zm0-8.13a4.93 4.93 0 1 0 0 9.86 4.93 4.93 0 0 0 0-9.86Zm6.276-.194a1.152 1.152 0 1 1-2.304 0 1.152 1.152 0 0 1 2.304 0Z" fill="currentColor"/>
6222      </svg></a>
6223    </li></ul><div class="v-stack gap-3">
6224        <p class="text-sm">© 2026 - Sow &amp; Arrow <a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore"> </a></p></div>
6225    </div>
6226  </div>
6227</div>
6228
6229</footer>
6230<!-- END sections: footer-group --><x-toast class="toast">
6231      
6232    </x-toast>
6233<script>
6234(function () {
6235  if (window.__recAttributionInitialized) return;
6236  window.__recAttributionInitialized = true;
6237  var STORAGE_KEY = '__rec_ctx';
6238
6239  // Called by recommendation click handlers to stash context before navigation
6240  window.__storeRecContext = function (ctx) {
6241    try {
6242      sessionStorage.setItem(STORAGE_KEY, JSON.stringify({
6243        product_id: ctx.product_id,
6244        variant_id: ctx.variant_id || null,
6245        recommendation_type: ctx.recommendation_type,
6246        placement: ctx.placement,
6247        request_uuid: ctx.request_uuid || null,
6248        served_rank: ctx.served_rank || null,
6249        source_product_id: ctx.source_product_id || null,
6250        source_product_ids: ctx.source_product_ids || null,
6251        customer_id: ctx.customer_id || null,
6252        ts: Date.now()
6253      }));
6254    } catch (e) {}
6255  };
6256
6257  // Only run the listener on product pages
6258  if (window.location.pathname.indexOf('/products/') === -1) return;
6259
6260  document.addEventListener('variant:add', function handler(event) {
6261    var ctx;
6262    try { ctx = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || 'null'); } catch (e) { return; }
6263    if (!ctx || !ctx.product_id) return;
6264    if (!Number.isFinite(ctx.ts) || Date.now() - ctx.ts > 30 * 60 * 1000) {
6265      try { sessionStorage.removeItem(STORAGE_KEY); } catch (e) {}
6266      return;
6267    }
6268    var items = event.detail && event.detail.items;
6269    if (!Array.isArray(items)) return;
6270
6271    // Check if the added product matches the stored context
6272    var matched = items.some(function (item) {
6273      return String(item.product_id) === String(ctx.product_id);
6274    });
6275    if (!matched) return;
6276
6277    // Fire the attribution event
6278    var addedItem = items.find(function (item) {
6279      return String(item.product_id) === String(ctx.product_id);
6280    });
6281
6282    var sessionId;
6283    try {
6284      sessionId = sessionStorage.getItem('rec_session_id') || null;
6285    } catch (e) { sessionId = null; }
6286
6287    var payload = {
6288      event_type: 'recommendation_add_to_cart',
6289      recommendation_type: ctx.recommendation_type,
6290      placement: ctx.placement,
6291      request_uuid: ctx.request_uuid,
6292      served_rank: ctx.served_rank || null,
6293      product_id: ctx.product_id,
6294      variant_id: addedItem ? addedItem.variant_id || addedItem.id : ctx.variant_id,
6295      customer_id: ctx.customer_id,
6296      attributed_from: 'product-page',
6297      session_id: sessionId,
6298      page_path: window.location.pathname,
6299      timestamp: new Date().toISOString()
6300    };
6301    if (ctx.source_product_id) payload.source_product_id = ctx.source_product_id;
6302    if (ctx.source_product_ids) payload.source_product_ids = ctx.source_product_ids;
6303
6304    var endpoint = 'https://api.sowandarrow.com/recommendations';
6305    var pingUrl = endpoint + '?rx=1&d=' + encodeURIComponent(JSON.stringify(payload));
6306    var img = new Image();
6307    window.__recoEventPings = window.__recoEventPings || [];
6308    window.__recoEventPings.push(img);
6309    img.onload = img.onerror = function () {
6310      window.__recoEventPings = window.__recoEventPings.filter(function (x) { return x !== img; });
6311    };
6312    img.src = pingUrl;
6313
6314    // Clear context after firing so it only fires once
6315    try { sessionStorage.removeItem(STORAGE_KEY); } catch (e) {}
6316
6317  });
6318})();
6319</script>
6319
6320<div id="shopify-block-AakNoTzR0N0NkN3Z2W__11532412952436166569" class="shopify-block shopify-app-block">
6321
6322
6323	<!-- __LXV: 1788179975806;__LXR: https://loox.io;__LXC: zOPWEQsJt6; -->
6323<script>var loox_global_hash = '1788179975806';
6324var loox_bundle_reviews_enabled = false;</script>
6324<script>var visitor_level_referral = {"active":true,"rtl":false,"position":"right","button_text":"£5 Gift","button_bg_color":"118282","button_text_color":"ffffff","display_on_home_page":true,"display_on_product_page":true,"display_on_cart_page":true,"display_on_other_pages":true,"hide_on_mobile":false,"sidebar_visible":true,"orientation":"default","border_radius":{"key":"extraRounded","value":"16px","label":"Extra Rounded"}};
6325</script>
6325<style>.loox-reviews-default { max-width: 1200px; margin: 0 auto; }.loox-rating .loox-icon { color:#EBBF20; }
6326:root { --lxs-rating-icon-color: #EBBF20; }</style>
6327
6328
6329
6330
6331
6332
6333
6334</div><div id="shopify-block-AVUVMWlY4Y0F6UEhId__9859414570452352049" class="shopify-block shopify-app-block">
6334<script>
6335    var bgReferralIdentifiersRaw = "[]";
6336</script>
6336
6337
6338</div><div id="shopify-block-AMXlNNXM5SWtGZ0cxR__17151115064775110295" class="shopify-block shopify-app-block"><style data-recharge-theme='{"has_theme_customization": true, "design_mode": false }'>
6339  .recharge-theme {
6340    /* App */
6341    --recharge-app-background: #FAF4F0;
6342    --recharge-app-container: 1200px;
6343    --recharge-app-vertical-padding: 40px;
6344
6345    /* Brand colors */
6346    
6347--recharge-color-brand: #467C99;
6348
6349    /* Tints */
6350    --recharge-color-brand-120: #38637a;
6351    --recharge-color-brand-20: #6b96ad;
6352    --recharge-color-brand-40: #90b0c2;
6353    --recharge-color-brand-60: #b5cbd6;
6354    --recharge-color-brand-75: #d1dee6;
6355    --recharge-color-brand-85: #e3ebf0;
6356
6357    /* Neutral */
6358    --recharge-color-neutral: hsl(201, 35%, 7%);
6359    --recharge-color-neutral-80: hsl(201, 7%, 25%);
6360    --recharge-color-neutral-70: hsl(201, 5%, 35%);
6361    --recharge-color-neutral-40: hsl(201, 3%, 63%);
6362    --recharge-color-neutral-10: hsl(201, 2%, 91%);
6363    
6364
6365    /* Links */
6366    --recharge-button-secondary: #467C99;
6367    --recharge-button-secondary-120: #38637a;
6368    --recharge-button-secondary-60: #90b0c2;
6369
6370    /* Images */
6371    --recharge-images-ratio: 1;
6372
6373    /* Cards */
6374    
6375    --recharge-cards-background: #FFFFFF;
6376    
6377
6378    
6379    --recharge-cards-border-color: #F1E4D3;
6380    
6381
6382    /* Fonts */
6383    --recharge-typography-scale: 16px;
6384    --recharge-typography-size-1: calc(3 * var(--recharge-typography-scale));
6385    --recharge-typography-size-2: calc(2.25 * var(--recharge-typography-scale));
6386    --recharge-typography-size-3: calc(1.625 * var(--recharge-typography-scale));
6387    --recharge-typography-size-4: calc(1.25 * var(--recharge-typography-scale));
6388    --recharge-typography-size-5: calc(1 * var(--recharge-typography-scale));
6389    --recharge-typography-size-6: calc(.875 * var(--recharge-typography-scale));
6390
6391    /** Text **/
6392    --recharge-typography-light: #FFFFFF;
6393    --recharge-typography-primary: var(--recharge-color-neutral);
6394    --recharge-typography-secondary: var(--recharge-color-neutral-70);
6395
6396    /* Corners */
6397    --recharge-corners-radius: 0px;
6398
6399    --recharge-button-border-radius: 0px;
6400    
6401
6402    /* Views */
6403    
6404    --recharge-views-background: #FAF4F0;
6405    
6406
6407    /* Buttons */
6408    --recharge-button-font-family: inherit;
6409    --recharge-button-brand: var(--recharge-color-brand);
6410    --recharge-button-color: #FFFFFF;
6411  }
6412</style>
6413
6414</div><div id="shopify-block-AS1BkbkJ2TVRDNEVIW__13997699835324413730" class="shopify-block shopify-app-block"><style>
6415:root {
6416--ooo-wl-product-card-button-position-block: 16px;
6417--ooo-wl-product-card-button-position-inline: 16px;
6418--ooo-wl-product-card-button-icon-color: rgb(50 30 30);
6419--ooo-wl-product-card-button-border-radius: 0px;}
6420@media screen and (min-width: 1000px) {
6421  :root {}
6422}
6423</style>
6424<ooo-wl-product-card-injector hidden><ooo-wl-access-button><ooo-wl-product-card-button template="ooo-wl-product-card-button"></ooo-wl-product-card-button></ooo-wl-access-button></ooo-wl-product-card-injector>
6425<template id="ooo-wl-product-card-button">
6426  <link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-product-card-button.css">
6427  <button hidden type="button" role="checkbox" aria-checked="false" loading style="--ooo-wl-product-card-button-block-start: var(--ooo-wl-product-card-button-position-block);
6428--ooo-wl-product-card-button-inline-end: var(--ooo-wl-product-card-button-position-inline);"><!-- BEGIN app snippet: wishlist-icon --><svg fill="none" aria-hidden="false" focusable="false" width="22" class="ooo-wl-button-icon ooo-wl-button-icon--heart" viewBox="0 0 18 16"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M9.004 14.152 2.748 8.483c-3.4-3.4 1.598-9.928 6.256-4.647 4.659-5.281 9.635 1.27 6.257 4.647l-6.257 5.668Z"/></svg><!-- END app snippet --></button>
6429</template><!-- BEGIN app snippet: popup-login -->
6430<ooo-wl-login-popup id="ooo-wl-login-share">
6431  <template shadowrootmode="open">
6432    <link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-popup-login.css">
6433    <dialog>
6434      <div class="ooo-wl-popup__content">
6435        <button class="ooo-wl-popup__close" aria-label="Click to close popup"><svg fill="none" aria-hidden="false" focusable="false" width="25" class="" viewBox="0 0 18 18"><path stroke="currentColor" stroke-width="1.5" d="m4.757 4.757 8.486 8.48
64356M4.757 13.243l8.486-8.486"/></svg></button>
6436        <div class="ooo-wl-v-stack">
6437          <p class="ooo-wl-popup__title">Share your wishlist</p>
6438          <p class="ooo-wl-popup__description">You must log in to share your wishlist</p>
6439        </div>
6440        <a href="/account/login?checkout_url=%2Fproducts%2Fpure-peanut-crackers-cracked-black-pepper-20g" rel="nofollow noopener noreferrer" class="ooo-wl-popup__button">Login</a>
6441      </div>
6442    </dialog>
6443  </template>
6444</ooo-wl-login-popup>
6445<!-- END app snippet -->
6445<script>
6446window.ooo = window.ooo || {};
6447window.ooo.wishlist = window.ooo.wishlist || {};
6448window.ooo.wishlist.appProductCardActiveInCollection =false;
6449window.ooo.wishlist.customerId = null
6450window.ooo.wishlist.customerEmail = null
6451window.ooo.wishlist.customerHmac = "d47ef44188a5d84c49fa74c68adde3dbc42c2bdaafe2362bcd38d898912605ad"
6452window.ooo.wishlist.customerName = null
6453window.ooo.wishlist.moneyFormat = "£{{amount}}"
6454window.ooo.wishlist.moneyWithCurrencyFormat = "£{{amount}} GBP"
6455window.ooo.wishlist.currencyCodeEnabled = false
6456window.ooo.wishlist.__itemsLimit = () => { return false };
6457window.ooo.wishlist.__apiAccess = () => { return true };
6458window.ooo.wishlist.__marketsAccess = () => { return true }
6459</script>
6459
6460</div><div id="shopify-block-AR2FMSW9nNERWcU9kV__6174324309569838175" class="shopify-block shopify-app-block">
6461
6462
6463<div class="smile-shopify-init"
6464  data-channel-key="channel_HaO88gx7qrq4P6pG86K5QtSF"
6465  
6466></div>
6467
6468
6469</div><div id="shopify-block-AU3B4a2lHcnQ2Nko5U__2376147384742976171" class="shopify-block shopify-app-block">
6469<script>
6470  window.__WINDFALL_BOOTSTRAP__ = {
6471    contract: {"version":1,"currency":"GBP","updatedAt":"2026-10-04T04:00:50.890Z","offers":[{"id":"love-mushroom-facemask","type":"combo_gift","status":"active","discountTitle":"Love Mushroom Facemask","label":"Free Facemask","gift":{"variantId":"gid:\/\/shopify\/ProductVariant\/57051372749178"},"requires":{"allOf":[{"id":"omegas","label":"Regenerative Omegas","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/8429687832889","gid:\/\/shopify\/Product\/15338667213178","gid:\/\/shopify\/Product\/15629678248314"],"resolvedProductIds":["gid:\/\/shopify\/Product\/8429687832889","gid:\/\/shopify\/Product\/15338667213178","gid:\/\/shopify\/Product\/15629678248314"]},{"source":"subscribed_to","productIds":[],"collectionIds":[],"useCartProducts":true,"resolvedProductIds":[]}]},{"id":"love-mushroom","label":"any Love Mushroom product","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/16143740961146","gid:\/\/shopify\/Product\/16144944038266","gid:\/\/shopify\/Product\/16143786967418","gid:\/\/shopify\/Product\/16145058955642","gid:\/\/shopify\/Product\/16163974513018","gid:\/\/shopify\/Product\/16145075863930"],"collectionIds":[],"resolvedProductIds":["gid:\/\/shopify\/Product\/16143740961146","gid:\/\/shopify\/Product\/16144944038266","gid:\/\/shopify\/Product\/16143786967418","gid:\/\/shopify\/Product\/16145058955642","gid:\/\/shopify\/Product\/16163974513018","gid:\/\/shopify\/Product\/16145075863930"]},{"source":"subscribed_to","productIds":[],"collectionIds":[],"useCartProducts":true,"resolvedProductIds":[]}]}]},"autoAdd":true,"maxQuantity":10,"giftLineProperty":"_sow_gift","ui":{"badge":"FREE GIFT","lockedMessage":"Add {{missing}} for a Free Gift","unlockedMessage":"Free Gift Unlocked","showInCartRow":true},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278439813498","startsAt":"2026-08-13T23:15:49Z","endsAt":null},{"id":"spend-5-percent-100","type":"percent_off","status":"active","discountTitle":"5% Off","label":"5% Off","percent":5,"qualifying":{"requiresShipping":true,"excludeGiftLines":true},"ui":{"progressTier":1,"lockedMessage":"{{remaining}} away from 5% Off","unlockedMessage":"5% Off unlocked!"},"requires":{"allOf":[{"id":"spend-spend-5-percent-100","label":"Spend goal","anyOf":[{"source":"cart_value","amount":"100.00"}]}]},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278424117626","startsAt":"2026-08-13T23:07:51Z","endsAt":null,"combines":{"productDiscounts":true}},{"id":"free-cacto-drink","type":"combo_gift","status":"active","discountTitle":"Cacto Drink","label":"Free Cacto Drink","qualifying":{"requiresShipping":true,"excludeGiftLines":true},"autoAdd":true,"maxQuantity":10,"giftLineProperty":"_sow_gift","ui":{"lockedMessage":"Add {{missing}} to unlock your free Cacto drink","unlockedMessage":"Free gift unlocked!","badge":"FREE GIFT"},"requires":{"allOf":[{"id":"group-1-ptf0dc","label":"any Cacto Soda","anyOf":[{"source":"cart","productIds":["gid:\/\/shopify\/Product\/16123905999226","gid:\/\/shopify\/Product\/16123908325754"],"collectionIds":[],"resolvedProductIds":["gid:\/\/shopify\/Product\/16123905999226","gid:\/\/shopify\/Product\/16123908325754"]}]}]},"gift":{"variantId":"gid:\/\/shopify\/ProductVariant\/57162383491450"},"subscriptions":{"applyToSubscriptionProducts":false,"applyToOneTimePurchases":true},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278448857466","startsAt":"2026-08-14T11:54:42Z","endsAt":null},{"id":"quick-discounts","type":"quick_discount","status":"active","label":"Quick discounts","discountTitle":"Quick discounts","items":[{"productId":"gid:\/\/shopify\/Product\/9391544729913","variantId":"gid:\/\/shopify\/ProductVariant\/49080416207161","productTitle":"Organic Chaga Turmeric Latte - 120g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-chaga-turmeric-latte-120g-from-mushrooms-for-life-available-at-sow-arrow-469473.webp?v=1726162087","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/9391522644281","variantId":"gid:\/\/shopify\/ProductVariant\/49080212914489","productTitle":"Organic Cordyceps Beetroot Latte - 130g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-cordyceps-beetroot-latte-130g-from-mushrooms-for-life-available-at-sow-arrow-435353.webp?v=1726162096","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15071473926522","variantId":"gid:\/\/shopify\/ProductVariant\/55311076622714","productTitle":"Organic Lion's Mane Matcha L
6471atte - 75g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-matcha-latte-75g-from-mushrooms-for-life-available-at-sow-arrow-691063.webp?v=1745773903","price":"25.99","salePrice":"21.25","percent":18.2,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15519066521978","variantId":"gid:\/\/shopify\/ProductVariant\/56244032864634","productTitle":"Cheese, Bone Broth \u0026 Pumpkin Seed Muffins - 2 Pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/cheese-bone-broth-pumpkin-seed-muffins-2-pack-from-sow-arrow-available-at-sow-arrow-9071253.jpg?v=1770159078","price":"7.99","salePrice":"6.99","percent":12.5,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8254166237497","variantId":"gid:\/\/shopify\/ProductVariant\/45022310105401","productTitle":"Hungry Woman by Pauline Cox - Signed Edition","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/hungry-woman-by-pauline-cox-signed-edition-from-pauline-cox-available-at-sow-arrow-899776.png?v=1726161909","price":"30.00","salePrice":"22.00","percent":26.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058965299578","variantId":"gid:\/\/shopify\/ProductVariant\/55277108756858","productTitle":"Dr. Immune Five Syrup (Reishi, Agaricus, Oyster, Chaga, Shiitake) - 250ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/dr-immune-five-syrup-reishi-agaricus-oyster-chaga-shiitake-250ml-from-hiffas-da-terra-available-at-sow-arrow-828675.webp?v=1745028198","price":"29.99","salePrice":"22.99","percent":23.3,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16147013566842","variantId":"gid:\/\/shopify\/ProductVariant\/57056531906938","productTitle":"Creatine Monohydrate with Magnesium - 28 servings","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/creatine-monohydrate-with-magnesium-28-servings-from-hunter-gather-available-at-sow-arrow-6532218.webp?v=1783748113","price":"23.99","salePrice":"21.25","percent":11.4,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154190741882","variantId":"gid:\/\/shopify\/ProductVariant\/57081625575802","productTitle":"Grain-free Granola - Cinnamon","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-cinnamon-from-fudi-available-at-sow-arrow-7886385.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154157121914","variantId":"gid:\/\/shopify\/ProductVariant\/57081501483386","productTitle":"Grain-free Granola - Cocoa","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-cocoa-from-fudi-available-at-sow-arrow-5704363.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154161578362","variantId":"gid:\/\/shopify\/ProductVariant\/57081508594042","productTitle":"Grain-free Granola - Original","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-original-from-fudi-available-at-sow-arrow-2115599.png?v=1784328203","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16154154303866","variantId":"gid:\/\/shopify\/ProductVariant\/57081494929786","productTitle":"Grain-free Granola - Spiced Biscuit","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-granola-spiced-biscuit-from-fudi-available-at-sow-arrow-1060331.png?v=1784328208","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16143786967418","variantId":"gid:\/\/shopify\/ProductVariant\/57046455681402","productTitle":"Organic Calm Reish Mushroom Drops (Alcohol Free) -  50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-calm-reish-mushroom-drops-alcohol-free-50ml-from-love-mushrooms-available-at-sow-arrow-7132081.webp?v=1783416673","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16163974513018","variantId":"gid:\/\/shopify\/ProductVariant\/57122866594170","productTitle":"Organic Cordyceps Vitality liquid extract - 50ml (alcohol free)","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-cordyceps-vitality-liquid-extract-50ml-alcohol
6471-free-from-love-mushrooms-available-at-sow-arrow-4674430.webp?v=1785322450","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16143740961146","variantId":"gid:\/\/shopify\/ProductVariant\/57046219391354","productTitle":"Organic Lion’s Mane Mushroom Extract (Alcohol Free) -  50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-mushroom-extract-alcohol-free-50ml-from-love-mushrooms-available-at-sow-arrow-2774941.webp?v=1783416673","price":"15.99","salePrice":"13.60","percent":14.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16144944038266","variantId":"gid:\/\/shopify\/ProductVariant\/57051002208634","productTitle":"Organic Lion's Mane (4000mg per capsule) - 60 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lions-mane-4000mg-per-capsule-60-capsules-from-love-mushrooms-available-at-sow-arrow-6279251.webp?v=1783500129","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16145058955642","variantId":"gid:\/\/shopify\/ProductVariant\/57051261370746","productTitle":"Organic Reishi (4000mg per capsule) - 60 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-reishi-4000mg-per-capsule-60-capsules-from-love-mushrooms-available-at-sow-arrow-6810727.webp?v=1783582390","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16145075863930","variantId":"gid:\/\/shopify\/ProductVariant\/57051365114234","productTitle":"Collagen Truffle Cotton Face Mask - 5 pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/collagen-truffle-cotton-face-mask-5-pack-from-sow-arrow-available-at-sow-arrow-6192698.webp?v=1783582389","price":"19.99","salePrice":"16.99","percent":15,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173430309242","variantId":"gid:\/\/shopify\/ProductVariant\/57160314323322","productTitle":"Organic Bean Chilli - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-bean-chilli-415g-from-stoked-available-at-sow-arrow-9059328.webp?v=1786565719","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173429129594","variantId":"gid:\/\/shopify\/ProductVariant\/57160310980986","productTitle":"Organic Bolognese - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-bolognese-415g-from-stoked-available-at-sow-arrow-8077676.webp?v=1786565719","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173424148858","variantId":"gid:\/\/shopify\/ProductVariant\/57160300036474","productTitle":"Organic Lentil Dhal - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-lentil-dhal-415g-from-stoked-available-at-sow-arrow-3947139.webp?v=1786565721","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173427458426","variantId":"gid:\/\/shopify\/ProductVariant\/57160307048826","productTitle":"Organic Thai Green Curry - 415g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-thai-green-curry-415g-from-stoked-available-at-sow-arrow-1957289.webp?v=1786565720","price":"4.99","salePrice":"4.20","percent":15.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173431652730","variantId":"gid:\/\/shopify\/ProductVariant\/57160321794426","productTitle":"Organic Nacho Sauce - 400g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-nacho-sauce-400g-from-stoked-available-at-sow-arrow-8783507.webp?v=1786565718","price":"4.75","salePrice":"4.05","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173249659258","variantId":"gid:\/\/shopify\/ProductVariant\/57159452492154","productTitle":"Crispy Shitake Seaweed Snacks - 5 Pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/crispy-shitake-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-1069586.webp?v=1786565724","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173251133818","variantId":"gid:\/\/shopify\/ProductVariant\/57159465009530","productTitle":"Organic Olive Oil Seaweed Snacks - 5 Pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-olive-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-2065874.webp?v=1786565723","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/14864049734010","variantId":"gid:\/\/shopify\/ProductVariant\/54849733099898","productTitle":"Biodynamic, Organic Fine Drinking Chocolate - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/biodynamic-organic-fine-drinking-chocolate-300g-from-vivani-available-at-sow-arrow-895931.webp?v=1732881687","price":"6.49","salePrice":"3.99","percent":38.5,"reason":"Short dated"},{"productId":"gid:\/\/shopify\/Product\/15632127000954","variantId":"gid:\/\/shopify\/ProductVariant\/56489454633338","productTitle":"Keto Pizza Base - 6 Pack","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/keto-pizza-base-6-pack-from-sow-arrow-available-at-sow-arrow-4180271.jpg?v=1770159081","price":"14.99","salePrice":"13.49","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058953601402","variantId":"gid:\/\/shopify\/ProductVariant\/55277083853178","productTitle":"Organic Mico Cord (Cordyceps Extract) 835mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-cord-cordyceps-extract-835mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-164438.webp?v=1745028201","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058048582010","variantId":"gid:\/\/shopify\/ProductVariant\/55275421335930","productTitle":"Organic Mico-Chaga (Chaga Extract) 610mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-chaga-chaga-extract-610mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-509322.jpg?v=1744945379","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058005950842","variantId":"gid:\/\/shopify\/ProductVariant\/55275276697978","productTitle":"Organic Mico-Rei (Reishi Extract) 641mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-rei-reishi-extract-641mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-460826.webp?v=1744945383","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15058025480570","variantId":"gid:\/\/shopify\/ProductVariant\/55275322507642","productTitle":"Organic Mico-Vir (Reishi \u0026 Cordyceps Extract) 670mg per cap - 70 capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-mico-vir-reishi-cordyceps-extract-670mg-per-cap-70-capsules-from-hiffas-da-terra-available-at-sow-arrow-487132.webp?v=1744945379","price":"65.99","salePrice":"52.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16110621884794","variantId":"gid:\/\/shopify\/ProductVariant\/56900480696698","productTitle":"Free-Range Chicken Bone Broth Powder - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/free-range-chicken-bone-broth-powder-300g-from-hunter-gather-available-at-sow-arrow-3329877.webp?v=1786565721","price":"31.99","salePrice":"28.89","percent":9.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/15927167025530","variantId":"gid:\/\/shopify\/ProductVariant\/56750704296314","productTitle":"Organic, British Authentic Desi Ghee - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-british-authentic-desi-ghee-300g-from-shobhnas-ghee-available-at-sow-arrow-2538408.jpg?v=1775821527","price":"11.99","salePrice":"10.79","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16099802677626","variantId":"gid:\/\/shopify\/ProductVariant\/56859597177210","productTitle":"Collagen, MCT, Coffee Powder - 300g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/collagen-mct-coffee-powder-300g-from-hunter-gather-available-at-sow-arrow-9156615.webp?v=1778113822","price":"34.00","salePrice":"30.60","percent":10,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8730633896249","variantId":"gid:\/\/shopify\/ProductVariant\/46954128539961","productTitle":"Nano Gold \u0026 Platinum Glow \u0026 Shine - 50ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/nano-gold-platinum-glow-shine-50ml-from-the-health-factory-available-at-sow-arrow-524214.png?v=1726161966","price":"44.95","salePrice":"35.96","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240018653497","variantId":"gid:\/\/shopify\/ProductVariant\/44853200814393","productTitle":"Nano Gold \u0026 Platinum Glow \u0026 Shine Collagen Support - 15ml","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/nano-gold-platinum-glow-shine-collagen-support-15ml-from-the-health-factory-available-at-sow-arrow-373680.png?v=1726161966","price":"24.99","salePrice":"19.99","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190764384634","variantId":"gid:\/\/shopify\/ProductVariant\/57225131164026","productTitle":"Pure Peanut Crackers -Fiery Chilli Flakes - 20g","
6471imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/3a4d98_ea75ec7d42be4adf911e6fa635cfd3d0_mv2.avif?v=1788432935","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190754488698","variantId":"gid:\/\/shopify\/ProductVariant\/57225101803898","productTitle":"Pure Peanut Crackers - Original - 20g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/HighProteinPeanutCrackers3x20g_1.avif?v=1788432535","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16190750032250","variantId":"gid:\/\/shopify\/ProductVariant\/57225090072954","productTitle":"Pure Peanut Crackers - Cracked Black Pepper - 20g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/CrackedBlackPepperPeanutCrackers.avif?v=1788431863","price":"1.65","salePrice":"1.32","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185733611898","variantId":"gid:\/\/shopify\/ProductVariant\/57208215503226","productTitle":"Popped Foxnuts - Black Pepper - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-black-pepper-25g-from-bare-truth-available-at-sow-arrow-5601646.webp?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185731875194","variantId":"gid:\/\/shopify\/ProductVariant\/57208213635450","productTitle":"Popped Foxnuts - Chilli Paprika - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-chilli-paprika-25g-from-bare-truth-available-at-sow-arrow-7163493.jpg?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185729122682","variantId":"gid:\/\/shopify\/ProductVariant\/57208208261498","productTitle":"Popped Foxnuts - Cinnamon Vanilla - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-cinnamon-vanilla-25g-from-bare-truth-available-at-sow-arrow-1072382.webp?v=1787974039","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185728172410","variantId":"gid:\/\/shopify\/ProductVariant\/57208207245690","productTitle":"Popped Foxnuts - Coconut Cacao - 25g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/popped-foxnuts-coconut-cacao-25g-from-bare-truth-available-at-sow-arrow-1139398.jpg?v=1787974038","price":"2.29","salePrice":"1.95","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185703956858","variantId":"gid:\/\/shopify\/ProductVariant\/57208158454138","productTitle":"Crispy Sesame Oil Seaweed Snacks - 5 pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/crispy-sesame-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-1604112.webp?v=1788389354","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185703563642","variantId":"gid:\/\/shopify\/ProductVariant\/57208157372794","productTitle":"Avocado Oil Seaweed Snacks - 5 pack x 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/avocado-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-4521024.webp?v=1788389358","price":"4.99","salePrice":"4.25","percent":14.8,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16185706414458","variantId":"gid:\/\/shopify\/ProductVariant\/57208164581754","productTitle":"Avocado Oil Seaweed Snacks - Single - 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/avocado-oil-seaweed-snacks-5-pack-x-4g-from-morish-available-at-sow-arrow-4521024.webp?v=1788389358","price":"1.29","salePrice":"1.10","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16173468320122","variantId":"gid:\/\/shopify\/ProductVariant\/57160449753466","productTitle":"Organic Olive Oil Seaweed Snacks - Single pack - 4g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-olive-oil-seaweed-snacks-single-pack-4g-from-morish-available-at-sow-arrow-8776612.webp?v=1788719775","price":"1.29","salePrice":"1.10","percent":14.7,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196423844218","variantId":"gid:\/\/shopify\/ProductVariant\/57248296763770","productTitle":"Organic Garden Pea \u0026 Vegetable Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-garden-pea-vegetable-soup-from-mr-organic-available-at-sow-arrow-6752651.webp?v=1788968290","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196414472570","variantId":"gid:\/\/shopify\/ProductVariant\/57248216514938","productTitle":"Organic Pumpkin, Carrot \u0026 Chilli  Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-pumpkin-carrot-chilli-soup-from-mr-organic-available-at-sow-arrow-5572721.webp?v=1788968290","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16196413129082","variantId":"gid:\/\/shopify\/ProductVariant\/57248213696890","productTitle":"Organic Tomato \u0026 Lentil Soup","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/organic-tomato-lentil-soup-from-mr-organic-available-at-sow-arrow-7972503.jpg?v=1788968289","price":"2.39","salePrice":"2.03","percent":15.1,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16099857695098","variantId":"gid:\/\/shopify\/ProductVariant\/56859825996154","productTitle":"Vitamin D3 + K2 Oral Spray","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-k2-oral-spray-from-kiki-health-available-at-sow-arrow-2500733.webp?v=1778113820","price":"20.99","salePrice":"16.79","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/16210802966906","variantId":"gid:\/\/shopify\/ProductVariant\/57297137435002","productTitle":"Grain-free, low carb - Original Toasted Muesli - 250g","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/grain-free-low-carb-original-toasted-muesli-250g-from-fudi-available-at-sow-arrow-6632558.webp?v=1790211191","price":"7.49","salePrice":"6.75","percent":9.9,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/14866288705914","variantId":"gid:\/\/shopify\/ProductVariant\/54853839913338","productTitle":"Vitamin D3 (2
6471000IU) \u0026 K2 - 100 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-k2-100-capsules-from-terranova-available-at-sow-arrow-553422.webp?v=1733047619","price":"51.99","salePrice":"41.59","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020095289","variantId":"gid:\/\/shopify\/ProductVariant\/44853202977081","productTitle":"Vitamin D3 (2000IU) \u0026 K2 - 50 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-k2-50-capsules-from-terranova-available-at-sow-arrow-579237.jpg?v=1726162431","price":"28.69","salePrice":"22.95","percent":20,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020128057","variantId":"gid:\/\/shopify\/ProductVariant\/44865340899641","productTitle":"Vitamin D3 2000IU (50ug) Complex - 50 or 100 capsules","variantTitle":"50 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-50ug-complex-50-or-100-capsules-from-terranova-available-at-sow-arrow-595618.jpg?v=1726162432","price":"15.29","salePrice":"12.32","percent":19.4,"reason":"Special Offers"},{"productId":"gid:\/\/shopify\/Product\/8240020128057","variantId":"gid:\/\/shopify\/ProductVariant\/44865340932409","productTitle":"Vitamin D3 2000IU (50ug) Complex - 50 or 100 capsules","variantTitle":"100 Capsules","imageUrl":"https:\/\/cdn.shopify.com\/s\/files\/1\/0752\/8936\/2745\/files\/vitamin-d3-2000iu-50ug-complex-50-or-100-capsules-from-terranova-available-at-sow-arrow-992320.jpg?v=1726162432","price":"28.89","salePrice":"21.51","percent":25.5,"reason":"Special Offers"}],"quickDefaults":{"reasons":["Sale","Clearance","Short dated","Damaged packaging","Display stock","Special Offers","Quick discounts"],"reasonsConfigured":true},"qualifying":{"requiresShipping":true,"excludeGiftLines":true},"ui":{"showInCart":false},"discountGid":"gid:\/\/shopify\/DiscountAutomaticNode\/2278451577210","startsAt":"2026-08-14T11:54:43Z","endsAt":null,"subscriptions":{"recurringCycleLimit":1},"quickReasons":["Special Offers","Short dated"],"quickItems":[["49080416207161","21.25",0],["49080212914489","21.25",0],["55311076622714","21.25",0],["56244032864634","6.99",0],["45022310105401","22.00",0],["55277108756858","22.99",0],["57056531906938","21.25",0],["57081625575802","6.75",0],["57081501483386","6.75",0],["57081508594042","6.75",0],["57081494929786","6.75",0],["57046455681402","13.60",0],["57122866594170","13.60",0],["57046219391354","13.60",0],["57051002208634","16.99",0],["57051261370746","16.99",0],["57051365114234","16.99",0],["57160314323322","4.20",0],["57160310980986","4.20",0],["57160300036474","4.20",0],["57160307048826","4.20",0],["57160321794426","4.05",0],["57159452492154","4.25",0],["57159465009530","4.25",0],["54849733099898","3.99",1],["56489454633338","13.49",0],["55277083853178","52.79",0],["55275421335930","52.79",0],["55275276697978","52.79",0],["55275322507642","52.79",0],["56900480696698","28.89",0],["56750704296314","10.79",0],["56859597177210","30.60",0],["46954128539961","35.96",0],["44853200814393","19.99",0],["57225131164026","1.32",0],["57225101803898","1.32",0],["57225090072954","1.32",0],["57208215503226","1.95",0],["57208213635450","1.95",0],["57208208261498","1.95",0],["57208207245690","1.95",0],["57208158454138","4.25",0],["57208157372794","4.25",0],["57208164581754","1.10",0],["57160449753466","1.10",0],["57248296763770","2.03",0],["57248216514938","2.03",0],["57248213696890","2.03",0],["56859825996154","16.79",0],["57297137435002","6.75",0]]}]},
6472    currency: "GBP",
6473    shopDate: "2026-10-04",
6474    customer: {
6475      loggedIn: false,
6476      ordersCount: 0,
6477      totalSpentCents: 0,
6478      hasOmegaSubscription: false,
6479      subscribedProductIds: []
6480    }
6481  };
6482</script>
vendor: 1 bytes, line 6482
6482
6483<script src="https://cdn.shopify.com/extensions/01a000c9-2e77-7daa-8e50-42b6ab534a39/windfall-9/assets/quiver-offers.js" defer></script>
6483
6484
6485
6486</div><div id="shopify-block-AOU94K1p0RDB0RlNGR__2883025457459210873" class="shopify-block shopify-app-block">
6486<script>
6487  window.ooo = window.ooo || {};
6488  window.ooo.wishlist = window.ooo.wishlist || {};
6489  window.ooo.wishlist.accessToWishlist ='login_to_use';
6490  window.ooo.wishlist.sharedWishlist = true;
6491  window.ooo.wishlist.showShareWishlistButton = true;
6492  window.ooo.wishlist.useVariants = false;
6493  window.ooo.wishlist.translations = window.ooo.wishlist.translations || {};
6494  window.ooo.wishlist.translations['shared_title'] = "Shared wishlist";
6495  window.ooo.wishlist.translations['shared_title_with_name'] = "Shared wishlist of";
6496  window.ooo.wishlist.translations['add_to_wishlist'] = "Add to wishlist button";
6497  window.ooo.wishlist.translations['remove_from_wishlist'] = "Remove from wishlist button";
6498  window.ooo.wishlist.translations['each'] = "ea";
6499  window.ooo.wishlist.selectedTheme = "stretch";
6500  window.ooo.wishlist.appSetupActive = true;
6501  window.ooo.wishlist.isB2bUser =null;
6502  window.ooo.wishlist.customerId = null;
6503  window.ooo.wishlist.customerHmac = "68d5eb3c528679cf51f73ede4b3824ac5b3431b9e0da39d290fc9ca9590e3693";
6504  window.ooo.wishlist.customerName = null;
6505  window.ooo.wishlist.customerEmail = null;
6506  window.ooo.wishlist.moneyFormat = "£{{amount}}";
6507  window.ooo.wishlist.moneyWithCurrencyFormat = "£{{amount}} GBP";
6508  window.ooo.wishlist.currencyCodeEnabled = false;
6509  window.ooo.wishlist.appVersion = 1;
6510  window.ooo.wishlist.lastUpdatedAt = null;
6511  window.ooo.wishlist.wishlistCount = null;
6512  window.ooo.wishlist.__checkoutAccess = () => { return false };
6513  window.ooo.wishlist.__itemsLimit = () => { return false };
6514  window.ooo.wishlist.__apiAccess = () => { return true };
6515  window.ooo.wishlist.__marketsAccess = () => { return true };
6516  window.ooo.wishlist.__int = () => { return { px: false, kla: false, modules: null } };window.ooo.wishlist.hmac = "c3f01ea838d3b374b079c23a86b70e7610f2bfe27b9afe9351a1857519fd9c80";
6517  window.ooo.wishlist.hmacApi = "48ab9777e79112b30eff8e0e37cdb62b60cbec497bfbad20104f7ba999555625";
6518</script>
6518
6519<link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-global-style.css"/><!-- BEGIN app snippet: wishlist-css-tokens --><style>
6520:root {
6521--stretch-button-background-color: 50 30 30;
6522--stretch-button-text-color: 255 255 255;
6523--theme-text-color: 50 30 30;
6524--theme-background-color: 250 244 240;--theme-border-color: 230 223 219;--ooo-wl-page-product-card-container-column-gap: 0;
6525--ooo-wl-page-product-card-container-row-gap: 0;
6526--ooo-wl-page-product-card-info-container-padding-inline: 10px;
6527--ooo-wl-page-product-card-info-container-padding-block: 0 10px;--theme-swatches-width: 30px;
6528--theme-swatches-height: 13px;
6529--theme-swatches-radius: 0;
6530--theme-swatches-selected-radius: 0;
6531--theme-swatches-selected-offset: none;
6532--theme-swatches-selected-bottom: -4px;
6533--theme-swatches-outline-color: transparent;
6534--theme-swatches-outline-border-width: 0;
6535--theme-swatches-outline-width: 100%;
6536--theme-swatches-outline-height: 2px;
6537--theme-swatches-selected-background-color: rgb(0, 0, 0);
6538}
6539</style>
6539<script>window.ooo = window.ooo || {};window.ooo.wishlist.stretchThemeProductListingSpacing = "none"</script>
6539<!-- END app snippet --><link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-css-token-theme-stretch.css" /><!-- BEGIN app snippet: popup-login -->
6540<ooo-wl-login-popup id="ooo-wl-login-access">
6541  <template shadowrootmode="open">
6542    <link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-popup-login.css">
6543    <dialog>
6544      <div class="ooo-wl-popup__content">
6545        <button class="ooo-wl-popup__close" aria-label="Click to close popup"><svg fill="none" aria-hidden="false" focusable="false" width="25" class="" viewBox="0 0 18 18"><path stroke="currentColor" stroke-width="1.5" d="m4.757 4.757 8.486 8.486M4.757 13.243l8.486-8.486"/></svg></button>
6546        <div class="ooo-wl-v-stack">
6547          <p class="ooo-wl-popup__title">Access your wishlist</p>
6548          <p class="ooo-wl-popup__description">You must log in to access to your wishlist</p>
6549        </div>
6550        <a href="/account/login?checkout_url=%2Fproducts%2Fpure-peanut-crackers-cracked-black-pepper-20g" rel="nofollow noopener noreferrer" class="ooo-wl-popup__button">Login</a>
6551      </div>
6552    </dialog>
6553  </template>
6554</ooo-wl-login-popup>
6555<!-- END app snippet --><!-- BEGIN app snippet: popup-login -->
6556<ooo-wl-login-popup id="ooo-wl-login-share">
6557  <template shadowrootmode="open">
6558    <link rel="stylesheet" href="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/wishlist-popup-login.css">
6559    <dialog>
6560      <div class="ooo-wl-popup__content">
6561        <button class="ooo-wl-popup__close" aria-label="Click to close popup"><svg fill="none" aria-hidden="false" focusable="false" width="25" class="" viewBox="0 0 18 18"><path stroke="currentColor" stroke-width="1.5" d="m4.757 4.757 8.486 8.486M4.757 13.243l8.486-8.486"/></svg></button>
6562        <div class="ooo-wl-v-stack">
6563          <p class="ooo-wl-popup__title">Share your wishlist</p>
6564          <p class="ooo-wl-popup__description">You must log in to share your wishlist</p>
6565        </div>
6566        <a href="/account/login?checkout_url=%2Fproducts%2Fpure-peanut-crackers-cracked-black-pepper-20g" rel="nofollow noopener noreferrer" class="ooo-wl-popup__button">Login</a>
6567      </div>
6568    </dialog>
6569  </template>
6570</ooo-wl-login-popup>
6571<!-- END app snippet --><ooo-wl-tooltip hidden><span id="ooo-wl-tooltip"><span data-action="success-icon"><!-- BEGIN app snippet: wishlist-icon --><svg fill="none" aria-hidden="false" focusable="false" width="12" class="ooo-wl-button-icon ooo-wl-button-icon--tick" viewBox="0 0 12 12"><path stroke="currentColor" stroke-width="1.5" d="m1 5.941 3.53 3.53L11 3"/></svg><!-- END app snippet --></span><span data-action="error-icon"><!-- BEGIN app snippet: wishlist-icon --><svg fill="none" aria-hidden="false" focusable="false" width="12" class="ooo-wl-button-icon ooo-wl-button-icon--warning" viewBox="0 0 13 14"><circle cx="6.5" cy="7" r="6.5" fill="var(--ooo-wl-page-product-card-form-tooltip-error-color)"/><path fill="currentColor" d="M6.75 8.47a.387.387 0 0 1-.3-.12.606.606 0 0 1-.12-.34l-.3-3.82c-.02-.247.033-.443.16-.59.127-.153.313-.23.56-.23.24 0 .42.077.54.23.127.147.18.343.16.59l-.3 3.82a.522.522 0 0 1-.12.34.344.344 0 0 1-.28.12Zm0 2.08a.744.744 0 0 1-.55-.21.751.751 0 0 1-.2-.54c0-.213.067-.387.2-.52.14-.14.323-.21.55-.21.233 0 .413.07.54.21.133.133.2.307.2.52 0 .22-.067.4-.2.54-.127.14-.307.21-.54.21Z"/></svg><!-- END app snippet --></span><span data-action="message"></span></span></ooo-wl-tooltip><!-- BEGIN app snippet: import-scripts -->
6572<script type="module" src="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/ooo-wishlist.min.js"></script>
vendor: 1 bytes, line 6572
6572
6573<script type="module" src="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/ooo-wishlist-product-page.min.js"></script>
vendor: 1 bytes, line 6573
6573
6574<script type="module" src="https://cdn.shopify.com/extensions/01a0fcc1-0c55-7889-b686-426130743326/wishlist-power-300/assets/ooo-wishlist-product-card.min.js"></script>
6574<!-- END app snippet -->
6575</div>
6575<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
6575
6576<shopify-store store-domain="https://sowandarrow.com" country="GB" language="en"></shopify-store>
6577<shopify-chat></shopify-chat>
6578</body>
6579</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.