PageSourceSearch

https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5

html ipowerresale.com collected 2026-10-04 13:25:21 UTC 500,960 bytes, 10,573 lines download raw bytes

1<!doctype html>
2<html
3  class="no-js"
4  lang="en"
5  dir="ltr">
6  <head>
7        <!-- SEA Survey & Quiz consent blocker. Blocks outbound IP without Analytics consent -->
8    
8<script>
9(function () {
10  function cookie(name) {
11    var parts = document.cookie.split('; ');
12    for (var i = 0; i < parts.length; i++) {
13      var eq = parts[i].indexOf('=');
14      if (parts[i].slice(0, eq) === name) {
15        return decodeURIComponent(parts[i].slice(eq + 1));
16      }
17    }
18    return null;
19  }
20
21  function analyticsAllowed() {
22    var status = cookie('cookieconsent_status');
23    if (!status || status === 'deny') return false;
24    var disabled = cookie('cookieconsent_preferences_disabled') || '';
25    return disabled.split(',').indexOf('analytics') === -1;
26  }
27
28  if (analyticsAllowed()) return;  // consented: stay out of the way entirely
29
30  var store;
31  Object.defineProperty(window, 'AVADA_SURVEY', {
32    configurable: true,
33    get: function () { return store; },
34    set: function (v) {
35      store = v;
36      if (store && typeof store === 'object') store._disabled = true;
37    }
38  });
39})();
40</script>
40
41    <meta charset="utf-8">
42    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
43    <meta name="viewport" content="width=device-width,initial-scale=1">
44    <meta name="theme-color" content="#5e6350">
45    <link rel="canonical" href="https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5">
46    <link
47      rel="preconnect"
48      href="https://cdn.shopify.com"
49      crossorigin>
50    <link
51      rel="preconnect"
52      href="https://fonts.shopifycdn.com"
53      crossorigin>
54    <link rel="dns-prefetch" href="https://productreviews.shopifycdn.com">
55    <link rel="dns-prefetch" href="https://ajax.googleapis.com">
56    <link rel="dns-prefetch" href="https://maps.googleapis.com">
57    <link rel="dns-prefetch" href="https://maps.gstatic.com"><link
58        rel="shortcut icon"
59        href="//ipowerresale.com/cdn/shop/files/favicon-cropped_32x32.png?v=1674766369"
60        type="image/png" /><title>Apple iPad Pro | iPowerResale
61</title>
62<meta name="description" content="Browse the Apple iPad Pro and more refurbished Apple products available online from iPowerResale. Start shopping today."><meta property="og:site_name" content="iPowerResale">
63  <meta property="og:url" content="https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5">
64  <meta property="og:title" content="iPad Pro 11-inch M5">
65  <meta property="og:type" content="product">
66  <meta property="og:description" content="Browse the Apple iPad Pro and more refurbished Apple products available online from iPowerResale. Start shopping today."><meta property="og:image" content="http://ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668">
67    <meta property="og:image:secure_url" content="https://ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668">
68    <meta property="og:image:width" content="1140">
69    <meta property="og:image:height" content="1140"><meta name="twitter:site" content="@">
70  <meta name="twitter:card" content="summary_large_image">
71  <meta name="twitter:title" content="iPad Pro 11-inch M5">
72  <meta name="twitter:description" content="Browse the Apple iPad Pro and more refurbished Apple products available online from iPowerResale. Start shopping today.">
73<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 73
73
74<script type="importmap">
75{
76  "imports": {
77    "element.base-media": "//ipowerresale.com/cdn/shop/t/130/assets/element.base-media.js?v=35720",
78    "element.image.parallax": "//ipowerresale.com/cdn/shop/t/130/assets/element.image.parallax.js?v=59188309605188605141790277978",
79    "element.model": "//ipowerresale.com/cdn/shop/t/130/assets/element.model.js?v=104979259955732717291790277978",
80    "element.quantity-selector": "//ipowerresale.com/cdn/shop/t/130/assets/element.quantity-selector.js?v=68208048201360514121790277979",
81    "element.text.rte": "//ipowerresale.com/cdn/shop/t/130/assets/element.text.rte.js?v=28194737298593644281790277979",
82    "element.video": "//ipowerresale.com/cdn/shop/t/130/assets/element.video.js?v=110560105447302630031790277980",
83    "is-land": "//ipowerresale.com/cdn/shop/t/130/assets/is-land.min.js?v=92343381495565747271790278026",
84    "util.misc": "//ipowerresale.com/cdn/shop/t/130/assets/util.misc.js?v=117964846174238173191790278048",
85    "util.product-loader": "//ipowerresale.com/cdn/shop/t/130/assets/util.product-loader.js?v=71947287259713254281790278048",
86    "util.resource-loader": "//ipowerresale.com/cdn/shop/t/130/assets/util.resource-loader.js?v=81301169148003274841790278049",
87    "vendor.in-view": "//ipowerresale.com/cdn/shop/t/130/assets/vendor.in-view.js?v=126891093837844970591790278050"
88  }
89}
90</script>
90<script type="module" src="//ipowerresale.com/cdn/shop/t/130/assets/is-land.min.js?v=92343381495565747271790278026"></script>
90
91<style data-shopify>@font-face {
92  font-family: Inter;
93  font-weight: 400;
94  font-style: normal;
95  font-display: swap;
96  src: url("//ipowerresale.com/cdn/fonts/inter/inter_n4.b2a3f24c19b4de56e8871f609e73ca7f6d2e2bb9.woff2") format("woff2"),
97       url("//ipowerresale.com/cdn/fonts/inter/inter_n4.af8052d517e0c9ffac7b814872cecc27ae1fa132.woff") format("woff");
98}
99
100  @font-face {
101  font-family: Inter;
102  font-weight: 400;
103  font-style: normal;
104  font-display: swap;
105  src: url("//ipowerresale.com/cdn/fonts/inter/inter_n4.b2a3f24c19b4de56e8871f609e73ca7f6d2e2bb9.woff2") format("woff2"),
106       url("//ipowerresale.com/cdn/fonts/inter/inter_n4.af8052d517e0c9ffac7b814872cecc27ae1fa132.woff") format("woff");
107}
108
109
110  @font-face {
111  font-family: Inter;
112  font-weight: 600;
113  font-style: normal;
114  font-display: swap;
115  src: url("//ipowerresale.com/cdn/fonts/inter/inter_n6.771af0474a71b3797eb38f3487d6fb79d43b6877.woff2") format("woff2"),
116       url("//ipowerresale.com/cdn/fonts/inter/inter_n6.88c903d8f9e157d48b73b7777d0642925bcecde7.woff") format("woff");
117}
118
119  @font-face {
120  font-family: Inter;
121  font-weight: 400;
122  font-style: italic;
123  font-display: swap;
124  src: url("//ipowerresale.com/cdn/fonts/inter/inter_i4.feae1981dda792ab80d117249d9c7e0f1017e5b3.woff2") format("woff2"),
125       url("//ipowerresale.com/cdn/fonts/inter/inter_i4.62773b7113d5e5f02c71486623cf828884c85c6e.woff") format("woff");
126}
127
128  @font-face {
129  font-family: Inter;
130  font-weight: 600;
131  font-style: italic;
132  font-display: swap;
133  src: url("//ipowerresale.com/cdn/fonts/inter/inter_i6.3bbe0fe1c7ee4f282f9c2e296f3e4401a48cbe19.woff2") format("woff2"),
134       url("//ipowerresale.com/cdn/fonts/inter/inter_i6.8bea21f57a10d5416ddf685e2c91682ec237876d.woff") format("woff");
135}
136
137</style><link href="//ipowerresale.com/cdn/shop/t/130/assets/theme.css?v=22760760703466984761790278101" rel="stylesheet" type="text/css" media="all" />
138<style data-shopify>:root {
139    --typeHeaderPrimary: Inter;
140    --typeHeaderFallback: sans-serif;
141    --typeHeaderSize: 32px;
142    --typeHeaderWeight: 400;
143    --typeHeaderLineHeight: 1.1;
144    --typeHeaderSpacing: 0.1em;
145
146    --typeBasePrimary:Inter;
147    --typeBaseFallback:sans-serif;
148    --typeBaseSize: 16px;
149    --typeBaseWeight: 400;
150    --typeBaseSpacing: 0.05em;
151    --typeBaseLineHeight: 1.4;
152    --typeBaselineHeightMinus01: 1.3;
153
154    --typeCollectionTitle: 22px;
155
156    --iconWeight: 3px;
157    --iconLinecaps: round;
158
159    
160        --buttonRadius: 3px;
161    
162
163    --colorGridOverlayOpacity: 0.12;
164    --colorAnnouncement: #6b3f21;
165    --colorAnnouncementText: #ffffff;
166
167    --colorBody: #ffffff;
168    --colorBodyAlpha05: rgba(255, 255, 255, 0.05);
169    --colorBodyDim: #f2f2f2;
170    --colorBodyLightDim: #fafafa;
171    --colorBodyMediumDim: #f5f5f5;
172
173
174    --colorBorder: #e8e8e1;
175
176    --colorBtnPrimary: #5e6350;
177    --colorBtnPrimaryLight: #797f67;
178    --colorBtnPrimaryDim: #515545;
179    --colorBtnPrimaryText: #ffffff;
180
181    --colorCartDot: #d74a5d;
182
183    --colorDrawers: #ffffff;
184    --colorDrawersDim: #f2f2f2;
185    --colorDrawerBorder: #e8e8e1;
186    --colorDrawerText: #171717;
187    --colorDrawerTextDark: #000000;
188    --colorDrawerButton: #171717;
189    --colorDrawerButtonText: #ffffff;
190
191    --colorFooter: #ffffff;
192    --colorFooterText: #171717;
193    --colorFooterTextAlpha01: #171717;
194
195    --colorGridOverlay: #000000;
196    --colorGridOverlayOpacity: 0.1;
197
198    --colorHeaderTextAlpha01: rgba(23, 23, 23, 0.1);
199
200    --colorHeroText: #ffffff;
201
202    --colorSmallImageBg: #ffffff;
203    --colorLargeImageBg: #171717;
204
205    --colorImageOverlay: #171717;
206    --colorImageOverlayOpacity: 0.1;
207    --colorImageOverlayTextShadow: 0.2;
208
209    --colorLink: #171717;
210
211    --colorModalBg: rgba(230, 230, 230, 0.6);
212
213    --colorNav: #ffffff;
214    --colorNavText: #171717;
215
216    --colorPrice: #171717;
217
218    --colorSaleTag: #d74a5d;
219    --colorSaleTagText: #ffffff;
220
221    --colorTextBody: #171717;
222    --colorTextBodyAlpha015: rgba(23, 23, 23, 0.15);
223    --colorTextBodyAlpha005: rgba(23, 23, 23, 0.05);
224    --colorTextBodyAlpha008: rgba(23, 23, 23, 0.08);
225    --colorTextSavings: #d74a5d;
226
227    --urlIcoSelect: url(//ipowerresale.com/cdn/shop/t/130/assets/ico-select.svg);
228    --urlIcoSelectFooter: url(//ipowerresale.com/cdn/shop/t/130/assets/ico-select-footer.svg);
229    --urlIcoSelectWhite: url(//ipowerresale.com/cdn/shop/t/130/assets/ico-select-white.svg);
230
231    --grid-gutter: 17px;
232    --drawer-gutter: 20px;
233
234    --sizeChartMargin: 25px 0;
235    --sizeChartIconMargin: 5px;
236
237    --newsletterReminderPadding: 40px;
238
239    /*Shop Pay Installments*/
240    --color-body-text: #171717;
241    --color-body: #ffffff;
242    --color-bg: #ffffff;
243    }
244
245    .placeholder-content {
246    background-image: linear-gradient(100deg, #ffffff 40%, #f7f7f7 63%, #ffffff 79%);
247    }</style>
247<script>
248          document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
249
250          window.theme = window.theme || {};
251          theme.routes = {
252      home: "/",
253      cart: "/cart.js",
254      cartPage: "/cart",
255      cartAdd: "/cart/add.js",
256      cartChange: "/cart/change.js",
257      search: "/search",
258      predictiveSearch: "/search/suggest"
259          };
260          theme.strings = {
261      soldOut: "Sold Out",
262      unavailable: "Unavailable",
263      inStockLabel: "In stock, ready to ship",
264      oneStockLabel: "Low stock - [count] item left",
265      otherStockLabel: "Low stock - [count] items left",
266      willNotShipUntil: "Ready to ship [date]",
267      willBeInStockAfter: "Back in stock [date]",
268      waitingForStock: "Backordered, shipping soon",
269      savePrice: "Save [saved_amount]",
270      cartEmpty: "Your cart is currently empty.",
271      cartTermsConfirmation: "You must agree with the terms and conditions of sales to check out",
272      searchCollections: "Collections",
273      searchPages: "Pages",
274      searchArticles: "Articles",
275      productFrom: "from ",
276      maxQuantity: "You can only have [quantity] of [title] in your cart."
277          };
278          theme.settings = {
279      cartType: "drawer",
280      isCustomerTemplate: false,
281      moneyFormat: "${{amount}}",
282      saveType: "dollar",
283      productImageSize: "portrait",
284      productImageCover: true,
285      predictiveSearch: true,
286      predictiveSearchType: null,
287      predictiveSearchVendor: false,
288      predictiveSearchPrice: false,
289      quickView: true,
290      themeName: 'Impulse',
291      themeVersion: "8.1.0"
292          };
293    </script>
293
294
295    
295<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
295<meta name="google-site-verification" content="OiTKPs3JtK4D4R6Deui3jAKPBi79vsrbJD-fZ7whtxM">
296<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/62136156329/digital_wallets/dialog">
297<meta id="in-context-paypal-metadata" data-shop-id="62136156329" data-venmo-supported="false" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
298<link rel="ucp" href="/.well-known/ucp" version="2026-08-25"><link rel="buy" href="/cart/46682881720489:1?ucp/version=2026-08-25&amp;context/payment/0/handler=dev.shopify.shop_pay" payment="dev.shopify.shop_pay com.google.pay dev.shopify.card"><link rel="alternate" hreflang="x-default" href="https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5">
299<link rel="alternate" hreflang="en" href="https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5">
300<link rel="alternate" hreflang="de" href="https://ipowerresale.com/de/products/apple-ipad-pro-11-inch-m5">
301<link rel="alternate" type="application/json+oembed" href="https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5.oembed">
302<script async="async" src="/checkouts/internal/preloads.js?locale=en-US&configuration_id=4671242409&edited_at=1790268240"></script>
302
303<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
304<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&configuration_id=4671242409&edited_at=1790268240&shop_id=62136156329" crossorigin="anonymous"></script>
vendor: 1 bytes, line 304
304
305<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":62136156329,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/62136156329","merchantName":"iPowerResale","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"iPowerResale","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 305
305
306<script id="shopify-features" type="application/json">{"accessToken":"08e16357ba9f0749bef7b2a1df173be1","betas":["rich-media-storefront-analytics"],"domain":"ipowerresale.com","predictiveSearch":true,"shopId":62136156329,"locale":"en"}</script>
vendor: 1 bytes, line 306
306
307<script>var Shopify = Shopify || {};
308Shopify.shop = "ipowerresale.myshopify.com";
309Shopify.locale = "en";
310Shopify.currency = {"active":"USD","rate":"1.0"};
311Shopify.country = "US";
312Shopify.theme = {"name":"iPad Pencil Promo 09.24.26","id":165931122857,"schema_name":"Impulse","schema_version":"8.1.0","theme_store_id":null,"role":"main"};
313Shopify.theme.handle = "null";
314Shopify.theme.style = {"id":null,"handle":null};
315Shopify.cdnHost = "ipowerresale.com/cdn";
316Shopify.routes = Shopify.routes || {};
317Shopify.routes.root = "/";
318Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
319Shopify.SignInWithShop = Shopify.SignInWithShop || {};
320Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
321Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 321
321
322<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 322
322
323<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 323
323
324<script>
325  window.ShopifyPay = window.ShopifyPay || {};
326  window.ShopifyPay.apiHost = "shop.app\/pay";
327  window.ShopifyPay.redirectState = null;
328</script>
vendor: 1 bytes, line 328
328
329<script>
330  window.Shopify = window.Shopify || {};
331  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
332  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
333  window.Shopify.SignInWithShop.eligible = true;
334</script>
vendor: 1 bytes, line 334
334
335<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
vendor: 1 bytes, line 335
335
336<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 336
336
337<script type="module">
338  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");
339
340  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
341
342</script>
vendor: 1 bytes, line 342
342
343<script>
344  window.Shopify = window.Shopify || {};
345  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
346  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"]};
347</script>
vendor: 1 bytes, line 347
347
348<script>(function() {
349  var isLoaded = false;
350  function asyncLoad() {
351    if (isLoaded) return;
352    isLoaded = true;
353    var urls = ["https:\/\/cdn-scripts.signifyd.com\/shopify\/script-tag.js?shop=ipowerresale.myshopify.com"];
354    for (var i = 0; i < urls.length; i++) {
355      var s = document.createElement('script');
356      s.type = 'text/javascript';
357      s.async = true;
358      s.src = urls[i];
359      var x = document.getElementsByTagName('script')[0];
360      x.parentNode.insertBefore(s, x);
361    }
362  };
363  if(window.attachEvent) {
364    window.attachEvent('onload', asyncLoad);
365  } else {
366    window.addEventListener('load', asyncLoad, false);
367  }
368})();</script>
vendor: 1 bytes, line 368
368
369<script id="__st">var __st={"a":62136156329,"offset":-25200,"reqid":"49261112-e20a-403a-bf82-814d5db81e5f-1791120319","pageurl":"ipowerresale.com\/products\/apple-ipad-pro-11-inch-m5","u":"aed239dcf936","p":"product","rtyp":"product","rid":8832364773545};</script>
vendor: 1 bytes, line 369
369
370<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 370
370
371<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 371
371
372<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//ipowerresale.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 372
372
373<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 = "//ipowerresale.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
373<script crossorigin="anonymous" defer="defer" src="//ipowerresale.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 373
373
374<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 374
374
375<script>
376  window.Shopify = window.Shopify || {};
377  window.Shopify.MCP = window.Shopify.MCP || {};
378  window.Shopify.MCP.enabled = true;
379  window.Shopify.MCP.shop = "ipowerresale.myshopify.com";
380  window.Shopify.MCP.mcpEndpoint = "https:\/\/ipowerresale.com\/api\/mcp";
381  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"]}}];
382</script>
vendor: 1 bytes, line 382
382
383<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("\/\/ipowerresale.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
384</script>
vendor: 1 bytes, line 384
384
385<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://ipowerresale.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
386</script>
vendor: 1 bytes, line 386
386
387<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
388  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);
389</script>
vendor: 1 bytes, line 389
389
390<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})}}));
391</script>
391
392<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://ipowerresale.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
393<style id="shopify-accelerated-checkout-cart">
394        #shopify-buyer-consent {
395  margin-top: 1em;
396  display: inline-block;
397  width: 100%;
398}
399
400#shopify-buyer-consent.hidden {
401  display: none;
402}
403
404#shopify-subscription-policy-button {
405  background: none;
406  border: none;
407  padding: 0;
408  text-decoration: underline;
409  font-size: inherit;
410  cursor: pointer;
411}
412
413#shopify-subscription-policy-button::before {
414  box-shadow: none;
415}
416
417      </style>
418
419<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
419<script id="shop-promise-product" type="application/json">
420  {
421    "productId": "8832364773545",
422    "variantId": "46682881720489"
423  }
424</script>
vendor: 1 bytes, line 424
424
425<script id="shop-promise-features" type="application/json">
426  {
427    "supportedPromiseBrands": ["shop_promise"],
428    "f_b9ba94d16a7d18ccd91d68be01e37df6": false,
429    "f_85e460659f2e1fdd04f763b1587427a4": false
430  }
431</script>
vendor: 1 bytes, line 431
431
432<script fetchpriority="high" defer="defer" src="https://ipowerresale.com/cdn/shopifycloud/shop-promise-pdp/prod/shop_promise_pdp.js?v=1" data-source-attribution="shopify.shop-promise-pdp" crossorigin="anonymous"></script>
432
433
434
435    <style data-shopify>:root
436    {
437      /* Root Variables */
438      /* ========================= */
439      --root-color-primary: #171717;
440      --color-primary: #171717;
441      --root-color-secondary: #ffffff;
442      --color-secondary: #ffffff;
443      --color-sale-tag: #d74a5d;
444      --color-sale-tag-text: #ffffff;
445      --layout-section-padding-block: 3rem;
446      --layout-section-padding-inline--md: 40px;
447      --layout-section-max-inline-size: 1420px;
448
449
450      /* Text */
451      /* ========================= */
452
453      /* Body Font Styles */
454      --element-text-font-family--body: Inter;
455      --element-text-font-family-fallback--body: sans-serif;
456      --element-text-font-weight--body: 400;
457      --element-text-letter-spacing--body: 0.05em;
458      --element-text-text-transform--body: none;
459
460      /* Body Font Sizes */
461      --element-text-font-size--body: initial;
462      --element-text-font-size--body-xs: 12px;
463      --element-text-font-size--body-sm: 14px;
464      --element-text-font-size--body-md: 16px;
465      --element-text-font-size--body-lg: 18px;
466
467      /* Body Line Heights */
468      --element-text-line-height--body: 1.4;
469
470      /* Heading Font Styles */
471      --element-text-font-family--heading: Inter;
472      --element-text-font-family-fallback--heading: sans-serif;
473      --element-text-font-weight--heading: 400;
474      --element-text-letter-spacing--heading: 0.1em;
475
476      
477        --element-text-text-transform--heading: uppercase;
478      
479
480
481      /* Heading Font Sizes */
482      --element-text-font-size--heading-2xl: 48px;
483      --element-text-font-size--heading-xl: 32px;
484      --element-text-font-size--heading-lg: 26px;
485      --element-text-font-size--heading-md: 24px;
486      --element-text-font-size--heading-sm: 18px;
487      --element-text-font-size--heading-xs: 16px;
488
489      /* Heading Line Heights */
490      --element-text-line-height--heading: 1.1;
491
492      /* Buttons */
493      /* ========================= */
494      
495        --element-button-radius: 3px;
496      
497
498      --element-button-padding-block: 12px;
499      --element-button-text-transform: uppercase;
500      --element-button-font-weight: 800;
501      --element-button-font-size: max(calc(var(--typeBaseSize) - 4px), 13px);
502      --element-button-letter-spacing: 0.3em;
503
504      /* Base Color Variables */
505      --element-button-color-primary: #5e6350;
506      --element-button-color-secondary: #ffffff;
507      --element-button-shade-border: 100%;
508
509      /* Hover State Variables */
510      --element-button-shade-background--hover: 0;
511      --element-button-shade-border--hover: 100%;
512
513      /* Focus State Variables */
514      --element-button-color-focus: var(--color-focus);
515
516      /* Inputs */
517      /* ========================= */
518      
519        --element-icon-radius: 3px;
520      
521
522      --element-input-font-size: var(--element-text-font-size--body-sm);
523      --element-input-box-shadow-shade: 100%;
524
525      /* Hover State Variables */
526      --element-input-background-shade--hover: 0;
527      --element-input-box-shadow-spread-radius--hover: 1px;
528    }
529
530    @media only screen and (max-width: 768px) {
531      :root {
532        --element-button-font-size: max(calc(var(--typeBaseSize) - 5px), 11px);
533      }
534    }
535
536    .element-radio {
537       &:has(input[type='radio']:checked) {
538        --element-button-color: var(--element-button-color-secondary);
539      }
540    }
541
542    /* ATC Button Overrides */
543    /* ========================= */
544
545    .element-button[type="submit"],
546    .element-button[type="submit"] .element-text,
547    .element-button--shopify-payment-wrapper button {
548      --element-button-padding-block: 13px;
549      --element-button-padding-inline: 20px;
550      --element-button-line-height: 1.42;
551      --_font-size--body-md: var(--element-button-font-size);
552
553      line-height: 1.42 !important;
554    }
555
556    /* When dynamic checkout is enabled */
557    product-form:has(.element-button--shopify-payment-wrapper) {
558      --element-button-color: #171717;
559
560      .element-button[type="submit"],
561      .element-button--shopify-payment-wrapper button {
562        min-height: 50px !important;
563      }
564
565      .shopify-payment-button {
566        margin: 0;
567      }
568    }
569
570    /* Hover animation for non-angled buttons */
571    body:not([data-button_style='angled']) .element-button[type="submit"] {
572      position: relative;
573      overflow: hidden;
574
575       &:after {
576        content: '';
577        position: absolute;
578        top: 0;
579        left: 150%;
580        width: 200%;
581        height: 100%;
582        transform: skewX(-20deg);
583        background-image: linear-gradient(to right,transparent, rgba(255,255,255,.25),transparent);
584      }
585
586       &:hover:after {
587        animation: shine 0.75s cubic-bezier(0.01, 0.56, 1, 1);
588      }
589    }
590
591    /* ANGLED STYLE - ATC Button Overrides */
592    /* ========================= */[data-button_style='angled'] {
593      --element-button-shade-background--active: var(--element-button-shade-background);
594      --element-button-shade-border--active: var(--element-button-shade-border);
595
596      .element-button[type="submit"] {
597        --_box-shadow: none;
598
599        position: relative;
600        max-width: 94%;
601        border-top: 1px solid#5e6350;
602        border-bottom: 1px solid#5e6350;
603
604         &:before,
605         &:after {
606          content: '';
607          position: absolute;
608          display: block;
609          top: -1px;
610          bottom: -1px;
611          width: 20px;
612          transform: skewX(-12deg);
613          background-color: #5e6350;
614        }
615
616         &:before {
617          left: -6px;
618        }
619
620         &:after {
621          right: -6px;
622        }
623      }
624
625      /* When dynamic checkout is enabled */
626      product-form:has(.element-button--shopify-payment-wrapper) {
627        .element-button[type="submit"]:before,
628        .element-button[type="submit"]:after {
629          background-color: color-mix(in srgb,var(--_color-text) var(--_shade-background),var(--_color-background));
630          border-top: 1px solid#5e6350;
631          border-bottom: 1px solid#5e6350;
632        }
633
634        .element-button[type="submit"]:before {
635          border-left: 1px solid#5e6350;
636        }
637
638        .element-button[type="submit"]:after {
639          border-right: 1px solid#5e6350;
640        }
641      }
642
643      .element-button--shopify-payment-wrapper {
644        --_color-background: #5e6350;
645
646        button:hover,
647        button:before,
648        button:after {
649          background-color: color-mix(in srgb,var(--_color-text) var(--_shade-background),var(--_color-background)) !important;
650        }
651
652        button:not(button:focus-visible) {
653          box-shadow: none !important;
654        }
655      }
656    }
657  </style>
658
659  
659<script src="//ipowerresale.com/cdn/shop/t/130/assets/vendor-scripts-v11.js" defer="defer"></script>
659
660
661  
662
663  
663<script src="//ipowerresale.com/cdn/shop/t/130/assets/theme.js?v=22325264162658116151790278047" defer="defer"></script>
663
664
665  
666  <link rel="stylesheet" href="//ipowerresale.com/cdn/shop/t/130/assets/swiper-bundle.min.css?v=180860052655026696261790278033">
667  <meta name="google-site-verification" content="mT0-PDURl4kxpuKSF0i2zq36K1IDnkJ_Boeg_zzF1iM" />
668 <!-- Klaviyo integration script from Consentmo GDPR app -->
669<script id="consentmo-klaviyo-integration-script">
670  function checkConsentForKlaviyo(isMarketingEnabled) {
671    if (isMarketingEnabled) {
672      console.log('exec klaviyo');
673      document.cookie = "__kla_off=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
674    } else {
675      console.log('blocked klaviyo');
676      document.cookie = "__kla_off=true"; 
677    }
678  }
679
680  document.addEventListener('consentmoSignal_onLoad', function(eventData) {
681    const csmLoadSignal = eventData.detail || {isActive:false};
682
683    if (!csmLoadSignal.isActive) {
684      checkConsentForKlaviyo(true);
685    } else {
686      document.addEventListener('consentmoSignal', function(event) {
687        const csmPreferences = event.detail.preferences;
688        checkConsentForKlaviyo(csmPreferences.marketing);
689      });
690    }
691  });
692</script>
692
693
694
695<!-- BEGIN app block: shopify://apps/consentmo-gdpr/blocks/ada_compliance/4fbe573f-a377-4fea-9801-3ee0858cae41 -->
696<!-- END app block --><!-- BEGIN app block: shopify://apps/consentmo-gdpr/blocks/gdpr_cookie_consent/4fbe573f-a377-4fea-9801-3ee0858cae41 -->
697<link rel="preconnect" href="https://app.consentmo.com" crossorigin data-csm-preconnect="app">
698<link rel="dns-prefetch" href="https://workers.consentmo.com" data-csm-preconnect="workers">
699<link rel="dns-prefetch" href="https://storage.consentmo.com" data-csm-preconnect="storage">
700<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">
701  <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">
702  <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">
703  <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">
704  <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">
704<script>
705(function () {
706  try {
707    document.documentElement.classList.add('csm-cookie-embed');
708  } catch (e) {}
709})();
710</script>
710<script data-consentmo-data-src-bootstrap>
711(function () {
712  'use strict';
713  if (window.__consentmoDataSrcBootstrapInit) return;
714  window.__consentmoDataSrcBootstrapInit = true;
715
716  var DATA_SRC_SELECTOR = [
717    'script[data-src*="consentmo_cookie_consent"]',
718    'script[data-src*="gdpr_cookie_consent.min"]',
719    'script[data-src*="gdrp_cookie_consent_unlimited"]'
720  ].join(',');
721
722  function activateConsentmoDataSrcScripts() {
723    if (!window.Shopify || !window.Shopify.shop) return;
724    document.querySelectorAll(DATA_SRC_SELECTOR).forEach(function (scriptEl) {
725      // getAttribute: src="" must not count as "already has src" (.src === page URL).
726      if (scriptEl.getAttribute('src')) return;
727      var url = scriptEl.getAttribute('data-src');
728      if (!url) return;
729      if (scriptEl.getAttribute('type') === 'text/plain') {
730        scriptEl.removeAttribute('type');
731      }
732      scriptEl.src = url;
733    });
734  }
735  function scheduleActivation() {
736    activateConsentmoDataSrcScripts();
737    // Retry on next task so other DCL handlers (lazy-loaders) can finish setting Shopify.shop / data-src first.
738    setTimeout(activateConsentmoDataSrcScripts, 0);
739  }
740  if (document.readyState === 'loading') {
741    document.addEventListener('DOMContentLoaded', scheduleActivation, { once: true });
742  } else {
743    scheduleActivation();
744  }
745})();
746</script>
746
747
748
749<!-- END app block --><!-- BEGIN app block: shopify://apps/elevar-conversion-tracking/blocks/dataLayerEmbed/bc30ab68-b15c-4311-811f-8ef485877ad6 -->
750
751
752
753<script type="module" dynamic>
754  const configUrl = "/a/elevar/static/configs/edcaa1c365642731a75cdb639c73dfcfb6dd0e71/config.js";
755  const config = (await import(configUrl)).default;
756  const scriptUrl = config.script_src_app_theme_embed;
757
758  if (scriptUrl) {
759    const { handler } = await import(scriptUrl);
760
761    await handler(
762      config,
763      {
764        cartData: {
765  marketId: "21378531497",
766  localeCountryCode:"US",
767  attributes:{},
768  cartTotal: "0.0",
769  currencyCode:"USD",
770  items: []
771}
772,
773        user: {
774  cartTotal: "0.0",
775  currencyCode:"USD",
776  customer: {},
777}
778,
779        isOnCartPage:false,
780        collectionView:null,
781        searchResultsView:null,
782        productView:{
783    attributes:{},
784    currencyCode:"USD",defaultVariant: {id:"iPad Pro Parent 4",name:"iPad Pro 11-inch M5",
785        brand:"ipowerresale",
786        category:"iPad Pro",
787        variant:"Default Title",
788        price: "979.0",
789        productId: "8832364773545",
790        variantId: "46682881720489",
791        compareAtPrice: "0.0",image:"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668",url:"\/products\/apple-ipad-pro-11-inch-m5?variant=46682881720489"},items: [{id:"iPad Pro Parent 4",name:"iPad Pro 11-inch M5",
792          brand:"ipowerresale",
793          category:"iPad Pro",
794          variant:"Default Title",
795          price: "979.0",
796          productId: "8832364773545",
797          variantId: "46682881720489",
798          compareAtPrice: "0.0",image:"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668",url:"\/products\/apple-ipad-pro-11-inch-m5?variant=46682881720489"},]
799  },
800      }
801    );
802  }
803</script>
803
804
805
806<!-- END app block --><!-- BEGIN app block: shopify://apps/klaviyo-email-marketing-sms/blocks/klaviyo-onsite-embed/2632fe16-c075-4321-a88b-50b567f42507 -->
807
808
809
810
811
812
813
814
815
816
817
818
819  
819<script async src="https://static.klaviyo.com/onsite/js/SEVKDs/klaviyo.js?company_id=SEVKDs"></script>
819
820  
820<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>
820
821
822  
823    
823<script id="viewed_product">
824      if (item == null) {
825        var _learnq = _learnq || [];
826
827        var MetafieldReviews = null
828        var MetafieldYotpoRating = null
829        var MetafieldYotpoCount = null
830        var MetafieldLooxRating = null
831        var MetafieldLooxCount = null
832        var okendoProduct = null
833        var okendoProductReviewCount = null
834        var okendoProductReviewAverageValue = null
835        try {
836          // The following fields are used for Customer Hub recently viewed in order to add reviews.
837          // This information is not part of __kla_viewed. Instead, it is part of __kla_viewed_reviewed_items
838          MetafieldReviews = {"rating":{"scale_min":"1.0","scale_max":"5.0","value":"4.89"},"rating_count":93};
839          MetafieldYotpoRating = null
840          MetafieldYotpoCount = null
841          MetafieldLooxRating = null
842          MetafieldLooxCount = null
843
844          okendoProduct = null
845          // If the okendo metafield is not legacy, it will error, which then requires the new json formatted data
846          if (okendoProduct && 'error' in okendoProduct) {
847            okendoProduct = null
848          }
849          okendoProductReviewCount = okendoProduct ? okendoProduct.reviewCount : null
850          okendoProductReviewAverageValue = okendoProduct ? okendoProduct.reviewAverageValue : null
851        } catch (error) {
852          console.error('Error in Klaviyo onsite reviews tracking:', error);
853        }
854
855        var item = {
856          Name: "iPad Pro 11-inch M5",
857          ProductID: 8832364773545,
858          Categories: ["Discount Product (Excludes 5 Series \u0026 Accessories)","iPad Pro","Klaviyo Parent Products","Top 10 Homepage Products (Parent Product)"],
859          ImageURL: "https://ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c_grande.png?v=1766104668",
860          URL: "https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5",
861          Brand: "ipowerresale",
862          Price: "$979.00",
863          Value: "979.00",
864          CompareAtPrice: "$0.00"
865        };
866        _learnq.push(['track', 'Viewed Product', item]);
867        _learnq.push(['trackViewedItem', {
868          Title: item.Name,
869          ItemId: item.ProductID,
870          Categories: item.Categories,
871          ImageUrl: item.ImageURL,
872          Url: item.URL,
873          Metadata: {
874            Brand: item.Brand,
875            Price: item.Price,
876            Value: item.Value,
877            CompareAtPrice: item.CompareAtPrice
878          },
879          metafields:{
880            reviews: MetafieldReviews,
881            yotpo:{
882              rating: MetafieldYotpoRating,
883              count: MetafieldYotpoCount,
884            },
885            loox:{
886              rating: MetafieldLooxRating,
887              count: MetafieldLooxCount,
888            },
889            okendo: {
890              rating: okendoProductReviewAverageValue,
891              count: okendoProductReviewCount,
892            }
893          }
894        }]);
895      }
896    </script>
896
897  
898
899
900
901
902  
902<script>
903    window.klaviyoReviewsProductDesignMode = false
904  </script>
904
905
906
907
908  <!-- BEGIN app snippet: customer-hub-data -->
908<script>
909  if (!window.customerHub) {
910    window.customerHub = {};
911  }
912  window.customerHub.storefrontRoutes = {
913    login: "https://ipowerresale.com/customer_authentication/redirect?locale=en&region_country=US?return_url=%2F%23k-hub",
914    register: "https://account.ipowerresale.com?locale=en&region_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJpcG93ZXJyZXNhbGUubXlzaG9waWZ5LmNvbSIsImZsYWdzIjpbIntcImZsYWdcIjp7XCJsb3dpZFwiOlwiMTM4MTg0Nzc1ODI5NzE1ODEyNDlcIixcImhpZ2hpZFwiOlwiNTMzNDU3MzA1ODEwMzkyMjAzMFwifX0iXSwiZXhwIjoxNzkxNzI1MTE5LCJuYmYiOjE3OTExMjAzMTl9.9Os06njSKIJukurFvKdmNXqmq32i7N_qKbv065GenZk?return_url=%2F%23k-hub",
915    logout: "/account/logout",
916    profile: "/account",
917    addresses: "/account/addresses",
918  };
919  
920  window.customerHub.userId = null;
921  
922  window.customerHub.storeDomain = "ipowerresale.myshopify.com";
923
924  
925    window.customerHub.activeProduct = {
926      name: "iPad Pro 11-inch M5",
927      category: null,
928      imageUrl: "https://ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c_grande.png?v=1766104668",
929      id: "8832364773545",
930      link: "https://ipowerresale.com/products/apple-ipad-pro-11-inch-m5",
931      options: [
932        
933          {
934            name: "Title",
935            values: [
936              
937                
938                
939                {
940                  name: "Default Title",
941                  colorHex: null,
942                  swatchImageUrl: null
943                }
944              
945            ]
946          }
947        
948      ],
949      variants: [
950        
951          {
952            id: "46682881720489",
953            selectedOptions: [
954              
955                
956                {
957                  name: "Title",
958                  value: "Default Title"
959                }
960              
961            ],
962            
963            imageUrl: null,
964            
965            price: "97900",
966            currency: "USD",
967            availableForSale: true,
968            title: "Default Title",
969          },
970        
971      ],
972    };
973    window.customerHub.activeProduct.variants.forEach((variant) => {
974        
975        variant.price = `${variant.price.slice(0, -2)}.${variant.price.slice(-2)}`;
976    });
977  
978
979  
980    window.customerHub.storeLocale = {
981        currentLanguage: 'en',
982        currentCountry: 'US',
983        availableLanguages: [
984          
985            {
986              iso_code: 'en',
987              endonym_name: 'English'
988            },
989          
990            {
991              iso_code: 'de',
992              endonym_name: 'Deutsch'
993            }
994          
995        ],
996        availableCountries: [
997          
998            {
999              iso_code: 'AX',
1000              name: 'Åland Islands',
1001              currency_code: 'EUR'
1002            },
1003          
1004            {
1005              iso_code: 'AL',
1006              name: 'Albania',
1007              currency_code: 'ALL'
1008            },
1009          
1010            {
1011              iso_code: 'AD',
1012              name: 'Andorra',
1013              currency_code: 'EUR'
1014            },
1015          
1016            {
1017              iso_code: 'AU',
1018              name: 'Australia',
1019              currency_code: 'AUD'
1020            },
1021          
1022            {
1023              iso_code: 'AT',
1024              name: 'Austria',
1025              currency_code: 'EUR'
1026            },
1027          
1028            {
1029              iso_code: 'BS',
1030              name: 'Bahamas',
1031              currency_code: 'BSD'
1032            },
1033          
1034            {
1035              iso_code: 'BE',
1036              name: 'Belgium',
1037              currency_code: 'EUR'
1038            },
1039          
1040            {
1041              iso_code: 'BA',
1042              name: 'Bosnia &amp; Herzegovina',
1043              currency_code: 'BAM'
1044            },
1045          
1046            {
1047              iso_code: 'BG',
1048              name: 'Bulgaria',
1049              currency_code: 'EUR'
1050            },
1051          
1052            {
1053              iso_code: 'CA',
1054              name: 'Canada',
1055              currency_code: 'CAD'
1056            },
1057          
1058            {
1059              iso_code: 'BQ',
1060              name: 'Caribbean Netherlands',
1061              currency_code: 'USD'
1062            },
1063          
1064            {
1065              iso_code: 'HR',
1066              name: 'Croatia',
1067              currency_code: 'EUR'
1068            },
1069          
1070            {
1071              iso_code: 'CZ',
1072              name: 'Czechia',
1073              currency_code: 'CZK'
1074            },
1075          
1076            {
1077              iso_code: 'DK',
1078              name: 'Denmark',
1079              currency_code: 'DKK'
1080            },
1081          
1082            {
1083              iso_code: 'EG',
1084              name: 'Egypt',
1085              currency_code: 'EGP'
1086            },
1087          
1088            {
1089              iso_code: 'EE',
1090              name: 'Estonia',
1091              currency_code: 'EUR'
1092            },
1093          
1094            {
1095              iso_code: 'FO',
1096              name: 'Faroe Islands',
1097              currency_code: 'DKK'
1098            },
1099          
1100            {
1101              iso_code: 'FI',
1102              name: 'Finland',
1103              currency_code: 'EUR'
1104            },
1105          
1106            {
1107              iso_code: 'FR',
1108              name: 'France',
1109              currency_code: 'EUR'
1110            },
1111          
1112            {
1113              iso_code: 'DE',
1114              name: 'Germany',
1115              currency_code: 'EUR'
1116            },
1117          
1118            {
1119              iso_code: 'GI',
1120              name: 'Gibraltar',
1121              currency_code: 'GBP'
1122            },
1123          
1124            {
1125              iso_code: 'GR',
1126              name: 'Greece',
1127              currency_code: 'EUR'
1128            },
1129          
1130            {
1131              iso_code: 'GL',
1132              name: 'Greenland',
1133              currency_code: 'DKK'
1134            },
1135          
1136            {
1137              iso_code: 'GG',
1138              name: 'Guernsey',
1139              currency_code: 'GBP'
1140            },
1141          
1142            {
1143              iso_code: 'HU',
1144              name: 'Hungary',
1145              currency_code: 'HUF'
1146            },
1147          
1148            {
1149              iso_code: 'IS',
1150              name: 'Iceland',
1151              currency_code: 'ISK'
1152            },
1153          
1154            {
1155              iso_code: 'IE',
1156              name: 'Ireland',
1157              currency_code: 'EUR'
1158            },
1159          
1160            {
1161              iso_code: 'IM',
1162              name: 'Isle of Man',
1163              currency_code: 'GBP'
1164            },
1165          
1166            {
1167              iso_code: 'IT',
1168              name: 'Italy',
1169              currency_code: 'EUR'
1170            },
1171          
1172            {
1173              iso_code: 'JP',
1174              name: 'Japan',
1175              currency_code: 'JPY'
1176            },
1177          
1178            {
1179              iso_code: 'JE',
1180              name: 'Jersey',
1181              currency_code: 'USD'
1182            },
1183          
1184            {
1185              iso_code: 'XK',
1186              name: 'Kosovo',
1187              currency_code: 'EUR'
1188            },
1189          
1190            {
1191              iso_code: 'KW',
1192              name: 'Kuwait',
1193              currency_code: 'USD'
1194            },
1195          
1196            {
1197              iso_code: 'LV',
1198              name: 'Latvia',
1199              currency_code: 'EUR'
1200            },
1201          
1202            {
1203              iso_code: 'LI',
1204              name: 'Liechtenstein',
1205              currency_code: 'CHF'
1206            },
1207          
1208            {
1209              iso_code: 'LT',
1210              name: 'Lithuania',
1211              currency_code: 'EUR'
1212            },
1213          
1214            {
1215              iso_code: 'LU',
1216              name: 'Luxembourg',
1217              currency_code: 'EUR'
1218            },
1219          
1220            {
1221              iso_code: 'MW',
1222              name: 'Malawi',
1223              currency_code: 'MWK'
1224            },
1225          
1226            {
1227              iso_code: 'MV',
1228              name: 'Maldives',
1229              currency_code: 'MVR'
1230            },
1231          
1232            {
1233              iso_code: 'MT',
1234              name: 'Malta',
1235              currency_code: 'EUR'
1236            },
1237          
1238            {
1239              iso_code: 'MQ',
1240              name: 'Martinique',
1241              currency_code: 'EUR'
1242            },
1243          
1244            {
1245              iso_code: 'MD',
1246              name: 'Moldova',
1247              currency_code: 'MDL'
1248            },
1249          
1250            {
1251              iso_code: 'MC',
1252              name: 'Monaco',
1253              currency_code: 'EUR'
1254            },
1255          
1256            {
1257              iso_code: 'ME',
1258              name: 'Montenegro',
1259              currency_code: 'EUR'
1260            },
1261          
1262            {
1263              iso_code: 'NL',
1264              name: 'Netherlands',
1265              currency_code: 'EUR'
1266            },
1267          
1268            {
1269              iso_code: 'NZ',
1270              name: 'New Zealand',
1271              currency_code: 'NZD'
1272            },
1273          
1274            {
1275              iso_code: 'MK',
1276              name: 'North Macedonia',
1277              currency_code: 'MKD'
1278            },
1279          
1280            {
1281              iso_code: 'NO',
1282              name: 'Norway',
1283              currency_code: 'USD'
1284            },
1285          
1286            {
1287              iso_code: 'PL',
1288              name: 'Poland',
1289              currency_code: 'PLN'
1290            },
1291          
1292            {
1293              iso_code: 'PT',
1294              name: 'Portugal',
1295              currency_code: 'EUR'
1296            },
1297          
1298            {
1299              iso_code: 'RO',
1300              name: 'Romania',
1301              currency_code: 'RON'
1302            },
1303          
1304            {
1305              iso_code: 'SM',
1306              name: 'San Marino',
1307              currency_code: 'EUR'
1308            },
1309          
1310            {
1311              iso_code: 'RS',
1312              name: 'Serbia',
1313              currency_code: 'RSD'
1314            },
1315          
1316            {
1317              iso_code: 'SG',
1318              name: 'Singapore',
1319              currency_code: 'SGD'
1320            },
1321          
1322            {
1323              iso_code: 'SX',
1324              name: 'Sint Maarten',
1325              currency_code: 'ANG'
1326            },
1327          
1328            {
1329              iso_code: 'SK',
1330              name: 'Slovakia',
1331              currency_code: 'EUR'
1332            },
1333          
1334            {
1335              iso_code: 'SI',
1336              name: 'Slovenia',
1337              currency_code: 'EUR'
1338            },
1339          
1340            {
1341              iso_code: 'ES',
1342              name: 'Spain',
1343              currency_code: 'EUR'
1344            },
1345          
1346            {
1347              iso_code: 'SJ',
1348              name: 'Svalbard &amp; Jan Mayen',
1349              currency_code: 'USD'
1350            },
1351          
1352            {
1353              iso_code: 'SE',
1354              name: 'Sweden',
1355              currency_code: 'SEK'
1356            },
1357          
1358            {
1359              iso_code: 'CH',
1360              name: 'Switzerland',
1361              currency_code: 'CHF'
1362            },
1363          
1364            {
1365              iso_code: 'TW',
1366              name: 'Taiwan',
1367              currency_code: 'TWD'
1368            },
1369          
1370            {
1371              iso_code: 'TR',
1372              name: 'Türkiye',
1373              currency_code: 'USD'
1374            },
1375          
1376            {
1377              iso_code: 'UM',
1378              name: 'U.S. Outlying Islands',
1379              currency_code: 'USD'
1380            },
1381          
1382            {
1383              iso_code: 'UA',
1384              name: 'Ukraine',
1385              currency_code: 'UAH'
1386            },
1387          
1388            {
1389              iso_code: 'AE',
1390              name: 'United Arab Emirates',
1391              currency_code: 'AED'
1392            },
1393          
1394            {
1395              iso_code: 'GB',
1396              name: 'United Kingdom',
1397              currency_code: 'GBP'
1398            },
1399          
1400            {
1401              iso_code: 'US',
1402              name: 'United States',
1403              currency_code: 'USD'
1404            },
1405          
1406            {
1407              iso_code: 'VA',
1408              name: 'Vatican City',
1409              currency_code: 'EUR'
1410            }
1411          
1412        ]
1413    };
1414  
1415</script>
1415
1416<!-- END app snippet -->
1417
1418
1419
1420
1421
1422
1423
1424<!-- END app block --><!-- BEGIN app block: shopify://apps/indexgpt/blocks/schema_markup/019ff2af-aa2f-763f-82f0-dea6ed984c56 --><!-- indexgpt-schema --><!-- BEGIN app snippet: breadcrumb-jsonld -->
1424<script type="application/ld+json">
1425{
1426  "@context": "https://schema.org",
1427  "@type": "BreadcrumbList",
1428  "itemListElement": [{
1429        "@type": "ListItem",
1430        "position": 1,
1431        "name": "Home",
1432        "item": "https:\/\/ipowerresale.com"
1433      },
1434{
1435        "@type": "ListItem",
1436        "position": 2,
1437        "name": "Discount Product (Excludes 5 Series \u0026 Accessories)",
1438        "item": "https:\/\/ipowerresale.com\/collections\/discount-product-excludes-5-series"
1439      },
1440{
1441        "@type": "ListItem",
1442        "position": 3,
1443        "name": "iPad Pro 11-inch M5",
1444        "item": "https:\/\/ipowerresale.com\/products\/apple-ipad-pro-11-inch-m5"
1445      }
1446]
1447}
1448</script>
1448<!-- END app snippet --><!-- BEGIN app snippet: organization-jsonld --><!-- END app snippet --><!-- BEGIN app snippet: product-merchant-jsonld -->
1448<script type="application/ld+json">
1449{
1450  "@context": "https://schema.org",
1451  "@graph": [
1452    {"@type": "OfferShippingDetails", "@id": "#indexgpt-shipping-1", "shippingRate": {"@type": "MonetaryAmount", "value": 0, "currency": "USD"}, "shippingDestination": [{"@type": "DefinedRegion", "addressCountry": "US"}], "deliveryTime": {"@type": "ShippingDeliveryTime", "handlingTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY"}, "transitTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 5, "unitCode": "DAY"}}},{"@type": "OfferShippingDetails", "@id": "#indexgpt-shipping-2", "shippingRate": {"@type": "MonetaryAmount", "value": 0, "currency": "USD"}, "shippingDestination": [{"@type": "DefinedRegion", "addressCountry": "US"}], "deliveryTime": {"@type": "ShippingDeliveryTime", "handlingTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY"}, "transitTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 5, "unitCode": "DAY"}}},{"@type": "OfferShippingDetails", "@id": "#indexgpt-shipping-3", "shippingRate": {"@type": "MonetaryAmount", "value": 0, "currency": "USD"}, "shippingDestination": [{"@type": "DefinedRegion", "addressCountry": "US"}], "deliveryTime": {"@type": "ShippingDeliveryTime", "handlingTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY"}, "transitTime": {"@type": "QuantitativeValue", "minValue": 1, "maxValue": 5, "unitCode": "DAY"}}}
1453, {
1454      "@type": "MerchantReturnPolicy",
1455      "@id": "#indexgpt-returns",
1456      "applicableCountry": ["US"],
1457      "returnPolicyCategory": "https:\/\/schema.org\/MerchantReturnFiniteReturnWindow"
1458, "returnFees": "https:\/\/schema.org\/FreeReturn", "merchantReturnDays": 14
1459, "returnMethod": ["https:\/\/schema.org\/ReturnByMail"]}, {"@type": "Offer", "@id": "\/products\/apple-ipad-pro-11-inch-m5?variant=46682881720489#offer", "itemCondition": "https://schema.org/NewCondition", "shippingDetails": [{"@id": "#indexgpt-shipping-1"},{"@id": "#indexgpt-shipping-2"},{"@id": "#indexgpt-shipping-3"}], "hasMerchantReturnPolicy": {"@id": "#indexgpt-returns"}}
1460]
1461}
1462</script>
1462<!-- END app snippet --><!-- BEGIN app snippet: article-jsonld --><!-- END app snippet -->
1463<!-- END app block -->
1463<script src="https://cdn.shopify.com/extensions/019d3c99-c401-7eb3-a8a0-ca11c99f6954/afterpay-on-site-messaging-2/assets/messaging-lib-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1463
1463
1464<script src="https://cdn.shopify.com/extensions/01a0f14c-0eaa-7dcb-9809-3f49e8bbd346/sea-survey-163/assets/avada-survey.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1464
1464
1465<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 1465
1465
1466<script src="https://cdn.shopify.com/extensions/01a0fcf5-9827-75b1-9d7e-ea3a10d70819/gdpr-backpack-903/assets/consentmo_ada.js" type="text/javascript" defer="defer"></script>
1466
1467<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1468<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: 62136156329,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 1468
1468
1469<script>
1470  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1471</script>
vendor: 1 bytes, line 1471
1471
1472<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}
1472).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: 62136156329,storefrontBaseUrl: "https://ipowerresale.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://ipowerresale.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1899298985","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"6e6b2e32fe6866115b7e49e2ae3c75b2","type":"APP","apiClientId":5940125,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]}
1472,"dataSharingState":"unrestricted"},{"id":"1701806249","configuration":"{\"accountID\":\"shopjar\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3695d58a4bdf3f78e3aa47292c161a2e","type":"APP","apiClientId":884572161,"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":"unrestricted"},{"id":"1671135401","configuration":"{\"eventPixelIdAddToCart\":\"tw-r57i4-r84xl\",\"eventPixelIdSiteVisit\":\"tw-r57i4-r84xm\",\"eventPixelIdPurchase\":\"tw-r57i4-r84xn\",\"eventPixelIdAddedPaymentInfo\":\"tw-r57i4-r84xk\",\"eventPixelIdCheckoutInitiated\":\"tw-r57i4-r84xj\",\"eventPixelIdContentView\":\"tw-r57i4-r84xo\",\"eventPixelIdSearch\":\"tw-r57i4-r84xp\",\"basePixelId\":\"r57i4\",\"adsAccountId\":\"dzwtl1\",\"isDisconnected\":\"0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"3df823913fec4164b84eb9879cd9a3dd","type":"APP","apiClientId":6455335,"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":"unrestricted"},{"id":"1604649129","configuration":"{\"config_url\": \"https:\/\/shopify-gtm-suite.getelevar.com\/configs\/edcaa1c365642731a75cdb639c73dfcfb6dd0e71\/config.js\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"7ae63d00911d5ee26809bf1e3232d852","type":"APP","apiClientId":2509311,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1354105001","configuration":"{\"accountID\":\"SEVKDs\",\"webPixelConfig\":\"eyJlbmFibGVBZGRlZFRvQ2FydEV2ZW50cyI6IHRydWV9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c63c5b72c8d77be5f2d27d14c081da38","type":"APP","apiClientId":123074,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"535134377","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"AW-11234468749\\\",\\\"GT-KDBGD22\\\"],\\\"target_country\\\":\\\"US\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":\\\"AW-11234468749\\\/S291CJW81JQaEI3Hge0p\\\"},{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":\\\"AW-11234468749\\\/plAzCJu81JQaEI3Hge0p\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"AW-11234468749\\\/t4mICJK81JQaEI3Hge0p\\\",\\\"MC-1Z3M2ZDCFM\\\"]},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"AW-11234468749\\\/Zf05CIy81JQaEI3Hge0p\\\",\\\"MC-1Z3M2ZDCFM\\\",\\\"AW-11234468749\\\/yW3jCOr6vaIZEI3Hge0p\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"AW-11234468749\\\/EmvHCI-81JQaEI3Hge0p\\\",\\\"MC-1Z3M2ZDCFM\\\"]},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":\\\"AW-11234468749\\\/Or7GCJ681JQaEI3Hge0p\\\"},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":\\\"AW-11234468749\\\/dyF7CJi81JQaEI3Hge0p\\\"}],\\\"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"]}
1472,"dataSharingState":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"47841449","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Signifyd"},{"id":"153714857","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"2","type":"CUSTOM","privacyPurposes":[],"name":"Elevar - Checkout Tracking"},{"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":"iPowerResale","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"ipowerresale.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/ipowerresale.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":979.0,"currencyCode":"USD"},"product":{"title":"iPad Pro 11-inch M5","vendor":"ipowerresale","id":"8832364773545","untranslatedTitle":"iPad Pro 11-inch M5","url":"\/products\/apple-ipad-pro-11-inch-m5","type":"iPad Pro"},"id":"46682881720489","image":{"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668"},"sku":"iPad Pro Parent 4","title":"Default Title","untranslatedTitle":"Default Title"}],"products":[{"id":"8832364773545","handle":"apple-ipad-pro-11-inch-m5","isCollective":null,"title":"iPad Pro 11-inch M5","type":"iPad Pro","untranslatedTitle":"iPad Pro 11-inch M5","url":"\/products\/apple-ipad-pro-11-inch-m5","vendor":"ipowerresale","remoteShopId":null,"variants":[{"id":"46682881720489","image":{"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668"},"price":{"amount":979.0,"currencyCode":"USD"},"sku":"iPad Pro Parent 4","title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"7713399963817","handle":"3-year-extended-warranty","isCollective":null,"title":"3-year Extended Warranty","type":null,"untranslatedTitle":"3-year Extended Warranty","url":"\/products\/3-year-extended-warranty","vendor":"ipowerresale","remoteShopId":null,"variants":[{"id":"42954528719017","image":{"src":"\/\/ipowerresale.com\/cdn\/shop\/products\/3-year-warranty_2.png?v=1679346251"},"price":{"amount":249.0,"currencyCode":"USD"},"sku":"3 Year Warranty","title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"7717349851305","handle":"apple-ipad-pro-config-parent-better","isCollective":null,"title":"iPad Pro 11-inch M4","type":"iPad Pro","untranslatedTitle":"iPad Pro 11-inch M4","url":"\/products\/apple-ipad-pro-config-parent-better","vendor":"ipowerresale","remoteShopId":null,"variants":[{"id":"42970834075817","image":{"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_98930e0b-f83b-459b-b91e-dad5d9fff883.png?v=1766096980"},"price":{"amount":849.0,"currencyCode":"USD"},"sku":"iPad Pro Parent 2","title":"Default Title","untranslatedTitle":"Default Title"}]},{"id":"7717350244521","handle":"apple-ipad-pro-config-parent-good","isCollective":null,"title":"iPad Pro 13-inch M5","type":"iPad Pro","untranslatedTitle":"iPad Pro 13-inch M5","url":"\/products\/apple-ipad-pro-config-parent-good","vendor":"ipowerresale","remoteShopId":null,"variants":[{"id":"42970835779753","image":{"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_1304f832-553c-4257-b230-54fa70dce890.png?v=1766096981"},"price":{"amount":1099.0,"currencyCode":"USD"},"sku":"iPad Pro Parent 1","title":"Default Title","untranslatedTitle":"Default Title"}]}],"purchasingCompany":null},},"https://ipowerresale.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"165931122857","themePublished":"true","eventMetadataId":"69801013-0c88-4e2b-b750-34b918e1f788","pageType":"product","resourceId":"8832364773545","shopId":"62136156329","storefrontBaseUrl":"https:\/\/ipowerresale.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":979.0,\"currencyCode\":\"USD\"},\"product\":{\"title\":\"iPad Pro 11-inch M5\",\"vendor\":\"ipowerresale\",\"id\":\"8832364773545\",\"untranslatedTitle\":\"iPad Pro 11-inch M5\",\"url\":\"\/products\/apple-ipad-pro-11-inch-m5\",\"type\":\"iPad Pro\"},\"id\":\"46682881720489\",\"image\":{\"src\":\"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668\"},\"sku\":\"iPad Pro Parent 4\",\"title\":\"Default Title\",\"untranslatedTitle\":\"Default Title\"}}]]"});})();</script>
1472<script>
1473  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1474  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1475  window.ShopifyAnalytics.meta.currency = 'USD';
1476  var meta = {"product":{"id":8832364773545,"gid":"gid:\/\/shopify\/Product\/8832364773545","vendor":"ipowerresale","type":"iPad Pro","handle":"apple-ipad-pro-11-inch-m5","variants":[{"id":46682881720489,"price":97900,"name":"iPad Pro 11-inch M5","public_title":null,"sku":"iPad Pro Parent 4"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":8832364773545,"requestId":"49261112-e20a-403a-bf82-814d5db81e5f-1791120319"}};
1477  for (var attr in meta) {
1478    window.ShopifyAnalytics.meta[attr] = meta[attr];
1479  }
1480</script>
vendor: 1 bytes, line 1480
1480
1481<script class="analytics">
1482  (function () {
1483    var customDocumentWrite = function(content) {
1484      var jquery = null;
1485
1486      if (window.jQuery) {
1487        jquery = window.jQuery;
1488      } else if (window.Checkout && window.Checkout.$) {
1489        jquery = window.Checkout.$;
1490      }
1491
1492      if (jquery) {
1493        jquery('body').append(content);
1494      }
1495    };
1496
1497    var hasLoggedConversion = function(token) {
1498      if (token) {
1499        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
1500      }
1501      return false;
1502    }
1503
1504    var setCookieIfConversion = function(token) {
1505      if (token) {
1506        var twoMonthsFromNow = new Date(Date.now());
1507        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
1508
1509        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
1510      }
1511    }
1512
1513    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
1514    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
1515    if (trekkie.integrations) {
1516      return;
1517    }
1518    trekkie.methods = [
1519      'identify',
1520      'page',
1521      'ready',
1522      'track',
1523      'trackForm',
1524      'trackLink'
1525    ];
1526    trekkie.factory = function(method) {
1527      return function() {
1528        var args = Array.prototype.slice.call(arguments);
1529        args.unshift(method);
1530        trekkie.push(args);
1531        if (method == 'track' || method == 'page') {
1532          var pageUrl;
1533          try {
1534            pageUrl = window.location.href;
1535          } catch (e) {}
1536          var pageReferrer;
1537          try {
1538            pageReferrer = document.referrer;
1539          } catch (e) {}
1540          try {
1541            if (window.__TREKKIE_SHIM_QUEUE == null) {
1542              window.__TREKKIE_SHIM_QUEUE = [];
1543            }
1544            window.__TREKKIE_SHIM_QUEUE.push({
1545              from: 'trekkie-stub',
1546              method: method,
1547              args: args.slice(1),
1548              pageContext: {
1549                url: pageUrl,
1550                referrer: pageReferrer
1551              }
1552            });
1553          } catch (e) {
1554            // no-op
1555          }
1556        }
1557        return trekkie;
1558      };
1559    };
1560    for (var i = 0; i < trekkie.methods.length; i++) {
1561      var key = trekkie.methods[i];
1562      trekkie[key] = trekkie.factory(key);
1563    }
1564    trekkie.load = function(config) {
1565      trekkie.config = config || {};
1566      trekkie.config.initialDocumentCookie = document.cookie;
1567      var first = document.getElementsByTagName('script')[0];
1568var script = document.createElement('script');
1569script.type = 'text/javascript';
1570script.onerror = function(e) {
1571  var scriptFallback = document.createElement('script');
1572  scriptFallback.type = 'text/javascript';
1573  scriptFallback.onerror = function(error) {
1574          var Monorail = {
1575      produce: function produce(monorailDomain, schemaId, payload) {
1576        var currentMs = new Date().getTime();
1577        var event = {
1578          schema_id: schemaId,
1579          payload: payload,
1580          metadata: {
1581            event_created_at_ms: currentMs,
1582            event_sent_at_ms: currentMs
1583          }
1584        };
1585        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
1586      },
1587      sendRequest: function sendRequest(endpointUrl, payload) {
1588        // Try the sendBeacon API
1589        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
1590          var blobData = new window.Blob([payload], {
1591            type: 'text/plain'
1592          });
1593
1594          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
1595            return true;
1596          } // sendBeacon was not successful
1597
1598        } // XHR beacon
1599
1600        var xhr = new XMLHttpRequest();
1601
1602        try {
1603          xhr.open('POST', endpointUrl);
1604          xhr.setRequestHeader('Content-Type', 'text/plain');
1605          xhr.send(payload);
1606        } catch (e) {
1607          console.log(e);
1608        }
1609
1610        return false;
1611      },
1612      isIos12: function isIos12() {
1613        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
1614      }
1615    };
1616    Monorail.produce('monorail-edge.shopifysvc.com',
1617      'trekkie_storefront_load_errors/1.1',
1618      {shop_id: 62136156329,
1619      theme_id: 165931122857,
1620      app_name: "storefront",
1621      context_url: window.location.href,
1622      source_url: "//ipowerresale.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
1623
1624  };
1625  scriptFallback.async = true;
1626  scriptFallback.src = '//ipowerresale.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1627  first.parentNode.insertBefore(scriptFallback, first);
1628};
1629script.async = true;
1630script.src = '//ipowerresale.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
1631first.parentNode.insertBefore(script, first);
1632
1633    };
1634    trekkie.load(
1635      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":62136156329,"isMerchantRequest":null,"themeId":165931122857,"themeCityHash":"2231133484116938434","contentLanguage":"en","currency":"USD","eventMetadataId":"69801013-0c88-4e2b-b750-34b918e1f788"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
1636    );
1637
1638    var loaded = false;
1639    trekkie.ready(function() {
1640      if (loaded) return;
1641      loaded = true;
1642
1643      window.ShopifyAnalytics.lib = window.trekkie;
1644
1645      var originalDocumentWrite = document.write;
1646      document.write = customDocumentWrite;
1647      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
1648      document.write = originalDocumentWrite;
1649
1650      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
1651      var token = match? match[1]: undefined;
1652      if (!hasLoggedConversion(token)) {
1653        setCookieIfConversion(token);
1654        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"USD","variantId":46682881720489,"productId":8832364773545,"productGid":"gid:\/\/shopify\/Product\/8832364773545","name":"iPad Pro 11-inch M5","price":"979.00","sku":"iPad Pro Parent 4","brand":"ipowerresale","variant":null,"category":"iPad Pro","nonInteraction":true,"remote":false,"available":true},undefined,undefined,{"shopifyEmitted":true});
1655      }
1656    });
1657
1658    window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":8832364773545,"requestId":"49261112-e20a-403a-bf82-814d5db81e5f-1791120319","shopifyEmitted":true});
1659
1660    var eventsListenerScript = document.createElement('script');
1661    eventsListenerScript.async = true;
1662    eventsListenerScript.src = "//ipowerresale.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
1663    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
1664})();</script>
vendor: 1 bytes, line 1664
1664
1665<script
1666  defer
1667  src="https://ipowerresale.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
1668  data-application="storefront-renderer"
1669  data-shop-id="62136156329"
1670  data-render-region="gcp-us-central1"
1671  data-page-type="product"
1672  data-theme-instance-id="165931122857"
1673  data-theme-name="Impulse"
1674  data-theme-version="8.1.0"
1675  data-monorail-region="shop_domain"
1676  data-resource-timing-sampling-rate="10"
1677  data-shs="true"
1678  data-shs-beacon="true"
1679  data-shs-export-with-fetch="true"
1680  data-shs-logs-sample-rate="1"
1681  data-shs-beacon-endpoint="https://ipowerresale.com/api/collect"
1682></script>
1682
1683<meta name="shopify-y" content="00000000-0000-0000-5000-000000000000" data-expiration="1822677919000"><meta name="shopify-s" content="00000000-0000-0000-5000-000000000000" data-expiration="1791122119000"><meta name="new-cookie-storage-activated" content="t">
1684</head>
1685
1686<body
1687  class="template-product"
1688  data-center-text="true"
1689  data-button_style="round-slight"
1690  data-type_header_capitalize="true"
1691  data-type_headers_align_text="true"
1692  data-type_product_capitalize="false"
1693  data-swatch_style="round"
1694  >
1695
1696  <a class="in-page-link visually-hidden skip-link" href="#MainContent">Skip to content</a>
1697
1698  <div id="PageContainer" class="page-container">
1699    <div class="transition-body"><!-- BEGIN sections: header-group -->
1700<div id="shopify-section-sections--23893840232617__custom_header_DeLQhc" class="shopify-section shopify-section-group-header-group"><style data-shopify>/* ── Announcement Bar ── */
1701  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc {
1702    text-align: center;
1703    padding: 9px 36px;
1704  }
1705
1706  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .announcement-swiper {
1707    overflow: hidden;
1708    width: 100%;
1709  }
1710
1711  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .swiper-slide {
1712    text-align: center;
1713  }
1714
1715  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .announcement-bar__text {
1716    color: #ffffff;
1717    margin: 0;
1718    font-size: 14px;
1719    line-height: 20px;
1720    letter-spacing: -0.02em;
1721    font-family: 'Inter-Regular';
1722  }
1723
1724  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .announcement-bar__text p {
1725    margin: 0;
1726    color: #ffffff;
1727    font-size: 14px;
1728    line-height: 18px;
1729    letter-spacing: -0.02em;
1730    font-family: 'Inter-Medium';
1731    font-weight: 500;
1732  }
1733
1734  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .announcement-bar__text a {
1735    color: #ffffff;
1736    text-decoration: underline;
1737  }
1738
1739  /* ── Header Wrapper ── */
1740  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc {
1741    position: relative;
1742    z-index: 100;
1743    background: #171717B2;
1744    border: 0.25px solid rgba(255, 255, 255, 0.4);
1745    border-top: none;
1746    border-radius: 0 0 30px 30px;
1747    backdrop-filter: blur(20px);
1748    -webkit-backdrop-filter: blur(20px);
1749  }
1750
1751  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.sticky-header {
1752    position: sticky;
1753    top: 0;
1754    z-index: 100;
1755  }
1756
1757  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.sticky-header.header--overlay {
1758    position: absolute;
1759    top: 0;
1760  }
1761
1762  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.is-sticky {
1763    position: fixed !important;
1764    top: 0;
1765    left: 36px;
1766    right: 36px;
1767    width: auto;
1768    /* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); */
1769  }
1770
1771  /* ── Overlay header for all pages ── */
1772  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.header--overlay:not(.is-sticky) {
1773    position: absolute;
1774    top: 0;
1775    left: 36px;
1776    right: 36px;
1777    z-index: 100;
1778  }
1779
1780  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.header--overlay .custom-header-sections--23893840232617__custom_header_DeLQhc {
1781    background: transparent !important;
1782    border-bottom-color: transparent !important;
1783  }
1784
1785  /* ── Cart Drawer z-index override ── */
1786  #CartDrawer { z-index: 1001 !important; }
1787  .drawer      { z-index: 1001 !important; }
1788  .drawer__overlay { z-index: 1000 !important; }
1789
1790  /* ── Main Header ── */
1791  .custom-header-sections--23893840232617__custom_header_DeLQhc {
1792    position: relative;
1793    width: 100%;
1794    border-top: 0.25px solid rgba(255, 255, 255, 0.4);
1795  }
1796
1797  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__container {
1798    max-width: 1440px;
1799    margin: 0 auto;
1800    padding: 18px 36px;
1801    display: flex;
1802    align-items: center;
1803    justify-content: space-between;
1804  }
1805
1806  /* ── Desktop Nav ── */
1807  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__left {
1808    flex: 1 1 0;
1809    display: flex;
1810    align-items: center;
1811    gap: 16px;
1812  }
1813
1814  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-nav {
1815    flex: 0 0 auto;
1816    display: flex;
1817    justify-content: center;
1818  }
1819
1820  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu {
1821    display: flex;
1822    align-items: center;
1823    gap: 32px;
1824    list-style: none;
1825    margin: 0;
1826    padding: 0;
1827  }
1828
1829  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-item {
1830    position: relative;
1831    margin: 0;
1832  }
1833
1834  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-link {
1835    color: #ffffff;
1836    text-decoration: none;
1837    display: flex;
1838    align-items: center;
1839    gap: 5px;
1840    white-space: nowrap;
1841    transition: opacity 0.2s;
1842    font-size: 14px;
1843    line-height: 20px;
1844    letter-spacing: -0.05em;
1845    font-weight: 500;
1846    font-family: 'Inter-Medium';
1847    text-align: center;
1848    padding: 0;
1849    margin: 0;
1850  }
1851
1852
1853  /* ── Logo ── */
1854  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo {
1855    flex: 0 0 auto;
1856    margin: 0;
1857  }
1858
1859  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo img {
1860    display: block;
1861    max-width: 135px;
1862    height: auto;
1863  }
1864
1865  /* ── Icons ── */
1866  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icons {
1867    flex: 1 1 0;
1868    display: flex;
1869    align-items: center;
1870    justify-content: flex-end;
1871    gap: 24px;
1872  }
1873
1874  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icon {
1875    color: #ffffff;
1876    text-decoration: none;
1877    position: relative;
1878    cursor: pointer;
1879    background: none;
1880    border: none;
1881    padding: 0;
1882    display: flex;
1883    align-items: center;
1884    justify-content: center;
1885    transition: opacity 0.2s;
1886  }
1887
1888  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icon svg {
1889    display: block;
1890  }
1891
1892  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icon:hover {
1893    opacity: 0.75;
1894  }
1895
1896  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__cart-count {
1897    background-color: #1D7F9A;
1898    color: #FFFFFF;
1899    border-radius: 50%;
1900    min-width: 23px;
1901    height: 23px;
1902    display: flex;
1903    align-items: center;
1904    justify-content: center;
1905    font-size: 13px;
1906    line-height: 13px;
1907    font-weight: 700;
1908    margin-left: 4px;
1909    font-family: "ABC Diatype";
1910    letter-spacing: 0;
1911  }
1912
1913  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__mobile-menu-icon {
1914    display: none;
1915  }
1916
1917  /* ── Dropdown ── */
1918  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__dropdown {
1919    position: absolute;
1920    top: 100%;
1921    left: 0;
1922    background: #1a1a1a;
1923    min-width: 200px;
1924    opacity: 0;
1925    visibility: hidden;
1926    transform: translateY(4px);
1927    transition: all 0.25s ease;
1928    z-index: 1000;
1929    padding: 24px 28px;
1930    pointer-events: none;
1931    list-style: none;
1932    margin: 0;
1933    border-radius: 8px;
1934  }
1935
1936  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__dropdown li {
1937    list-style: none;
1938    margin-bottom: 16px;
1939  }
1940
1941  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__dropdown li:last-child {
1942    margin-bottom: 0;
1943  }
1944
1945  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-item.is-active .header__dropdown {
1946    opacity: 1;
1947    visibility: visible;
1948    transform: translateY(0);
1949    pointer-events: auto;
1950  }
1951
1952  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__dropdown-link {
1953    display: block;
1954    color: #ffffff;
1955    font-size: 15px;
1956    line-height: 20px;
1957    font-weight: 400;
1958    font-family: 'Inter-Regular';
1959    letter-spacing: -0.02em;
1960    text-decoration: none;
1961    transition: opacity 0.2s;
1962  }
1963
1964  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__dropdown-link:hover {
1965    opacity: 0.7;
1966  }
1967
1968  /* ── Mega Menu ── */
1969  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-wrapper {
1970    position: absolute;
1971    top: 100%;
1972    left: -1px;
1973    right: -1px;
1974    width: auto;
1975    background: #171717B2;
1976    backdrop-filter: blur(20px);
1977    -webkit-backdrop-filter: blur(20px);
1978    border: 0.25px solid rgba(255, 255, 255, 0.4);
1979    border-radius: 0 0 30px 30px;
1980    opacity: 0;
1981    visibility: hidden;
1982    transition: opacity 0.25s ease, visibility 0.25s ease;
1983    pointer-events: none;
1984    z-index: 999;
1985  }
1986
1987  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-wrapper.is-active {
1988    opacity: 1;
1989    visibility: visible;
1990    pointer-events: auto;
1991  }
1992
1993  /* Remove bottom radius from wrapper when mega menu is open */
1994  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc:has(.header__megamenu-wrapper.is-active),
1995  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.megamenu-open {
1996    border-radius: 0;
1997    border-bottom-color: transparent;
1998  }
1999
2000  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu {
2001    max-width: 1296px;
2002    padding: 54px 0;
2003    display: flex;
2004    gap: 36px;
2005    margin: 0 auto;
2006  }
2007
2008  /* Icon-grid layout for mega menu items */
2009  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-items {
2010    display: flex;
2011    gap: 36px;
2012    flex: 1;
2013    align-items: center;
2014    justify-content: center;
2015  }
2016
2017  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-item {
2018    display: flex;
2019    flex-direction: column;
2020    align-items: center;
2021    gap: 10px;
2022    text-decoration: none;
2023    width: 108px;
2024    flex-shrink: 0;
2025  }
2026
2027  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-item-icon {
2028    width: 108px;
2029    height: 66px;
2030    display: flex;
2031    align-items: center;
2032    justify-content: center;
2033    flex-shrink: 0;
2034  }
2035
2036  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-item-icon img {
2037    width: 100%;
2038    height: 100%;
2039    object-fit: contain;
2040    display: block;
2041  }
2042
2043  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-item-label {
2044    color: #ffffff;
2045    font-size: 14px;
2046    line-height: 20px;
2047    letter-spacing: -0.05em;
2048    font-family: 'Inter-Medium';
2049    font-weight: 500;
2050    text-align: center;
2051    margin: 0;
2052  }
2053
2054  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-cta-wrap {
2055    display: flex;
2056    align-items: center;
2057    align-self: flex-start;
2058    padding-top: 4px;
2059    flex-shrink: 0;
2060  }
2061
2062  .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-cta {
2063    color: #FFFFFF;
2064    font-size: 14px;
2065    line-height: 20px;
2066    letter-spacing: -0.05em;
2067    font-family: 'Inter';
2068    max-width: 108px;
2069    text-align: center;
2070    width: 100%;
2071    padding: 0 23px;
2072  }
2073
2074  @media (max-width: 1030px) and (min-width: 769px) {
2075    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-items {
2076      overflow-x: scroll;
2077    justify-content: unset;
2078    padding: 0 24px;
2079     }
2080  }
2081
2082  /* ── Tablet adjustments ── */
2083  @media screen and (min-width: 956px) and (max-width: 1100px) {
2084    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu {
2085      gap: 16px;
2086    }
2087
2088    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-link {
2089      font-size: 13px;
2090    }
2091
2092    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo {
2093      margin: 0;
2094    }
2095  }
2096
2097  @media screen and (min-width: 769px) and (max-width: 955px) {
2098    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-link {
2099      font-size: 10px;
2100    }
2101
2102    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu {
2103      gap: 8px;
2104    }
2105
2106    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo {
2107      margin: 0;
2108    }
2109  }
2110
2111  /* ── Mobile Styles ── */
2112  @media (max-width: 768px) {
2113
2114  .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc .announcement-bar__text p {
2115    font-size: 16px;
2116    line-height: 16px;
2117    font-family: 'Inter-Regular';
2118    font-weight: 400;
2119  }
2120
2121  .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.header--overlay:not(.is-sticky) { 
2122    position: absolute;
2123    top: 0;
2124    left: 0;
2125    right: 0;
2126    z-index: 100;
2127    margin: 0;
2128  }
2129
2130    .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc,
2131    .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.is-sticky {
2132      margin: 0;
2133      left: 0;
2134      right: 0;
2135    }
2136
2137    /* When mobile drawer is open — remove all borders, only announcement bar gets border */
2138    .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.drawer-open {
2139      border-radius: 0;
2140      border: none;
2141    }
2142
2143    .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.drawer-open .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc {
2144      border: 0.25px solid rgba(255, 255, 255, 0.4);
2145    }
2146
2147    .custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc.drawer-open .custom-header-sections--23893840232617__custom_header_DeLQhc {
2148      border-top: none;
2149    }
2150
2151    .custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc {
2152      padding: 12px 0;
2153    }
2154
2155    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__container {
2156      padding: 27px;
2157      gap: 0;
2158    }
2159
2160    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__menu-nav {
2161      display: none;
2162    }
2163
2164    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__megamenu-wrapper {
2165      display: none;
2166    }
2167
2168    /* On mobile, header__left only shows hamburger + logo */
2169    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__left {
2170      flex: 1 1 auto;
2171      gap: 0;
2172    }
2173
2174    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__container {
2175      position: relative;
2176    }
2177
2178    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo {
2179      position: absolute;
2180      left: 50%;
2181      transform: translateX(-50%);
2182    }
2183
2184    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__logo img {
2185      max-width: 135px;
2186      display: block;
2187    }
2188
2189    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__mobile-menu-icon {
2190      display: flex;
2191        align-items: center;
2192        justify-content: center;
2193        flex-shrink: 0;
2194    }
2195
2196    .hamburger-icon {
2197      width: 26px;
2198      height: 21px;
2199    }
2200
2201    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icon--account {
2202      display: none;
2203    }
2204
2205    .custom-header-sections--23893840232617__custom_header_DeLQhc .header__icons {
2206      flex: 0 0 auto;
2207      gap: 18px;
2208    }
2209  }
2210
2211  /* ── Mobile Drawer ── */
2212  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc {
2213    position: fixed;
2214    top: 0;
2215    left: -100%;
2216    width: 100%;
2217    max-width: 100%;
2218    height: 100vh;
2219    background: #222222;
2220    z-index: 1000;
2221    transition: left 0.3s ease;
2222    overflow-y: auto;
2223  }
2224
2225  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc.is-open {
2226    left: 0;
2227  }
2228
2229  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__menu {
2230    list-style: none;
2231    padding: 0;
2232    margin: 0;
2233  }
2234
2235  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__menu-item {
2236    margin-bottom: 18px;
2237  }
2238
2239  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__menu-item:last-child {
2240    margin-bottom: 0;
2241  }
2242
2243  /* Menu title (parent link — both with and without children) */
2244  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__menu-link,
2245  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__menu-toggle {
2246    display: flex;
2247    align-items: center;
2248    justify-content: space-between;
2249    padding: 0;
2250    color: #FFFFFF;
2251    text-decoration: none;
2252    font-size: 16px;
2253    line-height: 16px;
2254    letter-spacing: -0.02em;
2255    font-weight: 500;
2256    background: none;
2257    border: none;
2258    cursor: pointer;
2259    width: 100%;
2260    text-align: left;
2261    margin-bottom: 18px;
2262  }
2263
2264  /* Submenu — first one open by default, rest closed */
2265  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__submenu {
2266    list-style: none;
2267    padding: 0;
2268    margin: 0;
2269    padding-left: 18px;
2270    border-left: 1px solid #FFFFFF;
2271    display: none;
2272  }
2273
2274  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__submenu.is-open {
2275    display: block;
2276  }
2277
2278  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__submenu li {
2279    margin-bottom: 10px;
2280  }
2281
2282  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__submenu li:last-child {
2283    margin-bottom: 0;
2284  }
2285
2286  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__submenu-link {
2287    display: block;
2288    color: #FFFFFF;
2289    text-decoration: none;
2290    font-size: 16px;
2291    line-height: 16px;
2292    letter-spacing: -0.02em;
2293    font-weight: 500;
2294    opacity: 1;
2295  }
2296
2297  .custom_mobile_nav {
2298    padding: 36px;
2299    padding-top: 36px;
2300    padding-bottom: 0;
2301  }
2302
2303  /* Drawer Footer */
2304  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__footer {
2305    padding: 0 36px 36px;
2306    margin-top: 86px;
2307    border: none;
2308  }
2309
2310  /* Account CTA */
2311  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__account-link {
2312    display: inline-block;
2313    color: #FFFFFF;
2314    text-decoration: none;
2315    font-size: 18px;
2316    line-height: 20px;
2317    letter-spacing: -0.02em;
2318    font-family: 'Inter-Regular';
2319    font-weight: 400;
2320  }
2321
2322  /* Drawer Social */
2323  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__social-row {
2324    display: flex;
2325    gap: 22px;
2326    align-items: center;
2327    margin: 0 36px;
2328    border-top: 1px solid rgba(255,255,255,0.15);
2329    padding-top: 18px;
2330    padding-bottom: 36px;
2331  }
2332
2333  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__social-icon {
2334    color: #ffffff;
2335    text-decoration: none;
2336    display: flex;
2337    align-items: center;
2338    justify-content: center;
2339    opacity: 0.85;
2340    transition: opacity 0.2s;
2341  }
2342
2343  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__social-icon:hover {
2344    opacity: 1;
2345  }
2346
2347  /* Drawer Banner Slider */
2348  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slider-wrapper {
2349    overflow: hidden;
2350    position: relative;
2351  }
2352
2353  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .swiper-slide.drawer__slide {
2354    width: calc(70% - 18px);
2355  }
2356
2357  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slide-link {
2358    display: block;
2359    text-decoration: none;
2360  }
2361
2362  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slide-image {
2363    width: 100%;
2364    height: 280px;
2365    background-size: cover;
2366    background-position: center;
2367    background-repeat: no-repeat;
2368    display: flex;
2369    align-items: flex-end;
2370    overflow: hidden;
2371    border-radius: 12px;
2372  }
2373
2374  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slide-content {
2375    background: rgba(255,255,255,0.92);
2376    padding: 14px 16px;
2377    margin: 12px;
2378    width: calc(100% - 24px);
2379    border-radius: 6px;
2380  }
2381
2382  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slide-title {
2383    color: #171717;
2384    font-size: 16px;
2385    line-height: 20px;
2386    font-weight: 500;
2387    margin: 0 0 6px;
2388    letter-spacing: -0.02em;
2389    font-family: 'Inter-Medium';
2390  }
2391
2392  .custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc .drawer__slide-cta {
2393    display: inline-block;
2394    color: #FFFFFF;
2395    background: #1D7F9A;
2396    border-radius: 100px;
2397    font-size: 13px;
2398    font-weight: 500;
2399    letter-spacing: 0.05em;
2400    text-transform: uppercase;
2401    padding: 6px 16px;
2402    text-decoration: none;
2403    font-family: 'Inter-Medium';
2404  }
2405
2406  /* ── Drawer Overlay ── */
2407  .custom-drawer-overlay-sections--23893840232617__custom_header_DeLQhc {
2408    position: fixed;
2409    top: 0;
2410    left: 0;
2411    width: 100%;
2412    height: 100vh;
2413    background: rgba(0,0,0,0.5);
2414    z-index: 999;
2415    opacity: 0;
2416    visibility: hidden;
2417    transition: all 0.3s ease;
2418  }
2419
2420  .custom-drawer-overlay-sections--23893840232617__custom_header_DeLQhc.is-open {
2421    opacity: 1;
2422    visibility: visible;
2423  }
2424
2425  /* ── Predictive Search results ── */
2426  .predictive-search-results h3,
2427  .predictive-search-results .h4 {
2428    color: #222222;
2429    font-family: 'Inter-Regular';
2430    font-size: 36px;
2431    line-height: 36px;
2432    letter-spacing: 0.03em;
2433    font-weight: 400;
2434    text-transform: unset !important;
2435    border-bottom: 1px solid #222222;
2436    padding-bottom: 8px;
2437    margin-bottom: 12px;
2438  }
2439
2440  .results-products__info span,
2441  .predictive-search-results li a span {
2442    color: #222222;
2443    font-family: 'Inter-Regular';
2444    font-size: 16px;
2445    line-height: 16px;
2446    letter-spacing: -0.02em;
2447    font-weight: 700;
2448  }
2449
2450  .results__search-btn {
2451    color: #222222;
2452    font-family: 'Inter-Regular';
2453    font-size: 18px;
2454    line-height: 24px;
2455    letter-spacing: -0.03em;
2456    font-weight: 500;
2457    background: transparent;
2458    border: none;
2459    border-top: 1px solid #222222;
2460    width: 100%;
2461    text-align: left;
2462    padding: 12px 16px;
2463    cursor: pointer;
2464  }
2465 @media only screen and (max-width: 768px) {
2466  .results__search-btn {
2467    font-size: 16px;
2468    letter-spacing: -0.02em;
2469  }
2470  .predictive-search-results h3, .predictive-search-results .h4 {
2471    font-size: 24px;
2472    line-height: 28px;
2473    letter-spacing: -0.03em;
2474  }
2475 }</style><div id="CartDrawer" class="drawer drawer--right">
2476    <form id="CartDrawerForm" action="/cart" method="post" novalidate class="drawer__contents" data-location="cart-drawer">
2477      <div class="drawer__fixed-header">
2478        <div class="drawer__header appear-animation appear-delay-1">
2479          <div class="h2 drawer__title">Cart</div>
2480          <div class="drawer__close">
2481            <button type="button" class="drawer__close-button js-drawer-close">
2482              <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg>
2483              <span class="icon__fallback-text">Close cart</span>
2484            </button>
2485          </div>
2486        </div>
2487      </div>
2488
2489      <div class="drawer__inner">
2490        <div class="drawer__scrollable">
2491          <div data-products class="appear-animation appear-delay-2"></div>
2492
2493          
2494        </div>
2495
2496        <div class="drawer__footer appear-animation appear-delay-4">
2497          <div data-discounts>
2498            
2499          </div>
2500
2501          <div class="cart__item-sub cart__item-row">
2502            <div class="ajaxcart__subtotal">Subtotal</div>
2503            <div data-subtotal>$0.00</div>
2504          </div>
2505
2506          <div class="cart__item-row text-center">
2507            <small>
2508              Shipping, taxes, and discount codes calculated at checkout.<br />
2509            </small>
2510          </div>
2511
2512          
2513
2514          <div class="cart__checkout-wrapper">
2515            <button type="submit" name="checkout" data-terms-required="false" class="btn cart__checkout">
2516              Check out
2517            </button>
2518
2519            
2520          </div>
2521        </div>
2522      </div>
2523
2524      <div class="drawer__cart-empty appear-animation appear-delay-2">
2525        <div class="drawer__scrollable">
2526          Your cart is currently empty.
2527        </div>
2528      </div>
2529    </form>
2530  </div><div
2531  class="custom-header-wrapper-sections--23893840232617__custom_header_DeLQhc sticky-header header--overlay"
2532  data-section-id="sections--23893840232617__custom_header_DeLQhc"
2533  data-sticky-enabled="true"
2534  data-overlay-enabled="true"
2535><div class="custom-announcement-bar-sections--23893840232617__custom_header_DeLQhc">
2536        <div class="swiper announcement-swiper announcement-swiper--sections--23893840232617__custom_header_DeLQhc">
2537          <div class="swiper-wrapper"><div class="swiper-slide" >
2538                <div class="announcement-bar__text"><p>Free 2-day Shipping</p></div>
2539              </div><div class="swiper-slide" >
2540                <div class="announcement-bar__text"><p>Shop now, pay later with Afterpay!</p></div>
2541              </div><div class="swiper-slide" >
2542                <div class="announcement-bar__text"><p>1-year Limited Warranty on All Devices</p></div>
2543              </div><div class="swiper-slide">
2544                <div class="announcement-bar__text"><p>Free 2-day Shipping</p></div>
2545              </div><div class="swiper-slide">
2546                <div class="announcement-bar__text"><p>Shop now, pay later with Afterpay!</p></div>
2547              </div><div class="swiper-slide">
2548                <div class="announcement-bar__text"><p>1-year Limited Warranty on All Devices</p></div>
2549              </div></div>
2550        </div>
2551      </div><header class="custom-header-sections--23893840232617__custom_header_DeLQhc">
2552    <div class="header__container"><div class="header__left">
2553        <button
2554          class="header__icon header__mobile-menu-icon js-mobile-drawer-open-sections--23893840232617__custom_header_DeLQhc"
2555          aria-label="Open menu"
2556        >
2557          <img class="hamburger-icon" src="https://cdn.shopify.com/s/files/1/0621/3615/6329/files/Hamburger_2.png?v=1772984800" alt="Menu" width="26" height="20">
2558          <svg class="close-icon" xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="0 0 26 26" fill="none" style="display:none;">
2559            <path d="M0.5 0.5L25.5 25.5" stroke="white" stroke-linecap="round"/>
2560            <path d="M0.5 25.5L25.5 0.499996" stroke="white" stroke-linecap="round"/>
2561          </svg>
2562        </button><div class="header__logo">
2563          <a href="/"><img
2564                src="//ipowerresale.com/cdn/shop/files/svg840.svg?v=1772971322&width=600"
2565                alt="iPowerResale"
2566                width="135"
2567                height="18.0"
2568                loading="eager"
2569              ></a>
2570        </div>
2571      </div><nav class="header__menu-nav" role="navigation" aria-label="Primary navigation">
2572        <ul class="header__menu"><li class="header__menu-item header__menu-item--megamenu">
2573              <a
2574                href="/pages/mac"
2575                class="header__menu-link"
2576                data-megamenu-trigger="mac"
2577                
2578              >
2579                Mac
2580              </a></li><li class="header__menu-item header__menu-item--megamenu">
2581              <a
2582                href="/pages/ipad"
2583                class="header__menu-link"
2584                data-megamenu-trigger="ipad"
2585                
2586              >
2587                iPad
2588              </a></li><li class="header__menu-item">
2589              <a
2590                href="/collections/iphone"
2591                class="header__menu-link"
2592                
2593              >
2594                iPhone
2595              </a></li><li class="header__menu-item">
2596              <a
2597                href="/collections/watch"
2598                class="header__menu-link"
2599                
2600              >
2601                Watch
2602              </a></li><li class="header__menu-item">
2603              <a
2604                href="/collections/airpods"
2605                class="header__menu-link"
2606                
2607              >
2608                AirPods
2609              </a></li><li class="header__menu-item">
2610              <a
2611                href="/collections/apple-display"
2612                class="header__menu-link"
2613                
2614              >
2615                Displays
2616              </a></li><li class="header__menu-item">
2617              <a
2618                href="/collections/accessories"
2619                class="header__menu-link"
2620                
2621              >
2622                Accessories
2623              </a></li><li class="header__menu-item">
2624              <a
2625                href="/pages/reviews"
2626                class="header__menu-link"
2627                
2628              >
2629                Reviews
2630              </a></li><li class="header__menu-item header__menu-item--has-dropdown">
2631              <a
2632                href="/pages/troubleshooting-guides"
2633                class="header__menu-link"
2634                data-dropdown-trigger="true"
2635              >
2636                Support
2637              </a><ul class="header__dropdown"><li>
2638                      <a href="/pages/faq" class="header__dropdown-link">FAQs</a>
2639                    </li><li>
2640                      <a href="/pages/service-support" class="header__dropdown-link">Service & Support</a>
2641                    </li><li>
2642                      <a href="/pages/troubleshooting-guides" class="header__dropdown-link">Troubleshooting Guides</a>
2643                    </li></ul></li></ul>
2644      </nav><div class="header__icons"><a
2645            href="/search"
2646            class="header__icon header__icon--search js-search-header"
2647            aria-label="Translation missing: en.general.search.search"
2648          >
2649            <svg xmlns="http://www.w3.org/2000/svg" width="17" height="18" viewBox="0 0 17 18" fill="none">
2650              <path d="M11.6113 12.5L16.5002 17.3889" stroke="white" stroke-linecap="round"/>
2651              <path d="M7.16667 13.8333C10.8431 13.8333 13.8333 10.8427 13.8333 7.16636C13.8333 3.49005 10.8431 0.5 7.16667 0.5C3.49019 0.5 0.5 3.49066 0.5 7.16636C0.5 10.8421 3.4908 13.8333 7.16667 13.8333Z" stroke="white"/>
2652            </svg>
2653          </a><a href="/account" class="header__icon header__icon--account" aria-label="My account">
2654            <svg xmlns="http://www.w3.org/2000/svg" width="18" height="20" viewBox="0 0 18 20" fill="none">
2655              <path d="M9.00033 9.24286C11.4111 9.24286 13.3718 7.28184 13.3718 4.87123C13.3718 2.46062 11.4111 0.5 9.00033 0.5C6.58961 0.5 4.62891 2.46102 4.62891 4.87123C4.62891 7.28144 6.59001 9.24286 9.00033 9.24286Z" stroke="white"/>
2656              <path d="M9.90655 10.2427H8.09303C3.90638 10.2427 0.5 13.7727 0.5 18.1114V18.1483C0.5 18.8778 1.07262 19.4712 1.77655 19.4712H16.2234C16.9274 19.4712 17.5 18.8778 17.5 18.1483V18.1114C17.5 13.7723 14.0936 10.2427 9.90655 10.2427Z" stroke="white"/>
2657            </svg>
2658          </a><a
2659          href="/cart"
2660          class="header__icon header__icon--cart"
2661          aria-label="Cart"
2662        >
2663          <svg xmlns="http://www.w3.org/2000/svg" width="18" height="21" viewBox="0 0 18 21" fill="none">
2664            <path d="M5.5 7.92858V3.97822C5.5 2.05154 7.01845 0.5 8.90477 0.5C10.7911 0.5 12.3095 2.05154 12.3095 3.97822V7.92858" stroke="white" stroke-linecap="round" stroke-linejoin="round"/>
2665            <path fill-rule="evenodd" clip-rule="evenodd" d="M16.3316 5.5L17.4947 18.6329C17.5859 19.6647 16.4965 20.5 15.2572 20.5H2.74279C1.50349 20.5 0.41408 19.664 0.505353 18.6329L1.66845 5.5H16.3316Z" stroke="white" stroke-linejoin="round"/>
2666          </svg>
2667          <span class="header__cart-count" style="display: none;">0</span>
2668        </a>
2669      </div>
2670
2671    </div><div class="header__megamenu-wrapper" data-megamenu-id="ipad" >
2672          <div class="header__megamenu">
2673            <div class="header__megamenu-items"><a href="/collections/ipad-pro" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2674                        <img
2675                          src="//ipowerresale.com/cdn/shop/files/ipadpro-icon.png?v=1776372609&width=128"
2676                          alt="iPad Pro"
2677                          width="64"
2678                          height="64"
2679                          loading="lazy"
2680                        >
2681                      </div><span class="header__megamenu-item-label">iPad Pro</span>
2682                  </a><a href="/collections/ipad-air" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2683                        <img
2684                          src="//ipowerresale.com/cdn/shop/files/ipadair-icon.png?v=1776372609&width=128"
2685                          alt="iPad Air"
2686                          width="64"
2687                          height="64"
2688                          loading="lazy"
2689                        >
2690                      </div><span class="header__megamenu-item-label">iPad Air</span>
2691                  </a><a href="/collections/ipad" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2692                        <img
2693                          src="//ipowerresale.com/cdn/shop/files/ipad-icon.png?v=1776372609&width=128"
2694                          alt="iPad"
2695                          width="64"
2696                          height="64"
2697                          loading="lazy"
2698                        >
2699                      </div><span class="header__megamenu-item-label">iPad</span>
2700                  </a><a href="/pages/ipad" class="header__megamenu-cta">
2701                Explore all 
iPads
2702              </a>
2703            </div>
2704          </div>
2705        </div><div class="header__megamenu-wrapper" data-megamenu-id="mac" >
2706          <div class="header__megamenu">
2707            <div class="header__megamenu-items"><a href="/collections/macbook-pro" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2708                        <img
2709                          src="//ipowerresale.com/cdn/shop/files/mbp-icon.png?v=1776372609&width=128"
2710                          alt="MacBook Pro"
2711                          width="64"
2712                          height="64"
2713                          loading="lazy"
2714                        >
2715                      </div><span class="header__megamenu-item-label">MacBook Pro</span>
2716                  </a><a href="/collections/macbook-air" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2717                        <img
2718                          src="//ipowerresale.com/cdn/shop/files/mba-icon.png?v=1776372610&width=128"
2719                          alt="MacBook Air"
2720                          width="64"
2721                          height="64"
2722                          loading="lazy"
2723                        >
2724                      </div><span class="header__megamenu-item-label">MacBook Air</span>
2725                  </a><a href="/collections/macbook-neo" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2726                        <img
2727                          src="//ipowerresale.com/cdn/shop/files/mbn-icon.png?v=1777677439&width=128"
2728                          alt="MacBook Neo"
2729                          width="64"
2730                          height="64"
2731                          loading="lazy"
2732                        >
2733                      </div><span class="header__megamenu-item-label">MacBook Neo</span>
2734                  </a><a href="/collections/imac" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2735                        <img
2736                          src="//ipowerresale.com/cdn/shop/files/imac-icon.png?v=1776372609&width=128"
2737                          alt="iMac"
2738                          width="64"
2739                          height="64"
2740                          loading="lazy"
2741                        >
2742                      </div><span class="header__megamenu-item-label">iMac</span>
2743                  </a><a href="/collections/mac-pro" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2744                        <img
2745                          src="//ipowerresale.com/cdn/shop/files/macpro-icon.png?v=1776372610&width=128"
2746                          alt="Mac Pro"
2747                          width="64"
2748                          height="64"
2749                          loading="lazy"
2750                        >
2751                      </div><span class="header__megamenu-item-label">Mac Pro</span>
2752                  </a><a href="/collections/macmini" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2753                        <img
2754                          src="//ipowerresale.com/cdn/shop/files/macmini-icon.png?v=1776372609&width=128"
2755                          alt="Mac mini"
2756                          width="64"
2757                          height="64"
2758                          loading="lazy"
2759                        >
2760                      </div><span class="header__megamenu-item-label">Mac mini</span>
2761                  </a><a href="/collections/mac-studio" class="header__megamenu-item"><div class="header__megamenu-item-icon">
2762                        <img
2763                          src="//ipowerresale.com/cdn/shop/files/macstudio-icon.png?v=1776372609&width=128"
2764                          alt="Mac Studio"
2765                          width="64"
2766                          height="64"
2767                          loading="lazy"
2768                        >
2769                      </div><span class="header__megamenu-item-label">Mac Studio</span>
2770                  </a><a href="/pages/mac" class="header__megamenu-cta">
2771                Explore all Macs
2772              </a>
2773            </div>
2774          </div>
2775        </div></header>
2776</div><div class="custom-mobile-drawer-sections--23893840232617__custom_header_DeLQhc js-mobile-drawer-sections--23893840232617__custom_header_DeLQhc">
2777
2778  <nav class="custom_mobile_nav">
2779    <ul class="drawer__menu"><li class="drawer__menu-item"><button
2780              class="drawer__menu-link drawer__menu-toggle js-drawer-submenu-toggle-sections--23893840232617__custom_header_DeLQhc"
2781              data-target="submenu-sections--23893840232617__custom_header_DeLQhc-1"
2782              aria-expanded="false"
2783            >
2784              <span>Mac</span>
2785            </button>
2786            <ul class="drawer__submenu is-open" id="submenu-sections--23893840232617__custom_header_DeLQhc-1"><li>
2787                  <a href="/collections/macbook-pro" class="drawer__submenu-link">MacBook Pro</a>
2788                </li><li>
2789                  <a href="/collections/macbook-air" class="drawer__submenu-link">MacBook Air</a>
2790                </li><li>
2791                  <a href="/collections/macbook-neo" class="drawer__submenu-link">MacBook Neo</a>
2792                </li><li>
2793                  <a href="/collections/imac" class="drawer__submenu-link">iMac</a>
2794                </li><li>
2795                  <a href="/collections/mac-pro" class="drawer__submenu-link">Mac Pro</a>
2796                </li><li>
2797                  <a href="/collections/macmini" class="drawer__submenu-link">Mac mini</a>
2798                </li><li>
2799                  <a href="/collections/mac-studio" class="drawer__submenu-link">Mac Studio</a>
2800                </li><li>
2801                  <a href="/pages/mac" class="drawer__submenu-link">Shop All Macs</a>
2802                </li></ul></li><li class="drawer__menu-item"><button
2803              class="drawer__menu-link drawer__menu-toggle js-drawer-submenu-toggle-sections--23893840232617__custom_header_DeLQhc"
2804              data-target="submenu-sections--23893840232617__custom_header_DeLQhc-2"
2805              aria-expanded="false"
2806            >
2807              <span>iPad</span>
2808            </button>
2809            <ul class="drawer__submenu" id="submenu-sections--23893840232617__custom_header_DeLQhc-2"><li>
2810                  <a href="/collections/ipad" class="drawer__submenu-link">iPad</a>
2811                </li><li>
2812                  <a href="/collections/ipad-air" class="drawer__submenu-link">iPad Air</a>
2813                </li><li>
2814                  <a href="/collections/ipad-pro" class="drawer__submenu-link">iPad Pro</a>
2815                </li><li>
2816                  <a href="/pages/ipad" class="drawer__submenu-link">Shop All iPads</a>
2817                </li></ul></li><li class="drawer__menu-item"><a href="/collections/iphone" class="drawer__menu-link">iPhone</a></li><li class="drawer__menu-item"><a href="/collections/watch" class="drawer__menu-link">Watch</a></li><li class="drawer__menu-item"><a href="/collections/airpods" class="drawer__menu-link">AirPods</a></li><li class="drawer__menu-item"><a href="/collections/apple-display" class="drawer__menu-link">Displays</a></li><li class="drawer__menu-item"><a href="/collections/accessories" class="drawer__menu-link">Accessories</a></li><li class="drawer__menu-item"><a href="/pages/reviews" class="drawer__menu-link">Reviews</a></li><li class="drawer__menu-item"><button
2818              class="drawer__menu-link drawer__menu-toggle js-drawer-submenu-toggle-sections--23893840232617__custom_header_DeLQhc"
2819              data-target="submenu-sections--23893840232617__custom_header_DeLQhc-9"
2820              aria-expanded="false"
2821            >
2822              <span>Support</span>
2823            </button>
2824            <ul class="drawer__submenu" id="submenu-sections--23893840232617__custom_header_DeLQhc-9"><li>
2825                  <a href="/pages/faq" class="drawer__submenu-link">FAQs</a>
2826                </li><li>
2827                  <a href="/pages/service-support" class="drawer__submenu-link">Service & Support</a>
2828                </li><li>
2829                  <a href="/pages/troubleshooting-guides" class="drawer__submenu-link">Troubleshooting Guides</a>
2830                </li></ul></li></ul>
2831  </nav><div class="drawer__footer">
2832      <a href="/account" class="drawer__account-link">
2833        My Account
2834      </a>
2835    </div></div><div class="custom-drawer-overlay-sections--23893840232617__custom_header_DeLQhc js-drawer-overlay-sections--23893840232617__custom_header_DeLQhc"></div>
2836
2837
2838
2839<script>
2840(function () {
2841  var sectionId = 'sections--23893840232617__custom_header_DeLQhc';
2842  var drawer     = document.querySelector('.js-mobile-drawer-' + sectionId);
2843  var overlay    = document.querySelector('.js-drawer-overlay-' + sectionId);
2844  var openBtn    = document.querySelector('.js-mobile-drawer-open-' + sectionId);
2845  var submenuToggles = document.querySelectorAll('.js-drawer-submenu-toggle-' + sectionId);
2846
2847  var hamburgerIcon = openBtn ? openBtn.querySelector('.hamburger-icon') : null;
2848  var closeIcon     = openBtn ? openBtn.querySelector('.close-icon')     : null;
2849
2850  function setMenuIconState(isOpen) {
2851    if (hamburgerIcon) hamburgerIcon.style.display = isOpen ? 'none' : '';
2852    if (closeIcon)     closeIcon.style.display     = isOpen ? ''     : 'none';
2853  }
2854
2855  function updateDrawerPosition() {
2856    var headerWrapper = document.querySelector('.custom-header-wrapper-' + sectionId);
2857    var bottom = headerWrapper ? headerWrapper.getBoundingClientRect().bottom : 0;
2858    if (drawer)  { drawer.style.top  = bottom + 'px'; drawer.style.height  = (window.innerHeight - bottom) + 'px'; }
2859    if (overlay) { overlay.style.top = bottom + 'px'; overlay.style.height = (window.innerHeight - bottom) + 'px'; }
2860  }
2861
2862  function openDrawer() {
2863    updateDrawerPosition();
2864    drawer.classList.add('is-open');
2865    overlay.classList.add('is-open');
2866    document.body.style.overflow = 'hidden';
2867    setMenuIconState(true);
2868    if (headerWrapper) headerWrapper.classList.add('drawer-open');
2869    // Recalculate after border-bottom removed (height changes by 1px)
2870    requestAnimationFrame(function() { updateDrawerPosition(); });
2871  }
2872
2873  function closeDrawer() {
2874    drawer.classList.remove('is-open');
2875    overlay.classList.remove('is-open');
2876    document.body.style.overflow = '';
2877    setMenuIconState(false);
2878    if (headerWrapper) headerWrapper.classList.remove('drawer-open');
2879  }
2880
2881  if (openBtn) {
2882    openBtn.addEventListener('click', function () {
2883      drawer.classList.contains('is-open') ? closeDrawer() : openDrawer();
2884    });
2885  }
2886
2887  if (overlay) { overlay.addEventListener('click', closeDrawer); }
2888
2889  window.addEventListener('resize', function () {
2890    if (drawer && drawer.classList.contains('is-open')) updateDrawerPosition();
2891  });
2892
2893  submenuToggles.forEach(function (toggle) {
2894    toggle.addEventListener('click', function () {
2895      var targetId = this.getAttribute('data-target');
2896      var submenu  = document.getElementById(targetId);
2897      if (submenu) {
2898        var isOpen = submenu.classList.toggle('is-open');
2899        this.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
2900      }
2901    });
2902  });
2903
2904  // ── Cart Drawer ──
2905  var cartButton = document.querySelector('.custom-header-' + sectionId + ' .js-drawer-open-cart');
2906  if (cartButton) {
2907    cartButton.addEventListener('click', function (e) {
2908      e.preventDefault();
2909      e.stopPropagation();
2910      var cartDrawer = document.getElementById('CartDrawer');
2911      if (cartDrawer) {
2912        document.documentElement.classList.add('js-drawer-open', 'js-drawer-open-cart');
2913        cartDrawer.classList.add('drawer--is-open');
2914        document.body.style.overflow = 'hidden';
2915      }
2916    });
2917  }
2918
2919  document.addEventListener('click', function (e) {
2920    var cartDrawer = document.getElementById('CartDrawer');
2921    var cb = document.querySelector('.custom-header-' + sectionId + ' .js-drawer-open-cart');
2922    if (cartDrawer && cartDrawer.classList.contains('drawer--is-open')) {
2923      if (!cartDrawer.contains(e.target) && cb && !cb.contains(e.target)) {
2924        document.documentElement.classList.remove('js-drawer-open', 'js-drawer-open-cart');
2925        cartDrawer.classList.remove('drawer--is-open');
2926        document.body.style.overflow = '';
2927      }
2928    }
2929  });
2930
2931  document.querySelectorAll('.js-drawer-close').forEach(function (btn) {
2932    btn.addEventListener('click', function () {
2933      var cartDrawer = document.getElementById('CartDrawer');
2934      if (cartDrawer) {
2935        document.documentElement.classList.remove('js-drawer-open', 'js-drawer-open-cart');
2936        cartDrawer.classList.remove('drawer--is-open');
2937        document.body.style.overflow = '';
2938      }
2939    });
2940  });
2941
2942  // ── Mega Menu & Dropdown hover ──
2943  var megaMenuTriggers   = document.querySelectorAll('.custom-header-' + sectionId + ' [data-megamenu-trigger]');
2944  var dropdownTriggers   = document.querySelectorAll('.custom-header-' + sectionId + ' [data-dropdown-trigger]');
2945
2946  var headerWrapperEl = document.querySelector('.custom-header-wrapper-' + sectionId);
2947
2948  function closeAllMenus() {
2949    document.querySelectorAll('.custom-header-' + sectionId + ' .header__menu-item').forEach(function (item) {
2950      item.classList.remove('is-active');
2951    });
2952    document.querySelectorAll('.custom-header-' + sectionId + ' .header__megamenu-wrapper').forEach(function (w) {
2953      w.classList.remove('is-active');
2954    });
2955    if (headerWrapperEl) headerWrapperEl.classList.remove('megamenu-open');
2956  }
2957
2958  megaMenuTriggers.forEach(function (trigger) {
2959    var parentItem = trigger.closest('.header__menu-item');
2960    var menuId     = trigger.getAttribute('data-megamenu-trigger');
2961    var megaMenu   = document.querySelector('[data-megamenu-id="' + menuId + '"]');
2962    var closeTimer = null;
2963
2964    function openMM() {
2965      clearTimeout(closeTimer);
2966      closeAllMenus();
2967      parentItem.classList.add('is-active');
2968      if (megaMenu) megaMenu.classList.add('is-active');
2969      if (headerWrapperEl) headerWrapperEl.classList.add('megamenu-open');
2970    }
2971
2972    function scheduleMMClose() {
2973      clearTimeout(closeTimer);
2974      closeTimer = setTimeout(function () {
2975        parentItem.classList.remove('is-active');
2976        if (megaMenu) megaMenu.classList.remove('is-active');
2977        if (headerWrapperEl) headerWrapperEl.classList.remove('megamenu-open');
2978      }, 100);
2979    }
2980
2981    parentItem.addEventListener('mouseenter', openMM);
2982    parentItem.addEventListener('mouseleave', scheduleMMClose);
2983    if (megaMenu) {
2984      megaMenu.addEventListener('mouseenter', function () { clearTimeout(closeTimer); });
2985      megaMenu.addEventListener('mouseleave', scheduleMMClose);
2986    }
2987  });
2988
2989  dropdownTriggers.forEach(function (trigger) {
2990    var parentItem = trigger.closest('.header__menu-item');
2991    parentItem.addEventListener('mouseenter', function () {
2992      closeAllMenus();
2993      parentItem.classList.add('is-active');
2994    });
2995    parentItem.addEventListener('mouseleave', function () {
2996      parentItem.classList.remove('is-active');
2997    });
2998  });
2999
3000  document.addEventListener('keydown', function (e) {
3001    if (e.key === 'Escape') closeAllMenus();
3002  });
3003
3004  // ── Sticky Header ──
3005  var headerWrapper = document.querySelector('.custom-header-wrapper-' + sectionId);
3006  var stickyEnabled = headerWrapper && headerWrapper.getAttribute('data-sticky-enabled') === 'true';
3007
3008  if (stickyEnabled && headerWrapper) {
3009    var isSticky = false;
3010    var headerHeight = 0;
3011    var initialOffsetTop = 0;
3012
3013    function getOffsetTop() {
3014      if (!isSticky) {
3015        initialOffsetTop = headerWrapper.getBoundingClientRect().top + window.pageYOffset;
3016      }
3017    }
3018
3019    function onScroll() {
3020      var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
3021      var isOverlay = headerWrapper.classList.contains('header--overlay');
3022      if (scrollTop > initialOffsetTop) {
3023        if (!isSticky) {
3024          headerHeight = headerWrapper.offsetHeight;
3025          if (!isOverlay) {
3026            document.body.style.paddingTop = headerHeight + 'px';
3027          }
3028          headerWrapper.classList.add('is-sticky');
3029          isSticky = true;
3030        }
3031      } else {
3032        if (isSticky) {
3033          headerWrapper.classList.remove('is-sticky');
3034          document.body.style.paddingTop = '';
3035          isSticky = false;
3036        }
3037      }
3038    }
3039
3040    window.addEventListener('scroll', onScroll, { passive: true });
3041    window.addEventListener('resize', function () {
3042      if (isSticky) {
3043        headerHeight = headerWrapper.offsetHeight;
3044        document.body.style.paddingTop = headerHeight + 'px';
3045      }
3046    });
3047
3048    getOffsetTop();
3049  }
3050
3051  // ── Overlay Header Logic ──
3052  var overlayEnabled = headerWrapper && headerWrapper.getAttribute('data-overlay-enabled') === 'true';
3053
3054  function applyOverlay() {
3055    if (!headerWrapper || !overlayEnabled) return;
3056    var isExcluded = document.querySelector('[data-ipr-no-overlay]') !== null;
3057    if (isExcluded) {
3058      headerWrapper.classList.remove('header--overlay');
3059    }
3060    // If not excluded, class is already set from Liquid — no action needed
3061  }
3062
3063  applyOverlay();
3064
3065  // ── Announcement Swiper ──
3066  var annSwiper = document.querySelector('.announcement-swiper--' + sectionId);
3067
3068  function initAnnouncementSwiper() {
3069    if (!annSwiper || typeof Swiper === 'undefined') return;
3070    new Swiper(annSwiper, {
3071      loop: true,
3072      autoplay: { delay: 3500, disableOnInteraction: false },
3073      slidesPerView: 1,
3074      allowTouchMove: true,
3075      speed: 600,
3076    });
3077  }
3078
3079  // Try immediately, then retry until Swiper is available
3080  function tryInitAnnouncement(attempts) {
3081    if (typeof Swiper !== 'undefined') {
3082      initAnnouncementSwiper();
3083    } else if (attempts > 0) {
3084      setTimeout(function() { tryInitAnnouncement(attempts - 1); }, 200);
3085    }
3086  }
3087
3088  tryInitAnnouncement(10);
3089
3090  // ── Drawer Banner Slider ──
3091  var drawerSlider = document.querySelector('.js-drawer-slider-' + sectionId);
3092  if (drawerSlider && typeof Swiper !== 'undefined') {
3093    new Swiper(drawerSlider, {
3094      slidesPerView: 'auto',
3095      spaceBetween: 12,
3096      freeMode: false,
3097      allowTouchMove: true,
3098      simulateTouch: true,
3099    });
3100  }
3101
3102  // ── Mega Menu horizontal scroll via mousewheel ──
3103  document.querySelectorAll('.custom-header-' + sectionId + ' .header__megamenu-items').forEach(function (el) {
3104    el.addEventListener('wheel', function (e) {
3105      if (e.deltaY !== 0) { e.preventDefault(); el.scrollLeft += e.deltaY; }
3106    }, { passive: false });
3107  });
3108
3109  // ── Real-time Cart Count Update ──
3110  function updateCartCountBubble(count) {
3111    var cartCountEl = document.querySelector('.custom-header-' + sectionId + ' .header__cart-count');
3112    if (cartCountEl) {
3113      if (typeof count !== 'undefined') {
3114        cartCountEl.textContent = count;
3115        cartCountEl.style.display = count > 0 ? 'flex' : 'none';
3116      }
3117    }
3118  }
3119
3120  var isFetchingCart = false;
3121  function fetchAndUpdateCart() {
3122    if (isFetchingCart) return;
3123    isFetchingCart = true;
3124
3125    fetch(window.Shopify.routes && window.Shopify.routes.root ? window.Shopify.routes.root + 'cart.js' : '/cart.js')
3126      .then(response => response.json())
3127      .then(cart => {
3128         updateCartCountBubble(cart.item_count);
3129      })
3130      .catch(err => console.error('Error fetching cart data:', err))
3131      .finally(() => {
3132         setTimeout(() => { isFetchingCart = false; }, 500);
3133      });
3134  }
3135
3136  document.addEventListener('cart:updated', function(event) {
3137    if (event.detail && event.detail.cart && typeof event.detail.cart.item_count !== 'undefined') {
3138      updateCartCountBubble(event.detail.cart.item_count);
3139    } else {
3140      fetchAndUpdateCart();
3141    }
3142  });
3143
3144  // Additional theme events
3145  document.addEventListener('ajaxProduct:added', fetchAndUpdateCart);
3146  document.addEventListener('cart:quantity', fetchAndUpdateCart);
3147
3148  // Global fetch interceptor for cart endpoints
3149  var originalFetch = window.fetch;
3150  window.fetch = function() {
3151    return originalFetch.apply(this, arguments).then(function(res) {
3152      var url = typeof arguments[0] === 'string' ? arguments[0] : (arguments[0] && arguments[0].url ? arguments[0].url : '');
3153      if (url.indexOf('/cart/add') !== -1 || url.indexOf('/cart/change') !== -1 || url.indexOf('/cart/update') !== -1 || url.indexOf('/cart/clear') !== -1) {
3154        setTimeout(fetchAndUpdateCart, 150);
3155      }
3156      return res;
3157    });
3158  };
3159
3160  // Global XHR interceptor
3161  var originalXHR = window.XMLHttpRequest.prototype.open;
3162  window.XMLHttpRequest.prototype.open = function(method, url) {
3163    this.addEventListener('load', function() {
3164      if (typeof url === 'string' && (url.indexOf('/cart/add') !== -1 || url.indexOf('/cart/change') !== -1 || url.indexOf('/cart/update') !== -1 || url.indexOf('/cart/clear') !== -1)) {
3165        setTimeout(fetchAndUpdateCart, 150);
3166      }
3167    });
3168    return originalXHR.apply(this, arguments);
3169  };
3170
3171})();
3172</script>
3172
3173
3174
3175</div>
3176<!-- END sections: header-group --><!-- BEGIN sections: popup-group -->
3177
3178<!-- END sections: popup-group --><main class="main-content" id="MainContent">
3179        <section id="shopify-section-template--23893840003241__custom_product_yw7rBH" class="shopify-section section"><link href="//ipowerresale.com/cdn/shop/t/130/assets/custom-product.css?v=181190175705233607691790277977" rel="stylesheet" type="text/css" media="all" />
3180<link href="//ipowerresale.com/cdn/shop/t/130/assets/product-configurator.css?v=156382306242021680431790278030" rel="stylesheet" type="text/css" media="all" />
3181<link href="//ipowerresale.com/cdn/shop/t/130/assets/custom-product-default.css?v=37584658166066326331790277975" rel="stylesheet" type="text/css" media="all" />
3182
3183<script id="swatches-data" type="application/json">
3184{
3185  "light-gold": { "hexValue": "#f9f3e6" },
3186  "cloud-white": { "hexValue": "#fcfcfc" },
3187  "deep-blue": { "hexValue": "#4d567e" },
3188  "cosmic-orange": { "hexValue": "#e8854c" },
3189  "lavender": { "hexValue": "#e5d9f0" },
3190  "sage": { "hexValue": "#bcc7a0" },
3191  "mist-blue": { "hexValue": "#adbcdb" },
3192  "midnight-ink-loop": { "hexValue": "#4b4b4b" },
3193  "silver-denim-band": { "hexValue": "#5a6478" },
3194  "silver-blue-cloud-loop": { "hexValue": "#dde3f9" },
3195  "starlight-lake-green-loop": { "hexValue": "#4d6b46" },
3196  "red": { "hexValue": "#ba1515" },
3197  "black": { "hexValue": "#222222" },
3198  "blue": { "hexValue": "#4f90bf" },
3199  "slate": { "hexValue": "#d1d1d1" },
3200  "gray": { "hexValue": "#9b9b9b" },
3201  "smoke": { "hexValue": "#808080" },
3202  "green": { "hexValue": "#529159" },
3203  "silver": { "hexValue": "#d8d8d8" },
3204  "space-gray": { "hexValue": "#868686" },
3205  "gold": { "hexValue": "#f5c891" },
3206  "midnight": { "hexValue": "#2b445c" },
3207  "starlight": { "hexValue": "#fbf3d8" },
3208  "pink": { "hexValue": "#f0d3d8" },
3209  "purple": { "hexValue": "#bdafcf" },
3210  "orange": { "hexValue": "#fbb254" },
3211  "yellow": { "hexValue": "#ffe574" },
3212  "graphite": { "hexValue": "#515151" },
3213  "white": { "hexValue": "#ffffff" },
3214  "sky-blue": { "hexValue": "#8eb8d5" },
3215  "titanium": { "hexValue": "#dadabf" },
3216  "white-ocean-band": { "hexValue": "#f5f5f5" },
3217  "yellow-ocean-band": { "hexValue": "#ffe574" },
3218  "midnight-ocean-band": { "hexValue": "#293f54" },
3219  "orange-alpine-loop": { "hexValue": "#fa6c36" },
3220  "green-alpine-loop": { "hexValue": "#465c48" },
3221  "starlight-alpine-loop": { "hexValue": "#ece5d0" },
3222  "yellow-beige-trail-loop": { "hexValue": "#e8dac2" },
3223  "blue-gray-trail-loop": { "hexValue": "#797b7c" },
3224  "black-gray-trail-loop": { "hexValue": "#433535" },
3225  "starlight-starlight-band": { "hexValue": "#efe9d6" },
3226  "space-gray-midnight-band": { "hexValue": "#293f54" },
3227  "space-gray-tornado-gray-loop": { "hexValue": "#675b5b" },
3228  "space-gray-black-band": { "hexValue": "#333232" },
3229  "space-gray-charcoal-loop": { "hexValue": "#3c3b3b" },
3230  "silver-blue-abyss-band": { "hexValue": "#e2e0e0" },
3231  "silver-abyss-blue-moss-green-loop": { "hexValue": "#2f4581" },
3232  "silver-white-band": { "hexValue": "#e7e7e7" },
3233  "red-red-band": { "hexValue": "#e53333" },
3234  "midnight-midnight-band": { "hexValue": "#293f54" },
3235  "green-clover-band": { "hexValue": "#529159" },
3236  "gold-starlight-band": { "hexValue": "#efe9d6" },
3237  "gold-maize-white-loop": { "hexValue": "#ffcd83" },
3238  "gold-pink-band": { "hexValue": "#ffd7b5" },
3239  "blue-abyss-blue-band": { "hexValue": "#2e71a1" },
3240  "black-titanium": { "hexValue": "#515050" },
3241  "white-titanium": { "hexValue": "#f5f5f5" },
3242  "blue-titanium": { "hexValue": "#4f597e" },
3243  "natural-titanium": { "hexValue": "#cec4bd" },
3244  "starlight-starlight-loop": { "hexValue": "#efe9d6" },
3245  "silver-winter-blue-loop": { "hexValue": "#8eb8d5" },
3246  "silver-storm-blue-band": { "hexValue": "#4179a1" },
3247  "midnight-midnight-loop": { "hexValue": "#293f54" },
3248  "pink-light-pink-band": { "hexValue": "#fadbdb" },
3249  "pink-light-pink-loop": { "hexValue": "#fadbdb" },
3250  "orange-ocean-band": { "hexValue": "#fb9754" },
3251  "blue-ocean-band": { "hexValue": "#4179a1" },
3252  "olive-alpine-loop": { "hexValue": "#817544" },
3253  "indigo-alpine-loop": { "hexValue": "#4c3c5c" },
3254  "blue-alpine-loop": { "hexValue": "#2d5370" },
3255  "orange-beige-trail-loop": { "hexValue": "#ff9538" },
3256  "green-gray-trail-loop": { "hexValue": "#617153" },
3257  "black-blue-trail-loop": { "hexValue": "#3c5271" },
3258  "space-black": { "hexValue": "#696969" },
3259  "black-ocean-band": { "hexValue": "#000000" },
3260  "navy-ocean-band": { "hexValue": "#4b5b64" },
3261  "dark-green-alpine-loop": { "hexValue": "#245629" },
3262  "tan-alpine-loop": { "hexValue": "#ac9a73" },
3263  "black-trail-loop": { "hexValue": "#000000" },
3264  "rose-gold-plum-loop": { "hexValue": "#935b8e" },
3265  "rose-gold-light-blush-band": { "hexValue": "#f6efec" },
3266  "jet-black-ink-loop": { "hexValue": "#3d3d3d" },
3267  "jet-black-black-band": { "hexValue": "#393939" },
3268  "blue-trail-loop": { "hexValue": "#3c5271" },
3269  "silver-purple-fog-band": { "hexValue": "#d1c0da" },
3270  "anchor-blue-ocean-band": { "hexValue": "#9ab1bf" },
3271  "bright-blue-trail-loop": { "hexValue": "#95b4ea" },
3272  "light-blue-alpine-loop": { "hexValue": "#84c8d6" },
3273  "black-alpine-loop": { "hexValue": "#454444" },
3274  "black-charcoal-trail-loop": { "hexValue": "#3d3b3b" },
3275  "natural-milanese-loop": { "hexValue": "#d4ce9e" },
3276  "black-milanese-loop": { "hexValue": "#4d4c4c" },
3277  "indigo": { "hexValue": "#646E84" },
3278  "citrus": { "hexValue": "#dddc96"},
3279  "blush": { "hexValue": "#e5d5d3"},
3280  "no band": { "hexValue": "#f2f0ef"}
3281
3282}
3283</script>
3283
3284
3285<script>
3286  //Grab our metafield data. Pass through to window.Resources for SS react. Format as needed
3287  let initialFilterObject = JSON.parse('{"0":{"filterField":"mfield_cql_parent_product","filterValue":"false"},"1":{"filterField":"product_type","filterValue":"iPad Pro"},"2":{"filterField":"mfield_hidden_group_4","filterValue":"true"},"3":{"filterField":"ss_available","filterValue":"1"},"4":{"filterField":"mfield_cql_case_size","filterValue":"11-inch"}}');
3288
3289  let filterOrder = false;
3290  
3291    filterOrder = JSON.parse('{"mfield_cql_color":{"1":"Space Black","2":"Silver"},"mfield_custom_cosmetics":{"1":"New - Sealed in Box","2":"Open Box - Like New","3":"Grade A - Excellent","4":"Grade B - Fair"},"mfield_cql_storage":{"1":"128GB storage","2":"256GB storage","3":"512GB storage","4":"1TB storage","5":"2TB storage"},"mfield_custom_connectivity":{"1":"Wi-Fi","2":"Wi-Fi + Cellular"}}');
3292  
3293
3294  let preSelectedOption = false;
3295  
3296
3297  //Set metafield data to corresponding window.Resources object(s)
3298  window.Resources = window.Resources || {};
3299  window.Resources.currentPageTitle = `iPad Pro 11-inch M5`;
3300  window.Resources.learnMoreText = "";
3301  window.Resources.filterOrder = filterOrder;
3302  window.Resources.preSelectedOption = preSelectedOption;
3303  window.Resources.initialFilterObject = initialFilterObject;
3304
3305  console.log("==>>> window.Resources :", window.Resources);
3306</script>
3306
3307
3308<div class="custom-product-container">
3309  <div class="custom-product-wrapper page-width">
3310    <div class="custom-product-images-gallery">
3311      <style>
3312  .product-images-gallery {
3313    display: block;
3314    overflow: hidden;
3315    width: 100%;
3316    margin: 0 auto;
3317    position: sticky;
3318    top: 110px;
3319  }
3320  .product-images-gallery .swiper-wrapper {
3321    align-items: stretch;
3322  }
3323  .product-images-gallery .swiper-slide {
3324    width: 100%;
3325    max-width: 100%;
3326  }
3327  .product-images-gallery .swiper-zoom-container {
3328    width: 100%;
3329    height: 100%;
3330  }
3331  .product-images-gallery .swiper-zoom-container img,
3332  .product-images-gallery .swiper-zoom-container video {
3333    width: 100%;
3334    height: 100%;
3335    object-fit: cover;
3336    cursor: pointer;
3337    aspect-ratio: 800 / 760;
3338    background-color: #ffffff;
3339    border-radius: 30px;
3340  }
3341  .product-images-gallery__footer {
3342    display: flex;
3343    align-items: center;
3344    justify-content: space-between;
3345    padding: 24px 0 72px;
3346  }
3347  .product-images-gallery .swiper-pagination {
3348    display: flex !important;
3349    align-items: center;
3350    justify-content: center;
3351    gap: 8px;
3352    background: #ffffff;
3353    width: fit-content !important;
3354    height: 28px;
3355    padding: 9px 13px;
3356    border-radius: 100px;
3357    position: static !important;
3358    z-index: 1;
3359  }
3360  .product-images-gallery .swiper-pagination-bullet {
3361    width: 5px;
3362    height: 5px;
3363    background: #98b4d4;
3364    opacity: 1;
3365    border-radius: 100px;
3366    margin: 0 !important;
3367    transition: all 0.25s ease;
3368  }
3369  .product-images-gallery .swiper-pagination-bullet-active {
3370    width: 10px;
3371    height: 10px;
3372    background: #1d7f9a;
3373  }
3374  .product-images-gallery__arrow {
3375    display: flex;
3376    align-items: center;
3377    justify-content: center;
3378    width: 40px;
3379    height: 40px;
3380    border-radius: 100px;
3381    background: #ffffff;
3382    cursor: pointer;
3383    border: none;
3384    flex-shrink: 0;
3385  }
3386
3387  .product-images-gallery__arrow--prev svg {
3388    transform: scaleX(-1);
3389  }
3390  @media (max-width: 768px) {
3391    .product-images-gallery .swiper-zoom-container img,
3392    .product-images-gallery .swiper-zoom-container video {
3393      aspect-ratio: 357 / 338.59;
3394    }
3395    .product-images-gallery__footer {
3396      padding: 24px 0 0;
3397    }
3398  }
3399</style>
3400<!-- Left Side: Product Images and Videos -->
3401
3402<div class="product-images-gallery">
3403  <div class="swiper-wrapper">
3404    
3405      <div id="product-media--34900660256937" class="swiper-slide" data-media-type="image">
3406        <div class="swiper-zoom-container">
3407          
3408            <img src="//ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668&width=1600" alt="iPad Pro 11-inch M5" width="1600" height="1520">
3409          
3410        </div>
3411      </div>
3412    
3413      <div id="product-media--34900660289705" class="swiper-slide" data-media-type="image">
3414        <div class="swiper-zoom-container">
3415          
3416            <img src="//ipowerresale.com/cdn/shop/files/media_a6b05452-6fc6-4456-b536-0b9f1b5ed8af.png?v=1766104669&width=1600" alt="iPad Pro 11-inch M5" width="1600" height="1520">
3417          
3418        </div>
3419      </div>
3420    
3421      <div id="product-media--34900660322473" class="swiper-slide" data-media-type="image">
3422        <div class="swiper-zoom-container">
3423          
3424            <img src="//ipowerresale.com/cdn/shop/files/media_d29247e0-3007-4e27-8518-9d8ebacc9308.png?v=1766104669&width=1600" alt="iPad Pro 11-inch M5" width="1600" height="1520">
3425          
3426        </div>
3427      </div>
3428    
3429  </div>
3430  
3431    <div class="product-images-gallery__footer">
3432      <button
3433        class="product-images-gallery__arrow product-images-gallery__arrow--prev product-images-gallery__prev--template--23893840003241__custom_product_yw7rBH"
3434        aria-label="Previous slide"
3435      >
3436        <svg xmlns="http://www.w3.org/2000/svg" width="15" height="8" viewBox="0 0 15 8" fill="none">
3437          <path d="M14.3536 4.03568C14.5488 3.84042 14.5488 3.52384 14.3536 3.32858L11.1716 0.146595C10.9763 -0.0486672 10.6597 -0.0486672 10.4645 0.146595C10.2692 0.341857 10.2692 0.65844 10.4645 0.853702L13.2929 3.68213L10.4645 6.51056C10.2692 6.70582 10.2692 7.0224 10.4645 7.21766C10.6597 7.41293 10.9763 7.41293 11.1716 7.21766L14.3536 4.03568ZM0 3.68213V4.18213H14V3.68213V3.18213H0V3.68213Z" fill="#171717"/>
3438        </svg>
3439      </button>
3440
3441      <div
3442        class="swiper-pagination product-images-gallery__pagination product-images-gallery__pagination--template--23893840003241__custom_product_yw7rBH"
3443      ></div>
3444
3445      <button
3446        class="product-images-gallery__arrow product-images-gallery__arrow--next product-images-gallery__next--template--23893840003241__custom_product_yw7rBH"
3447        aria-label="Next slide"
3448      >
3449        <svg xmlns="http://www.w3.org/2000/svg" width="15" height="8" viewBox="0 0 15 8" fill="none">
3450          <path d="M14.3536 4.03568C14.5488 3.84042 14.5488 3.52384 14.3536 3.32858L11.1716 0.146595C10.9763 -0.0486672 10.6597 -0.0486672 10.4645 0.146595C10.2692 0.341857 10.2692 0.65844 10.4645 0.853702L13.2929 3.68213L10.4645 6.51056C10.2692 6.70582 10.2692 7.0224 10.4645 7.21766C10.6597 7.41293 10.9763 7.41293 11.1716 7.21766L14.3536 4.03568ZM0 3.68213V4.18213H14V3.68213V3.18213H0V3.68213Z" fill="#171717"/>
3451        </svg>
3452      </button>
3453    </div>
3454  
3455</div>
3456
3457<div id="image-modal-gallery" class="image-modal" style="display: none;">
3458  <div class="modal-backdrop"></div>
3459  <div class="modal-content">
3460    <button class="modal-close" aria-label="Close modal">
3461      <svg width="18" height="19" viewBox="0 0 25 26" fill="none" xmlns="http://www.w3.org/2000/svg">
3462        <path d="M1 23.7963L23.0617 1.73457" stroke="#010101" stroke-width="2" stroke-linecap="round"/>
3463        <path d="M1.00708 2.2037L23.0688 24.2654" stroke="#010101" stroke-width="2" stroke-linecap="round"/>
3464      </svg>
3465    </button>
3466    <button class="modal-nav modal-prev" aria-label="Previous image">
3467      <svg width="44" height="44" viewBox="0 0 44 44" fill="#F4F3ED" xmlns="http://www.w3.org/2000/svg">
3468        <circle cx="22" cy="22.0083" r="21.375" transform="rotate(180 22 22.0083)" stroke="#1A1B1A" stroke-width="1.25"/>
3469        <path d="M26 31.0083L16 21.675L26 13.0083" stroke="#1A1B1A" stroke-width="1.25"/>
3470      </svg>
3471    </button>
3472    <button class="modal-nav modal-next" aria-label="Next image">
3473      <svg width="44" height="44" viewBox="0 0 44 44" fill="#F4F3ED" xmlns="http://www.w3.org/2000/svg">
3474        <circle cx="22" cy="22.0083" r="21.375" stroke="#1A1B1A" stroke-width="1.25"/>
3475        <path d="M18 13.0083L28 22.3416L18 31.0083" stroke="#1A1B1A" stroke-width="1.25"/>
3476      </svg>
3477    </button>
3478    <div class="modal-image-container">
3479      <img class="modal-image" src="" alt="" loading="lazy" width="1" height="1" style="display: none;">
3480      <video class="modal-video" style="display: none;" controls muted playsinline></video>
3481      <div class="modal-external-video" style="display: none;"></div>
3482    </div>
3483  </div>
3484</div>
3485
3486<style>
3487  .image-modal {
3488    position: fixed;
3489    top: 0;
3490    left: 0;
3491    width: 100%;
3492    height: 100%;
3493    z-index: 9999;
3494    display: flex;
3495    align-items: center;
3496    justify-content: center;
3497    opacity: 0;
3498    animation: fadeIn 0.3s ease-in-out forwards;
3499    padding: 20px 0;
3500  }
3501
3502  @keyframes fadeIn {
3503    to {
3504      opacity: 1;
3505    }
3506  }
3507
3508  .modal-backdrop {
3509    position: absolute;
3510    top: 0;
3511    left: 0;
3512    width: 100%;
3513    height: 100%;
3514    background: rgb(0 0 0 / 72%);
3515    z-index: 1;
3516  }
3517
3518  .modal-content {
3519    position: relative;
3520    z-index: 2;
3521    display: flex;
3522    flex-direction: column;
3523    align-items: center;
3524  }
3525
3526  .modal-image-container {
3527    position: relative;
3528    display: flex;
3529    align-items: center;
3530    justify-content: center;
3531    max-width: 100%;
3532  }
3533
3534  .modal-image,
3535  .modal-video {
3536    max-width: 667px;
3537    width: 100%;
3538    max-height: calc(100vh - 100px);
3539    object-fit: contain;
3540    border-radius: 8px;
3541    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
3542    background: #fff;
3543  }
3544  .modal-external-video {
3545    max-width: 667px;
3546    width: 100%;
3547    max-height: calc(100vh - 100px);
3548    border-radius: 8px;
3549    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
3550    background: #fff;
3551    position: relative;
3552    padding-bottom: 56.25%;
3553    height: 0;
3554    overflow: hidden;
3555  }
3556  .modal-external-video iframe {
3557    position: absolute;
3558    top: 0;
3559    left: 0;
3560    width: 100%;
3561    height: 100%;
3562    border: none;
3563    border-radius: 8px;
3564  }
3565
3566  .modal-close {
3567    position: absolute;
3568    top: -50px;
3569    right: -20px;
3570    background: #f4f3ed;
3571    border: none;
3572    border-radius: 50%;
3573    cursor: pointer;
3574    z-index: 3;
3575    display: flex;
3576    align-items: center;
3577    justify-content: center;
3578    transition: background 0.2s ease;
3579    padding: 10px;
3580  }
3581
3582  .modal-close:hover {
3583    background: #f4f3ed;
3584  }
3585
3586  .modal-nav {
3587    position: absolute;
3588    top: 50%;
3589    transform: translateY(-50%);
3590    border: none;
3591    border-radius: 50%;
3592    width: 50px;
3593    height: 50px;
3594    font-size: 28px;
3595    font-weight: bold;
3596    cursor: pointer;
3597    z-index: 3;
3598    display: flex;
3599    align-items: center;
3600    justify-content: center;
3601    transition: background 0.2s ease;
3602    background: transparent;
3603  }
3604
3605  .modal-prev {
3606    left: -70px;
3607  }
3608
3609  .modal-next {
3610    right: -70px;
3611  }
3612
3613  @media (max-width: 768px) {
3614    .modal-image {
3615      max-width: 85%;
3616    }
3617    .modal-image-container img,
3618    .modal-image-container video,
3619    .modal-content {
3620      max-height: 95%;
3621    }
3622
3623    .modal-close {
3624      right: 15px;
3625    }
3626
3627    .modal-prev {
3628      left: 0px;
3629      bottom: -100px;
3630      top: unset;
3631    }
3632
3633    .modal-next {
3634      right: 0px;
3635      bottom: -100px;
3636      top: unset;
3637    }
3638  }
3639
3640  .modal-nav[style*='display: none'] {
3641    display: none !important;
3642  }
3643</style>
3644
3645<script>
3646  (function () {
3647    function initImageModal() {
3648      const modalId = 'image-modal-gallery';
3649      const modal = document.getElementById(modalId);
3650
3651      if (!modal) {
3652        setTimeout(initImageModal, 100);
3653        return;
3654      }
3655
3656      const modalImage = modal.querySelector('.modal-image');
3657      const modalVideo = modal.querySelector('.modal-video');
3658      const modalExternalVideo = modal.querySelector('.modal-external-video');
3659      const modalClose = modal.querySelector('.modal-close');
3660      const modalBackdrop = modal.querySelector('.modal-backdrop');
3661      const modalPrev = modal.querySelector('.modal-prev');
3662      const modalNext = modal.querySelector('.modal-next');
3663
3664      let currentImageIndex = 0;
3665      let imageData = [];
3666
3667      function collectImageData() {
3668        imageData = [];
3669        const seenMedia = new Set();
3670        const slides = document.querySelectorAll('.product-images-gallery .swiper-slide');
3671
3672        slides.forEach(function (slide, index) {
3673          const img = slide.querySelector('img');
3674          const video = slide.querySelector('video');
3675          const externalVideo = slide.querySelector('.product-gallery-external-video');
3676
3677          if (video) {
3678            const videoId = slide.id;
3679            const poster = video.getAttribute('poster') || '';
3680            const sources = Array.from(video.querySelectorAll('source')).map(function (s) {
3681              return { url: s.src, type: s.type };
3682            });
3683
3684            imageData.push({
3685              type: 'video',
3686              id: videoId,
3687              poster: poster,
3688              sources: sources,
3689              alt: video.alt || 'Product video',
3690              index: imageData.length,
3691            });
3692          } else if (externalVideo) {
3693            const videoType = externalVideo.getAttribute('data-video-type');
3694            const videoId = externalVideo.getAttribute('data-video-id');
3695            const posterImg = externalVideo.querySelector('img');
3696            const poster = posterImg ? posterImg.src : '';
3697
3698            imageData.push({
3699              type: 'external_video',
3700              videoType: videoType,
3701              videoId: videoId,
3702              poster: poster,
3703              alt: posterImg ? posterImg.alt || 'Product video' : 'Product video',
3704              index: imageData.length,
3705            });
3706          } else if (img) {
3707            let imageSrc = img.src;
3708            const baseSrc = imageSrc.split('?')[0].replace(/_\d+x\d+\./, '_');
3709
3710            if (!seenMedia.has(baseSrc)) {
3711              seenMedia.add(baseSrc);
3712
3713              if (imageSrc.includes('_') && imageSrc.match(/_\d+x\d+\./)) {
3714                imageSrc = imageSrc.replace(/_\d+x\d+\./, '_2048x2048.');
3715              } else if (imageSrc.includes('/products/')) {
3716                imageSrc = imageSrc.replace(/(\.jpg|\.jpeg|\.png|\.webp)(\?|$)/i, '_2048x2048$1$2');
3717              }
3718
3719              imageData.push({
3720                type: 'image',
3721                src: imageSrc,
3722                alt: img.alt || 'Product image',
3723                index: imageData.length,
3724              });
3725            }
3726          }
3727        });
3728      }
3729
3730      function openModal(index) {
3731        collectImageData();
3732
3733        if (imageData.length === 0) {
3734          return;
3735        }
3736
3737        if (index < 0) index = 0;
3738        if (index >= imageData.length) index = imageData.length - 1;
3739
3740        currentImageIndex = index;
3741        updateModalImage();
3742        modal.style.display = 'flex';
3743        document.body.style.overflow = 'hidden';
3744      }
3745
3746      function closeModal() {
3747        modal.style.display = 'none';
3748        document.body.style.overflow = '';
3749
3750        if (modalVideo) {
3751          modalVideo.pause();
3752        }
3753        if (modalExternalVideo) {
3754          modalExternalVideo.innerHTML = '';
3755        }
3756      }
3757
3758      function updateModalImage() {
3759        if (imageData[currentImageIndex]) {
3760          const media = imageData[currentImageIndex];
3761
3762          if (modalImage) modalImage.style.display = 'none';
3763          if (modalVideo) modalVideo.style.display = 'none';
3764          if (modalExternalVideo) modalExternalVideo.style.display = 'none';
3765
3766          if (modalVideo) {
3767            modalVideo.pause();
3768            modalVideo.currentTime = 0;
3769            const sources = modalVideo.querySelectorAll('source');
3770            sources.forEach(function (s) {
3771              s.remove();
3772            });
3773          }
3774          if (modalExternalVideo) {
3775            modalExternalVideo.innerHTML = '';
3776          }
3777
3778          if (media.type === 'video') {
3779            if (modalVideo && media.sources && media.sources.length > 0) {
3780              modalVideo.poster = media.poster || '';
3781              modalVideo.muted = true;
3782
3783              media.sources.forEach(function (source) {
3784                const sourceEl = document.createElement('source');
3785                sourceEl.src = source.url;
3786                sourceEl.type = source.type;
3787                modalVideo.appendChild(sourceEl);
3788              });
3789
3790              modalVideo.style.display = 'block';
3791              modalVideo.load();
3792
3793              const playVideo = function () {
3794                modalVideo.play().catch(function (error) {});
3795              };
3796
3797              modalVideo.addEventListener('loadeddata', playVideo, { once: true });
3798              modalVideo.addEventListener('canplay', playVideo, { once: true });
3799
3800              setTimeout(function () {
3801                if (modalVideo.readyState >= 2) {
3802                  playVideo();
3803                }
3804              }, 200);
3805            }
3806          } else if (media.type === 'external_video') {
3807            if (modalExternalVideo) {
3808              let iframeSrc = '';
3809              if (media.videoType === 'youtube') {
3810                iframeSrc = 'https://www.youtube.com/embed/' + media.videoId + '?autoplay=1&rel=0&modestbranding=1';
3811              } else if (media.videoType === 'vimeo') {
3812                iframeSrc = 'https://player.vimeo.com/video/' + media.videoId + '?autoplay=1';
3813              }
3814              if (iframeSrc) {
3815                const iframe = document.createElement('iframe');
3816                iframe.src = iframeSrc;
3817                iframe.allow = 'autoplay; encrypted-media';
3818                iframe.allowFullscreen = true;
3819                modalExternalVideo.appendChild(iframe);
3820                modalExternalVideo.style.display = 'block';
3821              }
3822            }
3823          } else {
3824            if (modalImage) {
3825              modalImage.src = media.src;
3826              modalImage.alt = media.alt || 'Product image';
3827              modalImage.style.display = 'block';
3828            }
3829          }
3830
3831          if (modalPrev) {
3832            modalPrev.style.display = imageData.length === 1 || currentImageIndex === 0 ? 'none' : 'flex';
3833          }
3834          if (modalNext) {
3835            modalNext.style.display =
3836              imageData.length === 1 || currentImageIndex === imageData.length - 1 ? 'none' : 'flex';
3837          }
3838        }
3839      }
3840
3841      function prevImage() {
3842        if (currentImageIndex > 0) {
3843          currentImageIndex--;
3844          updateModalImage();
3845        }
3846      }
3847
3848      function nextImage() {
3849        if (currentImageIndex < imageData.length - 1) {
3850          currentImageIndex++;
3851          updateModalImage();
3852        }
3853      }
3854
3855      function handleImageClick(e) {
3856        if (e.target.closest('.swiper-pagination')) {
3857          return;
3858        }
3859
3860        const clickedElement = e.target;
3861        let mediaContainer = null;
3862        let clickedIndex = -1;
3863
3864        if (clickedElement.tagName === 'VIDEO' || clickedElement.closest('video')) {
3865          const video = clickedElement.tagName === 'VIDEO' ? clickedElement : clickedElement.closest('video');
3866          mediaContainer = video.closest('.swiper-slide');
3867        } else if (clickedElement.tagName === 'IMG' || clickedElement.closest('img')) {
3868          const img = clickedElement.tagName === 'IMG' ? clickedElement : clickedElement.closest('img');
3869          mediaContainer = img.closest('.swiper-slide');
3870        } else {
3871          mediaContainer = clickedElement.closest('.swiper-slide');
3872        }
3873
3874        if (!mediaContainer) return;
3875
3876        collectImageData();
3877
3878        const containerId = mediaContainer.id;
3879        imageData.forEach(function (item, index) {
3880          if (item.id === containerId) {
3881            clickedIndex = index;
3882          }
3883        });
3884
3885        if (clickedIndex === -1) {
3886          const slides = document.querySelectorAll('.product-images-gallery .swiper-slide');
3887          slides.forEach(function (slide, index) {
3888            if (slide === mediaContainer) {
3889              clickedIndex = index;
3890            }
3891          });
3892        }
3893
3894        if (clickedIndex !== -1) {
3895          e.preventDefault();
3896          e.stopPropagation();
3897          openModal(clickedIndex);
3898          return false;
3899        }
3900      }
3901
3902      collectImageData();
3903
3904      const gallery = document.querySelector('.product-images-gallery');
3905      if (gallery) {
3906        gallery.addEventListener('click', handleImageClick);
3907      }
3908
3909      if (modalClose) {
3910        modalClose.addEventListener('click', closeModal);
3911      }
3912
3913      if (modalBackdrop) {
3914        modalBackdrop.addEventListener('click', closeModal);
3915      }
3916
3917      if (modalPrev) {
3918        modalPrev.addEventListener('click', prevImage);
3919      }
3920
3921      if (modalNext) {
3922        modalNext.addEventListener('click', nextImage);
3923      }
3924
3925      document.addEventListener('keydown', function (e) {
3926        if (modal.style.display === 'flex') {
3927          switch (e.key) {
3928            case 'Escape':
3929              closeModal();
3930              break;
3931            case 'ArrowLeft':
3932              prevImage();
3933              break;
3934            case 'ArrowRight':
3935              nextImage();
3936              break;
3937          }
3938        }
3939      });
3940
3941      let startX = 0;
3942      let endX = 0;
3943
3944      if (modalImage) {
3945        modalImage.addEventListener('touchstart', function (e) {
3946          startX = e.touches[0].clientX;
3947        });
3948
3949        modalImage.addEventListener('touchend', function (e) {
3950          endX = e.changedTouches[0].clientX;
3951          handleSwipe();
3952        });
3953      }
3954
3955      function handleSwipe() {
3956        const swipeThreshold = 50;
3957        const diff = startX - endX;
3958
3959        if (Math.abs(diff) > swipeThreshold) {
3960          if (diff > 0) {
3961            nextImage();
3962          } else {
3963            prevImage();
3964          }
3965        }
3966      }
3967
3968      window.openGalleryModal = function (imageIndex) {
3969        openModal(imageIndex);
3970      };
3971    }
3972
3973    if (document.readyState === 'loading') {
3974      document.addEventListener('DOMContentLoaded', initImageModal);
3975    } else {
3976      initImageModal();
3977    }
3978
3979    function initSwiper() {
3980      if (typeof Swiper === 'undefined') {
3981        setTimeout(initSwiper, 100);
3982        return;
3983      }
3984
3985      const gallery = document.querySelector('.product-images-gallery');
3986      if (gallery) {
3987        const autoplaySpeed = 3000;
3988        const clickSpeed = 500;
3989
3990        new Swiper('.product-images-gallery', {
3991          slidesPerView: 1,
3992          spaceBetween: 18,
3993          zoom: true,
3994          loop: true,
3995          autoplay: {
3996            disableOnInteraction: false,
3997          },
3998          speed: autoplaySpeed,
3999          pagination: {
4000            el: '.product-images-gallery .swiper-pagination',
4001            clickable: true,
4002          },
4003          navigation: {
4004            prevEl: '.product-images-gallery__prev--template--23893840003241__custom_product_yw7rBH',
4005            nextEl: '.product-images-gallery__next--template--23893840003241__custom_product_yw7rBH',
4006          },
4007          on: {
4008            beforeTransitionStart: function (swiper, speed, internal) {
4009              const targetSpeed = internal ? autoplaySpeed : clickSpeed;
4010              swiper.params.speed = targetSpeed;
4011              swiper.setTransition(targetSpeed);
4012            },
4013          },
4014        });
4015      }
4016    }
4017
4018    if (document.readyState === 'loading') {
4019      document.addEventListener('DOMContentLoaded', initSwiper);
4020    } else {
4021      initSwiper();
4022    }
4023  })();
4024</script>
4024
4025
4026    </div>
4027
4028    <div class="custom-product-content-wrapper">
4029      <div class="custom-product-content-wrapper-header">
4030        
4031          <style>
4032  .breadcrumbs {
4033    margin-bottom: 18px;
4034  }
4035  .breadcrumbs__list {
4036    list-style-type: none;
4037    margin: 0;
4038    padding: 0;
4039  }
4040
4041  .breadcrumbs__item {
4042    display: inline-block;
4043    margin-bottom: 0;
4044  }
4045
4046  .breadcrumbs__link {
4047    text-decoration: underline;
4048    text-underline-offset: 6px;
4049    text-decoration-thickness: 3px;
4050    text-decoration-color: #1dacd6;
4051    font-family: 'Inter-Medium';
4052    font-weight: 500;
4053    font-size: 16px;
4054    line-height: 18px;
4055    letter-spacing: -0.32px;
4056    color: #222222 !important;
4057  }
4058
4059  .breadcrumbs__link[aria-current='page'] {
4060    color: inherit;
4061    font-weight: 500;
4062    text-decoration: underline;
4063    text-underline-offset: 3px;
4064    text-decoration-thickness: 3px;
4065    text-decoration-color: #1dacd6;
4066  }
4067  .breadcrumbs__current {
4068    text-decoration: underline;
4069    text-underline-offset: 6px;
4070    text-decoration-thickness: 3px;
4071    text-decoration-color: #1dacd6;
4072  }
4073
4074  .breadcrumbs__current {
4075    color: #222222;
4076    line-height: 18px;
4077    font-size: 16px;
4078    letter-spacing: -0.02em;
4079    font-weight: 500;
4080    font-family: 'Inter-Medium';
4081  }
4082  .breadcrumb-divider {
4083    margin-right: 8px;
4084    margin-left: 8px;
4085  }
4086  .breadcrumbs__link[aria-current='page']:hover,
4087  .breadcrumbs__link[aria-current='page']:focus {
4088    text-decoration: underline;
4089  }
4090
4091  @media (max-width: 768px) {
4092    .breadcrumbs__item { 
4093      margin-bottom: 12px;
4094    }
4095  }
4096</style><nav class="breadcrumbs" role="navigation" aria-label="breadcrumbs">
4097    <ol class="breadcrumbs__list">
4098      <li class="breadcrumbs__item">
4099        <a class="breadcrumbs__link" href="/">Home</a>
4100        <span class="breadcrumb-divider">/ </span>
4101      </li><li class="breadcrumbs__item" id="collection"></li>
4102          <li class="breadcrumbs__item">
4103            <span class="breadcrumbs__current" aria-current="page">iPad Pro 11-inch M5</span>
4104          </li></ol>
4105  </nav>
4105<script>
4106  const collectionBreadcrumb = document.getElementById('collection');
4107  const docRefferer = document.referrer;
4108
4109  if (docRefferer) {
4110    try {
4111      const referrerUrl = new URL(docRefferer);
4112      const linkDomain = referrerUrl.hostname;
4113      const currentDomain = window.location.hostname;
4114
4115      if (linkDomain === currentDomain) {
4116        const linkPath = referrerUrl.pathname;
4117        const searchParams = referrerUrl.searchParams;
4118        // Priority 2: If no filter and path is /collections/all, show "View All"
4119        if (linkPath === '/collections/all') {
4120          collectionBreadcrumb.innerHTML += `<a class="breadcrumbs__link" href='/collections/all'>All Products</a>
4121                  <span class="breadcrumb-divider">/</span>`;
4122        }
4123        // Priority 3: Other collections - fetch JSON
4124        else if (linkPath.includes('/collections/')) {
4125          const collectionUrl = docRefferer.includes('?') ? docRefferer.split('?')[0] : docRefferer;
4126          fetch(`${collectionUrl}.json`)
4127            .then((res) => res.json())
4128            .then((data) => {
4129              if (data.collection && data.collection.title) {
4130                collectionBreadcrumb.innerHTML += `<a class="breadcrumbs__link" href='${docRefferer}'>${data.collection.title}</a>
4131                        <span class="breadcrumb-divider">/</span>`;
4132              }
4133            })
4134            .catch((err) => console.error('Error fetching collection:', err));
4135        }
4136      }
4137    } catch (e) {
4138      console.error('Error parsing referrer URL:', e);
4139    }
4140  }
4141</script>
4141
4142
4143        
4144        
4145          <h1 class="custom-product-title">iPad Pro 11-inch M5</h1>
4146        
4147
4148        
4149          <p class="custom-product-price"><span class="custom-product-price-label">Starting at</span> $979.00</p>
4150        
4151
4152        
4153          
4154            <div class="product-config__detail-list">
4155              <!-- Split by :: delimeter -->
4156              
4157              <ul>
4158                
4159                  <li class="product-config__detail">11&quot; Ultra Retina XDR display with True Tone</li>
4160                
4161                  <li class="product-config__detail">Apple M5 chip</li>
4162                
4163                  <li class="product-config__detail">Face ID security</li>
4164                
4165                  <li class="product-config__detail">Apple Pencil Pro support</li>
4166                
4167                  <li class="product-config__detail">12MP Ultra Wide front camera</li>
4168                
4169                  <li class="product-config__detail">12MP Wide 4K capable rear camera</li>
4170                
4171              </ul>
4172            </div>
4173          
4174        
4175        
4176      </div>
4177      <div class="custom-product-content-wrapper-inner">
4178        <div id="klaviyo-custom-rating" class="product-rating">
4179          <span class="rating-loader"></span>
4180        </div>
4181
4182        
4183<div
4184    id="warranty-modal-warranty_modal_Dt8Edm"
4185    class="warranty-modal"
4186    role="dialog"
4187    aria-modal="true"
4188    aria-labelledby="warranty-modal-title-warranty_modal_Dt8Edm"
4189    aria-hidden="true"
4190    hidden
4191    
4192  >
4193    <div class="warranty-modal__backdrop" data-warranty-modal-close tabindex="-1"></div>
4194    <div class="warranty-modal__panel">
4195      <button
4196        type="button"
4197        class="warranty-modal__close"
4198        data-warranty-modal-close
4199        aria-label="Close"
4200      >
4201        <span aria-hidden="true">&times;</span>
4202      </button>
4203
4204      <h2 id="warranty-modal-title-warranty_modal_Dt8Edm" class="warranty-modal__title">
4205        Extended Warranty Add-Ons
4206      </h2>
4207
4208      <div class="warranty-modal__intro">
4209        <div class="warranty-modal__logo"><img
4210              src="//ipowerresale.com/cdn/shop/files/Frame_2.png?v=1774563868&width=160"
4211              alt=""
4212              width="80"
4213              height="80"
4214              loading="lazy"
4215              class="warranty-modal__logo-img"
4216            ></div>
4217        <div class="warranty-modal__description rte">
4218          <p>iPowerResale guarantees the Apple-branded hardware product and Apple-branded accessories contained in the original packaging against defects in materials and workmanship when used normally (see <a href="#" title="#">Terms of Limited Warranty for more information</a>)</p>
4219        </div>
4220      </div><div class="warranty-modal__additional rte">
4221          <p>Warranty does not cover</p><ul><li>Product that is oxidized/has liquid damage</li><li>Damage or failure arising out of an accident </li><li>One or several components of the products were manipulated by the buyer or by a third party not authorized by iPowerResale in connection with the defect for which the buyer seeks warranty coverage</li><li>Damage or failures arising out of a misuse, abuse, neglect, mishandling, misapplication, faulty installation, improper maintenance, or improper voltage supply<br/><br/></li></ul>
4222        </div><div class="warranty-modal__product-row">
4223          <span class="warranty-modal__product-title">3-year Extended Warranty</span>
4224          <div class="warranty-modal__product-actions">
4225            <span class="warranty-modal__product-price">$249.00</span>
4226            <label class="warranty-modal__checkbox-label" for="warranty-modal-check-warranty_modal_Dt8Edm">
4227              <input
4228                type="checkbox"
4229                class="warranty-modal__checkbox"
4230                id="warranty-modal-check-warranty_modal_Dt8Edm"
4231                data-warranty-modal-checkbox
4232                
4233              >
4234              <span class="warranty-modal__checkbox-ui" aria-hidden="true"></span>
4235              <span class="warranty-modal__visually-hidden">Select add-on</span>
4236            </label>
4237          </div>
4238        </div><div class="warranty-modal__footer">
4239        <button type="button" class="warranty-modal__btn warranty-modal__btn--skip" data-warranty-modal-close>
4240          Skip for now
4241        </button>
4242        <button
4243          type="button"
4244          class="warranty-modal__btn warranty-modal__btn--primary"
4245          
4246            data-warranty-modal-add
4247            data-variant-id="42954528719017"
4248            disabled
4249          
4250        >Add to cart
4251</button>
4252      </div>
4253    </div>
4254  </div>
4255<div >
4256                
4257                
4257<script id="option-help-data" type="application/json">
4258                  {"custom_cosmetics": {
4259                          "title": "Which is right for you?",
4260                          "description": "\u003cp\u003eWe employ a letter grading system to assess the cosmetic condition of each of our machines. Our grading scale ranges from Open Box, which represents the highest quality, to C, indicating a slightly lower cosmetic condition.\u003c\/p\u003e\u003cp\u003e\u003cem\u003ePlease note: This grading system is ONLY describing the cosmetic condition of the machine – all of our machines are tested in-house by Apple-certified technicians and are guaranteed functional.\u003c\/em\u003e\u003c\/p\u003e",
4261                          "images": [],
4262                          "page_content": "\u003cdiv class=\"product__accordion accordion\" id=\"learnMoreAccordion\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eAS-IS+\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003eAn AS-IS+ device is brand-new, sealed from the manufacturer, in a plain white box. They are typically surplus or overstock devices meant for warranty replacements or wholesale markets, and come without the manufacturer's warranty. We still provide a full year of warranty.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"product__accordion accordion\" id=\"learnMoreAccordion\"\u003e\n\u003cdetails open=\"\"\u003e\n\u003csummary\u003eOpen Box\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003eAn open box unit from iPowerResale is comparable to a 'mint condition' or 'like new' product. These devices are returned to the manufacturer or retailer for reasons such as buyer's remorse and then undergo extensive inspection and testing to ensure their functionality. With an open-box unit, customers should not expect to find any noticeable cosmetic blemishes. Please note that the item will come with OEM packaging though the packaging itself may show signs of distress.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"learn-more__accordion-img--wrap\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Laptop_OB.jpg?v=1683673684\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_OB_1.jpg?v=1683673684\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_OB_2.jpg?v=1683673683\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Watch_OB.jpg?v=1683673684\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_OB_1.jpg?v=1683673684\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_OB_2.jpg?v=1683673684\" class=\"learn-more__accordion-img\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"product__accordion accordion\" id=\"learnMoreAccordion\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eGrade A - Excellent\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003eA Grade A unit is generally considered 'very good' or 'like new.' Please note that this does not mean that a machine will come with OEM packaging. A Grade A cosmetic condition indicates that there may be very few and faint scratches or scuffs, if any. While a Grade A machine will not be flawless, you should not expect to find any significant, noticeable cosmetic blemishes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"learn-more__accordion-img--wrap\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Laptop_A.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_A_1.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_A_2.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Watch_A.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_A_1.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_A_2.jpg?v=1683674094\" class=\"learn-more__accordion-img\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"product__accordion accordion\" id=\"learnMoreAccordion\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eGrade B - Fair\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003eFor this cosmetic grade, cosmetic blemishes will be present and noticeable. These blemishes include scratches, scuffs, and nicks. Minor denting is possible, although this does not include large dents. Blemishes might occur more noticeably on areas that are not as often seen (such as the bottom of a laptop or desktop), but can be present on other areas of the machine. Keys may be slightly worn. A Grade B unit would be equivalent to a 'good' condition\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"learn-more__accordion-img--wrap\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Laptop_B.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_B_1.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPad_B_2.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/Watch_B.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_B_1.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPhone_B_2.jpg?v=1683674336\" class=\"learn-more__accordion-img\"\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"learn-more__contact product__accordion accordion\" id=\"learnMoreAccordion\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eHave a Question?\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"learn-more__contact-info accordion__content__delimiter-item\"\u003eOur group of dedicated Apple experts would be happy to help you with any questions. Our goal is to make buying an Apple as easy as possible for our customers.\u003c\/p\u003e\n\u003cp class=\"learn-more__contact-number accordion__content__delimiter-item\"\u003e1-805-745-8587\u003c\/p\u003e\n\u003cp class=\"learn-more__contact-dates accordion__content__delimiter-item\"\u003eMonday - Friday, 9am - 5pm PST.\u003c\/p\u003e\n\u003ca class=\"button button--primary\" href=\"\/pages\/contact\/\" target=\"_blank\"\u003eContact Us\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e"
4263                        },"custom_cpu": {
4264                          "title": "Which is right for you?",
4265                          "description": "\u003cp\u003eHigher core counts are for users who need speed and power — video editors, developers, 3D designers, or gamers running intensive workloads.\u003c\/p\u003e\u003cp\u003eLower core counts are better for users who primarily browse, stream, email, and work with standard productivity tools.\u003c\/p\u003e",
4266                          "images": [],
4267                          "page_content": null
4268                        },"cql_ram": {
4269                          "title": "Which is right for you?",
4270                          "description": "\u003cp\u003eLarger memory (RAM) is for users who multitask heavily, run demanding applications, or keep many browser tabs and creative tools open at once.\u003c\/p\u003e\u003cp\u003eSmaller memory (RAM) is better for users who focu
4270s on everyday tasks like browsing, streaming, and productivity apps without noticing slowdowns.\u003c\/p\u003e",
4271                          "images": [],
4272                          "page_content": null
4273                        },"cql_storage": {
4274                          "title": "Which is right for you?",
4275                          "description": "\u003cp\u003eLarger storage is for users who work with large files — photos, videos, design projects, or games — and prefer keeping content stored locally.\u003c\/p\u003e\u003cp\u003eSmaller storage is better for users who mostly use cloud services and online storage. Check how much space you currently use and whether most of your content lives in the cloud before deciding.\u003c\/p\u003e",
4276                          "images": [],
4277                          "page_content": null
4278                        },"custom_gpu": {
4279                          "title": "Which is right for you?",
4280                          "description": "\u003cp\u003eHigher core counts are for users who need speed and power — video editors, developers, 3D designers, or gamers running intensive workloads.\u003c\/p\u003e\u003cp\u003eLower core counts are better for users who primarily browse, stream, email, and work with standard productivity tools.\u003c\/p\u003e",
4281                          "images": [],
4282                          "page_content": null
4283                        },"custom_connectivity": {
4284                          "title": "Which is right for you?",
4285                          "description": "",
4286                          "images": [],
4287                          "page_content": "\u003cdiv class=\"product__accordion accordion\" id=\"wirelessConnectivityAccordion\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eWireless Connectivity (iPad)\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003e\u003cstrong\u003eWi‑Fi + Cellular\u003c\/strong\u003e is for users who need reliable internet access everywhere — frequent travelers, commuters, or those working outside Wi‑Fi networks.\u003c\/p\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003e\u003cstrong\u003eWi‑Fi \u003c\/strong\u003eonly is better for users who mainly use their device at home, school, or the office, where Wi‑Fi connections are always available.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"product__accordion accordion\" id=\"wirelessConnectivityAccordionWatch\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eWireless Connectivity (Watch)\u003c\/summary\u003e\n\u003cdiv class=\"accordion__content rte accordion__delimiter\"\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003e\u003cstrong\u003eGPS + Cellular\u003c\/strong\u003e is for users who want full freedom from their phone — you can take calls, stream music, and get messages even when your iPhone isn’t with you. Perfect for runners, travelers, or anyone who likes to stay connected on the go.\u003c\/p\u003e\n\u003cp class=\"accordion__content__delimiter-item\"\u003e\u003cstrong\u003eGPS only\u003c\/strong\u003e is better for users who usually have their iPhone nearby. It offers all the same fitness and smart features while keeping things simple and more affordable.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e"
4288                        }}
4289                </script>
4289
4290                
4291
4292<div id="option-help-modal" class="ohm" role="dialog" aria-modal="true" style="display: none;">
4293  <div class="ohm__backdrop" data-ohm-close>&nbsp;</div>
4294  <div class="ohm__container">
4295    <button class="ohm__close" data-ohm-close aria-label="Close modal">
4296      <svg xmlns="http://www.w3.org/2000/svg" width="8" height="9" viewBox="0 0 8 9" fill="none">
4297        <path d="M1.54563 -0.000222206L3.63654 3.56796L5.72745 -0.000222206H7.2729L4.45472 4.36341L7.2729 8.72705H5.72745L3.63654 5.34069L1.54563 8.72705H0.000177562L2.7729 4.36341L0.000177562 -0.000222206H1.54563Z" fill="black"/>
4298      </svg>
4299    </button>
4300    <div class="ohm__content">
4301      <h2 id="ohm-title" class="ohm__title"></h2>
4302      <div id="ohm-images" class="ohm__images-wrap" style="display:none;"></div>
4303      <div id="ohm-description" class="ohm__description"></div>
4304      <div id="ohm-page-content" class="ohm__page-content" style="display:none;"></div>
4305    </div>
4306  </div>
4307</div>
4308
4309<style>
4310  .ohm {
4311    position: fixed;
4312    top: 0;
4313    left: 0;
4314    right: 0;
4315    bottom: 0;
4316    z-index: 9999;
4317    display: flex;
4318    align-items: center;
4319    justify-content: center;
4320    padding: 20px;
4321  }
4322  .ohm__backdrop {
4323    position: absolute !important;
4324    top: 0;
4325    left: 0;
4326    right: 0;
4327    bottom: 0;
4328    background: #D9D9D9E5;
4329    backdrop-filter: blur(6px);
4330    -webkit-backdrop-filter: blur(6px);
4331    cursor: pointer;
4332    display: block !important;
4333    visibility: visible !important;
4334    opacity: 1 !important;
4335    font-size: 0;
4336    line-height: 0;
4337  }
4338  .ohm__container {
4339    position: relative;
4340    background: #fff;
4341    border-radius: 30px;
4342    max-width: 500px;
4343    width: 100%;
4344    max-height: 85vh;
4345    overflow: hidden;
4346    display: flex;
4347    flex-direction: column;
4348    animation: ohmSlideUp 0.25s ease;
4349    border: 1px solid #F5F5F5;
4350  }
4351  @keyframes ohmSlideUp {
4352    from {
4353      opacity: 0;
4354      transform: translateY(20px);
4355    }
4356    to {
4357      opacity: 1;
4358      transform: translateY(0);
4359    }
4360  }
4361  .ohm__close {
4362    position: absolute;
4363    top: 16px;
4364    right: 16px;
4365    background: transparent;
4366    border: none;
4367    padding: 8px;
4368    cursor: pointer;
4369    z-index: 10;
4370    color: #1d1d1f;
4371    transition: all 0.2s;
4372    border-radius: 50%;
4373  }
4374  .ohm__close:hover {
4375    background: #f5f5f7;
4376  }
4377  .ohm__content {
4378    overflow-y: auto;
4379    padding: 30px;
4380  }
4381  .ohm__title {
4382    font-size: 36px;
4383    font-weight: 400;
4384    line-height: 36px;
4385    letter-spacing: -0.03em;
4386    color: #000000;
4387    margin: 0 0 20px 0;
4388    padding-right: 32px;
4389    text-transform: none !important;
4390  }
4391  .ohm__images-wrap {
4392    display: flex;
4393    gap: 12px;
4394    margin-bottom: 20px;
4395    justify-content: center;
4396    flex-wrap: wrap;
4397  }
4398  .ohm__image {
4399    max-width: 30%;
4400    height: auto;
4401    display: block;
4402    border-radius: 12px;
4403    object-fit: contain;
4404  }
4405  .ohm__images-wrap .ohm__image:only-child {
4406    max-width: 30%;
4407  }
4408  .ohm__description {
4409    font-size: 16px;
4410    line-height: 1.65;
4411    color: #333;
4412  }
4413  .ohm__description p {
4414    margin: 0 0 12px 0;
4415    font-size: 13px;
4416    line-height: 16.25px;
4417    font-weight: 400;
4418    color: #000000;
4419    letter-spacing: 0;
4420    font-family: 'Inter-Regular';
4421  }
4422  .ohm__description p:last-child {
4423    margin-bottom: 0;
4424  }
4425  .ohm__description a {
4426    text-decoration: underline;
4427    color: #0066cc;
4428  }
4429  .ohm__page-content {
4430    font-size: 16px;
4431    line-height: 1.65;
4432    color: #000;
4433    margin-top: 20px;
4434    padding-top: 20px;
4435  }
4436  .ohm__page-content a {
4437    text-decoration: underline;
4438    color: #0066cc;
4439  }
4440  .ohm__page-content img {
4441    max-width: 30%;
4442    height: auto;
4443    border-radius: 8px;
4444    display: inline-block;
4445    vertical-align: top;
4446    object-fit: contain;
4447  }
4448  .accordion__content__delimiter-item {
4449    font-size: 13px;
4450    line-height: 16.25px;
4451    font-weight: 400;
4452    color: #000000;
4453    letter-spacing: 0;
4454    font-family: 'Inter-Regular';
4455  }
4456  .ohm__page-content details {
4457    border-bottom: 1px solid #e5e5e5;
4458  }
4459  .ohm__page-content details:first-child {
4460    border-top: 1px solid #e5e5e5;
4461  }
4462  .ohm__page-content summary {
4463    display: flex;
4464    justify-content: space-between;
4465    align-items: center;
4466    padding: 18px 0;
4467    cursor: pointer;
4468    list-style: none;
4469    font-size: 13px;
4470    line-height: 16.25px;
4471    font-weight: 400;
4472    color: #000000;
4473    letter-spacing: 0;
4474    font-family: 'Inter-Regular';
4475  }
4476  .ohm__page-content summary::-webkit-details-marker {
4477    display: none;
4478  }
4479  .ohm__page-content summary::marker {
4480    display: none;
4481    content: '';
4482  }
4483  .ohm__page-content summary::after {
4484    content: '';
4485    width: 12px;
4486    height: 12px;
4487    border-right: 2px solid #333;
4488    border-bottom: 2px solid #333;
4489    transform: rotate(45deg);
4490    transition: transform 0.2s ease;
4491    flex-shrink: 0;
4492    margin-left: 16px;
4493  }
4494  .ohm__page-content details[open] > summary::after {
4495    transform: rotate(-135deg);
4496  }
4497  .ohm__page-content details > div,
4498  .ohm__page-content details > p {
4499    padding: 0 0 18px 0;
4500    font-size: 15px;
4501    line-height: 1.6;
4502    color: #555;
4503  }
4504  .ohm__page-content strong,
4505  .ohm__page-content b {
4506    font-weight: 700;
4507  }
4508  .ohm__page-content em,
4509  .ohm__page-content i {
4510    font-style: italic;
4511  }
4512  .ohm__page-content h1,
4513  .ohm__page-content h2,
4514  .ohm__page-content h3,
4515  .ohm__page-content h4,
4516  .ohm__page-content h5,
4517  .ohm__page-content h6 {
4518    font-weight: 600;
4519    color: #1d1d1f;
4520    margin: 0 0 8px 0;
4521  }
4522  .ohm__page-content .button,
4523  .ohm__page-content a.button,
4524  .ohm__page-content [class*='btn'] {
4525    display: inline-block;
4526    text-decoration: none !important;
4527    margin-top: 8px;
4528    border: none;
4529    border-radius: 20px;
4530    background: #1d7f9a;
4531    padding: 11px;
4532    color: #fff;
4533    transition: background .2s ease;
4534    font-weight: 500;
4535    font-size: 16px;
4536    line-height: 20px;
4537    letter-spacing: 1.6px;
4538    text-transform: uppercase;
4539    min-height: 42px;
4540  }
4541  .ohm__page-content ul,
4542  .ohm__page-content ol {
4543    padding-left: 20px;
4544    margin: 8px 0;
4545  }
4546
4547  @media (max-width: 768px) {
4548    .ohm {
4549      padding: 0;
4550      align-items: flex-end;
4551    }
4552    .ohm__container {
4553      max-width: 100%;
4554      max-height: 90vh;
4555      border-radius: 16px 16px 0 0;
4556      animation: ohmSlideUpMobile 0.25s ease;
4557    }
4558    @keyframes ohmSlideUpMobile {
4559      from {
4560        opacity: 0;
4561        transform: translateY(100%);
4562      }
4563      to {
4564        opacity: 1;
4565        transform: translateY(0);
4566      }
4567    }
4568    .ohm__content {
4569      padding: 20px;
4570    }
4571    .ohm__title {
4572      font-size: 22px;
4573    }
4574    .ohm__description {
4575      font-size: 15px;
4576    }
4577  }
4578</style>
4579
4580<script>
4581  (function () {
4582    var modal = document.getElementById('option-help-modal');
4583    if (!modal) return;
4584
4585    var helpData = {};
4586    try {
4587      var dataEl = document.getElementById('option-help-data');
4588      if (dataEl) helpData = JSON.parse(dataEl.textContent);
4589    } catch (e) {}
4590
4591    // Open modal for a given option key
4592    window.openOptionHelpModal = function (optionKey) {
4593      var keyHyphen = optionKey
4594        .toLowerCase()
4595        .replace(/[^a-z0-9]+/g, '-')
4596        .replace(/^-|-$/g, '');
4597      var keyDirect = optionKey.toLowerCase();
4598      var data = helpData[keyHyphen] || helpData[keyDirect];
4599      if (!data) return;
4600
4601      document.getElementById('ohm-title').textContent = data.title || optionKey;
4602      document.getElementById('ohm-description').innerHTML = data.description || '';
4603
4604      var imagesWrap = document.getElementById('ohm-images');
4605      imagesWrap.innerHTML = '';
4606      var images = data.images || [];
4607      if (images.length > 0) {
4608        images.forEach(function (src) {
4609          var img = document.createElement('img');
4610          img.src = src;
4611          img.alt = data.title || '';
4612          img.className = 'ohm__image';
4613          imagesWrap.appendChild(img);
4614        });
4615        imagesWrap.style.display = 'flex';
4616      } else {
4617        imagesWrap.style.display = 'none';
4618      }
4619
4620      var pageContentEl = document.getElementById('ohm-page-content');
4621      if (data.page_content) {
4622        pageContentEl.innerHTML = data.page_content;
4623        pageContentEl.style.display = 'block';
4624      } else {
4625        pageContentEl.innerHTML = '';
4626        pageContentEl.style.display = 'none';
4627      }
4628
4629      modal.style.display = 'flex';
4630      document.body.style.overflow = 'hidden';
4631    };
4632
4633    function closeModal() {
4634      modal.style.display = 'none';
4635      document.body.style.overflow = '';
4636    }
4637
4638    modal.querySelectorAll('[data-ohm-close]').forEach(function (btn) {
4639      btn.addEventListener('click', closeModal);
4640    });
4641
4642    document.addEventListener('keydown', function (e) {
4643      if (e.key === 'Escape' && modal.style.display === 'flex') {
4644        closeModal();
4645      }
4646    });
4647  })();
4648</script>
4648
4649
4650                <div id="react-app-custom" class="react-app-custom"></div>
4651                
4652
4653
4654
4655
4656  
4657  
4658  
4659  
4660  
4661  
4662  
4663    
4664  
4665
4666  
4667    
4667<script>
4668
4669      async function fetchAllChildCollectionProducts() {
4670        const endpoint = `https://ipowerresale.myshopify.com/api/2025-07/graphql.json`;
4671        const xShopifyStorefrontAccessToken = '8453b98395db3d33cb8995e0c50612e6';
4672
4673            // Define base identifiers that are always needed
4674            const baseIdentifiers = [
4675              { namespace: "cql", key: "color" },
4676              { namespace: "cql", key: "parent_product" },
4677              { namespace: "hidden", key: "group_6" },
4678              { namespace: "hidden", key: "group_5" },
4679              { namespace: "hidden", key: "group_4" },
4680              { namespace: "hidden", key: "group_3" },
4681              { namespace: "hidden", key: "group_2" },
4682              { namespace: "hidden", key: "group_1" }
4683            ];
4684
4685            // Get dynamic identifiers from the parent product's filter order
4686            const filterOrderData = {"mfield_cql_color":{"1":"Space Black","2":"Silver"},"mfield_custom_cosmetics":{"1":"New - Sealed in Box","2":"Open Box - Like New","3":"Grade A - Excellent","4":"Grade B - Fair"},"mfield_cql_storage":{"1":"128GB storage","2":"256GB storage","3":"512GB storage","4":"1TB storage","5":"2TB storage"},"mfield_custom_connectivity":{"1":"Wi-Fi","2":"Wi-Fi + Cellular"}};
4687            const dynamicIdentifiers = [];
4688
4689            if (filterOrderData) {
4690              Object.keys(filterOrderData).forEach(key => {
4691                // Expected format: mfield_namespace_key
4692                if (key.startsWith('mfield_')) {
4693                  const parts = key.replace('mfield_', '').split('_');
4694                  if (parts.length >= 2) {
4695                    const namespace = parts[0];
4696                    const fieldKey = parts.slice(1).join('_');
4697                    dynamicIdentifiers.push({ namespace: namespace, key: fieldKey });
4698                  }
4699                }
4700              });
4701            }
4702
4703            // Merge and deduplicate identifiers
4704            const allIdentifiers = [...baseIdentifiers];
4705            
4706            // Add dynamic ones if they don't exist yet
4707            dynamicIdentifiers.forEach(dynamicId => {
4708              const exists = allIdentifiers.some(id => 
4709                id.namespace === dynamicId.namespace && id.key === dynamicId.key
4710              );
4711              if (!exists) {
4712                allIdentifiers.push(dynamicId);
4713              }
4714            });
4715
4716            // Add hardcoded fallback list for backward compatibility if filter_order is missing specific common fields
4717            const fallbackList = [
4718              { namespace: "custom", key: "cosmetics" },
4719              { namespace: "custom", key: "cpu" },
4720              { namespace: "cql", key: "ram" },
4721              { namespace: "cql", key: "storage" },
4722              { namespace: "custom", key: "gpu" },
4723              { namespace: "cql", key: "case_size" },
4724              { namespace: "custom", key: "connectivity" },
4725              { namespace: "custom", key: "band_size" },
4726              { namespace: "custom", key: "model" },
4727              { namespace: "custom", key: "ethernet" },
4728              { namespace: "custom", key: "screen_type" },
4729              { namespace: "custom", key: "afterburner" },
4730              { namespace: "cql", key: "addon_product" }
4731            ];
4732
4733            fallbackList.forEach(fallbackId => {
4734               const exists = allIdentifiers.some(id => 
4735                id.namespace === fallbackId.namespace && id.key === fallbackId.key
4736              );
4737              if (!exists) {
4738                allIdentifiers.push(fallbackId);
4739              }
4740            });
4741
4742            // Generate the GraphQL identifiers string
4743            const identifiersString = allIdentifiers.map(id => 
4744              `{ namespace: "${id.namespace}", key: "${id.key}" }`
4745            ).join(',\n');
4746
4747        const getChildCollectionProductsGql = (cursor = null) => `
4748              query getCollectionProducts {
4749                collection(id: "gid://shopify/Collection/320571900073") {
4750                  products(first: 250${cursor ? `, after: "${cursor}"` : ''} filters:{available:true}) {
4751                    pageInfo {
4752                      hasNextPage
4753                      endCursor
4754                    }
4755                    nodes{
4756                    id
4757                    title
4758                    handle
4759                    productType
4760                    variants(first:1){
4761                      nodes{
4762                        price{
4763                          amount
4764                        }
4765                        availableForSale
4766                        quantityAvailable
4767                      }
4768                    }
4769                    metafields(identifiers: [
4770                      ${identifiersString}
4771                    ]) {
4772                        namespace
4773                        key
4774                        value               
4775                    }
4776                  }  
4777                }
4778              }
4779            }`;
4780
4781            let hasNextPage = true;
4782            let endCursor = null;
4783            let allProducts = [];
4784
4785            try {
4786              while (hasNextPage) {
4787                const response = await fetch(endpoint, {
4788                  method: 'POST',
4789                  headers: {
4790                    'Content-Type': 'application/json',
4791                    'X-Shopify-storefront-Access-Token': xShopifyStorefrontAccessToken
4792                  },
4793                  body: JSON.stringify({ query: getChildCollectionProductsGql(endCursor) })
4794                });
4795
4796                const result = await response.json();
4797
4798                if (result.errors) {
4799                  console.error('GraphQL errors:', result.errors);
4800                  break;
4801                }
4802
4803                const collection = result.data.collection;
4804                if (!collection) {
4805                  console.error('No collection found with that ID');
4806                  break;
4807                }
4808
4809                const { nodes, pageInfo } = collection.products;
4810                allProducts = allProducts.concat(nodes);
4811
4812                hasNextPage = pageInfo.hasNextPage;
4813                endCursor = pageInfo.endCursor;
4814              }
4815
4816              return allProducts;
4817
4818            } catch (error) {
4819              console.error('Error fetching collection products:', error);
4820            }
4821      }
4822
4823      (async () => {
4824        let allProducts = await fetchAllChildCollectionProducts();
4825        allProducts = allProducts.filter(product => product.variants.nodes[0].availableForSale);
4826        window.collectionAllProducts = allProducts;
4827      })();
4828
4829        // GraphQL-based Configurator Implementation
4830      (function() {
4831        // Parent product information
4832        const parentProductTitle = "iPad Pro 11-inch M5";
4833        const parentProductPrice = "$979.00";
4834        const learnMoreText = null;
4835        const initialFilterObject = {"0":{"filterField":"mfield_cql_parent_product","filterValue":"false"},"1":{"filterField":"product_type","filterValue":"iPad Pro"},"2":{"filterField":"mfield_hidden_group_4","filterValue":"true"},"3":{"filterField":"ss_available","filterValue":"1"},"4":{"filterField":"mfield_cql_case_size","filterValue":"11-inch"}} || {};
4836
4837        // Fetch addon product details by GIDs (called when a valid child product is selected)
4838        async function fetchAddonProducts(productGids) {
4839          if (!productGids || productGids.length === 0) return [];
4840
4841          const endpoint = `https://ipowerresale.myshopify.com/api/2025-07/graphql.json`;
4842          const token = '8453b98395db3d33cb8995e0c50612e6';
4843
4844          const query = `
4845            query getAddonProducts($ids: [ID!]!) {
4846              nodes(ids: $ids) {
4847                ... on Product {
4848                  id
4849                  title
4850                  description
4851                  handle
4852                  featuredImage {
4853                    url
4854                    altText
4855                  }
4856                  priceRange {
4857                    minVariantPrice {
4858                      amount
4859                      currencyCode
4860                    }
4861                  }
4862                }
4863              }
4864            }
4865          `;
4866
4867          try {
4868            const response = await fetch(endpoint, {
4869              method: 'POST',
4870              headers: {
4871                'Content-Type': 'application/json',
4872                'X-Shopify-Storefront-Access-Token': token
4873              },
4874              body: JSON.stringify({ query, variables: { ids: productGids } })
4875            });
4876
4877            const result = await response.json();
4878            if (result.errors) {
4879              console.error('Addon products GraphQL errors:', result.errors);
4880              return [];
4881            }
4882            return result.data.nodes.filter(Boolean);
4883          } catch (error) {
4884            console.error('Error fetching addon products:', error);
4885            return [];
4886          }
4887        }
4888        
4889
4890        // Parse metafield key to extract namespace and key
4891        // Example: "mfield_custom_connectivity" -> { namespace: "custom", key: "connectivity" }
4892        function parseMetafieldKey(mfieldKey) {
4893          // Remove "mfield_" prefix
4894          const withoutPrefix = mfieldKey.replace(/^mfield_/, '');
4895          
4896          // Split by underscore
4897          const parts = withoutPrefix.split('_');
4898          
4899          // First part is namespace, rest is key
4900          const namespace = parts[0];
4901          const key = parts.slice(1).join('_');
4902          
4903          return { namespace, key, fullKey: `${namespace}_${key}` };
4904        }
4905        
4906        // Data normalization functions for GraphQL response
4907        function normalizeMetafields(metafieldsArray) {
4908          const result = {};
4909          if (!metafieldsArray || !Array.isArray(metafieldsArray)) {
4910            return result;
4911          }
4912          
4913          metafieldsArray.forEach(field => {
4914            if (field && field.key && field.value !== null) {
4915              let key;
4916              
4917              if (field.namespace) {
4918                // Standard case: namespace is provided
4919                key = `${field.namespace}_${field.key}`;
4920              } 
4921              result[key] = field.value;
4922            }
4923          });
4924          
4925          return result;
4926        }
4927        
4928        function normalizeGraphQLProduct(gqlProduct) {
4929          if (!gqlProduct) {
4930            return null;
4931          }
4932          
4933          // Extract price and inventory from variants
4934          let price = '$0.00';
4935          let inventoryQuantity = 0;
4936          if (gqlProduct.variants && gqlProduct.variants.nodes && gqlProduct.variants.nodes.length > 0) {
4937            const variant = gqlProduct.variants.nodes[0];
4938            if (variant.price && variant.price.amount) {
4939              price = `$${parseFloat(variant.price.amount).toFixed(2)}`;
4940            }
4941            inventoryQuantity = variant.quantityAvailable != null ? variant.quantityAvailable : 99;
4942          }
4943          
4944          // Extract ID number from GraphQL ID
4945          const numericId = gqlProduct.id ? gqlProduct.id.split('/').pop() : 'unknown';
4946          
4947          // Normalize metafields
4948          const normalizedMetafields = normalizeMetafields(gqlProduct.metafields);
4949          
4950          const normalizedProduct = {
4951            id: numericId,
4952            title: gqlProduct.title || '',
4953            handle: gqlProduct.handle || '',
4954            url: `/products/${gqlProduct.handle || ''}`,
4955            product_type: gqlProduct.productType || '',
4956            available: true,
4957            price: price,
4958            compare_at_price: null,
4959            inventoryQuantity: inventoryQuantity,
4960            metafields: normalizedMetafields
4961          };
4962          
4963          return normalizedProduct;
4964        }
4965        
4966        // Wait for GraphQL data to be available
4967        function waitForGraphQLData(maxWaitTime = 10000) {
4968          return new Promise((resolve, reject) => {
4969            const startTime = Date.now();
4970            
4971            function checkData() {
4972              if (window.collectionAllProducts && Array.isArray(window.collectionAllProducts)) {
4973                resolve(window.collectionAllProducts);
4974                return;
4975              }
4976              
4977              if (Date.now() - startTime > maxWaitTime) {
4978                reject(new Error('GraphQL data loading timeout'));
4979                return;
4980              }
4981              
4982              setTimeout(checkData, 100);
4983            }
4984            
4985            checkData();
4986          });
4987        }
4988        
4989        // Show loading state UI
4990        function showLoadingState() {
4991          const container = document.getElementById('react-app-custom');
4992          if (!container) return;
4993          
4994          container.innerHTML = `
4995            <div class="configurator-loading">
4996              <div class="loading-content">
4997                <div class="loading-spinner">
4998                  <div class="spinner"></div>
4999                </div>
5000                <h3 class="loading-title">Loading Configurator Options...</h3>
5001                <p class="loading-description">Please wait while we load all available product configurations.</p>
5002              </div>
5003            </div>
5004          `;
5005        }
5006        
5007        // Show empty state UI
5008        function showEmptyState() {
5009          const container = document.getElementById('react-app-custom');
5010          if (!container) return;
5011          
5012          container.innerHTML = `
5013            <div class="configurator-error" style="text-align: center; padding: 60px 20px;">
5014              <div class="error-content">
5015                <h3 class="error-title" style="font-size: 28px; margin-bottom: 15px;">Sorry..This has been so popular we ran out!</h3>
5016                <p class="error-description" style="font-size: 18px;">Contact our sales team to be first in line when this is back in stock!</p>
5017              </div>
5018            </div>
5019          `;
5020        }
5021        
5022        // Show error state UI
5023        function showErrorState(error) {
5024          const container = document.getElementById('react-app-custom');
5025          if (!container) return;
5026          
5027          container.innerHTML = `
5028            <div class="configurator-error">
5029              <div class="error-content">
5030                <div class="error-icon">⚠️</div>
5031                <h3 class="error-title">
5031Unable to Load Configurator</h3>
5032                <p class="error-description">We're having trouble loading the product options. Please try refreshing the page.</p>
5033                <button class="error-retry-btn" onclick="location.reload()">Refresh Page</button>
5034              </div>
5035            </div>
5036          `;
5037          
5038          console.error('Configurator error:', error);
5039        }
5040
5041          // Build dynamic filter configuration based on available metafields
5042          function buildFilterConfigFromProducts(products) {           
5043            const filterConfig = {};
5044            const colorFilters = [];
5045            const otherFilters = [];
5046            const metafieldSet = new Set();
5047
5048            // Create a set of pre-defined filters to exclude
5049            const preDefinedFilters = new Set();
5050            if (initialFilterObject) {
5051              Object.values(initialFilterObject).forEach(condition => {
5052                if (condition.filterField) {
5053                  // Normalize the key: remove "mfield_" prefix
5054                  // Example: "mfield_cql_case_size" -> "cql_case_size"
5055                  const normalizedKey = condition.filterField.replace(/^mfield_/, '');
5056                  preDefinedFilters.add(normalizedKey);
5057                }
5058              });
5059            }
5060            
5061            // Collect all unique metafield keys from all products (excluding hidden namespace)
5062            products.forEach(product => {
5063              if (product.metafields) {
5064                Object.keys(product.metafields).forEach(metafieldKey => {
5065                  // Skip hidden namespace metafields, pre-defined filters, and addon_product (data-only, no UI)
5066                  if (!metafieldKey.startsWith('hidden_') && !metafieldKey.endsWith('_addon_product') && !preDefinedFilters.has(metafieldKey)) {
5067                    metafieldSet.add(metafieldKey);
5068                  }
5069                });
5070              }
5071            });
5072            
5073            // Create filter configuration for each detected metafield and separate color filters
5074            metafieldSet.forEach(metafieldKey => {
5075              const parts = metafieldKey.split('_');
5076              const namespace = parts[0];
5077              const key = parts.slice(1).join('_');
5078              
5079              // Create display name from key
5080              let displayName = toTitleCase(key.replace(/_/g, ' '));
5081              
5082              filterConfig[metafieldKey] = {
5083                namespace: namespace,
5084                key: key,
5085                displayName: displayName,
5086                values: new Set() // Will be populated with actual values
5087              };
5088              
5089              // Separate color filters from others
5090              if (isColorFilter(metafieldKey)) {
5091                colorFilters.push(metafieldKey);
5092              } else {
5093                otherFilters.push(metafieldKey);
5094              }
5095            });
5096            
5097            // Get custom sort order from parent product's cql.filter_order metafield
5098            const customSortOrder = getCustomSortOrder();
5099
5100            
5101
5102            // Create final filter keys array with custom sorting
5103            let filterKeys;
5104            if (customSortOrder && customSortOrder.length > 0) {
5105              // Use custom sort order
5106              const orderedFilters = [];
5107              const unorderedFilters = [];
5108              
5109              // First, add filters in the custom order
5110              customSortOrder.forEach(sortKey => {
5111                const matchingKey = Array.from(metafieldSet).find(metafieldKey => {
5112                  // Handle the key normalization as described:
5113                  // Remove "mfield_" prefix, split on "_", first part is namespace, rest is key
5114                  // Example: "mfield_custom_cosmetics" -> namespace: "custom", key: "cosmetics"
5115                  // Then reconstruct as "custom_cosmetics" to match sortKey format
5116                  
5117                  if (metafieldKey.startsWith('mfield_')) {
5118                    // Remove mfield_ prefix and reconstruct
5119                    const withoutMfield = metafieldKey.substring(7); // Remove "mfield_"
5120                    return withoutMfield === sortKey.substring(7); // Compare without "mfield_"
5121                  } else {
5122                    // For other namespaces, do direct comparison
5123                    const parts = metafieldKey.split('_');
5124                    const namespace = parts[0];
5125                    const key = parts.slice(1).join('_');
5126                    const normalizedKey = `${namespace}_${key}`;
5127                    return normalizedKey === sortKey;
5128                  }
5129                });
5130                
5131                if (matchingKey) {
5132                  orderedFilters.push(matchingKey);
5133                }
5134              });
5135              
5136              // Add any remaining filters that weren't in the custom order
5137              metafieldSet.forEach(metafieldKey => {
5138                if (!orderedFilters.includes(metafieldKey)) {
5139                  if (isColorFilter(metafieldKey)) {
5140                    // Keep color filters at the top if not in custom order
5141                    unorderedFilters.unshift(metafieldKey);
5142                  } else {
5143                    unorderedFilters.push(metafieldKey);
5144                  }
5145                }
5146              });
5147              
5148              filterKeys = [...orderedFilters, ...unorderedFilters];
5149            } else {
5150              // Fallback to original behavior: color filters first, then others
5151              filterKeys = [...colorFilters, ...otherFilters];
5152              console.log('Final filter order (default):', filterKeys);
5153            }
5154            
5155            return { filterConfig, filterKeys };
5156          }
5157          
5158          // Get custom sort order from parent product's metafield
5159          function getCustomSortOrder() {
5160            try {
5161              // Get the filter order from parent product metafield
5162              const filterOrderData = {"mfield_cql_color":{"1":"Space Black","2":"Silver"}
5162,"mfield_custom_cosmetics":{"1":"New - Sealed in Box","2":"Open Box - Like New","3":"Grade A - Excellent","4":"Grade B - Fair"},"mfield_cql_storage":{"1":"128GB storage","2":"256GB storage","3":"512GB storage","4":"1TB storage","5":"2TB storage"},"mfield_custom_connectivity":{"1":"Wi-Fi","2":"Wi-Fi + Cellular"}};
5163              
5164              if (!filterOrderData) {
5165                console.log('No custom filter order found, using default sorting');
5166                return null;
5167              }
5168              // Extract the keys in order based on their numeric values
5169              const sortOrder = [];
5170              const sortEntries = Object.entries(filterOrderData);
5171              
5172              // Sort by the numeric order values
5173              sortEntries.sort((a, b) => {
5174                const orderA = Math.min(...Object.keys(a[1]).map(k => parseInt(k)));
5175                const orderB = Math.min(...Object.keys(b[1]).map(k => parseInt(k)));
5176                return orderA - orderB;
5177              });
5178              
5179              // Extract the keys in sorted order
5180              sortEntries.forEach(([key, values]) => {
5181                // Replace 'mfield' with empty string when adding to sort order
5182                const cleanKey = key.replace('mfield_', '');
5183                sortOrder.push(cleanKey);
5184              });
5185              
5186              return sortOrder;
5187              
5188            } catch (error) {
5189              console.error('Error parsing custom filter order:', error);
5190              return null;
5191            }
5192          }
5193          
5194          // Initialize dynamic selected options based on detected filters
5195          function initializeSelectedOptions(filterKeys) {
5196            const selectedOptions = {};
5197            filterKeys.forEach(key => {
5198              selectedOptions[key] = null;
5199            });
5200            return selectedOptions;
5201          }
5202        
5203        // Helper functions (defined early to avoid reference errors)
5204        // Determine if a filter is a color filter
5205        const isColorFilter = (filterKey) => {
5206          return filterKey.endsWith('_color') || filterKey === 'color';
5207        };
5208
5209        // Determine if a filter is cosmetics filter
5210        const isCosmeticsFilter = (filterKey) => {
5211          return filterKey.includes('cosmetics');
5212        };
5213
5214        // Build "Which is right?" link for an option if help data exists
5215        const optionHelpData = (() => {
5216          try {
5217            const el = document.getElementById('option-help-data');
5218            return el ? JSON.parse(el.textContent) : {};
5219          } catch (e) { return {}; }
5220        })();
5221
5222        const getHelpLink = (filterKey) => {
5223          const keyHyphen = filterKey.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
5224          const keyDirect = filterKey.toLowerCase();
5225          const matchedKey = optionHelpData[keyHyphen] ? keyHyphen : (optionHelpData[keyDirect] ? keyDirect : null);
5226
5227          if (!matchedKey) return '';
5228          return `<a href="#" class="learn-more" onclick="event.preventDefault(); openOptionHelpModal('${filterKey}');">Which is right?</a>`;
5229        };
5230        
5231        // Convert color name to Shopify handle format (matches Liquid's | handle filter)
5232        function toHandle(str) {
5233          return str.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '');
5234        }
5235
5236        // Convert string to Title Case, preserving known acronyms
5237        const ACRONYMS = ['cpu', 'gpu', 'ram', 'ssd', 'hdd', 'nvme', 'usb', 'hdmi', 'lcd', 'led', 'tb', 'gb'];
5238        function toTitleCase(str) {
5239          if (!str) return '';
5240          return str.replace(/\w+/g, word => {
5241            if (ACRONYMS.includes(word.toLowerCase())) return word.toUpperCase();
5242            return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
5243          });
5244        }
5245
5246        // Get color hex value from theme swatches (custom-product section blocks)
5247        // Format price: remove .00 decimals, keep others like .50, .99
5248        function formatPrice(priceStr) {
5249          if (!priceStr) return priceStr;
5250          return priceStr.replace(/\.00$/, '');
5251        }
5252
5253        const swatchesEl = document.getElementById('swatches-data');
5254        const swatchesData = swatchesEl ? JSON.parse(swatchesEl.textContent) : {};
5255
5256        function getColorHex(colorName) {
5257          const handle = toHandle(colorName);
5258
5259          // Exact handle match
5260          if (swatchesData[handle]) {
5261            return swatchesData[handle].hexValue;
5262          }
5263
5264          // Partial match (for complex names like "Silver - Denim Band")
5265          for (const [key, swatch] of Object.entries(swatchesData)) {
5266            if (key.includes(handle) || handle.includes(key)) {
5267              return swatch.hexValue;
5268            }
5269          }
5270
5271          return '#cccccc';
5272        }
5273        
5274        function checkIfChildrenQualifiedparentChecks(products) {
5275
5276          
5277          // Filter out ss_available, mfield_cql_parent_product and product_type, keep only metafield conditions
5278          const filteredConditions = Object.values(initialFilterObject).filter(condition => {
5279            return condition.filterField !== 'ss_available' && 
5280                   condition.filterField !== 'product_type' &&
5281                   condition.filterField !== 'mfield_cql_parent_product';
5282          });
5283
5284          const normalizedConditions = filteredConditions.map(condition => {
5285            // Parse the filterField to extract namespace and key
5286            // Remove "mfield_" prefix and split by underscore
5287            const withoutPrefix = condition.filterField.replace(/^mfield_/, '');
5288            const parts = withoutPrefix.split('_');
5289            
5290            // First part is namespace, rest is key
5291            const namespace = parts[0];
5292            const key = parts.slice(1).join('_');
5293            
5294            // Combine namespace and key as the normalized key
5295            const normalizedKey = `${namespace}_${key}`;
5296            
5297            return {
5298              normalizedKey: normalizedKey,
5299              filterValue: condition.filterValue
5300            };
5301          });
5302          
5303          let qualifiedChildren = []
5304          const conditionLength = normalizedConditions.length
5305          products.forEach(product => {
5306            let conditionMet = 0
5307            normalizedConditions.forEach(condition => {
5308              if (String(product.metafields[condition.normalizedKey]).toLowerCase().trim() == String(condition.filterValue).toLowerCase().trim()) {
5309                conditionMet++;
5310              }
5311            })
5312            if (conditionMet === conditionLength) {
5313              qualifiedChildren.push(product)
5314            }
5315          })
5316
5317          
5318          
5319          return qualifiedChildren
5320        }
5321        
5322        // Main configurator initialization
5323        async function initializeConfigurator() {
5324          try {
5325            // Show loading state immediately
5326            showLoadingState();
5327            // Wait for GraphQL data
5328            const gqlProducts = await waitForGraphQLData();
5329
5330            // Normalize GraphQL products to match expected structure
5331            let normalizedProducts = gqlProducts.map(normalizeGraphQLProduct).filter(Boolean);
5332
5333            if (normalizedProducts.length === 0) {
5334              console.log('No valid products found, showing empty state');
5335              showEmptyState();
5336              return;
5337            }
5338            
5339            console.log(`SNR====>>>> Successfully normalized ${normalizedProducts.length} products`, normalizedProducts);
5340
5341                        
5342            const qualifiedChildren = checkIfChildrenQualifiedparentChecks(normalizedProducts)
5343
5344            normalizedProducts = qualifiedChildren
5345
5346            console.log("==> qualified children", normalizedProducts)
5347
5348            // Check if there are no qualified children after filtering
5349            if (normalizedProducts.length === 0) {
5350              console.log('No qualified children found, showing empty state');
5351              showEmptyState();
5352              return;
5353            }
5354
5355            // Build filter configuration dynamically from available metafields
5356            const { filterConfig, filterKeys } = buildFilterConfigFromProducts(normalizedProducts);
5357            
5358            // Get option sort order from metafield
5359            const optionSortOrder = getOptionSortOrder();
5360            
5361            // Initialize selected options based on detected filters
5362            const selectedOptions = initializeSelectedOptions(filterKeys);
5363            
5364            // Track the most recently changed option for smart highlighting
5365            const lastChangedOption = { key: null, value: null };
5366            
5367            // Store globally for other functions
5368            window.configuratorData = {
5369              products: normalizedProducts,
5370              filterConfig: filterConfig,
5371              filterKeys: filterKeys,
5372              selectedOptions: selectedOptions,
5373              lastChangedOption: lastChangedOption,
5374              optionSortOrder: optionSortOrder
5375            };
5376            
5377            // Build the configurator with normalized data and dynamic configuration
5378            buildConfigurator(normalizedProducts, filterConfig, filterKeys, selectedOptions, optionSortOrder);
5379            
5380          } catch (error) {
5381            console.error('Failed to initialize configurator:', error);
5382            showErrorState(error);
5383          }
5384        }
5385
5386        // Get option sort order from metafield
5387        function getOptionSortOrder() {
5388          try {
5389            const filterOrderData = {"mfield_cql_color":{"1":"Space Black","2":"Silver"},"mfield_custom_cosmetics":{"1":"New - Sealed in Box","2":"Open Box - Like New","3":"Grade A - Excellent","4":"Grade B - Fair"},"mfield_cql_storage":{"1":"128GB storage","2":"256GB storage","3":"512GB storage","4":"1TB storage","5":"2TB storage"},"mfield_custom_connectivity":{"1":"Wi-Fi","2":"Wi-Fi + Cellular"}};
5390            
5391            if (!filterOrderData) {
5392              return null;
5393            }
5394            
5395            // Build a map of field -> sorted option values
5396            const optionSortOrder = {};
5397            
5398            Object.entries(filterOrderData).forEach(([fieldKey, optionMap]) => {
5399              // Remove "mfield_" prefix to get the normalized key
5400              const normalizedKey = fieldKey.replace('mfield_', '');
5401              
5402              if (optionMap && typeof optionMap === 'object') {
5403                // Extract and sort by numeric keys
5404                const sortedOptions = Object.entries(optionMap)
5405                  .sort((a, b) => parseInt(a[0]) - parseInt(b[0]))
5406                  .map(entry => entry[1]);
5407                
5408                optionSortOrder[normalizedKey] = sortedOptions;
5409              }
5410            });
5411            
5412            return optionSortOrder;
5413          } catch (error) {
5414            console.error('Error parsing option sort order:', error);
5415            return null;
5416          }
5417        }
5418        
5419        // Extract unique options from products dynamically
5420        function extractOptions(products, filterKeys, optionSortOrder = null) {
5421          const options = {};
5422          
5423          // Initialize sets for each filter key
5424          filterKeys.forEach(key => {
5425            options[key] = new Set();
5426          });
5427          
5428          // Collect unique values from products
5429          products.forEach((product, index) => {
5430            const m = product.metafields;
5431            
5432            filterKeys.forEach(filterKey => {
5433              const value = m[filterKey];
5434              if (value) {
5435                options[filterKey].add(value);
5436              }
5437            });
5438          });
5439          
5440          // Convert sets to sorted arrays using custom sort order if available
5441          const result = {};
5442          filterKeys.forEach(key => {
5443            const allOptions = Array.from(options[key]);
5444            
5445            if (optionSortOrder && optionSortOrder[key]) {
5446              // Sort based on custom order, put unmapped items at the end
5447              const sortedOptions = [];
5448              const unmappedOptions = [];
5449              
5450              // First add options in the custom sort order
5451              optionSortOrder[key].forEach(sortedOption => {
5452                if (allOptions.includes(sortedOption)) {
5453                  sortedOptions.push(sortedOption);
5454                }
5455              });
5456              
5457              // Then add any remaining options not in sort order
5458              allOptions.forEach(option => {
5459                if (!sortedOptions.includes(option)) {
5460                  unmappedOptions.push(option);
5461                }
5462              });
5463              
5464              // Sort unmapped options alphabetically for consistency
5465              unmappedOptions.sort();
5466              
5467              result[key] = [...sortedOptions, ...unmappedOptions];
5468            } else {
5469              // Fallback to alphabetical sort if no custom order
5470              result[key] = allOptions.sort();
5471            }
5472          });
5473          
5474          return result;
5475        }
5476
5477        // Apply preselected options from metafield if they form a valid variant
5478        function applyPreselectedOptions(products, filterKeys, selectedOptions) {
5479          try {
5480            // Get both metafields
5481            const filterOrderData = {"mfield_cql_color":{"1":"Space Black","2":"Silver"}
5481,"mfield_custom_cosmetics":{"1":"New - Sealed in Box","2":"Open Box - Like New","3":"Grade A - Excellent","4":"Grade B - Fair"},"mfield_cql_storage":{"1":"128GB storage","2":"256GB storage","3":"512GB storage","4":"1TB storage","5":"2TB storage"},"mfield_custom_connectivity":{"1":"Wi-Fi","2":"Wi-Fi + Cellular"}};
5482            const preselectedOptionsData = null;
5483
5484            if (!filterOrderData || !preselectedOptionsData) {
5485              console.log('Preselection skipped: Missing metafield data');
5486              return false;
5487            }
5488
5489            // Extract keys from both metafields in order
5490            const filterOrderKeys = Object.keys(filterOrderData);
5491            const preselectedKeys = Object.keys(preselectedOptionsData);
5492
5493            if (filterOrderKeys.length === 0 || preselectedKeys.length === 0) {
5494              console.log('Preselection skipped: Empty metafield data');
5495              return false;
5496            }
5497
5498            // Create mapping: filter_order key -> preselected value
5499            // Map by index: filterOrderKeys[0] -> preselectedKeys[0], etc.
5500            const preselectionMap = {};
5501            const maxLength = Math.min(filterOrderKeys.length, preselectedKeys.length);
5502
5503            for (let i = 0; i < maxLength; i++) {
5504              const filterOrderKey = filterOrderKeys[i]; // e.g., "mfield_custom_cosmetics"
5505              const preselectedValue = preselectedKeys[i]; // e.g., "Grade A - Excellent"
5506
5507              // Normalize the filter order key to match filterKeys format
5508              // Remove "mfield_" prefix: "mfield_custom_cosmetics" -> "custom_cosmetics"
5509              const normalizedKey = filterOrderKey.replace('mfield_', '');
5510
5511              // Only add to map if this filter actually exists in our filterKeys
5512              if (filterKeys.includes(normalizedKey)) {
5513                preselectionMap[normalizedKey] = preselectedValue;
5514              }
5515            }
5516
5517            console.log('Preselection map created:', preselectionMap);
5518
5519            // Check if these preselections form a valid variant
5520            const isValidCombination = products.some(product => {
5521              const m = product.metafields;
5522
5523              // Check if all preselected values match this product
5524              for (const [key, value] of Object.entries(preselectionMap)) {
5525                if (m[key] !== value) {
5526                  return false;
5527                }
5528              }
5529
5530              return true;
5531            });
5532
5533            if (!isValidCombination) {
5534              console.log('Preselection skipped: No valid variant found for preselected combination');
5535              return false;
5536            }
5537
5538            // Valid combination found - apply preselections to selectedOptions
5539            Object.entries(preselectionMap).forEach(([key, value]) => {
5540              selectedOptions[key] = value;
5541            });
5542
5543            return true;
5544          } catch (error) {
5545            console.error('Error applying preselected options:', error);
5546            return false;
5547          }
5548        }
5549
5550        // Build floating visual feedback element
5551        function buildFloatingFeedback(filterKeys, filterConfig) {
5552          // Create floating container
5553          const floatingContainer = document.createElement('div');
5554          floatingContainer.id = 'floating-feedback';
5555          floatingContainer.className = 'floating-feedback collapsed';
5556
5557          // Add toggle arrow on the left
5558          let html = `
5559            <div class="floating-feedback__arrow">
5560              <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
5561                <path d="M10 4L6 8L10 12" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
5562              </svg>
5563            </div>
5564          `;
5565
5566          // Create checkmark items
5567          html += '<div class="floating-feedback__items">';
5568
5569          filterKeys.forEach((filterKey, index) => {
5570            const config = filterConfig[filterKey];
5571            const displayName = config.displayName;
5572
5573            html += `
5574              <div class="floating-feedback__item" data-filter-key="${filterKey}">
5575                <span class="config-label__check">
5576                  <span class="config-label__check-empty"></span>
5577                  <img class="config-label__check-filled" src="//ipowerresale.com/cdn/shop/t/130/assets/checkmark.png?v=57208139336376101951790277972" alt="selected" width="20" height="20">
5578                </span>
5579                <span class="floating-feedback__label">${displayName}</span>
5580              </div>
5581            `;
5582          });
5583
5584          html += '</div>';
5585
5586          floatingContainer.innerHTML = html;
5587          document.body.appendChild(floatingContainer);
5588
5589          // Add toggle functionality - entire container is clickable
5590          floatingContainer.addEventListener('click', function(e) {
5591            floatingContainer.classList.toggle('collapsed');
5592            floatingContainer.classList.toggle('expanded');
5593          });
5594        }
5595
5596        // Update floating feedback and config section labels based on selections
5597        function updateFloatingFeedback(filterKeys, selectedOptions) {
5598          const floatingContainer = document.getElementById('floating-feedback');
5599
5600          filterKeys.forEach(filterKey => {
5601            const isSelected = selectedOptions[filterKey] !== null && selectedOptions[filterKey] !== undefined;
5602
5603            // Update floating feedback item
5604            if (floatingContainer) {
5605              const item = floatingContainer.querySelector(`[data-filter-key="${filterKey}"]`);
5606              if (item) {
5607                if (isSelected) {
5608                  item.classList.add('selected');
5609                } else {
5610                  item.classList.remove('selected');
5611                }
5612              }
5613            }
5614
5615            // Update config section label checkmark and selected value
5616            const label = document.querySelector(`.config-label[data-filter-key="${filterKey}"]`);
5617            if (label) {
5618              const valueEl = label.querySelector('.config-label__value');
5619              if (isSelected) {
5620                label.classList.add('selected');
5621                if (valueEl) valueEl.textContent = selectedOptions[filterKey];
5622              } else {
5623                label.classList.remove('selected');
5624                if (valueEl) valueEl.textContent = '';
5625              }
5626            }
5627          });
5628        }
5629
5630        // Shared quantity state (accessible by attachEventListeners and checkSelection)
5631        let configuratorQty = 1;
5632        let maxAvailableQty = 99;
5633
5634        function syncQtyDisplay() {
5635          const qtyValue = document.getElementById('qty-value');
5636          const inlineQtyValue = document.getElementById('inline-qty-value');
5637          const qtyPlus = document.getElementById('qty-plus');
5638          const inlineQtyPlus = document.getElementById('inline-qty-plus');
5639          const qtyMinus = document.getElementById('qty-minus');
5640          const inlineQtyMinus = document.getElementById('inline-qty-minus');
5641          if (qtyValue) qtyValue.textContent = configuratorQty;
5642          if (inlineQtyValue) inlineQtyValue.textContent = configuratorQty;
5643          // Disable plus buttons when at max
5644          const atMax = configuratorQty >= maxAvailableQty;
5645          if (qtyPlus) qtyPlus.disabled = atMax;
5646          if (inlineQtyPlus) inlineQtyPlus.disabled = atMax;
5647          // Disable minus buttons when at min
5648          const atMin = configuratorQty <= 1;
5649          if (qtyMinus) qtyMinus.disabled = atMin;
5650          if (inlineQtyMinus) inlineQtyMinus.disabled = atMin;
5651        }
5652
5653        // Build the configurator UI dynamically
5654        function buildConfigurator(products, filterConfig, filterKeys, selectedOptions, optionSortOrder = null) {
5655          const container = document.getElementById('react-app-custom');
5656          if (!container) {
5657            console.error('Container #react-app-custom not found');
5658            return;
5659          }
5660
5661          // Extract all unique options from products with custom sort order
5662          const options = extractOptions(products, filterKeys, optionSortOrder);
5663          
5664          // Helper to safely set data attribute values (handles quotes)
5665          const escapeDataValue = (value) => {
5666            if (value == null) return '';
5667            return String(value).replaceAll('"', '&quot;');
5668          };
5669
5670          // Build the UI dynamically
5671          let html = '<div class="product-configurator custom-configurator">';
5672          let sectionsBuilt = 0;
5673          
5674          // Iterate through each filter in the order they appear in filterKeys
5675          filterKeys.forEach(filterKey => {
5676            const config = filterConfig[filterKey];
5677            const optionValues = options[filterKey];
5678            
5679            // Skip this filter if no values, but continue with others
5680            if (!optionValues || optionValues.length === 0) {
5681              return; // This only returns from the forEach callback, not the entire function
5682            }
5683            
5684            sectionsBuilt++;
5685            
5686            // Build section based on filter type
5687            if (isColorFilter(filterKey)) {
5688              // Color/Finish section with swatches
5689            html += '<div class="config-section">';
5690              html += `<h3 class="config-label" data-filter-key="${filterKey}">
5691                <span class="config-label__check">
5692                  <span class="config-label__check-empty"></span>
5693                  <img class="config-label__check-filled" src="//ipowerresale.com/cdn/shop/t/130/assets/checkmark.png?v=57208139336376101951790277972" alt="selected" width="24" height="24">
5694                </span>
5695                <span class="config-label__text">Color/Finish:</span>
5696                <span class="config-label__value"></span>
5697              </h3>`;
5698            html += '<div class="config-options color-swatches">';
5699            
5700              optionValues.forEach(value => {
5701                const hexColor = getColorHex(value);
5702              html += `
5703                  <div class="color-option" data-option="${filterKey}" data-value="${escapeDataValue(value)}">
5704                  <div class="color-swatch" style="background-color: ${hexColor};">&nbsp;</div>
5705                </div>
5706              `;
5707            });
5708            
5709            html += '</div></div>';
5710            } else if (isCosmeticsFilter(filterKey)) {
5711              // Cosmetic Condition section with help link
5712            const helpLink = getHelpLink(filterKey);
5713            html += `
5714              <div class="config-section">
5715                  <h3 class="config-label" data-filter-key="${filterKey}">
5716                    <span class="config-label__check">
5717                      <span class="config-label__check-empty"></span>
5718                      <img class="config-label__check-filled" src="//ipowerresale.com/cdn/shop/t/130/assets/checkmark.png?v=57208139336376101951790277972" alt="selected" width="24" height="24">
5719                    </span>
5720                    <span class="config-label__text">Cosmetic Condition:</span>
5721                    <span class="config-label__value"></span>
5722                  </h3>
5723                  ${helpLink ? `<div class="config-help-link">${helpLink}</div>` : ''}
5724                <div class="config-options">
5725                    ${optionValues.map(value => `
5726                      <button class="config-button" data-option="${filterKey}" data-value="${escapeDataValue(value)}">
5727                        ${value}
5728                    </button>
5729                  `).join('')}
5730                </div>
5731              </div>
5732            `;
5733            } else {
5734              // Standard button section for all other filters
5735            const helpLink = getHelpLink(filterKey);
5736            html += `
5737              <div class="config-section">
5738                  <h3 class="config-label" data-filter-key="${filterKey}">
5739                    <span class="config-label__check">
5740                      <span class="config-label__check-empty"></span>
5741                      <img class="config-label__check-filled" src="//ipowerresale.com/cdn/shop/t/130/assets/checkmark.png?v=57208139336376101951790277972" alt="selected" width="24" height="24">
5742                    </span>
5743                    <span class="config-label__text">${config.displayName}:</span>
5744                    <span class="config-label__value"></span>
5745                  </h3>
5746                  ${helpLink ? `<div class="config-help-link">${helpLink}</div>` : ''}
5747                <div class="config-options">
5748                    ${optionValues.map(value => `
5749                      <button class="config-button" data-option="${filterKey}" data-value="${escapeDataValue(value)}">
5750                        ${value}
5751                    </button>
5752                  `).join('')}
5753                </div>
5754              </div>
5755            `;
5756          }
5757          });
5758          
5759          // Inline Add to Cart section (shown when valid child product is selected)
5760          html += `
5761            <div id="inline-atc" class="inline-atc" style="display: none;">
5762              <div class="inline-atc__controls">
5763                <div class="inline-atc__qty">
5764                  <button class="inline-atc__qty-btn" id="inline-qty-minus" aria-label="Decrease quantity">−</button>
5765                  <span class="inline-atc__qty-value" id="inline-qty-value">1</span>
5766                  <button class="inline-atc__qty-btn" id="inline-qty-plus" aria-label="Increase quantity">+</button>
5767                </div>
5768                <button id="inline-atc-btn" class="inline-atc__button">ADD TO BAG</button>
5769              </div>
5770            </div>
5771          `;
5772
5773          // Continue button - fixed bottom bar (always visible)
5774          html += `
5775            <div id="continue-bar" class="continue-bar">
5776              <div class="continue-bar__content">
5777                <div class="continue-bar__info">
5778                  <h3 id="continue-product-name" class="continue-bar__product-name"></h3>
5779                  <div id="continue-bar-reviews" class="continue-bar__reviews" style="display:none;"></div>
5780                </div>
5781                <div class="continue-bar__actions">
5782                  <div id="continue-bar-qty" class="continue-bar__qty" style="display: none;">
5783                    <button class="continue-bar__qty-btn" id="qty-minus" aria-label="Decrease quantity">−</button>
5784                    <span class="continue-bar__qty-value" id="qty-value">1</span>
5785                    <button class="continue-bar__qty-btn" id="qty-plus" aria-label="Increase quantity">+</button>
5786                  </div>
5787                  <button id="continue-btn" class="continue-bar__button" disabled>
5788                    0 OF 0 REQUIRED SELECTIONS COMPLETED
5789                  </button>
5790                </div>
5791              </div>
5792            </div>
5793          `;
5794          
5795          html += '</div>';
5796          
5797          container.innerHTML = html;
5798          
5799          // Set parent product name
5800          document.getElementById('continue-product-name').textContent = parentProductTitle.replace('(Parent Product)', '');
5801
5802          // Show stars/review count in bottom bar if data is already loaded
5803          if (typeof updateContinueBarReviews === 'function') {
5804            updateContinueBarReviews();
5805          }
5806
5807          // Store products globally for other functions
5808          window.configuratorProducts = products;
5809
5810          // Build floating visual feedback element
5811          buildFloatingFeedback(filterKeys, filterConfig);
5812
5813          // Attach event listeners
5814          const lastChangedOption = window.configuratorData.lastChangedOption;
5815          attachEventListeners(products, filterKeys, selectedOptions, lastChangedOption);
5816
5817          // Set initial selection count on button
5818          const { selected: initSelected, total: initTotal } = getSelectionCounts(filterKeys, selectedOptions);
5819          document.getElementById('continue-btn').textContent = `${initSelected} OF ${initTotal} REQUIRED SELECTIONS COMPLETED`;
5820
5821          // Apply preselected options if available and valid
5822          const preselectionApplied = applyPreselectedOptions(products, filterKeys, selectedOptions);
5823
5824          if (preselectionApplied) {
5825            // Apply UI selections for preselected options
5826            filterKeys.forEach(filterKey => {
5827              const preselectedValue = selectedOptions[filterKey];
5828              if (preselectedValue) {
5829                const isColorType = isColorFilter(filterKey);
5830
5831                if (isColorType) {
5832                  // Select color swatch
5833                  document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).forEach(el => {
5834                    if (el.dataset.value === preselectedValue) {
5835                      el.classList.add('selected');
5836                    }
5837                  });
5838                } else {
5839                  // Select button
5840                  document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).forEach(el => {
5841                    if (el.dataset.value === preselectedValue) {
5842                      el.classList.add('selected');
5843                    }
5844                  });
5845                }
5846              }
5847            });
5848
5849            // Update floating feedback for preselected options
5850            updateFloatingFeedback(filterKeys, selectedOptions);
5851
5852            // Update the UI state after preselection
5853            checkSelection(products, filterKeys, selectedOptions, lastChangedOption);
5854          } else {
5855            // Initialize available options (all should be available on first load)
5856            // Only apply auto-selection logic if no preselection was applied
5857            updateAvailableOptions(products, filterKeys, selectedOptions);
5858          }
5859        }
5860        
5861        // Get the lowest price from all products
5862        function getLowestPrice(products) {
5863          if (!products || products.length === 0) {
5864            return parentProductPrice;
5865          }
5866          
5867          let lowestPrice = Infinity;
5868          let lowestPriceString = '';
5869          
5870          products.forEach(product => {
5871            if (product.price) {
5872              // Extract numeric value from price string (e.g., "$1,299.00")
5873              const numericValue = parseFloat(product.price.replace(/[$,]/g, ''));
5874              if (numericValue < lowestPrice) {
5875                lowestPrice = numericValue;
5876                lowestPriceString = product.price;
5877              }
5878            }
5879          });
5880          
5881          return lowestPriceString || parentProductPrice;
5882        }
5883        
5884        // Initialize the configurator
5885        initializeConfigurator();
5886        
5887        // Attach event listeners to configurator elements
5888        function attachEventListeners(products, filterKeys, selectedOptions, lastChangedOption) {
5889          // Color swatches (for any color filter)
5890          document.querySelectorAll('.color-option').forEach(el => {
5891            el.addEventListener('click', function() {
5892              const optionKey = this.dataset.option;
5893              const newValue = this.dataset.value;
5894              
5895              // If clicking on already selected color, do nothing (no toggle-off)
5896              if (this.classList.contains('selected')) {
5897                return;
5898              }
5899              
5900              // Select the new color (remove selection from all others first)
5901              document.querySelectorAll(`.color-option[data-option="${optionKey}"]`).forEach(e => e.classList.remove('selected'));
5902              this.classList.add('selected');
5903              selectedOptions[optionKey] = newValue;
5904              
5905              // Track the change
5906              lastChangedOption.key = optionKey;
5907              lastChangedOption.value = newValue;
5908              
5909              checkSelection(products, filterKeys, selectedOptions, lastChangedOption);
5910            });
5911          });
5912          
5913          // Config buttons (for all other filters)
5914          document.querySelectorAll('.config-button').forEach(el => {
5915            el.addEventListener('click', function() {
5916              const option = this.dataset.option;
5917              const value = this.dataset.value;
5918              
5919              // If clicking on already selected button, do nothing (no toggle-off)
5920              if (this.classList.contains('selected')) {
5921                return;
5922              }
5923              
5924              // Select the new option
5925              this.parentElement.querySelectorAll('.config-button').forEach(e => e.classList.remove('selected'));
5926              this.classList.add('selected');
5927              selectedOptions[option] = value;
5928              
5929              // Track the change
5930              lastChangedOption.key = option;
5931              lastChangedOption.value = value;
5932              
5933              checkSelection(products, filterKeys, selectedOptions, lastChangedOption);
5934            });
5935          });
5936          
5937          // Bottom bar qty
5938          document.getElementById('qty-minus').addEventListener('click', function(e) {
5939            e.stopPropagation();
5940            if (configuratorQty > 1) { configuratorQty--; syncQtyDisplay(); }
5941          });
5942          document.getElementById('qty-plus').addEventListener('click', function(e) {
5943            e.stopPropagation();
5944            if (configuratorQty < maxAvailableQty) { configuratorQty++; syncQtyDisplay(); }
5945          });
5946
5947          // Inline qty
5948          document.getElementById('inline-qty-minus').addEventListener('click', function(e) {
5949            e.stopPropagation();
5950            if (configuratorQty > 1) { configuratorQty--; syncQtyDisplay(); }
5951          });
5952          document.getElementById('inline-qty-plus').addEventListener('click', function(e) {
5953            e.stopPropagation();
5954            if (configuratorQty < maxAvailableQty) { configuratorQty++; syncQtyDisplay(); }
5955          });
5956
5957          // Shared add to cart logic
5958          function addToCart(btn) {
5959            const matchedProduct = findMatchingProduct(products, filterKeys, selectedOptions);
5960            if (!matchedProduct) return;
5961
5962            const originalText = btn.textContent;
5963            btn.disabled = true;
5964            btn.textContent = 'ADDING...';
5965
5966            fetch(`/products/${matchedProduct.handle}.js`)
5967              .then(res => res.json())
5968              .then(productData => {
5969                const variantId = productData.variants[0].id;
5970                return fetch('/cart/add.js', {
5971                  method: 'POST',
5972                  headers: { 'Content-Type': 'application/json' },
5973                  body: JSON.stringify({
5974                    items: [{
5975                      id: variantId,
5976                      quantity: configuratorQty
5977                    }]
5978                  })
5979                });
5980              })
5981              .then(res => res.json())
5982              .then(data => {
5983                // Update both buttons
5984                const bottomBtn = document.getElementById('continue-btn');
5985                const inlineBtn = document.getElementById('inline-atc-btn');
5986                bottomBtn.textContent = 'ADDED TO BAG!';
5987                inlineBtn.textContent = 'ADDED TO BAG!';
5988                btn.disabled = false;
5989                setTimeout(() => {
5990                  bottomBtn.textContent = `ADD TO BAG - ${formatPrice(matchedProduct.price)}`;
5991                  inlineBtn.textContent = `ADD TO BAG - ${formatPrice(matchedProduct.price)}`;
5992                }, 2000);
5993              })
5994              .catch(err => {
5995                console.error('Error adding to cart:', err);
5996                btn.disabled = false;
5997                btn.textContent = originalText;
5998              });
5999          }
6000
6001          // Bottom bar Add to Cart
6002          document.getElementById('continue-btn').addEventListener('click', function() {
6003            addToCart(this);
6004          });
6005
6006          // Inline Add to Cart
6007          document.getElementById('inline-atc-btn').addEventListener('click', function() {
6008            addToCart(this);
6009          });
6010        }
6011        
6012        // Validate and fix selections to ensure no invalid state can persist
6013        function validateAndFixSelections(products, filterKeys, selectedOptions, lastChangedOption) {
6014          // Double-check that we never have an invalid combination selected
6015          const currentMatch = findMatchingProduct(products, filterKeys, selectedOptions);
6016          
6017          if (!currentMatch) {
6018            // We have an invalid combination - this should have been prevented but let's fix it
6019            console.warn('Invalid combination detected, fixing...', selectedOptions);
6020            
6021            // Use the same resolution logic as in highlightAvailableOptions
6022            resolveInvalidSelections(products, filterKeys, selectedOptions, lastChangedOption);
6023            
6024            // Verify the fix worked
6025            const fixedMatch = findMatchingProduct(products, filterKeys, selectedOptions);
6026            if (!fixedMatch) {
6027              console.error('Failed to resolve invalid selection, clearing all except last changed');
6028              
6029              // Last resort: clear everything except the last changed option
6030              filterKeys.forEach(key => {
6031                if (key !== lastChangedOption.key) {
6032                  const currentSelection = selectedOptions[key];
6033                  if (currentSelection) {
6034                    selectedOptions[key] = null;
6035                    
6036                    // Remove from UI
6037                    const isColorType = isColorFilter(key);
6038                    if (isColorType) {
6039                      document.querySelectorAll(`.color-option[data-option="${key}"]`).forEach(el => {
6040                        if (el.dataset.value === currentSelection) {
6041                          el.classList.remove('selected');
6042                        }
6043                      });
6044                    } else {
6045                      document.querySelectorAll(`.config-button[data-option="${key}"]`).forEach(el => {
6046                        if (el.dataset.value === currentSelection) {
6047                          el.classList.remove('selected');
6048                        }
6049                      });
6050                    }
6051                  }
6052                }
6053              });
6054            }
6055          }
6056        }
6057
6058        // Find all valid option combinations based on ALL currently selected options
6059        // Strategy: Find products that match ALL selections to show what's truly compatible
6060        function findValidOptionCombinations(products, filterKeys, selectedOptions, lastChangedOption) {
6061          const validOptions = {};
6062          
6063          // Initialize sets for each filter key
6064          filterKeys.forEach(key => {
6065            validOptions[key] = new Set();
6066          });
6067          
6068          // Get all currently selected options
6069          const currentSelections = {};
6070          filterKeys.forEach(key => {
6071            if (selectedOptions[key]) {
6072              currentSelections[key] = selectedOptions[key];
6073            }
6074          });
6075          
6076          // If no selections, return all available options
6077          if (Object.keys(currentSelections).length === 0) {
6078            products.forEach(product => {
6079              const m = product.metafields;
6080              filterKeys.forEach(filterKey => {
6081                if (m[filterKey]) {
6082                  validOptions[filterKey].add(m[filterKey]);
6083                }
6084              });
6085            });
6086            
6087            const result = {};
6088            filterKeys.forEach(key => {
6089              result[key] = Array.from(validOptions[key]);
6090            });
6091            return result;
6092          }
6093          
6094          // Strategy: Find products that match ALL current selections (excluding the group being tested)
6095          // For each option group, check what values would create valid products
6096          
6097          
6098          filterKeys.forEach(testFilterKey => {
6099            // For each group, find what values are compatible with ALL OTHER current selections
6100            // Build selections object WITHOUT this group's current selection
6101            const otherSelections = {};
6102            for (const [key, value] of Object.entries(currentSelections)) {
6103              if (key !== testFilterKey) {
6104                otherSelections[key] = value;
6105              }
6106            }
6107            
6108            
6109            
6110            
6111            let matchCount = 0;
6112            // Find products that match ALL other selections
6113            products.forEach(product => {
6114              const m = product.metafields;
6115              
6116              // Check if this product matches ALL other selected options
6117              let matchesAll = true;
6118              for (const [key, value] of Object.entries(otherSelections)) {
6119                if (m[key] !== value) {
6120                  matchesAll = false;
6121                  break;
6122                }
6123              }
6124              
6125              // If it matches all other selections, this option value is valid
6126              if (matchesAll && m[testFilterKey]) {
6127                validOptions[testFilterKey].add(m[testFilterKey]);
6128                matchCount++;
6129              }
6130            });
6131            
6132            
6133            
6134          });
6135          
6136          // Convert sets to arrays
6137          const result = {};
6138          filterKeys.forEach(key => {
6139            result[key] = Array.from(validOptions[key]);
6140          });
6141          
6142          
6143          
6144          return result;
6145        }
6146        
6147        // Find options that are compatible with ONLY the last changed option
6148        // Used to decide whether to keep or unselect existing selections in other groups
6149        function findOptionsCompatibleWithLastChanged(products, filterKeys, lastChangedOption) {
6150          const compat = {};
6151          filterKeys.forEach(key => (compat[key] = new Set()));
6152          
6153          if (!lastChangedOption || !lastChangedOption.key || !lastChangedOption.value) {
6154            // No last change context; return empty sets
6155            const result = {};
6156            filterKeys.forEach(key => (result[key] = []));
6157            return result;
6158          }
6159          
6160          // Collect all products that match the last changed option
6161          const matching = products.filter(p => p.metafields[lastChangedOption.key] === lastChangedOption.value);
6162          
6163          // Aggregate values per group from those products
6164          matching.forEach(product => {
6165            const m = product.metafields;
6166            filterKeys.forEach(groupKey => {
6167              if (m[groupKey]) compat[groupKey].add(m[groupKey]);
6168            });
6169          });
6170          
6171          const result = {};
6172          filterKeys.forEach(key => (result[key] = Array.from(compat[key])));
6173          return result;
6174        }
6175
6176        // Resolve invalid selections intelligently to handle race conditions
6177        function resolveInvalidSelections(products, filterKeys, selectedOptions, lastChangedOption) {
6178          let selectionsChanged = false;
6179          
6180          // If no last changed option, we can't resolve intelligently
6181          if (!lastChangedOption || !lastChangedOption.key || !lastChangedOption.value) {
6182            return selectionsChanged;
6183          }
6184          
6185          // Check if current selections create a valid product
6186          const currentMatch = findMatchingProduct(products, filterKeys, selectedOptions);
6187          if (currentMatch) {
6188            return selectionsChanged; // All selections are valid, no need to resolve
6189          }
6190          
6191          // Find all possible valid combinations that include the last changed o
6191ption
6192          const validCombinationsWithLastChange = products.filter(product => {
6193            return product.metafields[lastChangedOption.key] === lastChangedOption.value;
6194          });
6195          
6196          if (validCombinationsWithLastChange.length === 0) {
6197            // The last changed option itself is invalid, this shouldn't happen but handle it
6198            console.warn('Last changed option creates no valid products:', lastChangedOption);
6199            return selectionsChanged;
6200          }
6201          
6202          // Strategy: Find the minimal set of options to unselect to make a valid combination
6203          // Priority: Keep as many user selections as possible while ensuring validity
6204          
6205          // Get all currently selected options (excluding the last changed one)
6206          const otherSelections = {};
6207          filterKeys.forEach(key => {
6208            if (key !== lastChangedOption.key && selectedOptions[key]) {
6209              otherSelections[key] = selectedOptions[key];
6210            }
6211          });
6212          
6213          // If no other selections, we're already valid (just the last changed option)
6214          if (Object.keys(otherSelections).length === 0) {
6215            return selectionsChanged;
6216          }
6217          
6218          // Find which combinations of the other selections work with the last changed option
6219          const otherSelectionKeys = Object.keys(otherSelections);
6220          
6221          // Try to find a valid product that matches the last changed option and as many other selections as possible
6222          let bestMatch = null;
6223          let maxMatchingSelections = 0;
6224          
6225          validCombinationsWithLastChange.forEach(product => {
6226            let matchingCount = 0;
6227            const matchingKeys = [];
6228            
6229            // Count how many other selections this product matches
6230            otherSelectionKeys.forEach(key => {
6231              if (product.metafields[key] === otherSelections[key]) {
6232                matchingCount++;
6233                matchingKeys.push(key);
6234              }
6235            });
6236            
6237            // Keep track of the product that matches the most selections
6238            if (matchingCount > maxMatchingSelections) {
6239              maxMatchingSelections = matchingCount;
6240              bestMatch = { product, matchingKeys };
6241            }
6242          });
6243          
6244          if (bestMatch && bestMatch.matchingKeys.length > 0) {
6245            // We found a valid combination - unselect options that don't match the best combination
6246            otherSelectionKeys.forEach(key => {
6247              if (!bestMatch.matchingKeys.includes(key)) {
6248                // This selection needs to be unselected
6249                const currentSelection = selectedOptions[key];
6250                selectedOptions[key] = null;
6251                selectionsChanged = true;
6252                
6253                console.log(`Resolving race condition: Unselecting ${key}=${currentSelection} to maintain valid combination`);
6254                
6255                // Remove selected class from UI
6256                const isColorType = isColorFilter(key);
6257                if (isColorType) {
6258                  document.querySelectorAll(`.color-option[data-option="${key}"]`).forEach(el => {
6259                    if (el.dataset.value === currentSelection) {
6260                      el.classList.remove('selected');
6261                    }
6262                  });
6263                } else {
6264                  document.querySelectorAll(`.config-button[data-option="${key}"]`).forEach(el => {
6265                    if (el.dataset.value === currentSelection) {
6266                      el.classList.remove('selected');
6267                    }
6268                  });
6269                }
6270              }
6271            });
6272          } else {
6273            // No valid combination found that preserves any other selections
6274            // Unselect all other options to ensure the last changed option remains valid
6275            console.log('No compatible combinations found, clearing all other selections');
6276            
6277            otherSelectionKeys.forEach(key => {
6278              const currentSelection = selectedOptions[key];
6279              selectedOptions[key] = null;
6280              selectionsChanged = true;
6281              
6282              // Remove selected class from UI
6283              const isColorType = isColorFilter(key);
6284              if (isColorType) {
6285                document.querySelectorAll(`.color-option[data-option="${key}"]`).forEach(el => {
6286                  if (el.dataset.value === currentSelection) {
6287                    el.classList.remove('selected');
6288                  }
6289                });
6290              } else {
6291                document.querySelectorAll(`.config-button[data-option="${key}"]`).forEach(el => {
6292                  if (el.dataset.value === currentSelection) {
6293                    el.classList.remove('selected');
6294                  }
6295                });
6296              }
6297            });
6298          }
6299          
6300          return selectionsChanged;
6301        }
6302
6303        // Clear all highlighting from options
6304        function clearOptionHighlighting() {
6305          // Clear from buttons - remove all styling classes
6306          document.querySelectorAll('.config-button').forEach(el => {
6307            el.classList.remove('unavailable', 'available', 'invalid');
6308          });
6309          
6310          // Clear from color options - remove all styling classes
6311          document.querySelectorAll('.color-option').forEach(el => {
6312            el.classList.remove('unavailable', 'available', 'invalid');
6313          });
6314        }
6315        
6316        // Highlight available options with blue border (user must click to select - no auto-selection)
6317        function highlightAvailableOptions(products, filterKeys, selectedOptions, lastChangedOption) {
6318
6319        const hasAnySelection = filterKeys.filter(key => selectedOptions[key]);
6320
6321        if (hasAnySelection.length > 0) {
6322          let showStyle= false
6323          hasAnySelection.forEach(key => {
6324            const length = document.querySelectorAll(`[data-option="${key}"]`).length
6325            if (length > 1) {
6326              showStyle = true
6327            }
6328          });
6329          if (!showStyle) {
6330            return; // Don't apply any highlighting on page load
6331          }
6332        }
6333
6334        // if (!hasAnySelection) {
6335        //   return; // Don't apply any highlighting on page load
6336        // }
6337        
6338        // Clear any existing highlighting
6339          clearOptionHighlighting();
6340          
6341          // STEP 1: Handle race condition - resolve invalid selections intelligently
6342          let selectionsChanged = resolveInvalidSelections(products, filterKeys, selectedOptions, lastChangedOption);
6343          
6344          // Get valid option combinations based on current selections (after resolution)
6345          let validCombinations = findValidOptionCombinations(products, filterKeys, selectedOptions, lastChangedOption);
6346          
6347          if (selectionsChanged) {
6348            // Recompute valid combinations after resolving conflicts
6349            validCombinations = findValidOptionCombinations(products, filterKeys, selectedOptions, lastChangedOption);
6350          }
6351          
6352          // Get list of all groups that have selections (don't highlight options in these groups)
6353          const selectedGroups = new Set();
6354          filterKeys.forEach(key => {
6355            if (selectedOptions[key]) {
6356              selectedGroups.add(key);
6357            }
6358          });
6359          
6360          // STEP 2: Highlight available options for all groups
6361          // Skip highlighting ONLY for the group that was just clicked by the user
6362          filterKeys.forEach(filterKey => {
6363            const validValues = validCombinations[filterKey];
6364            const currentSelection = selectedOptions[filterKey];
6365            const isColorType = isColorFilter(filterKey);
6366            
6367            // Skip the group that was just clicked - don't show other options in that group
6368            if (lastChangedOption && filterKey === lastChangedOption.key) {
6369              // Only mark invalid options in the just-clicked group, don't highlight valid ones
6370              if (isColorType) {
6371                document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).forEach(el => {
6372                  const value = el.dataset.value;
6373                  if (validValues.length > 0 && !validValues.includes(value)) {
6374                    el.classList.add('invalid');
6375                    el.classList.remove('available');
6376                  } else {
6377                    el.classList.remove('invalid', 'available');
6378                  }
6379                });
6380              } else {
6381                document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).forEach(el => {
6382                  const value = el.dataset.value;
6383                  if (validValues.length > 0 && !validValues.includes(value)) {
6384                    el.classList.add('invalid');
6385                    el.classList.remove('available');
6386                  } else {
6387                    el.classList.remove('invalid', 'available');
6388                  }
6389                });
6390              }
6391              return;
6392            }
6393            
6394            // For all OTHER groups (including those with selections):
6395            // Show valid options as available, mark invalid as gray
6396            if (isColorType) {
6397              document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).forEach(el => {
6398                const value = el.dataset.value;
6399                const isSelected = el.classList.contains('selected');
6400                
6401                if (validValues.length > 0 && validValues.includes(value) && !isSelected) {
6402                  // Valid but not selected - highlight as available
6403                  el.classList.add('available');
6404                  el.classList.remove('invalid');
6405                } else if (validValues.length > 0 && !validValues.includes(value)) {
6406                  // Invalid - mark as gray
6407                  el.classList.add('invalid');
6408                  el.classList.remove('available');
6409                } else {
6410                  // Selected or no valid options
6411                  el.classList.remove('invalid', 'available');
6412                }
6413              });
6414            } else {
6415              document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).forEach(el => {
6416                const value = el.dataset.value;
6417                const isSelected = el.classList.contains('selected');
6418                
6419                if (validValues.length > 0 && validValues.includes(value) && !isSelected) {
6420                  // Valid but not selected - highlight as available
6421                  el.classList.add('available');
6422                  el.classList.remove('invalid');
6423                } else if (validValues.length > 0 && !validValues.includes(value)) {
6424                  // Invalid - mark as gray
6425                  el.classList.add('invalid');
6426                  el.classList.remove('available');
6427                } else {
6428                  // Selected or no valid options
6429                  el.classList.remove('invalid', 'available');
6430                }
6431              });
6432            }
6433          });
6434        }
6435        
6436        // Render addon products into the add-ons container
6437        function renderAddonProducts(addonProducts) {
6438          const container = document.getElementById('configurator-addons');
6439          const list = document.getElementById('configurator-addons-list');
6440          if (!container || !list) return;
6441
6442          if (!addonProducts || addonProducts.length === 0) {
6443            container.style.display = 'none';
6444            list.innerHTML = '';
6445            return;
6446          }
6447
6448          const warrantyModalId = window.__warrantyModalId || null;
6449
6450          list.innerHTML = addonProducts.map(product => {
6451            const price = product.priceRange?.minVariantPrice?.amount
6452              ? `$${parseFloat(product.priceRange.minVariantPrice.amount).toFixed(2)}`
6453              : '';
6454            const imageUrl = product.featuredImage?.url || '';
6455            const imageAlt = product.featuredImage?.altText || product.title;
6456            const productId = product.id.split('/').pop();
6457            const description = product.description
6458              ? (product.description.length > 80 ? product.description.substring(0, 80) + '...' : product.description)
6459              : '';
6460            const isWarranty = productId === '7713399963817';
6461            const warrantyIcon = (isWarranty && warrantyModalId)
6462              ? `<button type="button" class="add-ons-warranty-info-btn" data-warranty-modal-open="${warrantyModalId}" aria-label="Learn more about warranty">
6463                  <svg width="10" height="10" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
6464                    <circle cx="10" cy="10" r="9" stroke="#1D7F9A" stroke-width="1.5"/>
6465                    <rect x="9.25" y="9" width="1.5" height="6" rx="0.75" fill="#1D7F9A"/>
6466                    <rect x="9.25" y="5.5" width="1.5" height="1.5" rx="0.75" fill="#1D7F9A"/>
6467                  </svg>
6468                </button>`
6469              : '';
6470
6471            return `
6472              <div class="add-ons-card" data-product-id="${productId}" data-product-handle="${product.handle}">
6473                <div class="add-ons-card-image">
6474                  ${imageUrl
6475                    ? `<img src="${imageUrl}" alt="${imageAlt}" class="add-ons-product-image" loading="lazy" width="150" height="150">`
6476                    : '<div class="add-ons-placeholder"></div>'
6477                  }
6478                </div>
6479                <div class="add-ons-card-content">
6480                  <h3 class="add-ons-product-title">${product.title}${warrantyIcon}</h3>
6481                  ${description ? `<p class="add-ons-product-description">${description}</p>` : ''}
6482                  <div class="add-ons-product-price">${price}</div>
6483                  <button type="button" class="add-ons-add-to-cart" data-product-handle="${product.handle}">
6484                    ADD TO BAG
6485                  </button>
6486                </div>
6487              </div>
6488            `;
6489          }).join('');
6490
6491          container.style.display = '';
6492
6493          // Attach add-to-cart handlers
6494          list.querySelectorAll('.add-ons-add-to-cart').forEach(btn => {
6495            btn.addEventListener('click', async function() {
6496              const handle = this.dataset.productHandle;
6497              try {
6498                this.disabled = true;
6499                this.textContent = 'ADDING...';
6500
6501                // Fetch product to get first available variant ID
6502                const res = await fetch(`/products/${handle}.js`);
6503                const productData = await res.json();
6504                const variantId = productData.variants.find(v => v.available)?.id;
6505
6506                if (!variantId) {
6507                  this.textContent = 'UNAVAILABLE';
6508                  return;
6509                }
6510
6511                // Add to cart with hidden line item property linking to the child product
6512                const childHandle = document.getElementById('configurator-addons')?.dataset.childHandle || '';
6513                await fetch('/cart/add.js', {
6514                  method: 'POST',
6515                  headers: { 'Content-Type': 'application/json' },
6516                  body: JSON.stringify({
6517                    items: [{
6518                      id: variantId,
6519                      quantity: 1,
6520                      properties: {
6521                        '_addon_for': childHandle
6522                      }
6523                    }]
6524                  })
6525                });
6526
6527                this.textContent = 'ADDED!';
6528                setTimeout(() => {
6529                  this.textContent = 'ADD TO BAG';
6530                  this.disabled = false;
6531                }, 2000);
6532              } catch (error) {
6533                console.error('Error adding addon to cart:', error);
6534                this.textContent = 'ADD TO BAG';
6535                this.disabled = false;
6536              }
6537            });
6538          });
6539        }
6540
6541        // Check if a valid product selection is made and update available options
6542        function checkSelection(products, filterKeys, selectedOptions, lastChangedOption) {
6543          // SAFETY CHECK: Ensure no invalid selections persist
6544          const hasInvalidSelections = filterKeys.some(key => {
6545            const selection = selectedOptions[key];
6546            if (!selection) return false;
6547
6548            // Check if this selection creates any valid products when combined with other selections
6549            const testSelections = { ...selectedOptions };
6550            return !products.some(product => {
6551              return filterKeys.every(filterKey => {
6552                return !testSelections[filterKey] || product.metafields[filterKey] === testSelections[filterKey];
6553              });
6554            });
6555          });
6556
6557          if (hasInvalidSelections) {
6558            console.error('Invalid selections detected in checkSelection, fixing...');
6559            resolveInvalidSelections(products, filterKeys, selectedOptions, lastChangedOption);
6560          }
6561
6562          // Update floating feedback
6563          updateFloatingFeedback(filterKeys, selectedOptions);
6564
6565          const matchedProduct = findMatchingProduct(products, filterKeys, selectedOptions);
6566          const continueBtn = document.getElementById('continue-btn');
6567          const qtyContainer = document.getElementById('continue-bar-qty');
6568          const inlineAtc = document.getElementById('inline-atc');
6569
6570          // Check if all required options are selected
6571          const allOptionsSelected = areAllOptionsSelected(filterKeys, selectedOptions);
6572
6573          // Check if we have any selections
6574          const hasAnySelection = filterKeys.some(key => selectedOptions[key]);
6575
6576          // ADDITIONAL SAFETY: Never enable continue button for invalid combinations
6577          const isValidCombination = matchedProduct !== null && matchedProduct !== undefined;
6578
6579          // Get dynamic selection counts
6580          const { selected: selectedCount, total: totalRequired } = getSelectionCounts(filterKeys, selectedOptions);
6581          const selectionText = `${selectedCount} OF ${totalRequired} REQUIRED SELECTIONS COMPLETED`;
6582
6583          // Update button state and price display
6584          if (isValidCombination && allOptionsSelected) {
6585            // All selections complete and valid - enable button, show qty selector and price in button
6586            continueBtn.disabled = false;
6587            continueBtn.textContent = `ADD TO BAG - ${formatPrice(matchedProduct.price)}`;
6588            qtyContainer.style.display = 'flex';
6589
6590            // Update max available quantity and reset if current exceeds it
6591            maxAvailableQty = matchedProduct.inventoryQuantity > 0 ? matchedProduct.inventoryQuantity : 1;
6592            if (configuratorQty > maxAvailableQty) {
6593              configuratorQty = maxAvailableQty;
6594            }
6595            syncQtyDisplay();
6596
6597            // Show inline add to cart
6598            if (inlineAtc) {
6599              inlineAtc.style.display = 'block';
6600              document.getElementById('inline-atc-btn').textContent = `ADD TO BAG - ${formatPrice(matchedProduct.price)}`;
6601            }
6602
6603            // Store matched child product handle for addon line item properties
6604            const addonsContainer = document.getElementById('configurator-addons');
6605            if (addonsContainer) addonsContainer.dataset.childHandle = matchedProduct.handle || '';
6606
6607            // Fetch addon products for the matched child product
6608            const addonGidsRaw = matchedProduct.metafields?.cql_addon_product;
6609            if (addonGidsRaw) {
6610              try {
6611                const addonGids = JSON.parse(addonGidsRaw);
6612                if (Array.isArray(addonGids) && addonGids.length > 0) {
6613                  fetchAddonProducts(addonGids).then(addonProducts => {
6614                    window.configuratorData.addonProducts = addonProducts;
6615                    renderAddonProducts(addonProducts);
6616                  });
6617                } else {
6618                  renderAddonProducts([]);
6619                }
6620              } catch (e) {
6621                console.warn('Error parsing addon_product metafield:', e);
6622                renderAddonProducts([]);
6623              }
6624            } else {
6625              window.configuratorData.addonProducts = [];
6626              renderAddonProducts([]);
6627            }
6628
6629            // Update child product ID and load reviews
6630            window.configuratorData.childProductId = matchedProduct.id;
6631            window.loadProductRating();
6632            
6633            // Don't clear highlighting - show alternatives even with valid product
6634            // This allows users to see other valid options they can switch to
6635            highlightAvailableOptions(products, filterKeys, selectedOptions, lastChangedOption);
6636          } else if (hasAnySelection) {
6637            // User has made some selections (partial or complete)
6638            renderAddonProducts([]);
6639            qtyContainer.style.display = 'none';
6640            if (inlineAtc) inlineAtc.style.display = 'none';
6641            if (allOptionsSelected && !isValidCombination) {
6642              continueBtn.disabled = true;
6643              continueBtn.textContent = 'Invalid combination - please adjust selections';
6644            } else {
6645              continueBtn.disabled = true;
6646              continueBtn.textContent = selectionText;
6647            }
6648
6649            // Highlight available options dynamically based on selections
6650            highlightAvailableOptions(products, filterKeys, selectedOptions, lastChangedOption);
6651          } else {
6652            // No selections yet
6653            renderAddonProducts([]);
6654            qtyContainer.style.display = 'none';
6655            if (inlineAtc) inlineAtc.style.display = 'none';
6656            continueBtn.disabled = true;
6657            continueBtn.textContent = selectionText;
6658
6659            // Clear any highlighting
6660            clearOptionHighlighting();
6661          }
6662          
6663          // Update available options based on current selections
6664          updateAvailableOptions(products, filterKeys, selectedOptions);
6665        }
6666
6667        // Count selected and total required options
6668        function getSelectionCounts(filterKeys, selectedOptions) {
6669          let total = 0;
6670          let selected = 0;
6671          for (const filterKey of filterKeys) {
6672            const hasColorOptions = document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).length > 0;
6673            const hasButtonOptions = document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).length > 0;
6674            if (hasColorOptions || hasButtonOptions) {
6675              total++;
6676              if (selectedOptions[filterKey]) {
6677                selected++;
6678              }
6679            }
6680          }
6681          return { selected, total };
6682        }
6683
6684        // Check if all option types have been selected (dynamic)
6685        function areAllOptionsSelected(filterKeys, selectedOptions) {
6686          // Check that each filter key has a selection
6687          for (const filterKey of filterKeys) {
6688            // Check if this filter type exists in the DOM
6689            const hasColorOptions = document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).length > 0;
6690            const hasButtonOptions = document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).length > 0;
6691            
6692            if ((hasColorOptions || hasButtonOptions) && !selectedOptions[filterKey]) {
6693              return false;
6694            }
6695          }
6696          
6697          return true;
6698        }
6699        
6700        // Update which options are available based on current selections (dynamic)
6701        function updateAvailableOptions(products, filterKeys, selectedOptions) {
6702          // Track if we auto-selected anything
6703          let autoSelected = false;
6704
6705          // SMART AUTO-SELECTION: Only auto-select if there's exactly ONE option in the entire group
6706          // This means the customer has no choice to make
6707          filterKeys.forEach(filterKey => {
6708            const isColorType = isColorFilter(filterKey);
6709
6710            if (!selectedOptions[filterKey]) {
6711              if (isColorType) {
6712                // For color filters, check .color-option elements
6713                const totalColorOptions = document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).length;
6714                if (totalColorOptions === 1) {
6715                  const optionValue = document.querySelector(`.color-option[data-option="${filterKey}"]`).dataset.value;
6716                  autoSelectOption(filterKey, optionValue, filterKeys, selectedOptions);
6717                  autoSelected = true;
6718                }
6719              } else {
6720                const totalOptionsInGroup = document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).length;
6721
6722                // Only auto-select if the group has exactly 1 option total (not just 1 available)
6723                if (totalOptionsInGroup === 1) {
6724                  const optionValue = document.querySelector(`.config-button[data-option="${filterKey}"]`).dataset.value;
6725                  autoSelectOption(filterKey, optionValue, filterKeys, selectedOptions);
6726                  autoSelected = true;
6727                }
6728              }
6729            }
6730          });
6731
6732          // If we auto-selected anything, recursively update again
6733          if (autoSelected) {
6734            // Update floating feedback after auto-selection
6735            updateFloatingFeedback(filterKeys, selectedOptions);
6736
6737            const lastChangedOption = window.configuratorData ? window.configuratorData.lastChangedOption : null;
6738            checkSelection(products, filterKeys, selectedOptions, lastChangedOption);
6739          }
6740        }
6741        
6742        // Get products that match current partial selections (dynamic)
6743        function getAvailableProducts(products, filterKeys, selectedOptions) {
6744          return products.filter(product => {
6745            const m = product.metafields;
6746            
6747            // Check each selected option dynamically
6748            for (const filterKey of filterKeys) {
6749              if (selectedOptions[filterKey] && m[filterKey] !== selectedOptions[filterKey]) {
6750                return false;
6751              }
6752            }
6753            
6754            return true;
6755          });
6756        }
6757        
6758        // Update availability of options for a specific type (dynamic)
6759        function updateOptionAvailability(optionType, availableValues, products, filterKeys, selectedOptions) {
6760          const isColorType = isColorFilter(optionType);
6761          
6762          if (isColorType) {
6763            // Color options are always enabled - never disable them
6764            document.querySelectorAll(`.color-option[data-option="${optionType}"]`).forEach(el => {
6765              el.classList.remove('disabled');
6766              el.style.pointerEvents = 'auto';
6767            });
6768          } else {
6769            // Handle buttons - check if each option can create a valid product
6770            const buttons = document.querySelectorAll(`.config-button[data-option="${optionType}"]`);
6771            
6772            buttons.forEach(el => {
6773              const value = el.dataset.value;
6774              // Check if this option value can create a valid product with current selections
6775              const canCreateValidProduct = checkIfOptionCreatesValidProduct(products, optionType, value, filterKeys, selectedOptions);
6776              
6777              // if (canCreateValidProduct) {
6778              //   el.classList.remove('disabled');
6779              //   el.disabled = false;
6780              // } else {
6781              //   el.classList.add('disabled');
6782              //   el.disabled = true;
6783              // }
6784            });
6785          }
6786        }
6787        
6788        // Check if a specific option value can create a valid product (dynamic)
6789        function checkIfOptionCreatesValidProduct(products, optionType, optionValue, filterKeys, selectedOptions) {
6790          return products.some(product => {
6791            const m = product.metafields;
6792            
6793            // Must match this option value
6794            if (m[optionType] !== optionValue) return false;
6795            
6796            // Must match all other selected options (except the one we're checking)
6797            for (const filterKey of filterKeys) {
6798              if (filterKey !== optionType && selectedOptions[filterKey]) {
6799                if (m[filterKey] !== selectedOptions[filterKey]) {
6800                  return false;
6801                }
6802              }
6803            }
6804            
6805            return true; // This product matches all criteria
6806          });
6807        }
6808        
6809        // Count how many options are enabled (not disabled) for a given type
6810        function getEnabledOptionsCount(optionType, products, filterKeys, selectedOptions) {
6811          let count = 0;
6812          document.querySelectorAll(`.config-button[data-option="${optionType}"]`).forEach(el => {
6813            const value = el.dataset.value;
6814            if (checkIfOptionCreatesValidProduct(products, optionType, value, filterKeys, selectedOptions)) {
6815              count++;
6816            }
6817          });
6818          return count;
6819        }
6820        
6821        // Reset only invalid selections when an option changes (dynamic)
6822        function resetInvalidSelections(products, filterKeys, selectedOptions) {
6823          // First, check if current selections make a valid product
6824          const matchedProduct = findMatchingProduct(products, filterKeys, selectedOptions);
6825          
6826          if (matchedProduct) {
6827            return; // All selections are valid, don't reset anything
6828          }
6829          
6830          // Get products available for currently selected options
6831          const availableProducts = getAvailableProducts(products, filterKeys, selectedOptions);
6832          
6833          // Extract available options for current selections (with sort order)
6834          const optionSortOrder = window.configuratorData ? window.configuratorData.optionSortOrder : null;
6835          const availableForCurrent = extractOptions(availableProducts, filterKeys, optionSortOrder);
6836          
6837          // Check each selection and reset if no longer valid
6838          filterKeys.forEach(filterKey => {
6839            const currentValue = selectedOptions[filterKey];
6840            const available = availableForCurrent[filterKey];
6841            
6842            // If option is selected but not available with current selections, reset it
6843            if (currentValue && !available.includes(currentValue)) {
6844              selectedOptions[filterKey] = null;
6845              
6846              // Remove selected class from UI
6847              const isColorType = isColorFilter(filterKey);
6848              if (isColorType) {
6849                document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).forEach(el => {
6850                if (el.dataset.value === currentValue) {
6851                  el.classList.remove('selected');
6852                }
6853              });
6854              } else {
6855                document.querySelectorAll(`.config-button[data-option="${filterKey}"]`).forEach(el => {
6856                  if (el.dataset.value === currentValue) {
6857                    el.classList.remove('selected');
6858                  }
6859                });
6860              }
6861            }
6862          });
6863        }
6864        
6865        // Reset all selections except the specified key (dynamic)
6866        function resetOtherSelections(exceptKey, filterKeys, selectedOptions) {
6867          // Clear state for all options except the specified one
6868          filterKeys.forEach(filterKey => {
6869            if (filterKey !== exceptKey) {
6870              selectedOptions[filterKey] = null;
6871            }
6872          });
6873          
6874          // Remove selected class from UI elements
6875          document.querySelectorAll('.config-button').forEach(el => {
6876            el.classList.remove('selected');
6877          });
6878          
6879          // Also remove from color options if not the except key
6880          filterKeys.forEach(filterKey => {
6881            if (filterKey !== exceptKey && isColorFilter(filterKey)) {
6882              document.querySelectorAll(`.color-option[data-option="${filterKey}"]`).forEach(el => {
6883            el.classList.remove('selected');
6884              });
6885            }
6886          });
6887        }
6888        
6889        // Auto-select an option when it's the only one available (dynamic)
6890        function autoSelectOption(optionType, value, filterKeys, selectedOptions) {
6891          // Update state
6892          selectedOptions[optionType] = value;
6893          
6894          const isColorType = isColorFilter(optionType);
6895          
6896          if (isColorType) {
6897            // Handle color swatches
6898            document.querySelectorAll(`.color-option[data-option="${optionType}"]`).forEach(el => {
6899              if (el.dataset.value === value) {
6900                el.classList.add('selected');
6901              } else {
6902                el.classList.remove('selected');
6903              }
6904            });
6905              } else {
6906            // Handle buttons
6907            document.querySelectorAll(`.config-button[data-option="${optionType}"]`).forEach(el => {
6908              if (el.dataset.value === value) {
6909                el.classList.add('selected');
6910              } else {
6911                el.classList.remove('selected');
6912              }
6913            });
6914          }
6915        }
6916        
6917        // Find matching product based on current selections (dynamic)
6918        function findMatchingProduct(products, filterKeys, selectedOptions) {
6919          //to see what are the selected options to get the valid prodcts uncomment this
6920          // console.log('Finding matching product with selections:', selectedOptions);
6921          return products.find(product => {
6922            const m = product.metafields;
6923            
6924            // Check all filter keys dynamically
6925            for (const filterKey of filterKeys) {
6926              if (selectedOptions[filterKey] && m[filterKey] !== selectedOptions[filterKey]) {
6927                return false;
6928              }
6929            }
6930            
6931            return true;
6932          });
6933        }
6934
6935      })();
6936
6937    </script>
6937
6938    
6938<script src="//ipowerresale.com/cdn/shop/t/130/assets/FetchKlaviyoReview.js?v=114453090226179426451790277981" defer></script>
6938
6939
6940    <style>
6941      /* Floating Feedback Styles */
6942      .floating-feedback {
6943        position: fixed;
6944        top: 50%;
6945        right: 0;
6946        transform: translateY(-50%);
6947        background: white;
6948        border-radius: 12px 0 0 12px;
6949        border-left: 1px solid #E5E7EB;
6950        border-top: 1px solid #E5E7EB;
6951        border-bottom: 1px solid #E5E7EB;
6952        box-shadow: -2px 0 8px rgba(0, 0, 0, 0.1);
6953        z-index: 2;
6954        transition: transform 0.3s ease;
6955        padding: 10px 5px;
6956        display: flex;
6957        align-items: center;
6958        cursor: pointer;
6959      }
6960
6961      .floating-feedback:hover {
6962        background: #FAFAFA;
6963      }
6964
6965      .floating-feedback.collapsed {
6966        transform: translateY(-50%) translateX(0);
6967      }
6968
6969      .floating-feedback.expanded {
6970        transform: translateY(-50%) translateX(0);
6971      }
6972
6973      .floating-feedback__arrow {
6974        display: flex;
6975        align-items: center;
6976        justify-content: center;
6977        color: #9CA3AF;
6978        flex-shrink: 0;
6979        transition: transform 0.3s ease, color 0.2s ease;
6980      }
6981
6982      .floating-feedback:hover .floating-feedback__arrow {
6983        color: #6B7280;
6984      }
6985
6986      .floating-feedback.expanded .floating-feedback__arrow svg {
6987        transform: rotate(180deg);
6988      }
6989
6990      .floating-feedback__items {
6991        display: flex;
6992        flex-direction: column;
6993        gap: 12px;
6994      }
6995
6996      .floating-feedback__item {
6997        display: flex;
6998        align-items: center;
6999        gap: 8px;
7000        position: relative;
7001      }
7002
7003      .floating-feedback__item .config-label__check {
7004        width: 20px;
7005        height: 20px;
7006        flex-shrink: 0;
7007      }
7008
7009      .floating-feedback__item .config-label__check-empty {
7010        width: 20px;
7011        height: 20px;
7012      }
7013
7014      .floating-feedback__item .config-label__check-filled {
7015        width: 20px;
7016        height: 20px;
7017      }
7018
7019      .floating-feedback__label {
7020        font-size: 14px;
7021        font-weight: 500;
7022        color: #374151;
7023        white-space: nowrap;
7024        text-transform: none !important;
7025        opacity: 0;
7026        max-width: 0;
7027        overflow: hidden;
7028        transition: opacity 0.3s ease, max-width 0.3s ease;
7029      }
7030
7031      .floating-feedback.expanded .floating-feedback__label {
7032        opacity: 1;
7033        max-width: 200px;
7034      }
7035
7036      /* Responsive styles */
7037      @media (max-width: 768px) {
7038        .floating-feedback {
7039          padding: 10px 4px;
7040          gap: 6px;
7041        }
7042
7043        .floating-feedback__items {
7044          gap: 10px;
7045        }
7046
7047        .floating-feedback__item .config-label__check {
7048          width: 18px;
7049          height: 18px;
7050        }
7051        .floating-feedback__item .config-label__check-empty {
7052          width: 18px;
7053          height: 18px;
7054        }
7055        .floating-feedback__item .config-label__check-filled {
7056          width: 18px;
7057          height: 18px;
7058        }
7059
7060        .floating-feedback__arrow svg {
7061          width: 14px;
7062          height: 14px;
7063        }
7064
7065        .floating-feedback__label {
7066          font-size: 12px;
7067        }
7068
7069        .floating-feedback.expanded .floating-feedback__label {
7070          max-width: 150px;
7071        }
7072      }
7073    </style>
7074  
7075
7076
7077
7078              </div><div >
7079                <div id="shopify-block-AZXdITk53Vyt3clpIN__afterpay_on_site_messaging_payments_messaging_WgEwWp" class="shopify-block shopify-app-block">
7080<!-- BEGIN app snippet: messaging-component -->
7081
7082<style data-shopify>
7083  #placement-AZXdITk53Vyt3clpIN__afterpay_on_site_messaging_payments_messaging_WgEwWp {
7084    text-align: inherit;
7085    
7086      margin-top: 16px;
7087    
7088    
7089      margin-bottom: 16px;
7090    
7091    
7092  }
7093  
7094    @media only screen and (max-width: 749px) {
7095      #placement-AZXdITk53Vyt3clpIN__afterpay_on_site_messaging_payments_messaging_WgEwWp {
7096        text-align: inherit;
7097        
7098          margin-top: 16px;
7099        
7100        
7101          margin-bottom: 16px;
7102        
7103      }
7104    }
7105  
7106</style>
7107
7108<square-placement
7109    id="placement-AZXdITk53Vyt3clpIN__afterpay_on_site_messaging_payments_messaging_WgEwWp"
7110    data-mpid="ipowerresale.myshopify.com"
7111    data-currency="USD"
7112    data-consumer-locale="en_US"
7113    data-amount=""
7114    data-size="md"
7115    data-show-lower-limit="true"
7116    data-show-upper-limit="true"
7117    data-show-if-outside-limits="true"
7118    data-intro-text="or"
7119    data-show-interest-free="false"
7120    data-payment-amount-is-bold="true"
7121    data-show-with="true"
7122    data-logo-type="badge"
7123    
7124      data-badge-theme="black-on-white"
7125    
7126    data-modal-link-style="circled-info-icon"
7127    data-modal-theme="mint"
7128    data-platform="shopify-app-blocks"
7129></square-placement>
7130
7131<script>
7132
7133</script>
7133
7134
7135
7136
7137
7138
7139
7140<!-- END app snippet -->
7141
7142
7143</div>
7144              </div><div >
7145                <div id="configurator-addons" class="add-ons" style="display: none;">
7146  <h3 class="add-ons-title">Add-Ons:</h3>
7147  <div class="add-ons-products" id="configurator-addons-list">
7148  </div>
7149</div>
7150
7151              </div></div>
7152    </div>
7153  </div>
7154</div>
7154<script>
7155    window.__warrantyModalId = "warranty_modal_Dt8Edm";
7156  </script>
7156<script>
7157  (function () {
7158    function openWarrantyModal(modal) {
7159      if (!modal) return;
7160      modal.removeAttribute('hidden');
7161      modal.setAttribute('aria-hidden', 'false');
7162      document.body.classList.add('warranty-modal-open');
7163      const cb = modal.querySelector('[data-warranty-modal-checkbox]');
7164      if (cb) { cb.checked = false; syncWarrantyAddBtn(modal); }
7165      const focusEl = modal.querySelector('.warranty-modal__close');
7166      if (focusEl) focusEl.focus();
7167    }
7168
7169    function closeWarrantyModal(modal) {
7170      if (!modal) return;
7171      modal.setAttribute('hidden', '');
7172      modal.setAttribute('aria-hidden', 'true');
7173      document.body.classList.remove('warranty-modal-open');
7174    }
7175
7176    function syncWarrantyAddBtn(modal) {
7177      const addBtn = modal.querySelector('[data-warranty-modal-add]');
7178      const checkbox = modal.querySelector('[data-warranty-modal-checkbox]');
7179      if (!addBtn) return;
7180      addBtn.disabled = checkbox ? !checkbox.checked : true;
7181    }
7182
7183    document.querySelectorAll('.warranty-modal').forEach((modal) => {
7184      const checkbox = modal.querySelector('[data-warranty-modal-checkbox]');
7185      if (checkbox) {
7186        checkbox.addEventListener('change', () => syncWarrantyAddBtn(modal));
7187        syncWarrantyAddBtn(modal);
7188      }
7189      modal.querySelectorAll('[data-warranty-modal-close]').forEach((el) => {
7190        el.addEventListener('click', () => closeWarrantyModal(modal));
7191      });
7192      const addBtn = modal.querySelector('[data-warranty-modal-add]');
7193      if (addBtn) {
7194        addBtn.addEventListener('click', () => {
7195          const variantId = addBtn.getAttribute('data-variant-id');
7196          const cb = modal.querySelector('[data-warranty-modal-checkbox]');
7197          if (!variantId || !cb || !cb.checked) return;
7198          const original = addBtn.textContent;
7199          const childHandle = document.getElementById('configurator-addons')?.dataset.childHandle || '';
7200          fetch('/cart/add.js', {
7201            method: 'POST',
7202            headers: { 'Content-Type': 'application/json' },
7203            body: JSON.stringify({
7204              items: [{
7205                id: variantId,
7206                quantity: 1,
7207                properties: { '_addon_for': childHandle }
7208              }]
7209            }),
7210          })
7211            .then((r) => r.json())
7212            .then(() => {
7213              addBtn.textContent = original;
7214              cb.checked = false;
7215              syncWarrantyAddBtn(modal);
7216              closeWarrantyModal(modal);
7217              document.dispatchEvent(new CustomEvent('cart:refresh'));
7218            })
7219            .catch((err) => console.error(err));
7220        });
7221      }
7222    });
7223
7224    // Use event delegation so dynamically-rendered addon info icons also work
7225    document.addEventListener('click', (e) => {
7226      const btn = e.target.closest('[data-warranty-modal-open]');
7227      if (!btn) return;
7228      const id = btn.getAttribute('data-warranty-modal-open');
7229      const modal = document.getElementById('warranty-modal-' + id);
7230      openWarrantyModal(modal);
7231    });
7232
7233    document.addEventListener('keydown', (e) => {
7234      if (e.key !== 'Escape') return;
7235      document.querySelectorAll('.warranty-modal:not([hidden])').forEach((modal) => closeWarrantyModal(modal));
7236    });
7237  })();
7238</script>
7238
7239
7240
7241</section><div id="shopify-section-template--23893840003241__why_buy_section_6HTzgw" class="shopify-section"><style>
7242  .why-buy {
7243    background-image: url('//ipowerresale.com/cdn/shop/files/Logo_Marquee.png?v=1775576355');
7244    background-size: cover;
7245    background-position: center;
7246    background-repeat: no-repeat;
7247    border-radius: 50px;
7248  }
7249
7250  .why-buy__inner {
7251    padding: 144px 72px 234px;
7252  }
7253
7254  .why-buy__header {
7255    text-align: center;
7256  }
7257
7258  .why-buy__heading {
7259    color: #ffffff;
7260    font-size: 48px;
7261    line-height: 52px;
7262    letter-spacing: -1.44px;
7263    text-transform: unset !important;
7264    font-weight: 400;
7265    margin-bottom: 0;
7266  }
7267
7268  .why-buy__grid {
7269    display: flex;
7270    flex-wrap: wrap;
7271    max-width: 1440px;
7272    margin: 0 auto;
7273  }
7274
7275  .why-buy__block {
7276    width: 33.33%;
7277    display: flex;
7278    flex-direction: column;
7279    align-items: center;
7280    padding: 36px 72px;
7281  }
7282
7283  .why-buy__icon-img.image-element {
7284    margin-bottom: 22px;
7285  }
7286
7287  .why-buy__block-title {
7288    color: #ffffff;
7289    font-size: 16px;
7290    line-height: 20px;
7291    letter-spacing: -0.32px;
7292    font-weight: 700;
7293    text-transform: none !important;
7294    margin-bottom: 18px;
7295    text-align: center;
7296  }
7297
7298  .why-buy__block-description {
7299    color: #ffffff;
7300    font-size: 16px;
7301    line-height: 20px;
7302    letter-spacing: -0.32px;
7303    font-weight: 400;
7304    margin: 0;
7305    text-align: center;
7306    font-family: 'Inter-Regular';
7307  }
7308
7309  @media screen and (max-width: 768px) {
7310
7311    .why-buy {
7312      
7313        background-image: url('//ipowerresale.com/cdn/shop/files/Logo_Marquee_1.png?v=1775576377');
7314      
7315    }
7316
7317    .why-buy__inner {
7318      padding: 72px 72px 232px 72px;
7319
7320    }
7321
7322    .why-buy__heading {
7323      font-size: 28px;
7324      line-height: 32px;
7325    }
7326
7327    .why-buy__grid {
7328      flex-direction: column;
7329      gap: 0;
7330    }
7331
7332    .why-buy__block {
7333      width: 100%;
7334      padding: 36px 0 0;
7335    }
7336  }
7337</style><style data-shopify>.why-buy__block--feature_aLndzT .why-buy__icon-img.image-element {
7338      max-width: 100px;
7339      margin-bottom: 0px;
7340    }
7341    .why-buy__block--feature_aLndzT .why-buy__block-title {
7342      max-width: 156px;
7343    }
7344    .why-buy__block--feature_aLndzT .why-buy__block-description {
7345      max-width: 288px;
7346    }
7347    @media screen and (max-width: 768px) {
7348      .why-buy__block--feature_aLndzT .why-buy__icon-img.image-element {
7349        max-width: 100px;
7350        margin-bottom: 0px;
7351      }
7352      .why-buy__block--feature_aLndzT .why-buy__block-title {
7353        max-width: 156px;
7354      }
7355      .why-buy__block--feature_aLndzT .why-buy__block-description {
7356        max-width: 249px;
7357      }
7358      .why-buy__block--feature_aLndzT {
7359        padding-bottom: 0px;
7360      }
7361    }.why-buy__block--feature_e9GGGQ .why-buy__icon-img.image-element {
7362      max-width: 100px;
7363      margin-bottom: 0px;
7364    }
7365    .why-buy__block--feature_e9GGGQ .why-buy__block-title {
7366      max-width: 156px;
7367    }
7368    .why-buy__block--feature_e9GGGQ .why-buy__block-description {
7369      max-width: 288px;
7370    }
7371    @media screen and (max-width: 768px) {
7372      .why-buy__block--feature_e9GGGQ .why-buy__icon-img.image-element {
7373        max-width: 100px;
7374        margin-bottom: 0px;
7375      }
7376      .why-buy__block--feature_e9GGGQ .why-buy__block-title {
7377        max-width: 156px;
7378      }
7379      .why-buy__block--feature_e9GGGQ .why-buy__block-description {
7380        max-width: 249px;
7381      }
7382      .why-buy__block--feature_e9GGGQ {
7383        padding-bottom: 0px;
7384      }
7385    }.why-buy__block--feature_K3xc8R .why-buy__icon-img.image-element {
7386      max-width: 100px;
7387      margin-bottom: 0px;
7388    }
7389    .why-buy__block--feature_K3xc8R .why-buy__block-title {
7390      max-width: 156px;
7391    }
7392    .why-buy__block--feature_K3xc8R .why-buy__block-description {
7393      max-width: 288px;
7394    }
7395    @media screen and (max-width: 768px) {
7396      .why-buy__block--feature_K3xc8R .why-buy__icon-img.image-element {
7397        max-width: 100px;
7398        margin-bottom: 0px;
7399      }
7400      .why-buy__block--feature_K3xc8R .why-buy__block-title {
7401        max-width: 156px;
7402      }
7403      .why-buy__block--feature_K3xc8R .why-buy__block-description {
7404        max-width: 249px;
7405      }
7406      .why-buy__block--feature_K3xc8R {
7407        padding-bottom: 0px;
7408      }
7409    }</style><div
7410  class="why-buy why-buy--template--23893840003241__why_buy_section_6HTzgw"
7411  data-section-id="template--23893840003241__why_buy_section_6HTzgw"
7412  data-section-type="why-buy"
7413>
7414  <div class="why-buy__inner">
7415    <div class="why-buy__header"><h2 class="why-buy__heading">Why Buy from iPowerResale</h2></div><div class="why-buy__grid"><div
7416            class="why-buy__block why-buy__block--feature_aLndzT"
7417            
7418          ><div class="why-buy__icon">
7419
7420
7421
7422<image-element data-aos="image-fade-in" data-aos-offset="150">
7423
7424
7425  
7426<img src="//ipowerresale.com/cdn/shop/files/Guarantee-icon.png?v=1773281615&amp;width=300" alt="" srcset="//ipowerresale.com/cdn/shop/files/Guarantee-icon.png?v=1773281615&amp;width=300 300w" width="300" height="300.0" loading="lazy" class="why-buy__icon-img image-element" sizes="100vw">
7427  
7428
7429
7430</image-element>
7431</div><h3 class="why-buy__block-title">Guaranteed 100% functional.</h3><p class="why-buy__block-description">Free 1-year warranty included with purchase.</p></div><div
7432            class="why-buy__block why-buy__block--feature_e9GGGQ"
7433            
7434          ><div class="why-buy__icon">
7435
7436
7437
7438<image-element data-aos="image-fade-in" data-aos-offset="150">
7439
7440
7441  
7442<img src="//ipowerresale.com/cdn/shop/files/shipping-icon.png?v=1773281614&amp;width=300" alt="" srcset="//ipowerresale.com/cdn/shop/files/shipping-icon.png?v=1773281614&amp;width=300 300w" width="300" height="300.0" loading="lazy" class="why-buy__icon-img image-element" sizes="100vw">
7443  
7444
7445
7446</image-element>
7447</div><h3 class="why-buy__block-title">Free Shipping</h3><p class="why-buy__block-description">Don&#39;t worry about the shipping. We ship for free anywhere in the continental U.S.</p></div><div
7448            class="why-buy__block why-buy__block--feature_K3xc8R"
7449            
7450          ><div class="why-buy__icon">
7451
7452
7453
7454<image-element data-aos="image-fade-in" data-aos-offset="150">
7455
7456
7457  
7458<img src="//ipowerresale.com/cdn/shop/files/return-icon.png?v=1773281614&amp;width=300" alt="" srcset="//ipowerresale.com/cdn/shop/files/return-icon.png?v=1773281614&amp;width=300 300w" width="300" height="300.0" loading="lazy" class="why-buy__icon-img image-element" sizes="100vw">
7459  
7460
7461
7462</image-element>
7463</div><h3 class="why-buy__block-title">14 Days to Decide</h3><p class="why-buy__block-description">With our free 14-day Return Policy, there’s no pressure.</p></div></div></div>
7464</div>
7465
7466
7467</div><section id="shopify-section-template--23893840003241__whats_in_the_box_aaXX8J" class="shopify-section section-whats-in-the-box"><style>
7468  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J {
7469  }
7470  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__inner {
7471    display: flex;
7472    border-radius: 24px;
7473    gap: 72px;
7474    align-items: flex-start;
7475  }
7476  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__content {
7477    width: calc(30% - 36px);
7478  }
7479  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__heading {
7480    font-size: 48px;
7481    line-height: 52px;
7482    font-weight: 400;
7483    letter-spacing: -0.03em;
7484    text-transform: unset !important;
7485    margin: 0 0 36px;
7486    font-family: 'Inter-Regular';
7487    color: #222222;
7488    max-width: 200px;
7489  }
7490  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__subheading {
7491    font-size: 36px;
7492    line-height: 36px;
7493    font-weight: 400;
7494    letter-spacing: -0.03em;
7495    font-family: 'Inter-Regular';
7496    margin: 0;
7497    color: #222222;
7498  }
7499
7500  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__subheading> .metafield-rich_text_field> p> <br> {
7501    height: 18px;
7502  }
7503
7504  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__media {
7505
7506    width: calc(70% - 36px);
7507
7508  }
7509  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__media img {
7510    max-width: 100%;
7511    width: 100%;
7512    height: auto;
7513    object-fit: cover;
7514    aspect-ratio: 874 / 532;
7515    border-radius: 30px;
7516  }
7517
7518  .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J {
7519    padding: 36px 18px;
7520    padding-bottom: 0;
7521  }
7522  @media screen and (min-width: 769px) {
7523    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J {
7524      padding: 72px;
7525      padding-bottom: 0;
7526    }
7527  }
7528  @media screen and (max-width: 768px) {
7529    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__inner {
7530      flex-direction: column;
7531      gap: 36px;
7532      border-radius: 24px;
7533    }
7534    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__content {
7535      width: 100%;
7536    }
7537    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__heading {
7538      font-size: 28px;
7539      max-width: 100%;
7540      margin: 0 auto;
7541      line-height: 32px;
7542      letter-spacing: -0.84px;
7543      margin-bottom: 18px;
7544      text-align: center;
7545    }
7546    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__subheading {
7547      font-size: 24px;
7548      line-height: 28px;
7549      letter-spacing: -0.72px;
7550      text-align: center;
7551    }
7552    .whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J .whats-in-the-box__media {
7553      min-height: 217px;
7554      width: 100%;
7555    }
7556  }
7557</style>
7558
7559<div
7560  class="whats-in-the-box whats-in-the-box--template--23893840003241__whats_in_the_box_aaXX8J page-width"
7561  data-section-id="template--23893840003241__whats_in_the_box_aaXX8J"
7562  data-section-type="whats-in-the-box"
7563>
7564  <div class="whats-in-the-box__inner">
7565    <div class="whats-in-the-box__content"><h2 class="whats-in-the-box__heading">What&#39;s in the box</h2><div class="whats-in-the-box__subheading rte">
7566          <div class="metafield-rich_text_field"><p>iPad Pro<br />
7567Power adapter<br />
7568Charging cable</p></div>
7569        </div></div>
7570    <div class="whats-in-the-box__media"><img
7571          src="//ipowerresale.com/cdn/shop/files/ipad-pro-witb.jpg?v=1776711136&width=1200"
7572          alt=""
7573          width="600"
7574          height="600"
7575          class="whats-in-the-box__image"
7576        ></div>
7577  </div>
7578</div>
7579
7580
7581</section><div id="shopify-section-template--23893840003241__compare_models_section_GMHyRU" class="shopify-section"><link href="//ipowerresale.com/cdn/shop/t/130/assets/custom-collection-
7581product-card.css?v=128704689821368263921790277974" rel="stylesheet" type="text/css" media="all" />
7582
7583
7584  <div class="compare-models-section">
7585    <div class="compare-models-section-inner page-width">
7586      <div class="compare-models-section-inner-title">
7587        <h2>Compare Models</h2>
7588      </div>
7589      
7590        <div class="compare-models-section-inner-cards-wrapper">
7591          
7592            <div class="compare-models-section-inner-card">
7593              <div class="custom-product-card" style=" background-color: ;">
7594  <a
7595    href="/products/apple-ipad-pro-config-parent-better"
7596    class="product-image-wrapper has-secondary-image"
7597  >
7598    
7599      <img
7600        class="product-img primary"
7601        width="100%"
7602        height="100%"
7603        src="//ipowerresale.com/cdn/shop/files/media_98930e0b-f83b-459b-b91e-dad5d9fff883.png?v=1766096980&width=400"
7604        alt="iPad Pro 11-inch M4"
7605        loading="lazy"
7606      >
7607    
7608  </a>
7609
7610  <div class="custom-product-card__content">
7611    <div class="custom-product-card__info">
7612      <h3 class="custom-product-card__title">iPad Pro 11-inch M4</h3>
7613      <div class="custom-product-card__price">
7614        Priced from $849.00
7615      </div><a
7616          href="/products/apple-ipad-pro-config-parent-better"
7617          class="product-card-button"
7618          style="cursor: pointer;"
7619        >
7620          Customize
7621        </a><div class="product-card-specs"><div class="product-card-spec-item">
7622                <span class="spec-label">display</span>
7623                <span class="spec-sublabel">11" Ultra Retina XDR</span>
7624              </div><div class="product-card-spec-item">
7625                <span class="spec-label">processor</span>
7626                <span class="spec-sublabel">Apple M4</span>
7627              </div><div class="product-card-spec-item">
7628                <span class="spec-label">front camera</span>
7629                <span class="spec-sublabel">12MP Ultra Wide with Center Stage</span>
7630              </div><div class="product-card-spec-item">
7631                <span class="spec-label">rear camera</span>
7632                <span class="spec-sublabel">12MP Wide Angle 4K Capable</span>
7633              </div><div class="product-card-spec-item">
7634                <span class="spec-label">security</span>
7635                <span class="spec-sublabel">Face ID</span>
7636              </div><div class="product-card-spec-item">
7637                <span class="spec-label">support</span>
7638                <span class="spec-sublabel">Apple Pencil Pro</span>
7639              </div></div>
7640    </div>
7641  </div>
7642</div>
7643
7644            </div>
7645          
7646            <div class="compare-models-section-inner-card">
7647              <div class="custom-product-card" style=" background-color: ;">
7648  <a
7649    href="/products/apple-ipad-pro-11-inch-m5"
7650    class="product-image-wrapper has-secondary-image"
7651  >
7652    
7653      <img
7654        class="product-img primary"
7655        width="100%"
7656        height="100%"
7657        src="//ipowerresale.com/cdn/shop/files/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668&width=400"
7658        alt="iPad Pro 11-inch M5"
7659        loading="lazy"
7660      >
7661    
7662  </a>
7663
7664  <div class="custom-product-card__content">
7665    <div class="custom-product-card__info">
7666      <h3 class="custom-product-card__title">iPad Pro 11-inch M5</h3>
7667      <div class="custom-product-card__price">
7668        Priced from $979.00
7669      </div><a
7670          href="/products/apple-ipad-pro-11-inch-m5"
7671          class="product-card-button"
7672          style="cursor: pointer;"
7673        >
7674          Customize
7675        </a><div class="product-card-specs"><div class="product-card-spec-item">
7676                <span class="spec-label">display</span>
7677                <span class="spec-sublabel">11" Ultra Retina XDR</span>
7678              </div><div class="product-card-spec-item">
7679                <span class="spec-label">processor</span>
7680                <span class="spec-sublabel">Apple M5</span>
7681              </div><div class="product-card-spec-item">
7682                <span class="spec-label">front camera</span>
7683                <span class="spec-sublabel">12MP Ultra Wide with Center Stage</span>
7684              </div><div class="product-card-spec-item">
7685                <span class="spec-label">rear camera</span>
7686                <span class="spec-sublabel">12MP Wide Angle 4K Capable</span>
7687              </div><div class="product-card-spec-item">
7688                <span class="spec-label">security</span>
7689                <span class="spec-sublabel">Face ID</span>
7690              </div><div class="product-card-spec-item">
7691                <span class="spec-label">support</span>
7692                <span class="spec-sublabel">Apple Pencil Pro</span>
7693              </div></div>
7694    </div>
7695  </div>
7696</div>
7697
7698            </div>
7699          
7700            <div class="compare-models-section-inner-card">
7701              <div class="custom-product-card" style=" background-color: ;">
7702  <a
7703    href="/products/apple-ipad-pro-config-parent-good"
7704    class="product-image-wrapper has-secondary-image"
7705  >
7706    
7707      <img
7708        class="product-img primary"
7709        width="100%"
7710        height="100%"
7711        src="//ipowerresale.com/cdn/shop/files/media_1304f832-553c-4257-b230-54fa70dce890.png?v=1766096981&width=400"
7712        alt="iPad Pro 13-inch M5"
7713        loading="lazy"
7714      >
7715    
7716  </a>
7717
7718  <div class="custom-product-card__content">
7719    <div class="custom-product-card__info">
7720      <h3 class="custom-product-card__title">iPad Pro 13-inch M5</h3>
7721      <div class="custom-product-card__price">
7722        Priced from $1,099.00
7723      </div><a
7724          href="/products/apple-ipad-pro-config-parent-good"
7725          class="product-card-button"
7726          style="cursor: pointer;"
7727        >
7728          Customize
7729        </a><div class="product-card-specs"><div class="product-card-spec-item">
7730                <span class="spec-label">display</span>
7731                <span class="spec-sublabel">13" Ultra Retina XDR</span>
7732              </div><div class="product-card-spec-item">
7733                <span class="spec-label">processor</span>
7734                <span class="spec-sublabel">Apple M5</span>
7735              </div><div class="product-card-spec-item">
7736                <span class="spec-label">front camera</span>
7737                <span class="spec-sublabel">12MP Ultra Wide with Center Stage</span>
7738              </div><div class="product-card-spec-item">
7739                <span class="spec-label">rear camera</span>
7740                <span class="spec-sublabel">12MP Wide Angle 4K Capable</span>
7741              </div><div class="product-card-spec-item">
7742                <span class="spec-label">security</span>
7743                <span class="spec-sublabel">Face ID</span>
7744              </div><div class="product-card-spec-item">
7745                <span class="spec-label">support</span>
7746                <span class="spec-sublabel">Apple Pencil Pro</span>
7747              </div></div>
7748    </div>
7749  </div>
7750</div>
7751
7752            </div>
7753          
7754        </div>
7755      
7756    </div>
7757  </div>
7758
7759<style>
7760    .compare-models-section {
7761      padding: 72px 0;
7762    }
7763
7764    .compare-models-section-inner-title {
7765      text-align: center;
7766    }
7767    .compare-models-section-inner-cards {
7768      display: flex;
7769      flex-wrap: wrap;
7770      gap: 20px;
7771    }
7772    .compare-models-section-inner-cards-wrapper {
7773        display: grid;
7774        grid-template-columns: repeat(3, 1fr);
7775        gap: 18px;
7776    }
7777    .product-card-button {
7778        padding: 17.2px 26.56px;
7779        border-radius: 100px;
7780        font-weight: 500;
7781        font-size: 16px;
7782        line-height: 20px;
7783        letter-spacing: 1.6px;
7784        text-transform: uppercase;
7785        text-decoration: none;
7786        background-color: #1D7F9A;
7787        border: 1px solid #1D7F9A;
7788        box-shadow: inset 0 0 0 1px #1D7F9A;
7789        color: #fff;
7790        cursor: pointer;
7791        transition: all 0.9s ease;
7792        margin-top: 32px;
7793      }
7794      .product-card-button:hover {
7795        border: 1px solid #1D7F9A;
7796        color: #fff;
7797        background-color: #171717;
7798      }
7799      .product-card-specs {
7800        display: flex;
7801        flex-direction: column;
7802        align-items: center;
7803        gap: 14px;
7804        margin-top: 32px;
7805    }
7806    .product-card-spec-item {
7807        display: flex;
7808        flex-direction: column;
7809        align-items: center;
7810        justify-content: center;
7811        gap: 9px;
7812    }
7813
7814    .spec-label {
7815        font-family: Inter, sans-serif;
7816        font-size: 13px;
7817        line-height: 20px;
7818        letter-spacing: 1.3px;
7819        font-weight: 700;
7820        color: #1D7F9A;
7821        text-transform: uppercase;
7822    }
7823    .spec-sublabel {
7824        font-family: Inter, sans-serif;
7825        font-size: 16px;
7826        line-height: 20px;
7827        letter-spacing: -0.32px;
7828        font-weight: 400;
7829        color: #222222;
7830        text-align: center;
7831        margin-bottom: 9px;
7832    }
7833    .compare-models-section-inner-title h2 {
7834        font-size: 48px;
7835        line-height: 52px;
7836        letter-spacing: -1.44px;
7837        font-weight: 400;
7838        color: #222222;
7839        text-transform: unset !important;
7840        font-family: 'Inter-Regular';
7841        text-align: left;
7842        margin-bottom: 36px;
7843    }
7844    @media screen and (max-width: 1024px) {
7845      .compare-models-section-inner-cards-wrapper {
7846        grid-template-columns: repeat(2, 1fr);
7847      }
7848    }
7849    @media screen and (max-width: 768px) {
7850      
7851
7852      .compare-models-section {
7853        padding: 36px 18px;
7854      }
7855      .product-image-wrapper img {
7856        padding: 36px 53.5px;
7857      }
7858      .compare-models-section-inner {
7859        padding: 0;
7860      }
7861      .compare-models-section-inner-title h2 {
7862        font-size: 28px;
7863        line-height: 32px;
7864        letter-spacing: -0.84px;
7865        text-align: center;
7866        margin-bottom: 36px;
7867      }
7868    }
7869    @media screen and (max-width: 560px) {
7870      .compare-models-section-inner-cards-wrapper {
7871        grid-template-columns: repeat(1, 1fr);
7872      }
7873    }
7874</style>
7875
7876</div><div id="shopify-section-template--23893840003241__pdp_faqs_NWmcDi" class="shopify-section"><style>
7877  .faq-section {
7878
7879    background-color: #222222;
7880    background-image: url('//ipowerresale.com/cdn/shop/files/97626370abb83e4961b46809e7349407f3af6dac.png?v=1773283504');
7881    background-size: cover;
7882    background-position: center;
7883    background-repeat: no-repeat;
7884    position: relative;
7885    border-radius: 50px;
7886  }
7887
7888  .faq-section__inner {
7889    width: 60%;
7890    backdrop-filter: blur(15px);
7891    border-radius: 50px;
7892    border: 1px solid #666666;
7893    padding: 72px;
7894  }
7895
7896  .faq-section__heading {
7897    color: #ffffff;
7898    font-size: 48px;
7899    line-height: 52px;
7900    letter-spacing: -1.44px;
7901    text-transform: unset !important;
7902    font-weight: 400;
7903    margin-bottom: 36px;
7904  }
7905
7906  .faq-section__list {
7907    list-style: none;
7908    padding: 0;
7909    margin: 0;
7910    display: flex;
7911    flex-direction: column;
7912
7913  }
7914
7915  .faq-item {
7916
7917    overflow: hidden;
7918    transition: all 0.3s ease;
7919    margin: 0;
7920  }
7921
7922  .faq-item__question {
7923    border-bottom: 1px solid #ffffff;
7924    max-width: 100%;
7925    margin: 0 auto;
7926    padding: 9px 0;
7927    cursor: pointer;
7928    display: flex;
7929    justify-content: space-between;
7930    align-items: center;
7931    color: #ffffff;
7932    font-size: 18px;
7933    line-height: 24px;
7934    font-weight: 500;
7935    letter-spacing: -0.54px;
7936    background: transparent;
7937    text-align: left;
7938    width: 100%;
7939  }
7940
7941  .faq-item__icon {
7942    width: 24px;
7943    height: 24px;
7944    display: flex;
7945    align-items: center;
7946    justify-content: center;
7947    flex-shrink: 0;
7948    margin-left: 20px;
7949    position: relative;
7950  }
7951
7952  .faq-item__icon svg {
7953    position: absolute;
7954    top: 50%;
7955    left: 50%;
7956    transform: translate(-50%, -50%);
7957    transition: opacity 0.3s ease;
7958  }
7959
7960  .faq-item__icon-plus {
7961    opacity: 1;
7962  }
7963
7964  .faq-item__icon-minus {
7965    opacity: 0;
7966  }
7967
7968  .faq-item.active .faq-item__icon-plus {
7969    opacity: 0;
7970  }
7971
7972  .faq-item.active .faq-item__icon-minus {
7973    opacity: 1;
7974  }
7975
7976  .faq-item__answer-wrapper {
7977    max-height: 0;
7978    overflow: hidden;
7979    transition: max-height 0.3s ease;
7980  }
7981
7982  .faq-item__answer {
7983    max-width: 100%;
7984    margin: 0 auto;
7985    padding: 27px 0;
7986    color: #ffffff;
7987    font-size: 16px;
7988    line-height: 20px;
7989    font-weight: 400;
7990    letter-spacing: -0.32px;
7991  }
7992  .faq-item__answer p {
7993    margin: 0;
7994  }
7995  .faq-item.active .faq-item__answer-wrapper {
7996    max-height: 1000px;
7997  }
7998  .faq-section__wrapper {
7999    padding-top: 122px;
8000    padding-bottom: 122px;
8001  }
8002  @media screen and (max-width: 1024px) {
8003    .faq-section__inner {
8004      width: 100%;
8005    }
8006  }
8007  @media screen and (max-width: 768px) {
8008    .faq-section {
8009      
8010    }
8011    .faq-section__inner {
8012      padding: 36px 18px;
8013      border-radius: 30px;
8014    }
8015    .faq-section__wrapper {
8016      min-height: 800px;
8017      display: flex;
8018      align-items: flex-end;
8019      padding-top: 0;
8020      padding-bottom: 18px;
8021    }
8022    .faq-section__heading {
8023      font-size: 28px;
8024      line-height: 32px;
8025      letter-spacing: -0.84px;
8026      margin-bottom: 18px;
8027    }
8028
8029    .faq-item__question {
8030      padding: 9px 0;
8031      font-size: 18px;
8032      line-height: 24px;
8033      letter-spacing: -0.54px;
8034
8035    }
8036
8037    .faq-item__icon {
8038      width: 20px;
8039      height: 20px;
8040      margin-left: 16px;
8041    }
8042  }
8043</style>
8044
8045<div
8046  class="faq-section faq-section--template--23893840003241__pdp_faqs_NWmcDi"
8047  data-section-id="template--23893840003241__pdp_faqs_NWmcDi"
8048  data-section-type="faq-section"
8049>
8050  <div class="faq-section__wrapper page-width">
8051    <div class="faq-section__inner"><h2 class="faq-section__heading">FAQs</h2><ul class="faq-section__list"><li
8052              class="faq-item active"
8053              data-faq-item
8054              
8055            >
8056              <button
8057                type="button"
8058                class="faq-item__question"
8059                aria-expanded="true"
8060              >
8061                <span>What is Open Box?</span>
8062                <span class="faq-item__icon" aria-hidden="true">
8063                  <svg
8064                    class="faq-item__icon-plus"
8065                    width="9"
8066                    height="9"
8067                    viewBox="0 0 9 9"
8068                    fill="none"
8069                    xmlns="http://www.w3.org/2000/svg"
8070                  >
8071                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8072                  </svg>
8073                  <svg
8074                    class="faq-item__icon-minus"
8075                    width="6"
8076                    height="2"
8077                    viewBox="0 0 6 2"
8078                    fill="none"
8079                    xmlns="http://www.w3.org/2000/svg"
8080                  >
8081                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8082                  </svg>
8083                </span>
8084              </button>
8085              <div class="faq-item__answer-wrapper">
8086                <div class="faq-item__answer">
8087                  <p>Open Box devices are buyer’s-remorse retail returns from Apple® Authorized Retailers, returned within the retailer’s return window. Every device is rigorously inspected to meet our highest grading standard: like-new condition, no cosmetic blemishes, full functionality, and the original box and charging accessories included. The box itself may show signs of handling. Learn more about our cosmetic conditions <a href="/blogs/apple-buying-guides/buying-guide-understanding-cosmetic-conditions-for-refurbished-and-pre-owned-devices" target="_blank" title="Cosmetic Grade Breakdown">here</a>.</p>
8088                </div>
8089              </div>
8090            </li><li
8091              class="faq-item "
8092              data-faq-item
8093              
8094            >
8095              <button
8096                type="button"
8097                class="faq-item__question"
8098                aria-expanded="false"
8099              >
8100                <span>Can I get a discount?</span>
8101                <span class="faq-item__icon" aria-hidden="true">
8102                  <svg
8103                    class="faq-item__icon-plus"
8104                    width="9"
8105                    height="9"
8106                    viewBox="0 0 9 9"
8107                    fill="none"
8108                    xmlns="http://www.w3.org/2000/svg"
8109                  >
8110                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8111                  </svg>
8112                  <svg
8113                    class="faq-item__icon-minus"
8114                    width="6"
8115                    height="2"
8116                    viewBox="0 0 6 2"
8117                    fill="none"
8118                    xmlns="http://www.w3.org/2000/svg"
8119                  >
8120                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8121                  </svg>
8122                </span>
8123              </button>
8124              <div class="faq-item__answer-wrapper">
8125                <div class="faq-item__answer">
8126                  <p>We offer our first-time buyers a $15 discount! You can sign up for the discount <a href="https://manage.kmail-lists.com/subscriptions/subscribe?a=SEVKDs&g=UP5aCd" target="_blank" title="Sign up for our email list to receive $15 off your first purchase">here.</a> </p><p></p><p>If you are a returning customer, you can enjoy a $25 discount after you refer your friends or family! They will get $20 off their first purchase! You can find your referral link <a href="https://account.ipowerresale.com/pages/019beaa6-7fca-74e3-b1e1-653f16cc943a" target="_blank" title="Refer your friends to iPowerResale! They get $20 off their first purchase and you get $25 off your next purchase!">here.</a></p><p></p>
8127                </div>
8128              </div>
8129            </li><li
8130              class="faq-item "
8131              data-faq-item
8132              
8133            >
8134              <button
8135                type="button"
8136                class="faq-item__question"
8137                aria-expanded="false"
8138              >
8139                <span>What&#39;s the warranty?</span>
8140                <span class="faq-item__icon" aria-hidden="true">
8141                  <svg
8142                    class="faq-item__icon-plus"
8143                    width="9"
8144                    height="9"
8145                    viewBox="0 0 9 9"
8146                    fill="none"
8147                    xmlns="http://www.w3.org/2000/svg"
8148                  >
8149                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8150                  </svg>
8151                  <svg
8152                    class="faq-item__icon-minus"
8153                    width="6"
8154                    height="2"
8155                    viewBox="0 0 6 2"
8156                    fill="none"
8157                    xmlns="http://www.w3.org/2000/svg"
8158                  >
8159                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8160                  </svg>
8161                </span>
8162              </button>
8163              <div class="faq-item__answer-wrapper">
8164                <div class="faq-item__answer">
8165                  <p>We offer a 1-year limited warranty on all of our devices. In addition, most of our open box devices still have about 6-9 months of Apple® Limited Warranty remaining.</p><p><a href="https://ipowerresale.com/pages/terms-of-limited-warranty" target="_blank" title="https://ipowerresale.com/pages/terms-of-limited-warranty">Terms of our Limited Warranty</a></p>
8166                </div>
8167              </div>
8168            </li><li
8169              class="faq-item "
8170              data-faq-item
8171              
8172            >
8173              <button
8174                type="button"
8175                class="faq-item__question"
8176                aria-expanded="false"
8177              >
8178                <span>Can I add AppleCare+?</span>
8179                <span class="faq-item__icon" aria-hidden="true">
8180                  <svg
8181                    class="faq-item__icon-plus"
8182                    width="9"
8183                    height="9"
8184                    viewBox="0 0 9 9"
8185                    fill="none"
8186                    xmlns="http://www.w3.org/2000/svg"
8187                  >
8188                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8189                  </svg>
8190                  <svg
8191                    class="faq-item__icon-minus"
8192                    width="6"
8193                    height="2"
8194                    viewBox="0 0 6 2"
8195                    fill="none"
8196                    xmlns="http://www.w3.org/2000/svg"
8197                  >
8198                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8199                  </svg>
8200                </span>
8201              </button>
8202              <div class="faq-item__answer-wrapper">
8203                <div class="faq-item__answer">
8204                  <p>While we are not able to add AppleCare+, most of our products are still under Apple's Limited Warranty, with about 6-9 months remaining.</p><p>We often hear from customers that they are able to add AppleCare+ by contacting Apple Support or taking it to an Apple Store.</p>
8205                </div>
8206              </div>
8207            </li><li
8208              class="faq-item "
8209              data-faq-item
8210              
8211            >
8212              <button
8213                type="button"
8214                class="faq-item__question"
8215                aria-expanded="false"
8216              >
8217                <span>How much is shipping?</span>
8218                <span class="faq-item__icon" aria-hidden="true">
8219                  <svg
8220                    class="faq-item__icon-plus"
8221                    width="9"
8222                    height="9"
8223                    viewBox="0 0 9 9"
8224                    fill="none"
8225                    xmlns="http://www.w3.org/2000/svg"
8226                  >
8227                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8228                  </svg>
8229                  <svg
8230                    class="faq-item__icon-minus"
8231                    width="6"
8232                    height="2"
8233                    viewBox="0 0 6 2"
8234                    fill="none"
8235                    xmlns="http://www.w3.org/2000/svg"
8236                  >
8237                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8238                  </svg>
8239                </span>
8240              </button>
8241              <div class="faq-item__answer-wrapper">
8242                <div class="faq-item__answer">
8243                  <p>We ship our devices with FREE 2-day shipping. iMacs, Mac Pros, and Studio Displays are shipped via ground. Express shipping options are available at checkout.</p>
8244                </div>
8245              </div>
8246            </li><li
8247              class="faq-item "
8248              data-faq-item
8249              
8250            >
8251              <button
8252                type="button"
8253                class="faq-item__question"
8254                aria-expanded="false"
8255              >
8256                <span>What is your return policy?</span>
8257                <span class="faq-item__icon" aria-hidden="true">
8258                  <svg
8259                    class="faq-item__icon-plus"
8260                    width="9"
8261                    height="9"
8262                    viewBox="0 0 9 9"
8263                    fill="none"
8264                    xmlns="http://www.w3.org/2000/svg"
8265                  >
8266                    <path d="M3.00542 8.04534V-0.00011158H5.03951V8.04534H3.00542ZM-0.000266314 5.03966V3.00557H8.04519V5.03966H-0.000266314Z" fill="white"/>
8267                  </svg>
8268                  <svg
8269                    class="faq-item__icon-minus"
8270                    width="6"
8271                    height="2"
8272                    viewBox="0 0 6 2"
8273                    fill="none"
8274                    xmlns="http://www.w3.org/2000/svg"
8275                  >
8276                    <path d="M5.30673 -0.000111103V1.92034H-8.86917e-05V-0.000111103H5.30673Z" fill="white"/>
8277                  </svg>
8278                </span>
8279              </button>
8280              <div class="faq-item__answer-wrapper">
8281                <div class="faq-item__answer">
8282                  <p>We include free 14-day returns on all of our products. We want you to be completely satisfied with your purchase!</p>
8283                </div>
8284              </div>
8285            </li></ul></div>
8286  </div>
8287</div>
8288
8289<script>
8290  (function () {
8291    const faqSection = document.querySelector('.faq-section--template--23893840003241__pdp_faqs_NWmcDi');
8292    if (!faqSection) return;
8293
8294    const faqItems = faqSection.querySelectorAll('[data-faq-item]');
8295
8296    faqItems.forEach(function (item) {
8297      const question = item.querySelector('.faq-item__question');
8298
8299      question.addEventListener('click', function () {
8300        const isActive = item.classList.contains('active');
8301
8302        // Close all items
8303        faqItems.forEach(function (otherItem) {
8304          otherItem.classList.remove('active');
8305          const otherQuestion = otherItem.querySelector('.faq-item__question');
8306          otherQuestion.setAttribute('aria-expanded', 'false');
8307        });
8308
8309        // Open clicked item if it wasn't active
8310        if (!isActive) {
8311          item.classList.add('active');
8312          question.setAttribute('aria-expanded', 'true');
8313        }
8314      });
8315    });
8316  })();
8317</script>
8317
8318
8319
8320<style> #shopify-section-template--23893840003241__pdp_faqs_NWmcDi a {color: inherit; text-decoration: underline;} #shopify-section-template--23893840003241__pdp_faqs_NWmcDi p {margin: 0 0 1em;} #shopify-section-template--23893840003241__pdp_faqs_NWmcDi p:last-child {margin-bottom: 0;} </style></div><div id="shopify-section-template--23893840003241__klaviyo_product_reviews_Rv3xK7" class="shopify-section"><style>
8321  .kpr {
8322    display: none;
8323    padding: 60px 0;
8324  }
8325  .kpr.kpr--visible {
8326    display: block;
8327  }
8328  .kpr__container {
8329    max-width: 1400px;
8330    margin: 0 auto;
8331    padding: 0 36px;
8332  }
8333  .kpr__heading {
8334    font-family: var(--typeHeaderPrimary, inherit);
8335    font-size: 32px;
8336    font-weight: 700;
8337    color: #222;
8338    margin: 0 0 40px;
8339    text-align: center;
8340  }
8341 
8342  .kpr__view-all-reviews {
8343    font-size: 15px;
8344    font-weight: 600;
8345    color: #1DACD6;
8346    text-decoration: none;
8347    display: block;
8348    margin-bottom: 24px;
8349  }
8350
8351  /* ── Summary Row ── */
8352  .kpr__summary {
8353    display: flex;
8354    align-items: center;
8355    gap: 48px;
8356    margin-bottom: 48px;
8357    padding: 36px;
8358    background: #f2f4f7;
8359    border-radius: 20px;
8360  }
8361
8362  /* Left: big rating number */
8363  .kpr__rating-overview {
8364    display: flex;
8365    flex-direction: column;
8366    align-items: center;
8367    min-width: 140px;
8368    gap: 8px;
8369  }
8370  .kpr__big-rating {
8371    font-family: var(--typeHeaderPrimary, inherit);
8372    font-size: 56px;
8373    font-weight: 700;
8374    line-height: 1;
8375    color: #222;
8376  }
8377  .kpr__stars-row {
8378    display: flex;
8379    align-items: center;
8380    gap: 3px;
8381  }
8382  .kpr__total-count {
8383    font-size: 14px;
8384    color: #666;
8385    margin-top: 4px;
8386  }
8387
8388  /* Right: histogram bars */
8389  .kpr__histogram {
8390    flex: 1;
8391    display: flex;
8392    flex-direction: column;
8393    gap: 8px;
8394  }
8395  .kpr__hist-row {
8396    display: flex;
8397    align-items: center;
8398    gap: 10px;
8399  }
8400  .kpr__hist-label {
8401    font-size: 14px;
8402    font-weight: 600;
8403    color: #222;
8404    min-width: 14px;
8405    text-align: right;
8406  }
8407  .kpr__hist-star-icon {
8408    width: 12px;
8409    height: 12px;
8410    flex-shrink: 0;
8411  }
8412  .kpr__hist-bar-track {
8413    flex: 1;
8414    height: 10px;
8415    background: #d9dee5;
8416    border-radius: 100px;
8417    overflow: hidden;
8418  }
8419  .kpr__hist-bar-fill {
8420    height: 100%;
8421    background: #1DACD6;
8422    border-radius: 100px;
8423    transition: width 0.6s ease;
8424  }
8425  .kpr__hist-count {
8426    font-size: 13px;
8427    color: #666;
8428    min-width: 28px;
8429  }
8430
8431  /* ── Reviews Carousel ── */
8432  .kpr__carousel-wrapper {
8433    position: relative;
8434  }
8435  .kpr__swiper {
8436    overflow: hidden;
8437  }
8438  .kpr__swiper .swiper-slide {
8439    height: auto !important;
8440  }
8441
8442  /* Review Card */
8443  .kpr__card {
8444    background: #fff;
8445    border: 1px solid #e2e6ed;
8446    border-radius: 20px;
8447    padding: 28px;
8448    display: flex;
8449    flex-direction: column;
8450    gap: 14px;
8451    box-sizing: border-box;
8452    transition: box-shadow 0.25s ease;
8453  }
8454  .kpr__card:hover {
8455    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.06);
8456  }
8457  .kpr__card-header {
8458    display: flex;
8459    align-items: center;
8460    justify-content: space-between;
8461    gap: 10px;
8462  }
8463  .kpr__card-stars {
8464    display: flex;
8465    align-items: center;
8466    gap: 2px;
8467  }
8468  .kpr__card-date {
8469    font-size: 13px;
8470    color: #888;
8471    white-space: nowrap;
8472  }
8473  .kpr__card-title {
8474    font-weight: 700;
8475    font-size: 15px;
8476    color: #222;
8477    margin: 0;
8478    line-height: 1.4;
8479  }
8480  .kpr__card-content {
8481    font-size: 14px;
8482    line-height: 1.6;
8483    color: #444;
8484    margin: 0;
8485  }
8486  .kpr__read-more {
8487    color: #1DACD6;
8488    font-size: 13px;
8489    font-weight: 600;
8490    cursor: pointer;
8491    border: none;
8492    background: none;
8493    padding: 0;
8494    margin-top: 4px;
8495    display: inline;
8496  }
8497  .kpr__read-more:hover {
8498    text-decoration: underline;
8499  }
8500  .kpr__full-text {
8501    display: none;
8502  }
8503  .kpr__truncated-text.kpr--expanded .kpr__short-text {
8504    display: none;
8505  }
8506  .kpr__truncated-text.kpr--expanded .kpr__full-text {
8507    display: inline;
8508  }
8509  .kpr__truncated-text.kpr--expanded .kpr__read-more {
8510    display: none;
8511  }
8512  .kpr__card-images {
8513    display: flex;
8514    gap: 8px;
8515    flex-wrap: wrap;
8516  }
8517  .kpr__card-image {
8518    width: 64px;
8519    height: 64px;
8520    object-fit: cover;
8521    border-radius: 10px;
8522    border: 1px solid #e2e6ed;
8523  }
8524  .kpr__card-footer {
8525    display: flex;
8526    align-items: center;
8527    gap: 8px;
8528    padding-top: 10px;
8529    border-top: 1px solid #eef0f3;
8530  }
8531  .kpr__card-avatar {
8532    width: 32px;
8533    height: 32px;
8534    border-radius: 50%;
8535    background: #1DACD6;
8536    color: #fff;
8537    display: flex;
8538    align-items: center;
8539    justify-content: center;
8540    font-size: 14px;
8541    font-weight: 700;
8542    flex-shrink: 0;
8543  }
8544  .kpr__card-author {
8545    font-weight: 600;
8546    font-size: 14px;
8547    color: #222;
8548  }
8549  .kpr__card-verified {
8550    display: inline-flex;
8551    align-items: center;
8552    gap: 4px;
8553    font-size: 12px;
8554    color: #1DACD6;
8555    font-weight: 600;
8556    margin-left: auto;
8557  }
8558  .kpr__card-verified svg {
8559    width: 14px;
8560    height: 14px;
8561  }
8562
8563  /* Reply */
8564  .kpr__card-reply {
8565    background: #f2f4f7;
8566    border-radius: 12px;
8567    padding: 14px;
8568    font-size: 13px;
8569    line-height: 1.5;
8570    color: #444;
8571  }
8572  .kpr__card-reply strong {
8573    display: block;
8574    margin-bottom: 4px;
8575    color: #222;
8576  }
8577
8578  /* Navigation */
8579  .kpr__nav {
8580    display: flex;
8581    align-items: center;
8582    justify-content: center;
8583    gap: 16px;
8584    margin-top: 36px;
8585  }
8586  .kpr__nav-btn {
8587    display: flex;
8588    align-items: center;
8589    justify-content: center;
8590    width: 44px;
8591    height: 44px;
8592    border-radius: 50%;
8593    background: #ebeff5;
8594    border: none;
8595    cursor: pointer;
8596    transition: background 0.2s ease;
8597    flex-shrink: 0;
8598  }
8599  .kpr__nav-btn:hover {
8600    background: #1DACD6;
8601  }
8602  .kpr__nav-btn:hover svg path {
8603    fill: #fff;
8604  }
8605  .kpr__nav-btn--prev svg {
8606    transform: scaleX(-1);
8607  }
8608  .kpr__pagination {
8609    position: static !important;
8610    width: auto !important;
8611    min-height: 12px;
8612    transform: none !important;
8613  }
8614  .kpr__pagination .swiper-pagination-bullet {
8615    width: 8px !important;
8616    height: 8px !important;
8617    background: #c4d2e0;
8618    opacity: 1 !important;
8619    transform: scale(1) !important;
8620    margin: 0 3px !important;
8621  }
8622  .kpr__pagination .swiper-pagination-bullet-active,
8623  .kpr__pagination .swiper-pagination-bullet-active-main {
8624    background: #1DACD6;
8625  }
8626
8627  /* ── Mobile ── */
8628  @media screen and (max-width: 768px) {
8629    .kpr {
8630      padding: 36px 0;
8631    }
8632    .kpr__container {
8633      padding: 0 18px;
8634    }
8635    .kpr__heading {
8636      font-size: 24px;
8637      margin-bottom: 24px;
8638    }
8639    .kpr__summary {
8640      flex-direction: column;
8641      align-items: center;
8642      gap: 24px;
8643      padding: 24px 20px;
8644    }
8645    .kpr__rating-overview {
8646      min-width: auto;
8647    }
8648    .kpr__big-rating {
8649      font-size: 44px;
8650    }
8651    .kpr__histogram {
8652      width: 100%;
8653      max-width: 100%;
8654    }
8655    .kpr__card {
8656      padding: 20px;
8657      border-radius: 16px;
8658    }
8659    .kpr__nav {
8660      margin-top: 24px;
8661    }
8662  }
8663</style>
8664
8665<div
8666  id="klaviyo-product-reviews"
8667  class="kpr"
8668  data-section-id="template--23893840003241__klaviyo_product_reviews_Rv3xK7"
8669  data-section-type="klaviyo-product-reviews"
8670>
8671  <div class="kpr__container">
8672    <h2 class="kpr__heading">Customer Reviews</h2>
8673    <a class="kpr__view-all-reviews" href="/pages/reviews">View all reviews</a>
8674    <!-- Summary + Histogram (populated by JS) -->
8675    <div class="kpr__summary" id="kpr-summary"></div>
8676
8677    <!-- Reviews Carousel -->
8678    <div class="kpr__carousel-wrapper">
8679      <div class="swiper kpr__swiper kpr__swiper--template--23893840003241__klaviyo_product_reviews_Rv3xK7">
8680        <div class="swiper-wrapper" id="kpr-slides"></div>
8681      </div>
8682
8683      <div class="kpr__nav">
8684        <button class="kpr__nav-btn kpr__nav-btn--prev kpr__prev--template--23893840003241__klaviyo_product_reviews_Rv3xK7" aria-label="Previous review">
8685          <svg xmlns="http://www.w3.org/2000/svg" width="15" height="8" viewBox="0 0 15 8" fill="none">
8686            <path d="M14.354 4.036C14.549 3.84 14.549 3.524 14.354 3.329L11.172 0.147C10.976-0.049 10.66-0.049 10.464 0.147C10.27 0.342 10.27 0.658 10.464 0.854L13.293 3.682L10.464 6.511C10.27 6.706 10.27 7.022 10.464 7.218C10.66 7.413 10.976 7.413 11.172 7.218L14.354 4.036ZM0 3.682V4.182H14V3.682V3.182H0V3.682Z" fill="#171717"/>
8687          </svg>
8688        </button>
8689        <div class="kpr__pagination kpr__pagination--template--23893840003241__klaviyo_product_reviews_Rv3xK7"></div>
8690        <button class="kpr__nav-btn kpr__nav-btn--next kpr__next--template--23893840003241__klaviyo_product_reviews_Rv3xK7" aria-label="Next review">
8691          <svg xmlns="http://www.w3.org/2000/svg" width="15" height="8" viewBox="0 0 15 8" fill="none">
8692            <path d="M14.354 4.036C14.549 3.84 14.549 3.524 14.354 3.329L11.172 0.147C10.976-0.049 10.66-0.049 10.464 0.147C10.27 0.342 10.27 0.658 10.464 0.854L13.293 3.682L10.464 6.511C10.27 6.706 10.27 7.022 10.464 7.218C10.66 7.413 10.976 7.413 11.172 7.218L14.354 4.036ZM0 3.682V4.182H14V3.682V3.182H0V3.682Z" fill="#171717"/>
8693          </svg>
8694        </button>
8695      </div>
8696    </div>
8697  </div>
8698</div>
8699
8700<script>
8701  (function () {
8702    var sectionId = 'template--23893840003241__klaviyo_product_reviews_Rv3xK7';
8703
8704    function renderReviewsSection() {
8705      var reviewData = window.product && window.product.starReview;
8706      if (!reviewData || !reviewData.reviewCount || reviewData.reviewCount === 0) return;
8707
8708      var section = document.getElementById('klaviyo-product-reviews');
8709      if (!section) return;
8710
8711      // Show the section
8712      section.classList.add('kpr--visible');
8713
8714      // ── Render Summary + Histogram ──
8715      var histogram = reviewData.ratingHistogram || [0, 0, 0, 0, 0];
8716      var totalReviews = reviewData.reviewCount;
8717      var maxCount = Math.max.apply(null, histogram);
8718
8719      var summaryHTML = '';
8720      summaryHTML += '<div class="kpr__rating-overview">';
8721      summaryHTML += '  <span class="kpr__big-rating">' + reviewData.starRating.toFixed(1) + '</span>';
8722      summaryHTML += '  <div class="kpr__stars-row">' + generateStarsSVG(reviewData.starRating) + '</div>';
8723      summaryHTML += '  <span class="kpr__total-count">' + totalReviews + ' ' + (totalReviews === 1 ? 'review' : 'reviews') + '</span>';
8724      summaryHTML += '</div>';
8725
8726      summaryHTML += '<div class="kpr__histogram">';
8727      for (var i = 4; i >= 0; i--) {
8728        var count = histogram[i] || 0;
8729        var pct = totalReviews > 0 ? ((count / totalReviews) * 100).toFixed(1) : 0;
8730        summaryHTML += '<div class="kpr__hist-row">';
8731        summaryHTML += '  <span class="kpr__hist-label">' + (i + 1) + '</span>';
8732        summaryHTML += '  <svg class="kpr__hist-star-icon" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M2.826 11.514C2.45 11.752 1.974 11.418 2.07 10.984L2.806 7.633C2.844 7.459 2.786 7.277 2.654 7.157L0.163 4.882C-0.158 4.59 0.022 4.055 0.455 4.015L3.7 3.718C3.887 3.701 4.049 3.581 4.119 3.407L5.36 0.314C5.528-0.105 6.12-0.105 6.288 0.314L7.53 3.407C7.6 3.581 7.761 3.701 7.948 3.718L11.193 4.015C11.626 4.055 11.806 4.59 11.485 4.882L8.994 7.157C8.862 7.277 8.804 7.459 8.843 7.633L9.579 10.984C9.674 11.418 9.198 11.752 8.822 11.514L6.092 9.779C5.929 9.675 5.72 9.675 5.556 9.779L2.826 11.514Z" fill="#1DACD6"/></svg>';
8733        summaryHTML += '  <div class="kpr__hist-bar-track"><div class="kpr__hist-bar-fill" style="width:' + pct + '%"></div></div>';
8734        summaryHTML += '  <span class="kpr__hist-count">' + count + '</span>';
8735        summaryHTML += '</div>';
8736      }
8737      summaryHTML += '</div>';
8738
8739      document.getElementById('kpr-summary').innerHTML = summaryHTML;
8740
8741      // ── Render Review Cards as Swiper Slides ──
8742      var reviews = reviewData.reviews || [];
8743      var slidesHTML = '';
8744
8745      reviews.forEach(function (review) {
8746        var initial = (review.author || '?').charAt(0).toUpperCase();
8747        var dateStr = formatReviewDate(review.created_at);
8748
8749        slidesHTML += '<div class="swiper-slide">';
8750        slidesHTML += '  <div class="kpr__card">';
8751
8752        // Header: stars + date
8753        slidesHTML += '    <div class="kpr__card-header">';
8754        slidesHTML += '      <div class="kpr__card-stars">' + generateStarsSVG(review.rating) + '</div>';
8755        slidesHTML += '      <span class="kpr__card-date">' + dateStr + '</span>';
8756        slidesHTML += '    </div>';
8757
8758        // Title
8759        if (review.title) {
8760          slidesHTML += '    <h3 class="kpr__card-title">' + escapeHTML(review.title) + '</h3>';
8761        }
8762
8763        // Content (170 char limit with read more)
8764        slidesHTML += '    <p class="kpr__card-content">' + truncateWithReadMore(review.content || 'No content', 170) + '</p>';
8765
8766        // Review images
8767        if (review.images && review.images.length > 0) {
8768          slidesHTML += '    <div class="kpr__card-images">';
8769          review.images.forEach(function (img) {
8770            var imgUrl = img.url || img.original || img.thumbnail || '';
8771            if (imgUrl) {
8772              slidesHTML += '      <img class="kpr__card-image" src="' + imgUrl + '" alt="Review image" loading="lazy" />';
8773            }
8774          });
8775          slidesHTML += '    </div>';
8776        }
8777
8778        // Reply
8779        if (review.public_reply_content) {
8780          slidesHTML += '    <div class="kpr__card-reply">';
8781          slidesHTML += '      <strong>' + escapeHTML(review.public_reply_author || 'Store') + ':</strong>';
8782          slidesHTML += '      <span>' + truncateWithReadMore(review.public_reply_content, 100) + '</span>';
8783          slidesHTML += '    </div>';
8784        }
8785
8786        // Footer: avatar + author + verified
8787        slidesHTML += '    <div class="kpr__card-footer">';
8788        slidesHTML += '      <div class="kpr__card-avatar">' + initial + '</div>';
8789        slidesHTML += '      <span class="kpr__card-author">' + escapeHTML(review.author) + '</span>';
8790        if (review.verified) {
8791          slidesHTML += '      <span class="kpr__card-verified">';
8792          slidesHTML += '        <svg viewBox="0 0 24 24" fill="none"><path d="M9 12l2 2 4-4" stroke="#1DACD6" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><circle cx="12" cy="12" r="10" stroke="#1DACD6" stroke-width="2"/></svg>';
8793          slidesHTML += '        Verified';
8794          slidesHTML += '      </span>';
8795        }
8796        slidesHTML += '    </div>';
8797
8798        slidesHTML += '  </div>';
8799        slidesHTML += '</div>';
8800      });
8801
8802      document.getElementById('kpr-slides').innerHTML = slidesHTML;
8803
8804      // ── Init Swiper ──
8805      initSwiper();
8806    }
8807
8808    function initSwiper() {
8809      if (typeof Swiper === 'undefined') {
8810        setTimeout(initSwiper, 100);
8811        return;
8812      }
8813
8814      new Swiper('.kpr__swiper--' + sectionId, {
8815        slidesPerView: 1,
8816        spaceBetween: 20,
8817        grabCursor: true,
8818        pagination: {
8819          el: '.kpr__pagination--' + sectionId,
8820          clickable: true,
8821          dynamicBullets: true,
8822          dynamicMainBullets: 1,
8823        },
8824        navigation: {
8825          prevEl: '.kpr__prev--' + sectionId,
8826          nextEl: '.kpr__next--' + sectionId,
8827        },
8828        breakpoints: {
8829          0: {
8830            slidesPerView: 1,
8831            slidesPerGroup: 1,
8832            spaceBetween: 16,
8833          },
8834          640: {
8835            slidesPerView: 2,
8836            slidesPerGroup: 2,
8837            spaceBetween: 20,
8838          },
8839          1024: {
8840            slidesPerView: 3,
8841            slidesPerGroup: 3,
8842            spaceBetween: 24,
8843          },
8844        },
8845      });
8846    }
8847
8848    function escapeHTML(str) {
8849      if (!str) return '';
8850      var div = document.createElement('div');
8851      div.appendChild(document.createTextNode(str));
8852      return div.innerHTML;
8853    }
8854
8855    function truncateWithReadMore(text, limit) {
8856      var escaped = escapeHTML(text || '');
8857      if (!text || text.length <= limit) return escaped;
8858      var truncated = escapeHTML(text.substring(0, limit) + '...');
8859      return '<span class="kpr__truncated-text">'
8860        + '<span class="kpr__short-text">' + truncated + '</span>'
8861        + '<span class="kpr__full-text">' + escaped + '</span>'
8862        + ' <button class="kpr__read-more" onclick="this.parentElement.classList.add(\'kpr--expanded\')">Read more</button>'
8863        + '</span>';
8864    }
8865
8866    // Listen for data ready event
8867    document.addEventListener('klaviyo:reviews-loaded', renderReviewsSection);
8868
8869    // Also try if data already loaded
8870    if (window.product && window.product.starReview && window.product.starReview.reviewCount > 0) {
8871      renderReviewsSection();
8872    }
8873  })();
8874</script>
8874<script src="//ipowerresale.com/cdn/shop/t/130/assets/FetchKlaviyoReview.js?v=114453090226179426451790277981" defer></script>
8874
8875  
8875<script>
8876    window.klaviyoProductId = 8832364773545;
8877    document.addEventListener('DOMContentLoaded', function () {
8878      if (typeof loadProductRating === 'function') {
8879        loadProductRating(8832364773545);
8880      } else {
8881        // Script may still be loading due to defer, wait for it
8882        var checkInterval = setInterval(function () {
8883          if (typeof loadProductRating === 'function') {
8884            clearInterval(checkInterval);
8885            loadProductRating(8832364773545);
8886          }
8887        }, 50);
8888      }
8889    });
8890  </script>
8890
8891</div>
8892      </main><!-- BEGIN sections: footer-group -->
8893<section id="shopify-section-sections--23893840199849__custom_footer_AxCncV" class="shopify-section shopify-section-group-footer-group section"><style data-shopify>.custom-footer-sections--23893840199849__custom_footer_AxCncV {
8894    background: radial-gradient(80.42% 142.96% at 84.9% 55.37%, #003847 0%, #001E26 62.02%, #171717 100%);
8895    border-top-right-radius: 50px;
8896    border-top-left-radius: 50px;
8897  }
8898
8899  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__wrapper {
8900    max-width: 1440px;
8901    margin: 0 auto;
8902    padding: 72px;
8903  }.custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__wrapper {
8904    padding-bottom: 144px;
8905  }.custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__top {
8906    display: flex;
8907    justify-content: space-between;
8908    gap: 72px;
8909    margin-bottom: 72px;
8910  }
8911
8912  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__logo {
8913    flex-shrink: 0;
8914    max-width: 220px;
8915  }
8916
8917  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__logo img {
8918    max-width: 290px;
8919    height: auto;
8920  }
8921
8922  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menus {
8923    display: flex;
8924    flex-grow: 1;
8925    justify-content: space-between;
8926
8927  }
8928
8929  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menu-list {
8930    list-style: none;
8931    padding: 0;
8932    margin: 0;
8933  }
8934
8935  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menu-item {
8936    margin-bottom: 18px;
8937  }
8938
8939  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menu-item:last-child {
8940    margin-bottom: 0;
8941  }
8942
8943  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menu-title {
8944    color: #ffffff;
8945    font-size: 16px;
8946    line-height: 16px;
8947    letter-spacing: -0.02em;
8948    font-weight: 500;
8949    font-family: 'Inter-Medium';
8950    margin: 0 0 18px 0;
8951    text-transform: unset;
8952  }
8953
8954  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menu-link {
8955    color: #ffffff;
8956    text-decoration: none;
8957    font-size: 16px;
8958    line-height: 16px;
8959    font-weight: 300;
8960    letter-spacing: -0.02em;
8961    font-family: 'Inter';
8962  }
8963
8964  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter {
8965    max-width: 262px;
8966    flex-shrink: 0;
8967  }
8968
8969  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-heading {
8970    color: #ffffff;
8971    font-size: 28px;
8972    line-height: 32px;
8973    font-weight: 500;
8974    margin: 0 0 9px 0;
8975    letter-spacing: -0.03em;
8976    font-family: 'Inter-Medium';
8977    text-transform: unset !important;
8978  }
8979
8980  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-text {
8981    color: #ffffff;
8982    font-size: 16px;
8983    line-height: 20px;
8984    margin: 0 0 24px 0;
8985    letter-spacing: -0.02em;
8986    font-weight: 400;
8987  }
8988
8989  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-form {
8990    display: flex;
8991    margin-bottom: 36px;
8992  }
8993
8994  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-input {
8995    flex: 1;
8996    border: none;
8997    border-bottom: 1px solid #ffffff;
8998    outline: none;
8999    font-size: 16px;
9000    line-height: 20px;
9001    letter-spacing: -0.02em;
9002    font-weight: 400;
9003    max-width: 156px;
9004    padding: 9px 18px;
9005    background: #fff;
9006    color: #222222;
9007    border-top-left-radius: 40px;
9008    border-bottom-left-radius: 40px;
9009  }
9010
9011  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-input::placeholder {
9012    color: #222222;
9013    font-size: 16px;
9014    line-height: 20px;
9015    letter-spacing: -0.02em;
9016  }
9017
9018  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-button {
9019    color: #FFFFFF;
9020    font-size: 16px;
9021    line-height: 20px;
9022    letter-spacing: 0.10em;
9023    font-weight: 500;
9024    font-family: 'Inter-Medium';
9025    text-transform: uppercase;
9026    padding: 9px 18px;
9027    background: #1D7F9A;
9028    border: 1px solid #1D7F9A;
9029    cursor: pointer;
9030    transition: background 0.2s ease;
9031    white-space: nowrap;
9032    border-top-right-radius: 40px;
9033    border-bottom-right-radius: 40px;
9034  }
9035
9036  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-button:hover {
9037    background: #171717;
9038  }
9039
9040  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__socials {
9041    display: flex;
9042    gap: 18px;
9043    align-items: center;
9044  }
9045
9046  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__social-link {
9047    color: #FFFFFF;
9048  }
9049
9050
9051  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__social-link svg {
9052    width: 25px;
9053    height: 25px;
9054    display: block;
9055  }
9056
9057  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__bottom {
9058    display: flex;
9059    justify-content: flex-start;
9060    align-items: center;
9061    gap: 9px;
9062  }
9063
9064  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__copyright {
9065    margin: 0;
9066    font-size: 16px;
9067    line-height: 20px;
9068    letter-spacing: -0.02em;
9069    font-weight: 400;
9070    color: #ffffff;
9071
9072  }
9073
9074  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__legal-links {
9075    display: flex;
9076    gap: 6px;
9077    align-items: center;
9078    font-size: 16px;
9079    line-height: 20px;
9080    color: #ffffff;
9081    letter-spacing: -0.02em;
9082
9083  }
9084
9085
9086  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__legal-link {
9087    color: #ffffff;
9088    font-size: 16px;
9089    line-height: 20px;
9090    text-decoration: underline;
9091    letter-spacing: -0.02em;
9092    font-weight: 400;
9093    font-family: "ABC Diatype Regular";
9094  }
9095
9096  /* Mobile Accordion */
9097  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile {
9098    display: none;
9099  }
9100
9101  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion {
9102    border-bottom: 1px solid rgba(255,255,255,0.15);
9103  }
9104
9105  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-header {
9106    display: flex;
9107    justify-content: space-between;
9108    align-items: center;
9109    padding: 16px 0;
9110    cursor: pointer;
9111    background: none;
9112    border: none;
9113    width: 100%;
9114    text-align: left;
9115  }
9116
9117  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-title {
9118    color: #ffffff;
9119    margin: 0;
9120    letter-spacing: -0.02em;
9121    line-height: 16px;
9122    font-size: 16px;
9123    font-weight: 700;
9124    font-family: 'Inter-Bold';
9125    text-transform: uppercase;
9126  }
9127
9128  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-icon {
9129    display: flex;
9130    align-items: center;
9131    justify-content: center;
9132    width: 20px;
9133    height: 20px;
9134    color: #ffffff;
9135  }
9136
9137  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-icon-plus {
9138    display: block;
9139  }
9140
9141  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-icon-minus {
9142    display: none;
9143  }
9144
9145  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion.active .footer__accordion-icon-plus {
9146    display: none;
9147  }
9148
9149  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion.active .footer__accordion-icon-minus {
9150    display: block;
9151  }
9152
9153  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-content {
9154    max-height: 0;
9155    overflow: hidden;
9156    transition: max-height 0.3s ease;
9157  }
9158
9159  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion.active .footer__accordion-content {
9160    max-height: 500px;
9161  }
9162
9163  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list {
9164    list-style: none;
9165    padding: 0 0 16px 0;
9166    margin: 0;
9167  }
9168
9169  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list li {
9170    margin-bottom: 14px;
9171  }
9172
9173  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list li:last-child {
9174    margin-bottom: 0;
9175  }
9176
9177  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list a {
9178    color: #ffffff;
9179    font-size: 16px;
9180    line-height: 16px;
9181    letter-spacing: -0.02em;
9182    font-weight: 400;
9183    text-decoration: none;
9184    font-family: 'Inter-Regular';
9185  }
9186
9187  @media (max-width: 1050px) and (min-width: 939px) {
9188    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__bottom {
9189    flex-direction: column;
9190  }
9191  }
9192
9193  @media (max-width: 940px) and (min-width: 769px) {
9194
9195  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__wrapper {
9196    padding: 72px 36px;
9197  }
9198
9199  .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__bottom {
9200    flex-direction: column;
9201  }
9202  }
9203
9204  @media (max-width: 1100px) and (min-width: 769px) {
9205    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menus {
9206      gap: 16px;
9207    }
9208    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__top {
9209      gap: 36px;
9210    }
9211    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-input {
9212      max-width: 100% !important;
9213    }
9214  }
9215
9216  @media (max-width: 880px) and (min-width: 769px) {
9217    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__menus {
9218      flex-wrap: wrap;
9219    }
9220  }
9221
9222  @media (max-width: 1020px) and (min-width: 769px) {
9223    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter {
9224      width: auto;
9225    }
9226    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-form {
9227      /* flex-direction: column !important; */
9228    }
9229    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__logo img {
9230      max-width: 180px !important;
9231    }
9232  }
9233
9234  @media screen and (max-width: 768px) {
9235
9236  .custom-footer-sections--23893840199849__custom_footer_AxCncV {
9237    background: linear-gradient(352.2deg, #003847 6.44%, #001E26 54.32%, #171717 83.65%);
9238    border-top-right-radius: 30px;
9239    border-top-left-radius: 30px;
9240  }
9241
9242    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__wrapper {
9243      padding: 36px;
9244    }
9245    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__top {
9246      display: none;
9247    }
9248    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile {
9249      display: block;
9250    }
9251    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-logo {
9252      text-align: center;
9253      margin-bottom: 36px;
9254    }
9255    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-logo img {
9256      max-width: 100%;
9257        width: 100%;
9258        height: auto;
9259        margin: 0 auto;
9260    }
9261    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-newsletter {
9262      text-align: center;
9263      margin-bottom: 36px;
9264    }
9265    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-newsletter .footer__newsletter-heading {
9266      text-align: left;
9267        font-size: 28px;
9268        line-height: 32px;
9269        font-family: 'Inter-Medium';
9270        font-weight: 500;
9271        margin-bottom: 9px;
9272    }
9273    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-newsletter .footer__newsletter-text {
9274      font-size: 14px;
9275        line-height: 20px;
9276        letter-spacing: 0;
9277        text-align: left;
9278    }
9279    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-newsletter .footer__newsletter-form {
9280      justify-content: center; 
9281    }
9282    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-newsletter .footer__newsletter-input {
9283      max-width: 100% !important;
9284    }
9285    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__mobile-socials {
9286      display: flex;
9287        justify-content: flex-start;
9288        gap: 18px;
9289        margin-bottom: 36px;
9290    }
9291    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion {
9292      border: none;
9293      margin-bottom: 18px;
9294    }
9295    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-header {
9296      padding: 0;
9297    }
9298    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list {
9299      padding: 0 !important;
9300      padding-top: 18px !important;
9301    }
9302    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list li {
9303      margin-bottom: 18px;
9304    }
9305    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__bottom {
9306      flex-direction: column;
9307        align-items: center;
9308        gap: 18px;
9309        padding-top: 36px;
9310    }
9311    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__legal-links {
9312      flex-wrap: wrap;
9313      justify-content: center;
9314    }
9315
9316    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-title { 
9317      font-weight: 500;
9318      font-family: 'Inter-Medium';
9319      text-transform: capitalize !important;
9320    }
9321
9322
9323    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__accordion-list a { 
9324      font-weight: 300;
9325      font-family: 'Inter';
9326    }
9327
9328    .custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__legal-link { 
9329      font-family: 'Inter';
9330    }
9331
9332  }</style><footer class="custom-footer-sections--23893840199849__custom_footer_AxCncV">
9333  <div class="footer__wrapper"><div class="footer__top">
9334      <div class="footer__logo"><a href="/">
9335            <img src="//ipowerresale.com/cdn/shop/files/svg840.svg?v=1772971322&width=300" alt="iPowerResale" loading="lazy">
9336          </a></div>
9337
9338      <div class="footer__menus"><nav class="footer__menu-column" ><h3 class="footer__menu-title">Shop</h3><ul class="footer__menu-list"><li class="footer__menu-item">
9339                    <a href="/pages/mac" class="footer__menu-link">Mac</a>
9340                  </li><li class="footer__menu-item">
9341                    <a href="/pages/ipad" class="footer__menu-link">iPad</a>
9342                  </li><li class="footer__menu-item">
9343                    <a href="/collections/iphone" class="footer__menu-link">iPhone</a>
9344                  </li><li class="footer__menu-item">
9345                    <a href="/collections/watch?filter.mfield_cql_parent_product=true" class="footer__menu-link">Watch</a>
9346                  </li><li class="footer__menu-item">
9347                    <a href="/collections/airpods" class="footer__menu-link">Airpods</a>
9348                  </li><li class="footer__menu-item">
9349                    <a href="/collections/accessories?filter.mfield_cql_parent_product=false" class="footer__menu-link">Accessories</a>
9350                  </li></ul>
9351            </nav><nav class="footer__menu-column" ><h3 class="footer__menu-title">Service </h3><ul class="footer__menu-list"><li class="footer__menu-item">
9352                    <a href="/pages/service-support" class="footer__menu-link">Service & Support</a>
9353                  </li><li class="footer__menu-item">
9354                    <a href="/pages/troubleshooting-guides" class="footer__menu-link">Troubleshooting Guides</a>
9355                  </li><li class="footer__menu-item">
9356                    <a href="/blogs/apple-buying-guides" class="footer__menu-link">Buying Guides</a>
9357                  </li><li class="footer__menu-item">
9358                    <a href="/pages/the-ipower-promise" class="footer__menu-link">The iPower Promise</a>
9359                  </li><li class="footer__menu-item">
9360                    <a href="/blogs/tech-insights" class="footer__menu-link">iPower Insights</a>
9361                  </li><li class="footer__menu-item">
9362                    <a href="/pages/faq" class="footer__menu-link">FAQs</a>
9363                  </li></ul>
9364            </nav><nav class="footer__menu-column" ><h3 class="footer__menu-title">Company</h3><ul class="footer__menu-list"><li class="footer__menu-item">
9365                    <a href="/pages/about-us" class="footer__menu-link">About Us</a>
9366                  </li><li class="footer__menu-item">
9367                    <a href="/pages/corporate-buyers" class="footer__menu-link">Corporate Buyers</a>
9368                  </li><li class="footer__menu-item">
9369                    <a href="/pages/apple-for-education" class="footer__menu-link">Educational Buyers</a>
9370                  </li><li class="footer__menu-item">
9371                    <a href="/pages/contact" class="footer__menu-link">Contact Us</a>
9372                  </li><li class="footer__menu-item">
9373                    <a href="/pages/reviews" class="footer__menu-link">Reviews</a>
9374                  </li><li class="footer__menu-item">
9375                    <a href="/pages/us-privacy-requests" class="footer__menu-link">Privacy</a>
9376                  </li></ul>
9377            </nav></div><div class="footer__newsletter" ><h2 class="footer__newsletter-heading">Stay in Touch</h2><p class="footer__newsletter-text">Sign up today for exclusive offers!</p><form class="footer__newsletter-form" action="/contact#contact_form" method="post">
9378            <input type="hidden" name="form_type" value="customer">
9379            <input type="hidden" name="contact[tags]" value="newsletter">
9380            <input
9381              type="email"
9382              name="contact[email]"
9383              class="footer__newsletter-input"
9384              placeholder="Email address"
9385              required
9386            >
9387            <button type="submit" class="footer__newsletter-button">
9388              Submit
9389            </button>
9390          </form>
9391          <div class="footer__socials"><a href="https://www.facebook.com/people/iPowerResale/61560188386080/" class="footer__social-link" target="_blank" rel="noopener" aria-label="Facebook">
9392                <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewB
9392ox="0 0 25 25" fill="none">
9393                  <path fill-rule="evenodd" clip-rule="evenodd" d="M14.4795 25V12.4985H18.0295L18.5 8.19046H14.4795L14.4855 6.03423C14.4855 4.91062 14.5953 4.30856 16.2555 4.30856H18.4749V0H14.9243C10.6595 0 9.1584 2.08988 9.1584 5.6044V8.19095H6.5V12.499H9.1584V25H14.4795Z" fill="white"/>
9394                </svg>
9395              </a><a href="https://www.linkedin.com/company/ipowerresale/" class="footer__social-link" target="_blank" rel="noopener" aria-label="LinkedIn">
9396                <svg xmlns="http://www.w3.org/2000/svg" width="26" height="25" viewBox="0 0 26 25" fill="none">
9397                  <g clip-path="url(#clip0_footer_linkedin_desktop)">
9398                    <mask id="mask0_footer_linkedin_desktop" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="26" height="25">
9399                      <path fill-rule="evenodd" clip-rule="evenodd" d="M26 25H20.6126V16.8795C20.6126 14.9429 20.5784 12.4519 17.8132 12.4519C15.0105 12.4519 14.5825 14.5624 14.5825 16.7406V25H9.20063V8.30086H14.3657V10.5841H14.4394C15.158 9.27086 16.9152 7.88651 19.5364 7.88651C24.992 7.88651 26 11.3441 26 15.8418V25ZM3.12622 6.0199C1.39508 6.0199 0 4.67148 0 3.00934C0 1.34827 1.39508 0 3.12622 0C4.84946 0 6.24921 1.34827 6.24921 3.00934C6.24921 4.67148 4.84946 6.0199 3.12622 6.0199ZM5.82111 25H0.427959V8.30086H5.82111V25Z" fill="white"/>
9400                    </mask>
9401                    <g mask="url(#mask0_footer_linkedin_desktop)">
9402                      <path d="M-6.48828 -6.25H32.4879V31.25H-6.48828V-6.25Z" fill="#F6F1DC"/>
9403                    </g>
9404                  </g>
9405                  <defs>
9406                    <clipPath id="clip0_footer_linkedin_desktop">
9407                      <rect width="26" height="25" fill="white"/>
9408                    </clipPath>
9409                  </defs>
9410                </svg>
9411              </a></div>
9412        </div></div><div class="footer__mobile"><div class="footer__mobile-newsletter"><h2 class="footer__newsletter-heading">Stay in Touch</h2><p class="footer__newsletter-text">Sign up today for exclusive offers!</p><form class="footer__newsletter-form" action="/contact#contact_form" method="post">
9413            <input type="hidden" name="form_type" value="customer">
9414            <input type="hidden" name="contact[tags]" value="newsletter">
9415            <input
9416              type="email"
9417              name="contact[email]"
9418              class="footer__newsletter-input"
9419              placeholder="Email address"
9420              required
9421            >
9422            <button type="submit" class="footer__newsletter-button">
9423              Submit
9424            </button>
9425          </form>
9426        </div>
9427
9428        <div class="footer__mobile-socials"><a href="https://www.facebook.com/people/iPowerResale/61560188386080/" class="footer__social-link" target="_blank" rel="noopener" aria-label="Facebook">
9429              <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" viewBox="0 0 25 25" fill="none">
9430                <path fill-rule="evenodd" clip-rule="evenodd" d="M14.4795 25V12.4985H18.0295L18.5 8.19046H14.4795L14.4855 6.03423C14.4855 4.91062 14.5953 4.30856 16.2555 4.30856H18.4749V0H14.9243C10.6595 0 9.1584 2.08988 9.1584 5.6044V8.19095H6.5V12.499H9.1584V25H14.4795Z" fill="white"/>
9431              </svg>
9432            </a><a href="https://www.linkedin.com/company/ipowerresale/" class="footer__social-link" target="_blank" rel="noopener" aria-label="LinkedIn">
9433              <svg xmlns="http://www.w3.org/2000/svg" width="26" height="25" viewBox="0 0 26 25" fill="none">
9434                <g clip-path="url(#clip0_footer_linkedin_mobile)">
9435                  <mask id="mask0_footer_linkedin_mobile" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="26" height="25">
9436                    <path fill-rule="evenodd" clip-rule="evenodd" d="M26 25H20.6126V16.8795C20.6126 14.9429 20.5784 12.4519 17.8132 12.4519C15.0105 12.4519 14.5825 14.5624 14.5825 16.7406V25H9.20063V8.30086H14.3657V10.5841H14.4394C15.158 9.27086 16.9152 7.88651 19.5364 7.88651C24.992 7.88651 26 11.3441 26 15.8418V25ZM3.12622 6.0199C1.39508 6.0199 0 4.67148 0 3.00934C0 1.34827 1.39508 0 3.12622 0C4.84946 0 6.24921 1.34827 6.24921 3.00934C6.24921 4.67148 4.84946 6.0199 3.12622 6.0199ZM5.82111 25H0.427959V8.30086H5.82111V25Z" fill="white"/>
9437                  </mask>
9438                  <g mask="url(#mask0_footer_linkedin_mobile)">
9439                    <path d="M-6.48828 -6.25H32.4879V31.25H-6.48828V-6.25Z" fill="#F6F1DC"/>
9440                  </g>
9441                </g>
9442                <defs>
9443                  <clipPath id="clip0_footer_linkedin_mobile">
9444                    <rect width="26" height="25" fill="white"/>
9445                  </clipPath>
9446                </defs>
9447              </svg>
9448            </a></div><div class="footer__mobile-logo"><a href="/">
9449            <img src="//ipowerresale.com/cdn/shop/files/svg840.svg?v=1772971322&width=240" alt="iPowerResale" loading="lazy">
9450          </a></div><div class="footer__accordion" data-accordion >
9451            <button class="footer__accordion-header" type="button">
9452              <span class="footer__accordion-title">Shop</span>
9453              <span class="footer__accordion-icon">
9454                <svg class="footer__accordion-icon-plus" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
9455                  <path d="M6 1V11M1 6H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9456                </svg>
9457                <svg class="footer__accordion-icon-minus" xmlns="http://www.w3.org/2000/svg" width="12" height="2" viewBox="0 0 12 2" fill="none">
9458                  <path d="M1 1H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9459                </svg>
9460              </span>
9461            </button>
9462            <div class="footer__accordion-content">
9463              <ul class="footer__accordion-list"><li><a href="/pages/mac">Mac</a></li><li><a href="/pages/ipad">iPad</a></li><li><a href="/collections/iphone">iPhone</a></li><li><a href="/collections/watch?filter.mfield_cql_parent_product=true">Watch</a></li><li><a href="/collections/airpods">Airpods</a></li><li><a href="/collections/accessories?filter.mfield_cql_parent_product=false">Accessories</a></li></ul>
9464            </div>
9465          </div><div class="footer__accordion" data-accordion >
9466            <button class="footer__accordion-header" type="button">
9467              <span class="footer__accordion-title">Service </span>
9468              <span class="footer__accordion-icon">
9469                <svg class="footer__accordion-icon-plus" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
9470                  <path d="M6 1V11M1 6H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9471                </svg>
9472                <svg class="footer__accordion-icon-minus" xmlns="http://www.w3.org/2000/svg" width="12" height="2" viewBox="0 0 12 2" fill="none">
9473                  <path d="M1 1H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9474                </svg>
9475              </span>
9476            </button>
9477            <div class="footer__accordion-content">
9478              <ul class="footer__accordion-list"><li><a href="/pages/service-support">Service & Support</a></li><li><a href="/pages/troubleshooting-guides">Troubleshooting Guides</a></li><li><a href="/blogs/apple-buying-guides">Buying Guides</a></li><li><a href="/pages/the-ipower-promise">The iPower Promise</a></li><li><a href="/blogs/tech-insights">iPower Insights</a></li><li><a href="/pages/faq">FAQs</a></li></ul>
9479            </div>
9480          </div><div class="footer__accordion" data-accordion >
9481            <button class="footer__accordion-header" type="button">
9482              <span class="footer__accordion-title">Company</span>
9483              <span class="footer__accordion-icon">
9484                <svg class="footer__accordion-icon-plus" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none">
9485                  <path d="M6 1V11M1 6H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9486                </svg>
9487                <svg class="footer__accordion-icon-minus" xmlns="http://www.w3.org/2000/svg" width="12" height="2" viewBox="0 0 12 2" fill="none">
9488                  <path d="M1 1H11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
9489                </svg>
9490              </span>
9491            </button>
9492            <div class="footer__accordion-content">
9493              <ul class="footer__accordion-list"><li><a href="/pages/about-us">About Us</a></li><li><a href="/pages/corporate-buyers">Corporate Buyers</a></li><li><a href="/pages/apple-for-education">Educational Buyers</a></li><li><a href="/pages/contact">Contact Us</a></li><li><a href="/pages/reviews">Reviews</a></li><li><a href="/pages/us-privacy-requests">Privacy</a></li></ul>
9494            </div>
9495          </div></div><div class="footer__bottom">
9496      <p class="footer__copyright">© 2026 iPower Resale. All Rights Reserved.</p>
9497      <div class="footer__legal-links"><a href="/policies/privacy-policy" class="footer__legal-link">Privacy Policy</a><span class="footer__legal-sep">|</span><a href="/pages/terms-of-limited-warranty" class="footer__legal-link">Terms of Limited Warranty</a><span class="footer__legal-sep">|</span><a href="/pages/accessibility-policy" class="footer__legal-link">Accessibility Policy</a><span class="footer__legal-sep">|</span><a href="/pages/terms-conditions" class="footer__legal-link">Terms & Conditions</a></div>
9498    </div>
9499
9500  </div>
9501</footer>
9502
9503<script>
9504  document.addEventListener('DOMContentLoaded', function () {
9505
9506    // Accordion
9507    var accordions = document.querySelectorAll('.custom-footer-sections--23893840199849__custom_footer_AxCncV [data-accordion]');
9508    if (accordions.length > 0) {
9509      accordions[0].classList.add('active');
9510    }
9511    accordions.forEach(function (accordion) {
9512      var header = accordion.querySelector('.footer__accordion-header');
9513      header.addEventListener('click', function () {
9514        accordion.classList.toggle('active');
9515      });
9516    });
9517
9518    // Newsletter Form Validation
9519    function initNewsletterForm(form) {
9520      if (!form) return;
9521      var input = form.querySelector('input[type="email"]');
9522      var btn   = form.querySelector('button[type="submit"]');
9523      if (!input || !btn) return;
9524
9525      var errorEl = document.createElement('p');
9526      errorEl.style.cssText = 'color:#FF6B6B;font-size:13px;line-height:18px;margin:6px 0;font-family:"Inter-Regular",sans-serif;display:none;';
9527      form.insertAdjacentElement('afterend', errorEl);
9528
9529      var successEl = document.createElement('p');
9530      successEl.style.cssText = 'color:#1D7F9A;font-size:13px;line-height:18px;margin:6px 0;font-family:"Inter-Regular",sans-serif;display:none;';
9531      successEl.textContent = 'Thank you for subscribing!';
9532      errorEl.insertAdjacentElement('afterend', successEl);
9533
9534      function validateEmail(val) {
9535        return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val.trim());
9536      }
9537      function showError(msg) {
9538        errorEl.textContent = msg;
9539        errorEl.style.display = 'block';
9540        successEl.style.display = 'none';
9541        input.style.borderBottomColor = '#FF6B6B';
9542      }
9543      function clearError() {
9544        errorEl.style.display = 'none';
9545        input.style.borderBottomColor = '';
9546      }
9547
9548      input.addEventListener('input', function () {
9549        if (this.value.trim()) clearError();
9550      });
9551
9552      form.addEventListener('submit', function (e) {
9553        e.preventDefault();
9554        clearError();
9555        var val = input.value.trim();
9556        if (!val) { showError('Please enter your email address.'); return; }
9557        if (!validateEmail(val)) { showError('Please enter a valid email address.'); return; }
9558        successEl.style.display = 'block';
9559        form.submit();
9560      });
9561    }
9562
9563    document.querySelectorAll('.custom-footer-sections--23893840199849__custom_footer_AxCncV .footer__newsletter-form').forEach(function (form) {
9564      initNewsletterForm(form);
9565    });
9566
9567  });
9568</script>
9568
9569
9570
9571</section>
9572<!-- END sections: footer-group --></div>
9573  </div><div id="VideoModal" class="modal modal--solid">
9574  <div class="modal__inner">
9575    <div class="modal__centered page-width text-center">
9576      <div class="modal__centered-content">
9577        <div class="video-wrapper video-wrapper--modal">
9578          <div id="VideoHolder"></div>
9579        </div>
9580      </div>
9581    </div>
9582  </div>
9583
9584  <button type="button" class="modal__close js-modal-close text-link">
9585    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg>
9586    <span class="icon__fallback-text">"Close (esc)"</span>
9587  </button>
9588</div>
9589<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
9590  <div class="pswp__bg"></div>
9591  <div class="pswp__scroll-wrap">
9592    <div class="pswp__container">
9593      <div class="pswp__item"></div>
9594      <div class="pswp__item"></div>
9595      <div class="pswp__item"></div>
9596    </div>
9597
9598    <div class="pswp__ui pswp__ui--hidden">
9599      <button class="btn btn--body btn--circle pswp__button pswp__button--arrow--left" title="Previous">
9600        <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-left" viewBox="0 0 284.49 498.98"><path d="M249.49 0a35 35 0 0 1 24.75 59.75L84.49 249.49l189.75 189.74a35.002 35.002 0 1 1-49.5 49.5L10.25 274.24a35 35 0 0 1 0-49.5L224.74 10.25A34.89 34.89 0 0 1 249.49 0Z"/></svg>
9601      </button>
9602
9603      <button class="btn btn--body btn--circle btn--large pswp__button pswp__button--close" title="Close (esc)">
9604        <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg>
9605      </button>
9606
9607      <button class="btn btn--body btn--circle pswp__button pswp__button--arrow--right" title="Next">
9608        <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-chevron-right" viewBox="0 0 284.49 498.98"><title>icon-chevron</title><path d="M35 498.98a35 35 0 0 1-24.75-59.75l189.74-189.74L10.25 59.75a35.002 35.002 0 0 1 49.5-49.5l214.49 214.49a35 35 0 0 1 0 49.5L59.75 488.73A34.89 34.89 0 0 1 35 498.98Z"/></svg>
9609      </button>
9610    </div>
9611  </div>
9612</div>
9613<tool-tip data-tool-tip="">
9614  <div class="tool-tip__inner" data-tool-tip-inner>
9615    <button class="tool-tip__close" data-tool-tip-close=""><svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-close" viewBox="0 0 64 64"><title>icon-X</title><path d="m19 17.61 27.12 27.13m0-27.12L19 44.74"/></svg></button>
9616    <div data-tool-tip-title>Apple iPad Pro | iPowerResale</div>
9617    <div class="tool-tip__content" data-tool-tip-content>
9618    </div>
9619  </div>
9620</tool-tip>
9621
9622  <template id="naturalImageMarkup">
9623    <div class="image-wrap" style="height: 0;">
9624      <image-element data-aos="image-fade-in" data-aos-offset="150">
9625        <img
9626          class="grid-product__image image-element"
9627          width
9628          height
9629          src
9630          srcset
9631          loading="lazy"
9632          alt>
9633      </image-element>
9634    </div>
9635  </template>
9636  <template id="fixedRatioImageMarkup">
9637    <div class="grid__image-ratio">
9638      <image-element data-aos="image-fade-in" data-aos-offset="150">
9639        <img
9640          class="image-element"
9641          width
9642          height
9643          src
9644          srcset
9645          loading="lazy"
9646          alt>
9647      </image-element>
9648    </div>
9649  </template>
9650  
9650<script src="//ipowerresale.com/cdn/shop/t/130/assets/swiper-bundle.min.js?v=155620977096792918481790278034"></script>
9650
9651
9652<style>  </style>
9653<div id="shopify-block-AWU9qK05LWVIrYm9vV__14876220180117712452" class="shopify-block shopify-app-block">
9654  <!-- BEGIN app snippet: app-data -->
9654<script>
9655    try {
9656      if (!window.AVADA_SURVEY) {
9657        window.AVADA_SURVEY = {
9658          // Slim survey/quiz arrays — enough for Tier 0 wrapper gating
9659          // (`surveys.length > 0` + `_disabled` check) and for early channel
9660          // routing decisions. Full content lazy-loaded via #avada-full-data.
9661          surveys: [
9662              {
9663                "id": "U4VyHz4GGSLGft1O6eKO",
9664                "surveyType": "survey",
9665                "isActive": true,
9666                "channels": {
9667                  "siteWidget":          { "enabled": false },
9668                  "exitIntent":          { "enabled": false },
9669                  "surveyForm":          { "enabled": false },
9670                  "embedSurvey":         { "enabled": true },
9671                  "dedicatedPageSurvey": { "enabled": true },
9672                  "postPurchasePage":    { "enabled": false },
9673                  "postPurchaseEmail":   { "enabled": false }
9674                }
9675              },
9676              {
9677                "id": "02oM6Gal1EzXJ1DDvIK2",
9678                "surveyType": null,
9679                "isActive": true,
9680                "channels": {
9681                  "siteWidget":          { "enabled": false },
9682                  "exitIntent":          { "enabled": false },
9683                  "surveyForm":          { "enabled": false },
9684                  "embedSurvey":         { "enabled": false },
9685                  "dedicatedPageSurvey": { "enabled": true },
9686                  "postPurchasePage":    { "enabled": true },
9687                  "postPurchaseEmail":   { "enabled": false }
9688                }
9689              },
9690              {
9691                "id": "oQq5678ripcyz2rOXSmF",
9692                "surveyType": null,
9693                "isActive": true,
9694                "channels": {
9695                  "siteWidget":          { "enabled": false },
9696                  "exitIntent":          { "enabled": true },
9697                  "surveyForm":          { "enabled": false },
9698                  "embedSurvey":         { "enabled": false },
9699                  "dedicatedPageSurvey": { "enabled": true },
9700                  "postPurchasePage":    { "enabled": false },
9701                  "postPurchaseEmail":   { "enabled": false }
9702                }
9703              }
9704          ],
9705          quizzes: [
9706          ],
9707          // Settings: shopId + language detection needed eagerly (wrapper /
9708          // targeting). Full settings (channel colors, design configs) lazy.
9709          settings: {
9710            shopId: "3Bu61qLyUyPg67WmmPvY",
9711            detectLanguage: "shop",
9712            translationSettings: {},
9713            moneyWithCurrencyFormat: "${{amount}} USD"
9714          },
9715          // Targeting context — small, needed before mount.
9716          page: "product",
9717          product: {
9718            id: 8832364773545,
9719            variants: [{"id":46682881720489,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"iPad Pro Parent 4","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"iPad Pro 11-inch M5","public_title":null,"options":["Default Title"],"price":97900,"weight":2268,"compare_at_price":null,"inventory_management":"shopify","barcode":"iPad Pro Parent 4","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],
9720            selectedVariant: 46682881720489,
9721            hasOnlyDefaultVariant: true
9722          },
9723          collection: {
9724            id: null
9725          },
9726          customer: {
9727            tags: null,
9728            email: null,
9729            name: null,
9730            id: null,
9731            acceptsMarketing: null
9732          }
9733        };
9734      }
9735    } catch (e) {
9736      console.error('Avada Survey Error:', e);
9737    }
9738  </script>
9738
9739
9740  
9740<script type="application/json" id="avada-full-data">
9741    {
9742      "surveys":             [{"shopId":"3Bu61qLyUyPg67WmmPvY","questions":[{"type":"number_scale","heading":"How likely are you to recommend us to a friend?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":0,"leftLabel":"Not likely","rightLabel":"Very likely","id":"question_1753304913316","chosen":false,"selected":false,"sectionId":null,"positionInSection":null},{"type":"number_scale","heading":"How easy was it to purchase from our online store?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":1,"leftLabel":"Very difficult","rightLabel":"Very easy","id":"question_1753304913317","chosen":false,"selected":false,"sectionId":null,"positionInSection":null},{"type":"multiple","heading":"How was your delivery experience?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":2,"answers":[{"id":"answer_1753304935410","content":"Excellent – Packaging arrived clean, undamaged, and looked professionally handled."},{"id":"answer_1753304935412","content":" Very Good – Minor wear, but overall the packaging was in good shape."},{"id":"answer_1753304935413","content":"Okay – Some scuffs, dents, or dust, but nothing concerning."},{"id":"answer_1753305373948","content":"Poor – Packaging was noticeably dirty, damaged, or gave a used feel."},{"id":"answer_1753305376496","content":"Very Poor – Packaging was torn, dusty, or made me question the care taken in shipping."}],"enabledCustomAnswer":false,"showWhen":"always_show","showCustomAnswerWhen":[],"customAnswerPlaceholder":"Please add more information","id":"question_1753304935411","chosen":false,"selected":false,"sectionId":null,"positionInSection":null},{"type":"short_answer","heading":"How could we improve?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":true,"position":3,"placeholder":"","id":"question_1753304913318","chosen":false,"selected":false,"sectionId":null,"positionInSection":null}],"thankYou":{"type":"thank_you","thankYouType":"default","heading":"Thank you for doing our survey","description":"If you have any question, please feel free to ask us","link":"samplelink.shopify.com","enableButton":true,"buttonText":"Discover more","buttonLink":""},"discount":{"enabled":false,"code":"","displayOn":"email","limitOnePerEmail":false,"card":{"heading":"Earn your discount code","description":"Enter your preferred shopping email to receive the coupon.","placeholder":"Enter your email","buttonText":"Get coupon"},"email":{"subject":"Thank you for taking the survey for {{shop.name}}. Here is your coupon reward.","fromName":"","fromEmail":"[email protected]","sendType":"default","body":"\n\u003ch2 style=\"font-size: 20px; font-weight: bold; margin: 0 0 24px 0; color: #000;\"\u003eCongratulations! Here is you coupon reward\u003c\/h2\u003e\n\u003cp\u003eHi {{customer.displayName}},\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eWe truly appreciate you taking the time to complete our survey—your insights mean a lot to us.\u003c\/p\u003e\n\u003cp\u003eAs a thank-you, enjoy a special reward to use on your next purchase.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eYour coupon code is:\u003c\/p\u003e\n\u003cbr\u003e\n\u003cdiv style=\"padding: 16px;word-break: break-word; background-color: #f6f6f7; border-radius: 8px; text-align: center;\"\u003e\n  \u003cspan style=\"font-size: 20px; font-weight: bold; color: #202223; letter-spacing: 4px;\"\u003e{{discount.code}}\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\n\u003cp\u003eWarm regards,\u003c\/p\u003e\n\u003cp\u003e{{shop.name}}.\u003c\/p\u003e"},"banner":{"heading":"Earn DISCOUNT CODE","description":"Finish this survey and earn discount for your next purchase!","text":{"color":"#FFFFFF"},"background":{"type":"solid","color":"#1C1C1C","colorSolid":"#1C1C1C","gradientStart":"#1C1C1C","gradientEnd":"#637381","gradientDirection":70,"image":{"url":""}}},"template":"\n \u003cdiv class=\"Avada-Email\"\u003e\n   \u003cdiv class=\"Avada-Email__Content\"\u003e\n      {{email.content}}\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n"},"name":"Post Purchase email survey","totalResponses":182,"createdAt":"2025-07-23T21:24:48.354Z","channelTypes":["embedSurvey","dedicatedPageSurvey","hyperLink"],"channels":{"postPurchaseEmail":{"type":"postPurchaseEmail","duplicateTime":2,"emailLayout":"ctaButton","userTargeting":{"type":"all_users","userTags":[],"enabledUserTag":false,"enabledProductPurchased":true,"productPurchased":[8637120348329,8637120315561,8637120282793,8637120217257,8637120184489,8637120151721,8637120118953,8637120086185,8637120053417,8508329853097,8502970024105,8502969925801,8502969860265,8502969761961,8502969663657,8502969630889,8502969499817,8502969434281,8502969335977,8502969237673,8502967369897,8502967271593,8502967206057,8502967074985,8502966976681,8502966878377,8502966845609,8502966812841,8502966714537,8502966583465,8502966550697,8502966452393,8502966321321,8502966255785,8502966026409,8502965895337,8502965829801,8502965764265,8502965731497,8502965600425,8502963699881,8502963601577,8502963470505,8502963339433,8502963306665,8502963142825,8502963044521,8502962880681,8502962749609,8502962684073,8502962553001,8502962454697,8502962323625,8502962192553,8502962127017,8502961963177,8502961864873,8502961733801,8502961701033,8502961275049,8502958981289,8502958850217,8502958751913,8502958686377,8502958555305,8502958424233,8502958293161,8502958162089,8502957998249,8502957965481,8502957801641,8502957768873,8502957572265,8502957506729,8502957375657,8502957179049,8502957047977,8502956916905,8435664322729,8435664257193,8435664224425,8435664191657,8435664158889,8435664093353,8435664060585,8435664027817,8435663995049,8435663962281,8435663929513,8435663896745,8435663863977,8435663831209,8435663798441,8435663732905,8435663667369,8435663634601,8435663601833,8435663569065,8435663536297,8435663470761,8435663437993,8435663405225,8435663372457,8435663339689,8435663274153,8435663241385,8435663208617,8435663175849,8435663143081,8435663044777,8435663012009,8435662979241,8435662946473,8435662880937,8435661734057,8435661668521,8435661635753,8435661570217,8435661504681,8435661471913,8435661406377,8435661373609,8435661308073,8435661275305,8435661177001,8435661013161,8435660488873,8435660456105,8435660390569,8435660357801,8435660325033,8435660226729,8435660193961,8435660128425,8435660095657,8435660030121,8435659964585,8376032788649,8376032690345,8376032559273,8376032428201,8376032264361,8376032133289,8376032034985,8376031903913,8376031838377,8376031674537,8376031576233,8376031445161,8376031379625,8376031248553,8376031117481,8376031019177,8376030888105,8376030724265,8376030625961,8376030494889,8376030396585,8376030331049,8376030199977,8376030134441,8376029970601,8376029839529,8376029741225,8376029675689,8375810097321,8375809933481,8375809769641,8375809671337,8374982410409,8374982181033,8374981886121,8374981755049,8374981656745,8374981427369,8374981230761,8374981099689,8374901801129,8374901768361,8374901670057,8374901637289,8374901604521,8374901538985,8374901440681,8374901407913,8369697751209,8369697521833,8369697325225,8369697128617,8369696964777,8369696800937,8369696604329,8369696440489,8369696276649,8369696080041,8369695948969,8369695752361,8369640374441,8369640341673,8369640243369,8369640210601,8369640177833,8369640112297,8369640079529,8369640013993,8369639981225,8369639882921,8369639817385,8369639751849,8322652831913,8322652766377,8322629435561,8322629337257,8322629304489,8322629238953,8322629206185,8322629173417,8322629140649,8322629075113,8322629042345,8322628976809,8322627207337,8322627174569,8322627141801,8322627076265,8322627043497,8322626977961,8322626912425,8322626846889,8322626814121,8322626715817,8322626683049,8322626617513,8322626551977,8322626486441,8322626420905,8322626388137,832262625
97427065,8322626191529,8322626125993,8322626093225,8322625994921,8322625962153,8322625863849,8322625765545,8322625700009,8322625634473,8322625601705,8322625503401,8322625470633,8322625339561,8322625306793,8322625208489,8322625175721,8322625077417,8322625044649,8322624946345,8209842438313,8181227323561,8181227290793,8181227225257,8181227192489,8181227126953,8181226995881,8181226963113,8181226897577,8181226864809,8181226799273,8181226766505,8181226700969,8181226602665,8181226569897,8181226504361,8181226471593,8181226438825,8181226406057,8181226307753,8181226242217,8181226209449,8181226176681,8181226111145,8181225980073,8181225914537,8181225849001,8181225783465,8181225750697,8181225685161,8181225619625,8181225554089,8181225488553,8181225390249,8181225324713,8181225291945,8181225259177,8181225193641,8181225128105,8181225062569,8181225029801,8181224964265,8181224898729,8181224865961,8181224800425,8181224702121,8181224603817,8181224505513,8181224341673,8181224210601,8181224079529,8181224013993,8181223882921,8181223751849,8181223620777,8181223489705,8181223391401,8181223293097,8181223194793,8181223129257,8181223063721,8181222998185,8181222965417,8181222899881,8181222867113,8181222801577,8181222768809,8181222703273,8181222604969,8181222572201,8181222473897,8181222441129,8181222375593,8181222342825,8181222310057,8181222277289,8181222244521,8181222178985,8181222146217,8181222113449,8181222080681,8181222047913,8181222015145,8181221982377,8181221949609,8181221884073,8181221818537,8181221753001,8181221720233,8181221687465,8181221621929,8181221589161,8181221523625,8181221490857,8181221458089,8181221392553,8181221359785,8181221327017,8181221261481,8181221228713,8181221163177,8181221130409,8181221097641,8181221064873,8181220999337,8181220966569,8181220901033,8181220868265,8181220835497,8181220737193,8181220704425,8181220671657,8181220638889,8177379410089,8177379344553,8177379246249,8177379049641,8177378984105,8177378885801,8177378754729,8177378656425,8177378558121,8177378492585,8177378394281,8177378295977,8177378164905,8177378099369,8177378001065,8177377837225,8177377771689,8177377673385,8177377575081,8177377509545,8177377444009,8177377312937,8177377247401,8177377214633,8177377018025,8177376723113,8177376493737,8177376231593,8177376002217,8177375838377,8177375674537,8177375609001,8177375510697,8177375281321,8177375117481,8177375019177,8087553147049,8085538537641,8085538373801,8085538242729,8085538111657,8085537882281,8085537620137,8085537292457,8085537128617,8085530214569,8085530050729,8085529821353,8085529690281,8085529559209,8085529428137,8085529198761,8085529067689,8085528805545,8085528608937,8085528346793,8085528117417,8085527953577,8085527756969,8085527527593,8085527232681,7939342663849,7939342631081,7939342565545,7939342532777,7939342434473,7939342368937,7939342336169,7939342270633,7939342237865,7939342172329,7939341975721,7939341877417,7939341746345,7939341189289,7939341058217,7939340927145,7939340796073,7939340665001,7898816676009,7898816512169,7898816348329,7898815889577,7898815529129,7898815234217,7898815070377,7898814873769,7896910495913,7896910299305,7896910102697,7896909873321,7896909742249,7896909545641,7896909349033,7896909185193,7896909054121,7896908857513,7845307744425,7845307547817,7845307416745,7845307285673,7845307023529,7845306957993,7845306859689,7845306826921,7845306597545,7845306466473,7845306335401,7845306171561,7845306040489,7845305843881,7845305647273,7845305548969,7845305385129,7845305188521,7822628421801,7822628389033,7822628323497,7822628290729,7822628257961,7822628225193,7822628192425,7822628159657,7822628126889,7822628094121,7822628061353,7822627963049,7822627930281,7822627897513,7822627864745,7822627831977,7822627799209,7822627733673,7822627700905,7822627635369,7788098519209,7788097765545,7742086283433,7742080811177,7742080680105,7742080319657,7742079303849,7721003745449,7721003712681,7721003647145,7721003614377,7721003581609,7721003516073,7721003483305,7721003417769,7721003385001,7721003352233,7716580819113,7716580786345,7716580622505,7716580589737,7716580524201,7716580458665,7716580425897,7716580360361,7716580294825,7716
9742580229289,7716580196521,7716580098217,7716580032681,7716579967145,7716579934377,7716579868841,7716579803305,7716579737769,7716579705001,7716579639465,7716579573929,7716579508393,7716579410089,7716579344553,7716521115817,7716519116969,7715587555497,7715587522729,7715587457193,7715547250857,7715547152553,7715547119785,7715547054249,7715547021481,7715546988713,7715546955945,7715546857641,7715546398889,7715546333353,7715546300585,7715546235049,7715546202281,7715546136745,7715546103977,7715546071209,7715536076969,7715533619369,7715533553833,7715533488297,7715533389993,7715533357225,7715533226153,7715533127849,7715533029545,7715532832937,7715532701865,7715532669097,7715532570793,7715532505257,7715532439721,7715532406953,7715532243113,7715532177577,7715532144809,7715532112041,7715532079273,7715532046505,7715532013737,7715531980969,7715528966313,7714884944041,7714884845737,7714884747433,7714884649129,7714884518057,7714884419753,7714884288681,7714884190377],"productPurchasedVariants":[46059117379753,46059117346985,46059117314217,46059117183145,46059117150377,46059117117609,46059117084841,46059117052073,46059117019305,45751884120233,45743010513065,45743010381993,45743010316457,45743010218153,45743010087081,45743010054313,45743009923241,45743009824937,45743009726633,45743009628329,45743007531177,45743007498409,45743007334569,45743007203497,45743007072425,45743006974121,45743006941353,45743006908585,45743006777513,45743006646441,45743006613673,45743006548137,45743006384297,45743006285993,45743006122153,45743005958313,45743005860009,45743005794473,45743005761705,45743005630633,45743003533481,45743003369641,45743003271337,45743003107497,45743003074729,45743002976425,45743002845353,45743002648745,45743002517673,45743002386601,45743002255529,45743002157225,45743001993385,45743001862313,45743001796777,45743001632937,45743001436329,45743001338025,45743001305257,45743000912041,45742998290601,45742998126761,45742994915497,45742994849961,45742994751657,45742994587817,45742994456745,45742994227369,45742994096297,45742993997993,45742993834153,45742993801385,45742993572009,45742993539241,45742993309865,45742993211561,45742993014953,45742992851113,45460662223017,45460662157481,45460662124713,45460662091945,45460662059177,45460661993641,45460661960873,45460661829801,45460661797033,45460661764265,45460661731497,45460661698729,45460661665961,45460661633193,45460661600425,45460661534889,45460661469353,45460661436585,45460661403817,45460661338281,45460661305513,45460661239977,45460661207209,45460661174441,45460661141673,45460661108905,45460661043369,45460661010601,45460660977833,45460660945065,45460660912297,45460660650153,45460660617385,45460660584617,45460660551849,45460660486313,45460659110057,45460659077289,45460659044521,45460658847913,45460658782377,45460658749609,45460658618537,45460658553001,45460658487465,45460658421929,45460658323625,45460658192553,45460657078441,45460657045673,45460656980137,45460656947369,45460656914601,45460656816297,45460656750761,45460656685225,45460656652457,45460656554153,45460656455849,45159534428329,45159534330025,45159533969577,45159533707433,45159533543593,45159533412521,45159533281449,45159533183145,45159533117609,45159532953769,45159532855465,45159532724393,45159532658857,45159532527785,45159532069033,45159531970729,45159531741353,45159531610281,45159531479209,45159531348137,45159531249833,45159530102953,45159529971881,45159529873577,45159529709737,45159529578665,45159529480361,45159529316521,45158870974633,45158870810793,45158870646953,45158870548649,45150932304041,45150928306345,45150927192233,45150925684905,45150924669097,45150922866857,45150922375337,45150920868009,45150350409897,45150350377129,45150349918377,45150349885609,45150349852841,45150349656233,45150347526313,45150347460777,45118764875945,45118762975401,45118762057897,45118760911017,45118759239849,45118758420649,45118757699753,45118755537065,45118754390185,45118753439913,45118751834281,45118750490793,45117816602793,45117815161001,45117814931625,45117814898857,45117814309033,45117813424297,45117812801705,45117812736169,45117812703401,45117811753129,45117810278569,45117810213033,44910913814697,44910913749161,44910857453737,44910857191593,44910857158825,44910856732841,44910856700073,44910856667305,44910856634537,44910856601769,44910856011945,44910855979177,44910854275241,44910854242473,44910854209705,44910853914793,44910853882025,44910853521577,44910853456041,44910853095593,44910853062825,44910852702377,44910852669609,44910852047017,44910852014249,44910851653801,44910851358889,44910851326121,44910850834601,44910850769065,44910850408617,44910850375849,44910849753257,44910849720489,44910849163433,44910848704681,44910848344233,44910848278697,44910848245929,44910847688873,449108472956
974257,44910847000745,44910846935209,44910846378153,44910846345385,44910845755561,44910845722793,44910845165737,44473056788649,44384578601129,44384578568361,44384578502825,44384578470057,44384576143529,44384575750313,44384575717545,44384575553705,44384575357097,44384575324329,44384575291561,44384575226025,44384575094953,44384575062185,44384574701737,44384574668969,44384574636201,44384574505129,44384574439593,44384574242985,44384574210217,44384574144681,44384574079145,44384572145833,44384571621545,44384571556009,44384571392169,44384571359401,44384571228329,44384571162793,44384571064489,44384570933417,44384570802345,44384570736809,44384570704041,44384570671273,44384570474665,44384570376361,44384570245289,44384570212521,44384569950377,44384569819305,44384569786537,44384569721001,44384568606889,44384567492777,44384566345897,44384561823913,44384560480425,44384557957289,44384556843177,44384554483881,44384553238697,44384551010473,44384548782249,44384547668137,44384547537065,44384547373225,44384547242153,44384547143849,44384547078313,44384547045545,44384546947241,44384546914473,44384546783401,44384546750633,44384546652329,44384546521257,44384545669289,44384544129193,44384544096425,44384542752937,44384542720169,44384542687401,44384542654633,44384542621865,44384539672745,44384539639977,44384539607209,44384539574441,44384539541673,44384539508905,44384539476137,44384538984617,44384536494249,44384536461481,44384536363177,44384536330409,44384536264873,44384536199337,44384536166569,44384534659241,44384534626473,44384534593705,44384534528169,44384534495401,44384534462633,44384534397097,44384534364329,44384534167721,44384534134953,44384534102185,44384534069417,44384533840041,44384533807273,44384533708969,44384533676201,44384533643433,44384533119145,44384533086377,44384533053609,44384533020841,44375722000553,44375721935017,44375721836713,44375721607337,44375721541801,44375721443497,44375721312425,44375721214121,44375721083049,44375721017513,44375720919209,44375720820905,44375720689833,44375720624297,44375720558761,44375720394921,44375720362153,44375720263849,44375720165545,44375720100009,44375720034473,44375719608489,44375719542953,44375719477417,44375719280809,44375718396073,44375717937321,44375716954281,44375716528297,44375716364457,44375715709097,44375715643561,44375715053737,44375714758825,44375714562217,44375713972393,44140642238633,44136407728297,44136407564457,44136407433385,44136407269545,44136407072937,44136406810793,44136406450345,44136406286505,44136398291113,44136398127273,44136397832361,44136397701289,44136397570217,44136397439145,44136397209769,44136397078697,44136396751017,44136396554409,44136396292265,44136396062889,44136395899049,44136395702441,44136395473065,44136395178153,43758119551145,43758119518377,43758119125161,43758119092393,43758118994089,43758118731945,43758118699177,43758118633641,43758118600873,43758118535337,43758118338729,43758118207657,43758118076585,43758116569257,43758116438185,43758116241577,43758116110505,43758115979433,43612712534185,43612712337577,43612712173737,43612711157929,43612710207657,43612709683369,43612709388457,43612709159081,43607418273961,43607418044585,43607417847977,43607417585833,43607417487529,43607417290921,43607417094313,43607416897705,43607416733865,43607416504489,43412465254569,43412465057961,43412464926889,43412464664745,43412464304297,43412464238761,43412464140457,43412464107689,43412463878313,43412463747241,43412463616169,43412463452329,43412463321257,43412463124649,43412462928041,43412462829737,43412462665897,43412462469289,43356230254761,43356230221993,43356230156457,43356230090921,43356230058153,43356230025385,43356229992617,43356229959849,43356229927081,43356229894313,43356229861545,43356229763241,43356229730473,43356229697705,43356229664937,43356229632169,43356229599401,43356229173417,43356229140649,43356229075113,43241524035753,43241520529577,43051283579049,43051141857449,43051141726377,43051140874409,43051134550185,42987238490281,42987238424745,42987238359209,42987238293673,42987238260905,42987238162601,42987238129833,42987238031529,42987237998761,42987237933225,42968237408425,42968237375657,42968236687529,42968236654761,42968236589225,42968236523689,42968236490921,42968236425385,42968236359849,42968236294313,42968236261545,42968236163241,42968236097705,42968236032169,42968235999401,42968235933865,42968235868329,42968235770025,42968235737257,42968235671721,42968235573417,42968235507881,42968235409577,42968235344041,42968142938281,42968140808361,42963528941737,42963528876201,42963528351913,42963364053161,42963363922089,42963363856553,42963363791017,42963363725481,42963363659945,42963363627177,42963363496105,42963362906281,42963362807977,42963362775209,42963362676905,42963362644137,42963362480297,42963362447529,42963362381993,42963301367977,42963274203305,42963274039465,42963273908393,42963273744553,42963273679017,42963272925353,42963271975081,42963271844009,42963270926505,42963270041769,42963269976233,42963269845161,42963269746857,42963269648553,42963268993193,42963268370601,42963267682473,42963267649705,42963267616937,429632675514
974201,42963267518633,42963267453097,42963267420329,42963251593385,42960834101417,42960833806505,42960833708201,42960833609897,42960833052841,42960832921769,42960832790697,42960832692393]},"emailSetting":{"fromType":"custom_sender","delaySendMail":"7"},"enabledHeaderLogo":false,"headerLogo":{"url":"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/iPower_Resale_Logo_Long.png?v=1753306222","sizePercentage":98},"content":{"subject":"","body":"\u003ch1\u003eThank you for your purchase!\u003c\/h1\u003e\u003cp\u003eDear {{customer.displayName}},\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eAt {{shop.name}}, we value your feedback. That's why we would like to invite you to participate in a short survey about your recent experience.\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003ePlease click the button below to complete the survey, and it will only take a few minutes to complete.\u003cbr\u003eWe appreciate your time and effort in providing us with this valuable feedback.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eWarm regards,\u003cbr\u003e{{shop.name}}\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e{{shop.url}}\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e"},"text":{"primaryColor":"#1C1C1C","secondaryColor":"#585858"},"background":{"outerBackground":"#F5F5F5","innerBackground":"#FFFFFF"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#333333","text":"Start your survey"},"enabledCustomCss":false,"customCss":"","enabled":false},"exitIntent":{"type":"exitIntent","enabled":false,"enableEmptyCart":false,"enableHasProducts":false,"widgetRecurrence":"only_once","position":"center","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"enabledCustomCss":false,"customCss":""},"embedSurvey":{"type":"embedSurvey","embedType":"block","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"allowMultiSubmit":false,"enabled":true,"enabledSideLogo":false},"dedicatedPageSurvey":{"type":"dedicatedPageSurvey","link":"","enabledHeaderLogo":false,"headerLogo":{"url":"","alignment":"center"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"background":{"type":"solid","colorSolid":"#FFFFFF","gradientStart":"#FFFFFF","gradientEnd":"#000000","gradientDirection":70,"image":{"url":""}},"enabled":true},"siteWidget":{"type":"siteWidget","position":"left","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"pageTargeting":{"type":"all_pages","enabledExcludePages":false,"pages":[],"productPageType":"all_product_pages","specificProducts":[],"collectionPageType":"all_collection_pages","specificCollections":[]},"timing":"10_seconds_after_page_load","userTargeting":{"type":"all_users","enabledUserTag":true,"userTags":[]},"widgetRecurrence":"every_time_survey_not_completed","enabled":false},"postPurchasePage":{"type":"postPurchasePage","displayType":"blockType","announcementBar":{"modalTitle":"Survey","content":"We'd love to hear your feedback!","buttonText":"Take a quick survey"},"userTargeting":{"type":"all_users","enabledUserTag":false,"userTags":[],"enabledProductPurchased":false,"productPurchased":[]},"widgetRecurrence":"once_per_customer","enabled":false},"hyperLink":{"surveyName":"U4VyHz4GGSLGft1O6eKO","linkType":"intergration_hyperlink_button","text":"How was your delivery?","buttonColor":{"backgroundColor":"#1d7f9a","textColor":"#FFFFFF"},"textColor":"#005BD3","embedCode":"\u003ca href=\"https:\/\/ipowerresale.myshopify.com\/pages\/survey\/U4VyHz4GGSLGft1O6eKO?from=hyperLink\" style=\"display: flex; max-width: 200px; padding: 16px; justify-content: center; align-items: center; gap: 8px; border-radius: 8px; text-align: right; font-family: Inter, sans-serif; font-size: 16px; font-style: normal; font-weight: 400; line-height: 20px; background-color: #1d7f9a; color: #FFFFFF; text-decoration: none;\"\u003eHow was your delivery?\u003c\/a\u003e","enabled":true,"type":"hyperLink"},"posPage":{"type":"posPage","enabled":false,"showOnPostSale":true,"showOnCustomerDetail":false,"userTargeting":{"type":"all_users","customerSegment":[]}},"embedEmail":{"enabled":false}},"updateStatus":true,"isActive":true,"updatedAt":"2026-09-02T20:58:05.527Z","id":"U4VyHz4GGSLGft1O6eKO","hasResponse":true,"sections":[],"surveyType":"survey","advancedLogicEnabled":true},{"success":true,"id":"02oM6Gal1EzXJ1DDvIK2","questions":[{"type":"single","heading":"Where did you find us?","description":"","
9742image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":0,"answers":[{"content":"Google","id":"answer_1753314352992","position":0},{"content":"Facebook","id":"answer_1753314352990","position":1},{"content":"Instagram","id":"answer_1753314352988","position":2},{"content":"Youtube","id":"answer_1753314352991","position":3},{"id":"answer_1760656556391","content":"Amazon\/eBay","position":4},{"content":"Word of mouth","id":"answer_1753314352987","position":5},{"id":"answer_1753314367974","content":"AI ChatBot","position":6}],"enabledCustomAnswer":true,"showWhen":"when_customer_select_answers","showCustomAnswerWhen":["answer_1753314367974"],"customAnswerPlaceholder":"Let us know which one ","id":"question_1753314352987","chosen":false,"selected":false},{"type":"satisfaction","heading":"How was your experience?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":1,"leftLabel":"Frustrating","rightLabel":"Simple","id":"question_1753314646910","chosen":false,"selected":false},{"type":"short_answer","heading":"Anything else youd like to add?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":true,"position":2,"placeholder":"Please add more information","id":"question_1755035181735","chosen":false,"selected":false}],"thankYou":{"type":"thank_you","thankYouType":"default","heading":"Thank you for doing our survey","description":"If you have any question, please feel free to ask us","link":"samplelink.shopify.com","enableButton":true,"buttonText":"Discover more","buttonLink":""},"discount":{"enabled":false,"code":"","displayOn":"email","limitOnePerEmail":false,"card":{"heading":"Earn your discount code","description":"Enter your preferred shopping email to receive the coupon.","placeholder":"Enter your email","buttonText":"Get coupon"},"email":{"subject":"Thank you for taking the survey for {{shop.name}}. Here is your coupon reward.","fromName":"","fromEmail":"[email protected]","sendType":"default","body":"\n\u003ch2 style=\"font-size: 20px; font-weight: bold; margin: 0 0 24px 0; color: #000;\"\u003eCongratulations! Here is you coupon reward\u003c\/h2\u003e\n\u003cp\u003eHi {{customer.displayName}},\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eWe truly appreciate you taking the time to complete our survey—your insights mean a lot to us.\u003c\/p\u003e\n\u003cp\u003eAs a thank-you, enjoy a special reward to use on your next purchase.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eYour coupon code is:\u003c\/p\u003e\n\u003cbr\u003e\n\u003cdiv style=\"padding: 16px;word-break: break-word; background-color: #f6f6f7; border-radius: 8px; text-align: center;\"\u003e\n  \u003cspan style=\"font-size: 20px; font-weight: bold; color: #202223; letter-spacing: 4px;\"\u003e{{discount.code}}\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\n\u003cp\u003eWarm regards,\u003c\/p\u003e\n\u003cp\u003e{{shop.name}}.\u003c\/p\u003e"},"banner":{"heading":"Earn DISCOUNT CODE","description":"Finish this survey and earn discount for your next purchase!","text":{"color":"#FFFFFF"},"background":{"type":"solid","color":"#1C1C1C","colorSolid":"#1C1C1C","gradientStart":"#1C1C1C","gradientEnd":"#637381","gradientDirection":70,"image":{"url":""}}},"template":"\n \u003cdiv class=\"Avada-Email\"\u003e\n   \u003cdiv class=\"Avada-Email__Content\"\u003e\n      {{email.content}}\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n"},"name":"Post purchase survey","isActive":true,"channels":{"postPurchaseEmail":{"type":"postPurchaseEmail","duplicateTime":2,"userTargeting":{"type":"all_users","userTags":[],"enabledUserTag":false,"enabledProductPurchased":false,"productPurchased":[]},"emailSetting":{"fromType":"default"},"headerLogo":{"url":"","sizePercentage":88},"content":{"subject":"","body":"\u003ch1\u003eThank you for your visiting!\u003c\/h1\u003e\u003cp\u003eDear {{customer.displayName}},\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eAt {{shop.name}}, we value your feedback. That's why we would like to invite you to participate in a short survey about your recent experience.\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003ePlease click the button below to complete the survey, and it will only take a few minutes to complete.\u003cbr\u003eWe appreciate your time and effort in providing us with this valuable feedback.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eYou could explore more products in our store for the next season here: {{shop.url}}.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eWarm regards,\u003cbr\u003e{{shop.name}}.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e"},"text":{"primaryColor":"#1C1C1C","secondaryColor":"#585858"}
9742,"background":{"outerBackground":"#F5F5F5","innerBackground":"#FFFFFF"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#333333","text":"Start your survey"},"enabledCustomCss":false,"customCss":"","enabled":false},"exitIntent":{"type":"exitIntent","enabled":false,"enableEmptyCart":false,"enableHasProducts":false,"widgetRecurrence":"only_once","position":"center","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"enabledCustomCss":false,"customCss":""},"embedSurvey":{"type":"embedSurvey","embedType":"block","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"enabled":false},"dedicatedPageSurvey":{"type":"dedicatedPageSurvey","link":"","enabledHeaderLogo":false,"headerLogo":{"url":"","alignment":"center"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"background":{"type":"solid","colorSolid":"#FFFFFF","gradientStart":"#FFFFFF","gradientEnd":"#000000","gradientDirection":70,"image":{"url":""}},"enabled":true},"siteWidget":{"type":"siteWidget","position":"left","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"pageTargeting":{"type":"all_pages","enabledExcludePages":false,"pages":[],"productPageType":"all_product_pages","specificProducts":[],"collectionPageType":"all_collection_pages","specificCollections":[]},"timing":"10_seconds_after_page_load","userTargeting":{"type":"all_users","enabledUserTag":true,"userTags":[]},"widgetRecurrence":"only_once","enabled":false},"postPurchasePage":{"type":"postPurchasePage","displayType":"blockType","announcementBar":{"modalTitle":"Survey","content":"We'd love to hear your feedback!","buttonText":"Take a quick survey"},"userTargeting":{"type":"all_users","enabledUserTag":false,"userTags":[],"enabledProductPurchased":false,"productPurchased":[]},"enabled":true}},"channelTypes":["dedicatedPageSurvey","postPurchasePage"],"shopId":"3Bu61qLyUyPg67WmmPvY","totalResponses":277,"createdAt":"2025-07-23T23:49:22.411Z","updatedAt":"2025-10-16T16:14:01.544Z","hasResponse":true,"updateStatus":true},{"success":true,"id":"oQq5678ripcyz2rOXSmF","questions":[{"type":"single","heading":"What is preventing you from completing your purchase today?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":false,"position":0,"answers":[{"content":"Pricing","id":"answer_1753314734518"},{"content":"Product information","id":"answer_1753314734519"},{"content":"Shipping \/ Delivery","id":"answer_1753314734520"},{"content":"Return policy","id":"answer_1753314734521"},{"content":"Nothing, I’ll be back","id":"answer_1753314734522"}],"enabledCustomAnswer":false,"showWhen":"always_show","showCustomAnswerWhen":[],"customAnswerPlaceholder":"Please add more information","id":"question_1753314734518","chosen":false,"selected":false},{"type":"short_answer","heading":"How could we improve the shopping experience?","description":"","image":{"url":"","alignment":"center","sizePercentage":"100"},"skippable":true,"position":1,"placeholder":"","id":"question_1753314734519","chosen":false,"selected":false}],"thankYou":{"type":"thank_you","thankYouType":"default","heading":"Thank you for doing our survey","description":"If you have any question, please feel free to ask us","link":"samplelink.shopify.com","enableButton":true,"buttonText":"Discover more","buttonLink":""},"discount":{"enabled":false,"code":"","displayOn":"email","limitOnePerEmail":false,"card":{"heading":"Earn your discount code","description":"Enter your preferred shopping email to receive the coupon.","placeholder":"Enter your email","buttonText":"Get coupon"}
9742,"email":{"subject":"Thank you for taking the survey for {{shop.name}}. Here is your coupon reward.","fromName":"","fromEmail":"[email protected]","sendType":"default","body":"\n\u003ch2 style=\"font-size: 20px; font-weight: bold; margin: 0 0 24px 0; color: #000;\"\u003eCongratulations! Here is you coupon reward\u003c\/h2\u003e\n\u003cp\u003eHi {{customer.displayName}},\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eWe truly appreciate you taking the time to complete our survey—your insights mean a lot to us.\u003c\/p\u003e\n\u003cp\u003eAs a thank-you, enjoy a special reward to use on your next purchase.\u003c\/p\u003e\n\u003cbr\u003e\n\u003cp\u003eYour coupon code is:\u003c\/p\u003e\n\u003cbr\u003e\n\u003cdiv style=\"padding: 16px;word-break: break-word; background-color: #f6f6f7; border-radius: 8px; text-align: center;\"\u003e\n  \u003cspan style=\"font-size: 20px; font-weight: bold; color: #202223; letter-spacing: 4px;\"\u003e{{discount.code}}\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\n\u003cp\u003eWarm regards,\u003c\/p\u003e\n\u003cp\u003e{{shop.name}}.\u003c\/p\u003e"},"banner":{"heading":"Earn DISCOUNT CODE","description":"Finish this survey and earn discount for your next purchase!","text":{"color":"#FFFFFF"},"background":{"type":"solid","color":"#1C1C1C","colorSolid":"#1C1C1C","gradientStart":"#1C1C1C","gradientEnd":"#637381","gradientDirection":70,"image":{"url":""}}},"template":"\n \u003cdiv class=\"Avada-Email\"\u003e\n   \u003cdiv class=\"Avada-Email__Content\"\u003e\n      {{email.content}}\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n"},"name":"Cart abandonment ","isActive":true,"channels":{"dedicatedPageSurvey":{"type":"dedicatedPageSurvey","link":"","enabledHeaderLogo":false,"headerLogo":{"url":"","alignment":"center"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"background":{"type":"solid","colorSolid":"#FFFFFF","gradientStart":"#FFFFFF","gradientEnd":"#000000","gradientDirection":70,"image":{"url":""}},"enabled":true},"siteWidget":{"type":"siteWidget","position":"left","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"pageTargeting":{"type":"all_pages","enabledExcludePages":false,"pages":[],"productPageType":"all_product_pages","specificProducts":[],"collectionPageType":"all_collection_pages","specificCollections":[]},"timing":"10_seconds_after_page_load","userTargeting":{"type":"all_users","enabledUserTag":true,"userTags":[]},"widgetRecurrence":"every_time_survey_not_completed","enabled":false},"postPurchasePage":{"type":"postPurchasePage","userTargeting":{"type":"all_users","enabledUserTag":false,"userTags":[],"enabledProductPurchased":false,"productPurchased":[]},"enabled":false},"postPurchaseEmail":{"type":"postPurchaseEmail","userTargeting":{"type":"all_users","userTags":[],"enabledUserTag":false,"enabledProductPurchased":false,"productPurchased":[]},"emailSetting":{"fromType":"default"},"headerLogo":{"url":"","sizePercentage":88},"content":{"subject":"","body":"\u003ch1\u003eThank you for your visiting!\u003c\/h1\u003e\u003cp\u003eDear {{customer.displayName}},\u003c\/p\u003e\u003cp\u003e\u003cbr\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eAt {{shop.name}}, we value your feedback. That's why we would like to invite you to participate in a short survey about your recent experience.\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003ePlease click the button below to complete the survey, and it will only take a few minutes to complete.\u003cbr\u003eWe appreciate your time and effort in providing us with this valuable feedback.\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eYou could explore more products in our store for the next season here: {{shop.url}}.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e\u003cp\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003e\u003cspan style=\"white-space:pre-wrap;\"\u003eWarm regards,\u003cbr\u003e{{shop.name}}.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/p\u003e"},"text":{"primaryColor":"#1C1C1C","secondaryColor":"#585858"}
9742,"background":{"outerBackground":"#F5F5F5","innerBackground":"#FFFFFF"},"button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#333333","text":"Start your survey"},"enabledCustomCss":false,"customCss":"","enabled":false},"exitIntent":{"type":"exitIntent","enabled":true,"enableEmptyCart":false,"enableHasProducts":true,"widgetRecurrence":"only_once","position":"center","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"}},"embedSurvey":{"type":"embedSurvey","embedType":"block","button":{"color":"#FFFFFF","backgroundColor":"#1C1C1C","backgroundHover":"#1C1C1CE6"},"section":{"primaryTextColor":"#1C1C1C","secondaryTextColor":"#585858","accentColor":"#1C1C1C","backgroundColor":"#FFFFFF"},"enabled":false}},"channelTypes":["dedicatedPageSurvey","exitIntent"]}],
9743      "quizzes":             null,
9744      "logics":              [{"surveyId":"oQq5678ripcyz2rOXSmF","logics":[]},{"surveyId":"02oM6Gal1EzXJ1DDvIK2","logics":[{"id":"logic_1753392880680","questionId":"question_1753314352987","question":"Where did you find us?","type":"merchant","conditions":[],"actions":[]}]},{"surveyId":"U4VyHz4GGSLGft1O6eKO","logics":[]}],
9745      "buttonTranslation":   null,
9746      "settings":            {"shopId":"3Bu61qLyUyPg67WmmPvY","shopLogo":{"url":"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/ipowerresalelogolong_1oqt0m4.png?v=1753383728"},"shopCongratulationImage":{"url":"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/ipowerresalelogolong_1oqt0m4_56ef2899-f17e-45f8-b253-8b597b671855.png?v=1753383734"},"shopCongratulationEmailImage":{"url":"https:\/\/cdn.shopify.com\/s\/files\/1\/0621\/3615\/6329\/files\/ipowerresalelogolong_1oqt0m4_def0fdc1-975a-452d-8df3-c753b35d7eda.png?v=1753383738"}},
9747      "segments":            [{"id":"return_customer_segment","name":"Return customer","isDefault":true,"linkedSurveys":[],"condition":{"field":"lifetimeOrderCount","operator":"greater_than","value":"1"}},{"id":"new_customer_segment","name":"New customer","isDefault":true,"linkedSurveys":[],"condition":{"field":"lifetimeOrderCount","operator":"less_than_or_equal","value":"1"}},{"id":"v5EBP7gd0EtdOtgUzA6c","condition":{"field":"lifetimeOrderCount","operator":"equals","value":"1"},"name":"First Time Purchaser"}],
9748      "abTests":             null,
9749      "customerSubmissions": null,
9750      "customerQuizResults": null
9751    }
9752  </script>
9752<!-- END app snippet -->
9753
9754
9755
9756</div><div id="shopify-block-Ac0ZhMlZ2aGkrc1Z5Y__4113930173634242220" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: app-common-snippet -->
9757
9758<script>
9759var Shopjar = Shopjar || {};
9760Shopjar.settings = {"is_affiliate_enabled":true,"is_referral_enabled":true,"cookie_validity":90,"store_url":"https:\/\/ipowerresale.com\/","store_name":"iPowerResale","verified":true,"proxy_url":"\/a\/shopjar-referral","recaptcha_site_key":"6Lc_cQYeAAAAANa5X8nozNicLDPxKQZZHej21Wfu","copied_link":"Copied!","invite_friend":"Sent!","invalid_email":"Invalid email","order_contain_value":"You should be an existing customer with at least one order to become a member and participate in the referral program","referral":{"share_options":{"facebook":{"isEnabled":false},"twitter":{"isEnabled":false,"message":"Use my referral link {{referral_link}} to get exciting discounts on your next purchase at https:\/\/ipowerresale.com"},"email":{"isEnabled":true,"subject":"Get $20 Off at iPowerResale","message":"Hey there,\n\nCheck out iPowerResale and use my referral link {{referral_link}} to get $20 off your first purchase!"},"whatsapp":{"isEnabled":true,"message":"Use my referral link {{referral_link}} to get $20 off your first purchase at iPowerResale!"}}},"affiliate":{"share_options":{"facebook":{"isEnabled":false},"twitter":{"isEnabled":false,"message":"Check this out {{affiliate_link}} amazing products you might like."},"email":{"isEnabled":false,"subject":"Check this out","message":"Check this out {{affiliate_link}} amazing products you might like."},"whatsapp":{"isEnabled":false,"message":"Check this out {{affiliate_link}} amazing products you might like."}}}};
9761</script>
9761
9762<!-- END app snippet -->
9763
9764
9765<link rel="preconnect" href="https://www.google.com" crossorigin>
9766<link rel="dns-prefetch" href="https://www.google.com">
9767<script src="https://cdn.shopify.com/extensions/01a0c899-200a-7057-afe6-6d841b2f339b/referral-and-affiliates-214/assets/common.js" defer></script>
9767
9768
9769
9770
9771
9772<link href="//cdn.shopify.com/extensions/01a0c899-200a-7057-afe6-6d841b2f339b/referral-and-affiliates-214/assets/reward-claim-popup-v2.css" rel="stylesheet" type="text/css" media="all" /><style>:root {--rcp-popup-bg-color-v2: #FFFFFF;--rcp-title-one-color-v2: #1D7F9A;--rcp-title-two-color-v2: #1D7F9A;--rcp-subtitle-one-color-v2: #222222;--rcp-subtitle-two-color-v2: #222222;--rcp-button-color-v2: #1D7F9A;--rcp-button-text-color-v2: #FFFFFF;--rcp_no_thanks_button_color: #FFFFFF;--rcp-coupon-color-v2: #222222;--rcp-coupon-copy-color-v2: #222222;--rcp-continue-text-color-v2: #FFFFFF;--rcp-continue-color-v2: #1D7F9A;--rcp-prompt-message-color-v2: #1D7F9A;--rcp-prompt-copy-message-color-v2: #222222;}</style><!-- BEGIN app snippet: reward-claim-popup-v2 -->
9773
9774<script src="https://cdn.shopify.com/extensions/01a0c899-200a-7057-afe6-6d841b2f339b/referral-and-affiliates-214/assets/reward-claim-popup-v2.js" defer></script>
9774
9775
9776<script>
9777window.Shopjar = window.Shopjar || {};
9778window.Shopjar.RewardClaimPopupV2 = {"meta":{"version":1,"category":"REFERRAL","templateName":"default-reward-claim-popup-template","templateFor":"FRIEND","templateType":"LANDING_POP_UP"},"config":{"module":"Referral Program","section":"Branding \u0026 Popups","description":"Visible in the Referral Program under the Branding \u0026 Popups section."},"content":{"popup_background_color":"#FFFFFF","step1":{"title_one":"Claim your reward!","title_one_color":"#1D7F9A","is_subtitle_one_checked":true,"subtitle_one":"Your friend has gifted you $20 off!","subtitle_one_color":"#222222","placeholder":"Enter the email address","button":{"button_text":"Claim reward","button_color":"#1D7F9A","button_text_color":"#FFFFFF"},"prompt":{"prompt_message":"Enter your email address to receive the reward.","prompt_message_color":"#1D7F9A","is_prompt_message_checked":true},"closeBtn":{"button_text":"No Thanks","button_color":"#FFFFFF","button_text_color":"#000000"},"footer":"You are signing up to receive communication via email and can unsubscribe at any time."},"step2":{"title_two":"Your reward!","title_two_color":"#1D7F9A","is_subtitle_two_checked":true,"subtitle_two":"Here is your coupon code","subtitle_two_color":"#222222","coupon":{"coupon_color":"#222222","coupon_border_color":"#1D7F9A","coupon_copy_color":"#222222"},"continue":{"title":"Continue Shopping","text_color":"#FFFFFF","background_color":"#1D7F9A"},"prompt":{"copy_prompt":"Use the code above and your same email at checkout to receive your $20 discount","prompt_copy_message_color":"#222222","is_prompt_copy_message_checked":true}},"custom_css":""},"reward_claim_status":true,"status":"ACTIVE"};
9779
9780async function initRewardClaimPopupV2() {
9781// Initialize reward claim popup v2 when DOM is ready
9782if (typeof window.SJ_RewardClaimPopupV2 !== 'undefined' && window.Shopjar.RewardClaimPopupV2) {
9783window.SJ_RewardClaimPopupV2.render(window.Shopjar.RewardClaimPopupV2, 'sj_rcp_container_v2');
9784}
9785}
9786
9787document.addEventListener("DOMContentLoaded", initRewardClaimPopupV2);
9788</script>
9788
9789
9790<div id="sj_rcp_container_v2" data-nosnippet>
9791</div><!-- END app snippet -->
9792
9793
9794
9795
9796</div><div id="shopify-block-AdmdXU3VUQ3hMTm1rN__8764476057892802672" class="shopify-block shopify-app-block"><link rel="preconnect" href="https://app.restockrocket.io" crossorigin><link rel="preconnect" href="https://ipowerresale.myshopify.com" crossorigin><!-- Config and setup JS -->
9797<script id="RestockRocketConfig">
9798  window._RestockRocketConfig = window._RestockRocketConfig || {}
9799  window._RestockRocket = window._RestockRocket || {}
9800  window._Stoq = window._RestockRocket
9801  window._StoqConfig = window._RestockRocketConfig
9802  try { window._RestockRocket.inlineRanAt = performance.now(); } catch (e) { }
9803  function normalizeLocale(locale) {
9804    if (!locale || locale.trim() === '') {
9805      return '';
9806    }
9807    return locale.toString().toLowerCase().replace(/-/g, '_');
9808  }
9809
9810  window._RestockRocketConfig.locale = 'en';
9811  window._RestockRocketConfig.normalizedLocale = normalizeLocale('en');
9812  window._RestockRocketConfig.shop = 'ipowerresale.myshopify.com';
9813  window._RestockRocketConfig.pageType = 'product';
9814  window._RestockRocketConfig.liquidRenderedAt = 1791120319;window._RestockRocketConfig.marketId = 21378531497;window._RestockRocketConfig.countryName = 'United States';
9815    window._RestockRocketConfig.countryIsoCode = 'US';window._RestockRocketConfig.languageIsoCode = 'en';window._RestockRocketConfig.cartInventoryQuantity = {};
9816  if (!window._RestockRocketConfig.cartToken) {
9817    try {
9818      const m = document.cookie.match(/(?:^|;\s*)cart=([^;]+)/);
9819      if (m && m[1]) window._RestockRocketConfig.cartToken = decodeURIComponent(m[1]);
9820    } catch (e) { }
9821  }
9822window._RestockRocketConfig.cachedSettings = {"id":61159,"shop_id":61139,"currency":"USD","created_at":"2026-04-29T17:50:08.410Z","updated_at":"2026-10-01T04:54:32.095Z","enable_app":true,"enable_signup_widget":true,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":false,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder":"SMS","storefront_form_phone_label":"Phone number","storefront_form_email_label":"Email","storefront_form_phone_error":"Please enter a valid phone number","storefront_form_customer_name_placeholder":"Name","storefront_form_customer_name_error":"Please enter your name","storefront_form_did_you_mean_error":"Did you mean %{suggested_email}? Or use %{current_email}","form_customer_name_enabled":false,"form_customer_name_required":false,"css_config":"","js_config":"","collect_promotion_consent":false,"storefront_form_promotion_consent_label":"Notify me about other news, sales, discounts & offers too!","show_button_on_collection":false,"sms_default_country":"us","sms_allowed_countries":[],"sms_restrict_country":false,"sms_default_channel":true,"optin_required":false,"optin_custom_domain_enabled":false,"optin_success_text":"Registration confirmed! You'll receive an alert when the product is restocked.","storefront_button_border_radius":0,"storefront_button_disable_tag_hides_button":true,"storefront_button_disable_tag_enabled":false,"quantity_required":false,"storefront_form_quantity_label":"Quantity","enable_alerts":true,"sms_allowed":true,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":"","insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"Preorders must be purchased 
9822separately from regular items. Please complete your current order first, or clear your cart to continue.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":".grid-product__link","insert_button_after_selector_index":".grid-product__link","push_enabled":false,"push_allowed":true,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification","storefront_form_push_error":"Permission rejected! Please review notification settings and try again.","storefront_font_family":"OpenSans","insert_button_after_selector_collection_type":"afterend","show_channel_selector":false,"storefront_form_empty_error":"Please fill in one or more of the options above","storefront_form_push_input":"Send push notification","insert_button_after_selector_page":".grid-product__link","show_button_on_page":false,"insert_button_after_selector_search":".grid-product__link","show_button_on_search":false,"app_proxy_path_prefix":"/apps/restockrocket-production","collection_link_selector":"","index_link_selector":"","page_link_selector":"","search_link_selector":"","collection_check_link_visibility":true,"collection_buttons_container":"","index_buttons_container":"","page_buttons_container":"","search_buttons_container":"","extension_enable_url_variant_detection":true,"extension_enable_value_variant_detection":true,"extension_value_variant_selector":"[name='id']","resubscribe_text":"This product is out of stock. Get notified when it’s restocked again by entering your details below!","preorder_enabled":false,"preorder_buy_button_selector":".shopify-payment-button","preorder_add_to_cart_button_selector":".quantity-addtoCartBtn .add-to-cart-btn","preorder_badge_selector":"","preorder_button_out_of_stock_text":"Out of stock","preorder_button_add_to_cart_text":"Add to cart","preorder_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_enabled":false,"preorder_collection_form_selector":"form[action*=\"/cart/add\"]","preorder_collection_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_index_enabled":false,"preorder_index_form_selector":"form[action*=\"/cart/add\"]","preorder_index_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_page_enabled":false,"preorder_page_form_selector":"form[action*=\"/cart/add\"]","preorder_page_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_search_enabled":false,"preorder_search_form_selector":"form[action*=\"/cart/add\"]","preorder_search_add_to_cart_button_selector":"form[action*=\"/cart/add\"] button","preorder_collection_badge_selector":".grid-product__image-mask","preorder_index_badge_selector":".grid-product__image-mask","preorder_page_badge_selector":".grid-product__image-mask","preorder_search_badge_selector":".grid-product__image-mask","preorder_badge_selector_type":"afterend","preorder_collection_badge_selector_type":"afterend","preorder_button_child_selector":"span","preorder_button_disclaimer_insert_selector":".quantity-add-to-cart-section .quantity-addtoCartBtn","preorder_button_disclaimer_insert_selector_type":"afterend","preorder_payment_insert_selector":"","preorder_payment_insert_selector_type":"afterend","preorder_price_container_selector":"","preorder_price_container_selector_insert_type":"afterend","preorder_terms_insert_selector":".quantity-add-to-cart-section .quantity-addtoCartBtn","preorder_terms_insert_selector_type":"beforebegin","preorder_original_price_selector":".product__price","preorder_price_format":"{{amount}} {{currency}}","show_badge_if_any_variant_is_preorder":false,"enable_console_debug":false,"inline_form_enabled":false,"inline_form_selector":".payment-buttons","inline_form_selector_type":"afterend","storefront_form_prefill_customer":true,"storefront_form_show_image":false,"storefront_form_text_color":"#202223","storefront_form_background_color":"#FFFFFF","storefront_form_border_radius":10,"market_setup_type":"single_market","shopify_app_id":5940125,"preorder_progress_bar_insert_selector":"","preorder_progress_bar_insert_selector_type":"beforebegin","countdown_timer_insert_selector":"","countdown_timer_insert_selector_type":"afterend","configure_notify_me_enabled":false,"restock_note_insert_selector":"","restock_note_insert_selector_type":"afterend","restock_note_background_color":"#f3f4f6","restock_note_text_color":"#202223","restock_note_border_radius":4,"preorder_modal_continue_button_text":"Continue","preorder_modal_cancel_button_text":"Cancel","meta_pixel_enabled":false,"meta_pixel_id":null,"cache":true,"cached_at":"2026-10-01T04:54:32.130Z","multi_language_enabled":false,"translation_locale":"en","disable_refresh_on_stale_liquid":false,"api_host":"https://ext.stoqapp.com"};window._RestockRocketConfig.storefrontAccessToken = "2427add63ad83fb2ff4a68dd8896b178";
9823  window._RestockRocketConfig.metafieldNamespace = 'restockrocket_production';
9824  window._RestockRocketConfig.storefrontApiVersion = '2026-07';window._RestockRocketConfig.cachedPreorderVariantIds = { preorder_variant_ids: [] };window._RestockRocketConfig.cachedInStockVariantIds = { in_stock_variant_ids: [] };window._RestockRocketConfig.cachedOutOfStockVariantIds = { out_of_stock_variant_ids: [] };window._RestockRocketConfig.cachedVariantPreorderLimits = { variant_preorder_limits: {} };window._RestockRocketConfig.cachedVariantShippingTexts = { variant_shipping_texts: {} };
9825window._RestockRocketConfig.sellingPlans = [];(function() {
9826      const cachedData = {"plans":[],"disabled_plan_ids":[19713982633,18707873961],"has_in_stock_offer":false,"has_preorder_offer":false,"read_flags":{"enable_storefront_product_reads":true,"enable_storefront_integrations_read":true,"enable_storefront_selling_plans_read":true},"cached_at":"2026-10-04T10:47:28Z"};
9827
9828      if (cachedData && typeof cachedData === 'object' && cachedData.cached_at) {
9829        window._RestockRocketConfig.readFlags = cachedData.read_flags || {};
9830        const oldPlans = window._RestockRocketConfig.sellingPlans;
9831        const maxUpdatedAt = Array.isArray(oldPlans) && oldPlans.length > 0
9832          ? oldPlans.reduce(function(max, plan) {
9833              if (plan.updated_at) {
9834                const planDate = new Date(plan.updated_at);
9835                const maxDate = max ? new Date(max) : null;
9836                return (!maxDate || (planDate && !isNaN(planDate) && planDate > maxDate)) ? plan.updated_at : max;
9837              }
9838              return max;
9839            }, '')
9840          : null;
9841        const cachedDate = new Date(cachedData.cached_at);
9842        const maxDate = maxUpdatedAt ? new Date(maxUpdatedAt) : null;
9843        const useCached = !maxUpdatedAt || (cachedDate && !isNaN(cachedDate) && (!maxDate || cachedDate > maxDate));
9844
9845        if (useCached) {
9846          if (Array.isArray(cachedData.plans)) {
9847            window._RestockRocketConfig.sellingPlans = cachedData.plans;
9848            window._RestockRocketConfig.disabledSellingPlanIds = cachedData.disabled_plan_ids || [];
9849            console.debug('[RR] Using selling plans from cachedSellingPlans (cached_at: ' + cachedData.cached_at + ')');
9850          }
9851        } else {
9852          window._RestockRocketConfig.disabledSellingPlanIds = [];
9853          console.debug('[RR] Using selling plans from old format (max updated_at: ' + maxUpdatedAt + ')');
9854        }
9855      }
9856    })();window._RestockRocketConfig.enabledNotifyMeVariantIds = [];window._RestockRocketConfig.disabledNotifyMeVariantIds = [];window._RestockRocketConfig.backInStockTemplates = [];window._RestockRocketConfig.restockNotes = {};window._RestockRocketConfig.integrations = [];window._RestockRocketConfig.product = {
9857        id: 8832364773545,
9858        title: "iPad Pro 11-inch M5",
9859        handle: "apple-ipad-pro-11-inch-m5",
9860        vendor: "ipowerresale",
9861        tags: ["iPad"],
9862        available: true,
9863        options: ["Title"],
9864        selling_plan_groups: [],
9865        featured_image: "\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668\u0026width=800",
9866        variants: [{
9867              id: 46682881720489,
9868              title: "Default Title",
9869              available: true,
9870              sku: "iPad Pro Parent 4",
9871              price: 97900
9872}
9873]
9874      };window._RestockRocketConfig.variantsInventoryPolicy = {46682881720489 : "deny",};
9875    window._RestockRocketConfig.variantsInventoryQuantity = {46682881720489 : 1,};
9876    window._RestockRocketConfig.variantsPreorderCount = {46682881720489 : parseInt(""),};
9877    window._RestockRocketConfig.variantsPreorderCountForMarket = {46682881720489 : null,};
9878    window._RestockRocketConfig.variantsPreorderMaxCount = {46682881720489 : parseInt(""),};
9879    window._RestockRocketConfig.variantsPreorderMaxCountForMarket = {46682881720489 : null,};
9880    window._RestockRocketConfig.variantsShippingText = {46682881720489 : "",};
9881    window._RestockRocketConfig.variantsShippingTextForMarket = {46682881720489 : null,};window._RestockRocketConfig.selected_variant_id = 46682881720489;
9882    window._RestockRocketConfig.selected_variant_available = (window._RestockRocketConfig.product.variants.find(function(variant) { return variant.id == window._RestockRocketConfig.selected_variant_id }) || {}).available;
9883  try {
9884    var _sqCfg = window._RestockRocketConfig;
9885    var _sqPlanEnabled = Array.isArray(_sqCfg.sellingPlans) &&
9886      _sqCfg.sellingPlans.some(function (p) { return p && p.enabled; });
9887    var _sqPreCount = ((_sqCfg.cachedPreorderVariantIds &&
9888      _sqCfg.cachedPreorderVariantIds.preorder_variant_ids) || []).length;
9889    _sqCfg.preordersConfigured = !!(_sqPlanEnabled && _sqPreCount);
9890  } catch (e) { }
9891  try {
9892    var _sqc = window._RestockRocketConfig;
9893    var _sqOn = !(_sqc.cachedSettings && _sqc.cachedSettings.block_accelerated_checkout === false);
9894    var _sqPre = (_sqc.cachedPreorderVariantIds &&
9895      _sqc.cachedPreorderVariantIds.preorder_variant_ids) || [];
9896    var _sqArm = false;
9897    if (_sqOn && _sqc.preordersConfigured) {
9898      if (_sqc.pageType === 'product' && _sqc.product && _sqc.product.variants) {
9899        _sqArm = _sqc.product.variants.some(function (v) { return _sqPre.indexOf(Number(v.id)) !== -1; });
9900      } else {
9901        _sqArm = (_sqc.integrations || []).some(function (i) {
9902          return i && i.type === 'featured_product' && i.enabled &&
9903            Array.isArray(i.page_types) && i.page_types.indexOf(_sqc.pageType) !== -1;
9904        });
9905      }
9906    }
9907    if (_sqArm && document.documentElement) {
9908      _sqc.acceleratedGateArmed = true;
9909      document.documentElement.classList.add('stoq-buy-now-pending');
9910      setTimeout(function () {
9911        document.documentElement.classList.remove('stoq-buy-now-pending');
9912      }, 6000);
9913    }
9914  } catch (e) { }
9915
9916  window._RestockRocketConfig.scriptUrlProduct = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-product.js'
9917  window._RestockRocketConfig.scriptUrlCollection = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-collection.js'
9918  window._RestockRocketConfig.scriptUrlProductBis = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-product-bis.js'
9919  window._RestockRocketConfig.scriptUrlCollectionBis = 'https://cdn.shopify.com/extensions/01a0f67f-532e-7916-acb4-6f3af102b411/restockrocket-1-599/assets/restockrocket-collection-bis.js'
9920  window._RestockRocketConfig.scriptHost = window._RestockRocketConfig.scriptUrlProduct.substring(0, window._RestockRocketConfig.scriptUrlProduct.lastIndexOf('/') + 1)
9921  window._RestockRocketConfig.host = (window._RestockRocketConfig.cachedSettings && window._RestockRocketConfig.cachedSettings.api_host) || 'https://app.restockrocket.io'
9922  try {
9923    const _stoqVersionMatch = window._RestockRocketConfig.scriptHost.match(/(\d+)\/?(?:assets\/?)?$/);
9924    window._RestockRocketConfig.appVersion = (_stoqVersionMatch && _stoqVersionMatch[1]) || '';
9925  } catch (e) {
9926    window._RestockRocketConfig.appVersion = '';
9927  }
9928  const SETTINGS_CACHE_DURATION = 15 * 60 * 1000;
9929  const LIQUID_CACHE_MAX_AGE = 15 * 60;
9930  const liquidRenderedAt = window._RestockRocketConfig.liquidRenderedAt;
9931  if (!liquidRenderedAt || typeof liquidRenderedAt !== 'number' || isNaN(liquidRenderedAt)) {
9932    console.debug('STOQ - Invalid or missing liquidRenderedAt timestamp, assuming fresh');
9933    window._RestockRocketConfig.isLiquidCacheFresh = true;
9934    window._RestockRocketConfig.liquidCacheAge = null;
9935  } else {
9936    const now = Math.floor(Date.now() / 1000);
9937    const liquidCacheAge = now - liquidRenderedAt;
9938    window._RestockRocketConfig.liquidCacheAge = Math.max(0, liquidCacheAge);
9939    if (liquidCacheAge < 0) {
9940      console.debug(`STOQ - Client clock appears ahead of server by ${Math.abs(Math.round(liquidCacheAge / 60))} minutes, assuming cache fresh`);
9941      window._RestockRocketConfig.isLiquidCacheFresh = true;
9942    } else if (liquidCacheAge <= LIQUID_CACHE_MAX_AGE) {
9943      console.debug(`STOQ - Liquid cache is fresh (${Math.round(liquidCacheAge / 60)} minutes old)`);
9944      window._RestockRocketConfig.isLiquidCacheFresh = true;
9945    } else {
9946      console.debug(`STOQ - Liquid cache is stale (${Math.round(liquidCacheAge / 60)} minutes old, max ${Math.round(LIQUID_CACHE_MAX_AGE / 60)} minutes)`);
9947      window._RestockRocketConfig.isLiquidCacheFresh = false;
9948    }
9949  }
9950
9951  function checkSettingsExpiry(settings) {
9952    try {
9953      if (!settings || !settings.updated_at) {
9954        console.debug('STOQ - Invalid settings data structure');
9955        return null;
9956      }
9957
9958      if (!settings.cache) {
9959        console.debug('STOQ - settings caching disabled');
9960        return null;
9961      }
9962      if (settings.multi_language_enabled) {
9963        if (!settings.translations) {
9964          console.debug('STOQ - multi-language enabled but no translation data in cache, fetching fresh');
9965          return null;
9966        }
9967        if (window._RestockRocketConfig.normalizedLocale &&
9968            !Object.prototype.hasOwnProperty.call(settings.translations, window._RestockRocketConfig.normalizedLocale)) {
9969          console.debug('STOQ - locale not explicitly translated, will use default language from cache');
9970        }
9971      }
9972
9973      const updatedAt = new Date(settings.updated_at);
9974      if (isNaN(updatedAt.getTime())) {
9975        console.debug('STOQ - Invalid updated_at date format in settings');
9976        return null;
9977      }
9978
9979      const age = Date.now() - updatedAt.getTime();
9980      if (age < SETTINGS_CACHE_DURATION) {
9981        console.debug('STOQ - settings changed recently, skipping cache');
9982        return null;
9983      }
9984
9985      return settings;
9986    } catch (error) {
9987      console.debug('STOQ - Error checking settings cache:', error);
9988      return null;
9989    }
9990  }
9991
9992  function createRestockRocketContainer() {
9993    const restockRocketContainer = document.createElement('div');
9994    restockRocketContainer.id = 'restock-rocket';
9995    document.body.appendChild(restockRocketContainer);
9996  }
9997
9998  function createRestockRocketScript(scriptUrl) {
9999    const restockRocketScriptElement = document.createElement('script');
10000    restockRocketScriptElement.setAttribute('defer', 'defer');
10001    restockRocketScriptElement.src = scriptUrl;
10002    document.body.appendChild(restockRocketScriptElement);
10003  }
10004
10005  createRestockRocketContainer()
10006
10007  console.debug('STOQ - extension activated')
10008  try {
10009    const _stoqInitConfig = window._RestockRocketConfig;
10010    const _stoqDetectedVariantIds = (_stoqInitConfig.product && Array.isArray(_stoqInitConfig.product.variants)
10010)
10011      ? _stoqInitConfig.product.variants.map(function(v) { return v.id })
10012      : [];
10013    const _stoqSelectedVariantId = _stoqInitConfig.selected_variant_id;
10014    var _stoqPageSeq = 0;
10015    try {
10016      _stoqPageSeq = (parseInt(window.sessionStorage.getItem('_stoq_pls') || '0', 10) || 0) + 1;
10017      window.sessionStorage.setItem('_stoq_pls', String(_stoqPageSeq));
10018    } catch (e) { }
10019    Shopify?.analytics?.publish?.('stoq_initialized', {
10020      cart_token: _stoqInitConfig.cartToken || '',
10021      page_url: window.location.href,
10022      page_type: _stoqInitConfig.pageType || '',
10023      shop_domain: _stoqInitConfig.shop || '',
10024      market_id: _stoqInitConfig.marketId || '',
10025      country_code: _stoqInitConfig.countryIsoCode || '',
10026      detected_variant_ids: _stoqDetectedVariantIds,
10027      selected_variant_id: _stoqSelectedVariantId || '',
10028      page_load_seq: _stoqPageSeq,
10029      liquid_rendered_at: _stoqInitConfig.liquidRenderedAt || 0,
10030      app_version: _stoqInitConfig.appVersion || '',
10031      liquid_cache_age: _stoqInitConfig.liquidCacheAge,
10032      inventory_policy: (_stoqInitConfig.variantsInventoryPolicy || {})[_stoqSelectedVariantId] || '',
10033      inventory_quantity: (_stoqInitConfig.variantsInventoryQuantity || {})[_stoqSelectedVariantId],
10034    });
10035  } catch (e) {
10036    console.debug('STOQ - stoq_initialized publish failed:', e);
10037  }
10038  try {
10039    var _sqTrack = window._RestockRocketConfig;
10040    if (_sqTrack.preordersConfigured) {
10041      document.addEventListener('click', function (e) {
10042        try {
10043          var t = e.target;
10044          if (!t || !t.closest) return;
10045          var host = t.closest('.shopify-payment-button, shopify-payment-terms');
10046          if (!host) return;
10047          var channel = host.matches && host.matches('shopify-payment-terms')
10048            ? 'shop_pay_installments' : 'buy_now';
10049          var form = host.closest('form');
10050          var vidEl = form && form.querySelector('[name="id"]');
10051          var variantId = (vidEl && vidEl.value) || _sqTrack.selected_variant_id || '';
10052          var _sqVidNum = Number(variantId);
10053          var _sqPlan = null;
10054          var _sqPlans = Array.isArray(_sqTrack.sellingPlans) ? _sqTrack.sellingPlans : [];
10055          var _sqMktId = Number(_sqTrack.marketId);
10056          var _sqForVariant = function (pl) {
10057            return pl && pl.enabled && Array.isArray(pl.variant_ids) &&
10058              pl.variant_ids.indexOf(_sqVidNum) !== -1;
10059          };
10060          _sqPlans.forEach(function (pl) {
10061            if (!_sqPlan && _sqForVariant(pl) && pl.markets_enabled &&
10062                Array.isArray(pl.shopify_market_ids) &&
10063                pl.shopify_market_ids.indexOf(_sqMktId) !== -1) { _sqPlan = pl; }
10064          });
10065          if (!_sqPlan) {
10066            _sqPlans.forEach(function (pl) {
10067              if (!_sqPlan && _sqForVariant(pl) && !pl.markets_enabled) { _sqPlan = pl; }
10068            });
10069          }
10070          Shopify?.analytics?.publish?.('stoq_accelerated_checkout_clicked', {
10071            variant_id: variantId,
10072            product_id: (_sqTrack.product && _sqTrack.product.id) || '',
10073            channel: channel,
10074            market_id: _sqTrack.marketId || '',
10075            country_code: _sqTrack.countryIsoCode || '',
10076            page_type: _sqTrack.pageType || '',
10077            cart_token: _sqTrack.cartToken || '',
10078            page_url: (window.location && window.location.href) || '',
10079            properties: {
10080              is_preorder_variant: (function () {
10081                var vid = Number(variantId);
10082                var has = function (a) { return Array.isArray(a) && a.indexOf(vid) !== -1; };
10083                return has(_sqTrack.preorderVariantIds) ||
10084                  has(_sqTrack.cachedPreorderVariantIds &&
10085                    _sqTrack.cachedPreorderVariantIds.preorder_variant_ids);
10086              })(),
10087              in_enabled_plan: !!_sqPlan,
10088              is_instock_variant: (function () {
10089                var has = function (a) { return Array.isArray(a) && a.indexOf(_sqVidNum) !== -1; };
10090                return has(_sqTrack.inStockVariantIds) ||
10091                  has(_sqTrack.cachedInStockVariantIds &&
10092                    _sqTrack.cachedInStockVariantIds.in_stock_variant_ids);
10093              })(),
10094              enrolled_plan_id: (_sqPlan && (_sqPlan.shopify_selling_plan_id || _sqPlan.shopify_selling_plan_group_id)) || '',
10095              enrolled_plan_provider: (_sqPlan && _sqPlan.inventory_provider) || '',
10096              block_enabled: !(_sqTrack.cachedSettings && _sqTrack.cachedSettings.block_accelerated_checkout === false),
10097              gate_armed: !!_sqTrack.acceleratedGateArmed,
10098              gate_active_at_click: !!(document.documentElement &&
10099                document.documentElement.classList.contains('stoq-buy-now-pending')),
10100              blocked: (function () {
10101                try {
10102                  var rr = window._RestockRocket;
10103                  return !!(rr && typeof rr.willBlockAcceleratedCl
10103ick === 'function' &&
10104                    rr.willBlockAcceleratedClick(e));
10105                } catch (err) { return false; }
10106              })(),
10107            },
10108          });
10109        } catch (err) { }
10110      }, true);
10111    }
10112  } catch (e) { }
10113  function applyTranslations(settings) {
10114    try {
10115      if (!settings || !settings.multi_language_enabled) {
10116        return settings;
10117      }
10118
10119      if (!settings.translations) {
10120        console.debug('STOQ - No translations found, skipping translation');
10121        return settings;
10122      }
10123
10124      const normalizedLocale = window._RestockRocketConfig.normalizedLocale;
10125      const translations = settings.translations;
10126
10127      if (!normalizedLocale) {
10128        console.debug('STOQ - No matching locale for translations. Available:', Object.keys(translations || {}));
10129        delete settings.translations;
10130        return settings;
10131      }
10132
10133      console.debug(`STOQ - Applying translations for normalized locale: ${normalizedLocale} (original: ${window._RestockRocketConfig.locale})`);
10134
10135      const translatedFields = translations[normalizedLocale];
10136      if (translatedFields && typeof translatedFields === 'object') {
10137        Object.keys(translatedFields).forEach(function(key) {
10138          const value = translatedFields[key];
10139          if (value !== null && value !== undefined && value !== '') {
10140            settings[key] = value;
10141          }
10142        });
10143      } else {
10144        console.debug('STOQ - No translated fields found for locale:', normalizedLocale);
10145      }
10146
10147      delete settings.translations;
10148      return settings;
10149    } catch (e) {
10150      console.debug('STOQ - error applying translations:', e);
10151      return settings;
10152    }
10153  }
10154  function setupCartSellingPlanUpdater(settings) {
10155    window.addEventListener('stoq:inventory-data-loaded', function(event) {
10156      console.debug('STOQ - Inventory data loaded, updating cart selling plans');
10157      if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) {
10158        window._RestockRocket.updateCartSellingPlans()
10159          .then(hasUpdates => {
10160            if (hasUpdates) {
10161              console.debug('STOQ - cart selling plans updated successfully');
10162            } else {
10163              console.debug('STOQ - no cart selling plan updates needed');
10164            }
10165          })
10166          .catch(error => {
10167            console.error('STOQ - error updating cart selling plans:', error);
10168          });
10169      }
10170    });
10171  }
10172  function storefrontGraphql(query, variables) {
10173    const cfg = window._RestockRocketConfig;
10174    if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) {
10175      return Promise.reject(new Error('Storefront API unavailable'));
10176    }
10177    return fetch(
10178      `https://${cfg.shop}/api/${cfg.storefrontApiVersion}/graphql.json`,
10179      {
10180        method: 'POST',
10181        headers: {
10182          'Content-Type': 'application/json',
10183          'X-Shopify-Storefront-Access-Token': cfg.storefrontAccessToken,
10184        },
10185        body: JSON.stringify({ query: query, variables: variables }),
10186      }
10187    )
10188    .then(function(response) {
10189      if (!response.ok) { throw new Error('Storefront API HTTP ' + response.status); }
10190      return response.json();
10191    })
10192    .then(function(body) {
10193      if (body && body.errors && body.errors.length) {
10194        throw new Error('Storefront API errors: ' + body.errors.map(function(e) { return e && e.message; }).join(', '));
10195      }
10196      return body && body.data;
10197    });
10198  }
10199  function fetchStorefrontShopMetafield(key) {
10200    const cfg = window._RestockRocketConfig;
10201    const query = 'query StoqShopMetafield($namespace: String!, $key: String!) { shop { metafield(namespace: $namespace, key: $key) { value } } }';
10202    return storefrontGraphql(query, { namespace: cfg.metafieldNamespace, key: key })
10203    .then(function(data) {
10204      const value = data && data.shop && data.shop.metafield && data.shop.metafield.value;
10205      if (!value) { throw new Error('Storefront API returned no ' + key + ' metafield value'); }
10206      return JSON.parse(value);
10207    });
10208  }
10209  (function loadStorefrontSettings() {
10210    const cfg = window._RestockRocketConfig;
10211    if (!cfg.storefrontAccessToken || cfg.disableStorefrontApi === true) return;
10212    function run() {
10213      // The live-settings read is one more shop-level metafield fetch, so it
10214      // shares fetchStorefrontShopMetafield with the integrations/selling_plans
10215      // reads rather than re-issuing the same query + parse.
10216      fetchStorefrontShopMetafield('settings')
10217      .then(function(settings) {
10218        cfg.storefrontSettings = settings;
10219        console.debug('STOQ - stored live settings from Storefront API on config.storefrontSettings');
10220      })
10221      .catch(function(e) {
10222        console.debug('STOQ - Storefront settings fetch failed (non-fatal):', e && e.message);
10223      });
10224    }
10225
10226    if (typeof window.requestIdleCallback === 'function') {
10227      window.requestIdleCallback(run, { timeout: 5000 });
10228    } else {
10229      setTimeout(run, 0);
10230    }
10231  })();
10232  const cachedSettings = window._RestockRocketConfig.cachedSettings;
10233  const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null;
10234
10235  if (validCachedSettings) {
10236    console.debug('STOQ - using cached settings');
10237    initializeScripts(validCachedSettings);
10238  } else {
10239    console.debug('STOQ - fetching fresh settings');
10240    const headers = {
10241      'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop,
10242      'ngrok-skip-browser-warning': 'skip'
10243    };
10244
10245    if (window.Shopify?.theme?.role === 'main') {
10246      headers['X-Shopify-Theme-Schema-Name'] = window.Shopify.theme.schema_name;
10247      headers['X-Shopify-Theme-Schema-Version'] = window.Shopify.theme.schema_version;
10248      headers['X-Shopify-Theme-Store-Id'] = window.Shopify.theme.theme_store_id;
10249    }
10250
10251    fetch(
10252      `${window._RestockRocketConfig.host}/api/v1/setting.json?translation_locale=${window._RestockRocketConfig.normalizedLocale}`,
10253      { headers }
10254    )
10255    .then(function(response) {
10256      if (!response.ok) {
10257        throw new Error('Network response was not ok');
10258      }
10259      return response.json();
10260    })
10261    .then(function(settings) {
10262      initializeScripts(settings);
10263    })
10264    .catch(function(error) {
10265      if (cachedSettings) {
10266        console.debug('STOQ - using expired cached settings as fallback');
10267        initializeScripts(cachedSettings);
10268      } else {
10269        console.error('STOQ - failed to load settings:', error);
10270      }
10271    })
10272    .catch(function(e) {
10273      console.error(e)
10274    })
10275  }
10276
10277  function fetchEmbedConfig(endpoint, apply) {
10278    return fetch(
10279      `${window._RestockRocketConfig.host}/api/v1/embed/${endpoint}.json`,
10280      {
10281        headers: {
10282          'X-Shopify-Shop-Domain': window._RestockRocketConfig.shop || window.Shopify.shop,
10283          'ngrok-skip-browser-warning': 'skip'
10284        }
10285      }
10286    )
10287    .then(function(response) {
10288      if (!response.ok) throw new Error(`Failed to fetch ${endpoint}`);
10289      return response.json();
10290    })
10291    .then(function(data) {
10292      try {
10293        apply(data);
10294      } catch (applyError) {
10295        console.error('STOQ - apply failed for ' + endpoint + ':', applyError);
10296        throw applyError;
10297      }
10298    })
10299    .catch(function(error) {
10300      console.debug(`STOQ - using cached ${endpoint}:`, error.message);
10301    });
10302  }
10303  function refreshShopConfig(source) {
10304    const cfg = window._RestockRocketConfig;
10305    const viaEmbed = function() { return fetchEmbedConfig(source.endpoint, source.apply); };
10306    const flagOn = !!cfg.readFlags && cfg.readFlags[source.flag] === true;
10307    if (!flagOn || source.embedOnly === true) { return viaEmbed(); }
10308
10309    return fetchStorefrontShopMetafield(source.metafieldKey)
10310      .then(function(value) {
10311        if (!source.isValid(value)) { throw new Error(source.metafieldKey + ' metafield is not a valid ' + source.endpoint + ' payload'); }
10312        source.apply(value);
10313        console.debug('STOQ - refreshed ' + source.endpoint + ' from the Storefront API');
10314      })
10315      .catch(function(error) {
10316        console.debug('STOQ - Storefront ' + source.endpoint + ' read failed, using embed:', error.message);
10317        return viaEmbed();
10318      });
10319  }
10320  function refreshIntegrations() {
10321    const cfg = window._RestockRocketConfig;
10322    return refreshShopConfig({
10323      endpoint: 'integrations',
10324      metafieldKey: 'integrations',
10325      flag: 'enable_storefront_integrations_read',
10326      isValid: function(value) { return Array.isArray(value); },
10327      apply: function(data) {
10328        cfg.integrations = data;
10329      }
10330    });
10331  }
10332  function refreshSellingPlans(embedOnly) {
10333    const cfg = window._RestockRocketConfig;
10334    return refreshShopConfig({
10335      embedOnly: embedOnly === true,
10336      endpoint: 'selling_plans',
10337      metafieldKey: 'cachedSellingPlans',
10338      flag: 'enable_storefront_selling_plans_read',
10339      isValid: function(value) { return !!value && Array.isArray(value.plans); },
10340      apply: function(data) {
10341        cfg.sellingPlans = data.plans;
10342        cfg.disabledSellingPlanIds = data.disabled_plan_ids || [];
10343        if (data && data.read_flags && typeof data.read_flags === 'object' && !Array.isArray(data.read_flags)) {
10344          cfg.readFlags = data.read_flags;
10345        }
10346      }
10347    });
10348  }
10349
10350  function initializeScripts(settings) {
10351    settings = applyTranslations(settings);
10352    window._RestockRocketConfig.settings = settings;
10353    console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`);
10354    const forceEmbedSellingPlans = settings.force_embed_selling_plans === true;
10355    const staleRefresh = !window._RestockRocketConfig.isLiquidCacheFresh && !settings.disable_refresh_on_stale_liquid;
10356    if (forceEmbedSellingPlans || staleRefresh) {
10357      console.debug('STOQ - refreshing selling_plans' + (staleRefresh ? ' + integrations (Liquid cache stale)' : ' (force_embed_selling_plans)'));
10358      const refreshes = [refreshSellingPlans(forceEmbedSellingPlans)];
10359      if (staleRefresh) { refreshes.push(refreshIntegrations()); }
10360      Promise.race([
10361        Promise.all(refreshes),
10362        new Promise(function(resolve) { setTimeout(resolve, 1000); })
10363      ]).then(function() { loadScripts(settings); });
10364      return;
10365    }
10366
10367    loadScripts(settings);
10368  }
10369
10370  function loadScripts(settings) {
10371    setupCartSellingPlanUpdater(settings);
10372
10373    if(settings.enable_app) {
10374      const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) {
10375        return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType);
10376      })
10377      const hasEnabledOffer = Array.isArray(window._RestockRocketConfig.sellingPlans)
10378        && window._RestockRocketConfig.sellingPlans.some(function(plan) { return plan && plan.enabled; });
10379      const hasDisabledPlanIds = Array.isArray(window._RestockRocketConfig.disabledSellingPlanIds)
10380        && window._RestockRocketConfig.disabledSellingPlanIds.length > 0;
10381      const usePreorderBuild = settings.preorder_enabled || hasEnabledOffer || hasDisabledPlanIds;
10382
10383      const collectionScriptUrl = usePreorderBuild
10384        ? window._RestockRocketConfig.scriptUrlCollection
10385        : window._RestockRocketConfig.scriptUrlCollectionBis;
10386      const productScriptUrl = usePreorderBuild
10387        ? window._RestockRocketConfig.scriptUrlProduct
10388        : window._RestockRocketConfig.scriptUrlProductBis;
10389
10390      const pageType = window._RestockRocketConfig.pageType;
10391      const collectionPageTypes = ['collection', 'index', 'search', 'page'];
10392
10393      if(collectionPageTypes.indexOf(pageType) !== -1 && (settings[`show_button_on_${pageType}`] || settings[`preorder_${pageType}_enabled`])) {
10394        createRestockRocketScript(collectionScriptUrl);
10395      } else if(pageType === 'product') {
10396        createRestockRocketScript(productScriptUrl);
10397      } else if(hijackIntegration) {
10398        createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
10399      } else if(usePreorderBuild) {
10400        createRestockRocketScript(window._RestockRocketConfig.scriptUrlCollection);
10401      } else {
10402        console.debug(`STOQ - no scripts enabled for ${pageType}`);
10403      }
10404      const appLoadedEvent = new CustomEvent('stoq:loaded', {
10405        detail: {
10406          pageType: window._RestockRocketConfig.pageType,
10407          enabled: settings.enable_app,
10408          settings: settings,
10409          preorderEnabled: settings.preorder_enabled
10410        }
10411      });
10412      console.debug('STOQ - dispatching app loaded event');
10413      window.dispatchEvent(appLoadedEvent);
10414    }
10415  }
10416</script>
10416<style id="RestockRocketStyle">html.stoq-buy-now-pending .shopify-payment-button{pointer-events:none!important}</style>
10417
10418
10419</div><div id="shopify-block-AV3hyQ2FISjdzWlBPV__11945366711752539959" class="shopify-block shopify-app-block">
10419<script> var script = document.createElement('script');script.type = 'text/javascript';script.id = 'ze-snippet';script.src = 'https://static.zdassets.com/ekr/snippet.js?key=1e4b435a-5faa-4906-9738-a931eb99a554';document.getElementsByTagName('head')[0].appendChild(script); </script>
10419
10420
10421
10422</div><div id="shopify-block-AeWtjZE1LT2Irb3pva__7079518687644006178" class="shopify-block shopify-app-block">
10422<script>
10423  (function () {
10424    const cartAttributes = {};
10425
10426    // Helper function to retrieve the UTM from Url
10427    function getUTMFromUrl() {
10428      const url_string = window.location.href;
10429      const url = new URL(url_string);
10430
10431      const utm_id = url.searchParams.get("utm_id");
10432      const utm_source = url.searchParams.get("utm_source");
10433      const utm_medium = url.searchParams.get("utm_medium");
10434      const utm_campaign = url.searchParams.get("utm_campaign");
10435      const utm_term = url.searchParams.get("utm_term");
10436      const ref = url.searchParams.get("ref");
10437
10438      if (!utm_id && !utm_source && !utm_medium && !utm_campaign && !ref) {
10439        return null;
10440      }
10441
10442      let utmParameters = {};
10443      
10444        if (utm_id) {
10445          utmParameters.utm_id = utm_id;
10446        }
10447        if (utm_source) {
10448          utmParameters.utm_source = utm_source;
10449        }
10450        if (utm_medium) {
10451          utmParameters.utm_medium = utm_medium;
10452        }
10453        if (utm_campaign) {
10454          utmParameters.utm_campaign = utm_campaign;
10455        }
10456        if (utm_term) {
10457          utmParameters.utm_term = utm_term;
10458        }
10459        if (ref) {
10460          utmParameters.ref = ref;
10461        }
10462      
10463
10464      return Object.keys(utmParameters).length === 0
10465        ? null
10466        : utmParameters;
10467    }
10468
10469    // Helper function to retrieve the UTM from Cookie
10470    function getUTMAttributes() {
10471      const urlUtmParams = getUTMFromUrl();
10472
10473      if (urlUtmParams) {
10474          return urlUtmParams;
10475      }
10476
10477      // No longer reading from deprecated Shopify cookies
10478      return undefined;
10479    }
10480
10481    function saveUtmParameters() {
10482      const utmParams = getUTMAttributes();
10483      if (utmParams) {
10484        const cartHasUtmAttributes = Object.keys(cartAttributes).find(attributeKey => attributeKey.startsWith("utm_") || attributeKey === "ref");
10485        if (cartHasUtmAttributes) {
10486          // Don't call API if it already contains our UTM parameters
10487          return;
10488        }
10489
10490        // Handle both Shopify.routes.root and routes.root_url for better compatibility
10491        var rootUrl = (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) 
10492          || (window.routes && window.routes.root_url) 
10493          || '/';
10494        
10495        var updateCart = fetch(rootUrl + 'cart/update.js',
10496        {
10497          headers: {
10498            'Content-Type': 'application/json',
10499          },
10500          method: "POST",
10501          body: JSON.stringify({
10502            attributes: {
10503              ...utmParams
10504            },
10505          })
10506        })
10507        .then(response => response.json())
10508        .then(data => {
10509          return data
10510        });
10511      }
10512    }
10513
10514    saveUtmParameters();
10515  })();
10516</script>
10516
10517
10518
10519
10520
10521</div>
10521<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
10521
10522</body></html><!-- Begin Shopify-Afterpay JavaScript Snippet (v1.2.1) -->
10523
10524<script type="text/javascript">
10525  // Overrides:
10526  // var afterpay_msg_size = 'sm';  // Can be 'xs', 'sm', 'md' or 'lg'.
10527  // var afterpay_bold_amount = true;
10528  var afterpay_logo_theme = 'black';  // Can be 'colour', 'black' or 'white'.
10529  var afterpay_modal_open_icon = true;
10530  var afterpay_hide_upper_limit = true;
10531  var afterpay_hide_lower_limit = true;
10532  var afterpay_show_if_outside_limits = true;
10533  
10534  var afterpay_product_integration_enabled = true;
10535  var afterpay_product_selector = '#custom-product-hidden__price';
10536  // var afterpay_variable_price_fallback = false;
10537  // var afterpay_variable_price_fallback_selector = '';
10538  // var afterpay_variable_price_fallback_method = 'mutation';  // Can be 'mutation' or 'interval'.
10539  
10540  // var afterpay_cart_integration_enabled = true;
10541  // var afterpay_cart_static_selector = '#cart-subtotal-selector';
10542  // var afterpay_variable_subtotal_fallback = false;
10543  // var afterpay_variable_subtotal_fallback_selector = '';
10544  // var afterpay_variable_subtotal_fallback_method = 'mutation'; // Can be 'mutation' or 'interval'.
10545  
10546   var afterpay_dynamic_cart_integration_enabled = true;
10547   var afterpay_dynamic_cart_selector = '#customCartPage .afterpay-cart-messaging';
10548   var afterpay_dynamic_cart_observer_target = '#customCartPage';
10549  
10550  // var afterpay_footer_logo_enabled = true;
10551  // var afterpay_footer_logo_format = 'icon';  // Can be 'icon', 'stacked' or 'logo'.
10552  // var afterpay_footer_logo_theme = 'colour'; // Can be 'colour', 'black' or 'white'.
10553  // var afterpay_footer_logo_background = 'border';  // Can be 'border' or 'transparent'.
10554  // var afterpay_footer_logo_container = 'footer ul.payment-icons';
10555  // var afterpay_footer_logo_template = '<li class="payment-icon"><object data="{logo_path}" type="image/svg+xml"></object></li>';
10556  
10557  // Non-editable fields:
10558  var afterpay_js_language = "en";
10559  var afterpay_js_country = "US";
10560  var afterpay_shop_currency = "USD";
10561  var afterpay_cart_currency = "USD";
10562  var afterpay_shop_money_format = "${{amount}}";
10563  var afterpay_shop_permanent_domain = "ipowerresale.myshopify.com";
10564  var afterpay_theme_name = "iPad Pencil Promo 09.24.26";
10565  var afterpay_product = {"id":8832364773545,"title":"iPad Pro 11-inch M5","handle":"apple-ipad-pro-11-inch-m5","description":"Buy the iPad Pro M5 11-inch at iPowerResale. Shop various colors and storage options for the M5 iPad Pro models at iPowerResale for fast shipping and great deals!","published_at":"2025-12-16T09:02:22-08:00","created_at":"2025-12-16T09:02:18-08:00","vendor":"ipowerresale","type":"iPad Pro","tags":["iPad"],"price":97900,"price_min":97900,"price_max":97900,"available":true,"price_varies":false,"compare_at_price":null,"compare_at_price_min":0,"compare_at_price_max":0,"compare_at_price_varies":false,"variants":[{"id":46682881720489,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"iPad Pro Parent 4","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"iPad Pro 11-inch M5","public_title":null,"options":["Default Title"],"price":97900,"weight":2268,"compare_at_price":null,"inventory_management":"shopify","barcode":"iPad Pro Parent 4","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}}],"images":["\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668","\/\/ipowerresale.com\/cdn\/shop\/files\/media_a6b05452-6fc6-4456-b536-0b9f1b5ed8af.png?v=1766104669","\/\/ipowerresale.com\/cdn\/shop\/files\/media_d29247e0-3007-4e27-8518-9d8ebacc9308.png?v=1766104669"],"featured_image":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668","options":["Title"],"media":[{"alt":null,"id":34900660256937,"position":1,"preview_image":{"aspect_ratio":1.0,"height":1140,"width":1140,"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668"},"aspect_ratio":1.0,"height":1140,"media_type":"image","src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_cafccf73-53e7-4608-a7f4-863a08925a0c.png?v=1766104668","width":1140},{"alt":null,"id":34900660289705,"position":2,"preview_image":{"aspect_ratio":1.0,"height":1140,"width":1140,"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_a6b05452-6fc6-4456-b536-0b9f1b5ed8af.png?v=1766104669"},"aspect_ratio":1.0,"height":1140,"media_type":"image","src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_a6b05452-6fc6-4456-b536-0b9f1b5ed8af.png?v=1766104669","width":1140},{"alt":null,"id":34900660322473,"position":3,"preview_image":{"aspect_ratio":1.0,"height":1140,"width":1140,"src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_d29247e0-3007-4e27-8518-9d8ebacc9308.png?v=1766104669"},"aspect_ratio":1.0,"height":1140,"media_type":"image","src":"\/\/ipowerresale.com\/cdn\/shop\/files\/media_d29247e0-3007-4e27-8518-9d8ebacc9308.png?v=1766104669","width":1140}],"requires_selling_plan":false,"selling_plan_groups":[],"content":"Buy the iPad Pro M5 11-inch at iPowerResale. Shop various colors and storage options for the M5 iPad Pro models at iPowerResale for fast shipping and great deals!"};
10566  var afterpay_product_collections = "Discount Product (Excludes 5 Series \u0026 Accessories),iPad Pro,Klaviyo Parent Products,Top 10 Homepage Products (Parent Product)";
10567  var afterpay_current_variant = {"id":46682881720489,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":"iPad Pro Parent 4","requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"iPad Pro 11-inch M5","public_title":null,"options":["Default Title"],"price":97900,"weight":2268,"compare_at_price":null,"inventory_management":"shopify","barcode":"iPad Pro Parent 4","requires_selling_plan":false,"selling_plan_allocations":[],"quantity_rule":{"min":1,"max":null,"increment":1}};
10568  var afterpay_cart_total_price = 0;
10569  var afterpay_cart_skus = "";
10570  var afterpay_cart_collections = "";
10571  var afterpay_js_snippet_version = '1.2.1';
10572</script>
vendor: 1 bytes, line 10572
10572
10573<script type="text/javascript" src="https://static.afterpay.com/shopify-afterpay-javascript.js"></script>
10573<!-- End Shopify-Afterpay JavaScript Snippet (v1.2.1) -->

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.