PageSourceSearch

https://wenonah.com/pages/store-locator

html wenonah.com collected 2026-10-01 14:31:11 UTC 198,299 bytes, 3,179 lines download raw bytes

1<!doctype html>
2<html class="js" lang="en">
3  <head>
4    <meta charset="utf-8">
5    <meta http-equiv="X-UA-Compatible" content="IE=edge">
6    <meta name="viewport" content="width=device-width,initial-scale=1">
7    <meta name="theme-color" content="">
8    <link rel="canonical" href="https://wenonah.com/pages/store-locator">
9
10
11
12<link rel="icon" type="image/png" href="//wenonah.com/cdn/shop/files/favicon.jpg?crop=center&height=32&v=1781110796&width=32"><link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin><title>
13      Wenonah Canoe Dealers – Find a Store Near You
14</title>
15
16    
17      <meta name="description" content="Find an authorized Wenonah Canoe dealer near you. Use our store locator to discover local retailers carrying Wenonah canoes and accessories.">
18    
19
20    
21
22<meta property="og:site_name" content="Wenonah Canoe">
23<meta property="og:url" content="https://wenonah.com/pages/store-locator">
24<meta property="og:title" content="Wenonah Canoe Dealers – Find a Store Near You">
25<meta property="og:type" content="website">
26<meta property="og:description" content="Find an authorized Wenonah Canoe dealer near you. Use our store locator to discover local retailers carrying Wenonah canoes and accessories."><meta property="og:image" content="http://wenonah.com/cdn/shop/files/WenonahAdminLogo.png?height=628&pad_color=ffffff&v=1748551425&width=1200">
27  <meta property="og:image:secure_url" content="https://wenonah.com/cdn/shop/files/WenonahAdminLogo.png?height=628&pad_color=ffffff&v=1748551425&width=1200">
28  <meta property="og:image:width" content="1200">
29  <meta property="og:image:height" content="628"><meta name="twitter:card" content="summary_large_image">
30<meta name="twitter:title" content="Wenonah Canoe Dealers – Find a Store Near You">
31<meta name="twitter:description" content="Find an authorized Wenonah Canoe dealer near you. Use our store locator to discover local retailers carrying Wenonah canoes and accessories.">
32
33
34    
34<script src="//wenonah.com/cdn/shop/t/2/assets/constants.js?v=132983761750457495441749921819" defer="defer"></script>
34
35    
35<script src="//wenonah.com/cdn/shop/t/2/assets/pubsub.js?v=25310214064522200911749921820" defer="defer"></script>
35
36    
36<script src="//wenonah.com/cdn/shop/t/2/assets/global.js?v=50682399300256351251774710950" defer="defer"></script>
36
37    
37<script src="//wenonah.com/cdn/shop/t/2/assets/details-disclosure.js?v=13653116266235556501749921819" defer="defer"></script>
37
38    
38<script src="//wenonah.com/cdn/shop/t/2/assets/details-modal.js?v=25581673532751508451749921819" defer="defer"></script>
38
39    
39<script src="//wenonah.com/cdn/shop/t/2/assets/search-form.js?v=133129549252120666541749921820" defer="defer"></script>
39
40
41    <!-- Add Bootstrap -->
42        
42<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" defer="defer"></script>
42
43    
43<script type="text/javascript" src="https://code.jquery.com/ui/1.10.3/jquery-ui.js" defer="defer"></script>
43
44    
44<script type="text/javascript" defer="defer" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
44
45
46    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" defer="defer" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous" />
47    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" defer="defer" />
47<script src="//wenonah.com/cdn/shop/t/2/assets/animations.js?v=88693664871331136111749921818" defer="defer"></script>
47<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
47<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/76832899308/digital_wallets/dialog">
48<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
48<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
vendor: 1 bytes, line 48
48
49<script id="shopify-features" type="application/json">{"accessToken":"ab965ea6b3e4f3217506184fe68f1224","betas":["rich-media-storefront-analytics"],"domain":"wenonah.com","predictiveSearch":true,"shopId":76832899308,"locale":"en"}</script>
vendor: 1 bytes, line 49
49
50<script>var Shopify = Shopify || {};
51Shopify.shop = "2rswcr-15.myshopify.com";
52Shopify.locale = "en";
53Shopify.currency = {"active":"USD","rate":"1.0"};
54Shopify.country = "US";
55Shopify.theme = {"name":"Dawn","id":152829755628,"schema_name":"Dawn","schema_version":"15.3.0","theme_store_id":887,"role":"main"};
56Shopify.theme.handle = "null";
57Shopify.theme.style = {"id":null,"handle":null};
58Shopify.cdnHost = "wenonah.com/cdn";
59Shopify.routes = Shopify.routes || {};
60Shopify.routes.root = "/";
61Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
62Shopify.SignInWithShop = Shopify.SignInWithShop || {};
63Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
64Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 64
64
65<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 65
65
66<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 66
66
67<script>
68  window.Shopify = window.Shopify || {};
69  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
70  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
71  window.Shopify.SignInWithShop.eligible = true;
72</script>
vendor: 1 bytes, line 72
72
73<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 73
73
74<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 74
74
75<script type="module">
76  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
77
78  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
79
80</script>
vendor: 1 bytes, line 80
80
81<script>
82  window.Shopify = window.Shopify || {};
83  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
84  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"]};
85</script>
vendor: 1 bytes, line 85
85
86<script id="__st">var __st={"a":76832899308,"offset":-18000,"reqid":"63f1af95-3a32-484f-ade3-ca4b58dd6bf8-1790865070","pageurl":"wenonah.com\/pages\/store-locator","s":"pages-134222971116","u":"b6615ea2f219","p":"page","rtyp":"page","rid":134222971116};</script>
vendor: 1 bytes, line 86
86
87<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 87
87
88<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 88
88
89<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//wenonah.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 89
89
90<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 = "//wenonah.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>
90<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 90
90
91<script>
92  window.Shopify = window.Shopify || {};
93  window.Shopify.MCP = window.Shopify.MCP || {};
94  window.Shopify.MCP.enabled = true;
95  window.Shopify.MCP.shop = "2rswcr-15.myshopify.com";
96  window.Shopify.MCP.mcpEndpoint = "https:\/\/wenonah.com\/api\/mcp";
97  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"]}}];
98</script>
vendor: 1 bytes, line 98
98
99<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("\/\/wenonah.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
100</script>
vendor: 1 bytes, line 100
100
101<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://wenonah.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
102</script>
vendor: 1 bytes, line 102
102
103<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
104  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);
105</script>
vendor: 1 bytes, line 105
105
106<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
107</script>
107
108<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://wenonah.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
109<style id="shopify-accelerated-checkout-cart">
110        #shopify-buyer-consent {
111  margin-top: 1em;
112  display: inline-block;
113  width: 100%;
114}
115
116#shopify-buyer-consent.hidden {
117  display: none;
118}
119
120#shopify-subscription-policy-button {
121  background: none;
122  border: none;
123  padding: 0;
124  text-decoration: underline;
125  font-size: inherit;
126  cursor: pointer;
127}
128
129#shopify-subscription-policy-button::before {
130  box-shadow: none;
131}
132
133      </style>
134<script id="sections-script" data-sections="header" defer="defer" src="//wenonah.com/cdn/shop/t/2/compiled_assets/scripts.js?v=90487813905515327061749921840"></script>
vendor: 1 bytes, line 134
134
135<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
135
136
137
138    <style data-shopify>
139      @font-face {
140  font-family: Assistant;
141  font-weight: 400;
142  font-style: normal;
143  font-display: swap;
144  src: url("//wenonah.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"),
145       url("//wenonah.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff");
146}
147
148      @font-face {
149  font-family: Assistant;
150  font-weight: 700;
151  font-style: normal;
152  font-display: swap;
153  src: url("//wenonah.com/cdn/fonts/assistant/assistant_n7.bf44452348ec8b8efa3aa3068825305886b1c83c.woff2") format("woff2"),
154       url("//wenonah.com/cdn/fonts/assistant/assistant_n7.0c887fee83f6b3bda822f1150b912c72da0f7b64.woff") format("woff");
155}
156
157      
158      
159      @font-face {
160  font-family: Assistant;
161  font-weight: 400;
162  font-style: normal;
163  font-display: swap;
164  src: url("//wenonah.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2") format("woff2"),
165       url("//wenonah.com/cdn/fonts/assistant/assistant_n4.6e9875ce64e0fefcd3f4446b7ec9036b3ddd2985.woff") format("woff");
166}
167
168
169      
170        :root,
171        .color-scheme-1 {
172          --color-background: 255,255,255;
173        
174          --gradient-background: #ffffff;
175        
176
177        
178
179        --color-foreground: 18,18,18;
180        --color-background-contrast: 191,191,191;
181        --color-shadow: 18,18,18;
182        --color-button: 18,18,18;
183        --color-button-text: 255,255,255;
184        --color-secondary-button: 255,255,255;
185        --color-secondary-button-text: 18,18,18;
186        --color-link: 18,18,18;
187        --color-badge-foreground: 18,18,18;
188        --color-badge-background: 255,255,255;
189        --color-badge-border: 18,18,18;
190        --payment-terms-background-color: rgb(255 255 255);
191      }
192      
193        
194        .color-scheme-2 {
195          --color-background: 243,243,243;
196        
197          --gradient-background: #f3f3f3;
198        
199
200        
201
202        --color-foreground: 18,18,18;
203        --color-background-contrast: 179,179,179;
204        --color-shadow: 18,18,18;
205        --color-button: 18,18,18;
206        --color-button-text: 243,243,243;
207        --color-secondary-button: 243,243,243;
208        --color-secondary-button-text: 18,18,18;
209        --color-link: 18,18,18;
210        --color-badge-foreground: 18,18,18;
211        --color-badge-background: 243,243,243;
212        --color-badge-border: 18,18,18;
213        --payment-terms-background-color: rgb(243 243 243);
214      }
215      
216        
217        .color-scheme-3 {
218          --color-background: 36,40,51;
219        
220          --gradient-background: #242833;
221        
222
223        
224
225        --color-foreground: 255,255,255;
226        --color-background-contrast: 47,52,66;
227        --color-shadow: 18,18,18;
228        --color-button: 255,255,255;
229        --color-button-text: 0,0,0;
230        --color-secondary-button: 36,40,51;
231        --color-secondary-button-text: 255,255,255;
232        --color-link: 255,255,255;
233        --color-badge-foreground: 255,255,255;
234        --color-badge-background: 36,40,51;
235        --color-badge-border: 255,255,255;
236        --payment-terms-background-color: rgb(36 40 51);
237      }
238      
239        
240        .color-scheme-4 {
241          --color-background: 18,18,18;
242        
243          --gradient-background: #121212;
244        
245
246        
247
248        --color-foreground: 255,255,255;
249        --color-background-contrast: 146,146,146;
250        --color-shadow: 18,18,18;
251        --color-button: 255,255,255;
252        --color-button-text: 18,18,18;
253        --color-secondary-button: 18,18,18;
254        --color-secondary-button-text: 255,255,255;
255        --color-link: 255,255,255;
256        --color-badge-foreground: 255,255,255;
257        --color-badge-background: 18,18,18;
258        --color-badge-border: 255,255,255;
259        --payment-terms-background-color: rgb(18 18 18);
260      }
261      
262        
263        .color-scheme-5 {
264          --color-background: 51,79,180;
265        
266          --gradient-background: #334fb4;
267        
268
269        
270
271        --color-foreground: 255,255,255;
272        --color-background-contrast: 23,35,81;
273        --color-shadow: 18,18,18;
274        --color-button: 255,255,255;
275        --color-button-text: 51,79,180;
276        --color-secondary-button: 51,79,180;
277        --color-secondary-button-text: 255,255,255;
278        --color-link: 255,255,255;
279        --color-badge-foreground: 255,255,255;
280        --color-badge-background: 51,79,180;
281        --color-badge-border: 255,255,255;
282        --payment-terms-background-color: rgb(51 79 180);
283      }
284      
285
286      body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5 {
287        color: rgba(var(--color-foreground), 0.75);
288        background-color: rgb(var(--color-background));
289      }
290
291      :root {
292        --font-body-family: Assistant, sans-serif;
293        --font-body-style: normal;
294        --font-body-weight: 400;
295        --font-body-weight-bold: 700;
296
297        --font-heading-family: Assistant, sans-serif;
298        --font-heading-style: normal;
299        --font-heading-weight: 400;
300
301        --font-body-scale: 1.0;
302        --font-heading-scale: 1.0;
303
304        --media-padding: px;
305        --media-border-opacity: 0.05;
306        --media-border-width: 1px;
307        --media-radius: 0px;
308        --media-shadow-opacity: 0.0;
309        --media-shadow-horizontal-offset: 0px;
310        --media-shadow-vertical-offset: 4px;
311        --media-shadow-blur-radius: 5px;
312        --media-shadow-visible: 0;
313
314        --page-width: 120rem;
315        --page-width-margin: 0rem;
316
317        --product-card-image-padding: 0.0rem;
318        --product-card-corner-radius: 0.0rem;
319        --product-card-text-alignment: center;
320        --product-card-border-width: 0.0rem;
321        --product-card-border-opacity: 0.1;
322        --product-card-shadow-opacity: 0.0;
323        --product-card-shadow-visible: 0;
324        --product-card-shadow-horizontal-offset: 0.0rem;
325        --product-card-shadow-vertical-offset: 0.4rem;
326        --product-card-shadow-blur-radius: 0.5rem;
327
328        --collection-card-image-padding: 0.0rem;
329        --collection-card-corner-radius: 0.0rem;
330        --collection-card-text-alignment: left;
331        --collection-card-border-width: 0.0rem;
332        --collection-card-border-opacity: 0.1;
333        --collection-card-shadow-opacity: 0.0;
334        --collection-card-shadow-visible: 0;
335        --collection-card-shadow-horizontal-offset: 0.0rem;
336        --collection-card-shadow-vertical-offset: 0.4rem;
337        --collection-card-shadow-blur-radius: 0.5rem;
338
339        --blog-card-image-padding: 0.0rem;
340        --blog-card-corner-radius: 0.0rem;
341        --blog-card-text-alignment: left;
342        --blog-card-border-width: 0.0rem;
343        --blog-card-border-opacity: 0.1;
344        --blog-card-shadow-opacity: 0.0;
345        --blog-card-shadow-visible: 0;
346        --blog-card-shadow-horizontal-offset: 0.0rem;
347        --blog-card-shadow-vertical-offset: 0.4rem;
348        --blog-card-shadow-blur-radius: 0.5rem;
349
350        --badge-corner-radius: 4.0rem;
351
352        --popup-border-width: 1px;
353        --popup-border-opacity: 0.1;
354        --popup-corner-radius: 0px;
355        --popup-shadow-opacity: 0.05;
356        --popup-shadow-horizontal-offset: 0px;
357        --popup-shadow-vertical-offset: 4px;
358        --popup-shadow-blur-radius: 5px;
359
360        --drawer-border-width: 1px;
361        --drawer-border-opacity: 0.1;
362        --drawer-shadow-opacity: 0.0;
363        --drawer-shadow-horizontal-offset: 0px;
364        --drawer-shadow-vertical-offset: 4px;
365        --drawer-shadow-blur-radius: 5px;
366
367        --spacing-sections-desktop: 0px;
368        --spacing-sections-mobile: 0px;
369
370        --grid-desktop-vertical-spacing: 8px;
371        --grid-desktop-horizontal-spacing: 8px;
372        --grid-mobile-vertical-spacing: 4px;
373        --grid-mobile-horizontal-spacing: 4px;
374
375        --text-boxes-border-opacity: 0.1;
376        --text-boxes-border-width: 0px;
377        --text-boxes-radius: 0px;
378        --text-boxes-shadow-opacity: 0.0;
379        --text-boxes-shadow-visible: 0;
380        --text-boxes-shadow-horizontal-offset: 0px;
381        --text-boxes-shadow-vertical-offset: 4px;
382        --text-boxes-shadow-blur-radius: 5px;
383
384        --buttons-radius: 0px;
385        --buttons-radius-outset: 0px;
386        --buttons-border-width: 1px;
387        --buttons-border-opacity: 1.0;
388        --buttons-shadow-opacity: 0.0;
389        --buttons-shadow-visible: 0;
390        --buttons-shadow-horizontal-offset: 0px;
391        --buttons-shadow-vertical-offset: 4px;
392        --buttons-shadow-blur-radius: 5px;
393        --buttons-border-offset: 0px;
394
395        --inputs-radius: 0px;
396        --inputs-border-width: 1px;
397        --inputs-border-opacity: 0.55;
398        --inputs-shadow-opacity: 0.0;
399        --inputs-shadow-horizontal-offset: 0px;
400        --inputs-margin-offset: 0px;
401        --inputs-shadow-vertical-offset: 4px;
402        --inputs-shadow-blur-radius: 5px;
403        --inputs-radius-outset: 0px;
404
405        --variant-pills-radius: 40px;
406        --variant-pills-border-width: 1px;
407        --variant-pills-border-opacity: 0.55;
408        --variant-pills-shadow-opacity: 0.0;
409        --variant-pills-shadow-horizontal-offset: 0px;
410        --variant-pills-shadow-vertical-offset: 4px;
411        --variant-pills-shadow-blur-radius: 5px;
412      }
413
414      *,
415      *::before,
416      *::after {
417        box-sizing: inherit;
418      }
419
420      html {
421        box-sizing: border-box;
422        font-size: calc(var(--font-body-scale) * 62.5%);
423        height: 100%;
424      }
425
426      body {
427        display: grid;
428        grid-template-rows: auto auto 1fr auto;
429        grid-template-columns: 100%;
430        min-height: 100%;
431        margin: 0;
432        font-size: 1.5rem;
433        letter-spacing: 0.06rem;
434        line-height: calc(1 + 0.8 / var(--font-body-scale));
435        font-family: var(--font-body-family);
436        font-style: var(--font-body-style);
437        font-weight: var(--font-body-weight);
438      }
439
440      @media screen and (min-width: 750px) {
441        body {
442          font-size: 1.6rem;
443        }
444      }
445    </style>
446
447    <link href="//wenonah.com/cdn/shop/t/2/assets/base.css?v=130319479982651025231785879298" rel="stylesheet" type="text/css" media="all" />
448    <link rel="stylesheet" href="//wenonah.com/cdn/shop/t/2/assets/component-cart-items.css?v=123238115697927560811749921818" media="print" onload="this.media='all'">
449      <link rel="preload" as="font" href="//wenonah.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin>
450      
451
452      <link rel="preload" as="font" href="//wenonah.com/cdn/fonts/assistant/assistant_n4.9120912a469cad1cc292572851508ca49d12e768.woff2" type="font/woff2" crossorigin>
453      
454<link
455        rel="stylesheet"
456        href="//wenonah.com/cdn/shop/t/2/assets/component-predictive-search.css?v=118923337488134913561749921819"
457        media="print"
458        onload="this.media='all'"
459      >
459<script>
460      if (Shopify.designMode) {
461        document.documentElement.classList.add('shopify-design-mode');
462      }
463    </script>
463
464  <!-- BEGIN app block: shopify://apps/nabu-redirect-manager/blocks/script-block/1ec76215-4f32-4e94-950a-ce6073ea1b48 -->
465
466<script>
467    (function() {
468        const storageKeyMap = {
469            redirectChain: 'ADNABU_REDIRECT_CHAIN',
470            redirectLog: 'ADNABU_REDIRECT_LOG',
471            debugMode: 'ADNABU_REDIRECT_DEBUG_MODE',
472            sessionId: 'ADNABU_REDIRECT_MANAGER_SESSION_ID',
473        }
474
475        // Storage access can throw (Safari with site data blocked, sandboxed frames);
476        // an unguarded throw here would abort the whole script tag, geo runtime included.
477        // The area is passed by name because even reading window.localStorage throws in
478        // sandboxed frames — it must be dereferenced inside the try.
479        function safeStorageGet(area, key) {
480            try {
481                return window[area].getItem(key);
482            } catch (error) {
483                return null;
484            }
485        }
486
487        function safeStorageSet(area, key, value) {
488            try {
489                window[area].setItem(key, value);
490                return true;
491            } catch (error) {
492                return false;
493            }
494        }
495
496        function safeStorageRemove(area, key) {
497            try {
498                window[area].removeItem(key);
499            } catch (error) {
500                // Storage is blocked; there is nothing to remove
501            }
502        }
503
504        const redirectConfig = {
505            mappings: null,
506            apiEndpoint: "https://nabu-seo.adnabu.com/flux",
507            shopId: "2rswcr-15.myshopify.com",
508            debugMode: safeStorageGet('localStorage', storageKeyMap.debugMode) || false,
509        };
510
511        // Utility functions
512        function log(message, data = null) {
513            if (redirectConfig.debugMode) {
514                console.log('[Nabu Redirect Manager]', message, data);
515            }
516        }
517        
518        function generateUUID() {
519            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
520                var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
521                return v.toString(16);
522            });
523        }
524
525        // Session ID management functions
526        function getSessionId() {
527            let sessionId = safeStorageGet('sessionStorage', storageKeyMap.sessionId);
528            if (!sessionId) {
529                sessionId = generateUUID();
530                safeStorageSet('sessionStorage', storageKeyMap.sessionId, sessionId);
531                log('New session ID generated', sessionId);
532            }
533            return sessionId;
534        }
535    
536        function clearSessionId() {
537            safeStorageRemove('sessionStorage', storageKeyMap.sessionId);
538            log('Session ID cleared');
539        }
540
541        function sendLogs(endpoint, logData) {
542            if (!endpoint || !logData) return;
543
544            // Use sendBeacon for better reliability, especially during page unload/redirect
545            if (navigator.sendBeacon) {
546                const blob = new Blob([JSON.stringify(logData)], { type: 'application/json' });
547                const success = navigator.sendBeacon(endpoint, blob);
548                if (success) {
549                    log('Log sent successfully via sendBeacon');
550                    safeStorageRemove('localStorage', storageKeyMap.redirectLog);
551                } else {
552                    log('Failed to send log via sendBeacon');
553                }
554            } else {
555                // Fallback to XMLHttpRequest for older browsers
556                var xhr = new XMLHttpRequest();
557                xhr.open("POST", endpoint, true);
558                xhr.setRequestHeader("Content-Type", "application/json");
559                xhr.onreadystatechange = function() {
560                    if (xhr.readyState === 4) {
561                        if (xhr.status === 200) {
562                            log('Log sent successfully via XHR fallback');
563                            safeStorageRemove('localStorage', storageKeyMap.redirectLog);
564                        } else {
565                            log('Failed to send log via XHR fallback', xhr.status);
566                        }
567                    }
568                };
569                xhr.send(JSON.stringify(logData));
570            }
571        }
572    
573        function containsValidDomain(url) {
574            const regex = /^(https?:\/\/)?(www\.)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}/;
575            return regex.test(url);
576        }
577    
578        function patternMatchesPath(pattern, path, caseInsensitive) {
579            // Used when there is no query in the pattern 
580            let regex;
581            const isRegexPattern = pattern.startsWith('^');
582    
583            if (isRegexPattern) {
584                regex = new RegExp(pattern, caseInsensitive ? 'i' : '');
585            } else {
586                // Convert wildcard pattern to regex - make wildcards capturing groups
587                const regexPattern = '^' + pattern.replace(/\$([0-9]+)/g, '([^/]+)').replace(/\*/g, '(.*)') + '/?$';
588                regex = new RegExp(regexPattern, caseInsensitive ? 'i' : '');
589            }
590            return path.match(regex);
591        }
592    
593        function patternMatchesPathWithQuery(pattern, path, caseInsensitive) {
594            const isRegexPattern = pattern.startsWith('^');
595    
596            if (isRegexPattern) {
597                const regex = new RegExp(pattern, caseInsensitive ? 'i' : '');
598                return path.match(regex);
599            }
600    
601            // Split pattern and path into base path and query parts
602            const [patternBase, patternQuery] = pattern.split('?');
603            const [pathBase, pathQuery] = path.split('?');
604    
605            // Check base path match first
606            const baseRegex = '^' + patternBase
607                .replace(/[.+^{}()|[\]\\]/g, '\\$&')  // Escape special regex chars
608                .replace(/\$([0-9]+)/g, '([^/]+)')   // Handle $1, $2, etc. placeholders
609                .replace(/\*/g, '(.*)') + '/?$';  // Handle wildcards as capturing groups
610            
611            const baseMatch = pathBase.match(new RegExp(baseRegex, caseInsensitive ? 'i' : ''));
612            if (!baseMatch) {
613                return null;
614            }
615    
616            // If no query in pattern, but query in path, still match base path
617            if (!patternQuery) {
618                return baseMatch;
619            }
620    
621            // If pattern has query but path doesn't, no match
622            if (!pathQuery) {
623                return null;
624            }
625    
626            // Parse query parameters from both pattern and path
627            function parseQueryParams(queryString) {
628                const params = {};
629                if (!queryString) return params;
630                
631                queryString.split('&').forEach(param => {
632                    const [key, value] = param.split('=');
633                    if (key) {
634                        params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
635                    }
636                });
637                return params;
638            }
639    
640            const patternParams = parseQueryParams(patternQuery);
641            const pathParams = parseQueryParams(pathQuery);
642    
643            // Check if all pattern query parameters match
644            for (const [key, patternValue] of Object.entries(patternParams)) {
645                const pathValue = pathParams[key];
646                
647                // If key doesn't exist in path, no match
648                if (pathValue === undefined) {
649                    return null;
650                }
651    
652                // Create regex for the parameter value (handle wildcards and placeholders)
653                let valueRegex = '^' + patternValue
654                    .replace(/[.+^{}()|[\]\\]/g, '\\$&')  // Escape special regex chars
655                    .replace(/\$([0-9]+)/g, '(.+)')     // Handle $1, $2, etc. placeholders
656                    .replace(/\*/g, '(.*)') + '$';      // Handle wildcards as capturing groups
657    
658                const valueMatch = pathValue.match(new RegExp(valueRegex, caseInsensitive ? 'i' : ''));
659                if (!valueMatch) {
660                    return null;
661                }
662    
663                // Merge any captured groups from query parameter matches
664                if (valueMatch.length > 1) {
665                    baseMatch.push(...valueMatch.slice(1));
666                }
667            }
668    
669            return baseMatch;
670        }
671    
672        function smartPatternMatch(pattern, path, caseInsensitive) {
673            // Check if either pattern or path contains query parameters
674            const patternHasQuery = pattern.includes('?');
675            const pathHasQuery = path.includes('?');
676            
677            // If either has query parameters, use the query-aware function
678            if (patternHasQuery || pathHasQuery) {
679                return patternMatchesPathWithQuery(pattern, path, caseInsensitive);
680            }
681            
682            // Otherwise, use the simpler function
683            return patternMatchesPath(pattern, path, caseInsensitive);
684        }
685
686        function getEventType(pattern) {
687            // Determine event type based on whether pattern starts with ^
688            return pattern.startsWith('^') ? 'REGEX_REDIRECT' : 'WILDCARD_REDIRECT';
689        }
690    
691        function parseQueryParams(queryString) {
692            const params = {};
693            if (!queryString) return params;
694            
695            queryString.split('&').forEach(param => {
696                const [key, value] = param.split('=');
697                if (key) {
698                    params[decodeURIComponent(key)] = value ? decodeURIComponent(value) : '';
699                }
700            });
701            return params;
702        }
703    
704        function buildQueryString(params) {
705            const queryParts = [];
706            for (const [key, value] of Object.entries(params)) {
707                if (value === '') {
708                    queryParts.push(encodeURIComponent(key));
709                } else {
710                    queryParts.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
711                }
712            }
713            return queryParts.join('&');
714        }
715    
716        function handleRedirect(path, target, match) {
717            // First, handle $n pattern replacements
718            const usedGroups = new Set();
719            target = target.replace(/\$(\d+)/g, function(_, groupIndex) {
720                const index = parseInt(groupIndex);
721                usedGroups.add(index);
722                return match[index] || '';
723            });
724            
725            // Then handle wildcard (*) replacements with remaining capture groups
726            let wildcardGroupIndex = 1;
727            target = target.replace(/\*/g, function() {
728                // Find next unused capture group
729                while (usedGroups.has(wildcardGroupIndex) && wildcardGroupIndex < match.length) {
730                    wildcardGroupIndex++;
731                }
732                const replacement = match[wildcardGroupIndex] || '';
733                wildcardGroupIndex++;
734                return replacement;
735            });
736            
737            // Now handle query parameter merging
738            const [currentPathBase, currentQuery] = path.split('?');
739            const [targetBase, targetQuery] = target.split('?');
740            
741            // If no query parameters in current path, return target as is
742            if (!currentQuery) {
743                return target;
744            }
745            
746            const currentParams = parseQueryParams(currentQuery);
747            const targetParams = parseQueryParams(targetQuery);
748            
749            // Merge parameters with target taking precedence (target overrides current)
750            const mergedParams = { ...currentParams, ...targetParams };
751            
752            // Build final target with merged query parameters
753            const mergedQuery = buildQueryString(mergedParams);
754            return targetBase + (mergedQuery ? '?' + mergedQuery : '');
755        }
756    
757        function isPageNotFound() {
758            // Multiple ways to detect 404 pages
759            return document.title.toLowerCase().includes('404') || 
760                    document.title.toLowerCase().includes('not found') ||
761                    window.location.pathname.includes('404') ||
762                    document.body.classList.contains('template-404') ||
763                    document.querySelector('.template-404') !== null;
764        }
765    
766        function getRedirectChain() {
767            const chainData = safeStorageGet('sessionStorage', storageKeyMap.redirectChain);
768            if (!chainData) {
769                return { urls: [], count: 0, sessionId: getSessionId() };
770            }
771            try {
772                const chain = JSON.parse(chainData);
773                // Ensure we use the persistent session ID
774                chain.sessionId = getSessionId();
775                return chain;
776            } catch (e) {
777                log('Error parsing redirect chain, resetting', e);
778                return { urls: [], count: 0, sessionId: getSessionId() };
779            }
780        }
781    
782        function updateRedirectChain(url) {
783            const chain = getRedirectChain();
784            chain.urls.push(url);
785            chain.count++;
786            safeStorageSet('sessionStorage', storageKeyMap.redirectChain, JSON.stringify(chain));
787            return chain;
788        }
789    
790        function clearRedirectChain() {
791            safeStorageRemove('sessionStorage', storageKeyMap.redirectChain);
792        }
793    
794        function isCircularRedirect(targetUrl, chain) {
795            // Check if we've already visited this URL in the current chain
796            return chain.urls.includes(targetUrl);
797        }
798    
799        function hasExceededRedirectLimit(chain) {
800            const MAX_REDIRECTS = 5;
801            return chain.count >= MAX_REDIRECTS;
802        }
803    
804        function getSanitizedCurrentPath() {
805            let currentPath = window.location.pathname;
806            
807            // Remove trailing slash from currentPath (except for root path)
808            if (currentPath.length > 1 && currentPath.endsWith('/')) {
809                currentPath = currentPath.slice(0, -1);
810            }
811            
812            return currentPath;
813        }
814    
815        function handle404Redirects() {
816            const currentPath = getSanitizedCurrentPath();
817            const queryParams = window.location.search;
818            const fullPath = currentPath + queryParams;
819            const currentUrl = window.location.origin + fullPath;
820            const locationHref = window.location.href;
821    
822            // Get current redirect chain
823            const redirectChain = getRedirectChain();
824    
825            // Create log entry
826            let redirectLog = {
827                'from_url': fullPath,
828                'from_path': currentPath,
829                'full_path': locationHref,
830                'session_id': redirectChain.sessionId,
831                'referrer': document.referrer,
832                'timestamp': Date.now() / 1000,
833                'shop_id': redirectConfig.shopId,
834                'user_agent': navigator.userAgent,
835                'market_country_code': Shopify.country,
836                'market_locale': Shopify.locale,
837            };
838    
839            log('Checking for redirects', {
840                path: fullPath, 
841                is404: isPageNotFound(), 
842                redirectChain: redirectChain
843            });
844    
845            // Only process redirects if this is a 404 page
846            if (isPageNotFound() && redirectConfig.mappings && Array.isArray(redirectConfig.mappings)) {
847                log('Processing 404 redirects');
848    
849                // Check if we've exceeded the redirect limit
850                if (hasExceededRedirectLimit(redirectChain)) {
851                    log('Redirect limit exceeded, breaking chain', redirectChain);
852                    redirectLog['event_type'] = "CIRCULAR_REDIRECT_DETECTED";
853                    redirectLog['redirect_id'] = null;
854                    redirectLog['matched_regex'] = null;
855                    redirectLog['to_url'] = null;
856                    redirectLog['error'] = 'redirect_limit_exceeded';
857                    redirectLog['success'] = false;
858                    sendLogs(redirectConfig.apiEndpoint, redirectLog);
859                    clearRedirectChain();
860                    return;
861                }
862    
863                // Iterate through redirect mappings
864                for (const mapping of redirectConfig.mappings) {
865                    const pattern = mapping.pattern;
866                    if (!pattern) continue;
867                    const redirectId = mapping.redirect_id;
868                    const caseInsensitive = mapping.case_insensitive || false;
869                    const match = smartPatternMatch(pattern, fullPath, caseInsensitive);
870
871                    if (match) {
872                        log('Pattern matched', {pattern, match});
873                        let target = mapping.target;
874                        target = handleRedirect(fullPath, target, match);
875
876                        // Handle external vs internal redirects
877                        let targetUrl = target;
878                        if (containsValidDomain(target)) {
879                            if (!/^https?:\/\//i.test(target)) {
880                                targetUrl = 'https://' + target;
881                            }
882                        } else {
883                            // Internal redirect - construct full URL
884                            targetUrl = window.location.origin + (target.startsWith('/') ? target : '/' + target);
885                        }
886
887                        // Check for circular redirect
888                        if (isCircularRedirect(targetUrl, redirectChain)) {
889                            log('Circular redirect detected', {
890                                current: currentUrl,
891                                target: targetUrl,
892                                chain: redirectChain.urls
893                            });
894                            redirectLog['event_type'] = getEventType(pattern);
895                            redirectLog['error'] = 'circular_redirect_detected';
896                            redirectLog['to_url'] = targetUrl;
897                            redirectLog['redirect_id'] = redirectId;
898                            redirectLog['matched_regex'] = pattern;
899                            redirectLog['success'] = false;
900                            sendLogs(redirectConfig.apiEndpoint, redirectLog);
901                            clearRedirectChain();
902                            return;
903                        }
904    
905                        // Update redirect chain before redirecting
906                        updateRedirectChain(currentUrl);
907    
908                        // Add target to log
909                        redirectLog['event_type'] = getEventType(pattern);
910                        redirectLog['redirect_id'] = redirectId;
911                        redirectLog['to_url'] = targetUrl;
912                        redirectLog['matched_regex'] = pattern;
913                        redirectLog['success'] = true;
914    
915                        
916                        safeStorageSet('localStorage', storageKeyMap.redirectLog, JSON.stringify(redirectLog));
917                        sendLogs(redirectConfig.apiEndpoint, redirectLog);
918    
919                        log('Redirecting to', targetUrl);
920    
921                        // Perform redirect
922                        window.location.replace(targetUrl);
923                        return;
924                    }
925                }
926            }
927    
928            // No redirect found - log the 404
929            if (isPageNotFound()) {
930                redirectLog['event_type'] = "404_NO_REDIRECT";
931                redirectLog['to_url'] = null;
932                redirectLog['redirect_id'] = null;
933                redirectLog['matched_regex'] = null;
934                redirectLog['success'] = false;
935                sendLogs(redirectConfig.apiEndpoint, redirectLog);
936                clearRedirectChain();
937                log('No redirect found, logging 404');
938            }
939        }
940    
941        function checkForSuccessfulRedirect() {
942            // Check if there's a redirect log in localStorage (indicates successful redirect)
943            const redirectLog = safeStorageGet('localStorage', storageKeyM
943ap.redirectLog);
944            if (redirectLog && !isPageNotFound()) {
945                log('Successful redirect detected, sending completion log');
946                sendLogs(redirectConfig.apiEndpoint, JSON.parse(redirectLog));
947                
948                // Clear redirect chain on successful landing
949                clearRedirectChain();
950                log('Redirect chain cleared after successful landing');
951            }
952        }
953    
954        // Initialize based on page type
955        function init() {
956            log('Redirect Manager initialized', redirectConfig);
957            
958            // Run redirect logic immediately
959            if (isPageNotFound()) {
960                // Handle 404 redirects
961                handle404Redirects();
962            } else {
963                // Check for successful redirects
964                checkForSuccessfulRedirect();
965                
966                // If we're on a valid page and there's no redirect log,
967                // clear any stale redirect chains (manual navigation)
968                const redirectLog = safeStorageGet('localStorage', storageKeyMap.redirectLog);
969                if (!redirectLog) {
970                    const chain = getRedirectChain();
971                    if (chain.count > 0) {
972                        log('Clearing stale redirect chain due to manual navigation');
973                        clearRedirectChain();
974                    }
975                }
976            }
977        }
978    
979        // Run when DOM is ready
980        if (document.readyState === 'loading') {
981            document.addEventListener('DOMContentLoaded', init);
982        } else {
983            init();
984        }
985    
986        // Expose configuration update function for dynamic updates
987        window.updateRedirectConfig = function(newConfig) {
988            Object.assign(redirectConfig, newConfig);
989            log('Configuration updated', redirectConfig);
990        };
991    
992        // Expose redirect chain debugging functions
993        window.getRedirectChainInfo = function() {
994            return getRedirectChain();
995        };
996    
997        window.clearRedirectChainDebug = function() {
998            clearRedirectChain();
999            log('Redirect chain cleared manually');
1000        };
1001    
1002        window.enableRedirectDebugMode = function() {
1003            safeStorageSet('localStorage', storageKeyMap.debugMode, 'true');
1004            redirectConfig.debugMode = true;
1005            log('Debug mode enabled');
1006        };
1007
1008        window.disableRedirectDebugMode = function() {
1009            safeStorageRemove('localStorage', storageKeyMap.debugMode);
1010            redirectConfig.debugMode = false;
1011            log('Debug mode disabled');
1012        };
1013
1014        window.getAdNabuRedirectManagerSessionId = function() {
1015            return getSessionId();
1016        };
1017    
1018        window.clearAdNabuRedirectManagerSessionId = function() {
1019            clearSessionId();
1020            log('Session ID cleared manually');
1021        };
1022})();
1023</script>
1023
1024
1025<script>
1026/* ADNABU_GEO_START */
1027(function() {
1028    const STORAGE_KEYS = {
1029        handled: 'ADNABU_GEO_REDIRECT_HANDLED',
1030        sessionId: 'ADNABU_REDIRECT_MANAGER_SESSION_ID',
1031        debug: 'ADNABU_REDIRECT_DEBUG_MODE',
1032        detectedCountry: 'ADNABU_GEO_DETECTED_COUNTRY',
1033        detectionAttempted: 'ADNABU_GEO_DETECTION_ATTEMPTED',
1034    };
1035    // The extra replace keeps merchant copy from breaking out of this script tag: a literal
1036    // closing tag would end it early, and an opening comment plus script tag flips the HTML
1037    // tokenizer into its double-escaped state.
1038    // Escaping every '<' (it only ever appears inside JSON strings) covers both and stays valid JS.
1039    const config = {"enabled":false};
1040    // Fallback only — localization.country.iso_code reflects the current market context,
1041    // not the visitor's IP country; browsing_context_suggestions.json is the primary source.
1042    const visitorCountryFromLiquid = "US";
1043    const apiEndpoint = 'https://nabu-seo.adnabu.com/flux';
1044    const shopId = '2rswcr-15.myshopify.com';
1045
1046    // Storage access throws in Safari with site data blocked and in sandboxed frames, which
1047    // would otherwise kill the whole runtime — reads fall back to null, writes become no-ops.
1048    function storageGet(area, key) {
1049        try { return window[area].getItem(key); } catch (_e) { return null; }
1050    }
1051    function storageSet(area, key, value) {
1052        try { window[area].setItem(key, value); } catch (_e) {}
1053    }
1054
1055    const debug = storageGet('localStorage', STORAGE_KEYS.debug) === 'true';
1056
1057    // Shopify's routes.root ends with a slash, but a theme overriding Shopify.routes
1058    // without one would silently produce paths like '/frlocalization'
1059    function getRoutesRoot() {
1060        const root = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) || '/';
1061        return root.replace(/\/*$/, '/');
1062    }
1063
1064    let detectedCountryCache = storageGet('sessionStorage', STORAGE_KEYS.detectedCountry) || null;
1065    // A miss (blocked endpoint, no country in the response, fetch failure) leaves detectedCountry
1066    // unset, so remember that detection ran to avoid refetching the endpoint on every pageview
1067    let detectionAttempted = storageGet('sessionStorage', STORAGE_KEYS.detectionAttempted) === '1';
1068
1069    async function warmUpCountryDetection() {
1070        if (detectedCountryCache || detectionAttempted) return;
1071        try {
1072            const res = await fetch(getRoutesRoot() + 'browsing_context_suggestions.json?country[enabled]=true', {cache: 'no-store'});
1073            if (!res.ok) return;
1074            const data = await res.json();
1075            const country = data && data.detected_values && data.detected_values.country && data.detected_values.country.handle;
1076            if (country) {
1077                // Shopify's handle casing isn't guaranteed; market country_codes are uppercase
1078                detectedCountryCache = String(country).toUpperCase();
1079                storageSet('sessionStorage', STORAGE_KEYS.detectedCountry, detectedCountryCache);
1080            }
1081        } catch (_e) {
1082        } finally {
1083            detectionAttempted = true;
1084            storageSet('sessionStorage', STORAGE_KEYS.detectionAttempted, '1');
1085        }
1086    }
1087
1088    function detectVisitorCountry() {
1089        return detectedCountryCache
1090            || visitorCountryFromLiquid
1091            || (window.Shopify && Shopify.country)
1092            || null;
1093    }
1094
1095    // Prefer the visitor's detected country when the market covers it; otherwise fall back
1096    // to the market's primary country code. With region_detection off the visitor's location
1097    // must not influence anything, so the detected country is ignored entirely.
1098    function pickDisplayCountry(market) {
1099        const visitor = config.region_detection !== false ? detectVisitorCountry() : null;
1100        const codes = (market && market.country_codes) || [];
1101        if (visitor && codes.indexOf(visitor) !== -1) return visitor;
1102        // Visitor's country isn't in the target market (e.g. a no-market country routed to the
1103        // fallback market): prefer the merchant's chosen fallback country over the market's
1104        // first country, which is otherwise arbitrary for a multi-country market
1105        if (config.fallback_country && codes.indexOf(config.fallback_country) !== -1) return config.fallback_country;
1106        return codes[0] || config.fallback_country || visitor || null;
1107    }
1108
1109    function log() {
1110        if (debug) console.log.apply(console, ['[Nabu Geo Redirect]'].concat([].slice.call(arguments)));
1111    }
1112
1113    // Accept a boolean true or the string "true" so a metafield written as a string
1114    // doesn't silently disable the feature
1115    if (!config || (config.enabled !== true && config.enabled !== 'true')) {
1116        log('Disabled or config missing', config);
1117        return;
1118    }
1119    if (storageGet('sessionStorage', STORAGE_KEYS.handled) === '1') {
1120        log('Already handled this session');
1121        return;
1122    }
1123
1124    function uuid() {
1125        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
1126            const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
1127            return v.toString(16);
1128        });
1129    }
1130
1131    function getSessionId() {
1132        let id = storageGet('sessionStorage', STORAGE_KEYS.sessionId);
1133        if (!id) {
1134            id = uuid();
1135            storageSet('sessionStorage', STORAGE_KEYS.sessionId, id);
1136        }
1137        return id;
1138    }
1139
1140    function sendEvent(eventType, extra) {
1141        const payload = Object.assign({
1142            event_type: eventType,
1143            shop_id: shopId,
1144            session_id: getSessionId(),
1145            timestamp: Date.now() / 1000,
1146            visitor_country_code: config.region_detection !== false ? detectVisitorCountry() : null,
1147            visitor_locale: (window.Shopify && Shopify.locale) || null,
1148            // market_* mirrors the 404 event schema — the current market context, not the visitor's IP country
1149            market_country_code: (window.Shopify && Shopify.country) || null,
1150            market_locale: (window.Shopify && Shopify.locale) || null,
1151            user_agent: navigator.userAgent,
1152        }, extra || {});
1153        try {
1154            if (navigator.sendBeacon) {
1155                navigator.sendBeacon(apiEndpoint, new Blob([JSON.stringify(payload)], {type: 'application/json'}));
1156            } else {
1157                const xhr = new XMLHttpRequest();
1158                xhr.open('POST', apiEndpoint, true);
1159                xhr.setRequestHeader('Content-Type', 'application/json');
1160                xhr.send(JSON.stringify(payload));
1161            }
1162        } catch (e) {
1163            log('sendEvent failed', e);
1164        }
1165    }
1166
1167    // Returns whether the marker actually persisted — with storage blocked the guard at the
1168    // top of the IIFE never trips, and AUTO mode must not redirect without that brake.
1169    function markHandled() {
1170        storageSet('sessionStorage', STORAGE_KEYS.handled, '1');
1171        return storageGet('sessionStorage', STORAGE_KEYS.handled) === '1';
1172    }
1173
1174    // return_to must be locale-root-relative; a locale-prefixed path would pin the old language.
1175    // The locale home page has no trailing slash ('/fr' with root '/fr/'), so compare without it.
1176    function toLocaleRootRelative(returnTo) {
1177        let returnPath = returnTo || '/';
1178        const rootNoSlash = getRoutesRoot().replace(/\/+$/, '');
1179        if (rootNoSlash && returnPath.indexOf(rootNoSlash) === 0) {
1180            const rest = returnPath.slice(rootNoSlash.length);
1181            if (rest === '') returnPath = '/';
1182            else if (rest.charAt(0) === '/') returnPath = rest;
1183        }
1184        // Collapse leading slashes, backslashes and control chars: '//evil.example/x',
1185        // '/\evil.example/x' and control-char-prefixed forms all normalize to a
1186        // protocol-relative URL in browsers, not a path
1187        return '/' + returnPath.replace(/^[/\\\x00-\x1f]+/, '');
1188    }
1189
1190    // Submit Shopify's localization form so Shopify updates country/market/currency and
1191    // redirects to the locale-aware URL; self-built market URLs are brittle.
1192    function switchCountry(countryCode, returnTo, localeCode) {
1193        const form = document.createElement('form');
1194        form.method = 'POST';
1195        form.action = getRoutesRoot() + 'localization';
1196        form.hidden = true;
1197        const fields = [
1198            ['_method', 'PUT'],
1199            ['country_code', countryCode || ''],
1200            ['return_to', toLocaleRootRelative(returnTo) + (window.location.search || '')],
1201        ];
1202        if (localeCode) fields.push(['locale_code', localeCode]);
1203        for (const pair of fields) {
1204            const input = document.createElement('input');
1205            input.type = 'hidden';
1206            input.name = pair[0];
1207            input.value = pair[1];
1208            form.appendChild(input);
1209        }
1210        document.body.appendChild(form);
1211        form.submit();
1212    }
1213
1214    function findTargetMarket() {
1215        // With region_detection off, skip the country lookup and go straight to fallback
1216        if (config.region_detection !== false) {
1217            const byCountry = marketForCountry(detectVisitorCountry());
1218            if (byCountry) return byCountry;
1219        }
1220        if (config.fallback_market_id) {
1221            const byId = (config.markets || []).find(function(m) { return m.shopify_id === config.fallback_market_id; });
1222            if (byId) return byId;
1223        }
1224        return marketForCountry(config.fallback_country);
1225    }
1226
1227    // Auto-detect (no saved default_language) maps the visitor's browser language(s) to a locale the
1228    // market publishes: an exact locale match wins, then a base-language match (e.g. fr-FR -> fr).
1229    function detectBrowserLocale(locales) {
1230        if (!locales || !locales.length) return null;
1231        const nav = window.navigator || {};
1232        const prefs = (nav.languages && nav.languages.length) ? nav.languages : (nav.language ? [nav.language] : []);
1233        for (let i = 0; i < prefs.length; i++) {
1234            const pref = String(prefs[i]).toLowerCase();
1235            const base = pref.split('-')[0];
1236            const exact = locales.find(function(l) { return String(l).toLowerCase() === pref; });
1237            if (exact) return exact;
1238            const baseMatch = locales.find(function(l) { return String(l).toLowerCase().split('-')[0] === base; });
1239            if (baseMatch) return baseMatch;
1240        }
1241        return null;
1242    }
1243
1244    // Prefer the shop-wide default_language URL when the market supports it, then the visitor's
1245    // browser language, then the market's own locales, then primary_url (which can point at the
1246    // shop root on partially-configured shops).
1247    function pickMarketUrl(market) {
1248        if (!market) return null;
1249        const localeUrls = market.locale_urls || {};
1250        const globalDefault = config.default_language;
1251        if (globalDefault && localeUrls[globalDefault]) return localeUrls[globalDefault];
1252        const detected = detectBrowserLocale(market.locales || []);
1253        if (detected && localeUrls[detected]) return localeUrls[detected];
1254        const marketDefault = (market.locales && market.locales[0]) || null;
1255        if (marketDefault && localeUrls[marketDefault]) return localeUrls[marketDefault];
1256        const anyLocaleUrl = Object.values(localeUrls)[0];
1257        if (anyLocaleUrl) return anyLocaleUrl;
1258        return market.primary_url || null;
1259    }
1260
1261    // Analytics to_url should be where the visitor actually lands — the market URL joined
1262    // with the return path and query string, matching what switchCountry submits as return_to
1263    function buildDestinationUrl(market, returnTo) {
1264        const base = pickMarketUrl(market);
1265        if (!base) return null;
1266        return base.replace(/\/+$/, '') + toLocaleRootRelative(returnTo) + (window.location.search || '');
1267    }
1268
1269    function marketPathFromUrl(url) {
1270        try {
1271            const path = new URL(url).pathname.replace(/\/+$/, '');
1272            return path || '/';
1273        } catch (_e) { return null; }
1274    }
1275
1276    function isSameOrigin(url) {
1277        try { return new URL(url).origin.toLowerCase() === window.location.origin.toLowerCase(); }
1278        catch (_e) { return false; }
1279    }
1280
1281    // Detect the market the visitor is currently browsing by matching subfolder prefixes
1282    function findVisitorMarketPath() {
1283        const markets = config.markets || [];
1284        const visitorPath = window.location.pathname.replace(/\/+$/, '') || '/';
1285        const sorted = markets.slice().sort(function(a, b) {
1286            return (marketPathFromUrl(b.primary_url) || '').length - (marketPathFromUrl(a.primary_url) || '').length;
1287        });
1288        for (const m of sorted) {
1289            // A market on another domain can share a subfolder with a locale prefix on this
1290            // one, so only same-origin markets can claim the current path.
1291            if (!isSameOrigin(m.primary_url)) continue;
1292            const mp = marketPathFromUrl(m.primary_url);
1293            if (!mp) continue;
1294            if (mp === '/') return '/';
1295            if (visitorPath === mp || visitorPath.startsWith(mp + '/')) return mp;
1296        }
1297        return null;
1298    }
1299
1300    // Compare against the market's primary_url on both sides — pickMarketUrl() prefers a
1301    // locale URL whose path prefix differs from the primary one, which would flag visitors
1302    // already in the right market as needing a switch.
1303    function isAlreadyInMarket(market, targetUrl) {
1304        const referenceUrl = (market && market.primary_url) || targetUrl;
1305        if (!isSameOrigin(referenceUrl)) return false;
1306        // Markets can share one domain with no subfolder (the context then comes from the
1307        // buyer's localization cookie), so the URL alone can't prove the market — the
1308        // current context country must also be covered by the target market.
1309        if (visitorCountryFromLiquid && market
1310                && (market.country_codes || []).indexOf(visitorCountryFromLiquid) === -1) {
1311            return false;
1312        }
1313        // Without a primary_url there is no path to anchor a comparison — same origin plus
1314        // a covered context country is the strongest signal left.
1315        if (!market || !market.primary_url) return true;
1316        return findVisitorMarketPath() === marketPathFromUrl(referenceUrl);
1317    }
1318
1319    // Display names resolve in the storefront's locale and are memoized — Intl.DisplayNames
1320    // construction is expensive and countryName() runs inside the dropdown sort comparator.
1321    const displayNameResolvers = {};
1322    const displayNameCaches = {region: {}, language: {}};
1323
1324    function resolveDisplayName(type, locale, code) {
1325        const resolverKey = type + ':' + locale;
1326        if (!(resolverKey in displayNameResolvers)) {
1327            try { displayNameResolvers[resolverKey] = new Intl.DisplayNames([locale], {type: type}); }
1328            catch (_e) { displayNameResolvers[resolverKey] = null; }
1329        }
1330        const resolver = displayNameResolvers[resolverKey];
1331        if (!resolver) return code;
1332        try { return resolver.of(code) || code; }
1333        catch (_e) { return code; }
1334    }
1335
1336    function countryName(code) {
1337        if (!code) return '';
1338        const locale = (window.Shopify && Shopify.locale) || 'en';
1339        const cache = displayNameCaches.region;
1340        if (cache[code] === undefined) cache[code] = resolveDisplayName('region', locale, code);
1341        return cache[code];
1342    }
1343
1344    // SVG flag from flagcdn.com — same source as the admin preview; emoji flags don't render on Windows
1345    function flagImgMarkup(countryCode) {
1346        if (!countryCode || !/^[A-Za-z]{2}$/.test(countryCode)) return '';
1347        const cc = String(countryCode).toLowerCase();
1348        // onerror removes the img so a CSP-blocked or unreachable CDN never shows a broken icon
1349        return '<img src="https://flagcdn.com/' + cc + '.svg" alt="" width="16" height="12" '
1350            + 'referrerpolicy="no-referrer" loading="lazy" onerror="this.remove()" '
1351            + 'style="display:inline-block;vertical-align:middle;object-fit:cover;" />';
1352    }
1353
1354    function languageName(code) {
1355        if (!code) return '';
1356        const cache = displayNameCaches.language;
1357        if (cache[code] === undefined) cache[code] = resolveDisplayName('language', code, code);
1358        return cache[code];
1359    }
1360
1361    function substituteTokens(template, replacements) {
1362        if (typeof template !== 'string' || !template) return '';
1363        return template
1364            .replace(/\{country\}/g, replacements.country || '')
1365            .replace(/\{language\}/g, replacements.language || '')
1366            .replace(/\{currency\}/g, replacements.currency || '');
1367    }
1368
1369    // Injects the flag SVG before the country name; all template segments are escaped
1370    function renderHeaderHtml(template, replacements, flagHtml) {
1371        if (typeof template !== 'string' || !template) return '';
1372        const parts = template.split('{country}');
1373        const substituteNonCountry = function(segment) {
1374            return substituteTokens(segment, Object.assign({}, replacements, {country: ''}));
1375        };
1376        const before = escapeHtml(substituteNonCountry(parts[0]));
1377        if (parts.length === 1) return before;
1378        const country = escapeHtml(replacements.country || '');
1379        // Later {country} occurrences render the plain name — the flag only decorates the first
1380        const after = escapeHtml(substituteTokens(parts.slice(1).join('{country}'), replacements));
1381        return before + flagHtml + (flagHtml ? ' ' : '') + country + after;
1382    }
1383
1384    function escapeHtml(str) {
1385        return String(str == null ? '' : str)
1386            .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
1387            .replace(/"/g, '&quot;').replace(/'/g, '&#39;');
1388    }
1389
1390    function marketForCountry(code) {
1391        return (config.markets || []).find(function(m) {
1392            return (m.country_codes || []).indexOf(code) !== -1;
1393        }) || null;
1394    }
1395
1396    function collectMarketCountryCodes() {
1397        const codes = [];
1398        (config.markets || []).forEach(function(m) {
1399            (m.country_codes || []).forEach(function(code) {
1400                if (code && codes.indexOf(code) === -1) codes.push(code);
1401            });
1402        });
1403        return codes.sort(function(a, b) { return countryName(a).localeCompare(countryName(b)); });
1404    }
1405
1406    function localesForCountry(code, fallbackMarket) {
1407        const market = marketForCountry(code) || fallbackMarket;
1408        const locales = (market && market.locales) || [];
1409        if (locales.length) return locales;
1410        return config.shop_primary_locale ? [config.shop_primary_locale] : [];
1411    }
1412
1413    function preferredLocaleFor(market) {
1414        if (config.default_language) return config.default_language;
1415        const locales = (market && market.locales) || [];
1416        return detectBrowserLocale(locales)
1417            || locales[0]
1418            || config.shop_primary_locale || '';
1419    }
1420
1421    // Detected/default value first (and preselected); the rest keep their order
1422    function orderedWithFirst(list, first) {
1423        if (!first || list.indexOf(first) === -1) return list;
1424        return [first].concat(list.filter(function(item) { return item !== first; }));
1425    }
1426
1427    function selectOptionsMarkup(values, labelFor) {
1428        return values.map(function(value, index) {
1429            return '<option value="' + escapeHtml(value) + '"' + (index === 0 ? ' selected' : '') + '>'
1430                + escapeHtml(labelFor(value)) + '</option>';
1431        }).join('');
1432    }
1433
1434    function selectFieldMarkup(id, label, attribute, optionsHtml) {
1435        // label for + matching id ties the visible caption to the select, so voice-control
1436        // users can target it (an aria-label alone is invisible and not voice-addressable)
1437        return [
1438            '<div>',
1439            '<label for="' + id + '" style="display:block;margin:0 0 4px;font-size:11px;color:#6b7280;">' + escapeHtml(label) + '</label>',
1440            '<select id="' + id + '" ' + attribute + ' style="width:100%;background:#fff;border:1px solid #dfe3e8;border-radius:6px;padding:4px 0;font-size:12px;color:#111827;">' + optionsHtml + '</select>',
1441            '</div>',
1442        ].join('');
1443    }
1444
1445    function renderModal(market, targetUrl) {
1446        const modalCopy = config.modal_copy || {};
1447        const allCountryCodes = collectMarketCountryCodes();
1448        const picked = pickDisplayCountry(market);
1449        // The header/CTA must describe the same country the dropdown preselects, so a pick
1450        // no market covers (empty country_codes + uncovered fallback) falls back to the list
1451        const countryCode = allCountryCodes.indexOf(picked) !== -1 ? picked : (allCountryCodes[0] || picked);
1452        const preferredLanguage = preferredLocaleFor(market);
1453        const languageOptions = orderedWithFirst(localesForCountry(countryCode, market), preferredLanguage);
1454        // {language} copy must name the option the dropdown actually preselects — a
1455        // default_language the target market doesn't publish is dropped from the list
1456        const languageCode = languageOptions[0] || preferredLanguage;
1457        const flagHtml = flagImgMarkup(countryCode);
1458        const replacements = {
1459            country: countryName(countryCode) || market.name || '',
1460            language: languageName(languageCode),
1461            currency: (marketForCountry(countryCode) || market).currency_code || '',
1462        };
1463        // Hex-only guard: cta_color lands in a style attribute, so reject arbitrary CSS
1464        const ctaColor = /^#[0-9a-fA-F]{3,8}$/.test(modalCopy.cta_color || '') ? modalCopy.cta_color : '#1F1F1F';
1465        const headerTemplate = modalCopy.header || 'It looks like you are shopping from {country}';
1466        const descriptionTemplate = modalCopy.description || 'Visit our {country} store for {currency} pricing.';
1467        const ctaTemplate = modalCopy.cta_label || 'Continue to {country} store';
1468        const countryOptions = orderedWithFirst(allCountryCodes, countryCode);
1469
1470        const overlay = document.createElement('div');
1471        overlay.setAttribute('data-adnabu-geo-modal', '');
1472        overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,15,15,0.32);z-index:2147483646;display:flex;align-items:center;justify-content:center;font-family:system-ui,-apple-system,BlinkMacSystemFont,sans-serif;';
1473        overlay.innerHTML = [
1474            '<div role="dialog" aria-modal="true" data-adnabu-geo-dialog aria-label="' + escapeHtml(substituteTokens(headerTemplate, replacements)) + '" style="background:#fff;border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,0.18);padding:20px;max-width:340px;width:calc(100% - 40px);">',
1475            '<div style="display:flex;justify-content:space-between;align-items:flex-start;gap:12px;">',
1476            '<p data-adnabu-geo-header aria-live="polite" style="margin:0;font-size:15px;font-weight:500;line-height:1.35;">' + renderHeaderHtml(headerTemplate, replacements, flagHtml) + '</p>',
1477            '<button type="button" aria-label="Close" data-adnabu-geo-dismiss style="background:transparent;border:none;padding:0;cursor:pointer;color:#5c6a7a;font-size:20px;line-height:1;">×</button>',
1478            '</div>',
1479            '<p data-adnabu-geo-description aria-live="polite" style="margin:12px 0 0;font-size:13px;color:#374151;line-height:1.4;">' + escapeHtml(substituteTokens(descriptionTemplate, replacements)) + '</p>',
1480            '<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;">',
1481            selectFieldMarkup('adnabu-geo-country-select', modalCopy.country_field_label || 'Country', 'data-adnabu-geo-country', selectOptionsMarkup(countryOptions, countryName)),
1482            selectFieldMarkup('adnabu-geo-language-select', modalCopy.language_field_label || 'Language', 'data-adnabu-geo-language', selectOptionsMarkup(languageOptions, languageName)),
1483            '</div>',
1484            '<button type="button" data-adnabu-geo-accept style="margin-top:16px;width:100%;background:' + escapeHtml(ctaColor) + ';color:#fff;border:none;border-radius:8px;padding:10px 14px;font-weight:600;font-size:13px;
1484cursor:pointer;">',
1485            escapeHtml(substituteTokens(ctaTemplate, replacements)),
1486            '</button>',
1487            '</div>',
1488        ].join('');
1489
1490        const previouslyFocused = document.activeElement;
1491        const previousBodyOverflow = document.body.style.overflow;
1492        // Lock background scroll so the page doesn't scroll behind the overlay on mobile
1493        document.body.style.overflow = 'hidden';
1494        document.body.appendChild(overlay);
1495
1496        const dialogElement = overlay.querySelector('[data-adnabu-geo-dialog]');
1497        const headerElement = overlay.querySelector('[data-adnabu-geo-header]');
1498        const descriptionElement = overlay.querySelector('[data-adnabu-geo-description]');
1499        const countrySelect = overlay.querySelector('[data-adnabu-geo-country]');
1500        const languageSelect = overlay.querySelector('[data-adnabu-geo-language]');
1501        const acceptButton = overlay.querySelector('[data-adnabu-geo-accept]');
1502
1503        // All templated copy tracks the current selection, not just the CTA — a modal that
1504        // still says "Shopping from France?" above a "Continue to Germany store" button lies
1505        function updateModalCopy() {
1506            const chosenCountry = countrySelect.value || countryCode;
1507            const chosenMarket = marketForCountry(chosenCountry) || market;
1508            const chosen = {
1509                country: countryName(chosenCountry) || chosenMarket.name || '',
1510                language: languageName(languageSelect.value || languageCode),
1511                currency: chosenMarket.currency_code || '',
1512            };
1513            headerElement.innerHTML = renderHeaderHtml(headerTemplate, chosen, flagImgMarkup(chosenCountry));
1514            descriptionElement.textContent = substituteTokens(descriptionTemplate, chosen);
1515            acceptButton.textContent = substituteTokens(ctaTemplate, chosen);
1516            dialogElement.setAttribute('aria-label', substituteTokens(headerTemplate, chosen));
1517        }
1518
1519        function handleKeydown(e) {
1520            if (e.key === 'Escape') { dismiss(); return; }
1521            if (e.key !== 'Tab') return;
1522            // Keep Tab cycling inside the dialog while it is open
1523            const focusables = overlay.querySelectorAll('select, button');
1524            const first = focusables[0];
1525            const last = focusables[focusables.length - 1];
1526            if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }
1527            else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }
1528        }
1529        function dismiss() {
1530            sendEvent('GEO_MODAL_DISMISSED', {target_country_code: countryCode, target_market_id: market.shopify_id});
1531            document.removeEventListener('keydown', handleKeydown);
1532            document.body.style.overflow = previousBodyOverflow;
1533            overlay.remove();
1534            if (previouslyFocused && typeof previouslyFocused.focus === 'function') previouslyFocused.focus();
1535        }
1536        function accept() {
1537            // Guard against double submission — the first click already navigates
1538            if (acceptButton.disabled) return;
1539            acceptButton.disabled = true;
1540            document.removeEventListener('keydown', handleKeydown);
1541            document.body.style.overflow = previousBodyOverflow;
1542            const chosenCountry = countrySelect.value || countryCode;
1543            const chosenMarket = marketForCountry(chosenCountry) || market;
1544            sendEvent('GEO_MODAL_ACCEPTED', {
1545                target_country_code: chosenCountry, target_market_id: chosenMarket.shopify_id,
1546                to_url: buildDestinationUrl(chosenMarket, window.location.pathname) || targetUrl,
1547            });
1548            switchCountry(chosenCountry, window.location.pathname, languageSelect.value || languageCode);
1549        }
1550        countrySelect.addEventListener('change', function() {
1551            // Same preference order as the initial render, so toggling a country away and
1552            // back preselects the same language
1553            const chosenMarket = marketForCountry(countrySelect.value) || market;
1554            const locales = orderedWithFirst(localesForCountry(countrySelect.value, market), preferredLocaleFor(c
1554hosenMarket));
1555            languageSelect.innerHTML = selectOptionsMarkup(locales, languageName);
1556            updateModalCopy();
1557        });
1558        languageSelect.addEventListener('change', updateModalCopy);
1559        overlay.querySelector('[data-adnabu-geo-dismiss]').addEventListener('click', dismiss);
1560        acceptButton.addEventListener('click', accept);
1561        overlay.addEventListener('click', function(e) { if (e.target === overlay) dismiss(); });
1562        document.addEventListener('keydown', handleKeydown);
1563        // Emitted only after a successful render + wiring, so a throw above (caught in run())
1564        // never counts an impression for a modal the visitor can't see
1565        sendEvent('GEO_MODAL_SHOWN', {target_country_code: countryCode, target_market_id: market.shopify_id});
1566        countrySelect.focus({preventScroll: true});
1567    }
1568
1569    // Best-effort bot exclusion: JS-rendering crawlers (Googlebot, Bingbot) keep their bot UA
1570    // while rendering, and navigator.webdriver catches headless automation.
1571    // Redirecting crawlers by IP breaks indexing of localized markets, so bots get neither
1572    // redirects nor modals — and never reach sendEvent, keeping analytics human-only.
1573    function isBot() {
1574        if (navigator.webdriver) return true;
1575        return /bot|crawler|spider|crawling|slurp|lighthouse|headless|bingpreview|facebookexternalhit|whatsapp|telegram|pinterest|semrush|ahrefs|screaming frog/i
1576            .test(navigator.userAgent);
1577    }
1578
1579    const botDetected = isBot();
1580
1581    async function run() {
1582        if (botDetected) {
1583            log('Bot or automation detected; skipping geo handling');
1584            return;
1585        }
1586        await countryDetectionReady;
1587        const targetMarket = findTargetMarket();
1588        if (!targetMarket) {
1589            log('No target market found for visitor country', detectVisitorCountry());
1590            return;
1591        }
1592        const targetUrl = pickMarketUrl(targetMarket);
1593        if (!targetUrl) {
1594            log('No URL resolved for target market', targetMarket);
1595            return;
1596        }
1597        if (isAlreadyInMarket(targetMarket, targetUrl)) {
1598            log('Visitor already in target market origin', targetUrl);
1599            return;
1600        }
1601        if (config.mode === 'AUTO') {
1602            // Submit only a country the target market covers, so the reported market and
1603            // the market Shopify resolves can't diverge
1604            const targetCountries = targetMarket.country_codes || [];
1605            const picked = pickDisplayCountry(targetMarket);
1606            const submitCountry = targetCountries.indexOf(picked) !== -1 ? picked : targetCountries[0];
1607            if (!submitCountry) {
1608                log('Target market has no country to submit; skipping AUTO redirect');
1609                return;
1610            }
1611            // No persisted marker means no brake against reload loops — storage-blocked
1612            // visitors usually block the localization cookie too, so the switch won't stick
1613            if (!markHandled()) {
1614                log('Session marker not persisted; skipping AUTO redirect');
1615                return;
1616            }
1617            sendEvent('GEO_AUTO_REDIRECTED', {
1618                target_country_code: submitCountry, target_market_id: targetMarket.shopify_id,
1619                to_url: buildDestinationUrl(targetMarket, window.location.pathname) || targetUrl,
1620            });
1621            // Honor default_language when the target market publishes it, matching pickMarketUrl's choice
1622            const autoLocale = config.default_language
1623                && (targetMarket.locales || []).indexOf(config.default_language) !== -1
1624                ? config.default_language : null;
1625            switchCountry(submitCountry, window.location.pathname, autoLocale);
1626            return;
1627        }
1628        if (config.mode !== 'MODAL') {
1629            log('Unknown redirection mode; skipping', config.mode);
1630            return;
1631        }
1632        // Mark handled only after a successful render — a throw partway would otherwise cost
1633        // the visitor the modal for the whole session and leave a dead overlay on the page
1634        try {
1635            renderModal(targetMarket, targetUrl);
1636        } catch (renderError) {
1637            const partialOverlay = document.querySelector('[data-adnabu-geo-modal]');
1638            if (partialOverlay) partialOverlay.remove();
1639            log('Modal render failed', renderError);
1640            return;
1641        }
1642        markHandled();
1643    }
1644
1645    // Detection starts at script evaluation (this block targets head) so the network round
1646    // trip overlaps document parsing instead of delaying the redirect past DOMContentLoaded.
1647    // With region_detection off the visitor is never geolocated — no lookup, no cache.
1648    const countryDetectionReady = !botDetected && config.region_detection !== false
1649        ? warmUpCountryDetection() : Promise.resolve();
1650
1651    // async run() would otherwise surface storage/network failures as unhandled rejections
1652    function startGeo() {
1653        run().catch(function(e) { log('Geo run failed', e); });
1654    }
1655    if (document.readyState === 'loading') {
1656        document.addEventListener('DOMContentLoaded', startGeo);
1657    } else {
1658        startGeo();
1659    }
1660})();
1661/* ADNABU_GEO_END */
1662</script>
1662
1663
1664
1665<!-- END app block -->
1665<script src="https://cdn.shopify.com/extensions/01a0f31a-d643-731f-a391-f78e428ce1be/forms-2604/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1665
1665
1666<script src="https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/app-embed.js" type="text/javascript" defer="defer"></script>
1666
1667<link href="https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/common.css" rel="stylesheet" type="text/css" media="all">
1668<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1669<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: 76832899308,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};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 1669
1669
1670<script>
1671  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1672</script>
vendor: 1 bytes, line 1672
1672
1673<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}
1673).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: 76832899308,storefrontBaseUrl: "https://wenonah.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://wenonah.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"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":"Wenonah Canoe","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"2rswcr-15.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/wenonah.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://wenonah.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"152829755628","themeStoreId":"887","themePublished":"true","eventMetadataId":"8d2be14b-7000-4732-acbc-6dc45bb275c9","pageType":"page","resourceId":"134222971116","shopId":"76832899308","storefrontBaseUrl":"https:\/\/wenonah.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\",{}]]"});})();</script>
1673<script>
1674  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1675  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1676  window.ShopifyAnalytics.meta.currency = 'USD';
1677  var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":134222971116,"requestId":"63f1af95-3a32-484f-ade3-ca4b58dd6bf8-1790865070"}};
1678  for (var attr in meta) {
1679    window.ShopifyAnalytics.meta[attr] = meta[attr];
1680  }
1681</script>
vendor: 1 bytes, line 1681
1681
1682<script class="analytics">
1683  (function () {
1684    var customDocumentWrite = function(content) {
1685      var jquery = null;
1686
1687      if (window.jQuery) {
1688        jquery = window.jQuery;
1689      } else if (window.Checkout && window.Checkout.$) {
1690        jquery = window.Checkout.$;
1691      }
1692
1693      if (jquery) {
1694        jquery('body').append(content);
1695      }
1696    };
1697
1698    var hasLoggedConversion = function(token) {
1699      if (token) {
1700        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1701      }
1702      return false;
1703    }
1704
1705    var setCookieIfConversion = function(token) {
1706      if (token) {
1707        var twoMonthsFromNow = new Date(Date.now());
1708        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1709
1710        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1711      }
1712    }
1713
1714    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1715    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1716    if (trekkie.integrations) {
1717      return;
1718    }
1719    trekkie.methods = [
1720      'identify',
1721      'page',
1722      'ready',
1723      'track',
1724      'trackForm',
1725      'trackLink'
1726    ];
1727    trekkie.factory = function(method) {
1728      return function() {
1729        var args = Array.prototype.slice.call(arguments);
1730        args.unshift(method);
1731        trekkie.push(args);
1732        if (method == 'track' || method == 'page') {
1733          var pageUrl;
1734          try {
1735            pageUrl = window.location.href;
1736          } catch (e) {}
1737          var pageReferrer;
1738          try {
1739            pageReferrer = document.referrer;
1740          } catch (e) {}
1741          try {
1742            if (window.__TREKKIE_SHIM_QUEUE == null) {
1743              window.__TREKKIE_SHIM_QUEUE = [];
1744            }
1745            window.__TREKKIE_SHIM_QUEUE.push({
1746              from: 'trekkie-stub',
1747              method: method,
1748              args: args.slice(1),
1749              pageContext: {
1750                url: pageUrl,
1751                referrer: pageReferrer
1752              }
1753            });
1754          } catch (e) {
1755            // no-op
1756          }
1757        }
1758        return trekkie;
1759      };
1760    };
1761    for (var i = 0; i < trekkie.methods.length; i++) {
1762      var key = trekkie.methods[i];
1763      trekkie[key] = trekkie.factory(key);
1764    }
1765    trekkie.load = function(config) {
1766      trekkie.config = config || {};
1767      trekkie.config.initialDocumentCookie = document.cookie;
1768      var first = document.getElementsByTagName('script')[0];
1769var script = document.createElement('script');
1770script.type = 'text/javascript';
1771script.onerror = function(e) {
1772  var scriptFallback = document.createElement('script');
1773  scriptFallback.type = 'text/javascript';
1774  scriptFallback.onerror = function(error) {
1775          var Monorail = {
1776      produce: function produce(monorailDomain, schemaId, payload) {
1777        var currentMs = new Date().getTime();
1778        var event = {
1779          schema_id: schemaId,
1780          payload: payload,
1781          metadata: {
1782            event_created_at_ms: currentMs,
1783            event_sent_at_ms: currentMs
1784          }
1785        };
1786        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1787      },
1788      sendRequest: function sendRequest(endpointUrl, payload) {
1789        // Try the sendBeacon API
1790        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1791          var blobData = new window.Blob([payload], {
1792            type: 'text/plain'
1793          });
1794
1795          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1796            return true;
1797          } // sendBeacon was not successful
1798
1799        } // XHR beacon
1800
1801        var xhr = new XMLHttpRequest();
1802
1803        try {
1804          xhr.open('POST', endpointUrl);
1805          xhr.setRequestHeader('Content-Type', 'text/plain');
1806          xhr.send(payload);
1807        } catch (e) {
1808          console.log(e);
1809        }
1810
1811        return false;
1812      },
1813      isIos12: function isIos12() {
1814        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1815      }
1816    };
1817    Monorail.produce('monorail-edge.shopifysvc.com',
1818      'trekkie_storefront_load_errors/1.1',
1819      {shop_id: 76832899308,
1820      theme_id: 152829755628,
1821      app_name: "storefront",
1822      context_url: window.location.href,
1823      source_url: "//wenonah.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1824
1825  };
1826  scriptFallback.async = true;
1827  scriptFallback.src = '//wenonah.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1828  first.parentNode.insertBefore(scriptFallback, first);
1829};
1830script.async = true;
1831script.src = '//wenonah.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1832first.parentNode.insertBefore(script, first);
1833
1834    };
1835    trekkie.load(
1836      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":76832899308,"isMerchantRequest":null,"themeId":152829755628,"themeCityHash":"12581476647115444553","contentLanguage":"en","currency":"USD","eventMetadataId":"8d2be14b-7000-4732-acbc-6dc45bb275c9"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1837    );
1838
1839    var loaded = false;
1840    trekkie.ready(function() {
1841      if (loaded) return;
1842      loaded = true;
1843
1844      window.ShopifyAnalytics.lib = window.trekkie;
1845
1846      var originalDocumentWrite = document.write;
1847      document.write = customDocumentWrite;
1848      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1849      document.write = originalDocumentWrite;
1850
1851      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1852      var token = match? match[1]: undefined;
1853      if (!hasLoggedConversion(token)) {
1854        setCookieIfConversion(token);
1855        
1856      }
1857    });
1858
1859    window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":134222971116,"requestId":"63f1af95-3a32-484f-ade3-ca4b58dd6bf8-1790865070","shopifyEmitted":true});
1860
1861    var eventsListenerScript = document.createElement('script');
1862    eventsListenerScript.async = true;
1863    eventsListenerScript.src = "//wenonah.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1864    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1865})();</script>
vendor: 1 bytes, line 1865
1865
1866<script
1867  defer
1868  src="https://wenonah.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1869  data-application="storefront-renderer"
1870  data-shop-id="76832899308"
1871  data-render-region="gcp-europe-west1"
1872  data-page-type="page"
1873  data-theme-instance-id="152829755628"
1874  data-theme-name="Dawn"
1875  data-theme-version="15.3.0"
1876  data-monorail-region="shop_domain"
1877  data-resource-timing-sampling-rate="10"
1878  data-shs="true"
1879  data-shs-beacon="true"
1880  data-shs-export-with-fetch="true"
1881  data-shs-logs-sample-rate="1"
1882  data-shs-beacon-endpoint="https://wenonah.com/api/collect"
1883></script>
1883
1884<meta name="shopify-y" content="7b004c3d-c8c8-4195-9e71-cc8ee8bda070" data-expiration="1822422670000"><meta name="shopify-s" content="123edcd7-89d7-429f-a997-960d11b847ff" data-expiration="1790866870000"><meta name="new-cookie-storage-activated" content="t">
1885</head>
1886
1887  <body class="gradient">
1888    <a class="skip-to-content-link button visually-hidden" href="#MainContent">
1889      Skip to content
1890    </a><!-- BEGIN sections: header-group -->
1891<div id="shopify-section-sections--19896699257068__announcement-bar" class="shopify-section shopify-section-group-header-group announcement-bar-section"><link href="//wenonah.com/cdn/shop/t/2/assets/component-slideshow.css?v=17933591812325749411749921819" rel="stylesheet" type="text/css" media="all" />
1892<link href="//wenonah.com/cdn/shop/t/2/assets/component-slider.css?v=14039311878856620671749921819" rel="stylesheet" type="text/css" media="all" />
1893
1894  <link href="//wenonah.com/cdn/shop/t/2/assets/component-list-social.css?v=35792976012981934991749921818" rel="stylesheet" type="text/css" media="all" />
1895
1896
1897<div
1898  class="utility-bar color-scheme-3 gradient"
1899>
1900  <div class="page-width utility-bar__grid"><slideshow-component
1901        class="announcement-bar"
1902        role="region"
1903        aria-roledescription="Carousel"
1904        aria-label="Announcement bar"
1905      >
1906        <div class="announcement-bar-slider slider-buttons">
1907          <button
1908            type="button"
1909            class="slider-button slider-button--prev"
1910            name="previous"
1911            aria-label="Previous announcement"
1912            aria-controls="Slider-sections--19896699257068__announcement-bar"
1913          >
1914            <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
1915</span>
1916          </button>
1917          <div
1918            class="grid grid--1-col slider slider--everywhere"
1919            id="Slider-sections--19896699257068__announcement-bar"
1920            aria-live="polite"
1921            aria-atomic="true"
1922            data-autoplay="true"
1923            data-speed="4"
1924          ><div
1925                class="slideshow__slide slider__slide grid__item grid--1-col"
1926                id="Slide-sections--19896699257068__announcement-bar-1"
1927                
1928                role="group"
1929                aria-roledescription="Announcement"
1930                aria-label="1 of 2"
1931                tabindex="-1"
1932              >
1933                <div
1934                  class="announcement-bar__announcement"
1935                  role="region"
1936                  aria-label="Announcement"
1937                ><p class="announcement-bar__message h5">
1938                      <span>Free shipping on orders over $124!</span></p></div>
1939              </div><div
1940                class="slideshow__slide slider__slide grid__item grid--1-col"
1941                id="Slide-sections--19896699257068__announcement-bar-2"
1942                
1943                role="group"
1944                aria-roledescription="Announcement"
1945                aria-label="2 of 2"
1946                tabindex="-1"
1947              >
1948                <div
1949                  class="announcement-bar__announcement"
1950                  role="region"
1951                  aria-label="Announcement"
1952                ><p class="announcement-bar__message h5">
1953                      <span>Up to 3 paddles ship for $50. Continental USA only.</span></p></div>
1954              </div></div>
1955          <button
1956            type="button"
1957            class="slider-button slider-button--next"
1958            name="next"
1959            aria-label="Next announcement"
1960            aria-controls="Slider-sections--19896699257068__announcement-bar"
1961          >
1962            <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
1963</span>
1964          </button>
1965        </div>
1966      </slideshow-component><div class="localization-wrapper">
1967</div>
1968  </div>
1969</div>
1970
1971
1972</div><div id="shopify-section-sections--19896699257068__header" class="shopify-section shopify-section-group-header-group section-header"><link rel="stylesheet" href="//wenonah.com/cdn/shop/t/2/assets/component-list-menu.css?v=151968516119678728991749921818" media="print" onload="this.media='all'">
1973<link rel="stylesheet" href="//wenonah.com/cdn/shop/t/2/assets/component-search.css?v=165164710990765432851749921819" media="print" onload="this.media='all'">
1974<link rel="stylesheet" href="//wenonah.com/cdn/shop/t/2/assets/component-menu-drawer.css?v=147478906057189667651749921818" media="print" onload="this.media='all'">
1975<link
1976  rel="stylesheet"
1977  href="//wenonah.com/cdn/shop/t/2/assets/component-cart-notification.css?v=54116361853792938221749921818"
1978  media="print"
1979  onload="this.media='all'"
1980><link rel="stylesheet" href="//wenonah.com/cdn/shop/t/2/assets/component-price.css?v=70172745017360139101749921819" media="print" onload="this.media='all'"><style>
1981  header-drawer {
1982    justify-self: start;
1983    margin-left: -1.2rem;
1984  }@media screen and (min-width: 990px) {
1985      header-drawer {
1986        display: none;
1987      }
1988    }.menu-drawer-container {
1989    display: flex;
1990  }
1991
1992  .list-menu {
1993    list-style: none;
1994    padding: 0;
1995    margin: 0;
1996  }
1997
1998  .list-menu--inline {
1999    display: inline-flex;
2000    flex-wrap: wrap;
2001  }
2002
2003  summary.list-menu__item {
2004    padding-right: 2.7rem;
2005  }
2006
2007  .list-menu__item {
2008    display: flex;
2009    align-items: center;
2010    line-height: calc(1 + 0.3 / var(--font-body-scale));
2011  }
2012
2013  .list-menu__item--link {
2014    text-decoration: none;
2015    padding-bottom: 1rem;
2016    padding-top: 1rem;
2017    line-height: calc(1 + 0.8 / var(--font-body-scale));
2018  }
2019
2020  @media screen and (min-width: 750px) {
2021    .list-menu__item--link {
2022      padding-bottom: 0.5rem;
2023      padding-top: 0.5rem;
2024    }
2025  }
2026</style><style data-shopify>.header {
2027    padding: 10px 3rem 10px 3rem;
2028  }
2029
2030  .section-header {
2031    position: sticky; /* This is for fixing a Safari z-index issue. PR #2147 */
2032    margin-bottom: 0px;
2033  }
2034
2035  @media screen and (min-width: 750px) {
2036    .section-header {
2037      margin-bottom: 0px;
2038    }
2039  }
2040
2041  @media screen and (min-width: 990px) {
2042    .header {
2043      padding-top: 20px;
2044      padding-bottom: 20px;
2045    }
2046  }</style>
2046<script src="//wenonah.com/cdn/shop/t/2/assets/cart-notification.js?v=133508293167896966491749921818" defer="defer"></script>
2046
2047
2048<sticky-header
2049  
2050    data-sticky-type="on-scroll-up"
2051  
2052  class="header-wrapper color-scheme-2 gradient header-wrapper--border-bottom"
2053><header class="header header--middle-left header--mobile-center page-width header--has-menu header--has-social header--has-account">
2054
2055<header-drawer data-breakpoint="tablet">
2056  <details id="Details-menu-drawer-container" class="menu-drawer-container">
2057    <summary
2058      class="header__icon header__icon--menu header__icon--summary link focus-inset"
2059      aria-label="Menu"
2060    >
2061      <span><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-hamburger" viewBox="0 0 18 16"><path fill="currentColor" d="M1 .5a.5.5 0 1 0 0 1h15.71a.5.5 0 0 0 0-1zM.5 8a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1A.5.5 0 0 1 .5 8m0 7a.5.5 0 0 1 .5-.5h15.71a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5"/></svg>
2062<svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg>
2063</span>
2064    </summary>
2065    <div id="menu-drawer" class="gradient menu-drawer motion-reduce color-scheme-1">
2066      <div class="menu-drawer__inner-container">
2067        <div class="menu-drawer__navigation-container">
2068          <nav class="menu-drawer__navigation">
2069            <ul class="menu-drawer__menu has-submenu list-menu" role="list"><li><a
2070                      id="HeaderDrawer-home"
2071                      href="/"
2072                      class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2073                      
2074                    >
2075                      Home
2076                    </a></li><li><details id="Details-menu-drawer-menu-item-2">
2077                      <summary
2078                        id="HeaderDrawer-canoes"
2079                        class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2080                      >
2081                        Canoes
2082                        <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2082ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2083</span>
2084                        <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2085</span>
2086                      </summary>
2087                      <div
2088                        id="link-canoes"
2089                        class="menu-drawer__submenu has-submenu gradient motion-reduce"
2090                        tabindex="-1"
2091                      >
2092                        <div class="menu-drawer__inner-submenu">
2093                          <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
2094                            <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2094ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2095</span>
2096                            Canoes
2097                          </button>
2098                          <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a
2099                                    id="HeaderDrawer-canoes-versatile-canoes"
2100                                    href="/collections/versatile-canoes"
2101                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2102                                    
2103                                  >
2104                                    Versatile Canoes
2105                                  </a></li><li><a
2106                                    id="HeaderDrawer-canoes-fast-canoes"
2107                                    href="/collections/fast-canoes"
2108                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2109                                    
2110                                  >
2111                                    Fast Canoes
2112                                  </a></li><li><a
2113                                    id="HeaderDrawer-canoes-fishing-canoes"
2114                                    href="/collections/fishing-canoes"
2115                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2116                                    
2117                                  >
2118                                    Fishing Canoes
2119                                  </a></li><li><a
2120                                    id="HeaderDrawer-canoes-river-canoes"
2121                                    href="/collections/river-canoes-1"
2122                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2123                                    
2124                                  >
2125                                    River Canoes
2126                                  </a></li><li><a
2127                                    id="HeaderDrawer-canoes-racing-canoes"
2128                                    href="/collections/race-canoes"
2129                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2130                                    
2131                                  >
2132                                    Racing Canoes
2133                                  </a></li><li><a
2134                                    id="HeaderDrawer-canoes-pack-canoes"
2135                                    href="/collections/pack"
2136                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2137                                    
2138                                  >
2139                                    Pack Canoes
2140                                  </a></li><li><a
2141                                    id="HeaderDrawer-canoes-legacy-canoes"
2142                                    href="/collections/legacy"
2143                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2144                                    
2145                                  >
2146                                    Legacy Canoes
2147                                  </a></li><li><a
2148                                    id="HeaderDrawer-canoes-retired-models"
2149                                    href="/pages/wenonah-retired-canoe-models"
2150                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2151                                    
2152                                  >
2153                                    Retired Models
2154                                  </a></li></ul>
2155                        </div>
2156                      </div>
2157                    </details></li><li><details id="Details-menu-drawer-menu-item-3">
2158                      <summary
2159                        id="HeaderDrawer-accessories"
2160                        class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2161                      >
2162                        Accessories
2163                        <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewBox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2164</span>
2165                        <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2166</span>
2167                      </summary>
2168                      <div
2169                        id="link-accessories"
2170                        class="menu-drawer__submenu has-submenu gradient motion-reduce"
2171                        tabindex="-1"
2172                      >
2173                        <div class="menu-drawer__inner-submenu">
2174                          <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
2175                            <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2175ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2176</span>
2177                            Accessories
2178                          </button>
2179                          <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a
2180                                    id="HeaderDrawer-accessories-paddles"
2181                                    href="/collections/frontpage/Canoe-Paddles"
2182                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2183                                    
2184                                  >
2185                                    Paddles
2186                                  </a></li><li><a
2187                                    id="HeaderDrawer-accessories-portage"
2188                                    href="/collections/portage/Canoe-Portaging"
2189                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2190                                    
2191                                  >
2192                                    Portage
2193                                  </a></li><li><a
2194                                    id="HeaderDrawer-accessories-seating"
2195                                    href="/collections/seating/Canoe-Seating"
2196                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2197                                    
2198                                  >
2199                                    Seating
2200                                  </a></li><li><a
2201                                    id="HeaderDrawer-accessories-transport"
2202                                    href="/collections/canoe-transport"
2203                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2204                                    
2205                                  >
2206                                    Transport
2207                                  </a></li><li><a
2208                                    id="HeaderDrawer-accessories-wenonah-gear"
2209                                    href="/collections/wenonah-gear/Hats+Caps+Tees"
2210                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2211                                    
2212                                  >
2213                                    Wenonah Gear
2214                                  </a></li><li><a
2215                                    id="HeaderDrawer-accessories-parts-maintenance"
2216                                    href="/collections/maintenance-parts/Canoe-repair-items."
2217                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2218                                    
2219                                  >
2220                                    Parts &amp; Maintenance
2221                                  </a></li><li><a
2222                                    id="HeaderDrawer-accessories-mfr-certificate-of-origin"
2223                                    href="/products/manufacturers-certificate-of-origin-mdo"
2224                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2225                                    
2226                                  >
2227                                    MFR Certificate of Origin
2228                                  </a></li></ul>
2229                        </div>
2230                      </div>
2231                    </details></li><li><details id="Details-menu-drawer-menu-item-4">
2232                      <summary
2233                        id="HeaderDrawer-about"
2234                        class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2235                      >
2236                        About
2237                        <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2237ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2238</span>
2239                        <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2240</span>
2241                      </summary>
2242                      <div
2243                        id="link-about"
2244                        class="menu-drawer__submenu has-submenu gradient motion-reduce"
2245                        tabindex="-1"
2246                      >
2247                        <div class="menu-drawer__inner-submenu">
2248                          <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
2249                            <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2249ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2250</span>
2251                            About
2252                          </button>
2253                          <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a
2254                                    id="HeaderDrawer-about-our-story"
2255                                    href="/pages/wenonah-history"
2256                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2257                                    
2258                                  >
2259                                    Our Story
2260                                  </a></li><li><a
2261                                    id="HeaderDrawer-about-canoe-material-options"
2262                                    href="/pages/material-descriptions"
2263                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2264                                    
2265                                  >
2266                                    Canoe Material Options
2267                                  </a></li><li><a
2268                                    id="HeaderDrawer-about-canoe-trim-options"
2269                                    href="/pages/canoe-trim-packages"
2270                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2271                                    
2272                                  >
2273                                    Canoe Trim Options
2274                                  </a></li></ul>
2275                        </div>
2276                      </div>
2277                    </details></li><li><a
2278                      id="HeaderDrawer-contact"
2279                      href="/pages/contact-wenonah"
2280                      class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2281                      
2282                    >
2283                      Contact
2284                    </a></li><li><a
2285                      id="HeaderDrawer-where-to-buy"
2286                      href="/pages/store-locator"
2287                      class="menu-drawer__menu-item list-menu__item link link--text focus-inset menu-drawer__menu-item--active"
2288                      
2289                        aria-current="page"
2290                      
2291                    >
2292                      Where To Buy
2293                    </a></li><li><details id="Details-menu-drawer-menu-item-7">
2294                      <summary
2295                        id="HeaderDrawer-policies"
2296                        class="menu-drawer__menu-item list-menu__item link link--text focus-inset"
2297                      >
2298                        Policies
2299                        <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2299ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2300</span>
2301                        <span class="svg-wrapper"><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2302</span>
2303                      </summary>
2304                      <div
2305                        id="link-policies"
2306                        class="menu-drawer__submenu has-submenu gradient motion-reduce"
2307                        tabindex="-1"
2308                      >
2309                        <div class="menu-drawer__inner-submenu">
2310                          <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
2311                            <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2311ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2312</span>
2313                            Policies
2314                          </button>
2315                          <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"><li><a
2316                                    id="HeaderDrawer-policies-owners-manual"
2317                                    href="https://cdn.shopify.com/s/files/1/0768/3289/9308/files/WC_owners_manual.pdf?v=1781630629"
2318                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2319                                    
2320                                  >
2321                                    Owners Manual
2322                                  </a></li><li><a
2323                                    id="HeaderDrawer-policies-canoe-warranty"
2324                                    href="/pages/canoe-warranty"
2325                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2326                                    
2327                                  >
2328                                    Canoe Warranty
2329                                  </a></li><li><a
2330                                    id="HeaderDrawer-policies-canoe-registration"
2331                                    href="/pages/canoe-registration"
2332                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2333                                    
2334                                  >
2335                                    Canoe Registration
2336                                  </a></li><li><a
2337                                    id="HeaderDrawer-policies-privacy-policy"
2338                                    href="/pages/privacy-policy"
2339                                    class="menu-drawer__menu-item link link--text list-menu__item focus-inset"
2340                                    
2341                                  >
2342                                    Privacy Policy
2343                                  </a></li></ul>
2344                        </div>
2345                      </div>
2346                    </details></li></ul>
2347          </nav>
2348          <div class="menu-drawer__utility-links"><a
2349                href="https://wenonah.com/customer_authentication/redirect?locale=en&region_country=US"
2350                class="menu-drawer__account link focus-inset h5 medium-hide large-up-hide"
2351                rel="nofollow"
2352              ><account-icon><span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg>
2353</span></account-icon>Log in</a><div class="menu-drawer__localization header-localization">
2354</div><ul class="list list-social list-unstyled" role="list"><li class="list-social__item">
2355                  <a href="https://www.facebook.com/WenonahCanoe" class="list-social__link link">
2356                    <span class="svg-wrapper"><svg class="icon icon-facebook" viewBox="0 0 20 20"><path fill="currentColor" d="M18 10.049C18 5.603 14.419 2 10 2s-8 3.603-8 8.049C2 14.067 4.925 17.396 8.75 18v-5.624H6.719v-2.328h2.03V8.275c0-2.017 1.195-3.132 3.023-3.132.874 0 1.79.158 1.79.158v1.98h-1.009c-.994 0-1.303.621-1.303 1.258v1.51h2.219l-.355 2.326H11.25V18c3.825-.604 6.75-3.933 6.75-7.951"/></svg>
2357</span>
2358                    <span class="visually-hidden">Facebook</span>
2359                  </a>
2360                </li><li class="list-social__item">
2361                  <a href="https://www.instagram.com/wenonah_canoe/" class="list-social__link link">
2362                    <span class="svg-wrapper"><svg class="icon icon-instagram" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M13.23 3.492c-.84-.037-1.096-.046-3.23-.046-2.144 0-2.39.01-3.238.055-.776.027-1.195.164-1.487.273a2.4 2.4 0 0 0-.912.593 2.5 2.5 0 0 0-.602.922c-.11.282-.238.702-.274 1.486-.046.84-.046 1.095-.046 3.23s.01 2.39.046 3.229c.004.51.097 1.016.274 1.495.145.365.319.639.602.913.282.282.538.456.92.602.474.176.974.268 1.479.273.848.046 1.103.046 3.238.046s2.39-.01 3.23-.046c.784-.036 1.203-.164 1.486-.273.374-.146.648-.329.921-.602.283-.283.447-.548.602-.922.177-.476.27-.979.274-1.486.037-.84.046-1.095.046-3.23s-.01-2.39-.055-3.229c-.027-.784-.164-1.204-.274-1.495a2.4 2.4 0 0 0-.593-.913 2.6 2.6 0 0 0-.92-.602c-.284-.11-.703-.237-1.488-.273ZM6.697 2.05c.857-.036 1.131-.045 3.302-.045a63 63 0 0 1 3.302.045c.664.014 1.321.14 1.943.374a4 4 0 0 1 1.414.922c.41.397.728.88.93 1.414.23.622.354 1.279.365 1.942C18 7.56 18 7.824 18 10.005c0 2.17-.01 2.444-.046 3.292-.036.858-.173 1.442-.374 1.943-.2.53-.474.976-.92 1.423a3.9 3.9 0 0 1-1.415.922c-.51.191-1.095.337-1.943.374-.857.036-1.122.045-3.302.045-2.171 0-2.445-.009-3.302-.055-.849-.027-1.432-.164-1.943-.364a4.15 4.15 0 0 1-1.414-.922 4.1 4.1 0 0 1-.93-1.423c-.183-.51-.329-1.085-.365-1.943C2.009 12.45 2 12.167 2 10.004c0-2.161 0-2.435.055-3.302.027-.848.164-1.432.365-1.942a4.4 4.4 0 0 1 .92-1.414 4.2 4.2 0 0 1 1.415-.93c.51-.183 1.094-.33 1.943-.366Zm.427 4.806a4.105 4.105 0 1 1 5.805 5.805 4.105 4.105 0 0 1-5.805-5.805m1.882 5.371a2.668 2.668 0 1 0 2.042-4.93 2.668 2.668 0 0 0-2.042 4.93m5.922-5.942a.958.958 0 1 1-1.355-1.355.958.958 0 0 1 1.355 1.355" clip-rule="evenodd"/></svg>
2363</span>
2364                    <span class="visually-hidden">Instagram</span>
2365                  </a>
2366                </li><li class="list-social__item">
2367                  <a href="https://www.youtube.com/channel/UCCk62YkJ6aQA62KAgH0PPrQ?view_as=subscriber" class="list-social__link link">
2368                    <span class="svg-wrapper"><svg class="icon icon-youtube" viewBox="0 0 20 20"><path fill="currentColor" d="M18.16 5.87c.34 1.309.34 4.08.34 4.08s0 2.771-.34 4.08a2.13 2.13 0 0 1-1.53 1.53c-1.309.34-6.63.34-6.63.34s-5.321 0-6.63-.34a2.13 2.13 0 0 1-1.53-1.53c-.34-1.309-.34-4.08-.34-4.08s0-2.771.34-4.08a2.17 2.17 0 0 1 1.53-1.53C4.679 4 10 4 10 4s5.321 0 6.63.34a2.17 2.17 0 0 1 1.53 1.53M8.3 12.5l4.42-2.55L8.3 7.4z"/></svg>
2369</span>
2370                    <span class="visually-hidden">YouTube</span>
2371                  </a>
2372                </li></ul>
2373          </div>
2374        </div>
2375      </div>
2376    </div>
2377  </details>
2378</header-drawer>
2379<a href="/" class="header__heading-link link link--text focus-inset"><div class="header__heading-logo-wrapper">
2380            
2381            <img src="//wenonah.com/cdn/shop/files/WenonahAdminLogo.png?v=1748551425&amp;width=600" alt="Wenonah Canoe" srcset="//wenonah.com/cdn/shop/files/WenonahAdminLogo.png?v=1748551425&amp;width=240 240w, //wenonah.com/cdn/shop/files/WenonahAdminLogo.png?v=1748551425&amp;width=360 360w, //wenonah.com/cdn/shop/files/WenonahAdminLogo.png?v=1748551425&amp;width=480 480w" width="240" height="45.0" loading="eager" class="header__heading-logo motion-reduce" sizes="(max-width: 480px) 50vw, 240px">
2382          </div></a>
2383
2384<nav class="header__inline-menu">
2385  <ul class="list-menu list-menu--inline" role="list"><li><a
2386            id="HeaderMenu-home"
2387            href="/"
2388            class="header__menu-item list-menu__item link link--text focus-inset"
2389            
2390          >
2391            <span
2392            >Home</span>
2393          </a></li><li><header-menu>
2394            <details id="Details-HeaderMenu-2">
2395              <summary
2396                id="HeaderMenu-canoes"
2397                class="header__menu-item list-menu__item link focus-inset"
2398              >
2399                <span
2400                >Canoes</span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2401</summary>
2402<ul
2403  id="HeaderMenu-MenuList-2"
2404  class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup"
2405  role="list"
2406  tabindex="-1"
2407><li><a
2408                        id="HeaderMenu-canoes-versatile-canoes"
2409                        href="/collections/versatile-canoes"
2410                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2411                        
2412                      >
2413                        Versatile Canoes
2414                      </a></li><li><a
2415                        id="HeaderMenu-canoes-fast-canoes"
2416                        href="/collections/fast-canoes"
2417                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2418                        
2419                      >
2420                        Fast Canoes
2421                      </a></li><li><a
2422                        id="HeaderMenu-canoes-fishing-canoes"
2423                        href="/collections/fishing-canoes"
2424                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2425                        
2426                      >
2427                        Fishing Canoes
2428                      </a></li><li><a
2429                        id="HeaderMenu-canoes-river-canoes"
2430                        href="/collections/river-canoes-1"
2431                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2432                        
2433                      >
2434                        River Canoes
2435                      </a></li><li><a
2436                        id="HeaderMenu-canoes-racing-canoes"
2437                        href="/collections/race-canoes"
2438                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2439                        
2440                      >
2441                        Racing Canoes
2442                      </a></li><li><a
2443                        id="HeaderMenu-canoes-pack-canoes"
2444                        href="/collections/pack"
2445                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2446                        
2447                      >
2448                        Pack Canoes
2449                      </a></li><li><a
2450                        id="HeaderMenu-canoes-legacy-canoes"
2451                        href="/collections/legacy"
2452                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2453                        
2454                      >
2455                        Legacy Canoes
2456                      </a></li><li><a
2457                        id="HeaderMenu-canoes-retired-models"
2458                        href="/pages/wenonah-retired-canoe-models"
2459                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2460                        
2461                      >
2462                        Retired Models
2463                      </a></li></ul>
2464            </details>
2465          </header-menu></li><li><header-menu>
2466            <details id="Details-HeaderMenu-3">
2467              <summary
2468                id="HeaderMenu-accessories"
2469                class="header__menu-item list-menu__item link focus-inset"
2470              >
2471                <span
2472                >Accessories</span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2473</summary>
2474<ul
2475  id="HeaderMenu-MenuList-3"
2476  class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup"
2477  role="list"
2478  tabindex="-1"
2479><li><a
2480                        id="HeaderMenu-accessories-paddles"
2481                        href="/collections/frontpage/Canoe-Paddles"
2482                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2483                        
2484                      >
2485                        Paddles
2486                      </a></li><li><a
2487                        id="HeaderMenu-accessories-portage"
2488                        href="/collections/portage/Canoe-Portaging"
2489                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2490                        
2491                      >
2492                        Portage
2493                      </a></li><li><a
2494                        id="HeaderMenu-accessories-seating"
2495                        href="/collections/seating/Canoe-Seating"
2496                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2497                        
2498                      >
2499                        Seating
2500                      </a></li><li><a
2501                        id="HeaderMenu-accessories-transport"
2502                        href="/collections/canoe-transport"
2503                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2504                        
2505                      >
2506                        Transport
2507                      </a></li><li><a
2508                        id="HeaderMenu-accessories-wenonah-gear"
2509                        href="/collections/wenonah-gear/Hats+Caps+Tees"
2510                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2511                        
2512                      >
2513                        Wenonah Gear
2514                      </a></li><li><a
2515                        id="HeaderMenu-accessories-parts-maintenance"
2516                        href="/collections/maintenance-parts/Canoe-repair-items."
2517                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2518                        
2519                      >
2520                        Parts &amp; Maintenance
2521                      </a></li><li><a
2522                        id="HeaderMenu-accessories-mfr-certificate-of-origin"
2523                        href="/products/manufacturers-certificate-of-origin-mdo"
2524                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2525                        
2526                      >
2527                        MFR Certificate of Origin
2528                      </a></li></ul>
2529            </details>
2530          </header-menu></li><li><header-menu>
2531            <details id="Details-HeaderMenu-4">
2532              <summary
2533                id="HeaderMenu-about"
2534                class="header__menu-item list-menu__item link focus-inset"
2535              >
2536                <span
2537                >About</span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2538</summary>
2539<ul
2540  id="HeaderMenu-MenuList-4"
2541  class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup"
2542  role="list"
2543  tabindex="-1"
2544><li><a
2545                        id="HeaderMenu-about-our-story"
2546                        href="/pages/wenonah-history"
2547                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2548                        
2549                      >
2550                        Our Story
2551                      </a></li><li><a
2552                        id="HeaderMenu-about-canoe-material-options"
2553                        href="/pages/material-descriptions"
2554                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2555                        
2556                      >
2557                        Canoe Material Options
2558                      </a></li><li><a
2559                        id="HeaderMenu-about-canoe-trim-options"
2560                        href="/pages/canoe-trim-packages"
2561                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2562                        
2563                      >
2564                        Canoe Trim Options
2565                      </a></li></ul>
2566            </details>
2567          </header-menu></li><li><a
2568            id="HeaderMenu-contact"
2569            href="/pages/contact-wenonah"
2570            class="header__menu-item list-menu__item link link--text focus-inset"
2571            
2572          >
2573            <span
2574            >Contact</span>
2575          </a></li><li><a
2576            id="HeaderMenu-where-to-buy"
2577            href="/pages/store-locator"
2578            class="header__menu-item list-menu__item link link--text focus-inset"
2579            
2580              aria-current="page"
2581            
2582          >
2583            <span
2584                class="header__active-menu-item"
2585              
2586            >Where To Buy</span>
2587          </a></li><li><header-menu>
2588            <details id="Details-HeaderMenu-7">
2589              <summary
2590                id="HeaderMenu-policies"
2591                class="header__menu-item list-menu__item link focus-inset"
2592              >
2593                <span
2594                >Policies</span><svg class="icon icon-caret" viewBox="0 0 10 6"><path fill="currentColor" fill-rule="evenodd" d="M9.354.646a.5.5 0 0 0-.708 0L5 4.293 1.354.646a.5.5 0 0 0-.708.708l4 4a.5.5 0 0 0 .708 0l4-4a.5.5 0 0 0 0-.708" clip-rule="evenodd"/></svg>
2595</summary>
2596<ul
2597  id="HeaderMenu-MenuList-7"
2598  class="header__submenu list-menu list-menu--disclosure color-scheme-1 gradient caption-large motion-reduce global-settings-popup"
2599  role="list"
2600  tabindex="-1"
2601><li><a
2602                        id="HeaderMenu-policies-owners-manual"
2603                        href="https://cdn.shopify.com/s/files/1/0768/3289/9308/files/WC_owners_manual.pdf?v=1781630629"
2604                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2605                        
2606                      >
2607                        Owners Manual
2608                      </a></li><li><a
2609                        id="HeaderMenu-policies-canoe-warranty"
2610                        href="/pages/canoe-warranty"
2611                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2612                        
2613                      >
2614                        Canoe Warranty
2615                      </a></li><li><a
2616                        id="HeaderMenu-policies-canoe-registration"
2617                        href="/pages/canoe-registration"
2618                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2619                        
2620                      >
2621                        Canoe Registration
2622                      </a></li><li><a
2623                        id="HeaderMenu-policies-privacy-policy"
2624                        href="/pages/privacy-policy"
2625                        class="header__menu-item list-menu__item link link--text focus-inset caption-large"
2626                        
2627                      >
2628                        Privacy Policy
2629                      </a></li></ul>
2630            </details>
2631          </header-menu></li></ul>
2632</nav>
2633
2634<div class="header__icons header__icons--localization header-localization">
2635      <div class="desktop-localization-wrapper">
2636</div>
2637      
2638
2639<details-modal class="header__search">
2640  <details>
2641    <summary
2642      class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle"
2643      aria-haspopup="dialog"
2644      aria-label="Search"
2645    >
2646      <span>
2647        <span class="svg-wrapper"><svg fill="none" class="icon icon-search" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 1 1 2.85 3.5a5.784 5.784 0 0 1 8.18 8.18m.26 1.12a6.78 6.78 0 1 1 .72-.7l5.4 5.4a.5.5 0 1 1-.71.7z" clip-rule="evenodd"/></svg>
2648</span>
2649        <span class="svg-wrapper header__icon-close"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg>
2650</span>
2651      </span>
2652    </summary>
2653    <div
2654      class="search-modal modal__content gradient"
2655      role="dialog"
2656      aria-modal="true"
2657      aria-label="Search"
2658    >
2659      <div class="modal-overlay"></div>
2660      <div
2661        class="search-modal__content search-modal__content-bottom"
2662        tabindex="-1"
2663      ><predictive-search class="search-modal__form" data-loading-text="Loading..."><form action="/search" method="get" role="search" class="search search-modal__form">
2664          <div class="field">
2665            <input
2666              class="search__input field__input"
2667              id="Search-In-Modal"
2668              type="search"
2669              name="q"
2670              value=""
2671              placeholder="Search"role="combobox"
2672                aria-expanded="false"
2673                aria-owns="predictive-search-results"
2674                aria-controls="predictive-search-results"
2675                aria-haspopup="listbox"
2676                aria-autocomplete="list"
2677                autocorrect="off"
2678                autocomplete="off"
2679                autocapitalize="off"
2680                spellcheck="false">
2681            <label class="field__label" for="Search-In-Modal">Search</label>
2682            <input type="hidden" name="options[prefix]" value="last">
2683            <button
2684              type="reset"
2685              class="reset__button field__button hidden"
2686              aria-label="Clear search term"
2687            >
2688              <span class="svg-wrapper"><svg fill="none" stroke="currentColor" class="icon icon-close" viewBox="0 0 18 18"><circle cx="9" cy="9" r="8.5" stroke-opacity=".2"/><path stroke-linecap="round" stroke-linejoin="round" d="M11.83 11.83 6.172 6.17M6.229 11.885l5.544-5.77"/></svg>
2689</span>
2690            </button>
2691            <button class="search__button field__button" aria-label="Search">
2692              <span class="svg-wrapper"><svg fill="none" class="icon icon-search" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 1 1 2.85 3.5a5.784 5.784 0 0 1 8.18 8.18m.26 1.12a6.78 6.78 0 1 1 .72-.7l5.4 5.4a.5.5 0 1 1-.71.7z" clip-rule="evenodd"/></svg>
2693</span>
2694            </button>
2695          </div><div class="predictive-search predictive-search--header" tabindex="-1" data-predictive-search>
2696
2697<div class="predictive-search__loading-state">
2698  <svg xmlns="http://www.w3.org/2000/svg" class="spinner" viewBox="0 0 66 66"><circle stroke-width="6" cx="33" cy="33" r="30" fill="none" class="path"/></svg>
2699
2700</div>
2701</div>
2702
2703            <span class="predictive-search-status visually-hidden" role="status" aria-hidden="true"></span></form></predictive-search><button
2704          type="button"
2705          class="search-modal__close-button modal__close-button link link--text focus-inset"
2706          aria-label="Close"
2707        >
2708          <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg>
2709</span>
2710        </button>
2711      </div>
2712    </div>
2713  </details>
2714</details-modal>
2715
2716<a href="https://wenonah.com/customer_authentication/redirect?locale=en&region_country=US" class="header__icon header__icon--account link focus-inset small-hide" rel="nofollow">
2717      <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-account" viewBox="0 0 18 19"><path fill="currentColor" fill-rule="evenodd" d="M6 4.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0m3-4a4 4 0 1 0 0 8 4 4 0 0 0 0-8m5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15M9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35" clip-rule="evenodd"/></svg>
2718</span>
2719      <span class="visually-hidden">Log in</span>
2720    </a><a href="/cart" class="header__icon header__icon--cart link focus-inset" id="cart-icon-bubble">
2721        
2722          <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-cart-empty" viewBox="0 0 40 40"><path fill="currentColor" fill-rule="evenodd" d="M15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33L28.4 11.8zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1-9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z"/></svg>
2723</span>
2724        
2725        <span class="visually-hidden">Cart</span></a>
2726    </div>
2727  </header>
2728</sticky-header>
2729
2730<cart-notification>
2731  <div class="cart-notification-wrapper page-width">
2732    <div
2733      id="cart-notification"
2734      class="cart-notification focus-inset color-scheme-2 gradient"
2735      aria-modal="true"
2736      aria-label="Item added to your cart"
2737      role="dialog"
2738      tabindex="-1"
2739    >
2740      <div class="cart-notification__header">
2741        <h2 class="cart-notification__heading caption-large text-body"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-checkmark" viewBox="0 0 12 9">
2741<path fill="currentColor" fill-rule="evenodd" d="M11.35.643a.5.5 0 0 1 .006.707l-6.77 6.886a.5.5 0 0 1-.719-.006L.638 4.845a.5.5 0 1 1 .724-.69l2.872 3.011 6.41-6.517a.5.5 0 0 1 .707-.006z" clip-rule="evenodd"/></svg>
2742Item added to your cart
2743        </h2>
2744        <button
2745          type="button"
2746          class="cart-notification__close modal__close-button link link--text focus-inset"
2747          aria-label="Close"
2748        >
2749          <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-close" viewBox="0 0 18 17"><path fill="currentColor" d="M.865 15.978a.5.5 0 0 0 .707.707l7.433-7.431 7.579 7.282a.501.501 0 0 0 .846-.37.5.5 0 0 0-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 1 0-.707-.708L8.991 7.853 1.413.573a.5.5 0 1 0-.693.72l7.563 7.268z"/></svg>
2750</span>
2751        </button>
2752      </div>
2753      <div id="cart-notification-product" class="cart-notification-product"></div>
2754      <div class="cart-notification__links">
2755        <a
2756          href="/cart"
2757          id="cart-notification-button"
2758          class="button button--secondary button--full-width"
2759        >View cart</a>
2760
2761  <form action="/cart" method="post" id="cart-notification-form">
2762    <button class="button button--primary button--full-width" name="checkout">
2763      Check out
2764    </button>
2765  </form>
2766
2767
2768        <button type="button" class="link button-label">Continue shopping</button>
2769      </div>
2770    </div>
2771  </div>
2772</cart-notification>
2773<style data-shopify>
2774  .cart-notification {
2775    display: none;
2776  }
2777</style>
2778
2779
2780<script type="application/ld+json">
2781  {
2782    "@context": "http://schema.org",
2783    "@type": "Organization",
2784    "name": "Wenonah Canoe",
2785    
2786      "logo": "https:\/\/wenonah.com\/cdn\/shop\/files\/WenonahAdminLogo.png?v=1748551425\u0026width=500",
2787    
2788    "sameAs": [
2789      "",
2790      "https:\/\/www.facebook.com\/WenonahCanoe",
2791      "",
2792      "https:\/\/www.instagram.com\/wenonah_canoe\/",
2793      "",
2794      "",
2795      "",
2796      "https:\/\/www.youtube.com\/channel\/UCCk62YkJ6aQA62KAgH0PPrQ?view_as=subscriber",
2797      ""
2798    ],
2799    "url": "https:\/\/wenonah.com\/pages\/store-locator"
2800  }
2801</script>
2801
2802</div>
2803<!-- END sections: header-group -->
2804
2805    <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
2806      <section id="shopify-section-template--19896698011884__main" class="shopify-section section"><link href="//wenonah.com/cdn/shop/t/2/assets/section-main-page.css?v=848677459125201531749921820" rel="stylesheet" type="text/css" media="all" />
2807<style data-shopify>.section-template--19896698011884__main-padding {
2808    padding-top: 21px;
2809    padding-bottom: 21px;
2810  }
2811
2812  @media screen and (min-width: 750px) {
2813    .section-template--19896698011884__main-padding {
2814      padding-top: 28px;
2815      padding-bottom: 28px;
2816    }
2817  }</style><div class="page-width page-width--narrow section-template--19896698011884__main-padding">
2818  <h1 class="main-page-title page-title h0 scroll-trigger animate--fade-in">
2819    Store Locator
2820  </h1>
2821  <div class="rte scroll-trigger animate--slide-in">
2822    <!-- Start Stockist.co widget -->
2823<stockist-store-locator data-stockist-widget-tag="map_g3y598z3">
2824  Loading store locator from <a href="https://stockist.co">Stockist store locator</a>...
2825</stockist-store-locator>
2826<script async src="https://stockist.co/embed/v1/widget.min.js"></script>
2826
2827<!-- End Stockist.co widget -->
2828  </div>
2829</div>
2830
2831
2832</section><section id="shopify-section-template--19896698011884__178526450171925d75" class="shopify-section section"><div class="page-width scroll-trigger animate--slide-in"></div>
2833
2834
2835</section><section id="shopify-section-template--19896698011884__1785264535fc6767c6" class="shopify-section section"><div class="page-width scroll-trigger animate--slide-in"><div id="shopify-block-AVExPczkwK3dOamlXc__forms_inline_ahktpH" class="shopify-block shopify-app-block"><div
2836  id='AVExPczkwK3dOamlXc__forms_inline_ahktpH'
2837  data-form-root='true'
2838  data-forms-id='forms-root-1090509'
2839  data-forms-text-color='#202020'
2840  data-forms-button-background-color='#202020'
2841  data-forms-button-label-color='#ffffff'
2842  data-forms-links-color='#1878b9'
2843  data-forms-errors-color='#e02229'
2844  data-forms-text-alignment='center'
2845  data-forms-alignment='center'
2846  data-forms-padding-top='0'
2847  data-forms-padding-right='0'
2848  data-forms-padding-bottom='24'
2849  data-forms-padding-left='0'
2850></div>
2851
2852<script>
2853  window['ShopifyForms'] = {
2854    ...window['ShopifyForms'],
2855    currentPageType: "page"
2856  };
2857</script>
2857
2858
2859
2860</div>
2861</div>
2862
2863
2864</section><section id="shopify-section-template--19896698011884__178529632530bde427" class="shopify-section section"><div class="page-width scroll-trigger animate--slide-in"><div id="shopify-block-AMTVOYmF2U1lVa085W__forms_inline_xTdHcn" class="shopify-block shopify-app-block"><div
2865  id='AMTVOYmF2U1lVa085W__forms_inline_xTdHcn'
2866  data-form-root='true'
2867  data-forms-id='forms-root-1090509'
2868  data-forms-text-color='#202020'
2869  data-forms-button-background-color='#202020'
2870  data-forms-button-label-color='#FFFFFF'
2871  data-forms-links-color='#1878B9'
2872  data-forms-errors-color='#E02229'
2873  data-forms-text-alignment='center'
2874  data-forms-alignment='center'
2875  data-forms-padding-top='0'
2876  data-forms-padding-right='0'
2877  data-forms-padding-bottom='24'
2878  data-forms-padding-left='0'
2879></div>
2880
2881<script>
2882  window['ShopifyForms'] = {
2883    ...window['ShopifyForms'],
2884    currentPageType: "page"
2885  };
2886</script>
2886
2887
2888
2889</div>
2890</div>
2891
2892
2893</section>
2894    </main>
2895
2896    <!-- BEGIN sections: footer-group -->
2897<div id="shopify-section-sections--19896699191532__footer" class="shopify-section shopify-section-group-footer-group">
2898<link href="//wenonah.com/cdn/shop/t/2/assets/section-footer.css?v=60318643098753476351749921820" rel="stylesheet" type="text/css" media="all" />
2899<link href="//wenonah.com/cdn/shop/t/2/assets/component-newsletter.css?v=4727253280200485261749921818" rel="stylesheet" type="text/css" media="all" />
2900<link href="//wenonah.com/cdn/shop/t/2/assets/component-list-menu.css?v=151968516119678728991749921818" rel="stylesheet" type="text/css" media="all" />
2901<link href="//wenonah.com/cdn/shop/t/2/assets/component-list-payment.css?v=69253961410771838501749921818" rel="stylesheet" type="text/css" media="all" />
2902<link href="//wenonah.com/cdn/shop/t/2/assets/component-list-social.css?v=35792976012981934991749921818" rel="stylesheet" type="text/css" media="all" />
2903<style data-shopify>.footer {
2904    margin-top: 0px;
2905  }
2906
2907  .section-sections--19896699191532__footer-padding {
2908    padding-top: 27px;
2909    padding-bottom: 27px;
2910  }
2911
2912  @media screen and (min-width: 750px) {
2913    .footer {
2914      margin-top: 0px;
2915    }
2916
2917    .section-sections--19896699191532__footer-padding {
2918      padding-top: 36px;
2919      padding-bottom: 36px;
2920    }
2921  }</style><footer class="footer color-scheme-1 gradient section-sections--19896699191532__footer-padding"><div class="footer__content-top page-width"><div
2922          class="footer-block--newsletter scroll-trigger animate--slide-in"
2923          
2924            data-cascade
2925          
2926        ><div class="footer-block__newsletter"><h2 class="footer-block__heading inline-richtext">Subscribe to our emails</h2><form method="post" action="/contact#ContactFooter" id="ContactFooter" accept-charset="UTF-8" class="footer__newsletter newsletter-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="contact[tags]" value="newsletter">
2927                <div class="newsletter-form__field-wrapper">
2928                  <div class="field">
2929                    <input
2930                      id="NewsletterForm--sections--19896699191532__footer"
2931                      type="email"
2932                      name="contact[email]"
2933                      class="field__input"
2934                      value=""
2935                      aria-required="true"
2936                      autocorrect="off"
2937                      autocapitalize="off"
2938                      autocomplete="email"
2939                      
2940                      placeholder="Email"
2941                      required
2942                    >
2943                    <label class="field__label" for="NewsletterForm--sections--19896699191532__footer">
2944                      Email
2945                    </label>
2946                    <button
2947                      type="submit"
2948                      class="newsletter-form__button field__button"
2949                      name="commit"
2950                      id="Subscribe"
2951                      aria-label="Subscribe"
2952                    >
2953                      <span class="svg-wrapper"><svg xmlns="http://www.w3.org/2000/svg" fill="none" class="icon icon-arrow" viewB
2953ox="0 0 14 10"><path fill="currentColor" fill-rule="evenodd" d="M8.537.808a.5.5 0 0 1 .817-.162l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 1 1-.708-.708L11.793 5.5H1a.5.5 0 0 1 0-1h10.793L8.646 1.354a.5.5 0 0 1-.109-.546" clip-rule="evenodd"/></svg>
2954</span>
2955                    </button>
2956                  </div></div></form></div>
2957
2958<ul class="list-unstyled list-social footer__list-social" role="list"><li class="list-social__item">
2959      <a href="https://www.facebook.com/WenonahCanoe" class="link list-social__link" target="_blank">
2960        <span class="svg-wrapper"><svg class="icon icon-facebook" viewBox="0 0 20 20"><path fill="currentColor" d="M18 10.049C18 5.603 14.419 2 10 2s-8 3.603-8 8.049C2 14.067 4.925 17.396 8.75 18v-5.624H6.719v-2.328h2.03V8.275c0-2.017 1.195-3.132 3.023-3.132.874 0 1.79.158 1.79.158v1.98h-1.009c-.994 0-1.303.621-1.303 1.258v1.51h2.219l-.355 2.326H11.25V18c3.825-.604 6.75-3.933 6.75-7.951"/></svg>
2961</span>
2962        <span class="visually-hidden">Facebook</span>
2963      </a>
2964    </li><li class="list-social__item">
2965      <a href="https://www.instagram.com/wenonah_canoe/" class="link list-social__link" target="_blank">
2966        <span class="svg-wrapper"><svg class="icon icon-instagram" viewBox="0 0 20 20"><path fill="currentColor" fill-rule="evenodd" d="M13.23 3.492c-.84-.037-1.096-.046-3.23-.046-2.144 0-2.39.01-3.238.055-.776.027-1.195.164-1.487.273a2.4 2.4 0 0 0-.912.593 2.5 2.5 0 0 0-.602.922c-.11.282-.238.702-.274 1.486-.046.84-.046 1.095-.046 3.23s.01 2.39.046 3.229c.004.51.097 1.016.274 1.495.145.365.319.639.602.913.282.282.538.456.92.602.474.176.974.268 1.479.273.848.046 1.103.046 3.238.046s2.39-.01 3.23-.046c.784-.036 1.203-.164 1.486-.273.374-.146.648-.329.921-.602.283-.283.447-.548.602-.922.177-.476.27-.979.274-1.486.037-.84.046-1.095.046-3.23s-.01-2.39-.055-3.229c-.027-.784-.164-1.204-.274-1.495a2.4 2.4 0 0 0-.593-.913 2.6 2.6 0 0 0-.92-.602c-.284-.11-.703-.237-1.488-.273ZM6.697 2.05c.857-.036 1.131-.045 3.302-.045a63 63 0 0 1 3.302.045c.664.014 1.321.14 1.943.374a4 4 0 0 1 1.414.922c.41.397.728.88.93 1.414.23.622.354 1.279.365 1.942C18 7.56 18 7.824 18 10.005c0 2.17-.01 2.444-.046 3.292-.036.858-.173 1.442-.374 1.943-.2.53-.474.976-.92 1.423a3.9 3.9 0 0 1-1.415.922c-.51.191-1.095.337-1.943.374-.857.036-1.122.045-3.302.045-2.171 0-2.445-.009-3.302-.055-.849-.027-1.432-.164-1.943-.364a4.15 4.15 0 0 1-1.414-.922 4.1 4.1 0 0 1-.93-1.423c-.183-.51-.329-1.085-.365-1.943C2.009 12.45 2 12.167 2 10.004c0-2.161 0-2.435.055-3.302.027-.848.164-1.432.365-1.942a4.4 4.4 0 0 1 .92-1.414 4.2 4.2 0 0 1 1.415-.93c.51-.183 1.094-.33 1.943-.366Zm.427 4.806a4.105 4.105 0 1 1 5.805 5.805 4.105 4.105 0 0 1-5.805-5.805m1.882 5.371a2.668 2.668 0 1 0 2.042-4.93 2.668 2.668 0 0 0-2.042 4.93m5.922-5.942a.958.958 0 1 1-1.355-1.355.958.958 0 0 1 1.355 1.355" clip-rule="evenodd"/></svg>
2967</span>
2968        <span class="visually-hidden">Instagram</span>
2969      </a>
2970    </li><li class="list-social__item">
2971      <a href="https://www.youtube.com/channel/UCCk62YkJ6aQA62KAgH0PPrQ?view_as=subscriber" class="link list-social__link" target="_blank">
2972        <span class="svg-wrapper"><svg class="icon icon-youtube" viewBox="0 0 20 20"><path fill="currentColor" d="M18.16 5.87c.34 1.309.34 4.08.34 4.08s0 2.771-.34 4.08a2.13 2.13 0 0 1-1.53 1.53c-1.309.34-6.63.34-6.63.34s-5.321 0-6.63-.34a2.13 2.13 0 0 1-1.53-1.53c-.34-1.309-.34-4.08-.34-4.08s0-2.771.34-4.08a2.17 2.17 0 0 1 1.53-1.53C4.679 4 10 4 10 4s5.321 0 6.63.34a2.17 2.17 0 0 1 1.53 1.53M8.3 12.5l4.42-2.55L8.3 7.4z"/></svg>
2973</span>
2974        <span class="visually-hidden">YouTube</span>
2975      </a>
2976    </li></ul>
2977</div>
2978      </div><div
2979    class="footer__content-bottom scroll-trigger animate--slide-in"
2980    
2981      data-cascade
2982    
2983  >
2984    <div class="footer__content-bottom-wrapper page-width">
2985      <div class="footer__column footer__localization isolate"></div>
2986      <div class="footer__column footer__column--info"><div class="footer__payment">
2987            <span class="visually-hidden">Payment methods</span>
2988            <ul class="list list-payment" role="list"><li class="list-payment__item">
2989                  <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/>
2989<path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
2990
2991                </li><li class="list-payment__item">
2992                  <svg class="icon icon--full-color" version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" />
2992<path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg>
2993
2994                </li><li class="list-payment__item">
2995                  <svg class="icon icon--full-color" viewBox="0 0 38 24" width="38" height="24" role="img" aria-labelledby="pi-discover" fill="none" xmlns="http://www.w3.org/2000/svg"><title id="pi-discover">Discover</title><path fill="#000" opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32z" fill="#fff"/><path d="M3.57 7.16H2v5.5h1.57c.83 0 1.43-.2 1.96-.63.63-.52 1-1.3 1-2.11-.01-1.63-1.22-2.76-2.96-2.76zm1.26 4.14c-.34.3-.77.44-1.47.44h-.29V8.1h.29c.69 0 1.11.12 1.47.44.37.33.59.84.59 1.37 0 .53-.22 1.06-.59 1.39zm2.19-4.14h1.07v5.5H7.02v-5.5zm3.69 2.11c-.64-.24-.83-.4-.83-.69 0-.35.34-.61.8-.61.32 0 .59.13.86.45l.56-.73c-.46-.4-1.01-.61-1.62-.61-.97 0-1.72.68-1.72 1.58 0 .76.35 1.15 1.35 1.51.42.15.63.25.74.31.21.14.32.34.32.57 0 .45-.35.78-.83.78-.51 0-.92-.26-1.17-.73l-.69.67c.49.73 1.09 1.05 1.9 1.05 1.11 0 1.9-.74 1.9-1.81.02-.89-.35-1.29-1.57-1.74zm1.92.65c0 1.62 1.27 2.87 2.9 2.87.46 0 .86-.09 1.34-.32v-1.26c-.43.43-.81.6-1.29.6-1.08 0-1.85-.78-1.85-1.9 0-1.06.79-1.89 1.8-1.89.51 0 .9.18 1.34.62V7.38c-.47-.24-.86-.34-1.32-.34-1.61 0-2.92 1.28-2.92 2.88zm12.76.94l-1.47-3.7h-1.17l2.33 5.64h.58l2.37-5.64h-1.16l-1.48 3.7zm3.13 1.8h3.04v-.93h-1.97v-1.48h1.9v-.93h-1.9V8.1h1.97v-.94h-3.04v5.5zm7.29-3.87c0-1.03-.71-1.62-1.95-1.62h-1.59v5.5h1.07v-2.21h.14l1.48 2.21h1.32l-1.73-2.32c.81-.17 1.26-.72 1.26-1.56zm-2.16.91h-.31V8.03h.33c.67 0 1.03.28 1.03.82 0 .55-.36.85-1.05.85z" fill="#231F20"/><path d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint0_linear)"/><path opacity=".65" d="M20.16 12.86a2.931 2.931 0 100-5.862 2.931 2.931 0 000 5.862z" fill="url(#pi-paint1_linear)"/><path d="M36.57 7.506c0-.1-.07-.15-.18-.15h-.16v.48h.12v-.19l.14.19h.14l-.16-.2c.06-.01.1-.06.1-.13zm-.2.07h-.02v-.13h.02c.06 0 .09.02.09.06 0 .05-.03.07-.09.07z" fill="#231F20"/><path d="M36.41 7.176c-.23 0-.42.19-.42.42 0 .23.19.42.42.42.23 0 .42-.19.42-.42 0-.23-.19-.42-.42-.42zm0 .77c-.18 0-.34-.15-.34-.35 0-.19.15-.35.34-.35.18 0 .33.16.33.35 0 .19-.15.35-.33.35z" fill="#231F20"/><path d="M37 12.984S27.09 19.873 8.976 23h26.023a2 2 0 002-1.984l.024-3.02L37 12.985z" fill="#F48120"/><defs><linearGradient id="pi-paint0_linear" x1="21.657" y1="12.275" x2="19.632" y2="9.104" gradientUnits="userSpaceOnUse"><stop stop-color="#F89F20"/><stop offset=".25" stop-color="#F79A20"/><stop offset=".533" stop-color="#F68D20"/><stop offset=".62" stop-color="#F58720"/><stop offset=".723" stop-color="#F48120"/><stop offset="1" stop-color="#F37521"/></linearGradient><linearGradient id="pi-paint1_linear" x1="21.338" y1="12.232" x2="18.378" y2="6.446" gradientUnits="userSpaceOnUse"><stop stop-color="#F58720"/><stop offset=".359" stop-color="#E16F27"/><stop offset=".703" stop-color="#D4602C"/><stop offset=".982" stop-color="#D05B2E"/></linearGradient></defs></svg>
2996                </li><li class="list-payment__item">
2997                  <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
299706zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg>
2998
2999                </li><li class="list-payment__item">
3000                  <svg class="icon icon--full-color" width="38" height="24" role="img" aria-labelledby="pi-jcb" viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg"><title id="pi-jcb">JCB</title><g fill="none" fill-rule="evenodd"><g fill-rule="nonzero"><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/></g><path d="M11.5 5H15v11.5a2.5 2.5 0 0 1-2.5 2.5H9V7.5A2.5 2.5 0 0 1 11.5 5z" fill="#006EBC"/><path d="M18.5 5H22v11.5a2.5 2.5 0 0 1-2.5 2.5H16V7.5A2.5 2.5 0 0 1 18.5 5z" fill="#F00036"/><path d="M25.5 5H29v11.5a2.5 2.5 0 0 1-2.5 2.5H23V7.5A2.5 2.5 0 0 1 25.5 5z" fill="#2AB419"/>
3000<path d="M10.755 14.5c-1.06 0-2.122-.304-2.656-.987l.78-.676c.068 1.133 3.545 1.24 3.545-.19V9.5h1.802v3.147c0 .728-.574 1.322-1.573 1.632-.466.144-1.365.221-1.898.221zm8.116 0c-.674 0-1.388-.107-1.965-.366-.948-.425-1.312-1.206-1.3-2.199.012-1.014.436-1.782 1.468-2.165 1.319-.49 3.343-.261 3.926.27v.972c-.572-.521-1.958-.898-2.919-.46-.494.226-.737.917-.744 1.448-.006.56.245 1.252.744 1.497.953.467 2.39.04 2.919-.441v1.01c-.358.255-1.253.434-2.129.434zm8.679-2.587c.37-.235.582-.567.582-1.005 0-.438-.116-.687-.348-.939-.206-.207-.58-.469-1.238-.469H23v5h3.546c.696 0 1.097-.23 1.315-.415.283-.25.426-.53.426-.96 0-.431-.155-.908-.737-1.212zm-1.906-.281h-1.428v-1.444h1.495c.956 0 .944 1.444-.067 1.444zm.288 2.157h-1.716v-1.513h1.716c.986 0 1.083 1.513 0 1.513z" fill="#FFF" fill-rule="nonzero"/></g></svg>
3001                </li><li class="list-payment__item">
3002                  <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/><path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg>
3003
3004                </li><li class="list-payment__item">
3005                  <svg class="icon icon--full-color" viewBox="-36 25 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-unionpay"><title id="pi-unionpay">Union Pay</title><path fill="#005B9A" d="M-36 46.8v.7-.7zM-18.3 25v24h-7.2c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h1.4zm12.6 0c-1.3 0-2.9 1-3.2 2.3l-4.5 19.4c-.3 1.3.5 2.3 1.8 2.3h-4.9V25h10.8z"/><path fill="#E9292D" d="M-19.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3h-8.9c-.8 0-1.5-.6-1.5-1.4v-21c0-.8.7-1.6 1.5-1.6h14.7z"/><path fill="#0E73B9" d="M-5.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3H-26h.5c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h14z"/><path fill="#059DA4" d="M2 26.6v21c0 .8-.6 1.4-1.5 1.4h-12.1c-1.3 0-2.1-1.1-1.8-2.3l4.5-19.4C-8.6 26-7 25-5.7 25H.5c.9 0 1.5.7 1.5 1.6z"/><path fill="#fff" d="M-21.122 38.645h.14c.14 0 .28-.07.28-.14l.42-.63h1.19l-.21.35h1.4l-.21.63h-1.68c-.21.28-.42.42-.7.42h-.84l.21-.63m-.21.91h3.01l-.21.7h-1.19l-.21.7h1.19l-.21.7h-1.19l-.28 1.05c-.07.14 0 .28.28.21h.98l-.21.7h-1.89c-.35 0-.49-.21-.35-.63l.35-1.33h-.77l.21-.7h.77l.21-.7h-.7l.21-.7zm4.83-1.75v.42s.56-.42 1.12-.42h1.96l-.77 2.66c-.07.28-.35.49-.77.49h-2.24l-.49 1.89c0 .07 0 .14.14.14h.42l-.14.56h-1.12c-.42 0-.56-.14-.49-.35l1.47-5.39h.91zm1.68.77h-1.75l-.21.7s.28-.21.77-.21h1.05l.14-.49zm-.63 1.68c.14 0 .21 0 .21-.14l.14-.35h-1.75l-.14.56 1.54-.07zm-1.19.84h.98v.42h.28c.14 0 .21-.07.21-.14l.07-.28h.84l-.14.49c-.07.35-.35.49-.77.56h-.56v.77c0 .14.07.21.35.21h.49l-.14.56h-1.19c-.35 0-.49-.14-.49-.49l.07-2.1zm4.2-2.45l.21-.84h1.19l-.07.28s.56-.28 1.05-.28h1.47l-.21.84h-.21l-1.12 3.85
3005h.21l-.21.77h-.21l-.07.35h-1.19l.07-.35h-2.17l.21-.77h.21l1.12-3.85h-.28m1.26 0l-.28 1.05s.49-.21.91-.28c.07-.35.21-.77.21-.77h-.84zm-.49 1.54l-.28 1.12s.56-.28.98-.28c.14-.42.21-.77.21-.77l-.91-.07zm.21 2.31l.21-.77h-.84l-.21.77h.84zm2.87-4.69h1.12l.07.42c0 .07.07.14.21.14h.21l-.21.7h-.77c-.28 0-.49-.07-.49-.35l-.14-.91zm-.35 1.47h3.57l-.21.77h-1.19l-.21.7h1.12l-.21.77h-1.26l-.28.42h.63l.14.84c0 .07.07.14.21.14h.21l-.21.7h-.7c-.35 0-.56-.07-.56-.35l-.14-.77-.56.84c-.14.21-.35.35-.63.35h-1.05l.21-.7h.35c.14 0 .21-.07.35-.21l.84-1.26h-1.05l.21-.77h1.19l.21-.7h-1.19l.21-.77zm-19.74-5.04c-.14.7-.42 1.19-.91 1.54-.49.35-1.12.56-1.89.56-.7 0-1.26-.21-1.54-.56-.21-.28-.35-.56-.35-.98 0-.14 0-.35.07-.56l.84-3.92h1.19l-.77 3.92v.28c0 .21.07.35.14.49.14.21.35.28.7.28s.7-.07.91-.28c.21-.21.42-.42.49-.77l.77-3.92h1.19l-.84 3.92m1.12-1.54h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35.14.21.21.49.14.91l-.49 2.38h-.91l.42-2.17c.07-.28.07-.49 0-.56-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.63-3.57m9.8 0h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35s.21.49.14.91l-.49 2.38h-.91l.42-2.24c.07-.21 0-.42-.07-.49-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.7-3.57m-5.81 0h.98l-.77 3.5h-.98l.77-3.5m.35-1.33h.98l-.21.84h-.98l.21-.84zm1.4 4.55c-.21-.21-.35-.56-.35-.98v-.21c0-.07 0-.21.07-.28.14-.56.35-1.05.7-1.33.35-.35.84-.49 1.33-.49.42 0 .77.14 1.05.35.21.21.35.56.35.98v.21c0 .07 0 .21-.07.28-.14.56-.35.98-.7 1.33-.35.35-.84.49-1.33.49-.35 0-.7-.14-1.05-.35m1.89-.7c.14-.21.28-.49.35-.84v-.35c0-.21-.07-.35-.14-.49a.635.635 0 0 0-.49-.21c-.28 0-.49.07-.63.28-.14.21-.28.49-.35.84v.28c0 .21.07.35.14.49.14.14.28.21.49.21.28.07.42 0 .63-.21m6.51-4.69h2.52c.49 0 .84.14 1.12.35.28.21.35.56.35.91v.28c0 .07 0 .21-.07.28-.07.49-.35.98-.7 1.26-.42.35-.84.49-1.4.49h-1.4l-.42 2.03h-1.19l1.19-5.6m.56 2.59h1.12c.28 0 .49-.07.7-.21.14-.14.28-.35.35-.63v-.28c0-.21-.07-.35-.21-.42-.14-.07-.35-.14-.7-.14h-.91l-.35 1.68zm8.68 3.71c-.35.77-.7 1.26-.91 1.47-.21.21-.63.7-1.61.7l.07-.63c.84-.28 1.26-1.4 1.54-1.96l-.28-3.78h1.19l.07 2.38.91-2.31h1.05l-2.03 4.13m-2.94-3.85l-.42.28c-.42-.35-.84-.56-1.54-.21-.98.49-1.89 4.13.91 2.94l.14.21h1.12l.7-3.29-.91.07m-.56 1.82c-.21.56-.56.84-.91.77-.28-.14-.35-.63-.21-1.19.21-.56.56-.84.91-.77.28.14.35.63.21 1.19"/></svg>
3006                </li><li class="list-payment__item">
3007                  <svg class="icon icon--full-color" xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778 
300716.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
3008
3009                </li></ul>
3010          </div></div>
3011    </div>
3012    <div class="footer__content-bottom-wrapper page-width">
3013      <div class="footer__copyright caption">
3014        <small class="copyright__content"
3015          >&copy; 2026, <a href="/" title="">Wenonah Canoe</a></small>
3016        <small class="copyright__content"><a target="_blank" rel="nofollow" href="https://www.shopify.com?utm_campaign=poweredby&amp;utm_medium=shopify&amp;utm_source=onlinestore">Powered by Shopify</a></small><ul class="policies list-unstyled"><li>
3017                  <small class="copyright__content"
3018                    ><a href="/policies/privacy-policy">Privacy policy</a></small
3019                  >
3020                </li></ul></div>
3021    </div>
3022  </div>
3023</footer>
3024
3025
3026</div>
3027<!-- END sections: footer-group -->
3028
3029    <ul hidden>
3030      <li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li>
3031      <li id="a11y-new-window-message">Opens in a new window.</li>
3032    </ul>
3033
3034    
3034<script>
3035      window.shopUrl = 'https://wenonah.com';
3036      window.routes = {
3037        cart_add_url: '/cart/add',
3038        cart_change_url: '/cart/change',
3039        cart_update_url: '/cart/update',
3040        cart_url: '/cart',
3041        predictive_search_url: '/search/suggest',
3042      };
3043
3044      window.cartStrings = {
3045        error: `There was an error while updating your cart. Please try again.`,
3046        quantityError: `You can only add [quantity] of this item to your cart.`,
3047      };
3048
3049      window.variantStrings = {
3050        addToCart: `Add to cart`,
3051        soldOut: `Unavailable`,
3052        unavailable: `Unavailable`,
3053        unavailable_with_option: `[value] - Unavailable`,
3054      };
3055
3056      window.quickOrderListStrings = {
3057        itemsAdded: `[quantity] items added`,
3058        itemAdded: `[quantity] item added`,
3059        itemsRemoved: `[quantity] items removed`,
3060        itemRemoved: `[quantity] item removed`,
3061        viewCart: `View cart`,
3062        each: `[money]/ea`,
3063        min_error: `This item has a minimum of [min]`,
3064        max_error: `This item has a maximum of [max]`,
3065        step_error: `You can only add this item in increments of [step]`,
3066      };
3067
3068      window.accessibilityStrings = {
3069        imageAvailable: `Image [index] is now available in gallery view`,
3070        shareSuccess: `Link copied to clipboard`,
3071        pauseSlideshow: `Pause slideshow`,
3072        playSlideshow: `Play slideshow`,
3073        recipientFormExpanded: `Gift card recipient form expanded`,
3074        recipientFormCollapsed: `Gift card recipient form collapsed`,
3075        countrySelectorSearchCount: `[count] countries/regions found`,
3076      };
3077    </script>
3077<script src="//wenonah.com/cdn/shop/t/2/assets/predictive-search.js?v=57209189334897115771749921820" defer="defer"></script>
3077<style> .product-form__input legend {font-size: 1em; font-weight: bold;} </style>
3078<div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
3078<script>
3079  window['ShopifyForms'] = {
3080    ...window['ShopifyForms'],
3081    currentPageType: "page"
3082  };
3083</script>
3083
3084
3085
3086</div><div id="shopify-block-ATU1SSkI0OWVtalBYQ__2497517740430320072" class="shopify-block shopify-app-block">
3087
3088
3089
3090
3091
3092<link rel='stylesheet' href='https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/multi-select.css'>
3093
3094
3095
3096<style>
3097  /* empty customizations */
3098</style>
3099
3100<style id="ef__hide-addon-field-styles">
3101  /* empty customizations */
3102</style>
3103
3104<div
3105  id='product-options-ho4ed2r6cwo-embed'
3106  class='ef__product-option-root'
3107  style='display: none;'
3108
3109  data-product-base-price=''
3110  data-product-compare-at-price=''
3111  data-variant-ids=''
3112  data-money-format='${{amount}}'
3113  data-shop-currency='USD'
3114>
3115  <form>
3116    
3117  </form>
3118
3119  
3120  <p class='ef__option-total-price ef__options-addon-total' role='status'>
3121    
3122
3123    
3124
3125    Total add-ons: <span class="ef__options-addon-total-amount ef__addon-amount"></span>
3126  </p>
3127
3128  
3129</div>
3130
3131
3132<script
3133  type='application/json'
3134  id='ef__product-option-rules'
3135
3136  
3137>
3138  []
3139</script>
3139
3140
3141
3142
3143
3144
3145  
3145<script type='application/json' id='ef__product-variant-data'>
3146    {
3147      "options": null,
3148      "variants": []
3149    }
3150  </script>
3150
3151
3152
3153
3154<script type='application/json' id='ef__product-option-customizations'>
3155  
3156    {"appEmbedPlacementSelector":"","cartLineSelector":"","quantityAndRemoveButtonSelector":"","cartLineItemDetailsSelector":"","regularPriceItemSelector":"","compareAtPriceItemSelector":"","isGetPricesOnStorefront":true,"dropdownPlaceholder":"Choose %option-title%","fileUploadButtonText":"Choose file","dragAndDropText":"or drop files to upload","uploadLoadingText":"Uploading...","fileTypeErrorText":"Only %file-types% files allowed.","fileSizeErrorText":"File needs to be smaller than %max-file-size%.","fileUploadErrorText":"Failed to upload file: %reason%","requiredOptionErrorText":"\"%option-title%\" is required.","minimumSelectionErrorText":"\"%option-title%\" requires at least %min-selection-limit% selections.","maximumSelectionErrorText":"\"%option-title%\" allows only %max-selection-limit% selections.","mimumCharacterErrorText":"\"%option-title%\" requires at least %min-char-limit% characters.","isMatchAddonQuantity":false,"isBuyNowIntegrationDisabled":false,"isOptionValueUniqueRequired":false,"isEnableRemoveAddonFromCart":false,"isEnableOpenAddonProductPage":false,"isChangeBaseProductPriceDisabled":false,"isShowTotalPrice":true,"storefrontFooterText":"Total add-ons:","isShowBranding":true}
3157  
3158</script>
3158
3159
3160<div class="easyflow-script-origin" data-origin="app-embed"></div>
3161
3162
3163
3164
3165
3166<script src='https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/multi-select.min.js' defer></script>
3166
3167
3168
3169<script src='https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/public.js'></script>
3169
3170
3171
3172<script src='https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/common.js' defer data-origin="app-embed"></script>
3172
3173
3174<div id="easyflow-common-js-url" data-common-url="https://cdn.shopify.com/extensions/01a0f243-2a12-76c4-95cb-c690a3bd6214/V2.1.6/assets/common.js"></div>
3175<div id="easyflow-cart-info" data-cart-type="notification" data-cart-url="/cart"></div>
3176<div class="easyflow-script-origin" data-origin="app-embed"></div>
3177</div>
3177<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
3177
3178</body>
3179</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.