PageSourceSearch

https://happyhydrate.is/products/hydration-xpress?variant=50050860744842

html happyhydrate.is collected 2026-10-04 06:36:13 UTC 435,597 bytes, 7,383 lines download raw bytes

1<!--
2    Developed By: MalterTech LLC
3    Website: https://maltertech.com
4-->
5
6<!doctype html>
7
8<html lang="is">
9
10    
11<head>
11<script data-source-attribution="shopify.event_observer.bootstrap">
12(function(){let e=navigator,t=`prototype`,n=`sendBeacon`,r=e[n],i=fetch,a=XMLHttpRequest[t],{open:o,send:s}=a,c=`EventListener`,l=`add${c}`,u=`remove${c}`,d=EventTarget[t],f=d[l],p=d[u],m=e=>Error((e=document.currentScript)&&[e?.src,e?.id||e?.dataset?.sourceAttribution]),h=(e=[],t=0)=>(e.p=n=>e[t++%1e3]=n,[e,t=>(e.forEach(e.p=t),e.length=0)]),[g,_]=h(),[v,y]=h(),b,x=new WeakMap,S=e=>e&&g.p([e,b||[m()]]);d[l]=function(e,t,n){let r=this,i=t?.handleEvent||t,a=x.get(t),o=m();i?.call&&!a&&x.set(t,a=function(e){b=[o,e.type];try{i.call(t==i?this:t,e)}finally{b=null}}),v.p([e,o,a,r?.tagName||r+``,r?.id]),f.call(r,e,a||t,n)},d[u]=function(e,t,n){p.call(this,e,x.get(t)||t,n)},a.open=function(e,t){x.set(this,[t+``,e]),o.apply(this,arguments)},a.send=function(e){S(x.get(this)),s.call(this,e)},fetch=(e,t)=>(S([(e?.url||e)+``,t?.method]),i(e,t)),e[n]=(t,n)=>(S([t+``,``]),r.call(e,t,n)),setTimeout(()=>import("//happyhydrate.is/cdn/shopifycloud/storefront/assets/storefront/event_observer_reporter-ed358274.js").then(e=>e.$(_,y,f,i,`60930031754`)))})();
13//# sourceURL=event-observer-collector.js
14</script>
vendor: 69 bytes, lines 14-16
14
15
16    <script async src="https://www.googletagmanager.com/gtag/js?id=
16AW-11191271653
vendor: 16 bytes, lines 16-17
16"></script>
17    
17<script>
18        
vendor: 177 bytes, lines 18-26
18window.dataLayer = window.dataLayer || [];
19
20        function gtag() {
21            dataLayer.push(arguments);
22        }
23
24        gtag('js', new Date());
25
26        gtag('config', '
26AW-11191271653
vendor: 8 bytes, lines 26-27
26');
27    
27</script>
27
28
29
30    <!-- Redirect -->
31    
31<script>
32        if (window.location.pathname === '/products/hydration-e' || window.location.pathname === '/en/products/hydration-xpress-xx') {
33            window.location.href = '/products/hydration-xpress';
34        }
35    </script>
35
36
37    <!--Title & Meta-->
38    <title>
39        Hydration Xpress &ndash; Happy Hydrate IS</title>
40    
41    <link rel="canonical" href="https://happyhydrate.is/products/hydration-xpress"/>
42    <meta charset="UTF-8">
43    <meta name="viewport" content="initial-scale=1, width=device-width, height=device-height, viewport-fit=cover">
44
45    <!-- Social -->
46    <meta property="og:site_name" content="Happy Hydrate IS">
47    <meta property="og:url" content="https://happyhydrate.is/products/hydration-xpress">
48    <meta property="og:title" content="Hydration Xpress">
49    <meta property="og:type" content="product">
50    <meta property="og:description" content="Happy Hydrate IS"><meta property="og:image" content="http://happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496">
51        <meta property="og:image:secure_url" content="https://happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496">
52        <meta property="og:image:width" content="1240">
53        <meta property="og:image:height" content="1240"><meta property="og:price:amount"
54              content="5,985">
55        <meta property="og:price:currency" content="ISK"><meta name="twitter:card" content="summary_large_image">
56    <meta name="twitter:title" content="Hydration Xpress">
57    <meta name="twitter:description" content="Happy Hydrate IS">
58
59    <!-- Favicon -->
60    <link rel="icon" href="//happyhydrate.is/cdn/shop/files/output-onlinepngtools-4_1.png?v=1682280342" type="image/png">
61
62    <!--Fonts — consolidated into single request -->
63    <link rel="preconnect" href="https://fonts.googleapis.com">
64    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
65    <link href="https://fonts.googleapis.com/css2?family=Dela+Gothic+One&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
66
67    <!-- Preconnect to third-party origins used later in the page -->
68    <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
69    <link rel="preconnect" href="https://cdn.shopify.com" crossorigin>
70    <link rel="preconnect" href="https://tracking.happyhydrate.is" crossorigin>
71    <link rel="preconnect" href="https://static.klaviyo.com" crossorigin><link rel="preload" as="image"
72          href="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1200"
73          imagesrcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1600 1600w"
74          imagesizes="(max-width: 768px) 100vw, 50vw"
75          fetchpriority="high"><!-- Swiper JS (deferred; section IIFEs wait for DOMContentLoaded before calling new Swiper) -->
76    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.4/swiper-bundle.min.css"
77          integrity="sha512-1CRCT9P70z3SktzqL7P8o8YvlmT1nXwFeXLBuVBa4mzQJ4fsvpmsObWooerRi4WzQT8QFrBVz/36mt/XGPYVzw=="
78          crossorigin="anonymous" referrerpolicy="no-referrer"/>
79    
79<script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/11.0.4/swiper-bundle.min.js"
80            integrity="sha512-/LKHQ9K9yatyOfEKXiysc9SPCpF6xkvfHQxtPkhdKS83GvfyIWDwKaOr3/LqVxbEX89Bqz+SbMHEPWm0AeRWnA=="
81            crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
81
82
83    <!-- Global CSS -->
84    <link href="//happyhydrate.is/cdn/shop/t/80/assets/theme-global.css?v=168208496876251550691788984151" rel="stylesheet">
85    <link href="//happyhydrate.is/cdn/shop/t/80/assets/theme-header.css?v=75343060394666661351788984151" rel="stylesheet">
86    <link href="//happyhydrate.is/cdn/shop/t/80/assets/theme-mini-cart.css?v=168934013703213604681788984151" rel="stylesheet">
87    <link href="//happyhydrate.is/cdn/shop/t/80/assets/theme-footer.css?v=105633225076094538711788984151" rel="stylesheet">
88
89    <!-- Global JS -->
90    
90<script defer src="//happyhydrate.is/cdn/shop/t/80/assets/theme-polyfill-dialog.js?v=58480766684483630301788984151"></script>
90
91    
91<script defer src="//happyhydrate.is/cdn/shop/t/80/assets/theme-global.js?v=116967996199473262951788984151"></script>
91
92    
92<script defer src="//happyhydrate.is/cdn/shop/t/80/assets/theme-header.js?v=157719865413041685121788984151"></script>
92
93    
93<script defer src="//happyhydrate.is/cdn/shop/t/80/assets/theme-mini-cart.js?v=85363150543070642981789043792"></script>
93
94
95    <!-- Global Cart -->
96    
96<script>
97        let cart = {"note":null,"attributes":{},"original_total_price":0,"total_price":0,"total_discount":0,"total_weight":0.0,"item_count":0,"items":[],"requires_shipping":false,"currency":"ISK","items_subtotal_price":0,"cart_level_discount_applications":[],"checkout_charge_amount":0};
98        const currency = "kr";
99    </script>
99
100
101    <!-- Shop Variables -->
102    
102<script>
103        let shopDomain = "happyhydrate.is";
104        let shopCurrency = "ISK";
105    </script>
105
106
107    <!-- Page Specific CSS/JS -->
108    
109
110    
111
112    
113
114    
115
116    
117
118    
119
120    
121
122    
123
124    <!-- JSON LD -->
125    
126    
126<script type="application/ld+json">
127        {
128            "@context": "https://schema.org",
129            "@type": "BreadcrumbList",
130            "itemListElement": [
131                    {
132                        "@type": "ListItem",
133                        "position": 1,
134                        "item": {
135                            "@type": "Website",
136                            "@id": "https://happyhydrate.is",
137                        "name": "Home"
138                    }
139                },
140                {
141                    "@type": "ListItem",
142                    "position": 2,
143                    "item": {
144                        "@type": "WebPage",
145                        "@id": "https://happyhydrate.is/products/hydration-xpress",
146                        "name": "Hydration Xpress"
147        }
148    }
149]
150}
151    </script>
151
152
153
154<script type="application/ld+json">
155    {
156        "@context": "https://schema.org",
157        "@type": "Organization",
158        "url": "https://happyhydrate.is",
159        "name": "Happy Hydrate IS",
160        "description": ""
161    }
162</script>
162
163
164
165    
165<script type="application/ld+json">
166        {
167            "@context": "https://schema.org/",
168            "@type": "Product",
169            "name": "Hydration Xpress",
170            "image": "https://happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496",
171            "offers": {
172                "@type": "Offer",
173                "url": "https://happyhydrate.is/products/hydration-xpress",
174                "priceCurrency": "ISK",
175                "price": "1995",
176                "availability": "https://schema.org/InStock",
177                "itemCondition": "https://schema.org/NewCondition"
178            },
179            "description": "",
180            "brand": {
181                "@type": "Brand",
182                "name": "Happy Hydrate IS"
183        }
184    }
185    </script>
185
186
187
188
189
190
191    <!-- Signals Gateway Pixel Code -->
192<script>
193!function(a,h,e,v,n,t,s)
194  {if(a.cbq)return;n=a.cbq=function(){n.callMethod?
195  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
196  if(!a._cbq)a._cbq=n;n.push=n;n.loaded=!0;n.version='2.0';
197  n.queue=[];t=h.createElement(e);t.async=!0;
198  t.src=v;s=h.getElementsByTagName(e)[0];
199  s.parentNode.insertBefore(t,s)}(window, document,'script',
200  'https://tracking.happyhydrate.is/sdk/5892240884230489993/events.js');
201  cbq('setHost', 'https://tracking.happyhydrate.is');
202  cbq('init', '5892240884230489993');
203  cbq('track', 'PageView');
204</script>
204
205<!-- End Signals Gateway Pixel Code -->
206    <!-- Shopify -->
207    
207<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
207<meta name="google-site-verification" content="eAbgHsspIO2HeCa-joR1vkK1Ib5pw7P_JP-FHK0aBMU">
208<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/60930031754/digital_wallets/dialog">
209<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/50050860744842:1?ucp/version=2026-08-25" payment="com.google.pay dev.shopify.card dev.shopify.shop_pay"><link rel="alternate" hreflang="x-default" href="https://happyhydrate.is/products/hydration-xpress">
210<link rel="alternate" hreflang="is" href="https://happyhydrate.is/products/hydration-xpress">
211<link rel="alternate" hreflang="en" href="https://happyhydrate.is/en/products/hydration-xpress">
212<link rel="alternate" type="application/json+oembed" href="https://happyhydrate.is/products/hydration-xpress.oembed">
213<script async="async" src="/checkouts/internal/preloads.js?locale=is-IS"></script>
vendor: 1 bytes, line 213
213
214<script id="shopify-features" type="application/json">{"accessToken":"b92c36cd3b53acdd838b31b5103aafb8","betas":["rich-media-storefront-analytics"],"domain":"happyhydrate.is","predictiveSearch":true,"shopId":60930031754,"locale":"en"}</script>
vendor: 1 bytes, line 214
214
215<script>var Shopify = Shopify || {};
216Shopify.shop = "happyhydrate-1068.myshopify.com";
217Shopify.locale = "is";
218Shopify.currency = {"active":"ISK","rate":"1.0"};
219Shopify.country = "IS";
220Shopify.theme = {"name":"happy-hydrate-jonny-v6","id":158213013642,"schema_name":"MalterTech","schema_version":"1.0","theme_store_id":null,"role":"main"};
221Shopify.theme.handle = "null";
222Shopify.theme.style = {"id":null,"handle":null};
223Shopify.cdnHost = "happyhydrate.is/cdn";
224Shopify.routes = Shopify.routes || {};
225Shopify.routes.root = "/";
226Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
227Shopify.SignInWithShop = Shopify.SignInWithShop || {};
228Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
229Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 229
229
230<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 230
230
231<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 231
231
232<script>
233  window.Shopify = window.Shopify || {};
234  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
235  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
236  window.Shopify.SignInWithShop.eligible = true;
237</script>
vendor: 1 bytes, line 237
237
238<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 238
238
239<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 239
239
240<script type="module">
241  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
242
243  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
244
245</script>
vendor: 1 bytes, line 245
245
246<script>
247  window.Shopify = window.Shopify || {};
248  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
249  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"]};
250</script>
vendor: 1 bytes, line 250
250
251<script>(function() {
252  var isLoaded = false;
253  function asyncLoad() {
254    if (isLoaded) return;
255    isLoaded = true;
256    var urls = ["https:\/\/gdprcdn.b-cdn.net\/js\/gdpr_cookie_consent.min.js?shop=happyhydrate-1068.myshopify.com","https:\/\/cdn.tmnls.reputon.com\/assets\/widget.js?shop=happyhydrate-1068.myshopify.com","https:\/\/config.gorgias.chat\/bundle-loader\/01HQ4FXPQK3YCX7JRZN2B4PF5T?source=shopify1click\u0026shop=happyhydrate-1068.myshopify.com","https:\/\/static.klaviyo.com\/onsite\/js\/klaviyo.js?company_id=XBXeNE\u0026shop=happyhydrate-1068.myshopify.com","https:\/\/cdn.pushowl.com\/latest\/sdks\/pushowl-shopify.js?subdomain=happyhydrate-1068\u0026environment=production\u0026guid=1aba2137-42fe-4dc3-a772-bcc9b4903940\u0026shop=happyhydrate-1068.myshopify.com"];
257    for (var i = 0; i < urls.length; i++) {
258      var s = document.createElement('script');
259      s.type = 'text/javascript';
260      s.async = true;
261      s.src = urls[i];
262      var x = document.getElementsByTagName('script')[0];
263      x.parentNode.insertBefore(s, x);
264    }
265  };
266  if(window.attachEvent) {
267    window.attachEvent('onload', asyncLoad);
268  } else {
269    window.addEventListener('load', asyncLoad, false);
270  }
271})();</script>
vendor: 1 bytes, line 271
271
272<script id="__st">var __st={"a":60930031754,"offset":0,"reqid":"1a47e688-6e82-4f3a-8711-34e2413eed44-1791095772","pageurl":"happyhydrate.is\/products\/hydration-xpress?variant=50050860744842","u":"822d697c4da0","p":"product","rtyp":"product","rid":8033136181386};</script>
vendor: 1 bytes, line 272
272
273<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 273
273
274<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 274
274
275<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//happyhydrate.is/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 275
275
276<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 = "//happyhydrate.is/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>
276<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 276
276
277<script>
278  window.Shopify = window.Shopify || {};
279  window.Shopify.MCP = window.Shopify.MCP || {};
280  window.Shopify.MCP.enabled = true;
281  window.Shopify.MCP.shop = "happyhydrate-1068.myshopify.com";
282  window.Shopify.MCP.mcpEndpoint = "https:\/\/happyhydrate.is\/api\/mcp";
283  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"]}}];
284</script>
vendor: 1 bytes, line 284
284
285<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("\/\/happyhydrate.is\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
286</script>
vendor: 1 bytes, line 286
286
287<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://happyhydrate.is/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
288</script>
vendor: 1 bytes, line 288
288
289<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
290  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);
291</script>
vendor: 1 bytes, line 291
291
292<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})}}));
293</script>
293
294
295<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
295
296
297<!-- BEGIN app block: shopify://apps/consentmo-gdpr/blocks/gdpr_cookie_consent/4fbe573f-a377-4fea-9801-3ee0858cae41 -->
298<link rel="preconnect" href="https://app.consentmo.com" crossorigin data-csm-preconnect="app">
299<link rel="dns-prefetch" href="https://workers.consentmo.com" data-csm-preconnect="workers">
300<link rel="dns-prefetch" href="https://storage.consentmo.com" data-csm-preconnect="storage">
301<link rel="preconnect" href="https://cdn.consentmo.com" crossorigin data-csm-preconnect="cdn"><link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="banner">
302  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-dialog.consentmo.js" crossorigin data-csm-layout-prefetch="dialog">
303  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-box.consentmo.js" crossorigin data-csm-layout-prefetch="box">
304  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-cookie-smart-banner.consentmo.js" crossorigin data-csm-layout-prefetch="smart">
305  <link rel="prefetch" href="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/layout-mobile-cookie-bar.consentmo.js" crossorigin data-csm-layout-prefetch="mobile">
305<script>
306(function () {
307  try {
308    document.documentElement.classList.add('csm-cookie-embed');
309  } catch (e) {}
310})();
311</script>
311<script data-consentmo-data-src-bootstrap>
312(function () {
313  'use strict';
314  if (window.__consentmoDataSrcBootstrapInit) return;
315  window.__consentmoDataSrcBootstrapInit = true;
316
317  var DATA_SRC_SELECTOR = [
318    'script[data-src*="consentmo_cookie_consent"]',
319    'script[data-src*="gdpr_cookie_consent.min"]',
320    'script[data-src*="gdrp_cookie_consent_unlimited"]'
321  ].join(',');
322
323  function activateConsentmoDataSrcScripts() {
324    if (!window.Shopify || !window.Shopify.shop) return;
325    document.querySelectorAll(DATA_SRC_SELECTOR).forEach(function (scriptEl) {
326      // getAttribute: src="" must not count as "already has src" (.src === page URL).
327      if (scriptEl.getAttribute('src')) return;
328      var url = scriptEl.getAttribute('data-src');
329      if (!url) return;
330      if (scriptEl.getAttribute('type') === 'text/plain') {
331        scriptEl.removeAttribute('type');
332      }
333      scriptEl.src = url;
334    });
335  }
336  function scheduleActivation() {
337    activateConsentmoDataSrcScripts();
338    // Retry on next task so other DCL handlers (lazy-loaders) can finish setting Shopify.shop / data-src first.
339    setTimeout(activateConsentmoDataSrcScripts, 0);
340  }
341  if (document.readyState === 'loading') {
342    document.addEventListener('DOMContentLoaded', scheduleActivation, { once: true });
343  } else {
344    scheduleActivation();
345  }
346})();
347</script>
347
348
349
350<!-- END app block --><!-- BEGIN app block: shopify://apps/microsoft-clarity/blocks/clarity_js/31c3d126-8116-4b4a-8ba1-baeda7c4aeea -->
351<script type="text/javascript">
352  (function (c, l, a, r, i, t, y) {
353    c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); };
354    t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i + "?ref=shopify";
355    y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
356
357    c.Shopify.loadFeatures([{ name: "consent-tracking-api", version: "0.1" }], error => {
358      if (error) {
359        console.error("Error loading Shopify features:", error);
360        return;
361      }
362
363      c[a]('consentv2', {
364        ad_Storage: c.Shopify.customerPrivacy.marketingAllowed() ? "granted" : "denied",
365        analytics_Storage: c.Shopify.customerPrivacy.analyticsProcessingAllowed() ? "granted" : "denied",
366        source: 101,
367      });
368    });
369
370    l.addEventListener("visitorConsentCollected", function (e) {
371      c[a]('consentv2', {
372        ad_Storage: e.detail.marketingAllowed ? "granted" : "denied",
373        analytics_Storage: e.detail.analyticsAllowed ? "granted" : "denied",
374        source: 101,
375      });
376    });
377  })(window, document, "clarity", "script", "y8lbbd4w00");
378</script>
378
379
380
381
382<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
383
384
385
386
387
388
389
390
391
392
393
394
395  
395<script async src="https://static.klaviyo.com/onsite/js/XBXeNE/klaviyo.js?company_id=XBXeNE"></script>
395
396  
396<script>!function(){if(!window.klaviyo){window._klOnsite=window._klOnsite||[];try{window.klaviyo=new Proxy({},{get:function(n,i){return"push"===i?function(){var n;(n=window._klOnsite).push.apply(n,arguments)}:function(){for(var n=arguments.length,o=new Array(n),w=0;w<n;w++)o[w]=arguments[w];var t="function"==typeof o[o.length-1]?o.pop():void 0,e=new Promise((function(n){window._klOnsite.push([i].concat(o,[function(i){t&&t(i),n(i)}]))}));return e}}})}catch(n){window.klaviyo=window.klaviyo||[],window.klaviyo.push=function(){var n;(n=window._klOnsite).push.apply(n,arguments)}}}}();</script>
396
397
398  
399    
399<script id="viewed_product">
400      if (item == null) {
401        var _learnq = _learnq || [];
402
403        var MetafieldReviews = null
404        var MetafieldYotpoRating = null
405        var MetafieldYotpoCount = null
406        var MetafieldLooxRating = null
407        var MetafieldLooxCount = null
408        var okendoProduct = null
409        var okendoProductReviewCount = null
410        var okendoProductReviewAverageValue = null
411        try {
412          // The following fields are used for Customer Hub recently viewed in order to add reviews.
413          // This information is not part of __kla_viewed. Instead, it is part of __kla_viewed_reviewed_items
414          MetafieldReviews = {"rating_count":0};
415          MetafieldYotpoRating = null
416          MetafieldYotpoCount = null
417          MetafieldLooxRating = null
418          MetafieldLooxCount = null
419
420          okendoProduct = null
421          // If the okendo metafield is not legacy, it will error, which then requires the new json formatted data
422          if (okendoProduct && 'error' in okendoProduct) {
423            okendoProduct = null
424          }
425          okendoProductReviewCount = okendoProduct ? okendoProduct.reviewCount : null
426          okendoProductReviewAverageValue = okendoProduct ? okendoProduct.reviewAverageValue : null
427        } catch (error) {
428          console.error('Error in Klaviyo onsite reviews tracking:', error);
429        }
430
431        var item = {
432          Name: "Hydration Xpress",
433          ProductID: 8033136181386,
434          Categories: ["Allar vörur","Home page","Hydration"],
435          ImageURL: "https://happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade_grande.png?v=1788381496",
436          URL: "https://happyhydrate.is/products/hydration-xpress",
437          Brand: "happyhydrate",
438          Price: "1,995 kr",
439          Value: "1,995",
440          CompareAtPrice: "17,955 kr"
441        };
442        _learnq.push(['track', 'Viewed Product', item]);
443        _learnq.push(['trackViewedItem', {
444          Title: item.Name,
445          ItemId: item.ProductID,
446          Categories: item.Categories,
447          ImageUrl: item.ImageURL,
448          Url: item.URL,
449          Metadata: {
450            Brand: item.Brand,
451            Price: item.Price,
452            Value: item.Value,
453            CompareAtPrice: item.CompareAtPrice
454          },
455          metafields:{
456            reviews: MetafieldReviews,
457            yotpo:{
458              rating: MetafieldYotpoRating,
459              count: MetafieldYotpoCount,
460            },
461            loox:{
462              rating: MetafieldLooxRating,
463              count: MetafieldLooxCount,
464            },
465            okendo: {
466              rating: okendoProductReviewAverageValue,
467              count: okendoProductReviewCount,
468            }
469          }
470        }]);
471      }
472    </script>
472
473  
474
475
476
477
478  
478<script>
479    window.klaviyoReviewsProductDesignMode = false
480  </script>
480
481
482
483
484
485
486
487
488
489
490<!-- END app block -->
490<script src="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/consentmo_cookie_consent.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 490
490
491<script src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-selleasy.js" type="text/javascript" defer="defer"></script>
491
492<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
493<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: 60930031754,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "product"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 493
493
494<script>
495  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
496</script>
vendor: 1 bytes, line 496
496
497<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}
497).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: 60930031754,storefrontBaseUrl: "https://happyhydrate.is",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://happyhydrate.is/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"2626191498","configuration":"{\"projectId\":\"y8lbbd4w00\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d8a2bb2ccbb513dc8e8b6937f4b8033e","type":"APP","apiClientId":240074326017,"privacyPurposes":[],"capabilities":["advanced_dom_events"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]}
497,"dataSharingState":"unrestricted"},{"id":"2584641674","configuration":"{\"storeID\":\"happyhydrate-1068\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"1a4d90df85706164d4aa645b3700640b","type":"APP","apiClientId":408972623873,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1660158090","configuration":"{\"accountID\":\"happyhydrate-1068\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"4f82d0323b06a4642fbff9b42c9979eb","type":"APP","apiClientId":12388204545,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"472744074","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\",\\\"GT-PZXWN79\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/vBuYCJWltL0bEOWBtdgp\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/Hv2pCKGltL0bEOWBtdgp\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-7Q4SDLLGW9\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/pvI9CJ6ltL0bEOWBtdgp\\\",\\\"MC-X6BDS21HV1\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-7Q4SDLLGW9\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/-o7gCJ-osr0bEOWBtdgp\\\",\\\"MC-X6BDS21HV1\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/JZsQCJultL0bEOWBtdgp\\\",\\\"MC-X6BDS21HV1\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-7Q4SDLLGW9\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/phWeCKSltL0bEOWBtdgp\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-7Q4SDLLGW9\\\",\\\"AW-11191271653\\\/gyqRCJiltL0bEOWBtdgp\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-7Q4SDLLGW9\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"250740874","configuration":"{\"subdomain\":\"happyhydrate-1068\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"42cd9b1f0fb7c1cae5cd21175cef6782","type":"APP","apiClientId":1615517,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"217874570","configuration":"{\"pixel_id\":\"893231098646527\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"86507658","configuration":"{\"accountID\":\"selleasy-metrics-track\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"50acfdcd7b118f50e52df83f64624d06","type":"APP","apiClientId":5519923,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data"],"dataSharingControls":["share_all_events"]}
497,"dataSharingState":"unrestricted"},{"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":"Happy Hydrate IS","paymentSettings":{"currencyCode":"ISK"},"myshopifyDomain":"happyhydrate-1068.myshopify.com","countryCode":"IS","storefrontUrl":"https:\/\/happyhydrate.is"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"50050860712074","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"sku":null,"title":"Strawberry Lemonade \/ 10 stikur","untranslatedTitle":"Strawberry Lemonade \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"50050860744842","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"sku":null,"title":"Strawberry Lemonade \/ 30 stikur","untranslatedTitle":"Strawberry Lemonade \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"50050860777610","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"sku":null,"title":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"50050860810378","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"sku":null,"title":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)"},{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751436906634","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"sku":"","title":"Pina Colada \/ 10 stikur","untranslatedTitle":"Pina Colada \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751436939402","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"sku":"","title":"Pina Colada \/ 30 stikur","untranslatedTitle":"Pina Colada \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751436972170","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"sku":"","title":"Pina Colada \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Pina Colada \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437004938","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"sku":"","title":"Pina Colada \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Pina Colada \/ 90 stikur (FRÍ SENDING)"},{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437037706","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"sku":"","title":"Mixed Berries \/ 10 stikur","untranslatedTitle":"Mixed Berries \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""}
497,"id":"44751437070474","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"sku":"","title":"Mixed Berries \/ 30 stikur","untranslatedTitle":"Mixed Berries \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437103242","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"sku":"","title":"Mixed Berries \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Mixed Berries \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437136010","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"sku":"","title":"Mixed Berries \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Mixed Berries \/ 90 stikur (FRÍ SENDING)"},{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437168778","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"sku":"","title":"Lemon\/Lime \/ 10 stikur","untranslatedTitle":"Lemon\/Lime \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437201546","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"sku":"","title":"Lemon\/Lime \/ 30 stikur","untranslatedTitle":"Lemon\/Lime \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437234314","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"sku":"","title":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"44751437267082","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"sku":"","title":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)"},{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"45773488324746","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"sku":"","title":"Peach Crush \/ 10 stikur","untranslatedTitle":"Peach Crush \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"45773488357514","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"sku":"","title":"Peach Crush \/ 30 stikur","untranslatedTitle":"Peach Crush \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"45773488390282","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"sku":"","title":"Peach Crush \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Peach Crush \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"45773488423050","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"sku":"","title":"Peach Crush \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Peach Crush \/ 90 stikur (FRÍ SENDING)"},{"price":{"amount":1995.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""}
497,"id":"47230751473802","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"sku":null,"title":"Peru \/ 10 stikur","untranslatedTitle":"Peru \/ 10 stikur"},{"price":{"amount":5985.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"47230751506570","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"sku":null,"title":"Peru \/ 30 stikur","untranslatedTitle":"Peru \/ 30 stikur"},{"price":{"amount":11970.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"47230751539338","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"sku":null,"title":"Peru \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Peru \/ 60 stikur (FRÍ SENDING)"},{"price":{"amount":15290.0,"currencyCode":"ISK"},"product":{"title":"Hydration Xpress","vendor":"happyhydrate","id":"8033136181386","untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","type":""},"id":"47230751572106","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"sku":null,"title":"Peru \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Peru \/ 90 stikur (FRÍ SENDING)"}],"products":[{"id":"8033136181386","handle":"hydration-xpress","isCollective":null,"title":"Hydration Xpress","type":null,"untranslatedTitle":"Hydration Xpress","url":"\/products\/hydration-xpress","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"50050860712074","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":null,"title":"Strawberry Lemonade \/ 10 stikur","untranslatedTitle":"Strawberry Lemonade \/ 10 stikur"},{"id":"50050860744842","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":null,"title":"Strawberry Lemonade \/ 30 stikur","untranslatedTitle":"Strawberry Lemonade \/ 30 stikur"},{"id":"50050860777610","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":null,"title":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)"},{"id":"50050860810378","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":null,"title":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)"},{"id":"44751436906634","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"","title":"Pina Colada \/ 10 stikur","untranslatedTitle":"Pina Colada \/ 10 stikur"},{"id":"44751436939402","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":"","title":"Pina Colada \/ 30 stikur","untranslatedTitle":"Pina Colada \/ 30 stikur"},{"id":"44751436972170","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":"","title":"Pina Colada \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Pina Colada \/ 60 stikur (FRÍ SENDING)"},{"id":"44751437004938","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":"","title":"Pina Colada \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Pina Colada \/ 90 stikur (FRÍ SENDING)"},{"id":"44751437037706","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"","title":"Mixed Berries \/ 10 stikur","untranslatedTitle":"Mixed Berries \/ 10 stikur"}
497,{"id":"44751437070474","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":"","title":"Mixed Berries \/ 30 stikur","untranslatedTitle":"Mixed Berries \/ 30 stikur"},{"id":"44751437103242","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":"","title":"Mixed Berries \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Mixed Berries \/ 60 stikur (FRÍ SENDING)"},{"id":"44751437136010","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":"","title":"Mixed Berries \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Mixed Berries \/ 90 stikur (FRÍ SENDING)"},{"id":"44751437168778","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"","title":"Lemon\/Lime \/ 10 stikur","untranslatedTitle":"Lemon\/Lime \/ 10 stikur"},{"id":"44751437201546","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":"","title":"Lemon\/Lime \/ 30 stikur","untranslatedTitle":"Lemon\/Lime \/ 30 stikur"},{"id":"44751437234314","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":"","title":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)"},{"id":"44751437267082","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":"","title":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)"},{"id":"45773488324746","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"","title":"Peach Crush \/ 10 stikur","untranslatedTitle":"Peach Crush \/ 10 stikur"},{"id":"45773488357514","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":"","title":"Peach Crush \/ 30 stikur","untranslatedTitle":"Peach Crush \/ 30 stikur"},{"id":"45773488390282","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":"","title":"Peach Crush \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Peach Crush \/ 60 stikur (FRÍ SENDING)"},{"id":"45773488423050","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":"","title":"Peach Crush \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Peach Crush \/ 90 stikur (FRÍ SENDING)"},{"id":"47230751473802","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":null,"title":"Peru \/ 10 stikur","untranslatedTitle":"Peru \/ 10 stikur"},{"id":"47230751506570","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"price":{"amount":5985.0,"currencyCode":"ISK"},"sku":null,"title":"Peru \/ 30 stikur","untranslatedTitle":"Peru \/ 30 stikur"},{"id":"47230751539338","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"price":{"amount":11970.0,"currencyCode":"ISK"},"sku":null,"title":"Peru \/ 60 stikur (FRÍ SENDING)","untranslatedTitle":"Peru \/ 60 stikur (FRÍ SENDING)"},{"id":"47230751572106","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"price":{"amount":15290.0,"currencyCode":"ISK"},"sku":null,"title":"Peru \/ 90 stikur (FRÍ SENDING)","untranslatedTitle":"Peru \/ 90 stikur (FRÍ SENDING)"}]},{"id":"7907478503562","handle":"hydration-e","isCollective":null,"title":"Hydration Xpress (grunnvara)","type":null,"untranslatedTitle":"Hydration Xpress (grunnvara)","url":"\/products\/hydration-e","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"44310716579978","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Vorumyndir_Kronan_d38815b2-9ae3-4e0f-b97b-3ab37d230d4e.png?v=1770144338"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"HAP-1001","title":"Lemon\/Lime","untranslatedTitle":"Lemon\/Lime"}]},{"id":"8569638617226","handle":"creatine-xpress-bundle","isCollective":null,"title":"Kreatín Bundle","type":null,"untranslatedTitle":"Kreatín Bundle","url":"\/products\/creatine-xpress-bundle","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"46311578140810","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/creating_lemonlime_1_1_b6a8a999-694c-4855-9c9f-4786764acf7f.png?v=1747412308"},"price":{"amount":2890.0,"currencyCode":"ISK"},"sku":"","title":"Lemon Lime \/ 20 stikur","untranslatedTitle":"Lemon Lime \/ 20 stikur"}]},{"id":"8685285671050","handle":"hydration-kids-1","isCollective":null,"title":"Hydration KIDS Bundle","type":null,"untranslatedTitle":"Hydration KIDS Bundle","url":"\/products\/hydration-kids-1","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47133961388170","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Comp_-_Kids_-_kiwiapple_2.1.png?v=1758891053"},"price":{"amount":1595.0,"currencyCode":"ISK"},"sku":null,"title":"Green Apple \u0026 Kiwi \/ 8 stikur","untranslatedTitle":"Green Apple \u0026 Kiwi \/ 8 stikur"}]},{"id":"8569636520074","handle":"creatine-xpress","isCollective":null,"title":"Kreatín","type":null,"untranslatedTitle":"Kreatín","url":"\/products\/creatine-xpress","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"46311574896778","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/7_0ce026d0-cfc0-4f98-8695-68ee02fdf875.png?v=1770218931"},"price":{"amount":2890.0,"currencyCode":"ISK"},"sku":"HAP-2002","title":"Lemon Lime","untranslatedTitle":"Lemon Lime"}]},{"id":"8636619554954","handle":"energy-xpress","isCollective":null,"title":"Energy Xpress","type":null,"untranslatedTitle":"Energy Xpress","url":"\/products\/energy-xpress","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"46556624093322","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/5_5b6d012c-dd20-4ca5-8049-043c7722a016.png?v=1770225383"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"HAP-3001","title":"Epli \u0026 Kiwi","untranslatedTitle":"Epli \u0026 Kiwi"}]},{"id":"8685285179530","handle":"hydration-kids-halli","isCollective":null,"title":"Hydration KIDS","type":null,"untranslatedTitle":"Hydration KIDS","url":"\/products\/hydration-kids-halli","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47133950771338","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/8.png?v=1770224985"},"price":{"amount":1595.0,"currencyCode":"ISK"},"sku":"HAP-4001","title":"Green Apple \u0026 Kiwi","untranslatedTitle":"Green Apple \u0026 Kiwi"}]},{"id":"8636625027210","handle":"energy-xpress-bundle","isCollective":null,"title":"Energy Xpress Bundle","type":null,"untranslatedTitle":"Energy Xpress Bundle","url":"\/products\/energy-xpress-bundle","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"46556640444554","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/energy-xpress-cropped-final.png?v=1755698272"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":null,"title":"10 stikur","untranslatedTitle":"10 stikur"}]},{"id":"8700106866826","handle":"fritt-stoff","isCollective":null,"title":"Frítt Stöff Bundle","type":null,"untranslatedTitle":"Frítt Stöff Bundle","url":"\/products\/fritt-stoff","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47189689401482","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Brusiogwhisker-2.png?v=1760711356"},"price":{"amount":4970.0,"currencyCode":"ISK"},"sku":null,"title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"8236183552138","handle":"happy-ken","isCollective":null,"title":"Happy Bandana","type":null,"untranslatedTitle":"Happy Bandana","url":"\/products\/happy-ken","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"45252494262410","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/1_ec53c4cd-d3d0-4547-82fa-d0740b564cc6.png?v=1754419381"},"price":{"amount":3490.0,"currencyCode":"ISK"},"sku":"HBNDGB","title":"Grænn Bleikur","untranslatedTitle":"Grænn Bleikur"}]},{"id":"8236184240266","handle":"happy-ring","isCollective":null,"title":"Happy Buxur","type":null,"untranslatedTitle":"Happy Buxur","url":"\/products\/happy-ring","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"46569397518474","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/10.png?v=1762261640"},"price":{"amount":12990.0,"currencyCode":"ISK"},"sku":"HBSXS","title":"Svartur \/ XS","untranslatedTitle":"Svartur \/ XS"}]},{"id":"7727088271498","handle":"happy-hydrate-brusi","isCollective":null,"title":"Happy Hydrate Brúsi","type":null,"untranslatedTitle":"Happy Hydrate Brúsi","url":"\/products\/happy-hydrate-brusi","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"44095624052874","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/IMG_1323.jpg?v=1702330254"},"price":{"amount":1995.0,"currencyCode":"ISK"},"sku":"HAP-9003","title":"Grænn","untranslatedTitle":"Grænn"}]},{"id":"8470537994378","handle":"happy-hydrate-glerbrusi","isCollective":null,"title":"Happy Hydrate Glerbrúsi","type":null,"untranslatedTitle":"Happy Hydrate Glerbrúsi","url":"\/products\/happy-hydrate-glerbrusi","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"4602348
4971819274","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Add_a_heading-3.png?v=1762188102"},"price":{"amount":2995.0,"currencyCode":"ISK"},"sku":"HAP-9005","title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"8236185092234","handle":"happy-peysa","isCollective":null,"title":"Happy Peysa","type":null,"untranslatedTitle":"Happy Peysa","url":"\/products\/happy-peysa","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"46569346957450","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/1_e57cf309-6a93-4163-ba25-f174798d6ec4.png?v=1760714294"},"price":{"amount":12990.0,"currencyCode":"ISK"},"sku":"HPBXXS","title":"Bleik \/ XXS","untranslatedTitle":"Bleik \/ XXS"}]},{"id":"8472789024906","handle":"happy-whisker-1","isCollective":null,"title":"Happy Whisker (10% OFF)","type":"upsell","untranslatedTitle":"Happy Whisker (10% OFF)","url":"\/products\/happy-whisker-1","vendor":"happyhydrate","remoteShopId":null,"variants":[{"id":"46027651055754","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Untitled_design_-_2024-11-21T202016.788.png?v=1732220567"},"price":{"amount":1775.0,"currencyCode":"ISK"},"sku":"HHWP1","title":"Bleikur","untranslatedTitle":"Bleikur"}]},{"id":"8715739889802","handle":"hydration-kids-green-apple-kiwi-bundle","isCollective":null,"title":"Hydration KIDS Green Apple \u0026 Kiwi Bundle","type":null,"untranslatedTitle":"Hydration KIDS Green Apple \u0026 Kiwi Bundle","url":"\/products\/hydration-kids-green-apple-kiwi-bundle","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47249238917258","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Box_Epla_Kivi_Kids.png?v=1758885406"},"price":{"amount":1595.0,"currencyCode":"ISK"},"sku":null,"title":"10 stikur","untranslatedTitle":"10 stikur"}]},{"id":"8715730878602","handle":"hydration-kids-mixed-berries-bundle","isCollective":null,"title":"Hydration KIDS Mixed Berries Bundle","type":null,"untranslatedTitle":"Hydration KIDS Mixed Berries Bundle","url":"\/products\/hydration-kids-mixed-berries-bundle","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47249167646858","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Box_Mixed_Berries_Kids.png?v=1758885598"},"price":{"amount":1595.0,"currencyCode":"ISK"},"sku":null,"title":"10 stikur","untranslatedTitle":"10 stikur"}]},{"id":"8715729961098","handle":"creatine-xpress-lemon-lime-bundle","isCollective":null,"title":"Kreatín Lemon Lime Bundle","type":null,"untranslatedTitle":"Kreatín Lemon Lime Bundle","url":"\/products\/creatine-xpress-lemon-lime-bundle","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47249165811850","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Box_Lemon_Lime_Creatine.png?v=1758881177"},"price":{"amount":2890.0,"currencyCode":"ISK"},"sku":null,"title":"10 stikur","untranslatedTitle":"10 stikur"}]},{"id":"8715718197386","handle":"creatine-xpress-mixed-berries","isCollective":null,"title":"Kreatín Mixed Berries Bundle","type":null,"untranslatedTitle":"Kreatín Mixed Berries Bundle","url":"\/products\/creatine-xpress-mixed-berries","vendor":"Happy Hydrate IS","remoteShopId":null,"variants":[{"id":"47249122754698","image":{"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Box_Mixed_Berries_Creatine.png?v=1758881439"},"price":{"amount":2890.0,"currencyCode":"ISK"},"sku":null,"title":"10 stikur","untranslatedTitle":"10 stikur"}]}],"purchasingCompany":null},},"https://happyhydrate.is/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"158213013642","themePublished":"true","eventMetadataId":"fac14267-9a01-47a6-ba3d-1e2b39583102","pageType":"product","resourceId":"8033136181386","shopId":"60930031754","storefrontBaseUrl":"https:\/\/happyhydrate.is","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":5985.0,\"currencyCode\":\"ISK\"},\"product\":{\"title\":\"Hydration Xpress\",\"vendor\":\"happyhydrate\",\"id\":\"8033136181386\",\"untranslatedTitle\":\"Hydration Xpress\",\"url\":\"\/products\/hydration-xpress\",\"type\":\"\"},\"id\":\"50050860744842\",\"image\":{\"src\":\"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496\"},\"sku\":null,\"title\":\"Strawberry Lemonade \/ 30 stikur\",\"untranslatedTitle\":\"Strawberry Lemonade \/ 30 stikur\"}}]]"});})();</script>
497<script>
498  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
499  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
500  window.ShopifyAnalytics.meta.currency = 'ISK';
501  var meta = {"product":{"id":8033136181386,"gid":"gid:\/\/shopify\/Product\/8033136181386","vendor":"happyhydrate","type":"","handle":"hydration-xpress","variants":[{"id":50050860712074,"price":199500,"name":"Hydration Xpress - Strawberry Lemonade \/ 10 stikur","public_title":"Strawberry Lemonade \/ 10 stikur","sku":null},{"id":50050860744842,"price":598500,"name":"Hydration Xpress - Strawberry Lemonade \/ 30 stikur","public_title":"Strawberry Lemonade \/ 30 stikur","sku":null},{"id":50050860777610,"price":1197000,"name":"Hydration Xpress - Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","public_title":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","sku":null},{"id":50050860810378,"price":1529000,"name":"Hydration Xpress - Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","public_title":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","sku":null},{"id":44751436906634,"price":199500,"name":"Hydration Xpress - Pina Colada \/ 10 stikur","public_title":"Pina Colada \/ 10 stikur","sku":""},{"id":44751436939402,"price":598500,"name":"Hydration Xpress - Pina Colada \/ 30 stikur","public_title":"Pina Colada \/ 30 stikur","sku":""},{"id":44751436972170,"price":1197000,"name":"Hydration Xpress - Pina Colada \/ 60 stikur (FRÍ SENDING)","public_title":"Pina Colada \/ 60 stikur (FRÍ SENDING)","sku":""},{"id":44751437004938,"price":1529000,"name":"Hydration Xpress - Pina Colada \/ 90 stikur (FRÍ SENDING)","public_title":"Pina Colada \/ 90 stikur (FRÍ SENDING)","sku":""},{"id":44751437037706,"price":199500,"name":"Hydration Xpress - Mixed Berries \/ 10 stikur","public_title":"Mixed Berries \/ 10 stikur","sku":""},{"id":44751437070474,"price":598500,"name":"Hydration Xpress - Mixed Berries \/ 30 stikur","public_title":"Mixed Berries \/ 30 stikur","sku":""},{"id":44751437103242,"price":1197000,"name":"Hydration Xpress - Mixed Berries \/ 60 stikur (FRÍ SENDING)","public_title":"Mixed Berries \/ 60 stikur (FRÍ SENDING)","sku":""},{"id":44751437136010,"price":1529000,"name":"Hydration Xpress - Mixed Berries \/ 90 stikur (FRÍ SENDING)","public_title":"Mixed Berries \/ 90 stikur (FRÍ SENDING)","sku":""},{"id":44751437168778,"price":199500,"name":"Hydration Xpress - Lemon\/Lime \/ 10 stikur","public_title":"Lemon\/Lime \/ 10 stikur","sku":""},{"id":44751437201546,"price":598500,"name":"Hydration Xpress - Lemon\/Lime \/ 30 stikur","public_title":"Lemon\/Lime \/ 30 stikur","sku":""},{"id":44751437234314,"price":1197000,"name":"Hydration Xpress - Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","public_title":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","sku":""},{"id":44751437267082,"price":1529000,"name":"Hydration Xpress - Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","public_title":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","sku":""},{"id":45773488324746,"price":199500,"name":"Hydration Xpress - Peach Crush \/ 10 stikur","public_title":"Peach Crush \/ 10 stikur","sku":""},{"id":45773488357514,"price":598500,"name":"Hydration Xpress - Peach Crush \/ 30 stikur","public_title":"Peach Crush \/ 30 stikur","sku":""},{"id":45773488390282,"price":1197000,"name":"Hydration Xpress - Peach Crush \/ 60 stikur (FRÍ SENDING)","public_title":"Peach Crush \/ 60 stikur (FRÍ SENDING)","sku":""},{"id":45773488423050,"price":1529000,"name":"Hydration Xpress - Peach Crush \/ 90 stikur (FRÍ SENDING)","public_title":"Peach Crush \/ 90 stikur (FRÍ SENDING)","sku":""},{"id":47230751473802,"price":199500,"name":"Hydration Xpress - Peru \/ 10 stikur","public_title":"Peru \/ 10 stikur","sku":null},{"id":47230751506570,"price":598500,"name":"Hydration Xpress - Peru \/ 30 stikur","public_title":"Peru \/ 30 stikur","sku":null},{"id":47230751539338,"price":1197000,"name":"Hydration Xpress - Peru \/ 60 stikur (FRÍ SENDING)","public_title":"Peru \/ 60 stikur (FRÍ SENDING)","sku":null},{"id":47230751572106,"price":1529000,"name":"Hydration Xpress - Peru \/ 90 stikur (FRÍ SENDING)","public_title":"Peru \/ 90 stikur (FRÍ SENDING)","sku":null}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8033136181386,"requestId":"1a47e688-6e82-4f3a-8711-34e2413eed44-1791095772"}};
502  for (var attr in meta) {
503    window.ShopifyAnalytics.meta[attr] = meta[attr];
504  }
505</script>
vendor: 1 bytes, line 505
505
506<script class="analytics">
507  (function () {
508    var customDocumentWrite = function(content) {
509      var jquery = null;
510
511      if (window.jQuery) {
512        jquery = window.jQuery;
513      } else if (window.Checkout && window.Checkout.$) {
514        jquery = window.Checkout.$;
515      }
516
517      if (jquery) {
518        jquery('body').append(content);
519      }
520    };
521
522    var hasLoggedConversion = function(token) {
523      if (token) {
524        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
525      }
526      return false;
527    }
528
529    var setCookieIfConversion = function(token) {
530      if (token) {
531        var twoMonthsFromNow = new Date(Date.now());
532        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
533
534        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
535      }
536    }
537
538    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
539    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
540    if (trekkie.integrations) {
541      return;
542    }
543    trekkie.methods = [
544      'identify',
545      'page',
546      'ready',
547      'track',
548      'trackForm',
549      'trackLink'
550    ];
551    trekkie.factory = function(method) {
552      return function() {
553        var args = Array.prototype.slice.call(arguments);
554        args.unshift(method);
555        trekkie.push(args);
556        if (method == 'track' || method == 'page') {
557          var pageUrl;
558          try {
559            pageUrl = window.location.href;
560          } catch (e) {}
561          var pageReferrer;
562          try {
563            pageReferrer = document.referrer;
564          } catch (e) {}
565          try {
566            if (window.__TREKKIE_SHIM_QUEUE == null) {
567              window.__TREKKIE_SHIM_QUEUE = [];
568            }
569            window.__TREKKIE_SHIM_QUEUE.push({
570              from: 'trekkie-stub',
571              method: method,
572              args: args.slice(1),
573              pageContext: {
574                url: pageUrl,
575                referrer: pageReferrer
576              }
577            });
578          } catch (e) {
579            // no-op
580          }
581        }
582        return trekkie;
583      };
584    };
585    for (var i = 0; i < trekkie.methods.length; i++) {
586      var key = trekkie.methods[i];
587      trekkie[key] = trekkie.factory(key);
588    }
589    trekkie.load = function(config) {
590      trekkie.config = config || {};
591      trekkie.config.initialDocumentCookie = document.cookie;
592      var first = document.getElementsByTagName('script')[0];
593var script = document.createElement('script');
594script.type = 'text/javascript';
595script.onerror = function(e) {
596  var scriptFallback = document.createElement('script');
597  scriptFallback.type = 'text/javascript';
598  scriptFallback.onerror = function(error) {
599          var Monorail = {
600      produce: function produce(monorailDomain, schemaId, payload) {
601        var currentMs = new Date().getTime();
602        var event = {
603          schema_id: schemaId,
604          payload: payload,
605          metadata: {
606            event_created_at_ms: currentMs,
607            event_sent_at_ms: currentMs
608          }
609        };
610        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
611      },
612      sendRequest: function sendRequest(endpointUrl, payload) {
613        // Try the sendBeacon API
614        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
615          var blobData = new window.Blob([payload], {
616            type: 'text/plain'
617          });
618
619          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
620            return true;
621          } // sendBeacon was not successful
622
623        } // XHR beacon
624
625        var xhr = new XMLHttpRequest();
626
627        try {
628          xhr.open('POST', endpointUrl);
629          xhr.setRequestHeader('Content-Type', 'text/plain');
630          xhr.send(payload);
631        } catch (e) {
632          console.log(e);
633        }
634
635        return false;
636      },
637      isIos12: function isIos12() {
638        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
639      }
640    };
641    Monorail.produce('monorail-edge.shopifysvc.com',
642      'trekkie_storefront_load_errors/1.1',
643      {shop_id: 60930031754,
644      theme_id: 158213013642,
645      app_name: "storefront",
646      context_url: window.location.href,
647      source_url: "//happyhydrate.is/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
648
649  };
650  scriptFallback.async = true;
651  scriptFallback.src = '//happyhydrate.is/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
652  first.parentNode.insertBefore(scriptFallback, first);
653};
654script.async = true;
655script.src = '//happyhydrate.is/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
656first.parentNode.insertBefore(script, first);
657
658    };
659    trekkie.load(
660      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":60930031754,"isMerchantRequest":null,"themeId":158213013642,"themeCityHash":"17119591427388462464","contentLanguage":"is","currency":"ISK","eventMetadataId":"fac14267-9a01-47a6-ba3d-1e2b39583102"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
661    );
662
663    var loaded = false;
664    trekkie.ready(function() {
665      if (loaded) return;
666      loaded = true;
667
668      window.ShopifyAnalytics.lib = window.trekkie;
669
670      var originalDocumentWrite = document.write;
671      document.write = customDocumentWrite;
672      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
673      document.write = originalDocumentWrite;
674
675      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
676      var token = match? match[1]: undefined;
677      if (!hasLoggedConversion(token)) {
678        setCookieIfConversion(token);
679        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"ISK","variantId":50050860744842,"productId":8033136181386,"productGid":"gid:\/\/shopify\/Product\/8033136181386","name":"Hydration Xpress - Strawberry Lemonade \/ 30 stikur","price":"5985","sku":null,"brand":"happyhydrate","variant":"Strawberry Lemonade \/ 30 stikur","category":"","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true});
680      }
681    });
682
683    window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8033136181386,"requestId":"1a47e688-6e82-4f3a-8711-34e2413eed44-1791095772","shopifyEmitted":true});
684
685    var eventsListenerScript = document.createElement('script');
686    eventsListenerScript.async = true;
687    eventsListenerScript.src = "//happyhydrate.is/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
688    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
689})();</script>
vendor: 1 bytes, line 689
689
690<script
691  defer
692  src="https://happyhydrate.is/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
693  data-application="storefront-renderer"
694  data-shop-id="60930031754"
695  data-render-region="gcp-us-central1"
696  data-page-type="product"
697  data-theme-instance-id="158213013642"
698  data-theme-name="MalterTech"
699  data-theme-version="1.0"
700  data-monorail-region="shop_domain"
701  data-resource-timing-sampling-rate="10"
702  data-shs="true"
703  data-shs-beacon="true"
704  data-shs-export-with-fetch="true"
705  data-shs-logs-sample-rate="1"
706  data-shs-beacon-endpoint="https://happyhydrate.is/api/collect"
707></script>
707
708<meta name="shopify-y" content="7141c8a1-d905-4878-b12f-232f1b6d4dc5" data-expiration="1822653372000"><meta name="shopify-s" content="60a8f491-d013-47fe-b3a6-d4b7dee471b8" data-expiration="1791097572000"><meta name="new-cookie-storage-activated" content="t">
709</head>
710
711<body>
712    
713
714
715<!-- Header -->
716<div id="shopify-section-theme-announcement" class="shopify-section"><style>
717    #announcement {
718        color: #000000;
719        text-align: center;
720        padding: 9px 5px;
721        font-size: 16px;
722        font-weight: 400;
723        display: flex;
724        justify-content: center;
725        align-items: center;
726        background-color: #def7c8;
727        font-family: "DM Sans", sans-serif;
728    }
729
730    #announcement span {
731        margin-left: 4px;
732        font-weight: 600;
733    }
734
735    @media (max-width: 1024px) {
736        #announcement {
737            font-size: 14px;
738        }
739    }
740
741</style>
742
743
744    <div id="announcement">Verslaðu yfir 11.900 kr og þú færð -
745        <span>FRÍA SENDINGU</span>
746    </div>
747
748
749</div>
750<div id="shopify-section-theme-header" class="shopify-section">
751
752
753
754
755
756
757
758<style>
759  #headerPanel .vmedia.is-render > img { padding: 12%; box-sizing: border-box; object-fit: contain; }
760  #headerPanel .vbadge-soldout{ z-index:3; position:absolute; top:12px; left:12px; padding:6px 10px; border-radius:4px; font-size:12px; background-color:#FDE2E2; color:#B02D28; font-family:"DM Sans", system-ui, sans-serif; font-weight:600; width:max-content; }
761  #headerPanel .sliderNav--simple{ background:transparent; padding:4px 0 24px; margin:0; }
762  #headerPanel .sliderNav--simple .sliderNavLink{ font-size:22px; padding:18px 0; margin:0; border-bottom:1px solid #EAEAEA; }
763  #headerPanel .sliderNav--simple .sliderNavDropdown{ padding:18px 0; width:100%; border-bottom:1px solid #EAEAEA; }
764  #headerPanel .sliderNav--simple .sliderNavDropdownToggle{ width:100%; font-size:22px; font-weight:600; font-family:"Inter", sans-serif; color:#1F1F1F; background:none; border:0; padding:0; cursor:pointer; -webkit-appearance:none; appearance:none; }
765  #headerPanel .sliderNav--simple .sliderNavDropdownLinksWrapContent{ padding:16px 0 4px 16px; row-gap:14px; }
766  #headerPanel .sliderNav--simple .sliderNavDropdownLinksWrapContentLink{ font-size:17px; font-weight:500; color:#1F1F1F; }
767</style><header id="header"
768        >
769    <a id="headerLogo" href="/" title="homepage">
770        <svg width="150" height="76" viewBox="0 0 150 76" fill="none" xmlns="http://www.w3.org/2000/svg">
771    <path d="M41.4184 8.22781C41.977 8.22781 42.5195 8.3663 43.0295 8.65142C43.5476 8.93655 43.9524 9.33572 44.2439 9.86523C44.5353 10.3947 44.6892 10.9405 44.6892 11.5189C44.6892 12.0973 44.5434 12.635 44.252 13.1564C43.9605 13.6777 43.5638 14.085 43.0457 14.3702C42.5276 14.6634 41.9851 14.8101 41.4184 14.8101C40.8517 14.8101 40.3093 14.6634 39.7912 14.3702C39.273 14.0769 38.8682 13.6777 38.5849 13.1564C38.2934 12.635 38.1477 12.0892 38.1477 11.5189C38.1477 10.9487 38.2934 10.3947 38.593 9.86523C38.8925 9.33572 39.2892 8.93655 39.8074 8.65142C40.3255 8.3663 40.8598 8.22781 41.4184 8.22781ZM41.4265 8.87138C40.9732 8.87138 40.5441 8.98542 40.1312 9.21352C39.7183 9.44162 39.3945 9.76747 39.1516 10.1911C38.9168 10.6147 38.7954 11.0627 38.7954 11.5271C38.7954 11.9914 38.9087 12.4313 39.1435 12.8468C39.3783 13.2623 39.7021 13.5881 40.115 13.8244C40.5279 14.0606 40.9651 14.1747 41.4184 14.1747C41.8718 14.1747 42.309 14.0606 42.73 13.8244C43.1428 13.5881 43.4667 13.2623 43.7015 12.8468C43.9362 12.4313 44.0496 11.9914 44.0496 11.5271C44.0496 11.0627 43.9281 10.6228 43.6934 10.1911C43.4586 9.76747 43.1267 9.44162 42.7138 9.21352C42.3009 8.98542 41.8637 8.87138 41.4184 8.87138H41.4265ZM39.945 13.2786V9.78377H40.6493C41.3132 9.78377 41.6775 9.78377 41.7585 9.79191C41.9932 9.80821 42.1713 9.85708 42.3009 9.9304C42.4304 10.0037 42.5357 10.1178 42.6247 10.2644C42.7138 10.411 42.7542 10.5821 42.7542 10.7613C42.7542 10.9405 42.6733 11.2257 42.5114 11.4049C42.3495 11.5841 42.1147 11.6982 41.8232 11.7389C41.9285 11.7796 42.0094 11.8204 42.0661 11.8692C42.1228 11.9181 42.2037 12.0077 42.3009 12.1381C42.3252 12.1706 42.4142 12.3173 42.5599 12.5617L42.9728 13.2704H42.0985L41.807 12.7002C41.6127 12.3173 41.4508 12.081 41.3213 11.9833C41.1917 11.8855 41.0298 11.8366 40.8355 11.8366H40.6493V13.2704H39.945V13.2786ZM40.6493 11.2908H40.9327C41.3375 11.2908 41.5884 11.2745 41.6937 11.242C41.7908 11.2094 41.8718 11.1524 41.9285 11.079C41.9851 10.9976 42.0175 10.9
77108 42.0175 10.8102C42.0175 10.7125 41.9932 10.6228 41.9366 10.5495C41.8799 10.4762 41.7989 10.4192 41.7018 10.3866C41.5965 10.354 41.3456 10.3377 40.9489 10.3377H40.6655V11.2908H40.6493Z" fill="white"/>
772    <path d="M130.683 21.5308V19.0706H129.769V18.5574H132.165V19.0706H131.274V21.5308H130.675H130.683ZM132.529 21.5308V18.5574H133.46L133.995 20.6021L134.537 18.5574H135.468V21.5308H134.901V19.1602L134.262 21.5308H133.719L133.088 19.1602V21.5308H132.529Z" fill="white"/>
773    <path d="M4.28258 42.638C5.18122 42.638 5.95033 41.9944 6.12844 41.0983C6.5899 38.7115 7.32662 36.2187 8.33861 33.6281C9.86063 29.7586 11.9898 25.7017 14.6696 21.5634C16.8312 18.2397 19.0008 15.3885 20.7253 13.2948C21.0815 12.8631 21.7372 12.8631 22.0935 13.2948C23.8098 15.3966 25.9876 18.2397 28.1492 21.5634C30.837 25.7017 32.9662 29.7586 34.4801 33.6281C35.4921 36.2105 36.2288 38.7115 36.6903 41.0983C36.8603 41.9944 37.6294 42.638 38.5361 42.638C39.7019 42.638 40.6006 41.5708 40.382 40.4222C37.5889 25.7913 26.1252 12.0322 22.5063 7.99156C21.9154 7.33171 20.8953 7.33171 20.3124 7.99156C16.7016 12.0322 5.2298 25.7913 2.43673 40.4222C2.21814 41.579 3.11678 42.638 4.28258 42.638Z" fill="white"/>
774    <path d="M37.0061 49.4321C36.4313 52.7639 34.8203 55.8269 32.3267 58.2138C29.3717 61.0488 25.4695 62.6129 21.3892 62.6129C17.1632 62.6129 13.1881 60.951 10.2008 57.945C7.86916 55.5988 6.36333 52.658 5.80472 49.4646C5.65089 48.5604 4.88179 47.9005 3.97505 47.9005H3.94267C2.79306 47.9005 1.91061 48.9433 2.11301 50.0838C3.71599 59.3462 11.7471 66.3846 21.4054 66.3846C31.0638 66.3846 39.0949 59.338 40.6978 50.0756C40.8922 48.9351 40.0178 47.8924 38.8682 47.8924H38.8358C37.9372 47.8924 37.16 48.536 37.0061 49.4239V49.4321Z" fill="white"/>
775    <path d="M73.0164 18.924C72.9274 21.1072 72.8788 23.4534 72.8788 25.9624C72.8788 28.4715 72.9193 30.8177 73.0164 33.0009H68.4908V27.7302H61.3989V33.0009H56.8733C56.9785 30.4918 57.0271 28.1457 57.0271 25.9624C57.0271 23.7792 56.9785 21.4331 56.8733 18.924H61.3989V24.1947H68.4908V18.924H73.0164Z" fill="white"/>
776    <path d="M86.9008 29.7831C86.9008 30.223 86.9494 30.5325 87.0547 30.7118C87.1599 30.891 87.3623 31.0213 87.6699 31.1028L87.5971 32.9276C87.1842 32.9927 86.828 33.0416 86.5284 33.0661C86.2289 33.0905 85.8241 33.1068 85.3221 33.1068C84.213 33.1068 83.4844 32.8624 83.1282 32.3573C82.7719 31.8604 82.5857 31.225 82.5857 30.4511V29.9623C82.2133 31.0213 81.6709 31.8115 80.9585 32.3247C80.246 32.8461 79.3393 33.0986 78.2302 33.0986C77.121 33.0986 75.9795 32.838 75.3319 32.3247C74.6842 31.8115 74.3604 31.0376 74.3604 30.0193C74.3604 29.001 74.6356 28.5204 75.1861 28.0398C75.7366 27.5591 76.5948 27.2333 77.7525 27.0541C76.7729 26.3535 75.8014 25.7506 74.8218 25.2293C75.5909 24.2517 76.4734 23.5022 77.4611 22.989C78.4488 22.4758 79.6469 22.2233 81.0637 22.2233C82.4805 22.2233 84.5125 22.655 85.4679 23.5104C86.4232 24.3658 86.9008 25.6936 86.9008 27.4777V29.7831ZM79.736 25.9624C79.2341 26.1824 78.7888 26.5164 78.384 26.9482C79.1531 26.8585 80.1165 26.8097 81.2742 26.8097C82.4319 26.8097 82.0838 26.7526 82.2781 26.6386C82.4724 26.5245 82.5695 26.3779 82.5695 26.1905C82.5695 26.0032 82.4724 25.9054 82.2781 25.7914C82.0838 25.6773 81.8166 25.
7766284 81.4685 25.6284C80.8127 25.6284 80.2379 25.7425 79.736 25.9543V25.9624ZM81.3957 29.5224C82.5938 28.9766 82.5938 27.9257 82.5938 27.9257C82.2862 28.0805 81.9462 28.2027 81.5738 28.2842C81.2013 28.3656 80.748 28.4471 80.2218 28.5285L79.5255 28.6426C78.805 28.7892 78.4488 29.0336 78.4488 29.3758C78.4488 29.7179 78.7807 29.9379 79.4526 29.9379C80.1246 29.9379 80.8127 29.7831 81.3957 29.5224Z" fill="white"/>
777    <path d="M99.5061 22.9401C100.17 23.4208 100.696 24.0643 101.069 24.8871C101.441 25.7099 101.627 26.606 101.627 27.5917C101.627 28.5774 101.441 29.4735 101.069 30.337C100.696 31.2005 100.17 31.8848 99.498 32.4144C98.826 32.9357 98.0569 33.1964 97.1988 33.1964C96.3406 33.1964 95.3367 32.9846 94.6243 32.5691C93.9118 32.1537 93.3856 31.502 93.0375 30.6222C93.0375 31.3553 93.0618 32.5447 93.1103 34.1658C93.1589 35.7462 93.1832 36.8541 93.1832 37.4977H88.8276C88.9005 35.0945 88.941 32.5773 88.941 29.9542C88.941 27.331 88.9005 24.8138 88.8276 22.4106H92.5274L93.0861 24.8301C93.4423 23.9259 93.9847 23.266 94.7052 22.8424C95.4258 22.4269 96.2677 22.2151 97.2473 22.2151C98.2269 22.2151 98.8341 22.4514 99.498 22.932L99.5061 22.9401ZM96.6401 29.1477C97.0287 28.7811 97.2311 28.3004 97.2311 27.7058C97.2311 27.1111 97.053 26.5082 96.6887 26.0928C96.3325 25.6773 95.8386 25.4737 95.2234 25.4737C94.6081 25.4737 93.9847 25.6447 93.6204 25.9869C93.2642 26.329 93.078 26.8993 93.078 27.7058C93.078 28.5122 93.1913 28.5367 93.4261 28.8381C93.6609 29.1395 93.9361 29.3595 94.2519 29.498C94.5757 29.6364 94.8833 29.7016 95.1748 29.7016C95.7496 29.7016 96.2353 29.5142 96.632 29.1477H96.6401Z" fill="white"/>
778    <path d="M113.641 22.9401C114.305 23.4208 114.831 24.0643 115.204 24.8871C115.576 25.7099 115.762 26.606 115.762 27.5917C115.762 28.5774 115.576 29.4735 115.204 30.337C114.831 31.2005 114.305 31.8848 113.633 32.4144C112.961 32.9357 112.192 33.1964 111.334 33.1964C110.476 33.1964 109.472 32.9846 108.76 32.5691C108.047 32.1537 107.521 31.502 107.173 30.6222C107.173 31.3553 107.197 32.5447 107.246 34.1658C107.294 35.7462 107.318 36.8541 107.318 37.4977H102.963C103.036 35.0945 103.076 32.5773 103.076 29.9542C103.076 27.331 103.036 24.8138 102.963 22.4106H106.663L107.221 24.8301C107.578 23.9259 108.12 23.266 108.84 22.8424C109.561 22.4269 110.403 22.2151 111.383 22.2151C112.362 22.2151 112.969 22.4514 113.633 22.932L113.641 22.9401ZM110.783 29.1477C111.172 28.7811 111.374 28.3004 111.374 27.7058C111.374 27.1111 111.196 26.5082 110.832 26.0928C110.476 25.6773 109.982 25.4737 109.367 25.4737C108.751 25.4737 108.128 25.6447 107.764 25.9869C107.408 26.329 107.221 26.8993 107.221 27.7058C107.221 28.5122 107.335 28.5367 107.569 28.8381C107.804 29.1395 108.079 29.3595 108.395 29.498C108.719 29.6364 109.027 29.7016 109.318 29.7016C109.893 29.7016 110.379 29.5142 110.775 29.1477H110.783Z" fill="white"/>
779    <path d="M128.635 22.4188L128.19 23.543C126.967 26.8096 125.688 29.9704 124.36 33.0009C123.664 34.5487 122.668 35.7951 121.357 36.7319C120.045 37.6687 118.402 38.1168 116.426 38.0761C116.183 37.0007 115.981 36.1698 115.819 35.567C115.657 34.9641 115.447 34.3613 115.196 33.7585C115.9 33.9296 116.564 34.011 117.179 34.011C118.183 34.011 118.97
7797 33.7992 119.568 33.3675C119.106 31.9826 118.564 30.4999 117.932 28.9114C117.301 27.3229 116.394 25.1559 115.196 22.4188H119.762C119.916 23.0623 120.126 23.8118 120.393 24.6672C120.66 25.5225 120.936 26.3372 121.203 27.1274C121.276 27.3717 121.405 27.7465 121.575 28.2434C121.745 28.7403 121.883 29.1558 121.988 29.4979L122.49 27.9664C123.454 25.1641 124.02 23.3149 124.206 22.4188H128.635Z" fill="white"/>
780    <path d="M73.0164 37.7421C72.9274 39.9253 72.8788 42.2714 72.8788 44.7805C72.8788 47.2896 72.9193 49.6357 73.0164 51.819H68.4908V46.5483H61.3989V51.819H56.8733C56.9785 49.3099 57.0271 46.9637 57.0271 44.7805C57.0271 42.5973 56.9785 40.2511 56.8733 37.7421H61.3989V43.0128H68.4908V37.7421H73.0164Z" fill="white"/>
781    <path d="M87.2328 41.2287L86.7875 42.3529C85.5651 45.6196 84.2859 48.7722 82.9582 51.8108C82.262 53.3586 81.2662 54.605 79.9546 55.5418C78.6431 56.4787 76.9997 56.9267 75.0243 56.886C74.7814 55.8107 74.579 54.9797 74.4171 54.3769C74.2552 53.7741 74.0447 53.1712 73.7937 52.5684C74.498 52.7395 75.1619 52.821 75.7772 52.821C76.7811 52.821 77.5745 52.6091 78.1655 52.1855C77.704 50.8007 77.1535 49.318 76.5301 47.7295C75.8986 46.141 74.9919 43.974 73.7937 41.2368H78.3598C78.5136 41.8804 78.7241 42.6299 78.9912 43.4852C79.2584 44.3406 79.5337 45.1552 79.8008 45.9454C79.8818 46.1898 80.0032 46.5646 80.1732 47.0615C80.3432 47.5584 80.4809 47.9739 80.5861 48.3079L81.0881 46.7764C82.0515 43.974 82.6263 42.1248 82.8044 41.2287H87.2328Z" fill="white"/>
782    <path d="M99.5224 44.2754C99.5224 46.8741 99.5628 49.3913 99.6357 51.8189H95.2801L95.3368 49.4972C94.9644 50.3608 94.422 50.9962 93.7176 51.4035C93.0133 51.8108 92.1794 52.0145 91.216 52.0145C90.2526 52.0145 89.6292 51.7782 88.9654 51.2976C88.3015 50.8169 87.7753 50.1734 87.4029 49.3506C87.0304 48.5278 86.8442 47.6317 86.8442 46.646C86.8442 45.6603 87.0304 44.7642 87.4029 43.9007C87.7753 43.0372 88.3015 42.3529 88.9735 41.8234C89.6454 41.302 90.4145 41.0413 91.2727 41.0413C92.1308 41.0413 93.1347 41.2531 93.8472 41.6686C94.5596 42.0922 95.0858 42.7358 95.4339 43.6156C95.4339 42.8824 95.4097 41.693 95.3611 40.0719C95.3125 38.4915 95.2882 37.3836 95.2882 36.7401H99.6438C99.5709 39.1432 99.5304 41.6604 99.5304 44.2836L99.5224 44.2754ZM94.7863 48.2183C95.183 47.8598 95.3854 47.2977 95.3854 46.5238C95.3854 45.7499 95.183 45.3345 94.7863 45.0086C94.3896 44.6827 93.8876 44.5198 93.2804 44.5198C92.6733 44.5198 92.2199 44.7072 91.8232 45.0738C91.4265 45.4404 91.2322 45.921 91.2322 46.5157C91.2322 47.1104 91.4103 47.7132 91.7746 48.1287C92.1308 48.5441 92.6247 48.7478 93.24 48.7478C93.8552 48.7478 94.3815 48.5686 94.7782 48.2183H94.7863Z" fill="white"/>
783    <path d="M105.651 44.0962C106.193 42.1411 107.529 41.1717 109.674 41.1717C111.82 41.1717 110.403 41.1961 110.751 41.2531L110.136 45.5951C109.213 45.2448 108.452 45.0738 107.861 45.0738C107.27 45.0738 106.59 45.2937 106.242 45.7336C105.894 46.1735 105.724 46.7601 105.724 47.5014V47.4851L105.708 48.7641C105.708 49.6846 105.732 50.7029 105.78 51.8271H101.174C101.279 49.9697 101.328 48.2101 101.328 46.5564C101.328 44.9027 101.279 43.1349 101.174 41.245C102.024 41.2857 102.672 41.302 103.117 41.302C103.562 41.302 104.242 41.2857 105.06 41.245L105.635 44.1125L105.651 44.0962Z" fill="white"/>
784    <path d="M123.486 48.593C123.486 49.0329 123.535 49.3425 123.64 49.5217C123.745 49.7009 123.948 49.8312 124.255 49.9127L124.182 51.7375C123.769 51.8027 123.413 51.8434 123.114 51.876C122.814 51.9004 122.409 51.9167 121.907 51.9167C120.798 51.9167 120.07 51.6723 119.713 51.1672C119.357 50.6703 119.171 50.0349 119.171 49.261V48.7722C118.799 49.8312 118.256 50.6214 117.544 51.1347C116.831 51.6479 115.925 51.9086 114.815 51.9086C113.706 51.9086 112.565 51.6479 111.917 51.1347C111.269 50.6214 110.946 49.8475 110.946 48.8292C110.946 47.8109 111.221 47.3303 111.771 46.8497C112.322 46.369 113.18 46.0432 114.338 45.864C113.358 45.1634 112.387 44.5605 111.407 44.0392C112.176 43.0616 113.059 42.3121 114.046 41.7989C115.034 41.2857 116.24 41.0332 117.649 41.0332C119.058 41.0332 121.098 41.4649 122.053 42.3203C123.008 43.1757 123.486 44.5035 123.486 46.2876V48.593ZM116.321 44.7805C115.819 45.0004 115.374 45.3344 114.969 45.7662C115.738 45.6766 116.702 45.6277 117.859 45.6277C119.017 45.6277 118.669 45.5707 118.8
78463 45.4566C119.058 45.3426 119.155 45.196 119.155 45.0086C119.155 44.8212 119.058 44.7235 118.863 44.6094C118.669 44.4954 118.402 44.4465 118.054 44.4465C117.398 44.4465 116.823 44.5524 116.321 44.7723V44.7805ZM117.981 48.3323C119.074 47.8109 119.179 46.7356 119.179 46.7356C118.871 46.8904 118.531 47.0126 118.159 47.0941C117.787 47.1755 117.333 47.257 116.807 47.3384L116.111 47.4525C115.39 47.5991 115.034 47.8435 115.034 48.1857C115.034 48.5278 115.366 48.7478 116.038 48.7478C116.71 48.7478 117.406 48.6093 117.981 48.3323Z" fill="white"/>
785    <path d="M134.14 44.6991C132.958 44.6176 131.881 44.5606 130.902 44.528L130.886 46.5809C130.886 47.2814 131.04 47.8273 131.339 48.2183C131.639 48.6093 132.173 48.813 132.95 48.813C133.727 48.813 133.525 48.7885 133.8 48.7315C133.752 49.2121 133.727 49.6928 133.727 50.1815C133.727 50.6703 133.744 50.9473 133.768 51.7701C133.201 51.876 132.732 51.9412 132.343 51.9656C131.954 51.99 131.461 52.0063 130.837 52.0063C129.331 52.0063 128.271 51.6397 127.647 50.9066C127.024 50.1734 126.716 49.1551 126.716 47.8517L126.733 44.5769C126.125 44.6013 125.502 44.642 124.846 44.6909V41.2613C125.51 41.2613 126.077 41.0495 126.538 40.6177C127 40.1941 127.275 39.6809 127.364 39.0862H132.602C131.946 39.9905 131.218 40.7155 130.424 41.2531H134.14V44.6828V44.6991Z" fill="white"/>
786    <path d="M145.49 46.9719H139.208C139.313 47.5421 139.564 48.0064 139.969 48.3567C140.374 48.707 140.949 48.8863 141.694 48.8863C142.438 48.8863 142.738 48.7804 143.216 48.5686C143.693 48.3567 144.074 48.0553 144.349 47.6643C145.207 48.0879 146.357 48.5523 147.782 49.041C147.385 49.9453 146.664 50.6703 145.612 51.1998C144.568 51.7375 143.199 52.0063 141.515 52.0063C139.831 52.0063 137.718 51.5012 136.674 50.4829C135.63 49.4646 135.104 48.1368 135.104 46.4831C135.104 44.8294 135.622 43.5585 136.666 42.5484C137.702 41.5382 139.321 41.0332 141.524 41.0332C143.726 41.0332 143.968 41.2531 144.932 41.693C145.895 42.1329 146.632 42.7439 147.15 43.526C147.66 44.308 147.919 45.2041 147.919 46.2143C147.919 47.2244 147.903 46.8008 147.879 46.9719H145.49ZM140.406 44.1695C139.208 44.9027 139.208 45.7662 139.208 45.7662C139.516 45.6114 139.856 45.4892 140.228 45.4078C140.601 45.3263 141.054 45.2448 141.58 45.1634L142.276 45.0493C142.997 44.9027 143.353 44.6583 143.353 44.3162C143.353 43.974 143.021 43.7541 142.349 43.7541C141.677 43.7541 140.949 43.8355 140.406 44.1695Z" fill="white"/>
787</svg>
788
789    </a>
790
791    <nav id="headerNav">
792        
793            <div class="headerNavLink">
794                <div class="headerNavLinkContent">
795                    <a class="headerNavLinkContentTitle "
796                       href="/collections/shop-all">
797                        Versla
798                    </a>
799                    
800                    
801                        <img class="headerNavLinkContentArrow" src="//happyhydrate.is/cdn/shop/t/80/assets/icon-down-arrow.svg?v=20821147324244546361788984151"
802                             alt="" width="12" height="12" loading="lazy" decoding="async" aria-hidden="true">
803                        <div class="headerNavLinkContentExpanded">
804                            <div class="headerNavLinkContentExpandedBody">
805                                <div class="headerNavLinkContentExpandedBodyLinks">
806                                    
807                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/collections/shop-all">
808                                            Allt
809                                        </a>
810                                    
811                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/products/hydration-xpress?variant=50050860744842">
812                                            Hydrate
813                                        </a>
814                                    
815                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/products/creatine-xpress-bundle">
816                                            Kreatín
817                                        </a>
818                                    
819                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/products/energy-xpress-bundle">
820                                            Energy
821                                        </a>
822                                    
823                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/products/hydration-kids-1">
824                                            Kids
825                                        </a>
826                                    
827                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/collections/fatnadur">
828                                            Fatnaður
829                                        </a>
830                                    
831                                        <a class="headerNavLinkContentExpandedBodyLinksItem" href="/collections/brusar">
832                                            Brúsar
833                                        </a>
834                                    
835                                </div>
836                            </div>
837                        </div>
838                    
839                </div>
840            </div>
841        
842            <div class="headerNavLink">
843                <div class="headerNavLinkContent">
844                    <a class="headerNavLinkContentTitle soloLink"
845                       href="/pages/askrift-box">
846                        Áskrift
847                    </a>
848                    
849                    
850                </div>
851            </div>
852        
853    </nav>
854
855
856
857    <div id="headerIcons">
858
859        
860        <a id="headerIconsAccount" title="Áskriftin mín" href="/pages/askriftin-min">
861            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
862            <g clip-path="url(#clip0_701_2720)">
863            <path d="M12.0033 13.5848C14.1928 13.5848 15.9676 11.8099 15.9676 9.62054C15.9676 7.43112 14.1928 5.65625 12.0033 5.65625C9.81394 5.65625 8.03906 7.43112 8.03906 9.62054C8.03906 11.8099 9.81394 13.5848 12.0033 13.5848Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
864            <path d="M5.23438 19.7645C5.94198 18.603 6.9365 17.643 8.12229 16.977C9.30809 16.3108 10.6453 15.9609 12.0054 15.9609C13.3655 15.9
864609 14.7027 16.3108 15.8885 16.977C17.0743 17.643 18.0687 18.603 18.7764 19.7645" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
865            <path d="M12.0025 22.3018C17.695 22.3018 22.3096 17.6872 22.3096 11.9946C22.3096 6.30217 17.695 1.6875 12.0025 1.6875C6.30998 1.6875 1.69531 6.30217 1.69531 11.9946C1.69531 17.6872 6.30998 22.3018 12.0025 22.3018Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
866            </g>
867            <defs>
868            <clipPath id="clip0_701_2720">
869            <rect width="24" height="24" fill="white"/>
870            </clipPath>
871            </defs>
872            </svg>
873        </a>
874
875        <button id="headerIconsCart" class="openCart" data-count="0" title="cart">
876            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
877            <path d="M20.2131 12.7879H7.24196L5.65625 4.85938H21.5133C21.6294 4.8598 21.7438 4.88565 21.8487 4.93512C21.9535 4.98458 22.0463 5.05646 22.1204 5.14568C22.1946 5.23487 22.2482 5.33926 22.2775 5.45143C22.3068 5.56362 22.3113 5.68087 22.2903 5.79495L20.9901 12.1378C20.9598 12.3212 20.8646 12.4876 20.7221 12.6069C20.5795 12.7262 20.3989 12.7904 20.2131 12.7879Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
878            <path d="M5.65959 4.85893L4.99359 2.32179C4.95704 2.1427 4.85973 1.98175 4.71814 1.86616C4.57655 1.75058 4.39938 1.68746 4.21659 1.6875H1.69531" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
879            <path d="M7.25 12.7891L7.916 16.1191C7.95257 16.2982 8.04987 16.4591 8.19145 16.5747C8.33304 16.6903 8.51023 16.7533 8.693 16.7533H18.3501" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
880            <path d="M17.5585 22.3045C17.1205 22.3045 16.7656 21.9494 16.7656 21.5116C16.7656 21.0738 17.1205 20.7188 17.5585 20.7188C17.9963 20.7188 18.3513 21.0738 18.3513 21.5116C18.3513 21.9494 17.9963 22.3045 17.5585 22.3045Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
881            <path d="M9.62098 22.3045C9.1831 22.3045 8.82812 21.9494 8.82812 21.5116C8.82812 21.0738 9.1831 20.7188 9.62098 20.7188C10.0589 20.7188 10.4138 21.0738 10.4138 21.5116C10.4138 21.9494 10.0589 22.3045 9.62098 22.3045Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
882            </svg>
883        </button>
884
885        <div id="headerMenu" class="openNav" aria-expanded="false">
886            <svg class="burger" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
887                <!-- both bars are the same line at y=12; we offset with CSS -->
888                <g class="line line--1"><line x1="2" y1="12" x2="22" y2="12"/></g>
889                <g class="line line--2"><line x1="2" y1="12" x2="22" y2="12"/></g>
890            </svg>
891        </div>
892
893    </div>
894
895
896    <div id="headerPanel" aria-hidden="true"><nav id="sliderNav" class="sliderNav--simple">
897    
898      
899        <div class="sliderNavDropdown">
900          <button class="sliderNavDropdownToggle active" type="button" aria-expanded="true">Versla</button>
901          <div class="sliderNavDropdownLinks">
902            <div class="sliderNavDropdownLinksWrap">
903              <div class="sliderNavDropdownLinksWrapContent">
904                
905                  <a class="sliderNavDropdownLinksWrapContentLink" href="/collections/shop-all">Allt</a>
906                
907                  <a class="sliderNavDropdownLinksWrapContentLink" href="/products/hydration-xpress?variant=50050860744842">Hydrate</a>
908                
909                  <a class="sliderNavDropdownLinksWrapContentLink" href="/products/creatine-xpress-bundle">Kreatín</a>
910                
911                  <a class="sliderNavDropdownLinksWrapContentLink" href="/products/energy-xpress-bundle">Energy</a>
912                
913                  <a class="sliderNavDropdownLinksWrapContentLink" href="/products/hydration-kids-1">Kids</a>
914                
915                  <a class="sliderNavDropdownLinksWrapContentLink" href="/collections/fatnadur">Fatnaður</a>
916                
917                  <a class="sliderNavDropdownLinksWrapContentLink" href="/collections/brusar">Brúsar</a>
918                
919              </div>
920            </div>
921          </div>
922        </div>
923      
924    
925      
926        <a class="sliderNavLink" href="/pages/askrift-box">Áskrift</a>
927      
928    
929      
930        <a class="sliderNavLink" href="/pages/contact">Hafa samband</a>
931      
932    
933  </nav></div>
934
935
936</header>
937
938
939
940
941<script>
942(() => {
943  const header  = document.getElementById('header');
944  const trigger = document.getElementById('headerMenu');
945  const panel   = document.getElementById('headerPanel');
946  const body    = document.body;
947
948  // header height -> CSS var (used to size panel)
949  function syncHeaderH() {
950    const h = header ? header.offsetHeight : 0;
951    document.documentElement.style.setProperty('--header-h', h + 'px');
952  }
953  syncHeaderH();
954  window.addEventListener('resize', syncHeaderH);
955
956  // open / close + scroll lock
957  function openPanel(){
958    const y = window.scrollY || window.pageYOffset;
959    body.dataset.scrollY = y;
960    body.style.top = `-${y}px`;
961    body.classList.add('scroll-lock');
962
963    header.classList.add('is-open');
964    trigger?.setAttribute('aria-expanded','true');
965    panel?.setAttribute('aria-hidden','false');
966  }
967
968  function closePanel(){
969    header.classList.remove('is-open');
970    trigger?.setAttribute('aria-expanded','false');
971    panel?.setAttribute('aria-hidden','true');
972
973    const y = parseInt(body.dataset.scrollY || '0', 10);
974    body.classList.remove('scroll-lock');
975    body.style.top = '';
976    window.scrollTo(0, y);
977  }
978
979  trigger?.addEventListener('click', () => {
980    header.classList.contains('is-open') ? closePanel() : openPanel();
981  });
982
983  // close when clicking any link inside the panel
984  panel?.addEventListener('click', (e) => {
985    if (e.target.closest('a')) closePanel();
986  });
987
988  // ===== Tabs: switch panels =====
989  const panelRoot = panel;
990  if (panelRoot) {
991    panelRoot.addEventListener('click', (e) => {
992      const btn = e.target.closest('button.mp-tab');
993      if (!btn || !panelRoot.contains(btn)) return;
994
995      e.preventDefault();
996
997      const key = btn.dataset.tab;           // "menu" or "c-<id>"
998      const targetId = 'panel-' + key;       // "panel-menu" or "panel-c-<id>"
999
1000      // activate button
1001      panelRoot.querySelectorAll('.mp-tab')
1002        .forEach(b => b.classList.toggle('is-active', b === btn));
1003
1004      // show corresponding panel
1005      panelRoot.querySelectorAll('.mp-panel')
1006        .forEach(p => p.classList.toggle('is-active', p.id === targetId));
1007    });
1008  }
1009
1010
1011
1012(function () {
1013  const links = document.querySelectorAll('#headerNav a.soloLink');
1014
1015  const normalizePath = (p) =>
1016    p
1017      .replace(/^\/[a-z]{2}(?:-[A-Z]{2})?\//, "/") // drop /en/, /is/, /en-GB/, ...
1018      .replace(/\/$/, "");                         // drop trailing slash
1019
1020  // current page (pathname only)
1021  const current = normalizePath(location.pathname);
1022
1023  links.forEach((a) => {
1024    const href = a.getAttribute("href");
1025    if (!href) return;
1026
1027    // Parse href and take ONLY pathname (ignores ?variant=...)
1028    const targetPathname = new URL(href, location.origin).pathname;
1029    const target = normalizePath(targetPathname);
1030
1031    if (current === target || current.startsWith(target)) {
1032      const item = a.closest(".headerNavLink");
1033      if (item) item.classList.add("is-active");
1034      a.classList.remove("is-active"); // if you were using the anchor class before
1035    }
1036  });
1037})();
1038
1039})();
1040</script>
1040
1041
1042
1043
1044
1045
1046</div>
1047<div id="shopify-section-theme-mini-cart" class="shopify-section"><dialog id="miniCart">
1048    <div id="miniCartExit" class="closeCart">
1049    </div>
1050    <div id="miniCartContent">
1051
1052        
1053        <div id="miniCartEmpty">
1054            <div id="miniCartEmptyClose" class="closeCart">
1055                <svg width="91" height="91" viewBox="0 0 91 91" fill="none" xmlns="http://www.w3.org/2000/svg">
1056                    <line x1="4.45275" y1="86.4889" x2="86.4771" y2="4.4645" stroke="#212121" stroke-width="10"/>
1057                    <line y1="-5" x2="116" y2="-5"
1058                          transform="matrix(-0.707107 -0.707107 -0.707107 0.707107 82.0234 90.0366)"
1059                          stroke="#212121" stroke-width="10"/>
1060                </svg>
1061            </div>
1062
1063            <div id="miniCartEmptyTitle">
1064                Karfan þín er tóm
1065            </div>
1066
1067            <button id="miniCartFooterClose" class="button closeCart custom-mb-12">
1068                Halda áfram að versla
1069            </button>
1070        </div>
1071
1072        
1073        <div id="miniCartHeader">
1074            <div id="miniCartHeaderTitleWrapper">
1075                <div style="display: flex; gap: 16px;">
1076                    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
1077                    <path d="M20.2131 12.7879H7.24196L5.65625 4.85938H21.5133C21.6294 4.8598 21.7438 4.88565 21.8487 4.93512C21.9535 4.98458 22.0463 5.05646 22.1204 5.14568C22.1946 5.23487 22.2482 5.33926 22.2775 5.45143C22.3068 5.56362 22.3113 5.68087 22.2903 5.79495L20.9901 12.1378C20.9598 12.3212 20.8646 12.4876 20.7221 12.6069C20.5795 12.7262 20.3989 12.7904 20.2131 12.7879Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1078                    <path d="M5.65959 4.85893L4.99359 2.32179C4.95704 2.1427 4.85973 1.98175 4.71814 1.86616C4.57655 1.75058 4.39938 1.68746 4.21659 1.6875H1.69531" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1079                    <path d="M7.25 12.7891L7.916 16.1191C7.95257 16.2982 8.04987 16.4591 8.19145 16.5747C8.33304 16.6903 8.51023 16.7533 8.693 16.7533H18.3501" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1080                    <path d="M17.5585 22.3045C17.1205 22.3045 16.7656 21.9494 16.7656 21.5116C16.7656 21.0738 17.1205 20.7188 17.5585 20.7188C17.9963 20.7188 18.3513 21.0738 18.3513 21.5116C18.3513 21.9494 17.9963 22.3045 17.5585 22.3045Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1081                    <path d="M9.62098 22.3045C9.1831 22.3045 8.82812 21.9494 8.82812 21.5116C8.82812 21.0738 9.1831 20.7188 9.62098 20.7188C10.0589 20.7188 10.4138 21.0738 10.4138 21.5116C10.4138 21.9494 10.0589 22.3045 9.62098 22.3045Z" stroke="#1F1F1F" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
1082                    </svg>
1083                    <div id="miniCartHeaderTitle">Karfan þín <span
1084                                id="miniCartHeaderTitleCount">(0)</span></div>
1085                </div>
1086                <div id="miniCartContentExit" class="closeCart">
1087                    <svg width="91" height="91" viewBox="0 0 91 91" fill="none" xmlns="http://www.w3.org/2000/svg">
1088                        <line x1="4.45275" y1="86.4889" x2="86.4771" y2="4.4645" stroke="#212121" stroke-width="10"/>
1089                        <line y1="-5" x2="116" y2="-5"
1090                              transform="matrix(-0.707107 -0.707107 -0.707107 0.707107 82.0234 90.0366)"
1091                              stroke="#212121" stroke-width="10"/>
1092                    </svg>
1093                </div>
1094            </div>
1095        </div>
1096
1097        <div id="miniCartProgressBody">
1098            
1099                <div style="display: flex; gap: 12px; margin-bottom: 24px;     align-items: center;">
1100                    <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28" fill="none">
1101                    <path d="M15.1699 2.37012L13.4717 6.61567V13.6917H24.7183V6.61567L23.0201 2.37012H15.1699Z" stroke="black" stroke-width="1.5"/>
1102                    <path d="M13.4717 6.61572H24.7183" stroke="black" stroke-width="1.5"/>
1103                    <path d="M19.0947 2.37012V6.61567" stroke="black" stroke-width="1.5"/>
1104                    <path d="M2.37012 25.6304H13.4717L23.516 22.4585V22.0439C23.516 20.5211 22.2815 19.2866 20.7586 19.2866C20.4838 19.2866 20.2105 19.3278 19.9478 19.4085L13.6541 21.3451C13.5331 21.3823 13.4074 21.4012 13.2809 21.4012H8.18522" stroke="black" stroke-width="1.5"/>
1105                    <path d="M13.4717 21.4012V18.2293L6.82058 17.206C4.89745 16.9102 3.16309 18.3981 3.16309 20.3439" stroke="black" stroke-width="1.5"/>
1106                    </svg>
1107
1108                    <div id="miniCartHeaderBarText">
1109                        Þig vantar
1110                        <div id="miniCartHeaderBarTextAmount"></div>
1111                        fyrir fría heimsendingu
1112                    </div>
1113                </div>
1114                <div id="miniCartHeaderBar">
1115                    <div id="miniCartHeaderBarInner"></div>
1116                </div>
1117            
1118
1119        </div>
1120
1121        
1122        <div id="miniCartBody" class="active"></div>
1123
1124        
1125        <div id="miniCartUpsell">
1126            <h2 id="miniCartUpsellTitle"></h2>
1127            <div id="miniCartUpsellSwiper" class="swiper">
1128                <div class="swiper-wrapper">
1129                    
1130                </div>
1131                <div id="miniCartUpsellSwiperActions">
1132                    <div class="swiper-button-prev"></div>
1133                    <div class="swiper-button-next"></div>
1134                </div>
1135            </div>
1136        </div>
1137
1138        
1139        <div id="miniCartFooter">
1140            
1141
1142            <div id="miniCartFooterTotal">
1143                Heildarverð <span
1144                        id="miniCartFooterTotalPrice">0 kr</span>
1145            </div>
1146
1147            <div class="footerButtonDiv">
1148                <button id="miniCartFooterClose" class="button closeCart">
1149                    Halda áfram að versla
1150                </button>
1151
1152                <button id="miniCartFooterCheckout" class="button">
1153                    Klára kaup
1154                </button>
1155            </div>
1156
1157            <div id="miniCartFooterText">Sending er reiknuð við greiðslu</div>
1158        </div>
1159
1160    </div>
1161</dialog>
1161<script>
1162    // Þvinguð "uppselt"-staða, tilbúin fyrir mini-cart JS-ið.
1163    // Snið: kommu-vafðir listar á lágstöfum, t.d. ",mixed berries,"  (tómt = ekkert þvingað)
1164    window.HH_FORCED_SOLD_OUT = {
1165        "hydration": ",mixed berries,",
1166        "creatine": "",
1167        "energy": "",
1168        "kids": "",
1169        "skus": ",HAP-1002,"
1170    };
1171</script>
1171
1172
1173<!-- Extra Product Data For Cart -->
1174<script>
1175    // general product data
1176    const variantIDToSellingPlanID = {};
1177    const variantIDToSellingPlanName = {};
1178    const variantIDToCompareAtPrice = {};
1179    
1180    
1181    variantIDToSellingPlanID[`46556624093322`] = null;
1182    variantIDToSellingPlanName[`46556624093322`] = null;
1183    variantIDToCompareAtPrice[`46556624093322`] = null;
1184    
1185    
1186    
1187    variantIDToSellingPlanID[`46556640444554`] = null;
1188    variantIDToSellingPlanName[`46556640444554`] = null;
1189    variantIDToCompareAtPrice[`46556640444554`] = null;
1190    
1191    variantIDToSellingPlanID[`46556640477322`] = null;
1192    variantIDToSellingPlanName[`46556640477322`] = null;
1193    variantIDToCompareAtPrice[`46556640477322`] = null;
1194    
1195    variantIDToSellingPlanID[`46556640510090`] = null;
1196    variantIDToSellingPlanName[`46556640510090`] = null;
1197    variantIDToCompareAtPrice[`46556640510090`] = null;
1198    
1199    variantIDToSellingPlanID[`46556640542858`] = null;
1200    variantIDToSellingPlanName[`46556640542858`] = null;
1201    variantIDToCompareAtPrice[`46556640542858`] = null;
1202    
1203    
1204    
1205    variantIDToSellingPlanID[`47189689401482`] = null;
1206    variantIDToSellingPlanName[`47189689401482`] = null;
1207    variantIDToCompareAtPrice[`47189689401482`] = null;
1208    
1209    
1210    
1211    variantIDToSellingPlanID[`45252494262410`] = null;
1212    variantIDToSellingPlanName[`45252494262410`] = null;
1213    variantIDToCompareAtPrice[`45252494262410`] = null;
1214    
1215    variantIDToSellingPlanID[`46570914316426`] = null;
1216    variantIDToSellingPlanName[`46570914316426`] = null;
1217    variantIDToCompareAtPrice[`46570914316426`] = null;
1218    
1219    variantIDToSellingPlanID[`46570914349194`] = null;
1220    variantIDToSellingPlanName[`46570914349194`] = null;
1221    variantIDToCompareAtPrice[`46570914349194`] = null;
1222    
1223    variantIDToSellingPlanID[`46570914381962`] = null;
1224    variantIDToSellingPlanName[`46570914381962`] = null;
1225    variantIDToCompareAtPrice[`46570914381962`] = null;
1226    
1227    variantIDToSellingPlanID[`46570914414730`] = null;
1228    variantIDToSellingPlanName[`46570914414730`] = null;
1229    variantIDToCompareAtPrice[`46570914414730`] = null;
1230    
1231    
1232    
1233    variantIDToSellingPlanID[`46569397518474`] = null;
1234    variantIDToSellingPlanName[`46569397518474`] = null;
1235    variantIDToCompareAtPrice[`46569397518474`] = null;
1236    
1237    variantIDToSellingPlanID[`46569835757706`] = null;
1238    variantIDToSellingPlanName[`46569835757706`] = null;
1239    variantIDToCompareAtPrice[`46569835757706`] = null;
1240    
1241    variantIDToSellingPlanID[`46569835790474`] = null;
1242    variantIDToSellingPlanName[`46569835790474`] = null;
1243    variantIDToCompareAtPrice[`46569835790474`] = null;
1244    
1245    variantIDToSellingPlanID[`46569835823242`] = null;
1246    variantIDToSellingPlanName[`46569835823242`] = null;
1247    variantIDToCompareAtPrice[`46569835823242`] = null;
1248    
1249    variantIDToSellingPlanID[`46569397551242`] = null;
1250    variantIDToSellingPlanName[`46569397551242`] = null;
1251    variantIDToCompareAtPrice[`46569397551242`] = null;
1252    
1253    variantIDToSellingPlanID[`46569835856010`] = null;
1254    variantIDToSellingPlanName[`46569835856010`] = null;
1255    variantIDToCompareAtPrice[`46569835856010`] = null;
1256    
1257    variantIDToSellingPlanID[`46569835888778`] = null;
1258    variantIDToSellingPlanName[`46569835888778`] = null;
1259    variantIDToCompareAtPrice[`46569835888778`] = null;
1260    
1261    variantIDToSellingPlanID[`46569835921546`] = null;
1262    variantIDToSellingPlanName[`46569835921546`] = null;
1263    variantIDToCompareAtPrice[`46569835921546`] = null;
1264    
1265    
1266    
1267    variantIDToSellingPlanID[`44095624052874`] = null;
1268    variantIDToSellingPlanName[`44095624052874`] = null;
1269    variantIDToCompareAtPrice[`44095624052874`] = null;
1270    
1271    variantIDToSellingPlanID[`44095624085642`] = null;
1272    variantIDToSellingPlanName[`44095624085642`] = null;
1273    variantIDToCompareAtPrice[`44095624085642`] = null;
1274    
1275    variantIDToSellingPlanID[`45194891559050`] = null;
1276    variantIDToSellingPlanName[`45194891559050`] = null;
1277    variantIDToCompareAtPrice[`45194891559050`] = null;
1278    
1279    variantIDToSellingPlanID[`46577607639178`] = null;
1280    variantIDToSellingPlanName[`46577607639178`] = null;
1281    variantIDToCompareAtPrice[`46577607639178`] = null;
1282    
1283    
1284    
1285    variantIDToSellingPlanID[`46023481819274`] = null;
1286    variantIDToSellingPlanName[`46023481819274`] = null;
1287    variantIDToCompareAtPrice[`46023481819274`] = 299500;
1288    
1289    
1290    
1291    variantIDToSellingPlanID[`46569346957450`] = null;
1292    variantIDToSellingPlanName[`46569346957450`] = null;
1293    variantIDToCompareAtPrice[`46569346957450`] = null;
1294    
1295    variantIDToSellingPlanID[`46569405055114`] = null;
1296    variantIDToSellingPlanName[`46569405055114`] = null;
1297    variantIDToCompareAtPrice[`46569405055114`] = null;
1298    
1299    variantIDToSellingPlanID[`46569405087882`] = null;
1300    variantIDToSellingPlanName[`46569405087882`] = null;
1301    variantIDToCompareAtPrice[`46569405087882`] = null;
1302    
1303    variantIDToSellingPlanID[`46569405120650`] = null;
1304    variantIDToSellingPlanName[`46569405120650`] = null;
1305    variantIDToCompareAtPrice[`46569405120650`] = null;
1306    
1307    variantIDToSellingPlanID[`46569405153418`] = null;
1308    variantIDToSellingPlanName[`46569405153418`] = null;
1309    variantIDToCompareAtPrice[`46569405153418`] = null;
1310    
1311    variantIDToSellingPlanID[`46569346990218`] = null;
1312    variantIDToSellingPlanName[`46569346990218`] = null;
1313    variantIDToCompareAtPrice[`46569346990218`] = null;
1314    
1315    variantIDToSellingPlanID[`46569405186186`] = null;
1316    variantIDToSellingPlanName[`46569405186186`] = null;
1317    variantIDToCompareAtPrice[`46569405186186`] = null;
1318    
1319    variantIDToSellingPlanID[`46569405218954`] = null;
1320    variantIDToSellingPlanName[`46569405218954`] = null;
1321    variantIDToCompareAtPrice[`46569405218954`] = null;
1322    
1323    variantIDToSellingPlanID[`46569405251722`] = null;
1324    variantIDToSellingPlanName[`46569405251722`] = null;
1325    variantIDToCompareAtPrice[`46569405251722`] = null;
1326    
1327    variantIDToSellingPlanID[`46569405284490`] = null;
1328    variantIDToSellingPlanName[`46569405284490`] = null;
1329    variantIDToCompareAtPrice[`46569405284490`] = null;
1330    
1331    variantIDToSellingPlanID[`46569347022986`] = null;
1332    variantIDToSellingPlanName[`46569347022986`] = null;
1333    variantIDToCompareAtPrice[`46569347022986`] = null;
1334    
1335    variantIDToSellingPlanID[`46569405317258`] = null;
1336    variantIDToSellingPlanName[`46569405317258`] = null;
1337    variantIDToCompareAtPrice[`46569405317258`] = null;
1338    
1339    variantIDToSellingPlanID[`46569405350026`] = null;
1340    variantIDToSellingPlanName[`46569405350026`] = null;
1341    variantIDToCompareAtPrice[`46569405350026`] = null;
1342    
1343    variantIDToSellingPlanID[`46569405382794`] = null;
1344    variantIDToSellingPlanName[`46569405382794`] = null;
1345    variantIDToCompareAtPrice[`46569405382794`] = null;
1346    
1347    variantIDToSellingPlanID[`46569405415562`] = null;
1348    variantIDToSellingPlanName[`46569405415562`] = null;
1349    variantIDToCompareAtPrice[`46569405415562`] = null;
1350    
1351    variantIDToSellingPlanID[`46569393324170`] = null;
1352    variantIDToSellingPlanName[`46569393324170`] = null;
1353    variantIDToCompareAtPrice[`46569393324170`] = null;
1354    
1355    variantIDToSellingPlanID[`46569405448330`] = null;
1356    variantIDToSellingPlanName[`46569405448330`] = null;
1357    variantIDToCompareAtPrice[`46569405448330`] = null;
1358    
1359    variantIDToSellingPlanID[`46569405481098`] = null;
1360    variantIDToSellingPlanName[`46569405481098`] = null;
1361    variantIDToCompareAtPrice[`46569405481098`] = null;
1362    
1363    variantIDToSellingPlanID[`46569405513866`] = null;
1364    variantIDToSellingPlanName[`46569405513866`] = null;
1365    variantIDToCompareAtPrice[`46569405513866`] = null;
1366    
1367    variantIDToSellingPlanID[`46569405546634`] = null;
1368    variantIDToSellingPlanName[`46569405546634`] = null;
1369    variantIDToCompareAtPrice[`46569405546634`] = null;
1370    
1371    
1372    
1373    variantIDToSellingPlanID[`46027651055754`] = null;
1374    variantIDToSellingPlanName[`46027651055754`] = null;
1375    variantIDToCompareAtPrice[`46027651055754`] = 197500;
1376    
1377    
1378    
1379    variantIDToSellingPlanID[`47133950771338`] = null;
1380    variantIDToSellingPlanName[`47133950771338`] = null;
1381    variantIDToCompareAtPrice[`47133950771338`] = null;
1382    
1383    variantIDToSellingPlanID[`47133950804106`] = null;
1384    variantIDToSellingPlanName[`47133950804106`] = null;
1385    variantIDToCompareAtPrice[`47133950804106`] = null;
1386    
1387    
1388    
1389    variantIDToSellingPlanID[`47133961388170`] = null;
1390    variantIDToSellingPlanName[`47133961388170`] = null;
1391    variantIDToCompareAtPrice[`47133961388170`] = null;
1392    
1393    variantIDToSellingPlanID[`47133961420938`] = null;
1394    variantIDToSellingPlanName[`47133961420938`] = null;
1395    variantIDToCompareAtPrice[`47133961420938`] = null;
1396    
1397    variantIDToSellingPlanID[`47133961453706`] = null;
1398    variantIDToSellingPlanName[`47133961453706`] = null;
1399    variantIDToCompareAtPrice[`47133961453706`] = null;
1400    
1401    variantIDToSellingPlanID[`47133961486474`] = null;
1402    variantIDToSellingPlanName[`47133961486474`] = null;
1403    variantIDToCompareAtPrice[`47133961486474`] = null;
1404    
1405    variantIDToSellingPlanID[`47133961519242`] = null;
1406    variantIDToSellingPlanName[`47133961519242`] = null;
1407    variantIDToCompareAtPrice[`47133961519242`] = null;
1408    
1409    variantIDToSellingPlanID[`47133961552010`] = null;
1410    variantIDToSellingPlanName[`47133961552010`] = null;
1411    variantIDToCompareAtPrice[`47133961552010`] = null;
1412    
1413    variantIDToSellingPlanID[`47133961584778`] = null;
1414    variantIDToSellingPlanName[`47133961584778`] = null;
1415    variantIDToCompareAtPrice[`47133961584778`] = null;
1416    
1417    variantIDToSellingPlanID[`47133961617546`] = null;
1418    variantIDToSellingPlanName[`47133961617546`] = null;
1419    variantIDToCompareAtPrice[`47133961617546`] = null;
1420    
1421    
1422    
1423    variantIDToSellingPlanID[`47249238917258`] = null;
1424    variantIDToSellingPlanName[`47249238917258`] = null;
1425    variantIDToCompareAtPrice[`47249238917258`] = 159500;
1426    
1427    variantIDToSellingPlanID[`47249239179402`] = null;
1428    variantIDToSellingPlanName[`47249239179402`] = null;
1429    variantIDToCompareAtPrice[`47249239179402`] = 478500;
1430    
1431    variantIDToSellingPlanID[`47249239212170`] = null;
1432    variantIDToSellingPlanName[`47249239212170`] = null;
1433    variantIDToCompareAtPrice[`47249239212170`] = 957000;
1434    
1435    variantIDToSellingPlanID[`47249239244938`] = null;
1436    variantIDToSellingPlanName[`47249239244938`] = null;
1437    variantIDToCompareAtPrice[`47249239244938`] = 1435500;
1438    
1439    
1440    
1441    variantIDToSellingPlanID[`47249167646858`] = null;
1442    variantIDToSellingPlanName[`47249167646858`] = null;
1443    variantIDToCompareAtPrice[`47249167646858`] = 159500;
1444    
1445    variantIDToSellingPlanID[`47249238720650`] = null;
1446    variantIDToSellingPlanName[`47249238720650`] = null;
1447    variantIDToCompareAtPrice[`47249238720650`] = 478500;
1448    
1449    variantIDToSellingPlanID[`47249238753418`] = null;
1450    variantIDToSellingPlanName[`47249238753418`] = null;
1451    variantIDToCompareAtPrice[`47249238753418`] = 957000;
1452    
1453    variantIDToSellingPlanID[`47249238786186`] = null;
1454    variantIDToSellingPlanName[`47249238786186`] = null;
1455    variantIDToCompareAtPrice[`47249238786186`] = 1435500;
1456    
1457    
1458    
1459    variantIDToSellingPlanID[`50050860712074`] = null;
1460    variantIDToSellingPlanName[`50050860712074`] = null;
1461    variantIDToCompareAtPrice[`50050860712074`] = null;
1462    
1463    variantIDToSellingPlanID[`50050860744842`] = null;
1464    variantIDToSellingPlanName[`50050860744842`] = null;
1465    variantIDToCompareAtPrice[`50050860744842`] = null;
1466    
1467    variantIDToSellingPlanID[`50050860777610`] = null;
1468    variantIDToSellingPlanName[`50050860777610`] = null;
1469    variantIDToCompareAtPrice[`50050860777610`] = null;
1470    
1471    variantIDToSellingPlanID[`50050860810378`] = null;
1472    variantIDToSellingPlanName[`50050860810378`] = null;
1473    variantIDToCompareAtPrice[`50050860810378`] = null;
1474    
1475    variantIDToSellingPlanID[`44751436906634`] = null;
1476    variantIDToSellingPlanName[`44751436906634`] = null;
1477    variantIDToCompareAtPrice[`44751436906634`] = null;
1478    
1479    variantIDToSellingPlanID[`44751436939402`] = null;
1480    variantIDToSellingPlanName[`44751436939402`] = null;
1481    variantIDToCompareAtPrice[`44751436939402`] = 598500;
1482    
1483    variantIDToSellingPlanID[`44751436972170`] = null;
1484    variantIDToSellingPlanName[`44751436972170`] = null;
1485    variantIDToCompareAtPrice[`44751436972170`] = null;
1486    
1487    variantIDToSellingPlanID[`44751437004938`] = null;
1488    variantIDToSellingPlanName[`44751437004938`] = null;
1489    variantIDToCompareAtPrice[`44751437004938`] = null;
1490    
1491    variantIDToSellingPlanID[`44751437037706`] = null;
1492    variantIDToSellingPlanName[`44751437037706`] = null;
1493    variantIDToCompareAtPrice[`44751437037706`] = null;
1494    
1495    variantIDToSellingPlanID[`44751437070474`] = null;
1496    variantIDToSellingPlanName[`44751437070474`] = null;
1497    variantIDToCompareAtPrice[`44751437070474`] = null;
1498    
1499    variantIDToSellingPlanID[`44751437103242`] = null;
1500    variantIDToSellingPlanName[`44751437103242`] = null;
1501    variantIDToCompareAtPrice[`44751437103242`] = null;
1502    
1503    variantIDToSellingPlanID[`44751437136010`] = null;
1504    variantIDToSellingPlanName[`44751437136010`] = null;
1505    variantIDToCompareAtPrice[`44751437136010`] = 1795500;
1506    
1507    variantIDToSellingPlanID[`44751437168778`] = null;
1508    variantIDToSellingPlanName[`44751437168778`] = null;
1509    variantIDToCompareAtPrice[`44751437168778`] = null;
1510    
1511    variantIDToSellingPlanID[`44751437201546`] = null;
1512    variantIDToSellingPlanName[`44751437201546`] = null;
1513    variantIDToCompareAtPrice[`44751437201546`] = null;
1514    
1515    variantIDToSellingPlanID[`44751437234314`] = null;
1516    variantIDToSellingPlanName[`44751437234314`] = null;
1517    variantIDToCompareAtPrice[`44751437234314`] = null;
1518    
1519    variantIDToSellingPlanID[`44751437267082`] = null;
1520    variantIDToSellingPlanName[`44751437267082`] = null;
1521    variantIDToCompareAtPrice[`44751437267082`] = null;
1522    
1523    variantIDToSellingPlanID[`45773488324746`] = null;
1524    variantIDToSellingPlanName[`45773488324746`] = null;
1525    variantIDToCompareAtPrice[`45773488324746`] = null;
1526    
1527    variantIDToSellingPlanID[`45773488357514`] = null;
1528    variantIDToSellingPlanName[`45773488357514`] = null;
1529    variantIDToCompareAtPrice[`45773488357514`] = null;
1530    
1531    variantIDToSellingPlanID[`45773488390282`] = null;
1532    variantIDToSellingPlanName[`45773488390282`] = null;
1533    variantIDToCompareAtPrice[`45773488390282`] = null;
1534    
1535    variantIDToSellingPlanID[`45773488423050`] = null;
1536    variantIDToSellingPlanName[`45773488423050`] = null;
1537    variantIDToCompareAtPrice[`45773488423050`] = null;
1538    
1539    variantIDToSellingPlanID[`47230751473802`] = null;
1540    variantIDToSellingPlanName[`47230751473802`] = null;
1541    variantIDToCompareAtPrice[`47230751473802`] = null;
1542    
1543    variantIDToSellingPlanID[`47230751506570`] = null;
1544    variantIDToSellingPlanName[`47230751506570`] = null;
1545    variantIDToCompareAtPrice[`47230751506570`] = null;
1546    
1547    variantIDToSellingPlanID[`47230751539338`] = null;
1548    variantIDToSellingPlanName[`47230751539338`] = null;
1549    variantIDToCompareAtPrice[`47230751539338`] = null;
1550    
1551    variantIDToSellingPlanID[`47230751572106`] = null;
1552    variantIDToSellingPlanName[`47230751572106`] = null;
1553    variantIDToCompareAtPrice[`47230751572106`] = null;
1554    
1555    
1556    
1557    variantIDToSellingPlanID[`44310716579978`] = null;
1558    variantIDToSellingPlanName[`44310716579978`] = null;
1559    variantIDToCompareAtPrice[`44310716579978`] = null;
1560    
1561    variantIDToSellingPlanID[`44310716612746`] = null;
1562    variantIDToSellingPlanName[`44310716612746`] = null;
1563    variantIDToCompareAtPrice[`44310716612746`] = null;
1564    
1565    variantIDToSellingPlanID[`44740682743946`] = null;
1566    variantIDToSellingPlanName[`44740682743946`] = null;
1567    variantIDToCompareAtPrice[`44740682743946`] = null;
1568    
1569    variantIDToSellingPlanID[`45773486915722`] = null;
1570    variantIDToSellingPlanName[`45773486915722`] = null;
1571    variantIDToCompareAtPrice[`45773486915722`] = null;
1572    
1573    variantIDToSellingPlanID[`46431195070602`] = null;
1574    variantIDToSellingPlanName[`46431195070602`] = null;
1575    variantIDToCompareAtPrice[`46431195070602`] = null;
1576    
1577    variantIDToSellingPlanID[`50007879516298`] = null;
1578    variantIDToSellingPlanName[`50007879516298`] = null;
1579    variantIDToCompareAtPrice[`50007879516298`] = null;
1580    
1581    
1582    
1583    variantIDToSellingPlanID[`46311574896778`] = null;
1584    variantIDToSellingPlanName[`46311574896778`] = null;
1585    variantIDToCompareAtPrice[`46311574896778`] = null;
1586    
1587    variantIDToSellingPlanID[`46311574929546`] = null;
1588    variantIDToSellingPlanName[`46311574929546`] = null;
1589    variantIDToCompareAtPrice[`46311574929546`] = null;
1590    
1591    variantIDToSellingPlanID[`47698783469706`] = null;
1592    variantIDToSellingPlanName[`47698783469706`] = null;
1593    variantIDToCompareAtPrice[`47698783469706`] = null;
1594    
1595    
1596    
1597    variantIDToSellingPlanID[`46311578140810`] = null;
1598    variantIDToSellingPlanName[`46311578140810`] = null;
1599    variantIDToCompareAtPrice[`46311578140810`] = null;
1600    
1601    variantIDToSellingPlanID[`46322328043658`] = null;
1602    variantIDToSellingPlanName[`46322328043658`] = null;
1603    variantIDToCompareAtPrice[`46322328043658`] = null;
1604    
1605    variantIDToSellingPlanID[`46322328076426`] = null;
1606    variantIDToSellingPlanName[`46322328076426`] = null;
1607    variantIDToCompareAtPrice[`46322328076426`] = null;
1608    
1609    variantIDToSellingPlanID[`46322328109194`] = null;
1610    variantIDToSellingPlanName[`46322328109194`] = null;
1611    variantIDToCompareAtPrice[`46322328109194`] = null;
1612    
1613    variantIDToSellingPlanID[`46311578271882`] = null;
1614    variantIDToSellingPlanName[`46311578271882`] = null;
1615    variantIDToCompareAtPrice[`46311578271882`] = null;
1616    
1617    variantIDToSellingPlanID[`46322328141962`] = null;
1618    variantIDToSellingPlanName[`46322328141962`] = null;
1619    variantIDToCompareAtPrice[`46322328141962`] = null;
1620    
1621    variantIDToSellingPlanID[`46322328174730`] = null;
1622    variantIDToSellingPlanName[`46322328174730`] = null;
1623    variantIDToCompareAtPrice[`46322328174730`] = null;
1624    
1625    variantIDToSellingPlanID[`46322328207498`] = null;
1626    variantIDToSellingPlanName[`46322328207498`] = null;
1627    variantIDToCompareAtPrice[`46322328207498`] = null;
1628    
1629    variantIDToSellingPlanID[`47698783699082`] = null;
1630    variantIDToSellingPlanName[`47698783699082`] = null;
1631    variantIDToCompareAtPrice[`47698783699082`] = null;
1632    
1633    variantIDToSellingPlanID[`47698783731850`] = null;
1634    variantIDToSellingPlanName[`47698783731850`] = null;
1635    variantIDToCompareAtPrice[`47698783731850`] = null;
1636    
1637    variantIDToSellingPlanID[`47698783764618`] = null;
1638    variantIDToSellingPlanName[`47698783764618`] = null;
1639    variantIDToCompareAtPrice[`47698783764618`] = null;
1640    
1641    variantIDToSellingPlanID[`47698783797386`] = null;
1642    variantIDToSellingPlanName[`47698783797386`] = null;
1643    variantIDToCompareAtPrice[`47698783797386`] = null;
1644    
1645    
1646    
1647    variantIDToSellingPlanID[`47249165811850`] = null;
1648    variantIDToSellingPlanName[`47249165811850`] = null;
1649    variantIDToCompareAtPrice[`47249165811850`] = 289000;
1650    
1651    variantIDToSellingPlanID[`47249165877386`] = null;
1652    variantIDToSellingPlanName[`47249165877386`] = null;
1653    variantIDToCompareAtPrice[`47249165877386`] = 867000;
1654    
1655    variantIDToSellingPlanID[`47249165910154`] = null;
1656    variantIDToSellingPlanName[`47249165910154`] = null;
1657    variantIDToCompareAtPrice[`47249165910154`] = 1734000;
1658    
1659    variantIDToSellingPlanID[`47249165942922`] = null;
1660    variantIDToSellingPlanName[`47249165942922`] = null;
1661    variantIDToCompareAtPrice[`47249165942922`] = 2601000;
1662    
1663    
1664    
1665    variantIDToSellingPlanID[`47249122754698`] = null;
1666    variantIDToSellingPlanName[`47249122754698`] = null;
1667    variantIDToCompareAtPrice[`47249122754698`] = 289000;
1668    
1669    variantIDToSellingPlanID[`47249122787466`] = null;
1670    variantIDToSellingPlanName[`47249122787466`] = null;
1671    variantIDToCompareAtPrice[`47249122787466`] = 867000;
1672    
1673    variantIDToSellingPlanID[`47249122820234`] = null;
1674    variantIDToSellingPlanName[`47249122820234`] = null;
1675    variantIDToCompareAtPrice[`47249122820234`] = 1734000;
1676    
1677    variantIDToSellingPlanID[`47249122853002`] = null;
1678    variantIDToSellingPlanName[`47249122853002`] = null;
1679    variantIDToCompareAtPrice[`47249122853002`] = 2601000;
1680    
1681    
1682
1683    // cart settings
1684    const cartSettings = {"enable_free_shipping_bar":true,"free_shipping_threshold":1340000,"upsells_title":"","upsells_description":"","upsells":[],"protection_upsell":""};
1685    cartSettings.protection_upsell = null;
1686
1687    const cartTranslations = {
1688        "until_free_shipping": "Verslaðu fyrir aðeins {amount} til að fá",
1689        "free_shipping": "FRÍA SENDINGU",
1690        "free_shipping_unlocked": "Til hamingju! Þú færð"
1691    };
1692</script>
1692
1693
1694
1695</div>
1696<div id="shopify-section-heilsudagar-popup" class="shopify-section">
1697</div>
1698
1699<main>
1700    <div id="shopify-section-template--22413711704202__section_product_v2_R9fnpP" class="shopify-section">
1701
1702
1703
1704
1705
1706<style>
1707    :root {
1708        --pdp-v2-background: #FFFFFF;
1709        --pdp-v2-text-color: #000000;
1710        --pdp-v2-quantity-icon-filter: invert(0);
1711        --pdp-v2-atc-button-background-color: #240605;
1712        --pdp-v2-atc-button-text-color: #f6b9d2;
1713        --pdp-v2-atc-button-icon-fill: #FFFFFF;
1714        --pdp-v2-free-shipping-color: #240605;
1715    
1716        --pdp-v2-junip-review-count-color: #240605;
1717    }
1718
1719    @media (max-width: 1000px) {
1720    
1721    }
1722
1723    [id="template--22413711704202__section_product_v2_R9fnpP"].productV2 {
1724        padding: 16px 24px 64px 24px;
1725        background: "#FFFFFF";
1726        align-items: start;
1727    }
1728
1729    [id="template--22413711704202__section_product_v2_R9fnpP"].productV2.creatine {
1730        grid-template-columns: minmax(0, 1200px) minmax(0, 750px);
1731    }
1732
1733    .productV2Visual {
1734        background-color: #EFEFF1;
1735        min-width: 0;
1736        align-self: start;
1737    }
1738
1739    .productV2Content {
1740        position: sticky;
1741        padding-bottom: 24px;
1742    }
1743
1744    .productV2Layout {
1745        display: grid;
1746        grid-template-columns: minmax(0, 1200px) minmax(0, 638px);
1747        gap: 32px;
1748        align-items: start;
1749    }
1750
1751    .productV2VisualSwiper {
1752        height: auto;
1753        position: relative;
1754    }
1755
1756    .productV2VisualSwiperSlide {
1757        object-fit: contain;
1758        object-position: left;
1759    }
1760
1761    .productV2VisualSwiperNewTag {
1762        z-index: 9999;
1763        position: absolute;
1764        top: 16px;  
1765        right: 16px; 
1766        padding: 8px 12px;
1767        border-radius: 4px;
1768        font-size: 14px;
1769        background-color: #FFFA66;
1770        font-family: "DM Sans", sans-serif;
1771        font-weight: 600;
1772        color: #000000;
1773        margin-left: 8px;
1774        width: max-content;
1775    }
1776
1777    .productV2VisualSwiperLimitedTag {
1778        z-index: 9999;
1779        position: absolute;
1780        top: 16px;  
1781        right: 16px; 
1782        padding: 8px 12px;
1783        border-radius: 4px;
1784        font-size: 14px;
1785        background-color: #c92a3e;
1786        font-family: "DM Sans", sans-serif;
1787        font-weight: 600;
1788        color: #FFFFFF;
1789        margin-left: 8px;
1790        width: max-content;
1791    }
1792
1793    .productV2VisualSwiperDiscountTag {
1794        z-index: 9999;
1795        position: absolute;
1796        top: 16px;  
1797        right: 16px; 
1798        padding: 8px 12px;
1799        border-radius: 4px;
1800        font-size: 14px;
1801        background-color: #FFFA66;
1802        font-family: "DM Sans", sans-serif;
1803        font-weight: 600;
1804        color: #000000;
1805        margin-left: 8px;
1806        width: max-content;
1807    }
1808
1809    .productV2VisualNutritionLabelButton {
1810        display: flex;
1811        align-items: center;
1812        gap: 7px;
1813        color: var(--pdp-v2-text-color);
1814        font-size: 21px;
1815        line-height: 28px;
1816        text-decoration: underline;
1817        justify-content: center;
1818        width: fit-content;
1819        margin: 0 auto;
1820    }
1821
1822    .productV2ContentNutritionLabelButtonMobile {
1823        display: none;
1824        align-items: center;
1825        gap: 7px;
1826        color: var(--pdp-v2-text-color);
1827        font-size: 21px;
1828        line-height: 28px;
1829        text-decoration: underline;
1830        justify-content: center;
1831        width: fit-content;
1832        margin: 0 auto;
1833    }
1834
1835    .productV2VisualNutritionLabelDialog[open] {
1836        justify-content: center;
1837        padding: 20px;
1838        z-index: 9999;
1839    }
1840
1841    .productVisualV2NutritionLabelDialogWrapper {
1842        display: flex;
1843        flex-direction: column;
1844        position: relative;
1845        background: white;
1846        padding: 20px 30px 36px 30px;
1847        gap: 15px;
1848        height: fit-content;
1849        box-shadow: 0 4px 4px 0 #00000040;
1850    }
1851
1852    .productV2VisualNutritionLabelDialogCloseButton {
1853        font-size: 21px;
1854        line-height: 28px;
1855        color: black;
1856        text-align: right;
1857        width: 100%;
1858        cursor: pointer;
1859    }
1860
1861    .productV2Content {
1862        top: 0px;
1863    }
1864
1865    .productV2ContentTitle {
1866        font-size: 44px;
1867        margin: 0 0 6px;
1868        font-family: Dela Gothic One, sans-serif;
1869        font-weight: 400;
1870    }
1871
1872    .productV2ContentReviews {
1873    }
1874
1875    .productV2ContentReviews .junip-product-summary-review-count {
1876        color: "#27D808";
1877        transform: translateY(2px);
1878    }
1879
1880    .productV2ReviewsMobile {
1881        display: none;
1882    }
1883
1884    .productV2ReviewsMobile .junip-product-summary-review-count {
1885        color: var(--pdp-v2-junip-review-count-color);
1886        transform: translateY(2px);
1887    }
1888
1889    .productV2TitleMobile {
1890        display: none;
1891        font-size: 28px;
1892        margin: 0 0 6px;
1893        font-family: Dela Gothic One, sans-serif;
1894        font-weight: 400;
1895        color: #262626;
1896        padding-left: 16px;
1897    }
1898
1899    .productV2ContentDescription {
1900        margin-bottom: 21px;
1901        font-size: 18px;
1902        line-height: 28px;
1903        color: var(--pdp-v2-text-color);
1904    }
1905
1906
1907    .productV2ContentDescriptionMobile {
1908        display: none;
1909        margin-bottom: 24px;
1910        font-size: 18px;
1911        line-height: 28px;
1912        color: var(--pdp-v2-text-color);
1913    }
1914
1915    .productV2ContentShortDesc {
1916        font-family: "Inter", sans-serif;
1917        font-size: 14px;
1918        line-height: 1.5;
1919        color: #6B7280;
1920        margin: 12px 0 16px 0;
1921    }
1922
1923    .productV2ShortDescMobile {
1924        display: none;
1925    }
1926
1927    .productV2ContentOptions {
1928
1929    }
1930
1931
1932    .productV2ContentPurchaseOptions {
1933        display: flex;
1934        flex-direction: column;
1935        gap: 8px;
1936        margin-bottom: 16px;
1937    }
1938
1939    .productV2ContentPurchaseOptionInput {
1940        display: none;
1941    }
1942
1943    .productV2ContentPurchaseOptionInput:checked + .productV2ContentPurchaseOptionLabel {
1944        border: 1px solid black;
1945        background-color: #FFFFFF; 
1946    }
1947
1948    .productV2ContentPurchaseOptionLabel {
1949        padding: 16px 20px;
1950        border-radius: 8px;
1951        background-color: #F5F5F5;
1952        display: grid;
1953        grid-template-columns: 1fr max-content;
1954        align-items: center;
1955        cursor: pointer;
1956        flex-wrap: wrap;
1957        font-family: "Inter", sans-serif;
1958    }
1959
1960    .productV2ContentPurchaseOptionLabelName {
1961        font-size: 16px;
1962        font-weight: 500;
1963        color: #333333;
1964        display: flex;
1965    }
1966
1967    .productV2ContentPurchaseOptionLabelPrices {
1968        display: grid;
1969        grid-template-columns: max-content 1fr;
1970        align-items: center;
1971        column-gap: 10px;
1972    }
1973
1974    .productV2ContentPurchaseOptionLabelPricesCompare {
1975        font-size: 16px;
1976        font-weight: 600;
1977        color: #6E6E6E;
1978        text-decoration: line-through;
1979        grid-column: 1;
1980    }
1981
1982    .productV2ContentPurchaseOptionLabelPricesReal {
1983        font-size: 16px;
1984        font-weight: 600;
1985        grid-column: 2;
1986        text-align: right;
1987    }
1988
1989    .productV2ContentPurchaseOptionLabelPricesPerStick {
1990        font-size: 12px;
1991        grid-column: 2;
1992    }
1993
1994    .productV2ContentAtcButton {
1995        position: sticky;
1996        bottom: 12px;
1997        z-index: 10;
1998        border-radius: 100vh;
1999        border: 1px solid #000;
2000        color: #FFFFFF;
2001        background-color: #1F1F1F;
2002        font-size: 16px;
2003        font-weight: 400;
2004        display: flex;
2005        justify-content: space-between;
2006        align-items: center;
2007        width: 100%;
2008        max-width: 100%;
2009        padding: 26px 32px;
2010        font-family: "Inter", sans-serif;
2011    }
2012
2013    .productV2ContentAtcButton:disabled {
2014        opacity: 0.6;
2015        cursor: not-allowed;
2016    }
2017
2018    .productV2ContentAtcButton.loading::after {
2019        border-top-color: #FFFFFF;
2020    }
2021
2022    .productV2VisualVariantGallery {
2023        display: grid;
2024        grid-template-columns: repeat(2, minmax(0, 1fr));
2025        gap: 32px;
2026        padding-top: 32px;
2027        background-color: #FFFFFF;
2028    }
2029
2030
2031/*TODO*/
2032.productV2VisualSwiper { height: auto; }
2033.productV2VisualSwiper .swiper-wrapper { height: auto; }
2034.productV2VisualSwiper .swiper-wrapper img { height: 80%; }
2035.productV2VisualSwiper .swiper-slide { height: auto; }  /* overrides Swiper’s height:100% */
2036.productV2VisualSwiper img { width: 100%; height: auto; display: block; }
2037
2038.productV2VisualDescriptionMobile { 
2039    display: none;
2040    padding-top: 48px;
2041    background-color: white;
2042    color: #3A3A3A;
2043    font-family: "DM Sans", sans-serif;
2044    font-size: 18px;
2045    font-weight: 300;
2046    padding: 16px;
2047}
2048
2049
2050.productV2VisualDescriptionDesktop { 
2051    padding-top: 48px;
2052    background-color: white;
2053    color: #3A3A3A;
2054    font-family: "DM Sans", sans-serif;
2055    font-size: 18px;
2056    font-weight: 300;
2057}
2058
2059/* Each row */
2060.pdp-acc{
2061  border-top: 1px solid #E6E6E6;
2062  padding: 14px 0;
2063}
2064.pdp-acc:first-child { border-top: none; }
2065.pdp-acc:last-child { border-bottom: none; }
2066
2067/* Hide default disclosure arrow */
2068.pdp-acc summary {
2069  list-style: none;
2070  cursor: pointer;
2071  font-weight: 300;
2072  font-size: 24px;
2073  line-height: 1.4;
2074  display: flex;
2075  align-items: center;
2076  position: relative;
2077  padding-right: 28px;
2078  color: #1f1f1f;
2079  font-family: "DM Sans", sans-serif;
2080}
2081.pdp-acc summary::-webkit-details-marker { display: none; }
2082
2083/* The + icon on the right */
2084.pdp-acc summary::after,
2085.pdp-acc summary::before {
2086  content: "";
2087  position: absolute;
2088  right: 2px;
2089  top: 50%;
2090  width: 22px;
2091  height: 2px;
2092  background: #1f1f1f;
2093  transform: translateY(-50%);
2094  transition: transform 180ms ease, opacity 180ms ease;
2095}
2096.pdp-acc summary::before { transform: translateY(-50%) rotate(90deg); } /* vertical bar */
2097
2098.pdp-acc[open] summary::before { transform: translateY(-50%) rotate(45deg); }
2099.pdp-acc[open] summary::after  { transform: translateY(-50%) rotate(-45deg); }
2100
2101/* Panel content */
2102.pdp-acc__panel {
2103  margin-top: 10px;
2104  color: #1f1f1f;
2105  font-size: 16px;
2106}
2107
2108.pdp-acc__panel b,
2109.pdp-acc__panel strong {
2110    color:#1f1f1f;
2111    font-weight:700;
2112}
2113
2114/* (Nice-to-have) respect reduced motion */
2115@media (prefers-reduced-motion: reduce) {
2116  .pdp-acc summary::after { transition: none; }
2117}
2118
2119.pdp-acc[data-open="true"] summary::after {
2120  content: "×";
2121  transform: translateY(-50%); /* no rotation = consistent size */
2122}
2123
2124
2125
2126.sticky-cart-footer {
2127    z-index: 9999;
2128    position: fixed;
2129    width: 100%;
2130    height: 90px;
2131    background-color: white;
2132    bottom: 0px;
2133    right: 0px;
2134    left: 0px;
2135    display: flex;
2136    align-items: center;
2137    justify-content: space-between;
2138    padding: 12px;
2139}
2140
2141.productV2ContentAtcButtonStickyCart {
2142    border-radius: 100vh;
2143    border: 1px solid #000;
2144    color: #FFFFFF;
2145    background-color: #1F1F1F;
2146    font-size: 14px;
2147    font-weight: 600;
2148    display: flex;
2149    justify-content: space-between;
2150    align-items: center;
2151    max-width: 100%;
2152    padding: 16px 24px;
2153    width: 260px;
2154    font-family: "DM Sans", sans-serif;
2155}
2156
2157.productV2ContentAtcButtonStickyCart:disabled {
2158    opacity: 0.6;
2159    cursor: not-allowed;
2160}
2161
2162.productV2ContentAtcButtonStickyCart.loading::after {
2163    border-top-color: #FFFFFF;
2164}
2165
2166.mobile-sticky-checkout-button:disabled {
2167    opacity: 0.6;
2168    cursor: not-allowed;
2169}
2170
2171.mobile-sticky-checkout-button.loading::after {
2172    border-top-color: #FFFFFF;
2173}
2174
2175
2176
2177.sticky-cart-wrapper {
2178    width: 90px;
2179}
2180
2181.sticky-cart-footer-product {
2182    display: flex;
2183    align-items: center;
2184}
2185
2186.sticky-cart-footer-product-name {
2187    margin-left: 16px;
2188    display: flex;
2189    font-size: 16px;
2190    color: #0F0F0F;
2191    font-family: "Inter", sans-serif;
2192    font-weight: 600;
2193}
2194
2195.sticky-cart-footer-product-quantity {
2196    margin-left: 16px;
2197    display: flex;
2198    font-size: 16px;
2199    color: #929292;
2200    font-family: "Inter", sans-serif;
2201    font-weight: 600;
2202}
2203
2204.sticky-cart-footer {
2205  position: fixed;
2206  left: 0;
2207  right: 0;
2208  bottom: env(safe-area-inset-bottom, 0);
2209  transform: translateY(100%);
2210  transition: transform 200ms ease;
2211  z-index: 1000; /* above content */
2212  pointer-events: none; /* avoid intercepting clicks while hidden */
2213}
2214
2215/* Visible state */
2216.sticky-cart-footer.is-visible {
2217  transform: translateY(0);
2218  pointer-events: auto;
2219}
2220
2221#sticky-atc-price {
2222    margin-left: 3px;
2223}
2224
2225#mobile-sticky-checkout-container {
2226    display: none;
2227}
2228
2229.mobile-sticky-checkout-button {
2230    border-radius: 100vh;
2231    border: 1px solid #000;
2232    color: #FFFFFF;
2233    background-color: #1F1F1F;
2234    font-size: 14px;
2235    font-weight: 400;
2236
2237    display: flex;
2238    align-items: center;
2239    justify-content: space-between;
2240
2241    width: 100%;
2242    max-width: 100%;
2243    padding: 24px 32px;
2244    font-family: "Inter", sans-serif;
2245}
2246
2247.mobile-sticky-checkout-button {
2248  transition: transform 180ms ease, opacity 180ms ease;
2249}
2250.mobile-sticky-checkout-button.is-hidden {
2251  transform: translateY(120%);
2252  opacity: 0;
2253  pointer-events: none;
2254}
2255
2256
2257/* hide the native radio (keep it focusable) */
2258.productV2ContentPurchaseOptionInput{
2259  position:absolute; /* or visually-hidden pattern */
2260  opacity:0;
2261}
2262
2263/* position the icon container on the right */
2264.productV2ContentPurchaseOptionLabel{
2265  position:relative;
2266  cursor:pointer;
2267}
2268.radioIcon{
2269  right:16px;
2270  width:24px; height:24px;
2271  display:inline-block;
2272}
2273
2274/* default: show OFF, hide ON */
2275.radioIcon__off{ display:block; }
2276.radioIcon__on{ display:none; }
2277
2278/* when checked, flip them */
2279.productV2ContentPurchaseOptionInput:checked
2280  + .productV2ContentPurchaseOptionLabel .radioIcon__off{ display:none; }
2281.productV2ContentPurchaseOptionInput:checked
2282  + .productV2ContentPurchaseOptionLabel .radioIcon__on{ display:block; }
2283
2284
2285
2286/* Sub card layout (Liquid IV style) */
2287.sub-card {
2288    display: flex !important;
2289    flex-direction: column;
2290    padding-top: 28px !important;
2291    position: relative;
2292}
2293.sub-card__top {
2294    display: grid;
2295    grid-template-columns: 1fr max-content;
2296    align-items: center;
2297    width: 100%;
2298}
2299.sub-card__perks {
2300    display: flex;
2301    flex-direction: column;
2302    gap: 6px;
2303    margin-top: 12px;
2304    font-size: 13px;
2305    font-family: "Inter", sans-serif;
2306    color: #333;
2307    align-items: flex-start;
2308    width: 100%;
2309}
2310.sub-card__perk {
2311    display: flex;
2312    align-items: center;
2313    gap: 6px;
2314}
2315.sub-card__perk[hidden] {
2316    display: none !important;
2317}
2318
2319.popular-tag-red {
2320    position: absolute;
2321    top: 0px;
2322    right: 0px;
2323    font-size: 13px;
2324    font-weight: 500;
2325    padding: 2px 4px;
2326    border-bottom-left-radius: 4px;
2327    background-color: #FFCAC2;
2328    border-top-right-radius: 8px;
2329}
2330
2331.tag-15-green-desktop {
2332    background-color: #DCF9B8;
2333    font-size: 13px;
2334    padding: 2px 4px;
2335    border-radius: 4px;
2336    margin-left: 6px;"
2337}
2338
2339.tag-15-green-mobile {
2340    display: none;
2341}
2342
2343
2344.productV2ContentPurchaseOptionLabelPricesAndRadio {
2345    display: flex; 
2346    font-size: 12px; 
2347    gap: 16px;
2348}
2349.productV2ContentPurchaseOptionLabelPricesAndRadioSub {
2350    display: flex;
2351    font-size: 12px;
2352    gap: 16px;
2353}
2354
2355
2356/* Optional: keep content from being covered while visible (only on larger screens) */
2357@media (min-width: 768px) {
2358  body.has-sticky-cart-space {
2359    padding-bottom: 88px; /* height of sticky footer; adjust to your exact height */
2360  }
2361}
2362
2363
2364
2365
2366
2367
2368    @media (max-width: 1000px) {
2369        [id="template--22413711704202__section_product_v2_R9fnpP"].productV2 {
2370            padding: 0px 0px 56px;
2371            grid-template-columns: 1fr;
2372            gap: 0;
2373        }
2374
2375        .productV2Layout {
2376            grid-template-columns: 1fr;
2377            gap: 0px;
2378        }
2379
2380        .productV2Visual {
2381            padding: 16px;
2382            background-color: #FFFFFF;
2383        }
2384
2385        .productV2VisualVariantGallery {
2386            display: grid;
2387            grid-template-columns: repeat(4, minmax(0, 1fr));
2388            gap: 8px;
2389            background-color: #FFFFFF;
2390            padding-top: 12px;
2391        }
2392
2393        img.productV2VisualSwiperSlide {
2394            background-color: #EFEFF1;
2395        }
2396
2397        [id="template--22413711704202__section_product_v2_R9fnpP"].productV2.creatine {
2398            grid-template-columns: 1fr;
2399        }
2400
2401        .productV2VisualNutritionLabelButton {
2402            display: none;
2403        }
2404
2405        .productV2VisualSwiper {
2406        }
2407
2408        .productV2Content {
2409            padding: 0 16px;
2410        }
2411
2412        .productV2ContentTitle {
2413            display: none;
2414        }
2415
2416        .productV2ContentReviews {
2417            display: none;
2418        }
2419
2420        .productV2ReviewsMobile {
2421            display: block;
2422            padding-left: 16px;
2423        }
2424
2425        .productV2TitleMobile {
2426            display: block;
2427        }
2428
2429        .productV2ContentDescription {
2430            display: none;
2431        }
2432
2433        .productV2ContentShortDesc {
2434            display: none;
2435        }
2436
2437        .productV2ShortDescMobile {
2438            display: block;
2439            font-family: "Inter", sans-serif;
2440            font-size: 14px;
2441            line-height: 1.5;
2442            color: #6B7280;
2443            margin: 8px 16px 12px;
2444        }
2445
2446        .productV2ContentOptions {
2447            margin-bottom: 24px;
2448            
2449        }
2450
2451        .productV2ContentPurchaseOptions {
2452            margin-bottom: 24px;
2453        }
2454
2455        .productV2ContentPurchaseOptionLabel {
2456            column-gap: 10px;
2457            flex-wrap: nowrap;
2458        }
2459
2460        .productV2ContentPurchaseOptionLabelName {
2461            font-size: 16px;
2462            display: flex;
2463        }
2464
2465        .productV2ContentAtcButton {
2466            /* visible on mobile as fallback — sticky bar is primary */
2467        }
2468
2469        .productV2ContentDescriptionMobile {
2470            
2471        }
2472
2473        .productV2ContentNutritionLabelButtonMobile {
2474      
2475        }
2476
2477        .productV2.energy .productV2Visual {
2478            order: 1;
2479        }
2480
2481        .productV2.energy .productV2TitleMobile {
2482            order: 2;
2483        }
2484
2485        .productV2.energy .productV2ReviewsMobile {
2486            order: 3;
2487        }
2488
2489        .productV2.energy .productV2ShortDescMobile {
2490            order: 4;
2491        }
2492
2493        .productV2.energy .productV2Content {
2494            order: 5;
2495        }
2496
2497        .productV2VisualDescriptionDesktop { 
2498            display: none;
2499        }
2500
2501        .productV2VisualDescriptionMobile { 
2502            display: block;
2503        }
2504
2505        .sticky-cart-footer {
2506            display: none;
2507        }
2508
2509        #mobile-sticky-checkout-container {
2510            display: block;
2511            position: fixed;
2512            bottom: 0px;
2513            z-index: 64;
2514            padding: 8px;
2515            width: 100%;
2516        }
2517
2518        .popular-tag-red {
2519            position: absolute;
2520            top: 0px;
2521            left: 0px;
2522            font-size: 13px;
2523            font-weight: 500;
2524            padding: 2px 4px;
2525            border-bottom-right-radius: 4px;
2526            background-color: #FFCAC2;
2527            border-top-left-radius: 8px;
2528            width: max-content;
2529            border-top-right-radius: 0px;
2530        }
2531
2532        .tag-15-green-desktop {
2533            display: none;
2534        }
2535        .tag-15-green-mobile {
2536            display: block;
2537            background-color: #DCF9B8;
2538            font-size: 13px;
2539            padding: 2px 4px;
2540            border-radius: 4px;
2541            margin-left: 6px;"
2542            width: max-content;
2543        }
2544
2545        .productV2ContentPurchaseOptionLabel {
2546            padding-right: 0px;
2547            padding: 32px 18px 32px 18px;
2548            font-size: 16px;
2549        }
2550
2551        .productV2ContentPurchaseOptionLabelPricesPerStick {
2552            font-size: 11px;
2553            grid-column: 1 / -1;
2554            text-align: right;
2555        }
2556        .productV2ContentPurchaseOptionLabelPricesReal {
2557            font-size: 14px;
2558        }
2559        .productV2ContentPurchaseOptionLabelPricesCompare {
2560            font-size: 14px;
2561        }
2562        .productV2ContentPurchaseOptionLabelName {
2563            font-size: 14px;
2564        }
2565        .productV2ContentPurchaseOptionLabelPrices {
2566            column-gap: 6px;
2567        }
2568
2569        .productV2ContentPurchaseOptionLabelPricesAndRadio {
2570            display: flex; 
2571            font-size: 12px; 
2572            gap: 8px;
2573        }
2574        .productV2ContentPurchaseOptionLabelPricesAndRadioSub {
2575            display: flex; 
2576            font-size: 12px; 
2577            gap: 8px;
2578        }
2579
2580        .productV2VisualSwiper .swiper-wrapper img { height: 398px; }
2581    }
2582
2583
2584
2585
2586
2587/* --- Mobile 3-up thumbnail carousel --- */
2588.pdpv2-mobile-thumb-carousel {
2589  display: none; /* default hidden on desktop */
2590  align-items: center;
2591  gap: 8px;
2592  padding-top: 12px;
2593  background: #fff;
2594}
2595.pdpv2-thumb-btn {
2596  border: 0;
2597  background: #EFEFF1;
2598  width: 42px; height: 42px;
2599  border-radius: 999px;
2600  display: inline-flex; align-items: center; justify-content: center;
2601}
2602.pdpv2-thumb-viewport {
2603  display: grid;
2604  grid-template-columns: repeat(3, 1fr);
2605  gap: 8px;
2606  list-style: none; padding: 0; margin: 0; width: 80%;
2607}
2608.pdpv2-thumb-viewport li {
2609  position: relative;
2610  background-color: #EFEFF1;
2611  align-content: center;
2612}
2613.pdpv2-thumb-viewport img {
2614  display: block; width: 100%; height: auto; border-radius: 6px; background:#EFEFF1;
2615}
2616.pdpv2-thumb-viewport li.is-selected::after {
2617  content: ""; position: absolute; inset: 0;
2618  border: 2px solid #6C6C6C; border-radius: 6px; pointer-events: none;
2619}
2620
2621/* Show our mobile carousel and hide the old grid only on mobile */
2622@media (max-width: 1000px) {
2623  .productV2VisualVariantGallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding-top: 12px; } /* 4-up grid on mobile */
2624  .pdpv2-mobile-thumb-carousel { display: none !important; }   /* carousel off on mobile */
2625}
2626
2627
2628/* Trust strip */
2629.pdp-trust-strip {
2630    display: flex;
2631    align-items: center;
2632    justify-content: center;
2633    gap: 16px;
2634    padding: 16px 0 8px;
2635    font-family: "DM Sans", sans-serif;
2636    font-size: 13px;
2637    font-weight: 500;
2638    color: #6E6E6E;
2639    flex-wrap: wrap;
2640}
2641
2642.pdp-trust-strip__item {
2643    display: flex;
2644    align-items: center;
2645    gap: 5px;
2646    white-space: nowrap;
2647}
2648
2649.pdp-trust-strip__sep {
2650    color: #D0D0D0;
2651    font-size: 10px;
2652}
2653
2654.pdp-trust-strip__cancel {
2655    display: none;
2656    text-align: center;
2657    font-family: "DM Sans", sans-serif;
2658    font-size: 13px;
2659    color: #6E6E6E;
2660    padding-top: 8px;
2661}
2662
2663@media (max-width: 1000px) {
2664    .pdp-trust-strip {
2665        gap: 12px;
2666        font-size: 12px;
2667        justify-content: center;
2668    }
2669    .pdp-trust-strip__sep {
2670        display: none;
2671    }
2672}
2673
2674
2675/* ═══════════ PDP ÁSKRIFT PANEL (pdp-sub) ═══════════ */
2676.productV2ContentPurchaseOption.subscription { position: relative; }   /* re-added (old .subscription opacity/pointer-events rule deleted) */
2677
2678/* Collapse primitive: grid-template-rows 0fr → 1fr animates to the intrinsic height without
2679   measuring. The inner element MUST be min-height:0 + overflow:hidden. visibility is delayed on
2680   close so nothing inside is tabbable/tappable while collapsed. Safari <16 / Chrome <107 snap. */
2681.pdp-sub__collapse { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 320ms cubic-bezier(.2,.7,.2,1); }
2682.pdp-sub__collapse > .pdp-sub__inner {
2683  min-height: 0; overflow: hidden; visibility: hidden; opacity: 0; transform: translateY(-6px);
2684  transition: visibility 0s linear 320ms, opacity 200ms ease, transform 320ms cubic-bezier(.2,.7,.2,1);
2685}
2686.pdp-sub__collapse.is-open { grid-template-rows: 1fr; }
2687.pdp-sub__collapse.is-open > .pdp-sub__inner { visibility: visible; opacity: 1; transform: none; transition-delay: 0s, 40ms, 0s; }
2688
2689/* Magn wrapper: open by default, collapses in Áskrift mode (JS removes .is-open) */
2690.pdp-sub__magn > .pdp-sub__inner { transform: none; }
2691/* The wrapper is a grid box + BFC, so the fieldset's own 12px margins no longer collapse with its
2692   neighbours. TOP: the Bragð fieldset's 12px bottom margin already supplies the gap → 0. BOTTOM: live
2693   collapsed the fieldset's 12px through .productV2ContentOptions (no desktop margin) to reach the "Kaupa"
2694   legend, so keep 12px INSIDE the collapsing box — restored in Stök mode, gone with Magn in Áskrift mode.
2695   ≤1000px: .productV2ContentOptions { margin-bottom: 24px } supplies the bottom gap exactly as live
2696   (max(12,24) = 24) → bottom 0 there; the 4px top keeps the snippet's :not(:last-of-type) 16-vs-12 spacing. */
2697.pdp-sub__magn .productV2ContentOption.size { margin-top: 0; margin-bottom: 12px; }
2698
2699/* Card ↔ panel attachment. The card keeps its 1px black frame; its bottom edge turns grey and
2700   square while open so card + body read as one box with a thin divider (r8iant). */
2701.sub-card { transition: border-radius 200ms ease, border-color 200ms ease; }
2702.productV2.pdp-sub--open .productV2ContentPurchaseOptionInput[value="subscription"]:checked + .sub-card {
2703  border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-bottom-color: #E6E6E6;
2704}
2705.pdp-sub__body {
2706  border: 1px solid #000; border-top: 0; border-radius: 0 0 8px 8px; background: #FFF;
2707  padding: 16px 20px 18px; display: flex; flex-direction: column; gap: 14px;
2708  font-family: "Inter", sans-serif; color: #1F1F1F;
2709}
2710.pdp-sub__head { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
2711.pdp-sub__hint { font-size: 12px; color: #6E6E6E; font-family: "Inter", sans-serif; }
2712
2713/* Headings / note / counter / status */
2714.pdp-sub__heading { font-family: "DM Sans", sans-serif; font-weight: 600; font-size: 15px; color: #333; margin: 0; }
2715.pdp-sub__note { font-size: 12px; color: #6B7280; margin: -6px 0 0; }
2716.pdp-sub__rows-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
2717.pdp-sub__counter { font-size: 12px; color: #6E6E6E; white-space: nowrap; }
2718.pdp-sub__counter.is-short { color: #A02100; font-weight: 600; }
2719.pdp-sub__status { font-size: 12px; color: #333; min-height: 16px; margin: -8px 0 0; transition: opacity 200ms ease; }
2720.pdp-sub__status:empty { opacity: 0; }
2721.pdp-sub__status.is-warn { color: #A02100; }
2722.pdp-sub__status button { all: unset; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; color: #1F1F1F; margin-left: 6px; font: inherit; }
2723
2724/* Tier chips */
2725.pdp-sub__tiers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding-top: 8px; }
2726.pdp-sub__tiers[data-count="4"] { grid-template-columns: repeat(4, 1fr); }   /* creatine 1/2/3/4 */
2727.pdp-sub__tier {
2728  position: relative; background: #F5F5F5; border: 1px solid transparent; border-radius: 8px;
2729  padding: 14px 8px 12px; text-align: center; cursor: pointer; font-family: "Inter", sans-serif;
2730  display: flex; flex-direction: column; align-items: center; gap: 2px; color: #1F1F1F;
2731  transition: background 150ms ease, border-color 150ms ease;
2732}
2733.pdp-sub__tier.is-selected { background: #FFF; border-color: #000; }
2734.pdp-sub__tier-n { font-size: 22px; font-weight: 700; line-height: 1; }
2735.pdp-sub__tier-unit { font-size: 12px; color: #333; }
2736.pdp-sub__tier-sticks { font-size: 11px; color: #6E6E6E; }
2737.pdp-sub__tier-pill { margin-top: 6px; font-size: 12px; font-weight: 500; background: #DCF9B8; border-radius: 4px; padding: 2px 6px; }
2738.pdp-sub__tier-gift { font-size: 11px; color: #333; }
2739.pdp-sub__tier-badge {
2740  position: absolute; top: -9px; left: 50%; transform: translateX(-50%); white-space: nowrap;
2741  font-size: 11px; font-weight: 500; background: #FFCAC2; padding: 1px 6px; border-radius: 4px;
2742}
2743.pdp-sub__tier-badge.is-best { background: #D4EDFF; }   /* Magn snippet's .best-deal blue (JS toggles per schedule, not per index) */
2744@keyframes pdp-sub-pop { 0% { transform: scale(1); } 45% { transform: scale(1.06); } 100% { transform: scale(1); } }
2745.pdp-sub__tier--pop { animation: pdp-sub-pop 360ms ease; }
2746
2747/* Savings hero */
2748.pdp-sub__hero { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; background: #F5F5F5; border-radius: 8px; }
2749.pdp-sub__hero-row { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
2750.pdp-sub__hero-label { font-size: 14px; color: #333; }
2751.pdp-sub__hero-amount b { font-size: 22px; font-weight: 700; letter-spacing: -.3px; }
2752.pdp-sub__hero-amount small, .pdp-sub__hero-prices small { font-size: 13px; color: #6E6E6E; margin-left: 2px; }
2753.pdp-sub__pct { margin-left: auto; font-size: 13px; font-weight: 600; background: #DCF9B8; border-radius: 4px; padding: 2px 6px; transition: background 300ms ease; }
2754.pdp-sub__pct.is-flash { background: #B9F27E; }
2755.pdp-sub__hero-prices { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; font-size: 15px; }
2756.pdp-sub__hero-prices s { color: #6E6E6E; }
2757.pdp-sub__hero-prices strong { font-weight: 600; }
2758.pdp-sub__hero-stick { font-size: 12px; color: #6E6E6E; }
2759.pdp-sub__meter { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; margin-top: 4px; }
2760.pdp-sub__seg { height: 6px; border-radius: 999px; background: #E6E6E6; position: relative; overflow: hidden; }
2761.pdp-sub__seg::after { content: ""; position: absolute; inset: 0; background: #44d62c; transform: scaleX(0); transform-origin: left; transition: transform 320ms cubic-bezier(.2,.7,.2,1); }
2762.pdp-sub__seg.is-on::after { transform: scaleX(1); }
2763.pdp-sub__meter-labels { display: grid; grid-template-columns: repeat(3, 1fr); font-size: 11px; color: #6E6E6E; text-align: center; }
2764.pdp-sub__meter-labels span.is-on { color: #1F1F1F; font-weight: 600; }
2765.pdp-sub__meter-labels i { font-style: normal; }
2766.pdp-sub__meter[hidden], .pdp-sub__meter-labels[hidden] { display: none; }   /* flat schedule (creatine): the class display:grid would beat the UA [hidden] rule */
2767.pdp-sub__nudge { all: unset; align-self: flex-start; cursor: pointer; font-size: 13px; color: #1F1F1F; text-decoration: underline; text-underline-offset: 2px; margin-top: 2px; font-family: "Inter", sans-serif; }
2768.pdp-sub__nudge:disabled { text-decoration: none; color: #087045; cursor: default; }
2769
2770/* Flavour rows + steppers */
2771.pdp-sub__rows { display: flex; flex-direction: column; border-top: 1px solid #E6E6E6; }
2772.pdp-sub__row { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid #E6E6E6; }
2773.pdp-sub__thumb { width: 44px; height: 44px; border-radius: 6px; background: #F5F5F5; box-shadow: inset 3px 0 0 var(--accent, #E6E6E6); overflow: hidden; }
2774.pdp-sub__thumb img { width: 100%; height: 100%; object-fit: contain; display: block; }
2775.pdp-sub__row-main { min-width: 0; }
2776.pdp-sub__row-name { font-size: 14px; font-weight: 500; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
2777.pdp-sub__row.is-active .pdp-sub__row-name::after { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent, #1F1F1F); }
2778.pdp-sub__row-meta { font-size: 12px; color: #6E6E6E; display: flex; gap: 8px; flex-wrap: wrap; }
2779.pdp-sub__row-price { color: #1F1F1F; font-weight: 600; }
2780.pdp-sub__row-price s { color: #6E6E6E; font-weight: 400; margin-right: 4px; }
2781.pdp-sub__stepper { display: inline-flex; align-items: center; gap: 6px; }
2782.pdp-sub__step {
2783  width: 40px; height: 40px; border-radius: 999px; border: 1px solid #D0D0D0; background: #FFF;
2784  font-size: 18px; line-height: 1; cursor: pointer; font-family: "Inter", sans-serif; color: #1F1F1F;
2785  display: inline-flex; align-items: center; justify-content: center; padding: 0;
2786  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
2787}
2788.pdp-sub__step:hover:not(:disabled):not([aria-disabled="true"]) { background: #1F1F1F; color: #FFF; border-color: #1F1F1F; }
2789.pdp-sub__step:disabled, .pdp-sub__step[aria-disabled="true"] { opacity: .35;
2789 cursor: not-allowed; }
2790.pdp-sub__count { min-width: 22px; text-align: center; font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; color: #6E6E6E; }   /* 5.1:1 on white */
2791.pdp-sub__row.has-qty .pdp-sub__count { color: #1F1F1F; }
2792.pdp-sub__row.is-soldout .pdp-sub__thumb, .pdp-sub__row.is-soldout .pdp-sub__row-meta { opacity: .45; }
2793.pdp-sub__soldout { font-size: 11px; font-weight: 600; background: #FFD6CC; color: #A02100; border-radius: 12px; padding: 2px 6px; font-family: "DM Sans", sans-serif; }
2794.pdp-sub__soldout[hidden] { display: none; }
2795.pdp-sub--single .pdp-sub__step { display: none; }
2796.pdp-sub--single .pdp-sub__count { font-size: 14px; color: #1F1F1F; }
2797
2798/* Gift row (6/9) */
2799.pdp-sub__gift-wrap > .pdp-sub__inner { transform: none; }
2800/* Collapsed, the wrapper is a zero-height flex item that would still consume BOTH body gaps (a 28px void
2801   between the status line and "Sent" at tier 3). Cancel one gap while closed; animate it with the collapse. */
2802.pdp-sub__gift-wrap { margin-top: -14px; transition: grid-template-rows 320ms cubic-bezier(.2,.7,.2,1), margin-top 320ms cubic-bezier(.2,.7,.2,1); }
2803.pdp-sub__gift-wrap.is-open { margin-top: 0; }
2804.pdp-sub__gift { display: grid; grid-template-columns: 48px 1fr auto; gap: 12px; align-items: center; background: #F5F5F5; border-radius: 8px; padding: 10px 12px; }
2805.pdp-sub__gift-img { width: 48px; height: 48px; object-fit: contain; }
2806.pdp-sub__gift-kicker { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: #087045; }   /* 5.6:1 on #F5F5F5 */
2807.pdp-sub__gift-name { font-size: 14px; font-weight: 600; }
2808.pdp-sub__gift-sub { font-size: 12px; color: #6E6E6E; }
2809.pdp-sub__gift-price { text-align: right; font-size: 13px; }
2810.pdp-sub__gift-price s { display: block; color: #6E6E6E; }
2811.pdp-sub__gift-price strong { color: #087045; }
2812
2813/* Frequency + builder link */
2814.pdp-sub__freq-wrap { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #333; }
2815.pdp-sub__freq {
2816  appearance: none; -webkit-appearance: none; border: 1px solid #D0D0D0; border-radius: 999px;
2817  background: #FFF url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'><path d='M1 1.5L6 6.5L11 1.5' stroke='%23333' stroke-width='2' stroke-linecap='round'/></svg>") no-repeat right 12px center;
2818  padding: 8px 32px 8px 14px; font: 500 13px "Inter", sans-serif; color: #333; cursor: pointer;
2819}
2820.pdp-sub__more { font-size: 12px; color: #6E6E6E; text-decoration: underline; text-underline-offset: 2px; align-self: flex-start; }
2821
2822/* CTA area */
2823.pdp-sub__trust { display: flex; align-items: flex-start; justify-content: center; gap: 6px; font-family: "Inter", sans-serif; font-size: 12px; line-height: 1.4; color: #6E6E6E; margin: 10px 0 0; }
2824.pdp-sub__trust svg { flex: none; margin-top: 3px; }   /* the icon never wraps onto its own line (390px); the text wraps beside it */
2825.pdp-sub__trust span { min-width: 0; }
2826.pdp-sub__trust[hidden] { display: none; }
2827/* Inline <svg> is not an HTMLElement: the UA [hidden] rule is HTML-namespaced, so pin it here. */
2828[data-pdp-sub="cart-icon"][hidden] { display: none !important; }
2829.productV2.pdp-sub--open .productV2ContentAtcButtonStickyCart { width: auto; min-width: 260px; }
2830
2831/* Focus */
2832.pdp-sub__tier:focus-visible, .pdp-sub__step:focus-visible, .pdp-sub__nudge:focus-visible,
2833.pdp-sub__freq:focus-visible, .pdp-sub__more:focus-visible, .pdp-sub__status button:focus-visible { outline: 2px solid #1F1F1F; outline-offset: 2px; }
2834
2835/* 4-chip schedule (creatine): a one-line "20% afsláttur" pill (Inter 500 12px ≈ 90px + 16px chip padding) needs
2836   chips ≥ ~108px, i.e. a content column ≥ ~500px. The column is min(638, (vw - 80) / 2), so 4-up only fits from
2837   ~1080px (measured headless, Inter loaded) → 2×2 up to 1100px, which also covers mobile (four pills never fit at 390px). */
2838@media (max-width: 1100px) {
2839  .pdp-sub__tiers[data-count="4"] { grid-template-columns: repeat(2, 1fr); }
2840}
2841/* Mobile (the section's breakpoint) */
2842@media (max-width: 1000px) {
2843  .pdp-sub__magn .productV2ContentOption.size { margin-top: 4px; margin-bottom: 0; }
2844  .pdp-sub__body { padding: 14px 14px 16px; gap: 12px; }
2845  .pdp-sub__tier { padding: 12px 4px 10px; }
2846  .pdp-sub__tier-n { font-size: 20px; }
2847  .pdp-sub__tier-badge { font-size: 10px; }
2848  .pdp-sub__hero { padding: 10px 12px; }
2849  .pdp-sub__hero-amount b { font-size: 20px; }
2850  .pdp-sub__row { grid-template-columns: 40px minmax(0, 1fr) auto; gap: 10px; }
2851  .pdp-sub__thumb { width: 40px; height: 40px; }
2852  .pdp-sub__step { width: 44px; height: 44px; }
2853  .pdp-sub__meter-labels { font-size: 10px; }
2854  .pdp-sub__gift { grid-template-columns: 44px 1fr; }
2855  .pdp-sub__gift-img { width: 44px; height: 44px; }
2856  .pdp-sub__gift-price { grid-column: 2; text-align: left; }
2857  .pdp-sub__gift-price s { display: inline; margin-right: 6px; }
2858  .pdp-sub__gift-wrap { margin-top: -12px; }
2859  .pdp-sub__gift-wrap.is-open { margin-top: 0; }
2860  .pdp-sub__hint { font-size: 11px; }
2861  .pdp-sub__freq { font-size: 16px; padding: 7px 30px 7px 12px; }   /* < 16px makes iOS Safari zoom the page on focus */
2862}
2863@media (max-width: 390px) {
2864  .pdp-sub__tier-sticks { display: none; }
2865  .pdp-sub__tier-pill { font-size: 11px; }
2866  .pdp-sub__step { width: 42px; height: 42px; }
2867}
2868@media (prefers-reduced-motion: reduce) {
2869  .pdp-sub__collapse, .pdp-sub__collapse > .pdp-sub__inner, .sub-card, .pdp-sub__seg::after, .pdp-sub__pct, .pdp-sub__tier { transition: none !important; }
2870  .pdp-sub__tier--pop { animation: none !important; }
2871}
2872
2873</style>
2874
2875
2876<script type="application/json" id="pdp-sub-stock-template--22413711704202__section_product_v2_R9fnpP">{"HAP-1001":true,"HAP-1002":false,"HAP-1003":false,"HAP-1004":true,"HAP-1005":true,"HAP-1011":true}</script>
vendor: 1 bytes, line 2876
2876
2877<script type="application/json" id="pdp-forced-soldout-template--22413711704202__section_product_v2_R9fnpP">{"skus":["HAP-1002"],"names":["Mixed Berries"]}</script>
2877
2878
2879<section id="template--22413711704202__section_product_v2_R9fnpP" class="productV2 " data-pdp-sub-category="hydration" data-initial-variant-id="50050860744842">
2880
2881    <div class="sticky-cart-sentinel" aria-hidden="true"></div>
2882
2883    <div class="sticky-cart-footer"> 
2884
2885        <div class="sticky-cart-footer-product">
2886            <div class="sticky-cart-wrapper">
2887                
2888<img
2889                    id="sticky-variant-image"
2890                    class="productV2VisualStickyCart"
2891                    src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=200"
2892                    alt="Hydration Xpress"
2893                    width="1240"
2894                    height="1240"
2895                    loading="eager"
2896                    decoding="async"></div>
2897
2898
2899                <div class="sticky-cart-footer-product-name">
2900                <div>Hydration Xpress</div>
2901                
2902                    
2903                    
2904                    
2905                    
2906
2907                
2908<span class="sep">&nbsp;-&nbsp;</span>
2909                    <div id="sticky-variant-flavour" data-flavour-index="0">
2910                    Strawberry Lemonade
2911                    </div></div>
2912                
2913<div class="sticky-cart-footer-product-quantity" data-quantity-index="1">
2914                
2915                    30 stikur
2916                
2917                </div>
2918
2919
2920        </div>
2921
2922        <button class="productV2ContentAtcButtonStickyCart" data-pdp-sub="cta">
2923            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none" data-pdp-sub="cart-icon">
2924            <path d="M20.2131 13.0482H7.24196L5.65625 5.11963H21.5133C21.6294 5.12006 21.7438 5.1459 21.8487 5.19538C21.9535 5.24484 22.0463 5.31672 22.1204 5.40593C22.1946 5.49513 22.2482 5.59951 22.2775 5.71169C22.3068 5.82388 22.3113 5.94112 22.2903 6.0552L20.9901 12.3981C20.9598 12.5814 20.8646 12.7479 20.7221 12.8672C20.5795 12.9865 20.3989 13.0507 20.2131 13.0482Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2925            <path d="M5.65959 5.11918L4.99359 2.58204C4.95704 2.40296 4.85973 2.242 4.71814 2.12641C4.57655 2.01083 4.39938 1.94772 4.21659 1.94775H1.69531" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2926            <path d="M7.25 13.0493L7.916 16.3793C7.95257 16.5584 8.04987 16.7194 8.19145 16.8349C8.33304 16.9505 8.51023 17.0136 8.693 17.0136H18.3501" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2927            <path d="M17.5585 22.5647C17.1205 22.5647 16.7656 22.2097 16.7656 21.7719C16.7656 21.334 17.1205 20.979 17.5585 20.979C17.9963 20.979 18.3513 21.334 18.3513 21.7719C18.3513 22.2097 17.9963 22.5647 17.5585 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2928            <path d="M9.62098 22.5647C9.1831 22.5647 8.82812 22.2097 8.82812 21.7719C8.82812 21.334 9.1831 20.979 9.62098 20.979C10.0589 20.979 10.4138 21.334 10.4138 21.7719C10.4138 22.2097 10.0589 22.5647 9.62098 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2929            </svg>
2930            <span>
2931                <span class="productV2ContentAtcButtonLabel">
2932                Bæta við körfu
2933                </span>
2934                <span class="sep" data-pdp-sub="sep">&nbsp;·&nbsp;</span><span id="sticky-atc-price"
2935                    data-otp="5,985 kr">
2936                5,985 kr
2937                </span>
2938            </span>
2939
2940        </button>
2941
2942    </div>
2943
2944
2945    <div class="productV2Layout">
2946
2947    <div class="productV2Visual">
2948        <div class="productV2VisualSwiper swiper"><div class="productV2VisualSwiperNewTag"
2949                >
2950            Nýtt
2951            </div>
2952            <div class="productV2VisualSwiperLimitedTag"
2953                hidden>
2954            Limited
2955            </div>
2956            
2957            
2958
2959            <div class="productV2VisualSwiperDiscountTag" hidden>
2960            0% afsláttur
2961            </div>
2962            <div class="swiper-wrapper" style="align-items: center; background-color: #EFEFF1">
2963                
2964                    
2965                        <img
2966                                id="42378071343242"
2967                                class="productV2VisualSwiperSlide swiper-slide"
2968                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1200"
2969                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1600 1600w"
2970                                sizes="(max-width: 768px) 100vw, 50vw"
2971                                alt="Hydration Xpress"
2972                                width="1240"
2973                                height="1240"
2974                                decoding="async"
2975                                
2976                                    loading="eager" fetchpriority="high"
2977                                
2978                        >
2979                    
2980                
2981                    
2982                
2983                    
2984                        <img
2985                                id="42378071376010"
2986                                class="productV2VisualSwiperSlide swiper-slide"
2987                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=1200"
2988                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=1600 1600w"
2989                                sizes="(max-width: 768px) 100vw, 50vw"
2990                                alt="Hydration Xpress"
2991                                width="1240"
2992                                height="1240"
2993                                decoding="async"
2994                                
2995                                    loading="lazy"
2996                                
2997                        >
2998                    
2999                
3000                    
3001                        <img
3002                                id="42378071408778"
3003                                class="productV2VisualSwiperSlide swiper-slide"
3004                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496&width=1200"
3005                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496&width=1600 1600w"
3006                                sizes="(max-width: 768px) 100vw, 50vw"
3007                                alt="Hydration Xpress"
3008                                width="1240"
3009                                height="1240"
3010                                decoding="async"
3011                                
3012                                    loading="lazy"
3013                                
3014                        >
3015                    
3016                
3017                    
3018                        <img
3019                                id="42378071441546"
3020                                class="productV2VisualSwiperSlide swiper-slide"
3021                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496&width=1200"
3022                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496&width=1600 1600w"
3023                                sizes="(max-width: 768px) 100vw, 50vw"
3024                                alt="Hydration Xpress"
3025                                width="1240"
3026                                height="1240"
3027                                decoding="async"
3028                                
3029                                    loading="lazy"
3030                                
3031                        >
3032                    
3033                
3034                    
3035                        <img
3036                                id="42378071474314"
3037                                class="productV2VisualSwiperSlide swiper-slide"
3038                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=1200"
3039                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=1600 1600w"
3040                                sizes="(max-width: 768px) 100vw, 50vw"
3041                                alt="Hydration Xpress"
3042                                width="1240"
3043                                height="1240"
3044                                decoding="async"
3045                                
3046                                    loading="lazy"
3047                                
3048                        >
3049                    
3050                
3051                    
3052                        <img
3053                                id="42378071507082"
3054                                class="productV2VisualSwiperSlide swiper-slide"
3055                                src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496&width=1200"
3056                                srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496&width=600 600w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496&width=900 900w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496&width=1200 1200w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496&width=1600 1600w"
3057                                sizes="(max-width: 768px) 100vw, 50vw"
3058                                alt="Hydration Xpress"
3059                                width="1240"
3060                                height="1240"
3061                                decoding="async"
3062                                
3063                                    loading="lazy"
3064                                
3065                        >
3066                    
3067                
3068            </div>
3069        </div>
3070
3071        <div class="productV2VisualVariantGallery">
3072
3073            
3074<img
3075                    src="//happyhydrate.is/cdn/shop/files/StrawberryNewPhoto.jpg?v=3654342356135137426"
3076                    alt=""
3077                    loading="lazy"
3078                    style="display:block;max-width:100%;height:auto;"
3079                    ></div>
3080
3081        <!-- MOBILE: 3-up thumbnail carousel with chevrons -->
3082        <div class="pdpv2-mobile-thumb-carousel" aria-label="Product images" hidden>
3083            <button class="pdpv2-thumb-btn pdpv2-thumb-btn--prev" t
3083ype="button" aria-label="Previous image" tabindex="0">
3084                <!-- left chevron -->
3085                <svg xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10" fill="none">
3086                    <path d="M5.78918 0.707031L1.41418 5.08203L5.78918 9.45703" stroke="#262626" stroke-width="2"/>
3087                </svg>
3088            </button>
3089
3090            <ul class="pdpv2-thumb-viewport" role="list">
3091                <!-- JS will inject exactly 3 <li> at a time -->
3092            </ul>
3093
3094            <button class="pdpv2-thumb-btn pdpv2-thumb-btn--next" type="button" aria-label="Next image" tabindex="0">
3095                <!-- right chevron -->
3096                <svg xmlns="http://www.w3.org/2000/svg" width="7" height="10" viewBox="0 0 7 10" fill="none">
3097                    <path d="M0.707153 0.707031L5.08215 5.08203L0.707153 9.45703" stroke="#262626" stroke-width="2"/>
3098                </svg>
3099            </button>
3100        </div>
3101
3102
3103
3104
3105           
3106
3107       
3108
3109
3110
3111        
3111<script type="application/json" id="variant-flags-template--22413711704202__section_product_v2_R9fnpP">
3112        {
3113        
3114        "50050860712074": {
3115            "freeShipping": false,
3116            "isNew": true,
3117            "isLimited": false,
3118            "discountPercentage": false,
3119            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Box_StrawberryLemonade.jpg?v=1787073402\u0026width=1600",
3120            "perStickCents": 199.0
3121        },
3122        
3123        "50050860744842": {
3124            "freeShipping": false,
3125            "isNew": true,
3126            "isLimited": false,
3127            "discountPercentage": false,
3128            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Box_StrawberryLemonade.jpg?v=1787073402\u0026width=1600",
3129            "perStickCents": 199.0
3130        },
3131        
3132        "50050860777610": {
3133            "freeShipping": true,
3134            "isNew": true,
3135            "isLimited": false,
3136            "discountPercentage": false,
3137            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Box_StrawberryLemonade.jpg?v=1787073402\u0026width=1600",
3138            "perStickCents": 199.0
3139        },
3140        
3141        "50050860810378": {
3142            "freeShipping": true,
3143            "isNew": true,
3144            "isLimited": false,
3145            "discountPercentage": false,
3146            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Box_StrawberryLemonade.jpg?v=1787073402\u0026width=1600",
3147            "perStickCents": 170.0
3148        },
3149        
3150        "44751436906634": {
3151            "freeShipping": false,
3152            "isNew": false,
3153            "isLimited": false,
3154            "discountPercentage": false,
3155            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=1600",
3156            "perStickCents": 199.0
3157        },
3158        
3159        "44751436939402": {
3160            "freeShipping": false,
3161            "isNew": false,
3162            "isLimited": false,
3163            "discountPercentage": false,
3164            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=1600",
3165            "perStickCents": 199.0
3166        },
3167        
3168        "44751436972170": {
3169            "freeShipping": true,
3170            "isNew": false,
3171            "isLimited": false,
3172            "discountPercentage": false,
3173            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=1600",
3174            "perStickCents": 199.0
3175        },
3176        
3177        "44751437004938": {
3178            "freeShipping": false,
3179            "isNew": false,
3180            "isLimited": false,
3181            "discountPercentage": false,
3182            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=1600",
3183            "perStickCents": 170.0
3184        },
3185        
3186        "44751437037706": {
3187            "freeShipping": false,
3188            "isNew": false,
3189            "isLimited": false,
3190            "discountPercentage": false,
3191            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=1600",
3192            "perStickCents": 199.0
3193        },
3194        
3195        "44751437070474": {
3196            "freeShipping": false,
3197            "isNew": false,
3198            "isLimited": false,
3199            "discountPercentage": false,
3200            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=1600",
3201            "perStickCents": 199.0
3202        },
3203        
3204        "44751437103242": {
3205            "freeShipping": true,
3206            "isNew": false,
3207            "isLimited": false,
3208            "discountPercentage": false,
3209            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=1600",
3210            "perStickCents": 199.0
3211        },
3212        
3213        "44751437136010": {
3214            "freeShipping": true,
3215            "isNew": false,
3216            "isLimited": false,
3217            "discountPercentage": false,
3218            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_mixed_berries_inni
3218haldslysing.png?v=1759347931\u0026width=1600",
3219            "perStickCents": 170.0
3220        },
3221        
3222        "44751437168778": {
3223            "freeShipping": false,
3224            "isNew": false,
3225            "isLimited": false,
3226            "discountPercentage": false,
3227            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=1600",
3228            "perStickCents": 199.0
3229        },
3230        
3231        "44751437201546": {
3232            "freeShipping": false,
3233            "isNew": false,
3234            "isLimited": false,
3235            "discountPercentage": false,
3236            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=1600",
3237            "perStickCents": 199.0
3238        },
3239        
3240        "44751437234314": {
3241            "freeShipping": true,
3242            "isNew": false,
3243            "isLimited": false,
3244            "discountPercentage": false,
3245            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=1600",
3246            "perStickCents": 199.0
3247        },
3248        
3249        "44751437267082": {
3250            "freeShipping": true,
3251            "isNew": false,
3252            "isLimited": false,
3253            "discountPercentage": false,
3254            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/lemonlime_innihald.jpg?v=1765379317\u0026width=1600",
3255            "perStickCents": 170.0
3256        },
3257        
3258        "45773488324746": {
3259            "freeShipping": false,
3260            "isNew": false,
3261            "isLimited": false,
3262            "discountPercentage": false,
3263            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=1600",
3264            "perStickCents": 199.0
3265        },
3266        
3267        "45773488357514": {
3268            "freeShipping": false,
3269            "isNew": false,
3270            "isLimited": false,
3271            "discountPercentage": false,
3272            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=1600",
3273            "perStickCents": 199.0
3274        },
3275        
3276        "45773488390282": {
3277            "freeShipping": true,
3278            "isNew": false,
3279            "isLimited": false,
3280            "discountPercentage": false,
3281            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=1600",
3282            "perStickCents": 199.0
3283        },
3284        
3285        "45773488423050": {
3286            "freeShipping": true,
3287            "isNew": false,
3288            "isLimited": false,
3289            "discountPercentage": false,
3290            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Peach_Crush_innihaldslysing.png?v=1759347931\u0026width=1600",
3291            "perStickCents": 170.0
3292        },
3293        
3294        "47230751473802": {
3295            "freeShipping": false,
3296            "isNew": false,
3297            "isLimited": false,
3298            "discountPercentage": false,
3299            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=1600",
3300            "perStickCents": 199.0
3301        },
3302        
3303        "47230751506570": {
3304            "freeShipping": false,
3305            "isNew": false,
3306            "isLimited": false,
3307            "discountPercentage": false,
3308            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=1600",
3309            "perStickCents": 199.0
3310        },
3311        
3312        "47230751539338": {
3313            "freeShipping": true,
3314            "isNew": false,
3315            "isLimited": false,
3316            "discountPercentage": false,
3317            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=1600",
3318            "perStickCents": 199.0
3319        },
3320        
3321        "47230751572106": {
3322            "freeShipping": true,
3323            "isNew": false,
3324            "isLimited": false,
3325            "discountPercentage": false,
3326            "ingredientsImage": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Peru_Innihaldslysing.png?v=1759347931\u0026width=1600",
3327            "perStickCents": 170.0
3328        }
3329        
3330        }
3331        </script>
3331
3332
3333        
3333<script type="application/json" id="variant-gallery-template--22413711704202__section_product_v2_R9fnpP">
3334        {
3335        
3336        "50050860712074": ["//happyhydrate.is/cdn/shop/files/StrawberryNewPhoto.jpg?v=3654342356135137426"
3337],
3338        
3339        "50050860744842": ["//happyhydrate.is/cdn/shop/files/StrawberryNewPhoto.jpg?v=3654342356135137426"
3340],
3341        
3342        "50050860777610": ["//happyhydrate.is/cdn/shop/files/StrawberryNewPhoto.jpg?v=3654342356135137426"
3343],
3344        
3345        "50050860810378": ["//happyhydrate.is/cdn/shop/files/StrawberryNewPhoto.jpg?v=3654342356135137426"
3346],
3347        
3348        "44751436906634": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pina_colada.png?v=10080655477521466929",
3349"//happyhydrate.is/cdn/shop/files/Box_Pina_colada.png?v=145695560218513528",
3350"//happyhydrate.is/cdn/shop/files/Stick_Pina_colada.png?v=18008800997009111848",
3351"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pina_colada.png?v=13526741417219158388"
3352],
3353        
3354        "44751436939402": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pina_colada.png?v=10080655477521466929",
3355"//happyhydrate.is/cdn/shop/files/Box_Pina_colada.png?v=145695560218513528",
3356"//happyhydrate.is/cdn/shop/files/Stick_Pina_colada.png?v=18008800997009111848",
3357"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pina_colada.png?v=13526741417219158388"
3358],
3359        
3360        "44751436972170": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pina_colada.png?v=10080655477521466929",
3361"//happyhydrate.is/cdn/shop/files/Box_Pina_colada.png?v=145695560218513528",
3362"//happyhydrate.is/cdn/shop/files/Stick_Pina_colada.png?v=18008800997009111848",
3363"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pina_colada.png?v=13526741417219158388"
3364],
3365        
3366        "44751437004938": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pina_colada.png?v=10080655477521466929",
3367"//happyhydrate.is/cdn/shop/files/Box_Pina_colada.png?v=145695560218513528",
3368"//happyhydrate.is/cdn/shop/files/Stick_Pina_colada.png?v=18008800997009111848",
3369"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pina_colada.png?v=13526741417219158388"
3370],
3371        
3372        "44751437037706": ["//happyhydrate.is/cdn/shop/files/Ad_Image_MIxed_Berries.png?v=2793166020059645671",
3373"//happyhydrate.is/cdn/shop/files/Box_Mixed_berries.png?v=14889008070699529462",
3374"//happyhydrate.is/cdn/shop/files/Stick_Mixed_berries.png?v=13034072605397170011",
3375"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Mixed_berries.png?v=4047872841426993341"
3376],
3377        
3378        "44751437070474": ["//happyhydrate.is/cdn/shop/files/Ad_Image_MIxed_Berries.png?v=2793166020059645671",
3379"//happyhydrate.is/cdn/shop/files/Box_Mixed_berries.png?v=14889008070699529462",
3380"//happyhydrate.is/cdn/shop/files/Stick_Mixed_berries.png?v=13034072605397170011",
3381"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Mixed_berries.png?v=4047872841426993341"
3382],
3383        
3384        "44751437103242": ["//happyhydrate.is/cdn/shop/files/Ad_Image_MIxed_Berries.png?v=2793166020059645671",
3385"//happyhydrate.is/cdn/shop/files/Box_Mixed_berries.png?v=14889008070699529462",
3386"//happyhydrate.is/cdn/shop/files/Stick_Mixed_berries.png?v=13034072605397170011",
3387"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Mixed_berries.png?v=4047872841426993341"
3388],
3389        
3390        "44751437136010": ["//happyhydrate.is/cdn/shop/files/Ad_Image_MIxed_Berries.png?v=2793166020059645671",
3391"//happyhydrate.is/cdn/shop/files/Box_Mixed_berries.png?v=14889008070699529462",
3392"//happyhydrate.is/cdn/shop/files/Stick_Mixed_berries.png?v=13034072605397170011",
3393"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Mixed_berries.png?v=4047872841426993341"
3394],
3395        
3396        "44751437168778": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Lemon_Lime.png?v=13996877905846669919",
3397"//happyhydrate.is/cdn/shop/files/Box_Lemon_lime.png?v=962053310672404054",
3398"//happyhydrate.is/cdn/shop/files/Stick_Lemon_Lime.png?v=4097045385878305331",
3399"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Lemon_Lime.png?v=16709592387243239154"
3400],
3401        
3402        "44751437201546": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Lemon_Lime.png?v=13996877905846669919",
3403"//happyhydrate.is/cdn/shop/files/Box_Lemon_lime.png?v=962053310672404054",
3404"//happyhydrate.is/cdn/shop/files/Stick_Lemon_Lime.png?v=4097045385878305331",
3405"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Lemon_Lime.png?v=16709592387243239154"
3406],
3407        
3408        "44751437234314": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Lemon_Lime.png?v=13996877905846669919",
3409"//happyhydrate.is/cdn/shop/files/Box_Lemon_lime.png?v=962053310672404054",
3410"//happyhydrate.is/cdn/shop/files/Stick_Lemon_Lime.png?v=4097045385878305331",
3411"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Lemon_Lime.png?v=16709592387243239154"
3412],
3413        
3414        "44751437267082": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Lemon_Lime.png?v=13996877905846669919",
3415"//happyhydrate.is/cdn/shop/files/Box_Lemon_lime.png?v=962053310672404054",
3416"//happyhydrate.is/cdn/shop/files/Stick_Lemon_Lime.png?v=4097045385878305331",
3417"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Lemon_Lime.png?v=16709592387243239154"
3418],
3419        
3420        "45773488324746": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Peach_crush.png?v=4113032794673977349",
3421"//happyhydrate.is/cdn/shop/files/Box_Peach_crush.png?v=3652435682352019707",
3422"//happyhydrate.is/cdn/shop/files/Stick_Peach_crush.png?v=6808548533713963419",
3423"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Peach_crush.png?v=16322717436308673715"
3424],
3425        
3426        "45773488357514": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Peach_crush.png?v=4113032794673977349",
3427"//happyhydrate.is/cdn/shop/files/Box_Peach_crush.png?v=3652435682352019707",
3428"//happyhydrate.is/cdn/shop/files/Stick_Peach_crush.png?v=6808548533713963419",
3429"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Peach_crush.png?v=16322717436308673715"
3430],
3431        
3432        "45773488390282": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Peach_crush.png?v=4113032794673977349",
3433"//happyhydrate.is/cdn/shop/files/Box_Peach_crush.png?v=3652435682352019707",
3434"//happyhydrate.is/cdn/shop/files/Stick_Peach_crush.png?v=6808548533713963419",
3435"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Peach_crush.png?v=16322717436308673715"
3436],
3437        
3438        "45773488423050": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Peach_crush.png?v=4113032794673977349",
3439"//happyhydrate.is/cdn/shop/files/Box_Peach_crush.png?v=3652435682352019707",
3440"//happyhydrate.is/cdn/shop/files/Stick_Peach_crush.png?v=6808548533713963419",
3441"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Peach_crush.png?v=16322717436308673715"
3442],
3443        
3444        "47230751473802": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pear.png?v=10237143675757999332",
3445"//happyhydrate.is/cdn/shop/files/Box_Pear.png?v=13374194927515835710",
3446"//happyhydrate.is/cdn/shop/files/Stick_Pear.png?v=12223815111786935164",
3447"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pear.png?v=16196830923234054106"
3448],
3449        
3450        "47230751506570": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pear.png?v=10237143675757999332",
3451"//happyhydrate.is/cdn/shop/files/Box_Pear.png?v=13374194927515835710",
3452"//happyhydrate.is/cdn/shop/files/Stick_Pear.png?v=12223815111786935164",
3453"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pear.png?v=16196830923234054106"
3454],
3455        
3456        "47230751539338": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pear.png?v=10237143675757999332",
3457"//happyhydrate.is/cdn/shop/files/Box_Pear.png?v=13374194927515835710",
3458"//happyhydrate.is/cdn/shop/files/Stick_Pear.png?v=12223815111786935164",
3459"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pear.png?v=16196830923234054106"
3460],
3461        
3462        "47230751572106": ["//happyhydrate.is/cdn/shop/files/Ad_Image_Pear.png?v=10237143675757999332",
3463"//happyhydrate.is/cdn/shop/files/Box_Pear.png?v=13374194927515835710",
3464"//happyhydrate.is/cdn/shop/files/Stick_Pear.png?v=12223815111786935164",
3465"//happyhydrate.is/cdn/shop/files/Hella_Hrista_Pear.png?v=16196830923234054106"
3466]
3467        
3468        }
3469        </script>
3469
3470
3471
3472 
3473
3474
3475
3476
3477
3478
3479    </div>
3480
3481    <h2 class="productV2TitleMobile">Hydration Xpress</h2>
3482    <div class="productV2ReviewsMobile">
3483        
3484
3485<div class="junip-product-summary" data-product-id="7907478503562"></div>
3486
3487
3488    </div>
3489    
3490    <p class="productV2ShortDescMobile">Fylltu á söltin sem þú tapar! Natríum, kalíum og magnesíum stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi. Vertu HAPPY.</p>
3491    
3492
3493    <aside class="productV2Content">
3494        <h2 class="productV2ContentTitle" style="color: #262626">Hydration Xpress</h2>
3495        <div class="productV2ContentReviews">
3496            
3497
3498<div class="junip-product-summary" data-product-id="7907478503562"></div>
3499
3500
3501        </div>
3502
3503        
3504        <p class="productV2ContentShortDesc">Fylltu á söltin sem þú tapar! Natríum, kalíum og magnesíum stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi. Vertu HAPPY.</p>
3505        
3506
3507        <div class="productV2ContentOptions">
3508            
3509
3510            
3511            
3512            
3513
3514            
3515                
3516                
3517
3518                
3519
3520                
3521
3522                
3523                    <style>
3524    .productV2ContentOption {
3525        border: none;
3526        margin: 16px 0px;
3527        padding: 0;
3528        position: relative;
3529    }
3530
3531    .productV2ContentOptionLegend {
3532        font-size: 18px;
3533        line-height: 24px;
3534        margin-bottom: 15px;
3535        color: #333333;
3536        font-family: "DM Sans", sans-serif;
3537        font-weight: 600;
3538    }
3539
3540    .productV2ContentOptionValues {
3541        display: flex;
3542        align-items: center;
3543        column-gap: 16px;
3544        row-gap: 8px;
3545    }
3546
3547    .productV2ContentOptionValue {
3548        position: relative;
3549    }
3550
3551    .productV2ContentOption.flavor .productV2ContentOptionValues {
3552        display: flex;
3553        flex-wrap: wrap;
3554    }
3555
3556    .productV2ContentOptionValue[data-flavor="Lemon/Lime"] {
3557        order: 1;
3558    }
3559
3560    .productV2ContentOptionValue[data-flavor="Mixed Berries"] {
3561        order: 2;
3562    }
3563
3564    .productV2ContentOptionValue[data-flavor="Pina Colada"] {
3565        order: 3;
3566    }
3567
3568    .productV2ContentOptionValue[data-flavor="Peach Crush"] {
3569        order: 4;
3570    }
3571
3572    .productV2ContentOptionValue[data-flavor="Peru"] {
3573        order: 5;
3574    }
3575
3576    .productV2ContentOptionValueLabel {
3577        display: block;
3578        cursor: pointer;
3579        color: var(--pdp-v2-text-color);
3580    }
3581
3582    .productV2ContentOptionValueInput {
3583        display: none;
3584    }
3585
3586    .productV2ContentOptionValue.flavor .productV2ContentOptionValueLabelValue {
3587        font-size: 14px;
3588        display: block;
3589        text-align: center;
3590        font-family: "Inter", sans-serif;
3591        font-weight: 500;
3592    }
3593
3594    .productV2ContentOptionValueLabelFlavorIconWrapper {
3595        display: flex;
3596        flex-direction: row;
3597        padding: 6px 14px;;
3598        border-radius: 32px;
3599        background-color: #FFF;
3600        justify-content: center;
3601        align-items: center;
3602        margin-bottom: 4px;
3603        background-color: #F5F5F5;
3604        width: max-content;
3605    }
3606
3607    .productV2ContentOptionValueLabelFlavorIcon {
3608        margin-right: 8px;
3609        width: 34px;
3610        height: 34px;
3611        object-fit: contain;
3612    }
3613
3614    .productV2ContentOptionValueInput:checked + .productV2ContentOptionValueLabel .productV2ContentOptionValueLabelFlavorIconWrapper {
3615        border: 1px solid black;
3616        background-color: #FFFFFF;
3617    }
3618
3619    .productV2ContentOptionValueLabelNewTag {
3620        padding: 4px 6px;
3621        border-radius: 12px;
3622        font-size: 12px;
3623        background-color: #FFFA66;
3624        font-family: "DM Sans", sans-serif;
3625        font-weight: 600;
3626        color: #000000;
3627        margin-left: 8px;
3628    }
3629
3630    .productV2ContentOptionValueLabelLimitedTag {
3631        padding: 4px 6px;
3632        border-radius: 12px;
3633        font-size: 12px;
3634        background-color: #c92a3e;
3635        font-family: "DM Sans", sans-serif;
3636        font-weight: 600;
3637        color: #FFFFFF;
3638        margin-left: 8px;
3639    }
3640
3641    .productV2ContentOptionValueLabelDiscountTag {
3642        padding: 4px 6px;
3643        border-radius: 12px;
3644        font-size: 12px;
3645        background-color: #FFFA66;
3646        font-family: "DM Sans", sans-serif;
3647        font-weight: 600;
3648        color: #000000;
3649        margin-left: 8px;
3650    }
3651
3652
3653    .productV2ContentOptionValueLabelSoldOutTag {
3654        padding: 4px 6px;
3655        border-radius: 12px;
3656        font-size: 12px;
3657        background-color: #FFD6CC;
3658        font-family: "DM Sans", sans-serif;
3659        font-weight: 600;
3660        color: #A02100;
3661        margin-left: 8px;
3662    }
3663
3664    /* Mobile flavor dropdown (custom) */
3665    .flavor-dd { display: none; position: relative; font-family: "Inter", sans-serif; }
3666    .flavor-dd__trigger {
3667        display: flex; align-items: center; gap: 10px;
3668        width: 100%; padding: 10px 16px;
3669        border-radius: 999px; border: 1px solid #E0E0E0;
3670        background: #F5F5F5; cursor: pointer;
3671        font-size: 15px; font-weight: 500; color: #333;
3672    }
3673    .flavor-dd__trigger-icon { width: 30px; height: 30px; object-fit: contain; }
3674    .flavor-dd__trigger-name { flex: 1; }
3675    .flavor-dd__trigger-chevron { transition: transform 200ms ease; }
3676    .flavor-dd.is-open .flavor-dd__trigger-chevron { transform: rotate(180deg); }
3677
3678    .flavor-dd__list {
3679        display: none; position: absolute; top: calc(100% + 4px);
3680        left: 0; right: 0; z-index: 100;
3681        background: #fff; border: 1px solid #E0E0E0; border-radius: 10px;
3682        box-shadow: 0 4px 12px rgba(0,0,0,.08);
3683        overflow: hidden;
3684    }
3685    .flavor-dd.is-open .flavor-dd__list { display: block; }
3686
3687    .flavor-dd__item {
3688        display: flex; align-items: center; gap: 10px;
3689        padding: 10px 16px; cursor: pointer;
3690        font-size: 15px; font-weight: 500; color: #333;
3691        transition: background 120ms ease;
3692    }
3693    .flavor-dd__item:hover { background: #F5F5F5; }
3694    .flavor-dd__item.is-selected { background: #F0F0F0; }
3695    .flavor-dd__item.is-sold-out { opacity: .55;
3695 cursor: not-allowed; }
3696    .flavor-dd__item.is-sold-out:hover { background: transparent; }
3697    .flavor-dd__item-sold {
3698      margin-left: auto; padding: 2px 8px; border-radius: 4px;
3699      background: #FDE2E2; color: #B02D28; font-size: 12px; font-weight: 600; white-space: nowrap;
3700    }
3701    .flavor-dd__item-icon { width: 28px; height: 28px; object-fit: contain; }
3702    .flavor-dd__item-dot {
3703        display: none;
3704    }
3705
3706    @media (max-width: 1000px) {
3707        .productV2ContentOption { margin: 16px 0px; }
3708        .productV2ContentOption.flavor .productV2ContentOptionValues { display: none; }
3709        .flavor-dd { display: block; }
3710    }
3711</style><fieldset class="productV2ContentOption flavor" name="Bragð">
3712  <div class="productV2ContentOptionLegend">Bragð</div>
3713  <div class="productV2ContentOptionValues">
3714    
3715      
3716      
3717<div
3718        class="productV2ContentOptionValue flavor "
3719        data-flavor="Strawberry Lemonade"
3720      >
3721        <input
3722          id="Strawberry Lemonade"
3723          class="productV2ContentOptionValueInput"
3724          value="Strawberry Lemonade"
3725          type="radio"
3726          name="Bragð"
3727          checked
3728      
3729        >
3730        <label for="Strawberry Lemonade" class="productV2ContentOptionValueLabel">
3731          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3732              class="productV2ContentOptionValueLabelFlavorIcon"
3733              src="//happyhydrate.is/cdn/shop/files/StrawberryLemonade_icon_7cb3db60-9ff0-4f24-b37d-2b10985879ea.png?v=1787073402&width=100"
3734              alt=""
3735            ><span class="productV2ContentOptionValueLabelValue">
3736              Strawberry Lemonade
3737            </span>
3738
3739            
3740<span class="productV2ContentOptionValueLabelNewTag">Nýtt</span><!-- Discount badge (only when discount > 0) -->
3741            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3742              0%
3743            </span>
3744          </span>
3745        </label>
3746      </div>
3747    
3748      
3749      
3750<div
3751        class="productV2ContentOptionValue flavor is-sold-out"
3752        data-flavor="Pina Colada"
3753      >
3754        <input
3755          id="Pina Colada"
3756          class="productV2ContentOptionValueInput"
3757          value="Pina Colada"
3758          type="radio"
3759          name="Bragð"
3760          
3761      
3762        >
3763        <label for="Pina Colada" class="productV2ContentOptionValueLabel">
3764          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3765              class="productV2ContentOptionValueLabelFlavorIcon"
3766              src="//happyhydrate.is/cdn/shop/files/Pina_Colada_22_09_25.png?v=1758564999&width=100"
3767              alt=""
3768            ><span class="productV2ContentOptionValueLabelValue">
3769              Pina Colada
3770            </span>
3771
3772            
3773              <span class="productV2ContentOptionValueLabelSoldOutTag">Uppselt</span>
3774            
3775<!-- Discount badge (only when discount > 0) -->
3776            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3777              0%
3778            </span>
3779          </span>
3780        </label>
3781      </div>
3782    
3783      
3784      
3785<div
3786        class="productV2ContentOptionValue flavor is-sold-out"
3787        data-flavor="Mixed Berries"
3788      >
3789        <input
3790          id="Mixed Berries"
3791          class="productV2ContentOptionValueInput"
3792          value="Mixed Berries"
3793          type="radio"
3794          name="Bragð"
3795          
3796      
3797        >
3798        <label for="Mixed Berries" class="productV2ContentOptionValueLabel">
3799          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3800              class="productV2ContentOptionValueLabelFlavorIcon"
3801              src="//happyhydrate.is/cdn/shop/files/Mixed_berries_09_25.png?v=1758565442&width=100"
3802              alt=""
3803            ><span class="productV2ContentOptionValueLabelValue">
3804              Mixed Berries
3805            </span>
3806
3807            
3808              <span class="productV2ContentOptionValueLabelSoldOutTag">Uppselt</span>
3809            
3810<!-- Discount badge (only when discount > 0) -->
3811            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3812              0%
3813            </span>
3814          </span>
3815        </label>
3816      </div>
3817    
3818      
3819      
3820<div
3821        class="productV2ContentOptionValue flavor "
3822        data-flavor="Lemon/Lime"
3823      >
3824        <input
3825          id="Lemon/Lime"
3826          class="productV2ContentOptionValueInput"
3827          value="Lemon/Lime"
3828          type="radio"
3829          name="Bragð"
3830          
3831      
3832        >
3833        <label for="Lemon/Lime" class="productV2ContentOptionValueLabel">
3834          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3835              class="productV2ContentOptionValueLabelFlavorIcon"
3836              src="//happyhydrate.is/cdn/shop/files/Lemon_Lime.png?v=1757622519&width=100"
3837              alt=""
3838            ><span class="productV2ContentOptionValueLabelValue">
3839              Lemon/Lime
3840            </span>
3841
3842            
3843<!-- Discount badge (only when discount > 0) -->
3844            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3845              0%
3846            </span>
3847          </span>
3848        </label>
3849      </div>
3850    
3851      
3852      
3853<div
3854        class="productV2ContentOptionValue flavor "
3855        data-flavor="Peach Crush"
3856      >
3857        <input
3858          id="Peach Crush"
3859          class="productV2ContentOptionValueInput"
3860          value="Peach Crush"
3861          type="radio"
3862          name="Bragð"
3863          
3864      
3865        >
3866        <label for="Peach Crush" class="productV2ContentOptionValueLabel">
3867          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3868              class="productV2ContentOptionValueLabelFlavorIcon"
3869              src="//happyhydrate.is/cdn/shop/files/Peach_09_25.png?v=1758565399&width=100"
3870              alt=""
3871            ><span class="productV2ContentOptionValueLabelValue">
3872              Peach Crush
3873            </span>
3874
3875            
3876<!-- Discount badge (only when discount > 0) -->
3877            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3878              0%
3879            </span>
3880          </span>
3881        </label>
3882      </div>
3883    
3884      
3885      
3886<div
3887        class="productV2ContentOptionValue flavor "
3888        data-flavor="Peru"
3889      >
3890        <input
3891          id="Peru"
3892          class="productV2ContentOptionValueInput"
3893          value="Peru"
3894          type="radio"
3895          name="Bragð"
3896          
3897      
3898        >
3899        <label for="Peru" class="productV2ContentOptionValueLabel">
3900          <span class="productV2ContentOptionValueLabelFlavorIconWrapper"><img
3901              class="productV2ContentOptionValueLabelFlavorIcon"
3902              src="//happyhydrate.is/cdn/shop/files/Pear_09_25.png?v=1758565346&width=100"
3903              alt=""
3904            ><span class="productV2ContentOptionValueLabelValue">
3905              Peru
3906            </span>
3907
3908            
3909<!-- Discount badge (only when discount > 0) -->
3910            <span class="productV2ContentOptionValueLabelDiscountTag" hidden>
3911              0%
3912            </span>
3913          </span>
3914        </label>
3915      </div>
3916    
3917  </div><div class="flavor-dd" id="flavor-dd"><button type="button" class="flavor-dd__trigger" aria-expanded="false"><img class="flavor-dd__trigger-icon" src="//happyhydrate.is/cdn/shop/files/StrawberryLemonade_icon_7cb3db60-9ff0-4f24-b37d-2b10985879ea.png?v=1787073402&width=100" alt="" data-flavor-icon>
3918      <span class="flavor-dd__trigger-name" data-flavor-name>Strawberry Lemonade</span>
3919      <svg class="flavor-dd__trigger-chevron" width="12" height="8" viewBox="0 0 12 8" fill="none"><path d="M1 1.5L6 6.5L11 1.5" stroke="#333" stroke-width="2" stroke-linecap="round"/></svg>
3920    </button>
3921    <div class="flavor-dd__list">
3922      
3923<div class="flavor-dd__item is-selected"
3924             data-value="Strawberry Lemonade"
3925             data-color="#999"
3926             
3927             data-icon="//happyhydrate.is/cdn/shop/files/StrawberryLemonade_icon_7cb3db60-9ff0-4f24-b37d-2b10985879ea.png?v=1787073402&width=100">
3928          <span class="flavor-dd__item-dot" style="background:#999"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/StrawberryLemonade_icon_7cb3db60-9ff0-4f24-b37d-2b10985879ea.png?v=1787073402&width=100" alt=""><span>Strawberry Lemonade</span></div>
3929      
3930<div class="flavor-dd__item is-sold-out"
3931             data-value="Pina Colada"
3932             data-color="#ffea00"
3933             data-sold-out="true" aria-disabled="true"
3934             data-icon="//happyhydrate.is/cdn/shop/files/Pina_Colada_22_09_25.png?v=1758564999&width=100">
3935          <span class="flavor-dd__item-dot" style="background:#ffea00"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/Pina_Colada_22_09_25.png?v=1758564999&width=100" alt=""><span>Pina Colada</span><span class="flavor-dd__item-sold">Uppselt</span></div>
3936      
3937<div class="flavor-dd__item is-sold-out"
3938             data-value="Mixed Berries"
3939             data-color="#ff40b6"
3940             data-sold-out="true" aria-disabled="true"
3941             data-icon="//happyhydrate.is/cdn/shop/files/Mixed_berries_09_25.png?v=1758565442&width=100">
3942          <span class="flavor-dd__item-dot" style="background:#ff40b6"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/Mixed_berries_09_25.png?v=1758565442&width=100" alt=""><span>Mixed Berries</span><span class="flavor-dd__item-sold">Uppselt</span></div>
3943      
3944<div class="flavor-dd__item"
3945             data-value="Lemon/Lime"
3946             data-color="#44d62c"
3947             
3948             data-icon="//happyhydrate.is/cdn/shop/files/Lemon_Lime.png?v=1757622519&width=100">
3949          <span class="flavor-dd__item-dot" style="background:#44d62c"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/Lemon_Lime.png?v=1757622519&width=100" alt=""><span>Lemon/Lime</span></div>
3950      
3951<div class="flavor-dd__item"
3952             data-value="Peach Crush"
3953             data-color="#ff5338"
3954             
3955             data-icon="//happyhydrate.is/cdn/shop/files/Peach_09_25.png?v=1758565399&width=100">
3956          <span class="flavor-dd__item-dot" style="background:#ff5338"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/Peach_09_25.png?v=1758565399&width=100" alt=""><span>Peach Crush</span></div>
3957      
3958<div class="flavor-dd__item"
3959             data-value="Peru"
3960             data-color="#e0e01b"
3961             
3962             data-icon="//happyhydrate.is/cdn/shop/files/Pear_09_25.png?v=1758565346&width=100">
3963          <span class="flavor-dd__item-dot" style="background:#e0e01b"></span><img class="flavor-dd__item-icon" src="//happyhydrate.is/cdn/shop/files/Pear_09_25.png?v=1758565346&width=100" alt=""><span>Peru</span></div>
3964      
3965    </div>
3966  </div>
3967
3968  
3968<script>
3969  (function(){
3970    const dd = document.getElementById('flavor-dd');
3971    if (!dd) return;
3972    const trigger = dd.querySelector('.flavor-dd__trigger');
3973    const list = dd.querySelector('.flavor-dd__list');
3974    const items = dd.querySelectorAll('.flavor-dd__item');
3975    const triggerName = dd.querySelector('[data-flavor-name]');
3976    const triggerIcon = dd.querySelector('[data-flavor-icon]');
3977    // No color needed on trigger
3978
3979    trigger.addEventListener('click', () => {
3980      const open = dd.classList.toggle('is-open');
3981      trigger.setAttribute('aria-expanded', open);
3982    });
3983
3984    items.forEach(item => {
3985      item.addEventListener('click', () => {
3986        if (item.dataset.soldOut === 'true') return;   // uppselt bragd er ekki valanlegt
3987        // Update trigger
3988        triggerName.textContent = item.querySelector('span:last-child').textContent;
3989        if (item.dataset.icon) { triggerIcon.src = item.dataset.icon; triggerIcon.hidden = false; }
3990        else { triggerIcon.removeAttribute('src'); triggerIcon.hidden = true; }
3991        // color removed
3992
3993        // Update selected state
3994        items.forEach(i => i.classList.remove('is-selected'));
3995        item.classList.add('is-selected');
3996
3997        // Close dropdown
3998        dd.classList.remove('is-open');
3999        trigger.setAttribute('aria-expanded', 'false');
4000
4001        // Sync with hidden radio
4002        const radio = document.querySelector(`.productV2ContentOptionValueInput[value="${item.dataset.value}"]`);
4003        if (radio) {
4004          radio.checked = true;
4005          radio.dispatchEvent(new Event('change', { bubbles: true }));
4006        }
4007      });
4008    });
4009
4010    // Close on outside click
4011    document.addEventListener('click', (e) => {
4012      if (!dd.contains(e.target)) {
4013        dd.classList.remove('is-open');
4014        trigger.setAttribute('aria-expanded', 'false');
4015      }
4016    });
4017
4018    // Sync when desktop pills change
4019    document.querySelectorAll('.productV2ContentOption.flavor .productV2ContentOptionValueInput').forEach(radio => {
4020      radio.addEventListener('change', function() {
4021        if (!this.checked) return;
4022        const item = dd.querySelector(`.flavor-dd__item[data-value="${this.value}"]`);
4023        if (!item) return;
4024        triggerName.textContent = item.querySelector('span:last-child').textContent;
4025        if (item.dataset.icon) { triggerIcon.src = item.dataset.icon; triggerIcon.hidden = false; }
4026        else { triggerIcon.removeAttribute('src'); triggerIcon.hidden = true; }
4027        // color removed
4028        items.forEach(i => i.classList.remove('is-selected'));
4029        item.classList.add('is-selected');
4030      });
4031    });
4032  })();
4033  </script>
4033
4034</fieldset>
4035
4036                
4037            
4038                
4039                
4040
4041                
4042
4043                
4044
4045                
4046                    <div class="pdp-sub__collapse pdp-sub__magn is-open" data-pdp-sub="magn">
4047                      <div class="pdp-sub__inner">
4048                        <style>
4049    .productV2ContentOption {
4050        border: none;
4051        margin: 12px 0px;
4052        padding: 0;
4053        position: relative;
4054    }
4055
4056    .productV2ContentOptionLegend {
4057        font-size: 16px;
4058        line-height: 24px;
4059        margin-bottom: 4px;
4060        color: #333333;
4061        font-family: "DM Sans", sans-serif;
4062        font-weight: 600;
4063    }
4064
4065    .productV2ContentOptionFreeShipping {
4066        width: 197px;
4067        color: var(--pdp-v2-free-shipping-color);
4068        font-size: 18px;
4069        font-weight: 600;
4070        line-height: 24px;
4071        position: absolute;
4072        right: 29px;
4073        top: 0;
4074        text-align: center;
4075        display: flex;
4076        gap: 6px;
4077    }
4078
4079    .productV2.creatine .productV2ContentOptionFreeShipping {
4080        display: none;
4081    }
4082
4083    .productV2ContentOptionFreeShipping:before {
4084        content: "";
4085        width: 10%;
4086        height: 10px;
4087        display: block;
4088        border-left: 3px solid;
4089        border-top: 3px solid;
4090        margin-top: 10px;
4091        border-color: var(--pdp-v2-free-shipping-color);
4092    }
4093
4094    .productV2ContentOptionFreeShipping:after {
4095        content: "";
4096        width: 10%;
4097        height: 10px;
4098        display: block;
4099        border-right: 3px solid;
4100        border-top: 3px solid;
4101        margin-top: 10px;
4102        border-color: var(--pdp-v2-free-shipping-color);
4103    }
4104
4105    .productV2ContentOptionValues {
4106        display: flex;
4107        align-items: center;
4108        column-gap: 16px;
4109    }
4110
4111    .productV2ContentOptionValue {
4112        position: relative;
4113    }
4114
4115    .productV2ContentOptionValue.size {
4116        flex: 1;
4117    }
4118
4119    .productV2ContentOptionValueLabel {
4120        display: block;
4121        cursor: pointer;
4122        color: var(--pdp-v2-text-color);
4123    }
4124
4125    .productV2ContentOptionValueLabelPackCount {
4126        display: block;
4127        font-size: 12px;
4128        font-family: "DM Sans", sans-serif;
4129    }
4130
4131    .productV2ContentOptionValueInput {
4132        display: none;
4133    }
4134
4135
4136    .productV2ContentOptionValueLabelSizeIcon {
4137        width: 47px;
4138        height: 47px;
4139        object-fit: contain;
4140        margin-bottom: 4px;
4141        color: #F5F5F5;
4142    }
4143
4144    .productV2ContentOptionValue.size {
4145        flex-basis: 115px;
4146        flex-shrink: 0;
4147    }
4148
4149
4150    .productV2ContentOptionValue.size .productV2ContentOptionValueInput:checked + .productV2ContentOptionValueLabel {
4151        border: 1px solid black;
4152        background-color: #FFFFFF;
4153    }
4154
4155    .productV2ContentOptionValue.size .productV2ContentOptionValueInput:checked + .productV2ContentOptionValueLabel .productV2ContentOptionValueLabelSizeIcon {
4156        filter: invert(1);
4157    }
4158
4159    .productV2ContentOptionValue.size .productV2ContentOptionValueLabel {
4160        background-color: #F5F5F5;
4161        padding: 12px;
4162        border-radius: 10px;
4163    }
4164
4165    .productV2ContentOptionValue.size .productV2ContentOptionValueLabelValue {
4166        font-size: 16px;
4167        font-weight: 500;
4168        line-height: 16px;
4169        color: #1F1F1F;
4170        font-family: "Inter", sans-serif;
4171    }
4172
4173    .free-ship-slot{
4174        min-height: 28px;
4175        display: flex;
4176        align-items: center;
4177        margin-bottom: 24px;
4178    }
4179
4180    .free-ship{
4181        font-size: 12px;
4182        display: inline-flex;
4183        align-items: center;
4184        gap: 3px;
4185        font-family: "DM Sans", sans-serif;
4186        font-weight: 500;
4187        background-color: #E6E6E6;
4188        border-radius: 6px;
4189        padding: 4px 4px;
4190    }
4191
4192    .best-deal{
4193        font-size: 12px;
4194        display: inline-flex;
4195        align-items: center;
4196        gap: 3px;
4197        font-family: "DM Sans", sans-serif;
4198        font-weight: 500;
4199        background-color: #D4EDFF;
4200        border-radius: 6px;
4201        padding: 4px 6px;
4202    }
4203
4204    .free-ship__icon{
4205        width: 18px;
4206        height: auto;
4207        display: block;
4208    }
4209
4210
4211    @media (max-width: 1200px) {
4212        .productV2ContentOptionValue.size {
4213            flex-shrink: 1;
4214        }
4215
4216        .productV2ContentOptionFreeShipping {
4217            right: 0;
4218        }
4219    }
4220
4221    @media (max-width: 1000px) {
4222
4223        .productV2ContentOptionValues {
4224            gap: 12px;
4225            display: grid;
4226            grid-template-columns: repeat(3, 1fr);
4227        }
4228
4229        .productV2ContentOptions {
4230            margin-bottom: 24px;
4231        }
4232
4233        .productV2ContentOption:not(:last-of-type) {
4234            margin-bottom: 16px;
4235        }
4236
4237        .productV2ContentOptionFreeShipping {
4238            gap: 4px;
4239            justify-content: end;
4240            right: 5px;
4241        }
4242
4243        .productV2ContentOptionValue.size .productV2ContentOptionValueLabel {
4244            
4245        }
4246
4247        .productV2ContentOptionValue.size .productV2ContentOptionValueLabelValue {
4248            font-size: 16px;
4249            letter-spacing: -.5px;
4250        }
4251    }
4252
4253    @media (max-width: 600px) {
4254
4255        .productV2ContentOptionValues {
4256            gap: 8px;
4257            display: grid;
4258            grid-template-columns: repeat(3, 1fr);
4259        }
4260
4261        .productV2ContentOptions {
4262            margin-bottom: 16px;
4263        }
4264    }
4265
4266    @media (max-width: 390px) {
4267        .productV2ContentOptionValues {
4268            gap: 6px;
4269            display: grid;
4270            grid-template-columns: repeat(3, 1fr);
4271        }
4272
4273        .productV2ContentOptionValue.size .productV2ContentOptionValueLabelValue {
4274            font-size: 14px;
4275        }
4276
4277        .productV2ContentOptions {
4278            margin-bottom: 16px;
4279        }
4280    }
4281</style>
4282<fieldset class="productV2ContentOption size" name="Magn">
4283  <div class="productV2ContentOptionLegend">Magn</div>
4284  <div class="productV2ContentOptionValues size">
4285    
4286      
4287      <div class="productV2ContentOptionValue size" data-size="10 stikur" data-variant-id="50050860712074">
4288        <input
4289          id="10 stikur"
4290          class="productV2ContentOptionValueInput"
4291          value="10 stikur"
4292          type="radio"
4293          name="Magn"
4294          
4295        >
4296            <label for="10 stikur" class="productV2ContentOptionValueLabel">
4297                <div class="free-ship-slot" aria-live="polite"></div>
4298
4299                
4300                    <span class="productV2ContentOptionValueLabelValue">
4301                    1 kassi
4302                    </span>
4303                
4304
4305                <span class="productV2ContentOptionValueLabelPackCount">
4306                    10 stikur
4307                </span>
4308            </label>
4309      </div>
4310    
4311      
4312      <div class="productV2ContentOptionValue size" data-size="30 stikur" data-variant-id="50050860744842">
4313        <input
4314          id="30 stikur"
4315          class="productV2ContentOptionValueInput"
4316          value="30 stikur"
4317          type="radio"
4318          name="Magn"
4319          checked
4320        >
4321            <label for="30 stikur" class="productV2ContentOptionValueLabel">
4322                <div class="free-ship-slot" aria-live="polite"></div>
4323
4324                
4325                    <span class="productV2ContentOptionValueLabelValue">
4326                    3 kassar
4327                    </span>
4328                
4329
4330                <span class="productV2ContentOptionValueLabelPackCount">
4331                    30 stikur
4332                </span>
4333            </label>
4334      </div>
4335    
4336      
4337      <div class="productV2ContentOptionValue size" data-size="60 stikur (FRÍ SENDING)" data-variant-id="50050860777610">
4338        <input
4339          id="60 stikur (FRÍ SENDING)"
4340          class="productV2ContentOptionValueInput"
4341          value="60 stikur (FRÍ SENDING)"
4342          type="radio"
4343          name="Magn"
4344          
4345        >
4346            <label for="60 stikur (FRÍ SENDING)" class="productV2ContentOptionValueLabel">
4347                <div class="free-ship-slot" aria-live="polite"><div class="free-ship">
4348                        <img src="https://photatoe.com/media/cache/53/d9/53d9fb797841a63b904cca962d273ad5.png" alt="" class="free-ship__icon"><span>Frí sending</span>
4349                    </div></div>
4350
4351                
4352                    <span class="productV2ContentOptionValueLabelValue">
4353                    6 kassar
4354                    </span>
4355                
4356
4357                <span class="productV2ContentOptionValueLabelPackCount">
4358                    60 stikur 
4359                </span>
4360            </label>
4361      </div>
4362    
4363      
4364  </div>
4365</fieldset>
4366
4367                      </div>
4368                    </div>
4369                
4370            
4371        </div>
4372
4373        <div class="productV2ContentOptionLegend">Kaupa</div>
4374        <div class="productV2ContentPurchaseOptions">
4375            <div class="productV2ContentPurchaseOption oneTime">
4376                <input
4377                        id="productV2ContentPurchaseOptionOnce"
4378                        name="purchase_type"
4379                        type="radio"
4380                        class="productV2ContentPurchaseOptionInput"
4381                        value="otp"
4382                        checked
4383                >
4384                <label
4385                        aria-label="Stök kaup"
4386                        for="productV2ContentPurchaseOptionOnce"
4387                        class="productV2ContentPurchaseOptionLabel"
4388                ><span class="productV2ContentPurchaseOptionLabelName">
4389                        Stök kaup
4390                        <div class="custom-discount-tag" hidden aria-hidden="true">
4391                            <span class="tag-15-green-desktop">0% afsláttur</span>
4392                            <span class="tag-15-green-mobile">0%</span>
4393                        </div>
4394                    </span>
4395
4396                    <div class="productV2ContentPurchaseOptionLabelPricesAndRadio">
4397                    <span class="productV2ContentPurchaseOptionLabelPrices">
4398                        <span class="productV2ContentPurchaseOptionLabelPricesCompare">5,985 kr</span>
4399                        <span class="productV2ContentPurchaseOptionLabelPricesReal">5,985 kr</span>
4400                        <span
4401                        class="productV2ContentPurchaseOptionLabelPricesPerStick"
4402                        data-stick-label="stikan"
4403                        >
4404                        (2 kr/ stikan)
4405                        </span>
4406                    </span>
4407
4408                    <span class="radioIcon" aria-hidden="true">
4409                        <!-- unchecked icon -->
4410                        <svg class="radioIcon__off" viewBox="0 0 24 24">
4411                        <circle cx="12" cy="12" r="10" stroke="#B3B3B3" fill="#FFFFFF" stroke-width="1"/>
4412                        </svg>
4413                        <!-- checked icon -->
4414                        <div class="radioIcon__on" >
4415                            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="21" viewBox="0 0 20 21" fill="none">
4416                            <rect y="0.5" width="20" height="20" rx="10" fill="#333333"/>
4417                            <path d="M5.83203 10.8171L9.06851 13.4257L14.6168 7.83594" stroke="white" stroke-width="2"/>
4418                            </svg>
4419                        </div>
4420                    </span>
4421                    </div>
4422                </label>
4423            </div>
4424            <div class="productV2ContentPurchaseOption subscription">
4425                <input
4426                        id="productV2ContentPurchaseOptionSubscribe"
4427                        name="purchase_type"
4428                        type="radio"
4429                        value="subscription"
4430                        class="productV2ContentPurchaseOptionInput"
4431                >
4432                <label
4433                        aria-label="Komdu í áskrift"
4434                        for="productV2ContentPurchaseOptionSubscribe"
4435                        class="productV2ContentPurchaseOptionLabel sub-card"
4436                >
4437                    <span class="popular-tag-red">🔥&nbsp;Vinsælast</span>
4438
4439                    <div class="sub-card__top">
4440                        <div class="pdp-sub__head">
4441                            <span class="productV2ContentPurchaseOptionLabelName">
4442                                Komdu í áskrift
4443                                <span class="tag-15-green-desktop" data-pdp-sub="hdr-pill">20% afsláttur</span>
4444                                <span class="tag-15-green-mobile" data-pdp-sub="hdr-pill-m">20%</span>
4445                            </span>
4446                            <span class="pdp-sub__hint" data-pdp-sub="hdr-hint">3 kassar · 30 stikur · mánaðarlega</span>
4447                        </div>
4448                        <div class="productV2ContentPurchaseOptionLabelPricesAndRadioSub">
4449                            <span class="productV2ContentPurchaseOptionLabelPrices">
4450                                <span class="productV2ContentPurchaseOptionLabelPricesCompare" data-pdp-sub="hdr-full">5.985 kr</span>
4451                                <span class="productV2ContentPurchaseOptionLabelPricesReal" data-pdp-sub="hdr-total">4.788 kr</span>
4452                                <span class="productV2ContentPurchaseOptionLabelPricesPerStick" data-pdp-sub="hdr-stick">(160 kr / stikan)</span>
4453                            </span>
4454                            <span class="radioIcon" aria-hidden="true">
4455                                <svg class="radioIcon__off" viewBox="0 0 24 24">
4456                                <circle cx="12" cy="12" r="10" stroke="#B3B3B3" fill="#FFFFFF" stroke-width="1"/>
4457                                </svg>
4458                                <div class="radioIcon__on">
4459                                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="21" viewBox="0 0 20 21" fill="none">
4460                                    <rect y="0.5" width="20" height="20" rx="10" fill="#333333"/>
4461                                    <path d="M5.83203 10.8171L9.06851 13.4257L14.6168 7.83594" stroke="white" stroke-width="2"/>
4462                                    </svg>
4463                                </div>
4464                            </span>
4465                        </div>
4466                    </div>
4467
4468                    <div class="sub-card__perks">
4469                        <div class="sub-card__perk sub-perk-brusi" hidden data-pdp-sub="perk-bottle">
4470                            <svg xmlns="http://www.w3.org/2000/svg" width="13" height="11" viewB
4470ox="0 0 13 11" fill="none">
4471                            <path d="M0.998047 5.3964L4.88182 8.65709L11.5397 1.66992" stroke="#44d62c" stroke-width="2"/>
4472                            </svg>
4473                            <span>Frír glerbrúsi</span>
4474                        </div>
4475                        <div class="sub-card__perk" data-pdp-sub="perk-ship" hidden>
4476                            <svg xmlns="http://www.w3.org/2000/svg" width="13" height="11" viewBox="0 0 13 11" fill="none">
4477                            <path d="M0.998047 5.3964L4.88182 8.65709L11.5397 1.66992" stroke="#44d62c" stroke-width="2"/>
4478                            </svg>
4479                            <span>Frí sending</span>
4480                        </div>
4481                        <div class="sub-card__perk">
4482                            <svg xmlns="http://www.w3.org/2000/svg" width="13" height="11" viewBox="0 0 13 11" fill="none">
4483                            <path d="M0.998047 5.3964L4.88182 8.65709L11.5397 1.66992" stroke="#44d62c" stroke-width="2"/>
4484                            </svg>
4485                            <span class="sub-savings-text">Sparaðu <span class="sub-savings-amount" data-pdp-sub="perk-saving">1.197 kr</span><span data-pdp-sub="perk-saving-suffix">/mán</span></span>
4486                        </div>
4487                        <div class="sub-card__perk">
4488                            <svg xmlns="http://www.w3.org/2000/svg" width="13" height="11" viewB
4488ox="0 0 13 11" fill="none">
4489                            <path d="M0.998047 5.3964L4.88182 8.65709L11.5397 1.66992" stroke="#44d62c" stroke-width="2"/>
4490                            </svg>
4491                            <span>Hættu hvenær sem er</span>
4492                        </div>
4493                    </div>
4494                </label><div class="pdp-sub__panel pdp-sub__collapse" id="pdp-sub-panel-template--22413711704202__section_product_v2_R9fnpP" data-pdp-sub="panel">
4495                  <div class="pdp-sub__inner" role="region" aria-label="Áskriftarval">
4496                    <div class="pdp-sub__body">
4497
4498                      <p class="pdp-sub__heading">Hversu margir kassar?</p>
4499                      <div class="pdp-sub__tiers" role="radiogroup" aria-label="Fjöldi kassa" data-pdp-sub="tiers"></div>
4500                      <p class="pdp-sub__note" data-pdp-sub="note">Lágmark 3 kassar · 1 kassi = 10 stikur</p>
4501
4502                      <div class="pdp-sub__hero">
4503                        <div class="pdp-sub__hero-row">
4504                          <span class="pdp-sub__hero-label">Þú sparar</span>
4505                          <span class="pdp-sub__hero-amount"><b data-pdp-sub="hero-saving">1.197 kr</b><small data-pdp-sub="hero-suffix">/mán</small></span>
4506                          <span class="pdp-sub__pct" data-pdp-sub="hero-pill">20% afsláttur</span>
4507                        </div>
4508                        <div class="pdp-sub__hero-prices">
4509                          <s data-pdp-sub="hero-full">5.985 kr</s>
4510                          <strong><span data-pdp-sub="hero-total">4.788 kr</span><small data-pdp-sub="hero-suffix-2">/mán</small></strong>
4511                          <span class="pdp-sub__hero-stick" data-pdp-sub="hero-stick">(160 kr / stikan)</span>
4512                        </div>
4513                        <div class="pdp-sub__meter" aria-hidden="true" data-pdp-sub="meter">
4514                          <span class="pdp-sub__seg is-on"></span><span class="pdp-sub__seg"></span><span class="pdp-sub__seg"></span>
4515                        </div>
4516                        <div class="pdp-sub__meter-labels" aria-hidden="true" data-pdp-sub="meter-labels">
4517                          <span class="is-on">20%</span><span>20% <i>+ brúsi</i></span><span>25% <i>+ brúsi</i></span>
4518                        </div>
4519                        <button type="button" class="pdp-sub__nudge" data-pdp-sub="nudge">Farðu í 6 kassa → frír glerbrúsi og frí sending</button>
4520                      </div>
4521
4522                      <div class="pdp-sub__rows-head">
4523                        <p class="pdp-sub__heading">Veldu bragðtegundir</p>
4524                        <span class="pdp-sub__counter" data-pdp-sub="counter" aria-live="polite">3 af 3 kössum</span>
4525                      </div>
4526                      <div class="pdp-sub__rows" data-pdp-sub="rows"></div>
4527                      <p class="pdp-sub__status" data-pdp-sub="status" role="status" aria-live="polite"></p>
4528
4529                      <div class="pdp-sub__collapse pdp-sub__gift-wrap" data-pdp-sub="gift">
4530                        <div class="pdp-sub__inner">
4531                          <div class="pdp-sub__gift">
4532                            <img class="pdp-sub__gift-img" src="https://cdn.shopify.com/s/files/1/0609/3003/1754/files/Add_a_heading-3.png?width=200" alt="" loading="lazy" onerror="this.hidden=true">
4533                            <div class="pdp-sub__gift-text">
4534                              <div class="pdp-sub__gift-kicker">Gjöf fylgir áskrift</div>
4535                              <div class="pdp-sub__gift-name">Happy Hydrate glerbrúsi</div>
4536                              <div class="pdp-sub__gift-sub">Fylgir fyrstu sendingu</div>
4537                            </div>
4538                            <div class="pdp-sub__gift-price"><s>2.995 kr</s><strong>FRÍTT</strong></div>
4539                          </div>
4540                        </div>
4541                      </div>
4542
4543                      <label class="pdp-sub__freq-wrap">
4544                        <span class="pdp-sub__freq-label">Sent</span>
4545                        <select class="pdp-sub__freq" data-pdp-sub="freq" aria-label="Hversu oft">
4546                          <option value="0">Á 2 vikna fresti</option>
4547                          <option value="1" selected>Mánaðarlega</option>
4548                          <option value="2">Á 2 mánaða fresti</option>
4549                        </select>
4550                      </label>
4551
4552                      <a class="pdp-sub__more" href="/pages/askrift-box">Vilt þú blanda saman vörum? Opna áskriftarsmiðinn →</a>
4553                    </div>
4554                  </div>
4555                </div>
4556            </div>
4557        </div>
4558        <button class="productV2ContentAtcButton button" id="primary-atc" data-pdp-sub="cta">
4559            <div style="display: flex; gap: 12px;">
4560            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewB
4560ox="0 0 24 25" fill="none" data-pdp-sub="cart-icon">
4561            <path d="M20.2131 13.0482H7.24196L5.65625 5.11963H21.5133C21.6294 5.12006 21.7438 5.1459 21.8487 5.19538C21.9535 5.24484 22.0463 5.31672 22.1204 5.40593C22.1946 5.49513 22.2482 5.59951 22.2775 5.71169C22.3068 5.82388 22.3113 5.94112 22.2903 6.0552L20.9901 12.3981C20.9598 12.5814 20.8646 12.7479 20.7221 12.8672C20.5795 12.9865 20.3989 13.0507 20.2131 13.0482Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4562            <path d="M5.65959 5.11918L4.99359 2.58204C4.95704 2.40296 4.85973 2.242 4.71814 2.12641C4.57655 2.01083 4.39938 1.94772 4.21659 1.94775H1.69531" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4563            <path d="M7.25 13.0493L7.916 16.3793C7.95257 16.5584 8.04987 16.7194 8.19145 16.8349C8.33304 16.9505 8.51023 17.0136 8.693 17.0136H18.3501" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4564            <path d="M17.5585 22.5647C17.1205 22.5647 16.7656 22.2097 16.7656 21.7719C16.7656 21.334 17.1205 20.979 17.5585 20.979C17.9963 20.979 18.3513 21.334 18.3513 21.7719C18.3513 22.2097 17.9963 22.5647 17.5585 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4565            <path d="M9.62098 22.5647C9.1831 22.5647 8.82812 22.2097 8.82812 21.7719C8.82812 21.334 9.1831 20.979 9.62098 20.979C10.0589 20.979 10.4138 21.334 10.4138 21.7719C10.4138 22.2097 10.0589 22.5647 9.62098 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4566            </svg>
4567            <span class="productV2ContentAtcButtonLabel">
4568                Bæta við körfu
4569            </span>
4570            </div>
4571                    <svg width="30" height="22" viewBox="0 0 30 22" fill="none" xmlns="http://www.w3.org/2000/svg">
4572                        <path d="M18.3955 0.634178C18.762 0.255744 19.3689 0.255744 19.7354 0.634178L28.9854 10.185V10.1859L28.9873 10.1869C28.9883 10.1879 28.9897 10.1892 28.9912 10.1908C28.9947 10.1944 28.9993 10.1997 29.0039 10.2045L29.0625 10.2729C29.1155 10.3432 29.1524 10.4184 29.1797 10.4936H29.1787C29.2269 10.6106 29.25 10.7356 29.25 10.8656C29.25 10.999 29.2256 11.1269 29.1748 11.2465L29.1758 11.2475C29.136 11.3434 29.0726 11.4333 29.0303 11.4945L29.0186 11.5121L29.0039 11.5268H29.0029L29.002 11.5277C29.0009 11.5288 28.9998 11.5308 28.998 11.5326L28.9854 11.5453L19.7354 21.0971C19.5479 21.2907 19.3065 21.3832 19.0654 21.3832C18.8547 21.3832 18.6437 21.3126 18.4688 21.1654L18.3955 21.0971C18.0335 20.7231 18.0335 20.1106 18.3955 19.7367L26.0518 11.8314H1.69336C1.16873 11.8313 0.750082 11.3875 0.75 10.8656C0.75 10.3437 1.16868 9.899 1.69336 9.89883H26.0518L18.3955 1.99453C18.0335 1.62069 18.0337 1.00814 18.3955 0.634178Z"
4573                            fill="#FFFFFF" stroke="var(--pdp-v2-atc-button-icon-fill)"
4574                            stroke-width="0.5"/>
4575                    </svg>
4576        </button>
4577        <p class="pdp-sub__trust" data-pdp-sub="trust" hidden>
4578            <svg width="13" height="11" viewBox="0 0 13 11" fill="none" aria-hidden="true"><path d="M0.998047 5.3964L4.88182 8.65709L11.5397 1.66992" stroke="#44d62c" stroke-width="2"/></svg>
4579            <span>Hættu hvenær sem er · Engin binding · Þú klárar kaupin á öruggri greiðslusíðu</span>
4580        </p>
4581
4582
4583        <div class="productV2ContentDescriptionMobile">Fylltu á söltin sem þú tapar! Natríum, kalíum og magnesíum stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi. Vertu HAPPY.</div>
4584        <button class="productV2ContentNutritionLabelButtonMobile">
4585            <svg
4586                    class="productV2VisualNutritionLabelButtonSvg"
4587                    width="44"
4588                    height="44"
4589                    viewBox="0 0 44 44"
4590                    fill="none"
4591                    xmlns="http://www.w3.org/2000/svg"
4592            >
4593                <path d="M32.0811 16.6875C33.9951 15.2025 36.168 14.7342 38.082 15.4492C40.3422 16.2908 41.7059 19.3433 41.7061 21.4717C41.7061 23.6 40.4246 25.5802 39.0771 27.1201C37.6913 28.704 36.003 30.074 34.749 30.998C34.0285 31.526 33.2251 32.1865 32.0811 32.1865C30.9371 32.1865 30.1336 31.526 29.4131 30.998C28.1646 30.074 26.4763 28.704 25.085 27.1201C23.7376 25.5858 22.4561 24.348 22.4561 21.4717C22.4562 18.5955 23.8144 16.2963 26.0801 15.4492C27.9941 14.7342 30.1671 15.2025 32.0811 16.6875ZM18.3311 27.957C19.0899 27.957 19.7058 28.5723 19.7061 29.3311C19.7061 30.0901 19.0901 30.7061 18.3311 30.7061H5.5C4.741 30.7061 4.125 30.0901 4.125 29.3311C4.12526 28.5723 4.74116 27.957 5.5 27.957H18.3311ZM37.1084 18.0293C36.1635 17.6777 34.6526 17.8633 33.0596 19.4863L33.0654 19.4922C32.8069 19.7561 32.455 19.9043 32.0811 19.9043C31.7071 19.9043 31.3551 19.7561 31.0967 19.4922L32.0752 18.5342L32.0703 18.5293L31.0859 19.4922C29.491 17.8642 27.9782 17.6773 27.0322 18.0293C26.1027 18.3758 25.1953 19.4481 25.1953 21.4775C25.1953 22.561 25.8988 23.8975 27.1416 25.3164C28.3461 26.6859 29.8536 27.924 31.0361 28.793C31.4815 29.1228 31.7072 29.2819 31.8887 29.3809C32.0146 29.4466 32.0478 29.4473 32.0752 29.4473C32.1027 29.4473 32.1362 29.4469 32.2627 29.3809C32.4442 29.2819 32.6699 29.1228 33.1152 28.793C34.2977 27.924 35.8043 26.6914 37.0088 25.3164H36.998C38.241 23.892 38.9453 23.507 38.9453 21.4775C38.9453 19.4483 38.0433 18.3759 37.1084 18.0293ZM16.5 18.7939C17.2588 18.7939 17.8747 19.4092 17.875 20.168C17.875 20.927 17.259 21.543 16.5 21.543H5.5C4.741 21.543 4.125 20.927 4.125 20.168C4.12526 19.4092 4.74116 18.7939 5.5 18.7939H16.5ZM36.6689 9.625C37.4277 9.62524 38.0439 10.2411 38.0439 11C38.0439 11.7589 37.4277 12.3748 36.6689 12.375H5.5C4.741 12.375 4.125 11.759 4.125 11C4.125 10.241 4.741 9.625 5.5 9.625H36.6689Z"
4594                      fill="var(--pdp-v2-text-color)"/>
4595            </svg>
4596            Innihaldslýsing
4597        </button>
4598    </aside>
4599
4600   
4601    </div>
4602
4603        
4604        
4605       
4606</section>
4607<div class="sticky-cart-bottom-sentinel" aria-hidden="true"></div>
4608
4609<div id="mobile-sticky-checkout-container">
4610    <button class="mobile-sticky-checkout-button button" data-pdp-sub="cta">
4611  
4612            <span style="display: flex; align-items: center;">
4613                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none" data-pdp-sub="cart-icon">
4614                <path d="M20.2131 13.0482H7.24196L5.65625 5.11963H21.5133C21.6294 5.12006 21.7438 5.1459 21.8487 5.19538C21.9535 5.24484 22.0463 5.31672 22.1204 5.40593C22.1946 5.49513 22.2482 5.59951 22.2775 5.71169C22.3068 5.82388 22.3113 5.94112 22.2903 6.0552L20.9901 12.3981C20.9598 12.5814 20.8646 12.7479 20.7221 12.8672C20.5795 12.9865 20.3989 13.0507 20.2131 13.0482Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4615                <path d="M5.65959 5.11918L4.99359 2.58204C4.95704 2.40296 4.85973 2.242 4.71814 2.12641C4.57655 2.01083 4.39938 1.94772 4.21659 1.94775H1.69531" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4616                <path d="M7.25 13.0493L7.916 16.3793C7.95257 16.5584 8.04987 16.7194 8.19145 16.8349C8.33304 16.9505 8.51023 17.0136 8.693 17.0136H18.3501" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4617                <path d="M17.5585 22.5647C17.1205 22.5647 16.7656 22.2097 16.7656 21.7719C16.7656 21.334 17.1205 20.979 17.5585 20.979C17.9963 20.979 18.3513 21.334 18.3513 21.7719C18.3513 22.2097 17.9963 22.5647 17.5585 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4618                <path d="M9.62098 22.5647C9.1831 22.5647 8.82812 22.2097 8.82812 21.7719C8.82812 21.334 9.1831 20.979 9.62098 20.979C10.0589 20.979 10.4138 21.334 10.4138 21.7719C10.4138 22.2097 10.0589 22.5647 9.62098 22.5647Z" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
4619                </svg>
4620
4621                <span class="productV2ContentAtcButtonLabel" style="margin-left: 12px;">
4622                Bæta við körfu
4623                </span>
4624
4625            </span><span id="mobile-sticky-atc-price"
4626                data-otp="5,985 kr">
4627            5,985 kr
4628            </span>
4629            
4630 
4631    </button>
4632</div>
4633
4634
4635
4636<script>
4637    document.addEventListener("DOMContentLoaded", async function () {
4638        const product = {"id":8033136181386,"title":"Hydration Xpress","handle":"hydration-xpress","description":null,"published_at":"2026-02-03T18:39:18Z","created_at":"2024-04-18T15:01:33Z","vendor":"happyhydrate","type":"","tags":[],"price":199500,"price_min":199500,"price_max":1529000,"available":true,"price_varies":true,"compare_at_price":598500,"compare_at_price_min":598500,"compare_at_price_max":1795500,"compare_at_price_varies":true,"variants":[{"id":50050860712074,"title":"Strawberry Lemonade \/ 10 stikur","option1":"Strawberry Lemonade","option2":"10 stikur","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071343242,"product_id":8033136181386,"position":1,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Strawberry Lemonade","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","variant_ids":[50050860712074,50050860744842,50050860777610,50050860810378]},"available":true,"name":"Hydration Xpress - Strawberry Lemonade \/ 10 stikur","public_title":"Strawberry Lemonade \/ 10 stikur","options":["Strawberry Lemonade","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Strawberry Lemonade","id":33624854691978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":50050860744842,"title":"Strawberry Lemonade \/ 30 stikur","option1":"Strawberry Lemonade","option2":"30 stikur","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071343242,"product_id":8033136181386,"position":1,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Strawberry Lemonade","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","variant_ids":[50050860712074,50050860744842,50050860777610,50050860810378]},"available":true,"name":"Hydration Xpress - Strawberry Lemonade \/ 30 stikur","public_title":"Strawberry Lemonade \/ 30 stikur","options":["Strawberry Lemonade","30 stikur"],"price":598500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Strawberry Lemonade","id":33624854691978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":50050860777610,"title":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","option1":"Strawberry Lemonade","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071343242,"product_id":8033136181386,"position":1,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Strawberry Lemonade","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","variant_ids":[50050860712074,50050860744842,50050860777610,50050860810378]},"available":true,"name":"Hydration Xpress - Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","public_title":"Strawberry Lemonade \/ 60 stikur (FRÍ SENDING)","options":["Strawberry Lemonade","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Strawberry Lemonade","id":33624854691978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":50050860810378,"title":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","option1":"Strawberry Lemonade","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071343242,"product_id":8033136181386,"position":1,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Strawberry Lemonade","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","variant_ids":[50050860712074,50050860744842,50050860777610,50050860810378]},"available":true,"name":"Hydration Xpress - Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","public_title":"Strawberry Lemonade \/ 90 stikur (FRÍ SENDING)","options":["Strawberry Lemonade","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Strawberry Lemonade","id":33624854691978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751436906634,"title":"Pina Colada \/ 10 stikur","option1":"Pina Colada","option2":"10 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071376010,"product_id":8033136181386,"position":3,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Pina Colada","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","variant_ids":[44751436906634,44751436939402,44751436972170,44751437004938]},"available":false,"name":"Hydration Xpress - Pina Colada \/ 10 stikur","public_title":"Pina Colada \/ 10 stikur","options":["Pina Colada","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Pina Colada","id":33624854724746,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751436939402,"title":"Pina Colada \/ 30 stikur","option1":"Pina Colada","option2":"30 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071376010,"product_id":8033136181386,"position":3,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Pina Colada","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","variant_ids":[44751436906634,44751436939402,44751436972170,44751437004938]},"available":false,"name":"Hydration Xpress - Pina Colada \/ 30 stikur","public_title":"Pina Colada \/ 30 stikur","options":["Pina Colada","30 stikur"],"price":598500,"weight":0,"compare_at_price":598500,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Pina Colada","id":33624854724746,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751436972170,"title":"Pina Colada \/ 60 stikur (FRÍ SENDING)","option1":"Pina Colada","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071376010,"product_id":8033136181386,"position":3,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Pina Colada","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","variant_ids":[44751436906634,44751436939402,44751436972170,44751437004938]},"available":false,"name":"Hydration Xpress - Pina Colada \/ 60 stikur (FRÍ SENDING)","public_title":"Pina Colada \/ 60 stikur (FRÍ SENDING)","options":["Pina Colada","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Pina Colada","id":33624854724746,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437004938,"title":"Pina Colada \/ 90 stikur (FRÍ SENDING)","option1":"Pina Colada","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071376010,"product_id":8033136181386,"position":3,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Pina Colada","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","variant_ids":[44751436906634,44751436939402,44751436972170,44751437004938]},"available":false,"name":"Hydration Xpress - Pina Colada \/ 90 stikur (FRÍ SENDING)","public_title":"Pina Colada \/ 90 stikur (FRÍ SENDING)","options":["Pina Colada","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Pina Colada","id":33624854724746,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437037706,"title":"Mixed Berries \/ 10 stikur","option1":"Mixed Berries","option2":"10 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071408778,"product_id":8033136181386,"position":4,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Mixed Berries","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","variant_ids":[44751437037706,44751437070474,44751437103242,44751437136010]},"available":true,"name":"Hydration Xpress - Mixed Berries \/ 10 stikur","public_title":"Mixed Berries \/ 10 stikur","options":["Mixed Berries","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Mixed Berries","id":33624854757514,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437070474,"title":"Mixed Berries \/ 30 stikur","option1":"Mixed Berries","option2":"30 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071408778,"product_id":8033136181386,"position":4,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Mixed Berries","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","variant_ids":[44751437037706,44751437070474,44751437103242,44751437136010]},"available":true,"name":"Hydration Xpress - Mixed Berries \/ 30 stikur","public_title":"Mixed Berries \/ 30 stikur","options":["Mixed Berries","30 stikur"],"price":598500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Mixed Berries","id":33624854757514,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437103242,"title":"Mixed Berries \/ 60 stikur (FRÍ SENDING)","option1":"Mixed Berries","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071408778,"product_id":8033136181386,"position":4,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Mixed Berries","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","variant_ids":[44751437037706,44751437070474,44751437103242,44751437136010]},"available":true,"name":"Hydration Xpress - Mixed Berries \/ 60 stikur (FRÍ SENDING)","public_title":"Mixed Berries \/ 60 stikur (FRÍ SENDING)","options":["Mixed Berries","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Mixed Berries","id":33624854757514,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437136010,"title":"Mixed Berries \/ 90 stikur (FRÍ SENDING)","option1":"Mixed Berries","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071408778,"product_id":8033136181386,"position":4,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Mixed Berries","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","variant_ids":[44751437037706,44751437070474,44751437103242,44751437136010]},"available":true,"name":"Hydration Xpress - Mixed Berries \/ 90 stikur (FRÍ SENDING)","public_title":"Mixed Berries \/ 90 stikur (FRÍ SENDING)","options":["Mixed Berries","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":1795500,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Mixed Berries","id":33624854757514,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437168778,"title":"Lemon\/Lime \/ 10 stikur","option1":"Lemon\/Lime","option2":"10 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071441546,"product_id":8033136181386,"position":5,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Lemon Lime","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","variant_ids":[44751437168778,44751437201546,44751437234314,44751437267082]},"available":true,"name":"Hydration Xpress - Lemon\/Lime \/ 10 stikur","public_title":"Lemon\/Lime \/ 10 stikur","options":["Lemon\/Lime","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Lemon Lime","id":33624854790282,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"s
4638rc":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437201546,"title":"Lemon\/Lime \/ 30 stikur","option1":"Lemon\/Lime","option2":"30 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071441546,"product_id":8033136181386,"position":5,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Lemon Lime","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","variant_ids":[44751437168778,44751437201546,44751437234314,44751437267082]},"available":true,"name":"Hydration Xpress - Lemon\/Lime \/ 30 stikur","public_title":"Lemon\/Lime \/ 30 stikur","options":["Lemon\/Lime","30 stikur"],"price":598500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Lemon Lime","id":33624854790282,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437234314,"title":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","option1":"Lemon\/Lime","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071441546,"product_id":8033136181386,"position":5,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Lemon Lime","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","variant_ids":[44751437168778,44751437201546,44751437234314,44751437267082]},"available":true,"name":"Hydration Xpress - Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","public_title":"Lemon\/Lime \/ 60 stikur (FRÍ SENDING)","options":["Lemon\/Lime","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Lemon Lime","id":33624854790282,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":44751437267082,"title":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","option1":"Lemon\/Lime","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071441546,"product_id":8033136181386,"position":5,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Lemon Lime","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","variant_ids":[44751437168778,44751437201546,44751437234314,44751437267082]},"available":true,"name":"Hydration Xpress - Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","public_title":"Lemon\/Lime \/ 90 stikur (FRÍ SENDING)","options":["Lemon\/Lime","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Lemon Lime","id":33624854790282,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45773488324746,"title":"Peach Crush \/ 10 stikur","option1":"Peach Crush","option2":"10 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071474314,"product_id":8033136181386,"position":6,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peach Crush","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","variant_ids":[45773488324746,45773488357514,45773488390282,45773488423050]},"available":true,"name":"Hydration Xpress - Peach Crush \/ 10 stikur","public_title":"Peach Crush \/ 10 stikur","options":["Peach Crush","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peach Crush","id":33624854823050,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45773488357514,"title":"Peach Crush \/ 30 stikur","option1":"Peach Crush","option2":"30 stikur","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071474314,"product_id":8033136181386,"position":6,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peach Crush","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","variant_ids":[45773488324746,45773488357514,45773488390282,45773488423050]},"available":true,"name":"Hydration Xpress - Peach Crush \/ 30 stikur","public_title":"Peach Crush \/ 30 stikur","options":["Peach Crush","30 stikur"],"price":598500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peach Crush","id":33624854823050,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45773488390282,"title":"Peach Crush \/ 60 stikur (FRÍ SENDING)","option1":"Peach Crush","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071474314,"product_id":8033136181386,"position":6,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peach Crush","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","variant_ids":[45773488324746,45773488357514,45773488390282,45773488423050]},"available":true,"name":"Hydration Xpress - Peach Crush \/ 60 stikur (FRÍ SENDING)","public_title":"Peach Crush \/ 60 stikur (FRÍ SENDING)","options":["Peach Crush","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peach Crush","id":33624854823050,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":45773488423050,"title":"Peach Crush \/ 90 stikur (FRÍ SENDING)","option1":"Peach Crush","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":"","requires_shipping":true,"taxable":true,"featured_image":{"id":42378071474314,"product_id":8033136181386,"position":6,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peach Crush","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","variant_ids":[45773488324746,45773488357514,45773488390282,45773488423050]},"available":true,"name":"Hydration Xpress - Peach Crush \/ 90 stikur (FRÍ SENDING)","public_title":"Peach Crush \/ 90 stikur (FRÍ SENDING)","options":["Peach Crush","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peach Crush","id":33624854823050,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}
4638,{"id":47230751473802,"title":"Peru \/ 10 stikur","option1":"Peru","option2":"10 stikur","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071507082,"product_id":8033136181386,"position":7,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peru","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496","variant_ids":[47230751473802,47230751506570,47230751539338,47230751572106]},"available":true,"name":"Hydration Xpress - Peru \/ 10 stikur","public_title":"Peru \/ 10 stikur","options":["Peru","10 stikur"],"price":199500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peru","id":33624854855818,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":47230751506570,"title":"Peru \/ 30 stikur","option1":"Peru","option2":"30 stikur","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071507082,"product_id":8033136181386,"position":7,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peru","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496","variant_ids":[47230751473802,47230751506570,47230751539338,47230751572106]},"available":true,"name":"Hydration Xpress - Peru \/ 30 stikur","public_title":"Peru \/ 30 stikur","options":["Peru","30 stikur"],"price":598500,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peru","id":33624854855818,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":47230751539338,"title":"Peru \/ 60 stikur (FRÍ SENDING)","option1":"Peru","option2":"60 stikur (FRÍ SENDING)","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071507082,"product_id":8033136181386,"position":7,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peru","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496","variant_ids":[47230751473802,47230751506570,47230751539338,47230751572106]},"available":true,"name":"Hydration Xpress - Peru \/ 60 stikur (FRÍ SENDING)","public_title":"Peru \/ 60 stikur (FRÍ SENDING)","options":["Peru","60 stikur (FRÍ SENDING)"],"price":1197000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peru","id":33624854855818,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}},{"id":47230751572106,"title":"Peru \/ 90 stikur (FRÍ SENDING)","option1":"Peru","option2":"90 stikur (FRÍ SENDING)","option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":{"id":42378071507082,"product_id":8033136181386,"position":7,"created_at":"2026-09-02T20:38:14Z","updated_at":"2026-09-02T20:38:16Z","alt":"Hydration Xpress Peru","width":1240,"height":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496","variant_ids":[47230751473802,47230751506570,47230751539338,47230751572106]},"available":true,"name":"Hydration Xpress - Peru \/ 90 stikur (FRÍ SENDING)","public_title":"Peru \/ 90 stikur (FRÍ SENDING)","options":["Peru","90 stikur (FRÍ SENDING)"],"price":1529000,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":null,"featured_media":{"alt":"Hydration Xpress Peru","
4638id":33624854855818,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"}},"requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","\/\/happyhydrate.is\/cdn\/shop\/files\/Comp_Christmas_transparent_e3b1eb67-6ecf-40bf-9b69-c83038d425ae.png?v=1770219035","\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"],"featured_image":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","options":["Bragð","Magn"],"media":[{"alt":"Hydration Xpress Strawberry Lemonade","id":33624854691978,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496","width":1240},{"alt":null,"id":30888208531594,"position":2,"preview_image":{"aspect_ratio":1.0,"height":3000,"width":3000,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Comp_Christmas_transparent_e3b1eb67-6ecf-40bf-9b69-c83038d425ae.png?v=1770219035"},"aspect_ratio":1.0,"height":3000,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/Comp_Christmas_transparent_e3b1eb67-6ecf-40bf-9b69-c83038d425ae.png?v=1770219035","width":3000},{"alt":"Hydration Xpress Pina Colada","id":33624854724746,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496","width":1240},{"alt":"Hydration Xpress Mixed Berries","id":33624854757514,"position":4,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-MixedBerries.png?v=1788381496","width":1240},{"alt":"Hydration Xpress Lemon Lime","id":33624854790282,"position":5,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Lime.png?v=1788381496","width":1240},{"alt":"Hydration Xpress Peach Crush","id":33624854823050,"position":6,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496","width":1240},{"alt":"Hydration Xpress Peru","id":33624854855818,"position":7,"preview_image":{"aspect_ratio":1.0,"height":1240,"width":1240,"src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496"},"aspect_ratio":1.0,"height":1240,"media_type":"image","src":"\/\/happyhydrate.is\/cdn\/shop\/files\/HappyHydrate-Vorumynd-vef-Pear.png?v=1788381496","width":1240}],"requires_selling_plan":false,"selling_plan_groups":[],"content":null};
4639        const section = document.querySelector('[id="template--22413711704202__section_product_v2_R9fnpP"]');
4640        const settings = {"product":"","title":"Hydration Xpress","short_description":"Fylltu á söltin sem þú ta
4640par! Natríum, kalíum og magnesíum stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi. Vertu HAPPY.","description":"Fylltu á söltin sem þú tapar! Natríum, kalíum og magnesíum stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi. Vertu HAPPY.","nutrition_label":"\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645","how_to_enjoy_text":"\u003cp\u003e\u003cstrong\u003eSkref 1: Hella\u003c\/strong\u003e\u003cbr\/\u003eRífðu stikuna og bættu ofan í 300 - 500 ml af vatni\u003cbr\/\u003e\u003cbr\/\u003e\u003cstrong\u003eSkref 2: Hrista\u003cbr\/\u003e\u003c\/strong\u003eHristu eða hrærðu þangað til duftið blandast við vatnið\u003cbr\/\u003e\u003cbr\/\u003e\u003cstrong\u003eSkref 3: Njóta\u003c\/strong\u003e\u003cbr\/\u003eVelkomin\/n í vökvajafnvægi\u003c\/p\u003e","hide_accordions":true};
4641
4642        // Listen for history change
4643        window.addEventListener("popstate", function () {
4644            const url = new URL(window.location.href);
4645            const elementClass = url.hash.replace("#", "");
4646            const element = document.querySelector(elementClass);
4647            if (element) {
4648                window.scrollTo({
4649                    behavior: 'smooth',
4650                    top: element.offsetTop - 161,
4651                });
4652            }
4653        });
4654     
4655
4656        const productSwiper = new Swiper(section.querySelector(".productV2VisualSwiper"), {
4657            slidesPerView: 1,
4658            allowTouchMove: false,
4659            effect: 'flip'
4660        });
4661
4662
4663     
4664  // === MOBILE THUMBNAIL CAROUSEL (3-up with chevrons) ===
4665  (function () {
4666    const sectionEl = document.querySelector('[id="template--22413711704202__section_product_v2_R9fnpP"]');
4667    if (!sectionEl) return;
4668
4669    // Containers
4670    const mobileCarousel = sectionEl.querySelector('.pdpv2-mobile-thumb-carousel');
4671    const viewport = sectionEl.querySelector('.pdpv2-thumb-viewport');
4672    const prevBtn = sectionEl.querySelector('.pdpv2-thumb-btn--prev');
4673    const nextBtn = sectionEl.querySelector('.pdpv2-thumb-btn--next');
4674
4675
4676    if (!mobileCarousel || !viewport || !prevBtn || !nextBtn) return;
4677
4678    // Only run on mobile
4679    const isMobile = () => window.matchMedia('(max-width: 1000px)').matches;
4680
4681    // Variant gallery JSON rendered in Liquid
4682    const galleryJSON = document.getElementById('variant-gallery-template--22413711704202__section_product_v2_R9fnpP');
4683    const variantGalleries = galleryJSON ? JSON.parse(galleryJSON.textContent || '{}') : {};
4684
4685    // Helper: get active variant id from data attr (set in the <section>)
4686    const initialVariantId = sectionEl.getAttribute('data-initial-variant-id');
4687
4688    // Given a variant id, build an array of image URLs:
4689    // [ mainImage (prepended) , ...variant_gallery_metafield ]
4690    function buildImageList(variantId) {
4691      // 1) Main image for variant (featured media or image)
4692      const v = product.variants.find(x => String(x.id) === String(variantId)) || product.variants[0];
4693      const mainSrc =
4694        (v && v.featured_media && v.featured_media.preview_image && v.featured_media.preview_image.src) ||
4695        (v && v.featured_image && v.featured_image.src) ||
4696        mainImg.getAttribute('src');
4697
4698      // 2) Extra gallery from metafield (Liquid JSON already normalized to absolute URLs)
4699      const extras = variantGalleries[String(variantId)] || [];
4700
4701      // Deduplicate while keeping main first
4702      const set = new Set();
4703      const list = [];
4704      function push(u){ if (u && !set.has(u)) { set.add(u); list.push(u); } }
4705      push(mainSrc);
4706      extras.forEach(push);
4707      return list;
4708    }
4709
4710    // State
4711    let images = buildImageList(initialVariantId);
4712    let center = 0; // index of the "middle" item (selected)
4713
4714    // Render exactly 3 thumbnails around `center` (circular)
4715    function renderThumbs() {
4716      viewport.innerHTML = '';
4717      if (!images.length) return;
4718
4719      const indices = [];
4720      if (images.length === 1) {
4721        indices.push(0, 0, 0);
4722      } else if (images.length === 2) {
4723        indices.push((center - 1 + images.length) % images.length, center, (center + 1) % images.length);
4724      } else {
4725        indices.push((center - 1 + images.length) % images.length, center, (center + 1) % images.length);
4726      }
4727
4728      indices.forEach((idx, slot) => {
4729        const li = document.createElement('li');
4730        if (slot === 1) li.classList.add('is-selected'); // middle = selected
4731        const img = document.createElement('img');
4732        img.alt = "Hydration Xpress";
4733        img.loading = 'lazy';
4734        img.src = images[idx];
4735        img.decoding = 'async';
4736        li.appendChild(img);
4737        viewport.appendChild(li);
4738      });
4739
4740        // Swap the main image to the selected (center) URL
4741        // We update the active slide if present, otherwise all slides (safe fallback)
4742        const activeSlideImg =
4743        sectionEl.querySelector('.productV2VisualSwiper .swiper-slide-active') ||
4744        sectionEl.querySelector('.productV2VisualSwiper .swiper-slide');
4745
4746        if (images[center]) {
4747        if (activeSlideImg) {
4748            activeSlideImg.setAttribute('src', images[center]);
4749            activeSlideImg.setAttribute('loading', 'eager');
4750        } else {
4751            // fallback: update every slide's src
4752            sectionEl.querySelectorAll('.productV2VisualSwiper .swiper-slide')
4753            .forEach(imgEl => {
4754                imgEl.setAttribute('src', images[center]);
4755                imgEl.setAttribute('loading', 'eager');
4756            });
4757        }
4758        }
4759    }
4760
4761    function goPrev() {
4762      if (!images.length) return;
4763      center = (center - 1 + images.length) % images.length;
4764      renderThumbs();
4765    }
4766    function goNext() {
4767      if (!images.length) return;
4768      center = (center + 1) % images.length;
4769      renderThumbs();
4770    }
4771
4772    prevBtn.addEventListener('click', goPrev);
4773    nextBtn.addEventListener('click', goNext);
4774
4775    // Re-build when screen switches between breakpoints
4776    const mql = window.matchMedia('(max-width: 1000px)');
4777    function handleMQ(e){
4778      if (e.matches) {
4779        mobileCarousel.hidden = false;
4780        renderThumbs();
4781      } else {
4782        mobileCarousel.hidden = true;
4783      }
4784    }
4785    handleMQ(mql);
4786    mql.addEventListener('change', handleMQ);
4787
4788    // Optional: if your product JS fires a custom event when variant changes,
4789    // listen and rebuild images so the carousel follows the selected variant.
4790    document.addEventListener('pdp:variant-change', (ev) => {
4791      const newId = ev.detail && ev.detail.id;
4792      if (!newId) return;
4793      images = buildImageList(newId);
4794      center = 0;
4795      if (isMobile()) renderThumbs();
4796    });
4797
4798    // First paint (mobile only)
4799    if (isMobile()) renderThumbs();
4800  })();
4801
4802
4803
4804
4805        
4806
4807        // Nutritional Facts
4808        function wireNutritionSection(section) {
4809            const nutritionDetails = section.querySelector("details.nutrition-tab");
4810            if (!nutritionDetails) return;
4811
4812            const dialog = section.querySelector(".productV2VisualNutritionLabelDialog");
4813            const closeBtn = section.querySelector(".productV2VisualDescriptionDesktop .productV2VisualNutritionLabelDialogCloseButton, .productV2VisualDescriptionMobile .productV2VisualNutritionLabelDialogCloseButton") || section.querySelector(".productV2VisualNutritionLabelDialogCloseButton");
4814            const dialogInner = dialog?.querySelector(".productVisualV2NutritionLabelDialogWrapper");
4815
4816            let isOpen = false;
4817
4818            function openDialog(e) {
4819                if (isOpen || !dialog) return;
4820                if (e) e.stopPropagation();
4821                dialog.showModal();
4822                isOpen = true;
4823                document.body.classList.add("noScroll");
4824            }
4825
4826            function closeDialog(e) {
4827                if (e) {
4828                e.preventDefault();
4829                e.stopPropagation(); // avoid click-through onto <summary>
4830                }
4831                if (dialog?.open) dialog.close();
4832                isOpen = false;
4833                document.body.classList.remove("noScroll");
4834                if (nutritionDetails?.open) nutritionDetails.open = false; // collapse the accordion
4835            }
4836
4837            // Open when the <details> summary is clicked (or anything that bubbles from it)
4838            nutritionDetails.addEventListener("click", (e) => {
4839                // only react when the summary itself (or its desce
4839ndants) is clicked
4840                const isOnSummary = e.target.tagName === "SUMMARY" || e.target.closest("summary");
4841                if (isOnSummary) openDialog(e);
4842            });
4843
4844            // Also handle the “zoom-in” button inside the panel, if used
4845            const zoomBtn = section.querySelector(".nutrition-open");
4846            if (zoomBtn) zoomBtn.addEventListener("click", openDialog);
4847
4848            // Close via the X button
4849            if (closeBtn) closeBtn.addEventListener("click", closeDialog);
4850
4851            // Close via ESC (dialog “cancel” event)
4852            if (dialog) {
4853                dialog.addEventListener("cancel", (e) => {
4854                e.preventDefault(); // run our cleanup
4855                closeDialog(e);
4856                });
4857
4858                // Close by clicking the backdrop (outside the inner wrapper)
4859                dialog.addEventListener("click", (e) => {
4860                if (e.target === dialog && !dialogInner?.contains(e.target)) {
4861                    closeDialog(e);
4862                }
4863                });
4864            }
4865            }
4866
4867            // Wire up BOTH desktop and mobile sections (coexist safely)
4868            document.querySelectorAll(".productV2VisualDescriptionDesktop, .productV2VisualDescriptionMobile")
4869            .forEach(wireNutritionSection);
4870
4871
4872            const flagsEl = document.getElementById("variant-flags-template--22413711704202__section_product_v2_R9fnpP");
4873            const variantFlags = flagsEl ? JSON.parse(flagsEl.textContent || "{}") : {};
4874
4875            function renderIngredientsImage(variant) {
4876                const entry = variantFlags?.[String(variant.id)];
4877                const url = entry?.ingredientsImage || "";   // may be ""
4878
4879                const imgs = document.querySelectorAll(".productNutritionFactsLabel");
4880                const zoomBtns = document.querySelectorAll(".nutrition-open");
4881
4882                imgs.forEach(img => {
4883                    if (url) {
4884                    img.src = url;            // swap image
4885                    img.hidden = false;
4886                    } else {
4887                    img.hidden = true;        // or set a fallback src
4888                    }
4889                });
4890
4891                zoomBtns.forEach(btn => {
4892                    if (url) {
4893                    btn.style.backgroundImage = `url("${url}")`;
4894                    btn.style.backgroundSize = "cover";
4895                    btn.style.backgroundPosition = "center";
4896                    } else {
4897                    btn.style.backgroundImage = "none";
4898                    }
4899                });
4900            }
4901
4902
4903
4904
4905
4906        function getActiveVariant() {
4907            // collect options from inputs
4908            const options = [];
4909            section.querySelectorAll(".productV2ContentOption").forEach((group) => {
4910                if (group.querySelector("input:checked")) {
4911                    options.push(group.querySelector("input:checked").value);
4912                }
4913            });
4914
4915            // find new variant based on the options
4916            return product.variants.find((variant) => {
4917                return JSON.stringify(variant.options) === JSON.stringify(options);
4918            });
4919        }
4920
4921        // ═══════════ PDP ÁSKRIFT PANEL (pdp-sub) ═══════════
4922        // Data tables copied from sections/sub-builder.liquid (CDN, PRODUCTS, TIERS, FREQUENCIES).
4923        // Prices are krónur (ISK, exponent 0). The server re-prices every plan at /checkout/session,
4924        // so a mismatch here is a display bug, never a money bug.
4925        const PDP_SUB = {
4926          CDN: 'https://cdn.shopify.com/s/files/1/0609/3003/1754/files/',
4927          CHECKOUT_URL: 'https://askrift.happyhydrate.is/checkout',
4928          BUILDER_URL: '/pages/askrift-box',
4929          FREE_SHIP_MIN: 8500,            // src/subscriptions/shipping.ts freeThreshold (item total)
4930          HEADER_OFFSET: 161,             // same offset the popstate handler uses
4931          STATUS_MS: 2500,
4932          // DEFAULT tier schedule (hydration / energy / kids). A category may carry its own tiers array
4933          // (creatine below); every reader goes through the module's TIERS = the ACTIVE schedule.
4934          TIERS: [
4935            { units: 3, discount: 20, freeBottle: false },
4936            { units: 6, discount: 20, freeBottle: true,  popular: true },
4937            { units: 9, discount: 25, freeBottle: true,  bestDeal: true }
4938          ],
4939          FREQUENCIES: [
4940            { count: 2, type: 'WEEK',  label: 'Á 2 vikna fresti',  suffix: ' á sendingu', phrase: 'á 2 vikna fresti' },
4941            { count: 1, type: 'MONTH', label: 'Mánaðarlega',       suffix: '/mán',         phrase: 'mánaðarlega' },
4942            { count: 2, type: 'MONTH', label: 'Á 2 mánaða fresti', suffix: ' á sendingu', phrase: 'á 2 mánaða fresti' }
4943          ],
4944          FREE_BOTTLE: { name: 'Happy Hydrate glerbrúsi', price: 2995, img: 'https://cdn.shopify.com/s/files/1/0609/3003/1754/files/Add_a_heading-3.png?width=200' },
4945          PRODUCTS: {
4946            hydration: { name: 'Hydration Xpress', sticksPerBox: 10, flavors: [
4947              { id: 'hyd-lemon',      name: 'Lemon Lime',          aliases: ['Lemon/Lime'],  sku: 'HAP-1001', price10: 1995, accent: '#44d62c', img: 'Box_Lemon_lime.png' },
4948              { id: 'hyd-berry',      name: 'Mixed Berries',       aliases: [],              sku: 'HAP-1002', price10: 1995, accent: '#ff40b6', img: 'Box_Mixed_berries.png' },
4949              { id: 'hyd-strawberry', name: 'Strawberry Lemonade', aliases: [],              sku: 'HAP-1011', price10: 1995, accent: '#ff2d55', img: 'Box_StrawberryLemonade.jpg' },
4950              { id: 'hyd-pina',       name: 'Piña Colada',         aliases: ['Pina Colada'], sku: 'HAP-1003', price10: 1995, accent: '#ffea00', img: 'Box_Pina_colada.png' },
4951              { id: 'hyd-peach',      name: 'Peach Crush',         aliases: [],              sku: 'HAP-1004', price10: 1995, accent: '#ff5338', img: 'Box_Peach_crush.png' },
4952              { id: 'hyd-pear',       name: 'Peru',                aliases: [],              sku: 'HAP-1005', price10: 1995, accent: '#e0e01b', img: 'Box_Pear.png' }
4953            ] },
4954            creatine: { name: 'Creatine Xpress', sticksPerBox: 20, tiers: [
4955              // Owner decision 2026-09-08: flat 20% from ONE box (what most creatine subscribers buy), glerbrúsi at 4.
4956              // Magn 20/40/60/80 stikur → tier 0/1/2/3; sticks per chip = units × sticksPerBox (20/40/60/80).
4957              { units: 1, discount: 20, freeBottle: false, popular: true },
4958              { units: 2, discount: 20, freeBottle: false },
4959              { units: 3, discount: 20, freeBottle: false },
4960              { units: 4, discount: 20, freeBottle: true }
4961            ], flavors: [
4962              { id: 'cre-lemon', name: 'Lemon Lime',    aliases: ['Lemon/Lime'], sku: 'HAP-2002', price10: 2890, accent: '#44d62c', img: 'Box_Lemon_Lime_Creatine.png' },
4963              { id: 'cre-berry', name: 'Mixed Berries', aliases: [],             sku: 'HAP-2001', price10: 2890, accent: '#ff40b6', img: 'Box_Mixed_Berries_Creatine.png' },
4964              { id: 'cre-peach', name: 'Peach Crush',   aliases: [],             sku: 'HAP-2003', price10: 2890, accent: '#ff5338', img: '1_544a6bca-20c1-4d68-a331-eeb0b2928098.png' }
4965            ] },
4966            energy: { name: 'Energy Xpress', sticksPerBox: 10, flavors: [
4967              { id: 'ene-apple', name: 'Epli & Kíví', aliases: ['Epli & Kiwi'], sku: 'HAP-3001', price10: 1995, accent: '#ffe900', img: 'Box_Epla_Kivi_Energy.png' }
4968            ] },
4969            kids: { name: 'Hydration Kids', sticksPerBox: 8, flavors: [
4970              { id: 'kid-berry', name: 'Mixed Berries', aliases: [],                                    sku: 'HAP-4002', price10: 1595, accent: '#ff40b6', img: 'Box_Mixed_Berries_Kids.png' },
4971              { id: 'kid-apple', name: 'Epli & Kíví',   aliases: ['Green Apple & Kiwi', 'Epli & Kiwi'], sku: 'HAP-4001', price10: 1595, accent: '#7ed957', img: 'Box_Epla_Kivi_Kids.png' }
4972            ] }
4973          }
4974        };
4975
4976        // ═══════════ HANDVIRKT UPPSELT — Stök kaup (pdp-forced) ═══════════
4977        // shop.metafields.custom.sold_out_skus lists grunnvara SKUs the owners want shown as Uppselt
4978        // regardless of inventory. The subscription panel gets that through its stock blob (isSoldOut);
4979        // this product's own Bragð × Magn variants carry NO SKU, so the Liquid above emits the forced
4980        // flavours' NAMES (#pdp-forced-soldout) and this block (a) marks the Bragð pill exactly like
4981        // snippets/product-v2-flavor-option.liquid does for a real stock-out and (b) flips `available`
4982        // to false on every product variant of that flavour — the ONE fact pickDefaultSelection() and
4983        // renderCtaOtp() read, so a cold visit never lands on the flavour and Stök kaup with it selected
4984        // shows the sold-out button on all three CTAs (primary, desktop sticky, mobile sticky).
4985        // Fail-open: a missing / malformed blob forces nothing. Runs BEFORE the panel module so its
4986        // first sync() already sees the mutated variants.
4987        // pdp-forced:logic-begin  (pure helpers; unit-tested in scratchpad/theme-work/pdp-forced.test.mjs)
4988        // Diacritics class written as the ESCAPED \u0300-\u036f range (see norm() in the panel — literal combining chars do not survive upload).
4989        function pdpForcedNorm(s) { return (s || '').toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^a-z0-9]/g, ''); }
4990        // Blob text → { skus: Set<UPPER>, names: Set<norm> }. Anything odd → empty sets (= nothing forced).
4991        function pdpForcedParse(text) {
4992            const out = { skus: new Set(), names: new Set() };
4993            let d; try { d = JSON.parse(text || ''); } catch (e) { return out; }
4994            if (!d || typeof d !== 'object') return out;
4995            (Array.isArray(d.skus) ? d.skus : []).forEach(s => { s = String(s == null ? '' : s).trim().toUpperCase(); if (s) out.skus.add(s); });
4996            (Array.isArray(d.names) ? d.names : []).forEach(n => { n = pdpForcedNorm(typeof n === 'string' ? n : ''); if (n) out.names.add(n); });
4997            return out;
4998        }
4999        // A Bragð option value is forced when it matches a forced grunnvara name, or when the panel's flavour
5000        // table maps it (name / alias) to a forced SKU — covers spelling drift such as "Lemon Lime" vs "Lemon/Lime".
5001        function pdpForcedMatches(value, forced, flavors) {
5002            const k = pdpForcedNorm((value || '').replace('(FRÍ SENDING)', ''));
5003            if (!k) return false;
5004            if (forced.names.has(k)) return true;
5005            return (flavors || []).some(f => forced.skus.has(String(f.sku || '').toUpperCase()) && (pdpForcedNorm(f.name) === k || (f.aliases || []).some(a => pdpForcedNorm(a) === k)));
5006        }
5007        // Index of the Bragð option in product.options (same name list as the Liquid Bragð loop); -1 = none.
5008        function pdpForcedFlavourIndex(optionNames) {
5009            const names = ['Bragð', 'Flavor', 'Energy Xpress (Bragð)'];
5010            return (optionNames || []).findIndex(o => names.indexOf(o && typeof o === 'object' ? o.name : o) >= 0);
5011        }
5012        // pdp-forced:logic-end
5013        (function applyForcedSoldOut() {
5014            try {
5015                const blob = document.getElementById('pdp-forced-soldout-template--22413711704202__section_product_v2_R9fnpP');
5016                const forced = pdpForcedParse(blob ? blob.textContent : '');
5017                if (!forced.skus.size && !forced.names.size) return;
5018                const catKey = section.dataset.pdpSubCategory || 'hydration';
5019                const flavors = (PDP_SUB.PRODUCTS[catKey] || PDP_SUB.PRODUCTS.hydration).flavors;
5020                const isForced = v => pdpForcedMatches(v, forced, flavors);
5021                // (a) pills — the markup the snippet renders when value.variant.available is false
5022                section.querySelectorAll('.productV2ContentOption.flavor .productV2ContentOptionValue.flavor').forEach(pill => {
5023                    const input = pill.querySelector('input');
5024                    if (!input || !isForced(input.value)) return;
5025                    pill.classList.add('is-sold-out');
5026                    if (!pill.querySelector('.productV2ContentOptionValueLabelSoldOutTag')) {
5027                        const tag = document.createElement('span'); tag.className = 'productV2ContentOptionValueLabelSoldOutTag'; tag.textContent = 'Uppselt';
5028                        const val = pill.querySelector('.productV2ContentOptionValueLabelValue');
5029                        if (val && val.parentNode) val.parentNode.insertBefore(tag, val.nextSibling);
5030                        else { const lab = pill.querySelector('label'); if (lab) lab.appendChild(tag); }
5031                    }
5032                });
5033                // (b) variants — every availability decision on this page reads product.variants[].available
5034                const fi = pdpForcedFlavourIndex(product.options);
5035                (product.variants || []).forEach(v => {
5036                    const opts = Array.isArray(v.options) ? v.options : [];
5037                    if (fi >= 0 ? isForced(opts[fi]) : opts.some(isForced)) v.available = false;
5038                });
5039            } catch (e) { console.error('[pdp-forced]', e); }
5040        })();
5041
5042        // HARD STOP fyrir Stök kaup. applyForcedSoldOut() setur v.available=false, en vid treystum
5043        // ekki a ad thad hafi tekist: hér er sjálfstæð athugun sem les blobbina upp a nytt. Skilar
5044        // ALLTAF false ef eitthvad bregst (fail-open) — uppselt-rofinn ma aldrei stoppa alla solu.
5045        function variantIsForcedSoldOut(v) {
5046            try {
5047                if (!v) return false;
5048                const blob = document.getElementById('pdp-forced-soldout-template--22413711704202__section_product_v2_R9fnpP');
5049                const forced = pdpForcedParse(blob ? blob.textContent : '');
5050                if (!forced.skus.size && !forced.names.size) return false;
5051                const catKey = section.dataset.pdpSubCategory || 'hydration';
5052                const flavors = (PDP_SUB.PRODUCTS[catKey] || PDP_SUB.PRODUCTS.hydration).flavors;
5053                const fi = pdpForcedFlavourIndex(product.options);
5054                const opts = Array.isArray(v.options) ? v.options : [];
5055                return fi >= 0
5056                    ? pdpForcedMatches(opts[fi], forced, flavors)
5057                    : opts.some(o => pdpForcedMatches(o, forced, flavors));
5058            } catch (e) { console.error('[pdp-forced] guard', e); return false; }
5059        }
5060
5061        // The panel module. JS is the SOLE authority over open/closed (.pdp-sub--open / .is-open);
5062        // mode is read from the purchase_type radio on demand, never stored. Every public method is
5063        // no-op safe: a panel exception can never break Stök kaup (see sync()).
5064        const pdpSub = (function createPdpSub() {
5065            const CAT_KEY = section.dataset.pdpSubCategory || 'hydration';
5066            const CAT = PDP_SUB.PRODUCTS[CAT_KEY] || PDP_SUB.PRODUCTS.hydration;
5067            const TIERS = CAT.tiers || PDP_SUB.TIERS, FREQ = PDP_SUB.FREQUENCIES;   // the ACTIVE category's schedule
5068            const I18N = {                       // Liquid-interpolated once, used in one place
5069                addToCart: "Bæta við körfu",
5070                soldOut:   "Uppselt"
5071            };
5072            const $ = (hook, root) => (root || section).querySelector('[data-pdp-sub="' + hook + '"]');
5073            const panel = $('panel'), magnWrap = $('magn');
5074            const el = { tiers: $('tiers'), rows: $('rows'), status: $('status'), counter: $('counter'), gift: $('gift'), nudge: $('nudge'), freq: $('freq') };
5075
5076            // Stock = the GRUNNVARA's variant availability by SKU (Liquid blob). Fail-open: a missing
5077            // or malformed blob makes every flavour sellable, exactly like the builder.
5078            let HH_STOCK = {};
5079            try { const s = document.getElementById('pdp-sub-stock-template--22413711704202__section_product_v2_R9fnpP'); if (s) HH_STOCK = JSON.parse(s.textContent) || {}; } catch (e) { HH_STOCK = {}; }
5080            const isSoldOut = f => HH_STOCK[f.sku] === false;   // strictly false; anything else = sellable
5081
5082            const state = { tierIdx: 0, freqIdx: 1, qty: {}, seeded: false, statusTimer: 0 };
5083            let renderedMode = null;             // last mode sync() rendered: true = subscription, false = otp
5084            const initAt = Date.now();
5085            let tierEls = [], rowEls = {};
5086
5087            // pdp-sub:logic-begin  (pure helpers + state logic + mutators + plan encoding; unit-tested in
5088            // scratchpad/theme-work/pdp-sub.test.mjs by extracting this block — keep it DOM-light)
5089            // ---- helpers (pure) ----
5090            function fmtISK(n) { return String(Math.round(n)).replace(/\B(?=(\d{3})+(?!\d))/g, '.') + ' kr'; }
5091            // Diacritics class written as the ESCAPED \u0300-\u036f range — literal combining chars do not
5092            // survive editors/upload reliably. norm('Lemon/Lime') === norm('Lemon Lime'); norm('Pina Colada') === norm('Piña Colada').
5093            function norm(s) { return (s || '').toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^a-z0-9]/g, ''); }
5094            function resolveFlavour(value) {
5095                if (CAT.flavors.length === 1) return CAT.flavors[0];
5096                const k = norm((value || '').replace('(FRÍ SENDING)', ''));
5097                return CAT.flavors.find(f => norm(f.name) === k || f.aliases.some(a => norm(a) === k)) || null;
5098            }
5099            function activeFlavour() { const r = section.querySelector('.productV2ContentOption.flavor input:checked'); return r ? resolveFlavour(r.value) : (CAT.flavors.length === 1 ? CAT.flavors[0] : null); }
5100            function isSub() { return section.querySelector('input[name="purchase_type"]:checked')?.value === 'subscription'; }
5101            function tier() { return TIERS[state.tierIdx]; }
5102            function units() { return tier().units; }
5103            // The Magn radio VALUE is "10 stikur" / "60 stikur (FRÍ SENDING)" — parseInt ignores the suffix.
5104            function boxesFromValue(v) { const n = parseInt(v, 10); return isNaN(n) ? 1 : Math.max(1, Math.round(n / CAT.sticksPerBox)); }
5105            function boxesFromMagn() { const r = section.querySelector('.productV2ContentOption.size input:checked'); return r ? boxesFromValue(r.value) : 1; }
5106            // Highest tier whose units fit in b (standard 1/3→0, 6→1, 9→2; creatine 1/2/3/4→0/1/2/3); below the minimum → 0.
5107            function tierFromBoxes(b) { let i = 0; for (let k = 0; k < TIERS.length; k++) if (b >= TIERS[k].units) i = k; return i; }
5108            function minUnits() { return TIERS[0].units; }
5109            function isFlat() { return TIERS.every(T => T.discount === TIERS[0].discount); }   // no savings steps → no meter, bottle-only nudge
5110            function previewTierIdx() { return tierFromBoxes(boxesFromMagn()); }
5111            function displayTierIdx() { return isSub() ? state.tierIdx : previewTierIdx(); }
5112            function perBox(f, t) { return Math.round(f.price10 * (100 - TIERS[t == null ? state.tierIdx : t].discount) / 100); }
5113            function perStick(f, t) { return Math.round(perBox(f, t) / CAT.sticksPerBox); }
5114            function sum() { return Object.keys(state.qty).reduce((a, k) => a + state.qty[k], 0); }
5115            function filled() { return CAT.flavors.filter(f => (state.qty[f.id] || 0) > 0); }
5116            function isMixed() { return filled().length >= 2; }
5117            function sellable() { return CAT.flavors.filter(f => !isSoldOut(f)); }
5118            function total() { return CAT.flavors.reduce((a, f) => a + perBox(f) * (state.qty[f.id] || 0), 0); }
5119            function full()  { return CAT.flavors.reduce((a, f) => a + f.price10 * (state.qty[f.id] || 0), 0); }
5120            function canCheckout() { return sum() === units() && sum() > 0 && filled().every(f => !isSoldOut(f)); }
5121            function headerNumbers() {           // the card always shows a number (preview tier in Stök mode)
5122                const t = displayTierIdx();
5123                if (isSub() && sum() > 0) return { full: full(), total: total(), t, units: units() };
5124                const f0 = activeFlavour() || CAT.flavors[0], n = TIERS[t].units;
5125                return { full: f0.price10 * n, total: perBox(f0, t) * n, t, units: n };
5126            }
5127            // Nudge: stepped schedule → the next tier; flat schedule → the first free-bottle tier. null → nothing left to gain.
5128            function nudgeTarget() {
5129                const i = state.tierIdx;
5130                if (isFlat()) { const b = TIERS.findIndex(T => T.freeBottle); return b > i ? b : null; }
5131                return i + 1 < TIERS.length ? i + 1 : null;
5132            }
5133            function nudgeText(t, f0) {
5134                if (t == null) return 'Þú ert á bestu kjörum';
5135                const cur = tier(), T = TIERS[t], head = 'Farðu í ' + T.units + ' kassa → ';
5136                if (T.discount > cur.discount) return head + T.discount + '% afsláttur';
5137                // "og frí sending" only when the DISCOUNTED target total clears the threshold (kids 6 × 1 276 = 7 656 → no; creatine 4 × 2 312 = 9 248 → yes).
5138                if (T.freeBottle && !cur.freeBottle) return head + 'frír glerbrúsi' + (perBox(f0, t) * T.units >= PDP_SUB.FREE_SHIP_MIN ? ' og frí sending' : '');
5139                return head.slice(0, -3);
5140            }
5141            // Row names show the PRODUCT's option value when it resolves to the flavour ("Lemon/Lime", "Epli & Kiwi",
5142            // "Green Apple & Kiwi"); a flavour absent from the PDP's Bragð values keeps the table name. Plan labels keep the table name.
5143            function optionValues() {
5144                const seen = [], add = v => { v = (v || '').trim(); if (v && seen.indexOf(v) < 0) seen.push(v); };
5145                section.querySelectorAll('.productV2ContentOption.flavor input').forEach(i => add(i.value));
5146                section.querySelectorAll('.productV2ContentOption.flavor [data-flavor]').forEach(d => add(d.getAttribute('data-flavor')));
5147                return seen;
5148            }
5149            // Requires a genuine name/alias match (resolveFlavour() maps ANY value to the single flavour of a one-flavour
5150            // category, so an unexpected option value such as "Default Title" must not become the row name).
5151            function displayName(f) {
5152                for (const raw of optionValues()) {
5153                    const v = raw.replace('(FRÍ SENDING)', '').trim(), k = norm(v);
5154                    if (k && (norm(f.name) === k || f.aliases.some(a => norm(a) === k))) return v;
5155                }
5156                return f.name;
5157            }
5158            function largestRow(excludeId) { let best = null; for (const f of CAT.flavors) { if (f.id === excludeId || isSoldOut(f)) continue; if (!best || (state.qty[f.id] || 0) > (state.qty[best.id] || 0)) best = f; } return best; }
5159            function plural(n, one, many) { return n === 1 ? one : many; }
5160
5161            // ---- mutators ----
5162            // Returns the sold-out swap message ('' when none) so onEnter can fold it into ONE status line —
5163            // a second status() call would overwrite it. The all-sold-out status is set here and stays persistent.
5164            function seedQty() {
5165                const pdp = activeFlavour();
5166                const f = pdp && !isSoldOut(pdp) ? pdp : (sellable()[0] || null);
5167                state.qty = {}; if (f) state.qty[f.id] = units();
5168                if (!f) status('Allar bragðtegundir eru uppseldar í áskrift í augnablikinu.', { persist: true, warn: true });
5169                return pdp && f && f.id !== pdp.id ? pdp.name + ' er uppselt í áskrift – ' + f.name + ' valið í staðinn.' : '';
5170            }
5171            function onEnter() {
5172                // "við stilltum á 3 kassa" is only true when the seed path ran: re-entry with a retained MIXED mix keeps its tier.
5173                const boxes = boxesFromMagn(), reseed = !isMixed(), min = minUnits(), bump = reseed && boxes < min;   // creatine (min 1) never bumps
5174                let swap = '';
5175                if (reseed) { state.tierIdx = tierFromBoxes(boxes); swap = seedQty(); } else { reconcile(); }
5176                state.seeded = true;
5177                if (bump) {
5178                    if (sellable().length) status('Áskrift er frá ' + min + ' kössum – við stilltum á ' + min + ' kassa.' + (swap ? ' ' + swap : ''));   // never overwrite the persistent all-sold-out status
5179                    pop(tierEls[0]);
5180                } else if (swap) status(swap);
5181                if (Date.now() - initAt > 1000) scrollCardIntoView();
5182            }
5183            function onLeave() { clearStatus(); }
5184            function reconcile() {               // after tier change / entry: Σ == units if possible
5185                for (const f of CAT.flavors) if (isSoldOut(f) && state.qty[f.id]) delete state.qty[f.id];
5186                let s = sum(), u = units();
5187                if (s > u) {                     // trim from the LAST row (panel order), one box at a time
5188                    for (let i = CAT.flavors.length - 1; i >= 0 && s > u; i--) {
5189                        const id = CAT.flavors[i].id;
5190                        while ((state.qty[id] || 0) > 0 && s > u) { state.qty[id]--; s--; if (!state.qty[id]) delete state.qty[id]; }
5191                    }
5192                    return {};
5193                }
5194                if (s < u) {                     // fill: active PDP flavour → largest row → first sellable
5195                    const a = activeFlavour(); const f = a && !isSoldOut(a) ? a : (largestRow() || sellable()[0] || null);
5196                    if (f) state.qty[f.id] = (state.qty[f.id] || 0) + (u - s);
5197                    return { filled: f ? u - s : 0, fillName: f ? f.name : '' };
5198                }
5199                return {};
5200            }
5201            function setTier(idx) {
5202                idx = Math.max(0, Math.min(TIERS.length - 1, idx)); if (idx === state.tierIdx) return;
5203                const before = sum(), prevPct = tier().discount;
5204                state.tierIdx = idx;
5205                const r = reconcile(); const after = sum();
5206                if (before > after) { const n = before - after; status(n === 1 ? '1 kassi fjarlægður' : n + ' kassar fjarlægðir'); }
5207                else if (r.filled) status(r.filled === 1 ? '1 kassa bætt við ' + r.fillName : r.filled + ' kössum bætt við ' + r.fillName);
5208                if (tier().discount !== prevPct) flash($('hero-pill'));
5209                renderAll(getActiveVariant());
5210            }
5211            function setQty(fid, delta) {
5212                const f = CAT.flavors.find(x => x.id === fid); if (!f) return;
5213                if (delta > 0) {
5214                    if (isSoldOut(f)) return;
5215                    if (sum() >= units()) { fullHint(); return; }      // no swap — feedback only
5216                    state.qty[fid] = (state.qty[fid] || 0) + 1;
5217                } else {
5218                    if (!(state.qty[fid] > 0)) return;
5219                    state.qty[fid]--; if (!state.qty[fid]) delete state.qty[fid];
5220                }
5221                renderAll(getActiveVariant());
5222            }
5223            function fullHint() {
5224                const next = state.tierIdx + 1 < TIERS.length ? TIERS[state.tierIdx + 1].units : null;
5225                status('Pakkinn er fullur – fækkaðu annað bragð til að skipta', { link: next ? { text: 'Viltu ' + next + ' k
5225assa?', onClick: () => setTier(state.tierIdx + 1) } : null });
5226            }
5227            function onFlavourChange() {
5228                if (!isSub()) return;
5229                const f = activeFlavour(); if (!f) return;
5230                if (isSoldOut(f)) { status(f.name + ' er uppselt í áskrift'); return; }
5231                if (!isMixed()) { state.qty = {}; state.qty[f.id] = units(); }   // "follow" — mixed boxes stay put
5232                renderAll(getActiveVariant());   // updateProduct's sync() already ran; this applies the follow
5233            }
5234            function setFreq(idx) { state.freqIdx = Math.max(0, Math.min(FREQ.length - 1, idx | 0)); renderAll(getActiveVariant()); }
5235            function status(text, o) {           // inline, aria-live, transient unless persist
5236                o = o || {}; clearTimeout(state.statusTimer);
5237                if (!el.status) return;
5238                el.status.textContent = text; el.status.classList.toggle('is-warn', !!o.warn);
5239                if (o.link) { const b = document.createElement('button'); b.type = 'button'; b.textContent = o.link.text; b.addEventListener('click', o.link.onClick); el.status.appendChild(b); }
5240                if (!o.persist) state.statusTimer = setTimeout(clearStatus, PDP_SUB.STATUS_MS);
5241            }
5242            function clearStatus() { if (!el.status) return; el.status.textContent = ''; el.status.classList.remove('is-warn'); }
5243            function pop(node) { if (!node) return; node.classList.remove('pdp-sub__tier--pop'); void node.offsetWidth; node.classList.add('pdp-sub__tier--pop'); }
5244            function flash(node) { if (!node) return; node.classList.add('is-flash'); setTimeout(() => node.classList.remove('is-flash'), 300); }
5245
5246            // ---- plan encoding (builder-identical; the checkout decodes with plain atob) ----
5247            function buildPlan() {
5248                const f = FREQ[state.freqIdx];
5249                const items = CAT.flavors.filter(x => (state.qty[x.id] || 0) > 0)
5250                    .map(x => ({ flavourId: x.id, quantity: state.qty[x.id], label: CAT.name + ' ' + x.name }));
5251                return { tierBoxes: units(), intervalType: f.type, intervalCount: f.count, items };
5252            }
5253            function encodePlan(plan) { return btoa(JSON.stringify(plan)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, ''); }
5254            // btoa THROWS above U+00FF: strip such a label (display-only) to ASCII so no flavour name can strand a customer.
5255            function asciiLabels(plan) { return Object.assign({}, plan, { items: plan.items.map(i => Object.assign({}, i, { label: i.label.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/[^\x20-\x7E]/g, '') })) }); }
5256            // pdp-sub:logic-end
5257
5258            function goToCheckout(btn) {
5259                if (!canCheckout()) { status(sellable().length ? 'Veldu ' + (units() - sum()) + ' kassa til viðbótar' : 'Uppselt í áskrift', { warn: true }); return; }   // no .loading left behind
5260                const plan = buildPlan();
5261                let url; try { url = PDP_SUB.CHECKOUT_URL + '#plan=' + encodePlan(plan); } catch (e) { url = PDP_SUB.CHECKOUT_URL + '#plan=' + encodePlan(asciiLabels(plan)); }
5262                try { if (typeof fbq === 'function') fbq('track', 'InitiateCheckout', { value: total(), currency: 'ISK', content_type: 'product', num_items: plan.items.length, order_type: 'subscription' }); } catch (e) { console.warn('[pdp-sub] fbq', e); }
5263                ctaButtons().forEach(b => b.classList.add('loading'));
5264                window.location.href = url;
5265            }
5266
5267            // ---- mobile scroll: wait for the Magn collapse to finish (the card moves UP by the Magn height) ----
5268            function scrollCardIntoView() {
5269                if (!window.matchMedia('(max-width: 1000px)').matches) return;
5270                const card = section.querySelector('.productV2ContentPurchaseOption.subscription'); if (!card) return;
5271                const reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
5272                const go = () => {
5273                    const r = card.getBoundingClientRect();
5274                    if (r.top >= 0 && r.top <= window.innerHeight * 0.45) return;   // already comfortably in view
5275                    window.scrollTo({ top: window.scrollY + r.top - PDP_SUB.HEADER_OFFSET, behavior: reduce ? 'auto' : 'smooth' });
5276                };
5277                // Measure AFTER renderMode() has toggled the classes (same task): with reduced motion the Magn
5278                // collapse is instant, so a synchronous measurement here would be off by the full Magn he
5278ight.
5279                if (reduce || !magnWrap) { requestAnimationFrame(go); return; }
5280                let done = false;
5281                const once = () => { if (done) return; done = true; magnWrap.removeEventListener('transitionend', onEnd); go(); };
5282                const onEnd = e => { if (e.propertyName === 'grid-template-rows') once(); };
5283                magnWrap.addEventListener('transitionend', onEnd); setTimeout(once, 420);
5284            }
5285
5286            // ---- renderers (idempotent) ----
5287            function setHook(hook, text) { const n = $(hook); if (n) n.textContent = text; }
5288            function renderMode(sub) {
5289                section.classList.toggle('pdp-sub--open', sub);
5290                if (panel) panel.classList.toggle('is-open', sub);
5291                if (magnWrap) { magnWrap.classList.toggle('is-open', !sub); magnWrap.toggleAttribute('inert', sub); magnWrap.setAttribute('aria-hidden', String(sub)); }
5292                const trust = $('trust'); if (trust) trust.hidden = !sub;
5293                document.querySelectorAll('[data-pdp-sub="cart-icon"]').forEach(i => { if (sub) i.setAttribute('hidden', ''); else i.removeAttribute('hidden'); });
5294            }
5295            function renderTiers() {
5296                tierEls.forEach((b, i) => {
5297                    const T = TIERS[i], sel = i === state.tierIdx;
5298                    b.setAttribute('aria-checked', String(sel)); b.classList.toggle('is-selected', sel); b.tabIndex = sel ? 0 : -1;
5299                    b.querySelector('.pdp-sub__tier-n').textContent = String(T.units);
5300                    b.querySelector('.pdp-sub__tier-sticks').textContent = (T.units * CAT.sticksPerBox) + ' stikur';
5301                    b.querySelector('.pdp-sub__tier-pill').textContent = T.discount + '% afsláttur';
5302                    b.querySelector('.pdp-sub__tier-gift').hidden = !T.freeBottle;
5303                    const badge = b.querySelector('.pdp-sub__tier-badge');
5304                    badge.textContent = T.popular ? '🔥 Vinsælast' : (T.bestDeal ? 'Best kjör' : ''); badge.hidden = !(T.popular || T.bestDeal);
5305                    badge.classList.toggle('is-best', !!T.bestDeal);
5306                });
5307                const min = minUnits();   // "Lágmark" only when the schedule starts above one box
5308                setHook('note', (min > 1 ? 'Lágmark ' + min + ' kassar · ' : '') + '1 kassi = ' + CAT.sticksPerBox + ' stikur');
5309            }
5310            function renderHero() {
5311                const H = headerNumbers(), sfx = FREQ[state.freqIdx].suffix, f0 = activeFlavour() || CAT.flavors[0];
5312                setHook('hero-saving', fmtISK(H.full - H.total)); setHook('hero-suffix', sfx); setHook('hero-suffix-2', sfx);
5313                setHook('hero-pill', TIERS[H.t].discount + '% afsláttur');
5314                setHook('hero-full', fmtISK(H.full)); setHook('hero-total', fmtISK(H.total));
5315                setHook('hero-stick', '(' + fmtISK(perStick(f0, H.t)) + ' / stikan)');
5316                // The meter shows the SAVINGS steps (20 → 20+brúsi → 25); a flat schedule (creatine) has none → hidden.
5317                const flat = isFlat();
5318                const meter = $('meter'); if (meter) { meter.hidden = flat; Array.from(meter.children).forEach((s, i) => s.classList.toggle('is-on', i <= state.tierIdx)); }
5319                const labels = $('meter-labels'); if (labels) { labels.hidden = flat; Array.from(labels.children).forEach((s, i) => s.classList.toggle('is-on', i <= state.tierIdx)); }
5320                if (el.nudge) {
5321                    const t = nudgeTarget();
5322                    el.nudge.textContent = nudgeText(t, f0);
5323                    const nudgeOff = t == null;
5324                    if (nudgeOff && document.activeElement === el.nudge) { const c = tierEls[state.tierIdx]; if (c) c.focus(); }   // no focus drop at the top tier
5325                    el.nudge.disabled = nudgeOff;
5326                }
5327            }
5328            function renderRows() {
5329                const af = activeFlavour(), boxFull = sum() >= units(), single = CAT.flavors.length === 1;
5330                CAT.flavors.forEach(f => {
5331                    const r = rowEls[f.id]; if (!r) return;
5332                    const q = state.qty[f.id] || 0, so = isSoldOut(f);
5333                    r.row.classList.toggle('has-qty', q > 0); r.row.classList.toggle('is-soldout', so); r.row.classList.toggle('is-active', !!af && af.id === f.id);
5334                    r.so.hidden = !so;
5335                    r.s.textContent = fmtISK(f.price10); r.now.data = ' ' + fmtISK(perBox(f));
5336                    r.count.textContent = single ? q + ' ' + plural(q, 'kassi', 'kassar') : String(q);
5337                    // Names carry the live count so a screen reader hears "which flavour, how many" after each press.
5338                    const qTxt = ', ' + q + ' ' + plural(q, 'kassi valinn', 'kassar valdir');
5339                    r.minus.setAttribute('aria-label', 'Fækka ' + r.label + qTxt);
5340                    r.plus.setAttribute('aria-label', 'Fjölga ' + r.label + qTxt);
5341                    // Disabling the focused − at 0 would drop focu
5341s to <body>: hand it to the row's + first.
5342                    const minusOff = so || q === 0;
5343                    if (minusOff && !so && document.activeElement === r.minus) r.plus.focus();
5344                    r.minus.disabled = minusOff;
5345                    r.plus.disabled = so;                                   // sold out: never fires
5346                    r.plus.setAttribute('aria-disabled', String(so || boxFull));   // full: fires, shows the hint
5347                });
5348            }
5349            function renderCounter() {
5350                if (!el.counter) return;
5351                const s = sum(), u = units(), short = s < u;
5352                el.counter.textContent = short ? 'Vantar ' + (u - s) + ' kassa' : s + ' af ' + u + ' ' + plural(u, 'kassa', 'kössum');
5353                el.counter.classList.toggle('is-short', short);
5354            }
5355            function renderGift() { if (el.gift) el.gift.classList.toggle('is-open', !!tier().freeBottle); }
5356            function renderHeader() {            // the sub card, BOTH modes (preview tier in Stök mode)
5357                const H = headerNumbers(), pct = TIERS[H.t].discount, F = FREQ[state.freqIdx], f0 = activeFlavour() || CAT.flavors[0];
5358                setHook('hdr-pill', pct + '% afsláttur'); setHook('hdr-pill-m', pct + '%');
5359                setHook('hdr-full', fmtISK(H.full)); setHook('hdr-total', fmtISK(H.total));
5360                setHook('hdr-stick', '(' + fmtISK(perStick(f0, H.t)) + ' / stikan)');
5361                setHook('hdr-hint', H.units + ' ' + plural(H.units, 'kassi', 'kassar') + ' · ' + (H.units * CAT.sticksPerBox) + ' stikur · ' + F.phrase);
5362                setHook('perk-saving', fmtISK(H.full - H.total)); setHook('perk-saving-suffix', F.suffix);
5363                const pb = $('perk-bottle'); if (pb) pb.hidden = !TIERS[H.t].freeBottle;
5364                const ps = $('perk-ship'); if (ps) ps.hidden = H.total < PDP_SUB.FREE_SHIP_MIN;
5365            }
5366            // The ONE writer of the three CTA buttons + sticky prices/quantity text.
5367            function ctaButtons() { return Array.from(document.querySelectorAll('[data-pdp-sub="cta"]')); }
5368            function setLabel(b, t) { const l = b.querySelector('.productV2ContentAtcButtonLabel'); if (l) l.textContent = t; }
5369            function setText(sel, t) { const n = document.querySelector(sel); if (n) n.textContent = t; }
5370            function renderCtaOtp(v) {
5371                const ok = !!(v && v.available);
5372                ctaButtons().forEach(b => { b.toggleAttribute('disabled', !ok); setLabel(b, ok ? I18N.addToCart : I18N.soldOut); const sep = b.querySelector('[data-pdp-sub="sep"]'); if (sep) sep.hidden = false; });
5373                const str = v && typeof price === 'function' ? price(v.price, { removeTrailingZeros: true }) : '';   // theme helper, CENTS — Stök only
5374                setText('#sticky-atc-price', str); setText('#mobile-sticky-atc-price', str);
5375            }
5376            function renderCtaSub() {
5377                const ok = canCheckout(), short = units() - sum();
5378                const label = ok ? 'Ganga frá áskrift' : (sellable().length ? 'Veldu ' + short + ' kassa til viðbótar' : 'Uppselt í áskrift');
5379                const tot = ok ? fmtISK(total()) : '';
5380                ctaButtons().forEach(b => { b.toggleAttribute('disabled', !ok); setLabel(b, b.id === 'primary-atc' && ok ? label + ' · ' + tot : label); const sep = b.querySelector('[data-pdp-sub="sep"]'); if (sep) sep.hidden = !ok; });
5381                setText('#sticky-atc-price', tot); setText('#mobile-sticky-atc-price', tot);
5382                setText('.sticky-cart-footer-product-quantity', 'Áskrift · ' + units() + ' ' + plural(units(), 'kassi', 'kassar'));
5383            }
5384            function renderCta(v) { if (isSub()) renderCtaSub(); else renderCtaOtp(v); }
5385            function assertInvariants() {        // warn, never throw
5386                const s = sum(), u = units();
5387                if (s < 0 || s > u) console.warn('[pdp-sub] invariant', 'sum out of range', s, u);
5388                Object.keys(state.qty).forEach(k => {
5389                    const f = CAT.flavors.find(x => x.id === k);
5390                    if (!f) console.warn('[pdp-sub] invariant', 'foreign flavour id', k);
5391                    else if (isSoldOut(f) && state.qty[k] > 0) console.warn('[pdp-sub] invariant', 'sold-out flavour has qty', k);
5392                });
5393                if (isSub()) { const b = document.getElementById('primary-atc'); if (b && b.hasAttribute('disabled') === canCheckout()) console.warn('[pdp-sub] invariant', 'CTA gate mismatch', canCheckout()); }
5394            }
5395            function renderAll(v) { renderTiers(); renderHero(); renderRows(); renderCounter(); renderGift(); renderHeader(); renderCta(v); assertInvariants(); }
5396
5397            function sync() {
5398                const v = getActiveVariant();
5399                try {
5400                    const sub = isSub();
5401                    if (sub !== renderedMode) { renderedMode = sub; if (sub) onEnter(); else onLeave(); }
5402                    renderMode(sub); renderAll(v);
5403                } catch (e) {
5404                    console.error('[pdp-sub] sync', e);
5405                    try { renderCtaOtp(v); } catch (e2) { console.error('[pdp-sub] cta fallback', e2); }   // Stök labels/prices always land
5406                }
5407            }
5408
5409            // ---- builders (init, once; names come from our table only) ----
5410            function mk(tag, cls, text) { const n = document.createElement(tag); if (cls) n.className = cls; if (text != null) n.textContent = text; return n; }
5411            function buildTiers() {
5412                if (!el.tiers) return;
5413                const frag = document.createDocumentFragment(); tierEls = [];
5414                TIERS.forEach((T, i) => {
5415                    const unit = plural(T.units, 'kassi', 'kassar');
5416                    const b = mk('button', 'pdp-sub__tier'); b.type = 'button'; b.setAttribute('role', 'radio'); b.setAttribute('aria-checked', 'false'); b.dataset.tierIdx = String(i); b.setAttribute('aria-label', T.units + ' ' + unit);
5417                    const badge = mk('span', 'pdp-sub__tier-badge'); badge.hidden = true;
5418                    const gift = mk('span', 'pdp-sub__tier-gift', '+ gjöf'); gift.hidden = true;
5419                    b.append(badge, mk('span', 'pdp-sub__tier-n'), mk('span', 'pdp-sub__tier-unit', unit), mk('span', 'pdp-sub__tier-sticks'), mk('span', 'pdp-sub__tier-pill'), gift);
5420                    frag.appendChild(b); tierEls.push(b);
5421                });
5422                el.tiers.dataset.count = String(TIERS.length);   // CSS: 4 chips → 4 columns (2×2 ≤ 1000px)
5423                el.tiers.textContent = ''; el.tiers.appendChild(frag);
5424                el.tiers.addEventListener('keydown', e => {          // radiogroup semantics: arrows move the selection
5425                    let d = 0; if (e.key === 'ArrowRight' || e.key === 'ArrowDown') d = 1; else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') d = -1; else return;
5426                    e.preventDefault(); setTier(state.tierIdx + d); const c = tierEls[state.tierIdx]; if (c) c.focus();
5427                });
5428            }
5429            function buildRows() {
5430                if (!el.rows) return;
5431                const frag = document.createDocumentFragment(); rowEls = {};
5432                CAT.flavors.forEach(f => {
5433                    const row = mk('div', 'pdp-sub__row'); row.dataset.fid = f.id; row.style.setProperty('--accent', f.accent);
5434                    const thumb = mk('div', 'pdp-sub__thumb');
5435                    const img = document.createElement('img'); img.src = PDP_SUB.CDN + f.img + '?width=160'; img.alt = ''; img.loading = 'lazy'; img.addEventListener('error', () => { img.hidden = true; });
5436                    thumb.appendChild(img);
5437                    const main = mk('div', 'pdp-sub__row-main');
5438                    const label = displayName(f);   // the PDP's own option value when it resolves to this flavour
5439                    const name = mk('div', 'pdp-sub__row-name', label); const so = mk('span', 'pdp-sub__soldout', 'Uppselt'); so.hidden = true; name.appendChild(so);
5440                    const meta = mk('div', 'pdp-sub__row-meta'); meta.appendChild(mk('span', null, CAT.sticksPerBox + ' stikur'));
5441                    const priceEl = mk('span', 'pdp-sub__row-price'); const s = mk('s'); const now = document.createTextNode(''); priceEl.append(s, now); meta.appendChild(priceEl);
5442                    main.append(name, meta);
5443                    const stepper = mk('div', 'pdp-sub__stepper');
5444                    const minus = mk('button', 'pdp-sub__step', '−'); minus.type = 'button'; minus.dataset.step = '-1'; minus.setAttribute('aria-label', 'Fækka ' + label);
5445                    const count = mk('span', 'pdp-sub__count', '0'); count.dataset.pdpSub = 'count';
5446                    const plus = mk('button', 'pdp-sub__step', '+'); plus.type = 'button'; plus.dataset.step = '1'; plus.setAttribute('aria-label', 'Fjölga ' + label);
5447                    stepper.append(minus, count, plus);
5448                    row.append(thumb, main, stepper); frag.appendChild(row);
5449                    rowEls[f.id] = { row, s, now, count, minus, plus, so, label };
5450                });
5451                el.rows.textContent = ''; el.rows.appendChild(frag);
5452                if (panel) panel.classList.toggle('pdp-sub--single', CAT.flavors.length === 1);
5453            }
5454
5455            // ---- event wiring ----
5456            function wire() {
5457                section.addEventListener('change', e => {
5458                    const t = e.target;
5459                    if (t.name === 'purchase_type') return sync();                                         // idempotent; updateProduct already ran (target phase)
5460                    if (t.closest && t.closest('.productV2ContentOption.flavor')) return onFlavourChange();   // also fired by the mobile #flavor-dd
5461                    if (t === el.freq) return setFreq(Number(t.value));
5462                    // Magn changes only happen in Stök mode (wrapper is inert in Áskrift); updateProduct → sync() re-renders the preview header.
5463                });
5464                if (panel) panel.addEventListener('click', e => {
5465                    const step = e.target.closest('.pdp-sub__step');
5466                    if (step) { const row = step.closest('.pdp-sub__row'); if (row && !step.disabled) setQty(row.dataset.fid, Number(step.dataset.step)); return; }
5467                    const chip = e.target.closest('.pdp-sub__tier'); if (chip) return setTier(Number(chip.dataset.tierIdx));
5468                    if (e.target.closest('[data-pdp-sub="nudge"]')) { const t = nudgeTarget(); if (t != null) setTier(t); return; }
5469                });
5470                window.addEventListener('pageshow', e =>
5470 { if (e.persisted) { ctaButtons().forEach(b => b.classList.remove('loading')); sync(); } });
5471            }
5472
5473            function init() { try { buildTiers(); buildRows(); wire(); } catch (e) { console.error('[pdp-sub] init', e); } sync(); }
5474            init();
5475            return { sync, isSub, goToCheckout, onFlavourChange, setFreq, buildPlan };
5476        })();
5477
5478         
5479
5480
5481        // ---- Variant gallery updater (no network) ----
5482        const galleryEl = section.querySelector(".productV2VisualVariantGallery");
5483        const galleryJSONEl = document.getElementById("variant-gallery-template--22413711704202__section_product_v2_R9fnpP");
5484        const variantGalleryMap = galleryJSONEl ? JSON.parse(galleryJSONEl.textContent || "{}") : {};
5485
5486        function renderVariantGallery(variant) {
5487            if (!galleryEl) return;
5488            const urls = variantGalleryMap[String(variant.id)] || [];
5489
5490            // Clear existing images
5491            galleryEl.innerHTML = "";
5492
5493            if (!urls.length) {
5494                galleryEl.hidden = true; // hide when no images
5495                return;
5496            }
5497
5498            galleryEl.hidden = false;
5499
5500            const frag = document.createDocumentFragment();
5501            urls.forEach((u) => {
5502                const img = document.createElement("img");
5503                img.src = u;
5504                img.alt = variant.title || "Hydration Xpress";
5505                img.loading = "lazy";
5506                // you said don't worry about styles; keeping minimal attrs
5507                img.style.display = "block";
5508                img.style.maxWidth = "100%";
5509                img.style.height = "auto";
5510                img.style.backgroundColor = "#EFEFF1";
5511                frag.appendChild(img);
5512            });
5513            galleryEl.appendChild(frag);
5514        }
5515
5516
5517
5518        function renderFreeShippingBadges() {
5519            // Grab all size option nodes inside this section
5520            const sizeNodes = section.querySelectorAll('.productV2ContentOptionValue.size');
5521
5522            if (!sizeNodes.length) return;
5523
5524
5525
5526            console.log("NEW------------------------------------")
5527
5528            sizeNodes.forEach(node => {
5529
5530                console.log(node);
5531                const slot = node.querySelector('.free-ship-slot');
5532                if (!slot) return;
5533
5534                console.log("slot", slot);
5535
5536                const variantId = String(node.dataset.variantId);
5537
5538
5539                //nothing logs after this what is this breaking down below, the line baove works fine
5540
5541                const hasFree = variantFlags?.[variantId]?.freeShipping;
5542
5543                console.log("hasFree", hasFree);
5544
5545                
5546                if (!hasFree) {
5547                slot.innerHTML = '';
5548                return;
5549                }
5550
5551                slot.innerHTML = `
5552                <div class="free-ship" role="status" aria-live="polite">
5553                    <img src="https://photatoe.com/media/cache/53/d9/53d9fb797841a63b904cca962d273ad5.png" alt="" class="free-ship__icon"><span>Frí sending</span>
5554                </div>
5555                `;
5556
5557            });
5558
5559        }
5560
5561
5562        function renderNewBadge(variant) {
5563            const badge = section.querySelector(".productV2VisualSwiperNewTag");
5564            if (!badge) return;
5565            const isNew = !!(variantFlags?.[String(variant.id)]?.isNew);
5566            badge.hidden = !isNew; // show when true, hide when false
5567        }
5568
5569        function renderLimitedBadge(variant) {
5570            const badge = section.querySelector(".productV2VisualSwiperLimitedTag");
5571            if (!badge) return;
5572            const isLimited = !!(variantFlags?.[String(variant.id)]?.isLimited);
5573            badge.hidden = !isLimited; // show when true, hide when false
5574        }
5575
5576        function renderDiscountBadge(variant) {
5577            const badge = section.querySelector(".productV2VisualSwiperDiscountTag");
5578            if (!badge) return;
5579
5580            const id = String(variant.id);
5581            const discount = Number(variantFlags?.[id]?.discountPercentage ?? 0);
5582
5583            // show only when discount > 0
5584            badge.hidden = !(discount > 0);
5585
5586            // update text when shown
5587            if (!badge.hidden) {
5588                badge.textContent = `${discount}% afsláttur`;
5589            }
5590        }
5591
5592        function renderPurchaseOptionDiscount(variant) {
5593            const id = String(variant.id);
5594            const option = section.querySelector(".productV2ContentPurchaseOption.oneTime");
5595            if (!option) return;
5596
5597            const tagWrap = section.querySelector(".custom-discount-tag");
5598            const stickPriceEl = option.querySelector(".productV2ContentPurchaseOptionLabelPricesPerStick");
5599            const discount = Number(variantFlags?.[id]?.discountPercentage ?? 0);
5600            const perStickCents = Number(variantFlags?.[id]?.perStickCents ?? 0);
5601
5602            // ---- Badge (desktop + mobile)
5603            if (tagWrap) {
5604                const shouldShow = discount > 0;
5605                tagWrap.hidden = !shouldShow;
5606                tagWrap.setAttribute("aria-hidden", String(!shouldShow));
5607
5608                if (shouldShow) {
5609                const desktop = tagWrap.querySelector(".tag-15-green-desktop");
5610                const mobile  = tagWrap.querySelector(".tag-15-green-mobile");
5611                if (desktop) desktop.textContent = `${discount}% afsláttur`;
5612                if (mobile)  mobile.textContent  = `${discount}%`;
5613                }
5614            }
5615
5616            // ---- Per-stick price: discounted = base * (100 - discount) / 100
5617            if (stickPriceEl) {
5618                const pct = Math.max(0, Math.min(100, 100 - discount)); // clamp 0..100
5619                const discountedCents = Math.round(perStickCents * pct);
5620
5621                // Reuse your existing price() formatter
5622                const unit = stickPriceEl.getAttribute("data-stick-label") || "stick";
5623                stickPriceEl.textContent = `(${price(discountedCents, { removeTrailingZeros: true, roundDown: true })} / ${unit})`;
5624            }
5625        }
5626
5627
5628        function cleanLabel(s) {
5629        return (s || '').replace('(FRÍ SENDING)', '').trim();
5630        }
5631
5632        function bestImageUrlFromVariant(v) {
5633        var src = v?.featured_media?.preview_image?.src || v?.featured_image?.src || '';
5634        // request 2000px variant if your CDN supports the _{width}x convention
5635        return src ? src.replace(/(\.(jpg|jpeg|png|webp))(?:\?.*)?$/i, '_2000x$1') : '';
5636        }
5637
5638        function updateStickyCart(variant) {
5639        if (!variant) return;
5640
5641        // --- image ---
5642        var stickyImg = section.querySelector('#sticky-variant-image');
5643        if (stickyImg) {
5644            var newSrc = bestImageUrlFromVariant(variant);
5645            if (newSrc) stickyImg.src = newSrc;
5646            stickyImg.alt = variant.title || stickyImg.alt || '';
5647        }
5648
5649        // --- flavour text (uses index emitted by Liquid) ---
5650        var flavEl = section.querySelector('#sticky-variant-flavour');
5651        if (flavEl) {
5652            var fIdx = parseInt(flavEl.dataset.flavourIndex || '
5652-1', 10);
5653            if (!isNaN(fIdx) && Array.isArray(variant.options)) {
5654            flavEl.textContent = cleanLabel(variant.options[fIdx]);
5655            }
5656        }
5657
5658        // --- stikur label (uses index emitted by Liquid) ---
5659        var qtyEl = section.querySelector('.sticky-cart-footer-product-quantity');
5660        if (qtyEl) {
5661            var qIdx = parseInt(qtyEl.dataset.quantityIndex || '-1', 10);
5662            if (!isNaN(qIdx) && Array.isArray(variant.options)) {
5663            qtyEl.textContent = cleanLabel(variant.options[qIdx]);
5664            }
5665        }
5666        }
5667
5668(function () {
5669  const section = document.querySelector('section.productV2');
5670  const bar = document.querySelector('.sticky-cart-footer');
5671  const pageFooter = document.getElementById('footer');
5672  if (!section || !bar) return;
5673
5674  // Ensure a bottom sentinel exists right AFTER the section (optional)
5675  let bottomSentinel = document.querySelector('.sticky-cart-bottom-sentinel');
5676  if (!bottomSentinel) {
5677    bottomSentinel = document.createElement('div');
5678    bottomSentinel.className = 'sticky-cart-bottom-sentinel';
5679    section.insertAdjacentElement('afterend', bottomSentinel);
5680  }
5681
5682  function viewportHasSpace() {
5683    const h = bar.getBoundingClientRect().height || 80;
5684    return window.innerHeight > h + 100;
5685  }
5686
5687  function evaluate() {
5688    const barH = bar.getBoundingClientRect().height || 80;
5689    const primaryAtc = document.getElementById('primary-atc');
5690
5691    // Show as soon as the primary ATC button scrolls above the viewport
5692    let atcHidden = false;
5693    if (primaryAtc) {
5694      atcHidden = primaryAtc.getBoundingClientRect().bottom < 0;
5695    } else {
5696      // Fallback: show when section end reached
5697      atcHidden = section.getBoundingClientRect().bottom <= window.innerHeight;
5698    }
5699
5700    // Hide ONLY when the footer would overlap the bar
5701    let footerWouldOverlap = false;
5702    if (pageFooter) {
5703      const footerTop = pageFooter.getBoundingClientRect().top;
5704      footerWouldOverlap = footerTop <= (window.innerHeight - barH);
5705    }
5706
5707    const shouldShow = atcHidden && !footerWouldOverlap && viewportHasSpace();
5708
5709    bar.classList.toggle('is-visible', shouldShow);
5710    document.body.classList.toggle('has-sticky-cart-space', shouldShow);
5711  }
5712
5713  // rAF-throttled scroll + resize
5714  let ticking = false;
5715  function onScrollOrResize() {
5716    if (ticking) return;
5717    ticking = true;
5718    requestAnimationFrame(() => {
5719      evaluate();
5720      ticking = false;
5721    });
5722  }
5723
5724  window.addEventListener('scroll', onScrollOrResize, { passive: true });
5725  window.addEventListener('resize', onScrollOrResize);
5726
5727  // Initial state
5728  evaluate();
5729})();
5730        
5731
5732        // updateProduct is bound per-input (target phase). It ends with pdpSub.sync(); the section-level
5733        // change listener in pdpSub.init() runs AFTER it (bubble) and is idempotent — keep it that way.
5734        section.querySelectorAll("input").forEach(input => input.addEventListener("change", updateProduct));
5735
5736        function updateProduct() {
5737            const activeVariant = getActiveVariant();
5738            if (!activeVariant) return;
5739
5740            // Slide to variant image
5741            if (activeVariant.featured_image) {
5742                const productSwiperSlideIndex = productSwiper.slides.findIndex(slide => parseInt(slide.id) === activeVariant.featured_image.id);
5743                productSwiper.slideTo(productSwiperSlideIndex);
5744            }
5745
5746            // updateCSSVariables(activeVariant);
5747            renderVariantGallery(activeVariant);
5748            renderNewBadge(activeVariant);
5749            renderLimitedBadge(activeVariant);
5750            renderDiscountBadge(activeVariant);
5751            renderPurchaseOptionDiscount(activeVariant);
5752
5753            updateStickyCart(activeVariant);
5754            renderIngredientsImage(activeVariant);
5755
5756            document.dispatchEvent(new CustomEvent('pdp:variant-change', {
5757                detail: { id: activeVariant.id }
5758            }));
5759
5760            // Update Nutrition Label
5761          
5762
5763            // Update purchase option prices
5764            const oneTimePurchaseOption = section.querySelector(".productV2ContentPurchaseOption.oneTime");
5765            const subscriptionPurchaseOption = section.querySelector(".productV2ContentPurchaseOption.subscription");
5766
5767            const priceCents = Number(activeVariant?.price ?? 0);
5768            const compareAtCents = Number(activeVariant?.compare_at_price ?? 0);
5769
5770            const hasCompare = compareAtCents > 0 && compareAtCents > priceCents;
5771            const realPriceCents = hasCompare ? compareAtCents : priceCents;
5772
5773
5774            oneTimePurchaseOption.querySelector(".productV2ContentPurchaseOptionLabelPricesReal").textContent = price(priceCents, {
5775                removeTrailingZeros: true
5776            });
5777
5778            const compareEl = oneTimePurchaseOption?.querySelector(".productV2ContentPurchaseOptionLabelPricesCompare");
5779
5780            if (compareEl) {
5781            if (hasCompare) {
5782                // show compare-at price (original price)
5783                compareEl.textContent = price(compareAtCents, { removeTrailingZeros: true });
5784                compareEl.hidden = false;                 // or: compareEl.classList.remove('hidden')
5785                compareEl.setAttribute('aria-hidden', 'false');
5786            } else {
5787                // hide when no compare-at price
5788                compareEl.textContent = "";
5789                compareEl.hidden = true;                  // or: compareEl.classList.add('hidden')
5790                compareEl.setAttribute('aria-hidden', 'true');
5791            }
5792            }
5793
5794            // Áskrift panel + ALL three CTA buttons + sticky prices/quantity text. MUST stay the last
5795            // call after updateStickyCart(): in Áskrift mode it over
5795writes the sticky quantity text
5796            // ("Áskrift · 3 kassar") that updateStickyCart just wrote from the variant option.
5797            pdpSub.sync();
5798
5799
5800
5801            // update url with variant id so the selected options are maintained on refresh
5802            const url = new URL(window.location.href);
5803            url.searchParams.set("variant", activeVariant.id);
5804            window.history.replaceState({}, "", url);
5805        }
5806
5807
5808
5809        (function () {
5810  const btn = document.querySelector('.mobile-sticky-checkout-button');
5811  const footer = document.getElementById('footer');
5812  const primaryAtc = document.getElementById('primary-atc');
5813  if (!btn) return;
5814
5815  // Start hidden until primary ATC scrolls out of view
5816  btn.classList.add('is-hidden');
5817
5818  function evaluate() {
5819    const btnH = btn.getBoundingClientRect().height || 64;
5820
5821    // Show when primary ATC button is above viewport (scrolled past)
5822    let primaryAtcHidden = false;
5823    if (primaryAtc) {
5824      primaryAtcHidden = primaryAtc.getBoundingClientRect().bottom < 0;
5825    }
5826
5827    // Hide when footer would overlap
5828    let footerWouldOverlap = false;
5829    if (footer) {
5830      const footerTop = footer.getBoundingClientRect().top;
5831      footerWouldOverlap = footerTop <= (window.innerHeight - btnH);
5832    }
5833
5834    const shouldShow = primaryAtcHidden && !footerWouldOverlap;
5835    btn.classList.toggle('is-hidden', !shouldShow);
5836  }
5837
5838  // rAF-throttled scroll/resize
5839  let ticking = false;
5840  function onScrollOrResize() {
5841    if (ticking) return;
5842    ticking = true;
5843    requestAnimationFrame(() => {
5844      evaluate();
5845      ticking = false;
5846    });
5847  }
5848
5849  window.addEventListener('scroll', onScrollOrResize, { passive: true });
5850  window.addEventListener('resize', onScrollOrResize);
5851
5852  // Initial pass
5853  evaluate();
5854})();
5855
5856
5857        function setLabelSafe(b, t) {
5858            try { const l = b.querySelector('.productV2ContentAtcButtonLabel'); if (l) l.textContent = t; } catch (e) {}
5859        }
5860
5861        async function addProductToCart(payload) {
5862            const req = await fetch(`${Shopify.routes.root}cart/add.js`, {
5863                method: "POST",
5864                headers: {
5865                    "Content-Type": "application/json",
5866                },
5867                body: JSON.stringify(payload),
5868            });
5869
5870            if (!req.ok) {
5871                throw Error("Request not OK");
5872            }
5873
5874            return await req.json();
5875        }
5876
5877        // ONE handler for all three CTA buttons (primary, desktop sticky, mobile sticky).
5878        // Stök kaup → the existing /cart/add.js + openCart() path. Áskrift → our checkout via the
5879        // URL-fragment plan (pdpSub.goToCheckout); nothing touches the Shopify cart in that mode.
5880        async function handleCta(ev) {
5881            const btn = ev.currentTarget;
5882            if (btn.hasAttribute('disabled') || btn.classList.contains('loading')) return;
5883            if (pdpSub.isSub()) { pdpSub.goToCheckout(btn); return; }
5884            btn.classList.add('loading');
5885            const activeVariant = getActiveVariant();
5886            // Uppselt bragd fer ALDREI i korfuna, sama hvad hnappurinn segir. Ver okkur gegn
5887            // (a) smelli adur en JS naer ad slokkva a hnappnum, (b) villu i applyForcedSoldOut.
5888            if (!activeVariant || activeVariant.available === false || variantIsForcedSoldOut(activeVariant)) {
5889                btn.classList.remove('loading');
5890                btn.setAttribute('disabled', '');
5891                setLabelSafe(btn, "Uppselt");
5892                return;
5893            }
5894            try {
5895                const requestPayload = { items: [{ id: activeVariant.id, quantity: 1 }] };
5896                
5897                await addProductToCart(requestPayload);
5898                try { await openCart(); } catch (err) { console.error(err); }
5899            } catch (e) {
5900                console.error(e);
5901                alert("Það kom upp villa við að bæta vörunni í körfuna. Reyndu aftur.");
5902            } finally { btn.classList.remove('loading'); }
5903        }
5904        document.querySelectorAll('[data-pdp-sub="cta"]').forEach(b => b.addEventListener('click', handleCta));
5905
5906        const urlParams = new URLSearchParams(window.location.search);
5907
5908        // Default to the FIRST AVAILABLE flavour, in the order the pills are rendered
5909        // (= the Shopify product option order), whenever the page is opened without a
5910        // ?variant= deep link. No flavour name is hardcoded: reorder the option values
5911        // in the Shopify admin to change which flavour a cold visit lands on.
5912        function pickDefaultSelection() {
5913            // Mirror getActiveVariant(): only option groups that have a checked input take
5914            // part, and their order is the order of variant.options.
5915            const groups = Array.from(section.querySelectorAll(".productV2ContentOption"))
5916                .filter(group => group.querySelector("input:checked"));
5917            const flavorIndex = groups.findIndex(group => group.classList.contains("flavor"));
5918            if (flavorIndex === -1) return null;
5919
5920            const selected = groups.map(group => group.querySelector("input:checked").value);
5921
5922            function isAvailable(options) {
5923                const variant = product.variants.find(v => JSON.stringify(v.options) === JSON.stringify(options));
5924                return !!(variant && variant.available);
5925            }
5926
5927            const flavorInputs = Array.from(groups[flavorIndex].querySelectorAll(".productV2ContentOptionValueInput"));
5928
5929            // Pass 1 - every other option stays exactly as rendered. Clicking a flavour pill
5930            // does not move the size radio, so availability must be judged at THAT size.
5931            for (let i = 0; i < flavorInputs.length; i++) {
5932                const options = selected.slice();
5933                options[flavorIndex] = flavorInputs[i].value;
5934                if (isAvailable(options)) return [flavorInputs[i]];
5935            }
5936
5937            // Pass 2 - nothing is in stock at the rendered size: let one other option move
5938            // too, flavour order still deciding. Only values that actually have a rendered
5939            // radio are considered (some sizes are deliberately skipped).
5940            for (let i = 0; i < flavorInputs.length; i++) {
5941                for (let g = 0; g < groups.length; g++) {
5942                    if (g === flavorIndex) continue;
5943                    const alternatives = Array.from(groups[g].querySelectorAll(".productV2ContentOptionValueInput"));
5944                    for (let a = 0; a < alternatives.length; a++) {
5945                        const options = selected.slice();
5946                        options[flavorIndex] = flavorInputs[i].value;
5947                        options[g] = alternatives[a].value;
5948                        if (isAvailable(options)) return [flavorInputs[i], alternatives[a]];
5949                    }
5950                }
5951            }
5952
5953            return null; // everything sold out - keep whatever the server rendered
5954        }
5955
5956        if (!urlParams.get("variant")) {
5957            let defaultSelection = null;
5958            try {
5959                defaultSelection = pickDefaultSelection();
5960            } catch (err) {
5961                console.error(err);
5962            }
5963
5964            if (defaultSelection && defaultSelection.length) {
5965                defaultSelection.forEach(input => { input.checked = true; });
5966                defaultSelection.forEach(input => input.dispatchEvent(new Event("change", { bubbles: true })));
5967            } else {
5968                updateProduct();
5969            }
5970        } else {
5971            updateProduct();
5972        }
5973    })
5974    ;
5975</script>
5975
5976
5977</div><div id="shopify-section-template--22413711704202__product_info_jonny" class="shopify-section"><style>
5978  [id="template--22413711704202__product_info_jonny"]{
5979    padding: 8px 32px 48px;
5980    font-family: "DM Sans", system-ui, sans-serif;
5981  }
5982  .pi-wrap{ max-width: 1200px; margin: 0 auto; }
5983
5984  /* info cards ("what it does") */
5985  .pi-cards{
5986    display: grid;
5987    grid-template-columns: repeat(3, minmax(0, 1fr));
5988    gap: 16px;
5989  }
5990  .pi-cards.pi-cards-1{ grid-template-columns: 1fr; }
5991  .pi-cards.pi-cards-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
5992  .pi-card{
5993    border: 1px solid #E7E7E7; border-radius: 10px; background: #fff;
5994    padding: 22px 24px;
5995    display: flex; flex-direction: column; gap: 10px;
5996  }
5997  .pi-card-name{
5998    margin: 0;
5999    font: 400 22px/1.15 'Dela Gothic One', system-ui, sans-serif;
6000    color: #1F1F1F;
6001  }
6002  .pi-card-name span{
6003    margin-left: 6px;
6004    font: 400 14px/1 "Inter", system-ui, sans-serif;
6005    color: #717171;
6006  }
6007  .pi-tags{ display: flex; flex-wrap: wrap; gap: 6px; }
6008  .pi-tag{
6009    font: 700 11px/1 "DM Sans", system-ui, sans-serif;
6010    background: #EFEFEF; color: #1F1F1F;
6011    padding: 6px 10px; border-radius: 9999px;
6012    text-transform: uppercase; letter-spacing: .02em;
6013  }
6014  .pi-card-text{
6015    margin: 0;
6016    font: 400 15px/1.6 "Inter", system-ui, sans-serif;
6017    color: #3A3A3A;
6018  }
6019
6020  /* legacy stats row (kept for older templates) */
6021  .pi-stats{
6022    display: flex; flex-wrap: wrap;
6023    border: 1px solid #E7E7E7; border-radius: 10px;
6024    overflow: hidden;
6025    background: #fff;
6026  }
6027  .pi-stat{
6028    flex: 1 1 0; min-width: 140px;
6029    padding: 20px 16px;
6030    text-align: center;
6031  }
6032  .pi-stat + .pi-stat{ border-left: 1px solid #E7E7E7; }
6033  .pi-stat-value{
6034    font: 400 28px/1.1 'Dela Gothic One', system-ui, sans-serif;
6035    color: #1F1F1F;
6036  }
6037  .pi-stat-label{
6038    margin-top: 6px;
6039    font: 700 12px/1.2 "DM Sans", system-ui, sans-serif;
6040    color: #717171;
6041    text-transform: uppercase; letter-spacing: .04em;
6042  }
6043  .pi-stats-note{
6044    margin: 8px 4px 0;
6045    font: 400 12px/1.4 "Inter", system-ui, sans-serif;
6046    color: #9A9A9A;
6047    text-align: right;
6048  }
6049
6050  /* tabs */
6051  .pi-tabs{
6052    margin-top: 28px;
6053    display: flex; gap: 24px;
6054    border-bottom: 1px solid #E0E0E0;
6055    overflow-x: auto;
6056  }
6057  .pi-tab{
6058    background: none; border: 0; cursor: pointer;
6059    padding: 12px 2px;
6060    font: 700 15px/1 "DM Sans", system-ui, sans-serif;
6061    color: #717171;
6062    border-bottom: 2px solid transparent;
6063    white-space: nowrap;
6064  }
6065  .pi-tab[aria-selected="true"]{ color: #1F1F1F; border-bottom-color: #1F1F1F; }
6066  .pi-tab[hidden]{ display: none; }
6067  .pi-panel{ display: none; padding: 24px 0 0; }
6068  .pi-panel.is-active{ display: block; }
6069  .pi-panel, .pi-panel p, .pi-panel li{
6070    font: 400 16px/1.7 "Inter", system-ui, sans-serif;
6071    color: #3A3A3A;
6072  }
6073  .pi-panel ul{ padding-left: 20px; margin: 0; }
6074  .pi-panel li{ margin-bottom: 8px; }
6075  .pi-label-img{ max-width: 480px; width: 100%; height: auto; border-radius: 8px; display: block; }
6076  .pi-cards-below{ margin-top: 32px; }
6077  [data-pi-innihald][hidden]{ display: none; }
6078
6079  @media (max-width: 1000px){
6080    [id="template--22413711704202__product_info_jonny"]{ padding: 0 16px 32px; }
6081    .pi-cards, .pi-cards.pi-cards-2{ grid-template-columns: 1fr; gap: 12px; }
6082    .pi-card{ padding: 16px 18px; }
6083    .pi-card-name{ font-size: 18px; }
6084    .pi-card-text{ font-size: 14px; }
6085    .pi-stat{ min-width: 33%; padding: 14px 8px; }
6086    .pi-stat-value{ font-size: 20px; }
6087    .pi-stat-label{ font-size: 10px; }
6088    .pi-panel, .pi-panel p, .pi-panel li{ font-size: 14px; }
6089  }
6090</style><section id="template--22413711704202__product_info_jonny" data-pi-variant="50050860744842">
6091  <div class="pi-wrap"><div class="pi-tabs" role="tablist">
6092      <button class="pi-tab" type="button" role="tab" aria-selected="true" data-pi-tab="lysing">Lýsing</button><button class="pi-tab" type="button" role="tab" aria-selected="false" data-pi-tab="innihald">Innihaldsefni</button><button class="pi-tab" type="button" role="tab" aria-selected="false" data-pi-tab="naering" data-pi-naering-tab hidden>Næringargildi</button><button class="pi-tab" type="button" role="tab" aria-selected="false" data-pi-tab="njota">Hvernig er best að njóta?</button></div>
6093
6094    <div class="pi-panel is-active" data-pi-panel="lysing"><p>
6094Fylltu á söltin sem þú tapar! Happy Hydrate Formúlan inniheldur natríum, kalíum og magnesíum ásamt sex mikilvægum vítamínum. Steinefnin stuðla að eðlilegri vöðvastarfsemi og vökvajafnvægi – og ein stika inniheldur um fjórfalt meira af söltum og steinefnum en hefðbundinn íþróttadrykkur.</p>
6095</div><div class="pi-panel" data-pi-panel="innihald">
6096      <div data-pi-innihald="main" hidden><ul><li>Natríum – 250 mg í hverri stiku</li><li>Kalíum – 380 mg í hverri stiku</li><li>Magnesíum – 200 mg í hverri stiku</li><li>C-vítamín og B-vítamín (B2, B3, B5, B12)</li><li>Dextrósi fyrir hraðari upptöku</li><li>Enginn gervisykur – vegan og glútenlaust</li></ul></div><div data-pi-innihald="alt"><ul><li>Natríum – 250 mg í hverri stiku</li><li>Kalíum – 380 mg í hverri stiku</li><li>Magnesíum – 100 mg í hverri stiku</li><li>C-vítamín og B-vítamín (B2, B3, B5, B12)</li><li>Dextrósi fyrir hraðari upptöku</li><li>Enginn gervisykur – vegan og glútenlaust</li></ul></div></div><div class="pi-panel" data-pi-panel="naering">
6097      <img class="pi-label-img" data-pi-label alt="Næringargildi – Hydration Xpress" loading="lazy" decoding="async">
6098    </div><div class="pi-panel" data-pi-panel="njota"><p><strong>Skref 1: Hella</strong><br/>Rífðu stikuna og bættu ofan í 300 - 500 ml af vatni<br/><br/><strong>Skref 2: Hrista<br/></strong>Hristu eða hrærðu þangað til duftið blandast við vatnið<br/><br/><strong>Skref 3: Njóta</strong><br/>Velkomin/n í vökvajafnvægi</p></div><div class="pi-cards-below"><div class="pi-cards pi-cards-3"><div class="pi-card" >
6099            <h3 class="pi-card-name">Natríum<span>(Sodium)</span></h3><div class="pi-tags"><span class="pi-tag">Vökvajafnvægi</span><span class="pi-tag">Vöðvar</span><span class="pi-tag">Taugakerfi</span></div><p class="pi-card-text">Natríum hjálpar líkamanum að viðhalda eðlilegu vökvajafnvægi og gegnir mikilvægu hlutverki í starfsemi tauga og vöðva.</p></div><div class="pi-card" >
6100            <h3 class="pi-card-name">Kalíum<span>(Potassium)</span></h3><div class="pi-tags"><span class="pi-tag">Vöðvar</span><span class="pi-tag">Taugakerfi</span><span class="pi-tag">Blóðþrýstingur</span></div><p class="pi-card-text">Kalíum stuðlar að eðlilegri starfsemi vöðva og taugakerfis og hjálpar til við að viðhalda eðlilegum blóðþrýstingi. Kalíum vinnur náið með natríum og saman hjálpa þau líkamanum að viðhalda vökvajafnvægi og eðlilegri starfsemi frumna.</p></div><div class="pi-card" >
6101            <h3 class="pi-card-name">Magnesíum</h3><div class="pi-tags"><span class="pi-tag">Orka</span><span class="pi-tag">Vöðvar</span><span class="pi-tag">Þreyta</span></div><p class="pi-card-text">Magnesíum stuðlar að eðlilegri starfsemi vöðva og taugakerfis, stuðlar að eðlilegum orkuefnaskiptum og hjálpar til við að draga úr þreytu og örmögnun.</p></div></div></div></div>
6102  
6102<script type="application/json" data-pi-labels>{"50050860712074": { "url": "", "flavor": "Strawberry Lemonade", "alt": true },"50050860744842": { "url": "", "flavor": "Strawberry Lemonade", "alt": true },"50050860777610": { "url": "", "flavor": "Strawberry Lemonade", "alt": true },"50050860810378": { "url": "", "flavor": "Strawberry Lemonade", "alt": true },"44751436906634": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Pina Colada", "alt": false },"44751436939402": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Pina Colada", "alt": false },"44751436972170": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Pina Colada", "alt": false },"44751437004938": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Pina_Colada_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Pina Colada", "alt": false },"44751437037706": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=960", "flavor": "Mixed Berries", "alt": false },"44751437070474": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=960", "flavor": "Mixed Berries", "alt": false },"44751437103242": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/MB_INNIHALD.png?v=1776255722\u0026width=960", "flavor": "Mixed Berries", "alt": false },"44751437136010": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_mixed_berries_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Mixed Berries", "alt": false },"44751437168778": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=960", "flavor": "Lemon\/Lime", "alt": false },"44751437201546": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=960", "flavor": "Lemon\/Lime", "alt": false },"44751437234314": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/LL_INNIHALD.png?v=1776255645\u0026width=960", "flavor": "Lemon\/Lime", "alt": false },"44751437267082": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/lemonlime_innihald.jpg?v=1765379317\u0026width=960", "flavor": "Lemon\/Lime", "alt": false },"45773488324746": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=960", "flavor": "Peach Crush", "alt": false },"45773488357514": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=960", "flavor": "Peach Crush", "alt": false },"45773488390282": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PH_INNIHALD.png?v=1776255757\u0026width=960", "flavor": "Peach Crush", "alt": false },"45773488423050": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Peach_Crush_innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Peach Crush", "alt": false },"47230751473802": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=960", "flavor": "Peru", "alt": false },"47230751506570": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=960", "flavor": "Peru", "alt": false },"47230751539338": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/PE_INNIHALD.png?v=1776255780\u0026width=960", "flavor": "Peru", "alt": false },"47230751572106": { "url": "\/\/happyhydrate.is\/cdn\/shop\/files\/Hydration_Peru_Innihaldslysing.png?v=1759347931\u0026width=960", "flavor": "Peru", "alt": false }}</script>
6102
6103</section>
6104
6105<script>
6106(() => {
6107  const root = document.getElementById("template--22413711704202__product_info_jonny");
6108  if (!root) return;
6109
6110  const tabs   = Array.from(root.querySelectorAll('[data-pi-tab]'));
6111  const panels = Array.from(root.querySelectorAll('[data-pi-panel]'));
6112  const activate = (key) => {
6113    tabs.forEach(t => t.setAttribute('aria-selected', t.dataset.piTab === key ? 'true' : 'false'));
6114    panels.forEach(p => p.classList.toggle('is-active', p.dataset.piPanel === key));
6115  };
6116  tabs.forEach(tab => tab.addEventListener('click', () => activate(tab.dataset.piTab)));
6117
6118  /* Næringargildi label follows the selected variant */
6119  let labels = {};
6120  try {
6121    const node = root.querySelector('[data-pi-labels]');
6122    labels = node ? (JSON.parse(node.textContent || '{}') || {}) : {};
6123  } catch (e) { labels = {}; }
6124
6125  const labelImg = root.querySelector('[data-pi-label]');
6126  const labelTab = root.querySelector('[data-pi-naering-tab]');
6127
6128  const mainEl = root.querySelector('[data-pi-innihald="main"]');
6129  const altEl  = root.querySelector('[data-pi-innihald="alt"]');
6130  const applyVariant = (id) => {
6131    if (!id) return;
6132    const entry = labels[String(id)];
6133    const useAlt = !!(entry && entry.alt) && !!altEl;
6134    if (mainEl) mainEl.hidden = useAlt;
6135    if (altEl) altEl.hidden = !useAlt;
6136    if (!labelImg || !labelTab) return;
6137    const url = entry && entry.url ? entry.url : '';
6138    if (url) {
6139      if (labelImg.getAttribute('src') !== url) labelImg.src = url;
6140      labelTab.hidden = false;
6141    } else {
6142      labelTab.hidden = true;
6143      if (labelTab.getAttribute('aria-selected') === 'true') activate('lysing');
6144    }
6145  };
6146
6147  const params = new URLSearchParams(window.location.search);
6148  applyVariant(params.get('variant') || root.dataset.piVariant);
6149  document.addEventListener('pdp:variant-change', (ev) => applyVariant(ev && ev.detail && ev.detail.id));
6150})();
6151</script>
6151
6152
6153
6154</div><div id="shopify-section-template--22413711704202__section_video_slider_NAxnFx" class="shopify-section"><style>
6155    [id="template--22413711704202__section_video_slider_NAxnFx"] {
6156        padding: 16px 32px;
6157        background: #FFFFFF;
6158    }
6159
6160    .videoSwiper {
6161     
6162        margin: 0 auto;
6163    }
6164
6165    .videoSwiper .swiper-slide {
6166        height: auto;
6167        display: flex;
6168    }
6169
6170    .videoSliderWrapper {
6171        position: relative;
6172        cursor: pointer;
6173        height: 100%;
6174    }
6175
6176    .videoSliderVideoPlays {
6177        position: absolute;
6178        bottom: 20px;
6179        left: 20px;
6180        display: flex;
6181        align-items: center;
6182        gap: 10px;
6183        font-weight: bold;
6184        color: #FFFFFF;
6185        pointer-events: none;
6186    }
6187
6188    .videoSliderVideo {
6189        object-fit: cover;
6190        border-radius: 8px;
6191        height: 100%;
6192    }
6193
6194
6195    .video-header {
6196        display: flex;
6197        margin-bottom: 16px;
6198    }
6199
6200    .video-heading {
6201        color: #262626;
6202        font-size: 32px;
6203        font-family: "Dela Gothic One", sans-serif;
6204        font-weight: 300;
6205    }
6206
6207    .video-carousel-controls {
6208        margin-left: auto;
6209        display: flex;
6210        align-items: center;
6211        gap: 12px;
6212    }
6213
6214    .video-carousel-controls .control-prev,
6215    .video-carousel-controls .control-next {
6216        width: 56px;
6217        height: 56px;
6218        border-radius: 9999px;
6219        background: #f3f4f6;
6220        display: grid;
6221        place-items: center;
6222        box-shadow: 0 1px 2px rgba(0,0,0,.06);
6223        transition: background .2s ease, transform .1s ease, box-shadow .2s ease;
6224        cursor: pointer;
6225        color: #111;
6226    }
6227
6228
6229
6230@media (max-width:1000px){
6231
6232    [id="template--22413711704202__section_video_slider_NAxnFx"] {
6233        padding: 16px 16px;
6234        background: #FFFFFF;
6235    }
6236
6237
6238  .videoSwiper .swiper-wrapper{
6239    display:flex;
6240    gap:16px;
6241    overflow-x:auto;
6242    scroll-snap-type:x mandatory;
6243    padding-bottom:8px; /* room for iOS scrollbar */
6244    transform:none !important; /* kill leftover Swiper transforms */
6245  }
6246  .videoSwiper .swiper-slide{
6247    flex:0 0 auto;
6248    min-width:60%;
6249    max-width:60%;
6250    scroll-snap-align:start;
6251  }
6252
6253  /* optional: match trio card visual scale */
6254  .videoSliderWrapper{ height:auto; }
6255  .videoSliderVideo{
6256    width:100%;
6257    object-fit:cover;
6258    border-radius:8px;
6259  }
6260
6261    .video-heading {
6262        font-size: 24px;
6263
6264    }
6265
6266    .video-carousel-controls .control-prev,
6267    .video-carousel-controls .control-next {
6268        width: 36px;
6269        height: 36px;
6270    }
6271
6272    .videoSwiper .swiper-wrapper{
6273        overflow-x: auto;
6274        /* hide scrollbar (all browsers) */
6275        scrollbar-width: none;        /* Firefox */
6276        -ms-overflow-style: none;     /* IE/Edge legacy */
6277        padding-bottom: 0;            /* remove space reserved for scrollbar */
6278    }
6279    .videoSwiper .swiper-wrapper::-webkit-scrollbar{
6280        display: none;                /* Chrome/Safari */
6281        height: 0; width: 0;
6282        background: transparent;
6283    }
6284
6285}
6286</style>
6287
6288<section id="template--22413711704202__section_video_slider_NAxnFx">
6289    <div class="video-header">
6290        <div class="video-heading">
6291            <p>Fylgdu okkur á miðlunum</p>
6292        </div>
6293        <div class="video-carousel-controls">
6294            <div class="control-prev">
6295            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
6296  <g clip-path="url(#clip0_1176_3422)">
6297  <path d="M15.3281 8H1.32812" stroke="black" stroke-width="2"/>
6298  <path d="M8.32812 15L1.32812 8L8.32812 1" stroke="black" stroke-width="2"/>
6299  </g>
6300  <defs>
6301  <clipPath id="clip0_1176_3422">
6302  <rect width="16" height="16" fill="white" transform="matrix(-1 0 0 1 16 0)"/>
6303  </clipPath>
6304  </defs>
6305</svg>
6306  
6307            </div>
6308            <div class="control-next">
6309            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
6310  <g clip-path="url(#clip0_1176_3427)">
6311  <path d="M0.671875 8H14.6719" stroke="black" stroke-width="2"/>
6312  <path d="M7.67188 15L14.6719 8L7.67188 1" stroke="black" stroke-width="2"/>
6313  </g>
6314  <defs>
6315  <clipPath id="clip0_1176_3427">
6316  <rect width="16" height="16" fill="white"/>
6317  </clipPath>
6318  </defs>
6319</svg>
6320
6321            </div>
6322        </div>
6323    </div>
6324
6325    <div class="videoSwiper swiper">
6326        <div class="swiper-wrapper">
6327            
6328                <div class="swiper-slide">
6329                    <div class="videoSliderWrapper">
6330                        
6331                        <video class="videoSliderVideo" autoplay muted playsinline loop poster="//happyhydrate.is/cdn/shop/files/preview_images/ce96cd07c517403586df6de89782b963.thumbnail.0000000000.jpg?v=1754480351&width=400" data-src="//happyhydrate.is/cdn/shop/videos/c/vp/ce96cd07c517403586df6de89782b963/ce96cd07c517403586df6de89782b963.HD-1080p-7.2Mbps-54399699.mp4?v=0"></video>
6332                    </div>
6333                </div>
6334            
6335                <div class="swiper-slide">
6336                    <div class="videoSliderWrapper">
6337                        
6338                        <video class="videoSliderVideo" autoplay muted playsinline loop poster="//happyhydrate.is/cdn/shop/files/preview_images/a6928f806eda4b369a9b3b213cbbe35f.thumbnail.0000000000.jpg?v=1749739167&width=400" data-src="//happyhydrate.is/cdn/shop/videos/c/vp/a6928f806eda4b369a9b3b213cbbe35f/a6928f806eda4b369a9b3b213cbbe35f.HD-1080p-7.2Mbps-49279785.mp4?v=0"></video>
6339                    </div>
6340                </div>
6341            
6342                <div class="swiper-slide">
6343                    <div class="videoSliderWrapper">
6344                        
6345                        <video class="videoSliderVideo" autoplay muted playsinline loop poster="//happyhydrate.is/cdn/shop/files/preview_images/3342e59cc32448d4b47e47edc0a09652.thumbnail.0000000000.jpg?v=1741781708&width=400" data-src="//happyhydrate.is/cdn/shop/videos/c/vp/3342e59cc32448d4b47e47edc0a09652/3342e59cc32448d4b47e47edc0a09652.HD-1080p-7.2Mbps-44038649.mp4?v=0"></video>
6346                    </div>
6347                </div>
6348            
6349                <div class="swiper-slide">
6350                    <div class="videoSliderWrapper">
6351                        
6352                        <video class="videoSliderVideo" autoplay muted playsinline loop poster="//happyhydrate.is/cdn/shop/files/preview_images/047A4882_1.jpg?v=1741718502&width=400" data-src="//happyhydrate.is/cdn/shop/videos/c/vp/03d25817680e421f940426440bea17bb/03d25817680e421f940426440bea17bb.HD-1080p-7.2Mbps-43995506.mp4?v=0"></video>
6353                    </div>
6354                </div>
6355            
6356                <div class="swiper-slide">
6357                    <div class="videoSliderWrapper">
6358                        
6359                        <video class="videoSliderVideo" autoplay muted playsinline loop poster="//happyhydrate.is/cdn/shop/files/preview_images/Untitled_design_-_2025-03-03T124405.498.png?v=1741718254&width=400" data-src="//happyhydrate.is/cdn/shop/videos/c/vp/74566f612e9a41bea6da2610f8862853/74566f612e9a41bea6da2610f8862853.HD-1080p-7.2Mbps-43995163.mp4?v=0"></video>
6360                    </div>
6361                </div>
6362            
6363        </div>
6364    </div>
6365</section>
6366
6367
6368
6369<script>
6370document.addEventListener('DOMContentLoaded', function () {
6371(function () {
6372  const section = document.querySelector(`[id="template--22413711704202__section_video_slider_NAxnFx"]`);
6373  const prevBtn = section.querySelector('.control-prev');
6374  const nextBtn = section.querySelector('.control-next');
6375  const wrapper = section.querySelector('.swiper-wrapper');
6376
6377  /* click-to-play/pause + lazy load (unchanged) */
6378  section.querySelectorAll(".videoSliderVideo").forEach(video => {
6379    video.addEventListener("click", () => {
6380      if (video.paused) {
6381        video.play();
6382        section.querySelectorAll(".videoSliderVideo").forEach(other => { if (other!==video) other.pause(); });
6383      } else {
6384        video.pause();
6385      }
6386    });
6387  });
6388
6389  const observer = new IntersectionObserver((entries) => {
6390    entries.forEach(v => {
6391      if (v.isIntersecting) {
6392        v.target.src = v.target.dataset.src;
6393        v.target.load();
6394        observer.unobserve(v.target);
6395      }
6396    });
6397  }, {});
6398  section.querySelectorAll(".videoSliderVideo").forEach(v => observer.observe(v));
6399
6400  /* ---- Responsive slider: native on mobile, Swiper on desktop ---- */
6401  let swiper = null;
6402  let navHandlers = null;
6403  const mq = window.matchMedia('(max-width:1000px)');
6404
6405    function attachMobileNav(){
6406    if (navHandlers) return;
6407
6408    const styles = getComputedStyle(wrapper);
6409    const gapPx = parseFloat(styles.columnGap || styles.gap || '0') || 0;
6410
6411    function step(){
6412        const firstSlide = wrapper.querySelector('.swiper-slide');
6413        return (firstSlide ? firstSlide.getBoundingClientRect().width : 0) + gapPx;
6414    }
6415    function clamp(x, min, max){ return Math.max(min, Math.min(max, x)); }
6416
6417    // compute the next snap left so the next card starts at the container edge
6418    function nextSnapLeft(dir){ // dir: +1 next, -1 prev
6419        const s = step();
6420        const maxLeft = wrapper.scrollWidth - wrapper.clientWidth;
6421        if (s <= 0) return wrapper.scrollLeft;
6422
6423        const i = wrapper.scrollLeft / s;
6424        const targetIdx = dir > 0 ? Math.floor(i + 1) : Math.ceil(i - 1);
6425        const target = targetIdx * s;
6426        return clamp(Math.round(target), 0, maxLeft);
6427    }
6428
6429    const onPrev = () => wrapper.scrollTo({ left: nextSnapLeft(-1), behavior:'smooth' });
6430    const onNext = () => wrapper.scrollTo({ left: nextSnapLeft(+1), behavior:'smooth' });
6431
6432    prevBtn?.addEventListener('click', onPrev);
6433    nextBtn?.addEventListener('click', onNext);
6434    navHandlers = { onPrev, onNext };
6435    }
6436
6437  function detachMobileNav(){
6438    if (!navHandlers) return;
6439    prevBtn?.removeEventListener('click', navHandlers.onPrev);
6440    nextBtn?.removeEventListener('click', navHandlers.onNext);
6441    navHandlers = null;
6442  }
6443
6444  function toMobile(){
6445    if (swiper){ swiper.destroy(true,true); swiper = null; }
6446    // clear Swiper inline transforms so scroll works
6447    wrapper.style.transform = '';
6448    attachMobileNav();
6449  }
6450
6451  function toDesktop(){
6452    detachMobileNav();
6453    swiper = new Swiper(section.querySelector('.swiper'), {
6454      slidesPerView: 4,
6455      centeredSlides: false,
6456      spaceBetween: 32,
6457      loop: true,
6458      navigation: {
6459        nextEl: section.querySelector('.control-next'),
6460        prevEl: section.querySelector('.control-prev'),
6461      },
6462      // still okay if someone resizes up from mobile
6463      breakpoints: {
6464        0:    { slidesPerView: 1.5, centeredSlides: true, spaceBetween: 20 },
6465        1024: { slidesPerView: 4,   centeredSlides: false, spaceBetween: 32 }
6466      }
6467    });
6468  }
6469
6470  function applyMode(){ mq.matches ? toMobile() : toDesktop(); }
6471  mq.addEventListener('change', applyMode);
6472  applyMode();
6473}());
6474});
6475</script>
6475
6476
6477
6478</div><div id="shopify-section-template--22413711704202__171701511725c1f756" class="shopify-section">
6479  
6480    <div id="shopify-block-ARExGZDFXOWVyUzROS__junip_product_reviews_ugc_junip_product_review_6pkryw" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: junip-product-review --><span
6481  class="junip-product-review"
6482  data-product-id="7907478503562"
6483  data-title=""
6484  data-title-alignment=""
6485  data-sort-order="mostRecent">
6486</span>
6487<!-- END app snippet -->
6488
6489
6490</div>
6491  
6492
6493
6494
6495
6496</div><div id="shopify-section-template--22413711704202__section_manual_cards_slider_ABC123" class="shopify-section"><style>
6497  [id="template--22413711704202__section_manual_cards_slider_ABC123"] { padding:32px 32px 16px; background:#fff; }
6498  .mcSwiper { margin:0 auto; }
6499  .mcSwiper .swiper-slide { height:auto; display:flex; }
6500  .mcCard { border-radius:6px; width:100%; display:flex; flex-direction:column; }
6501  
6502  .mcMedia { display:flex; border-radius:6px; overflow:hidden; background:#f0eff2; height: 450px; justify-content: center;  }
6503
6504  .mcMedia img { width:100%; height:auto; display:block; object-fit: cover; }
6505  .mcMedia--scaled { align-items:center; }
6506  .mcMedia--scaled img { height: var(--mc-scale, 100%); width:auto; max-width:none; object-fit: contain; }
6507  .mcMeta { margin-top:8px; }
6508
6509  .mcTitle { font-family:"DM Sans", sans-serif; font-size:16px; color:#262626; line-height:1.2; font-weight:500; }
6510
6511  .mcFlavor { font-family:"Dela Gothic One", sans-serif; font-size:24px; color:#262626; line-height:1.1; margin-top:8px; font-weight:200; }
6512
6513
6514
6515  .badgeNew,
6516  .badgeDiscount {
6517    position: absolute;
6518    top: 12px;
6519    right: 12px;
6520    background: #FFF716;
6521    color: #323232;
6522    font-weight: 100;
6523    font-size: 12px;
6524    letter-spacing: .02em;
6525    padding: 4px 10px;
6526    border-radius: 6px;
6527    font-family: "Dela Gothic One";
6528  }
6529
6530  .badgeDiscount {
6531    background: #B02D28;
6532    color: #FFFFFF;
6533  }
6534
6535  /* When both badges exist, push the second one down */
6536  .badgeNew + .badgeDiscount {
6537    top: 44px; /* or adjust to your spacing needs */
6538  }
6539
6540  .badgeSoldOut{ position:absolute; top:12px; left:12px; background:#FDE2E2; color:#B02D28; font-weight:600; font-size:12px; letter-spacing:.02em; padding:4px 10px; border-radius:6px; font-family:"DM Sans", system-ui, sans-serif; }
6541  .badgeSale{ position:absolute; top:12px; left:12px; z-index:2; background:#DDF4E0; color:#1B7A3A; font-weight:600; font-size:12px; letter-spacing:.02em; padding:4px 10px; border-radius:6px; font-family:"DM Sans", system-ui, sans-serif; }
6542
6543  .mcHeader { display:flex; align-items:center; margin-bottom:12px; }
6544  .mcHeading { color:#262626; font-size:32px; font-family:"Dela Gothic One", sans-serif; font-weight:300; }
6545  .mcControls { margin-left:auto; display:flex; align-items:center; gap:12px; }
6546  .mcControls .control-prev, .mcControls .control-next {
6547    width:56px; height:56px; border-radius:9999px; background:#f3f4f6; display:grid; place-items:center;
6548    box-shadow:0 1px 2px rgba(0,0,0,.06); transition:background .2s, transform .1s, box-shadow .2s; cursor:pointer; color:#111;
6549  }
6550
6551  @media (max-width:1000px){
6552
6553    [id="template--22413711704202__section_manual_cards_slider_ABC123"] { padding:32px 16px 16px; background:#fff; }
6554    .mcSwiper .swiper-wrapper{
6555      display:flex;
6556      gap:16px;
6557      overflow-x:auto;
6558      scroll-snap-type:x mandatory;
6559      padding-bottom:0;
6560
6561      /* hide scrollbar */
6562      scrollbar-width:none;          /* Firefox */
6563      -ms-overflow-style:none;       /* IE/Edge old */
6564    }
6565    .mcSwiper .swiper-wrapper::-webkit-scrollbar{ display:none; width:0; height:0; }
6566
6567    .mcSwiper .swiper-slide{
6568      flex:0 0 auto;
6569      min-width:60%;
6570      max-width:60%;
6571      scroll-snap-align:start;
6572    }
6573
6574    .mcControls .control-prev, .mcControls .control-next {
6575      width:36px; height:36px;
6576    }
6577
6578    .mcMedia { height: 300px; }
6579    .mcMedia--scaled img { width: 100%; max-width: 100%; height: auto; }
6580
6581    .mcHeading {
6582        font-size: 18px;
6583
6584    }
6585
6586    
6587
6588  }
6589</style><section id="template--22413711704202__section_manual_cards_slider_ABC123">
6590  <div class="mcHeader">
6591    
6592      <div class="mcHeading"><p>Vinsælustu vörurnar</p></div>
6593    
6594    <div class="mcControls">
6595      <div class="control-prev"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
6596  <g clip-path="url(#clip0_1176_3422)">
6597  <path d="M15.3281 8H1.32812" stroke="black" stroke-width="2"/>
6598  <path d="M8.32812 15L1.32812 8L8.32812 1" stroke="black" stroke-width="2"/>
6599  </g>
6600  <defs>
6601  <clipPath id="clip0_1176_3422">
6602  <rect width="16" height="16" fill="white" transform="matrix(-1 0 0 1 16 0)"/>
6603  </clipPath>
6604  </defs>
6605</svg>
6606  </div>
6607      <div class="control-next"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
6608  <g clip-path="url(#clip0_1176_3427)">
6609  <path d="M0.671875 8H14.6719" stroke="black" stroke-width="2"/>
6610  <path d="M7.67188 15L14.6719 8L7.67188 1" stroke="black" stroke-width="2"/>
6611  </g>
6612  <defs>
6613  <clipPath id="clip0_1176_3427">
6614  <rect width="16" height="16" fill="white"/>
6615  </clipPath>
6616  </defs>
6617</svg>
6618</div>
6619    </div>
6620  </div>
6621
6622  <div class="mcSwiper swiper">
6623    <div class="swiper-wrapper">
6624      
6625        
6626
6627        
6628        
6629        
6630<div class="swiper-slide" >
6631          <a class="mcCard" href="/products/hydration-xpress?variant=50050860744842" >
6632            <span class="mcMedia mcMedia--scaled" style="--mc-scale: 82%">
6633              
6634                <img
6635                  src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=800"
6636                  srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=400 400w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=800 800w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-StrawberryLemonade.png?v=1788381496&width=1200 1200w"
6637                  sizes="(min-width: 1024px) 25vw, 66vw"
6638                  alt="Hydration Xpress Strawberry Lemonade"
6639                  width="1240"
6640                  height="1240"
6641                  loading="lazy"
6642                  decoding="async">
6643              
6644            </span>
6645            <span class="mcMeta">
6646              <div class="mcTitle">
6647                Hydration Xpress
6648                <span class="badgeNew">NÝTT</span>
6649                
6650                
6651                
6652              </div>
6653              <div class="mcFlavor">Strawberry Lemonade</div>
6654            </span>
6655          </a>
6656        </div>
6657      
6658        
6659
6660        
6661        
6662        
6663<div class="swiper-slide" >
6664          <a class="mcCard" href="/products/hydration-xpress?variant=45773488324746" >
6665            <span class="mcMedia mcMedia--scaled" style="--mc-scale: 82%">
6666              
6667                <img
6668                  src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=800"
6669                  srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=400 400w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=800 800w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PeachCrush.png?v=1788381496&width=1200 1200w"
6670                  sizes="(min-width: 1024px) 25vw, 66vw"
6671                  alt="Hydration Xpress Peach Crush"
6672                  width="1240"
6673                  height="1240"
6674                  loading="lazy"
6675                  decoding="async">
6676              
6677            </span>
6678            <span class="mcMeta">
6679              <div class="mcTitle">
6680                Hydration Xpress
6681                
6682                
6683                
6684                
6685              </div>
6686              <div class="mcFlavor">Peach Crush</div>
6687            </span>
6688          </a>
6689        </div>
6690      
6691        
6692
6693        
6694        
6695        
6696<div class="swiper-slide" >
6697          <a class="mcCard" href="/products/creatine-xpress-bundle?variant=46311578271882" >
6698            <span class="mcMedia">
6699              
6700                <img
6701                  src="//happyhydrate.is/cdn/shop/files/Box_Mixed_Berries_Creatine.png?v=1758881439&width=800"
6702                  srcset="//happyhydrate.is/cdn/shop/files/Box_Mixed_Berries_Creatine.png?v=1758881439&width=400 400w, //happyhydrate.is/cdn/shop/files/Box_Mixed_Berries_Creatine.png?v=1758881439&width=800 800w, //happyhydrate.is/cdn/shop/files/Box_Mixed_Berries_Creatine.png?v=1758881439&width=1200 1200w"
6703                  sizes="(min-width: 1024px) 25vw, 66vw"
6704                  alt=""
6705                  width="1080"
6706                  height="1080"
6707                  loading="lazy"
6708                  decoding="async">
6709              
6710            </span>
6711            <span class="mcMeta">
6712              <div class="mcTitle">
6713                Kreatín
6714                
6715                
6716                
6717                
6718              </div>
6719              <div class="mcFlavor">Mixed Berries</div>
6720            </span>
6721          </a>
6722        </div>
6723      
6724        
6725
6726        
6727        
6728        
6729<div class="swiper-slide" >
6730          <a class="mcCard" href="/products/creatine-xpress-bundle?variant=46311578140810" >
6731            <span class="mcMedia">
6732              
6733                <img
6734                  src="//happyhydrate.is/cdn/shop/files/Box_Lemon_Lime_Creatine.png?v=1758881177&width=800"
6735                  srcset="//happyhydrate.is/cdn/shop/files/Box_Lemon_Lime_Creatine.png?v=1758881177&width=400 400w, //happyhydrate.is/cdn/shop/files/Box_Lemon_Lime_Creatine.png?v=1758881177&width=800 800w, //happyhydrate.is/cdn/shop/files/Box_Lemon_Lime_Creatine.png?v=1758881177&width=1200 1200w"
6736                  sizes="(min-width: 1024px) 25vw, 66vw"
6737                  alt=""
6738                  width="1080"
6739                  height="1080"
6740                  loading="lazy"
6741                  decoding="async">
6742              
6743            </span>
6744            <span class="mcMeta">
6745              <div class="mcTitle">
6746                Kreatín
6747                
6748                
6749                
6750                
6751              </div>
6752              <div class="mcFlavor">Lemon & lime</div>
6753            </span>
6754          </a>
6755        </div>
6756      
6757        
6758
6759        
6760        
6761        
6762<div class="swiper-slide" >
6763          <a class="mcCard" href="/products/hydration-xpress?variant=44751436939402" >
6764            <span class="mcMedia mcMedia--scaled" style="--mc-scale: 82%">
6765              
6766                <img
6767                  src="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=800"
6768                  srcset="//happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=400 400w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=800 800w, //happyhydrate.is/cdn/shop/files/HappyHydrate-Vorumynd-vef-PinaColada.png?v=1788381496&width=1200 1200w"
6769                  sizes="(min-width: 1024px) 25vw, 66vw"
6770                  alt="Hydration Xpress Pina Colada"
6771                  width="1240"
6772                  height="1240"
6773                  loading="lazy"
6774                  decoding="async">
6775              
6776            </span>
6777            <span class="mcMeta">
6778              <div class="mcTitle">
6779                Hydration Xpress
6780                
6781                <span class="badgeSoldOut">Uppselt</span>
6782                
6783                
6784              </div>
6785              <div class="mcFlavor">Pina Colada</div>
6786            </span>
6787          </a>
6788        </div>
6789      
6790    </div>
6791  </div>
6792</section>
6793
6794<script>
6795document.addEventListener('DOMContentLoaded', function () {
6796(() => {
6797  const section = document.querySelector(`[id="template--22413711704202__section_manual_cards_slider_ABC123"]`);
6798  const container = section.querySelector('.mcSwiper');
6799  const wrapper   = section.querySelector('.swiper-wrapper');
6800  const prevBtn   = section.querySelector('.control-prev');
6801  const nextBtn   = section.querySelector('.control-next');
6802
6803  let swiper = null;
6804  let navHandlers = null;
6805  const mq = window.matchMedia('(max-width:1000px)');
6806
6807  function attachMobileNav(){
6808    if (navHandlers) return;
6809
6810    // measure one "step" = slide width + gap
6811    const firstSlide = wrapper.querySelector('.swiper-slide');
6812    const styles = getComputedStyle(wrapper);
6813    const gapPx = parseFloat(styles.columnGap || styles.gap || '0') || 0;
6814
6815    function step() {
6816      // re-measure on each click in case of resize
6817      return (firstSlide?.getBoundingClientRect().width || 0) + gapPx;
6818    }
6819    function clamp(x, min, max){ return Math.max(min, Math.min(max, x)); }
6820    function nextSnapLeft(dir){            // dir: +1 (next) or -1 (prev)
6821      const s = step();
6822      const maxLeft = wrapper.scrollWidth - wrapper.clientWidth;
6823      if (s <= 0) return wrapper.scrollLeft;
6824
6825      const i = wrapper.scrollLeft / s;
6826      const targetIdx = dir > 0 ? Math.floor(i + 1) : Math.ceil(i - 1);
6827      const target = targetIdx * s;
6828      return clamp(Math.round(target), 0, maxLeft);
6829    }
6830
6831    const onPrev = () => wrapper.scrollTo({ left: nextSnapLeft(-1), behavior: 'smooth' });
6832    const onNext = () => wrapper.scrollTo({ left: nextSnapLeft(+1), behavior: 'smooth' });
6833
6834    prevBtn?.addEventListener('click', onPrev);
6835    nextBtn?.addEventListener('click', onNext);
6836    navHandlers = { onPrev, onNext };
6837  }
6838  function detachMobileNav(){
6839    if (!navHandlers) return;
6840    prevBtn?.removeEventListener('click', navHandlers.onPrev);
6841    nextBtn?.removeEventListener('click', navHandlers.onNext);
6842    navHandlers = null;
6843  }
6844
6845  function toMobile(){
6846    if (swiper){ swiper.destroy(true,true); swiper = null; }
6847    // clear Swiper transforms so native scroll works
6848    wrapper.style.transform = '';
6849    container.classList.remove('swiper-initialized','swiper-horizontal');
6850    attachMobileNav();
6851  }
6852
6853  function toDesktop(){
6854    detachMobileNav();
6855    swiper = new Swiper(container, {
6856      slidesPerView: 4,
6857      centeredSlides: false,
6858      spaceBetween: 32,
6859      loop: true,
6860      navigation: {
6861        nextEl: nextBtn,
6862        prevEl: prevBtn,
6863      },
6864      breakpoints: {
6865        0:    { slidesPerView: 1.5, centeredSlides: true, spaceBetween: 20 },
6866        1024: { slidesPerView: 4,   centeredSlides: false, spaceBetween: 32 }
6867      }
6868    });
6869  }
6870
6871  function applyMode(){ mq.matches ? toMobile() : toDesktop(); }
6872  mq.addEventListener('change', applyMode);
6873  applyMode();
6874})();
6875});
6876</script>
6876
6877
6878
6879</div><div id="shopify-section-template--22413711704202__section_manual_feature_tiles_1" class="shopify-section"><style>
6880  [id="template--22413711704202__section_manual_feature_tiles_1"]{ padding: 40px 32px 32px; }
6881  .mft-grid{ display:grid; gap:24px; }
6882  @media(min-width:768px){ .mft-grid{ grid-template-columns:repeat(2,1fr); } }
6883  @media(min-width:1200px){ .mft-grid{ grid-template-columns:repeat(3,1fr); } }
6884
6885  @media (min-width:1200px){
6886    .mft-grid--two{
6887      grid-template-columns: repeat(2, 1fr) !important;
6888    }
6889
6890    .mft-grid--two .mft-tile{
6891      min-height: 700px;
6892    }
6893  }
6894
6895  .mft-tile{
6896    position:relative; overflow:hidden; border-radius:6px; background:#0f0f0f;
6897    min-height:500px;
6898    display:block;
6899  }
6900  .mft-img{ position:absolute; inset:0; }
6901  .mft-img img{ width:100%; height:100%; object-fit:cover; display:block; }
6902
6903  .mft-overlay{
6904    position:absolute; inset:0;
6905    background:linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,.55) 100%);
6906  }
6907  .mft-content{
6908    position:absolute; left:20px; right:20px; bottom:20px; z-index:2; color:#fff;
6909    display:flex; flex-direction:column; gap:14px;
6910  }
6911  .mft-title{
6912    font-family:"Dela Gothic One", sans-serif; 
6913    font-weight:400;
6914    font-size:36px; 
6915    line-height:1.05;
6916    color: #FFFFFF;
6917  }
6918  .mft-btn{
6919    font-family:"DM Sans", sans-serif; 
6920    align-self:flex-start; background:#fff; color:#262626; border-radius:9999px;
6921    padding:10px 18px; font-weight:600; font-size:14px; text-decoration:none;
6922  }
6923  .mft-badge{
6924    position:absolute; top: 12px; right: 12px;
6925    background: #FFF716;
6926    color:#323232;
6927    font-weight: 100;
6928    font-size: 12px;
6929    letter-spacing:.02em;
6930    padding: 4px 10px;
6931    border-radius: 2px;
6932    font-family:"Dela Gothic One"
6933  }
6934
6935  @media(max-width:767px){
6936    [id="template--22413711704202__section_manual_feature_tiles_1"]{ padding:16px; }
6937    .mft-tile{ min-height:400px; }
6938    .mft-title{ font-size:28px; }
6939  }
6940</style>
6941
6942
6943<section id="template--22413711704202__section_manual_feature_tiles_1">
6944  <div class="mft-grid">
6945    
6946      
6947      
6948      
6949
6950      <a class="mft-tile" href="/products/creatine-xpress-bundle?variant=46311578271882" >
6951        <div class="mft-img">
6952          
6953            <img
6954              src="//happyhydrate.is/cdn/shop/files/gads_square_vorumynd.png?v=1761490561&width=1200"
6955              srcset="//happyhydrate.is/cdn/shop/files/gads_square_vorumynd.png?v=1761490561&width=800 800w, //happyhydrate.is/cdn/shop/files/gads_square_vorumynd.png?v=1761490561&width=1200 1200w, //happyhydrate.is/cdn/shop/files/gads_square_vorumynd.png?v=1761490561&width=1600 1600w"
6956              sizes="(min-width:1200px) 33vw, (min-width:768px) 50vw, 100vw"
6957              alt=""
6958              width="1080"
6959              height="1080"
6960              loading="lazy"
6961              decoding="async">
6962          
6963        </div>
6964
6965        
6966        <span class="mft-overlay" aria-hidden="true"></span>
6967
6968        <div class="mft-content">
6969          <div class="mft-title">Kreatín</div>
6970          
6971            <span class="mft-btn">Skoða vöru</span>
6972          
6973        </div>
6974      </a>
6975    
6976      
6977      
6978      
6979
6980      <a class="mft-tile" href="/pages/brusi-whisker" >
6981        <div class="mft-img">
6982          
6983            <img
6984              src="//happyhydrate.is/cdn/shop/files/Stika-3.png?v=1761491700&width=1200"
6985              srcset="//happyhydrate.is/cdn/shop/files/Stika-3.png?v=1761491700&width=800 800w, //happyhydrate.is/cdn/shop/files/Stika-3.png?v=1761491700&width=1200 1200w, //happyhydrate.is/cdn/shop/files/Stika-3.png?v=1761491700&width=1600 1600w"
6986              sizes="(min-width:1200px) 33vw, (min-width:768px) 50vw, 100vw"
6987              alt=""
6988              width="1080"
6989              height="1080"
6990              loading="lazy"
6991              decoding="async">
6992          
6993        </div>
6994
6995        
6996        <span class="mft-overlay" aria-hidden="true"></span>
6997
6998        <div class="mft-content">
6999          <div class="mft-title">Komdu í áskrift</div>
7000          
7001            <span class="mft-btn">Fá 15% afslátt</span>
7002          
7003        </div>
7004      </a>
7005    
7006      
7007      
7008      
7009
7010      <a class="mft-tile" href="/products/hydration-kids-1" >
7011        <div class="mft-img">
7012          
7013            <img
7014              src="//happyhydrate.is/cdn/shop/files/Untitled_design-85_98e2b9dd-2961-4b19-9e3a-372e0773deff.png?v=1761490327&width=1200"
7015              srcset="//happyhydrate.is/cdn/shop/files/Untitled_design-85_98e2b9dd-2961-4b19-9e3a-372e0773deff.png?v=1761490327&width=800 800w, //happyhydrate.is/cdn/shop/files/Untitled_design-85_98e2b9dd-2961-4b19-9e3a-372e0773deff.png?v=1761490327&width=1200 1200w, //happyhydrate.is/cdn/shop/files/Untitled_design-85_98e2b9dd-2961-4b19-9e3a-372e0773deff.png?v=1761490327&width=1600 1600w"
7016              sizes="(min-width:1200px) 33vw, (min-width:768px) 50vw, 100vw"
7017              alt=""
7018              width="1080"
7019              height="1080"
7020              loading="lazy"
7021              decoding="async">
7022          
7023        </div>
7024
7025        <span class="mft-badge">NÝTT</span>
7026        <span class="mft-overlay" aria-hidden="true"></span>
7027
7028        <div class="mft-content">
7029          <div class="mft-title">Hydration Kids</div>
7030          
7031            <span class="mft-btn">Skoða vöru</span>
7032          
7033        </div>
7034      </a>
7035    
7036  </div>
7037</section>
7038
7039
7040</div><div id="shopify-section-template--22413711704202__section_full_video_nU4Gwy" class="shopify-section"><style>
7041  [id="template--22413711704202__section_full_video_nU4Gwy"]{ padding: 0 32px 32px; background:#fff; }
7042  .fv-wrap{ border-radius:6px; overflow:hidden; }
7043  .fv-video{
7044    width:100%;
7045    height:auto;
7046    display:block;
7047    aspect-ratio: 16 / 9;   /* nice big landscape video */
7048    object-fit: cover;      /* crops edges if needed to fill */
7049    background:#000;
7050  }
7051  @media (max-width:1024px){
7052    [id="template--22413711704202__section_full_video_nU4Gwy"]{ padding: 16px 16px; }
7053
7054
7055    /* Square on phones: robust ratio box (works even on older Safari) */
7056    .fv-wrap{ position: relative; overflow: hidden; }
7057    .fv-wrap::before{ content:""; display:block; padding-top:100%; } /* 1:1 box */
7058    .fv-wrap > .fv-video{
7059      position:absolute; inset:0;
7060      width:100%; height:100%;
7061      object-fit: cover;          /* fill square; crop left/right if needed */
7062      object-position: center;
7063    }
7064  }
7065</style>
7066
7067<section id="template--22413711704202__section_full_video_nU4Gwy">
7068  <div class="fv-wrap">
7069    
7070      
7071      
7072
7073      
7074        <video playsinline="true" autoplay="autoplay" loop="loop" muted="muted" class="fv-video" preload="metadata" poster="//happyhydrate.is/cdn/shop/files/preview_images/6e10ec88d9254dec8403a0ba50b008a5.thumbnail.0000000000_small.jpg?v=1716406519" loading="lazy"><source src="//happyhydrate.is/cdn/shop/videos/c/vp/6e10ec88d9254dec8403a0ba50b008a5/6e10ec88d9254dec8403a0ba50b008a5.HD-1080p-7.2Mbps-29478654.mp4?v=0" type="video/mp4"><img src="//happyhydrate.is/cdn/shop/files/preview_images/6e10ec88d9254dec8403a0ba50b008a5.thumbnail.0000000000_small.jpg?v=1716406519"></video>
7075      
7076
7077    
7078  </div>
7079</section>
7080
7081
7082
7083</div>
7084</main>
7085
7086<!-- Footer -->
7087<div id="shopify-section-theme-footer" class="shopify-section">
7088
7089
7090
7091
7092
7093<footer id="footer"
7094        >
7095    <div id="footerWrapper" class="container">
7096
7097        
7098
7099
7100        <div id="footerContent">
7101
7102            <div style="flex: 1;">
7103                <div style="max-width: 360px; gap: 8px; display: flex; flex-direction: column;">
7104                    <h1 class="footerHeading">Hafðu samband</h1>
7105                    <p class="footerText">Endilega hafðu samband við okkur og við munum svara þér innan 24 tíma. Mánudaga - Föstudaga 08.00 - 21.00</p>
7106
7107                    <div style="margin-top: 12px; display: flex; gap: 8px; flex-direction: column;">
7108
7109                        <button class="footerButton" type="button" onclick="window.location.href='/pages/contact'">
7110                            <span>Hafa samband</span>
7111
7112                            <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7113                            <g clip-path="url(#clip0_1176_2947)">
7114                            <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7115                            <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7116                            </g>
7117                            <defs>
7118                            <clipPath id="clip0_1176_2947">
7119                            <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7120                            </clipPath>
7121                            </defs>
7122                            </svg>
7123                        </button>
7124                        
7125                        
7126                    </div>
7127                </div>
7128
7129
7130            </div>
7131
7132            <div id="midlar-vorur-container">
7133                <div>
7134                    <p class="midlar-vorur-footerText">Vörunar okkar</p>
7135
7136                    
7137                        
7138                    
7139                        
7140                    
7141                        
7142                    
7143                        
7144                    
7145                        
7146                    
7147                        
7148                            <div class="footerNavGroup">
7149                                <div class="footerNavGroupLinks">
7150                                    <div class="footerNavGroupLinksWrapper">
7151                                        
7152                                            <a class="footerNavItem" href="/collections/shop-all">Allar vörur</a>
7153                                        
7154                                            <a class="footerNavItem" href="/products/hydration-xpress?variant=500
715450860744842">Hydrate</a>
7155                                        
7156                                            <a class="footerNavItem" href="/products/energy-xpress-bundle">Energy</a>
7157                                        
7158                                            <a class="footerNavItem" href="/products/creatine-xpress-bundle">Kreatín</a>
7159                                        
7160                                            <a class="footerNavItem" href="/pages/um-happy-hydrate">Um okkur</a>
7161                                        
7162                                            <a class="footerNavItem" href="/pages/faq">Algengar spurningar</a>
7163                                        
7164                                    </div>
7165                                </div>
7166                            </div>
7167                        
7168                    
7169                </div>
7170
7171                <div>
7172                    <p class="midlar-vorur-footerText">Miðlarnir okkar</p>
7173
7174                    <div id="social-links-footer-container">
7175                        
7176                            
7177                                <a href="https://www.facebook.com/happyhydrate" target="_blank" class="footerSocialLink">
7178                                    <img src="//happyhydrate.is/cdn/shop/files/icon_fb_09_25.svg?v=1758471700&width=64" alt="" class="footerSocialLinkImg" width="32" height="32" loading="lazy" decoding="async">
7179                                    <span>Facebook</span>
7180                                    <div>
7181                                        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7182                                        <g clip-path="url(#clip0_1176_2947)">
7183                                        <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7184                                        <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7185                                        </g>
7186                                        <defs>
7187                                        <clipPath id="clip0_1176_2947">
7188                                        <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7189                                        </clipPath>
7190                                        </defs>
7191                                        </svg>
7192
7193                                    </div>
7194                                </a>
7195                            
7196                        
7197                            
7198                                <a href="https://www.instagram.com/happyhydrate.is/" target="_blank" class="footerSocialLink">
7199                                    <img src="//happyhydrate.is/cdn/shop/files/icon_ig_09_25.svg?v=1758471677&width=64" alt="" class="footerSocialLinkImg" width="32" height="32" loading="lazy" decoding="async">
7200                                    <span>Instagram</span>
7201                                    <div>
7202                                        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7203                                        <g clip-path="url(#clip0_1176_2947)">
7204                                        <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7205                                        <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7206                                        </g>
7207                                        <defs>
7208                                        <clipPath id="clip0_1176_2947">
7209                                        <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7210                                        </clipPath>
7211                                        </defs>
7212                                        </svg>
7213
7214                                    </div>
7215                                </a>
7216                            
7217                        
7218                            
7219                                <a href="https://www.tiktok.com/@happyhydrate" target="_blank" class="footerSocialLink">
7220                                    <img src="//happyhydrate.is/cdn/shop/files/icon_tt_09_25.svg?v=1758471727&width=64" alt="" class="footerSocialLinkImg" width="32" height="32" loading="lazy" decoding="async">
7221                                    <span>Tik Tok</span>
7222                                    <div>
7223                                        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7224                                        <g clip-path="url(#clip0_1176_2947)">
7225                                        <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7226                                        <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7227                                        </g>
7228                                        <defs>
7229                                        <clipPath id="clip0_1176_2947">
7230                                        <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7231                                        </clipPath>
7232                                        </defs>
7233                                        </svg>
7234
7235                                    </div>
7236                                </a>
7237                            
7238                        
7239                            
7240                                <a href="https://www.youtube.com/@HappyHydrate" target="_blank" class="footerSocialLink">
7241                                    <img src="//happyhydrate.is/cdn/shop/files/icon_yt_09_25.svg?v=1758471743&width=64" alt="" class="footerSocialLinkImg" width="32" height="32" loading="lazy" decoding="async">
7242                                    <span>Youtube</span>
7243                                    <div>
7244                                        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7245                                        <g clip-path="url(#clip0_1176_2947)">
7246                                        <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7247                                        <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7248                                        </g>
7249                                        <defs>
7250                                        <clipPath id="clip0_1176_2947">
7251                                        <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7252                                        </clipPath>
7253                                        </defs>
7254                                        </svg>
7255
7256                                    </div>
7257                                </a>
7258                            
7259                        
7260                            
7261                                <a href="https://www.linkedin.com/company/happy-hydrate/" target="_blank" class="footerSocialLink">
7262                                    <img src="//happyhydrate.is/cdn/shop/files/icon_li_09_25.svg?v=1758471735&width=64" alt="" class="footerSocialLinkImg" width="32" height="32" loading="lazy" decoding="async">
7263                                    <span>LinkedIn</span>
7264                                    <div>
7265                                        <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7266                                        <g clip-path="url(#clip0_1176_2947)">
7267                                        <path d="M1.46875 11.4981L10.5313 2.43555" stroke="white" stroke-width="1.5"/>
7268                                        <path d="M3.73438 2.43555H10.5312V9.23242" stroke="white" stroke-width="1.5"/>
7269                                        </g>
7270                                        <defs>
7271                                        <clipPath id="clip0_1176_2947">
7272                                        <rect width="12" height="12" fill="white" transform="translate(0 0.964844)"/>
7273                                        </clipPath>
7274                                        </defs>
7275                                        </svg>
7276
7277                                    </div>
7278                                </a>
7279                            
7280                        
7281                            
7282                        
7283                    </div>
7284                </div>
7285
7286            </div>
7287
7288
7289        </div>
7290
7291        <div>
7292     
7293            <div id="footerDisclaimerEfstButton">
7294                <div id="footerDisclaimer">
7295                    *Vítamín eru ekki ætluð til þess að lækna sjúkdóma eða koma í veg fyrir þá og fæ
7295ðubótarefni eiga ekki að koma í stað hollrar og fjölbreyttrar fæðu.
7296                </div>
7297
7298                <button id="efstButton" type="button" onclick="window.scrollTo({ top: 0, behavior: 'smooth' })">
7299                    <span>Efst á síðu</span>
7300
7301                    <svg xmlns="http://www.w3.org/2000/svg" width="12" height="13" viewBox="0 0 12 13" fill="none">
7302                        <g clip-path="url(#clip0_1324_12069)">
7303                        <path d="M6 11.7246L6 1.66211" stroke="white" stroke-width="1.5"/>
7304                        <path d="M0.96875 6.69336L6 1.66211L11.0312 6.69336" stroke="white" stroke-width="1.5"/>
7305                        </g>
7306                        <defs>
7307                        <clipPath id="clip0_1324_12069">
7308                        <rect width="12" height="12" fill="white" transform="translate(12 12.4512) rotate(-180)"/>
7309                        </clipPath>
7310                        </defs>
7311                        </svg>
7312                </button>
7313            </div>
7314
7315            
7316            <div id="footerLegal">
7317                <span id="footerLegalCompany">© 2026 Dro2026 (490726-0120)</span>
7318                <div id="footerLegalLinks">
7319                    
7320                        <a class="footerLegalItem" href="/policies/refund-policy">Skilafrestur</a>
7321                    
7322                        <a class="footerLegalItem" href="/policies/terms-of-service">Skilmálar</a>
7323                    
7324                </div>
7325            </div>
7326                
7327
7328
7329      
7330            <img src="//happyhydrate.is/cdn/shop/t/80/assets/happy-hydrate.svg?v=29729460305610930331788984151" alt="Happy Hydrate" width="200" height="40" loading="lazy" decoding="async">
7331        </div>
7332 
7333    </div>
7334</footer>
7335
7336
7337</div>
7338
7339<div id="shopify-block-AQjZGMFhGOWxrSGM2c__15996750675595739762" class="shopify-block shopify-app-block">
7339<script
7340  src="https://cdn.shopify.com/extensions/01a0cee4-af97-7e31-82d6-68dbb541e24e/orvono-happy-hydrate-5/assets/orvono-popup.js"
7341  data-shop="happyhydrate-1068.myshopify.com"
7342  defer
7343></script>
7343
7344
7345
7346</div><div id="shopify-block-AM05QbkZpaG5MWU93V__18228966181090706294" class="shopify-block shopify-app-block">
7347
7348
7349  
7349<script type="module" src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-upsell.js" defer="defer"></script>
7349
7350  
7350<script type="module" src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-upsell-components.esm.js" defer="defer"></script>
7350
7351
7352
7353
7354<script>
7355
7356  
7357  
7358</script>
7358
7359
7360<script>
7361
7362  window.lbInitMode = "immediate";
7363  
7364  window.lbComponentSrc = "https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-upsell-components.esm.js";</script>
7364
7365
7366<script type="text/javascript" src="https://cdn.shopify.com/extensions/01a0ec21-7369-78a6-b9c0-c07227d664ec/lb-upsell-451/assets/lb-utils.js" defer="defer"></script>
7366
7367
7368</div><div id="shopify-block-AYU1uNGdwRjVma1l1U__16017602894386113438" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: junip-store-key --><span
7369  class="junip-store-key"
7370  data-supports-theme-extensions="true"
7371  data-shopify-preview-mode="true"
7372  data-store-key="RkhQRF5dNtyZAWD1C6TXkhA8"
7373  data-onsite-enabled="true"
7374  data-review-count-enabled="true"
7375  data-star-color="#44d62c"
7376  data-star-template-url="https://api.juniphq.com/images/star_options/1/template">
7377</span>
7378<!-- END app snippet -->
7379<script src="https://widgets.juniphq.com/v1/junip_shopify.js" async></script>
7379
7380</div>
7380<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
7380
7381</body>
7382
7383</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.