<!doctype html>
<html
  class="no-js"
  lang="en-US"
>
  <head>
    
    
    <script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
<script id="osano-script" src="https://cmp.osano.com/AzZcuESCJWcN06dnY/78e4eb78-19d0-49d6-8a60-7844570c4b3c/osano.js?v=v1.6.0"></script>


<style data-shopify>
  .osano-cm-widget {
    display: none;
  }
</style>

    
<link href="//shop.bodi.com/cdn/shop/t/2/assets/overflow-list.css?v=168694168152117541881771353645" as="style" rel="preload">
<link href="//shop.bodi.com/cdn/shop/t/2/assets/base.css?v=120076312326815137891779292248" rel="stylesheet" type="text/css" media="all" />
<link href="//shop.bodi.com/cdn/shop/t/2/assets/rebuy-theme.css?v=132547087759389544111780502833" rel="stylesheet" type="text/css" media="all" />
<link href="//shop.bodi.com/cdn/shop/t/2/assets/bodi-variables.css?v=121504591861093611911771353645" rel="stylesheet" type="text/css" media="all" />
<link href="//shop.bodi.com/cdn/shop/t/2/assets/bodi-button.css?v=76464293361381150481772584678" rel="stylesheet" type="text/css" media="all" />
<link href="//shop.bodi.com/cdn/shop/t/2/assets/recharge-widget-custom.css?v=37551898691326839791775061561" rel="stylesheet" type="text/css" media="all" />
<link rel="icon" href="//shop.bodi.com/cdn/shop/t/2/assets/favicon.ico?v=97919708145122075061771353644" sizes="96x96" type="image/x-icon">
      <link
        rel="apple-touch-icon"
        href="//shop.bodi.com/cdn/shop/t/2/assets/apple-touch-icon.png?v=176559802362480681421771353645"
        sizes="180x180"
        type="image/png"
      >
    <link
      rel="expect"
      href="#MainContent"
      blocking="render"
      id="view-transition-render-blocker"
    ><meta charset="utf-8">
<meta
  http-equiv="X-UA-Compatible"
  content="IE=edge"
>
<meta
  name="viewport"
  content="width=device-width,initial-scale=1,viewport-fit=cover"
>
<meta
  name="view-transition"
  content="same-origin"
>
<meta
  name="theme-color"
  content="#161819"
>




<link href="//shop.bodi.com/cdn/shop/t/2/assets/fonts.css?v=65180414247502642671771353745" rel="stylesheet" type="text/css" media="all" />
<link href="//shop.bodi.com/cdn/shop/t/2/assets/Heebo-VariableFont_wght.woff2?v=103950160879197047661771353644" as="font" type="font/woff2" crossorigin="anonymous" rel="preload">
<link href="//shop.bodi.com/cdn/shop/t/2/assets/Lateral-ExtendedBold.woff2?v=166831245238582599851771353645" as="font" type="font/woff2" crossorigin="anonymous" rel="preload">


<script type="text/javascript">
  (() => {
    const configs = {
      socialladder: {
        enabled: Boolean(true),
        apiUrl: 'https://socialladder.rkiapps.com/SocialLadderAPI/api/v1',
      },
      sierra: {
        enabled: Boolean(true),
        apiUrl: 'https://sierra.chat/agent/Ut1QkpUBlHLzwwIBlHL4Ah5wk-5cYf0rK_kNTk3SH5E/embed',
      },
      recharge: {
        apiToken: 'strfnt_f88572c7ed84759fab284b62d2b7fbfc9861fae5d367e2717fe9aaa1b32e6d18',
        remorsePeriodMinutes: 65.0,
      },
      analytics: {
        autoTrackPageViewsEnabled: true,
      },
      amplitude: {
        apiKey: '1d0ded647159f1fa94847060270f1c3b',
      },
      accertify: {
        dataCollectorUrl: 'https://prod.accdab.net/cdn/cs/WUWQmMNVRV4I3Iq65vKa6JqfTTA.js',
      },
      subscriptionsRedirectUrl: 'https://account.shop.bodi.com/pages/8cfdfe48-f906-45d6-8515-29818e34a6d4',
      subscriptionsMaintenanceEnabled: false,
      cookiePrefix: '',
      datadog: {
        enabled: true,
        settings: {"applicationId":"fcac99de-b8a0-4b11-85f4-75c824760c42","clientToken":"pub3c11e4f0ff5fa4617371e90b5a251610","service":"commerce-shop","env":"prod","site":"datadoghq.com","logSampleRate":100,"sessionSampleRate":100,"sessionReplaySampleRate":100,"forwardConsoleLogs":"all","allowedTracingUrls":[]},
      },
      rebuy: {
        smartCartDisabled: Boolean(false),
      },
    };
    window.BODi = window.BODi || {};
    window.BODi.configs = configs;
  })();
</script>

<script type="text/javascript">
  (() => {
    window.BODi = window.BODi || {};

    // Customer data
    window.BODi.customer = {
      guid: null,
      email: null,
      logged_in: false,
      has_bodi_access: false,
      entitlements: [],
    };

    // Localization data
    window.BODi.localization = {
      country: 'US',
      language: 'en',
    };
  })();
</script>


<script type="text/javascript">
  (() => {
    window.BODi = window.BODi || {};

    const productRoyaltyCode = null;
    const collectionRoyaltyCode = null;
    const pageRoyaltyCode = null;

    if (productRoyaltyCode) {
      console.log('[Royalty Code] Product Royalty Code', productRoyaltyCode);
    }
    if (collectionRoyaltyCode) {
      console.log('[Royalty Code] Collection Royalty Code', collectionRoyaltyCode);
    }
    if (pageRoyaltyCode) {
      console.log('[Royalty Code] Page Royalty Code', pageRoyaltyCode);
    }

    const royaltyCode = productRoyaltyCode || collectionRoyaltyCode || pageRoyaltyCode || null;

    window.BODi.royaltyCode = royaltyCode;

    console.log(`[Royalty Code] Final Royalty Code for ${window.location.href}`, royaltyCode);
  })();
</script>


<script type="text/javascript">
  // Amplitude Experiment anti-flicker snippet
  (function (d, h) {
    var apiKey = window.BODi.configs.amplitude.apiKey;
    var timeout = 2000;
    // Hides the page and loads the script. Shows page if script fails to load,
    // otherwise the script shows the page.
    var id = 'amp-exp-css';
    try {
      if (!d.getElementById(id)) {
        var st = d.createElement('style');
        st.id = id;
        st.innerText = 'html { opacity: 0 !important; }';
        // INFO: Uncomment this if Amplitude Experiment is causing unwanted flickering
        // h.appendChild(st);
        window.setTimeout(function () {
          st.remove();
        }, timeout);
        var sc = d.createElement('script');
        sc.src = 'https://cdn.amplitude.com/script/' + apiKey + '.experiment.js';
        sc.async = true;
        sc.onerror = function () {
          st.remove();
        };
        h.appendChild(sc);
      }
    } catch (e) {
      // If Amplitude Experiment fails, show the page immediately
      if (d.getElementById(id)) d.getElementById(id).remove();
      console.error(e);
    }
  })(document, document.head);
</script>


<script type="text/javascript">
  // Main Amplitude SDK initialization
  (function () {
    'use strict';

    // Helper function to load scripts
    function loadScript(scriptElement) {
      return new Promise((resolve, reject) => {
        scriptElement.onload = resolve;
        scriptElement.onerror = reject;
        document.head.appendChild(scriptElement);
      });
    }

    // Create script elements
    const amplitudeScript = document.createElement('script');
    amplitudeScript.src = 'https://cdn.amplitude.com/libs/analytics-browser-2.11.12-min.js.gz';

    const sessionReplayScript = document.createElement('script');
    sessionReplayScript.src =
      'https://cdn.amplitude.com/libs/plugin-session-replay-browser-1.13.10-min.js.gz';

    const uaParserScript = document.createElement('script');
    uaParserScript.src = 'https://cdn.jsdelivr.net/npm/ua-parser-js@1.0.38/src/ua-parser.min.js';

    // Initialize after all scripts loaded
    Promise.all([
      loadScript(amplitudeScript),
      loadScript(sessionReplayScript),
      loadScript(uaParserScript),
    ])
      .then(async () => {
        const sessionReplayTracking = window.sessionReplay.plugin({
          sampleRate: 1,
          forceSessionTracking: true,
        });

        window.amplitude.add(sessionReplayTracking);

        // Initialize Amplitude
        window.amplitude.init(window.BODi.configs.amplitude.apiKey, undefined, {
          defaultTracking: {
            sessions: true,
            pageViews: true,
            formInteractions: true,
            fileDownloads: true,
          },
        });

        // Set User ID if logged in
        if (window.BODi?.customer?.guid) {
          window.amplitude.setUserId(window.BODi.customer.guid);
        }

        // Parse user agent
        const parser = new UAParser();
        const uaResult = parser.getResult();

        // Determine membership state from entitlements
        const entitlements = window.BODi?.customer?.entitlements || [];
        const hasBodint = entitlements.some((e) => e && e.includes('BODINT'));
        const membershipState = hasBodint ? 'SUBSCRIBER' : 'NONSUBSCRIBER';

        // Fetch cart token from /cart.js
        let cartToken = '';
        try {
          const cartResponse = await fetch('/cart.js');
          const cartData = await cartResponse.json();
          cartToken = cartData.token || '';
        } catch (error) {
          console.error('[amplitude] - Failed to fetch cart token', error);
        }

        // Prepare user properties
        const userGuid = window.BODi?.customer?.guid || undefined;
        const authStatus = window.BODi?.customer?.logged_in ? 'logged_in' : 'logged_out';
        const siteCountry = window.BODi?.localization?.country || '';
        const siteLanguage = window.BODi?.localization?.language || '';
        const userAgent = navigator.userAgent;
        const userAgentData = {
          browser: uaResult.browser,
          device: uaResult.device,
          os: uaResult.os,
        };

        // Send identify event with all user properties
        const identifyEvent = new window.amplitude.Identify();
        identifyEvent.set('user id', userGuid);
        identifyEvent.set('auth status', authStatus);
        identifyEvent.set('site country', siteCountry);
        identifyEvent.set('site language', siteLanguage);
        identifyEvent.set('user agent', userAgent);
        identifyEvent.set('user agent data', userAgentData);
        identifyEvent.set('cart id', cartToken);
        identifyEvent.set('entitlements', entitlements);
        identifyEvent.set('membership state', membershipState);

        window.amplitude.identify(identifyEvent);
      })
      .catch((error) => {
        console.error('[amplitude] - Failed to load scripts', error);
      });
  })();
</script>


<script>
  (function(h,o,u,n,d) {
    h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)}}
    d=o.createElement(u);d.async=1;d.src=n;d.crossOrigin=''
    n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n)
  })(window,document,'script','https://www.datadoghq-browser-agent.com/us1/v6/datadog-rum.js','DD_RUM')
</script>

<script>
  (function(h,o,u,n,d) {
    h=h[d]=h[d]||{q:[],onReady:function(c){h.q.push(c)}}
    d=o.createElement(u);d.async=1;d.src=n;d.crossOrigin=''
    n=o.getElementsByTagName(u)[0];n.parentNode.insertBefore(d,n)
  })(window,document,'script','https://www.datadoghq-browser-agent.com/us1/v6/datadog-logs.js','DD_LOGS')
</script>


<script>
  (function () {
    var config = window.BODi?.configs?.datadog?.settings || {};
    var guid = window.BODi?.customer?.guid;

    window.DD_RUM.onReady(function () {
      window.DD_RUM.init({
        applicationId: config.applicationId,
        clientToken: config.clientToken,
        site: config.site || 'datadoghq.com',
        service: config.service || 'commerce-shop',
        env: config.env || 'qa',
        sessionSampleRate: config.sessionSampleRate != null ? config.sessionSampleRate : 100,
        sessionReplaySampleRate: config.sessionReplaySampleRate != null ? config.sessionReplaySampleRate : 20,
        allowedTracingUrls: config.allowedTracingUrls || [],
        trackUserInteractions: true,
        trackResources: true,
        trackLongTasks: true,
        defaultPrivacyLevel: 'mask-user-input',
        silentMultipleInit: true,
      });

      if (guid) {
        window.DD_RUM.setUser({ id: guid });
      }
    });

    window.DD_LOGS.onReady(function () {
      window.DD_LOGS.init({
        clientToken: config.clientToken,
        site: config.site || 'datadoghq.com',
        service: config.service || 'commerce-shop',
        env: config.env || 'qa',
        sessionSampleRate: config.logSampleRate != null ? config.logSampleRate : 100,
        forwardConsoleLogs: config.forwardConsoleLogs || [],
        forwardReports: 'all',
        forwardErrorsToLogs: true,
        silentMultipleInit: true,
      });

      if (guid) {
        window.DD_LOGS.setUser({ id: guid });
      }
    });
  })();
</script><script>
  (function () {
    if (typeof window === 'undefined' || typeof fetch !== 'function') return;
    if (window.__bodiCartBootstrapPromise) return;

    if (document.cookie.split(';').some((cookie) => cookie.trim().startsWith('cart='))) {
      window.__bodiCartBootstrapPromise = Promise.resolve();
      return;
    }

    const formData = new URLSearchParams();
    formData.append('attributes[_bodi_init]', `${Date.now()}`);

    window.__bodiCartBootstrapPromise = fetch('/cart/update.js', {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
      body: formData,
    })
      .then((response) => {
        if (!response.ok) {
          throw new Error(`Cart bootstrap failed (${response.status})`);
        }
      })
      .catch((error) => {
        console.warn('[CartBootstrap] Unable to pre-initialize cart', error);
      });
  })();
</script>
<script type="importmap">
  {
    "imports": {
      "@theme/critical": "//shop.bodi.com/cdn/shop/t/2/assets/critical.js?v=34395725382898153171771353644",
      "@theme/product-title": "//shop.bodi.com/cdn/shop/t/2/assets/product-title-truncation.js?v=81744426891537421781771353645",
      "@theme/component": "//shop.bodi.com/cdn/shop/t/2/assets/component.js?v=110735723013117678201771353646",
      "@theme/dialog": "//shop.bodi.com/cdn/shop/t/2/assets/dialog.js?v=138083190563882019441771353646",
      "@theme/events": "//shop.bodi.com/cdn/shop/t/2/assets/events.js?v=144203031841125949931771353646",
      "@theme/focus": "//shop.bodi.com/cdn/shop/t/2/assets/focus.js?v=60436577539430446401771353645",
      "@theme/morph": "//shop.bodi.com/cdn/shop/t/2/assets/morph.js?v=130689995393408371391771353645",
      "@theme/paginated-list": "//shop.bodi.com/cdn/shop/t/2/assets/paginated-list.js?v=182220942238342935181778687718",
      "@theme/performance": "//shop.bodi.com/cdn/shop/t/2/assets/performance.js?v=25067702614201670671771353646",
      "@theme/product-form": "//shop.bodi.com/cdn/shop/t/2/assets/product-form.js?v=88643593872554363261780502833",
      "@theme/recently-viewed-products": "//shop.bodi.com/cdn/shop/t/2/assets/recently-viewed-products.js?v=94729125001750262651771353644",
      "@theme/scrolling": "//shop.bodi.com/cdn/shop/t/2/assets/scrolling.js?v=10957690925586738441771353645",
      "@theme/section-renderer": "//shop.bodi.com/cdn/shop/t/2/assets/section-renderer.js?v=117657582323260828391771353645",
      "@theme/utilities": "//shop.bodi.com/cdn/shop/t/2/assets/utilities.js?v=38914156865829850761780502834",
      "@theme/analytics.util": "//shop.bodi.com/cdn/shop/t/2/assets/analytics.util.js?v=29615392350665263441778687717",
      "@theme/variant-picker": "//shop.bodi.com/cdn/shop/t/2/assets/variant-picker.js?v=113536721324242252251774435087",
      "@theme/media-gallery": "//shop.bodi.com/cdn/shop/t/2/assets/media-gallery.js?v=86507175541302397441775061561",
      "@theme/quick-add": "//shop.bodi.com/cdn/shop/t/2/assets/quick-add.js?v=74531385036627369001771353646",
      "@theme/paginated-list-aspect-ratio": "//shop.bodi.com/cdn/shop/t/2/assets/paginated-list-aspect-ratio.js?v=25254270272143792451771353646",
      "@theme/web-source-code.util": "//shop.bodi.com/cdn/shop/t/2/assets/web-source-code.util.js?v=100022647184388321141771353645",
      "@theme/tracking-codes": "//shop.bodi.com/cdn/shop/t/2/assets/tracking-codes.js?v=36063638829081886981776873393",
      "@theme/add-to-cart-link.util": "//shop.bodi.com/cdn/shop/t/2/assets/add-to-cart-link.util.js?v=118114068868411519331780502831",
      "@theme/cart-analytics.util": "//shop.bodi.com/cdn/shop/t/2/assets/cart-analytics.util.js?v=105794243147954695101780502832",
      "@theme/accertify-data-collector": "//shop.bodi.com/cdn/shop/t/2/assets/accertify-data-collector.js?v=167219477265726170741772584677"
    }
  }
</script>







<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/collection-redirect.js?v=62810136546219965471771353645"
  blocking="render"
></script>


<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/critical.js?v=34395725382898153171771353644"
>

<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/utilities.js?v=38914156865829850761780502834"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/component.js?v=110735723013117678201771353646"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/section-renderer.js?v=117657582323260828391771353645"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/morph.js?v=130689995393408371391771353645"
  fetchpriority="low"
>



<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/focus.js?v=60436577539430446401771353645"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/recently-viewed-products.js?v=94729125001750262651771353644"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/scrolling.js?v=10957690925586738441771353645"
  fetchpriority="low"
>
<link
  rel="modulepreload"
  href="//shop.bodi.com/cdn/shop/t/2/assets/events.js?v=144203031841125949931771353646"
  fetchpriority="low"
>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/quick-add.js?v=74531385036627369001771353646"
  type="module"
  fetchpriority="low"
></script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/dialog.js?v=138083190563882019441771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/variant-picker.js?v=113536721324242252251774435087"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/product-card.js?v=23015674819649003541771353644"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/product-form.js?v=88643593872554363261780502833"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/accordion-custom.js?v=78770727478219950621772670204"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/media.js?v=37825095869491791421771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/product-price.js?v=30079423257668675401771353645"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/cadence-text.js?v=41169851286431607791771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/variant-checklist.js?v=37514240127249512841771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/updateButtonVariant.js?v=180672249296976698911771353645"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/variant-metafield-text.js?v=73665773763318208401773185238"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/product-title-truncation.js?v=81744426891537421781771353645"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/product-inventory.js?v=16343734458933704981771353644"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/show-more.js?v=94563802205717136101771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/slideshow.js?v=56396194353539668521774505754"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/anchored-popover.js?v=143092715850611436701771353644"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/floating-panel.js?v=128677600744947036551771353645"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/video-background.js?v=157395678258090420911774359966"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/component-quantity-selector.js?v=56330027151833116691771353646"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/component-quantity-selector-dropdown.js?v=81553553732033357941775061559"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/media-gallery.js?v=86507175541302397441775061561"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/rte-formatter.js?v=101420294193111439321771353644"
  type="module"
  fetchpriority="low"
></script>







<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/auto-close-details.js?v=58350291535404441581771353645"
  defer="defer"
></script>

<script>
  const basePath = 'https://cdn.shopify.com/static/themes/horizon/placeholders';
  const Theme = {
    placeholders: {
      general: [
        `${basePath}/general-1.png`,
        `${basePath}/general-2.png`,
        `${basePath}/general-3.png`,
        `${basePath}/general-4.png`,
        `${basePath}/general-5.png`,
        `${basePath}/general-6.png`,
        `${basePath}/general-7.png`,
      ],
      product: [`${basePath}/product-ball.png`, `${basePath}/product-cone.png`, `${basePath}/product-cube.png`],
    },
    translations: {
      placeholder_image: `Placeholder image`,
      added: `Added`,
    },
    routes: {
      cart_add_url: '/cart/add.js',
      cart_change_url: '/cart/change',
      cart_update_url: '/cart/update',
      cart_url: '/cart',
      predictive_search_url: '/search/suggest',
      search_url: '/search',
    },
    template: {
      name: 'product.subscription',
    },
  };
</script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/socialladder.js?v=27479865096865235401771353644"
  type="module"
  fetchpriority="low"
></script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/cart-listener.js?v=8349406693392417231780502832"
  type="module"
></script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/tracking-codes.js?v=36063638829081886981776873393"
  type="module"
  fetchpriority="low"
></script><script
  src="//shop.bodi.com/cdn/shop/t/2/assets/add-to-cart-link.util.js?v=118114068868411519331780502831"
  type="module"
  fetchpriority="low"
></script>
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/locale-switcher.js?v=45869995406809579801776873392"
  type="module"
  fetchpriority="low"
></script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/sierra.js?v=47849187046930924991771353646"
  type="module"
  fetchpriority="low"
></script>

<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/bodi-auth-redirect.js?v=13934401950456957671772843289"
  defer
></script>

<!-- Digioh -->

<script
  async
  type="text/javascript"
  src="https://www.zeropartyforms.com/w37htfhcq2/vendor/0d1ee324-9c1b-4837-88cd-a5a4a387633a/lightbox_speed.js"
  fetchpriority="low"
></script>


<!-- Rebuy ShopifyStorefrontHelper -->

<script
  async
  type="text/javascript"
  src="https://cdn.rebuyengine.com/onsite/js/storefront-helper.js"
  fetchpriority="low"
></script>


<!-- Accertify Data Collector -->
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/accertify-data-collector.js?v=167219477265726170741772584677"
  type="module"
  fetchpriority="low"
  data-accertify-tid="null"
></script>

<!-- Set Amplitude device ID to cart -->
<script
  src="//shop.bodi.com/cdn/shop/t/2/assets/amplitude-device-id-cart.js?v=28193483641527377311777477953"
  type="module"
  fetchpriority="low"
  data-amplitude-device-id="null"
></script>


<style data-shopify>
:root {
    /* Page Layout */
    --sidebar-width: 25rem;
    --narrow-content-width: 36rem;
    --normal-content-width: 42rem;
    --wide-content-width: 46rem;
    --narrow-page-width: 88rem;
    --normal-page-width: 120rem;
    --wide-page-width: 150rem;

    /* Section Heights */
    --section-height-small: 15rem;
    --section-height-medium: 25rem;
    --section-height-large: 35rem;

    @media screen and (min-width: 40em) {
      --section-height-small: 40svh;
      --section-height-medium: 55svh;
      --section-height-large: 70svh;
    }

    @media screen and (min-width: 60em) {
      --section-height-small: 50svh;
      --section-height-medium: 65svh;
      --section-height-large: 80svh;
    }

    /* Letter spacing */
    --letter-spacing-sm: 0.06em;
    --letter-spacing-md: 0.13em;

    /* Font families */
    --font-body--family: 'Heebo', var(--font-heebo), sans-serif;
    --font-body--style: normal;
    --font-body--weight: 400;
    --font-subheading--family: 'Heebo', var(--font-heebo), sans-serif;
    --font-subheading--style: normal;
    --font-subheading--weight: 500;
    --font-heading--family: 'Lateral', var(--font-lateral), sans-serif;
    --font-heading--style: normal;
    --font-heading--weight: 700;
    --font-accent--family: 'Lateral', var(--font-lateral), sans-serif;
    --font-accent--style: normal;
    --font-accent--weight: 700;

    /* Margin sizes */
    --font-h1--spacing: 0.25em;
    --font-h2--spacing: 0.25em;
    --font-h3--spacing: 0.25em;
    --font-h4--spacing: 0.25em;
    --font-h5--spacing: 0.25em;
    --font-h6--spacing: 0.25em;
    --font-paragraph--spacing: 0.5em;

    /* Heading colors */
    --font-h1--color: var(--color-foreground-heading);
    --font-h2--color: var(--color-foreground-heading);
    --font-h3--color: var(--color-foreground-heading);
    --font-h4--color: var(--color-foreground-heading);
    --font-h5--color: var(--color-foreground-heading);
    --font-h6--color: var(--color-foreground-heading);

    /** Z-Index / Layering */
    --layer-section-background: -2;
    --layer-lowest: -1;
    --layer-base: 0;
    --layer-flat: 1;
    --layer-raised: 2;
    --layer-heightened: 4;
    --layer-sticky: 8;
    --layer-window-overlay: 10;
    --layer-header-menu: 12;
    --layer-overlay: 16;
    --layer-menu-drawer: 18;
    --layer-temporary: 20;

    /* Max-width / Measure */
    --max-width--body-normal: 50ch;
    --max-width--body-narrow: 35ch;

    --max-width--heading-normal: 50ch;
    --max-width--heading-narrow: 30ch;

    --max-width--display-normal: 20ch;
    --max-width--display-narrow: 15ch;
    --max-width--display-tight: 5ch;

    /* Letter-spacing / Tracking */
    --letter-spacing--display-tight: -0.03em;
    --letter-spacing--display-normal: 0em;
    --letter-spacing--display-loose: 0.03em;

    --letter-spacing--heading-tight: -0.03em;
    --letter-spacing--heading-normal: 0em;
    --letter-spacing--heading-loose: 0.03em;

    --letter-spacing--body-tight: -0.03em;
    --letter-spacing--body-normal: 0em;
    --letter-spacing--body-loose: 0.03em;

    /* Line height / Leading */
    --line-height: 1;

    --line-height--display-tight: 1;
    --line-height--display-normal: 1.1;
    --line-height--display-loose: 1.2;

    --line-height--heading-tight: 1.15;
    --line-height--heading-normal: 1.25;
    --line-height--heading-loose: 1.35;

    --line-height--body-tight: 1em;
    --line-height--body-normal: 1.2em;
    --line-height--body-loose: 1.4em;

    /* Typography presets */
    --font-size--paragraph: 1.0rem;--font-size--h1: clamp(3.0rem, 7.2vw, 4.5rem);--font-size--h2: clamp(2.25rem, 4.8vw, 3.0rem);--font-size--h3: 2.0rem;--font-size--h4: 1.5rem;--font-size--h5: 1.25rem;--font-size--h6: 1.0rem;--font-paragraph--weight: 400;--font-paragraph--letter-spacing: var(--letter-spacing--body-normal);--font-paragraph--size: var(--font-size--paragraph);--font-paragraph--family: var(--font-body--family);--font-paragraph--style: var(--font-body--style);--font-paragraph--case: ;--font-paragraph--line-height: var(--line-height--body-normal);--font-h1--weight: var(--font-heading--weight);--font-h1--letter-spacing: var(--letter-spacing--heading-tight);--font-h1--size: var(--font-size--h1);--font-h1--family: var(--font-heading--family);--font-h1--style: var(--font-heading--style);--font-h1--case: none;--font-h1--line-height: var(--line-height--display-tight);--font-h2--weight: var(--font-heading--weight);--font-h2--letter-spacing: var(--letter-spacing--heading-normal);--font-h2--size: var(--font-size--h2);--font-h2--family: var(--font-heading--family);--font-h2--style: var(--font-heading--style);--font-h2--case: none;--font-h2--line-height: var(--line-height--display-normal);--font-h3--weight: var(--font-heading--weight);--font-h3--letter-spacing: var(--letter-spacing--heading-tight);--font-h3--size: var(--font-size--h3);--font-h3--family: var(--font-heading--family);--font-h3--style: var(--font-heading--style);--font-h3--case: none;--font-h3--line-height: var(--line-height--heading-tight);--font-h4--weight: var(--font-subheading--weight);--font-h4--letter-spacing: var(--letter-spacing--heading-normal);--font-h4--size: var(--font-size--h4);--font-h4--family: var(--font-subheading--family);--font-h4--style: var(--font-subheading--style);--font-h4--case: none;--font-h4--line-height: var(--line-height--display-normal);--font-h5--weight: var(--font-subheading--weight);--font-h5--letter-spacing: var(--letter-spacing--heading-normal);--font-h5--size: var(--font-size--h5);--font-h5--family: var(--font-subheading--family);--font-h5--style: var(--font-subheading--style);--font-h5--case: none;--font-h5--line-height: var(--line-height--display-normal);--font-h6--weight: var(--font-subheading--weight);--font-h6--letter-spacing: var(--letter-spacing--heading-normal);--font-h6--size: var(--font-size--h6);--font-h6--family: var(--font-subheading--family);--font-h6--style: var(--font-subheading--style);--font-h6--case: none;--font-h6--line-height: var(--line-height--display-normal);

    /* Hardcoded font sizes */
    --font-size--2xs: 0.625rem;
    --font-size--xs: 0.8125rem;
    --font-size--sm: 0.875rem;
    --font-size--md: 1rem;
    --font-size--lg: 1.125rem;
    --font-size--xl: 1.25rem;
    --font-size--2xl: 1.5rem;
    --font-size--3xl: 2rem;
    --font-size--4xl: 2.5rem;
    --font-size--5xl: 3rem;
    --font-size--6xl: 3.5rem;

    /* Menu font sizes */
    --menu-font-sm--size: 0.875rem;
    --menu-font-sm--line-height: calc(1.1 + 0.5 * min(16 / 14));
    --menu-font-md--size: 1rem;
    --menu-font-md--line-height: calc(1.1 + 0.5 * min(16 / 16));
    --menu-font-lg--size: 1.125rem;
    --menu-font-lg--line-height: calc(1.1 + 0.5 * min(16 / 18));
    --menu-font-xl--size: 1.25rem;
    --menu-font-xl--line-height: calc(1.1 + 0.5 * min(16 / 20));
    --menu-font-2xl--size: 1.75rem;
    --menu-font-2xl--line-height: calc(1.1 + 0.5 * min(16 / 28));

    /* Colors */
    --color-error: #8B0000;
    --color-success: #006400;
    --color-white: #FFFFFF;
    --color-white-rgb: 255 255 255;
    --color-black: #000000;
    --color-instock: #3ED660;
    --color-lowstock: #EE9441;
    --color-outofstock: #C8C8C8;

    /* Opacity */
    --opacity-5: 0.05;
    --opacity-8: 0.08;
    --opacity-10: 0.1;
    --opacity-15: 0.15;
    --opacity-20: 0.2;
    --opacity-25: 0.25;
    --opacity-30: 0.3;
    --opacity-40: 0.4;
    --opacity-50: 0.5;
    --opacity-60: 0.6;
    --opacity-70: 0.7;
    --opacity-80: 0.8;
    --opacity-85: 0.85;
    --opacity-90: 0.9;
    --opacity-subdued-text: var(--opacity-70);

    --shadow-button: 0 2px 3px rgb(0 0 0 / 20%);
    --gradient-image-overlay: linear-gradient(to top, rgb(0 0 0 / 0.5), transparent);

    /* Spacing */
    --margin-3xs: 0.125rem;
    --margin-2xs: 0.3rem;
    --margin-xs: 0.5rem;
    --margin-sm: 0.7rem;
    --margin-md: 0.8rem;
    --margin-lg: 1rem;
    --margin-xl: 1.25rem;
    --margin-2xl: 1.5rem;
    --margin-3xl: 1.75rem;
    --margin-4xl: 2rem;
    --margin-5xl: 3rem;
    --margin-6xl: 5rem;

    --scroll-margin: 50px;

    --padding-3xs: 0.125rem;
    --padding-2xs: 0.25rem;
    --padding-xs: 0.5rem;
    --padding-sm: 0.7rem;
    --padding-md: 0.8rem;
    --padding-lg: 1rem;
    --padding-xl: 1.25rem;
    --padding-2xl: 1.5rem;
    --padding-3xl: 1.75rem;
    --padding-4xl: 2rem;
    --padding-5xl: 3rem;
    --padding-6xl: 4rem;

    --gap-3xs: 0.125rem;
    --gap-2xs: 0.3rem;
    --gap-xs: 0.5rem;
    --gap-sm: 0.7rem;
    --gap-md: 0.9rem;
    --gap-lg: 1rem;
    --gap-xl: 1.25rem;
    --gap-2xl: 2rem;
    --gap-3xl: 3rem;

    --spacing-scale-sm: 0.6;
    --spacing-scale-md: 0.7;
    --spacing-scale-default: 1.0;

    /* Checkout buttons gap */
    --checkout-button-gap: 8px;

    /* Borders */
    --style-border-width: 1px;
    --style-border-radius-xs: 0.2rem;
    --style-border-radius-sm: 0.6rem;
    --style-border-radius-md: 0.8rem;
    --style-border-radius-50: 50%;
    --style-border-radius-lg: 1rem;
    --style-border-radius-pills: 40px;
    --style-border-radius-inputs: 8px;
    --style-border-radius-buttons-primary: 37px;
    --style-border-radius-buttons-secondary: 37px;
    --style-border-width-primary: 0px;
    --style-border-width-secondary: 1px;
    --style-border-width-inputs: 1px;
    --style-border-radius-popover: 12px;
    --style-border-popover: 1px none rgb(var(--color-border-rgb) / 50%);
    --style-border-drawer: 1px none rgb(var(--color-border-rgb) / 50%);
    --style-border-swatch-opacity: 10%;
    --style-border-swatch-width: 1px;
    --style-border-swatch-style: solid;

    /* Animation */
    --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1);
    --ease-out-quad: cubic-bezier(0.32, 0.72, 0, 1);
    --animation-speed-fast: 0.0625s;
    --animation-speed: 0.125s;
    --animation-speed-slow: 0.2s;
    --animation-speed-medium: 0.15s;
    --animation-easing: ease-in-out;
    --animation-slideshow-easing: cubic-bezier(0.4, 0, 0.2, 1);
    --drawer-animation-speed: 0.2s;
    --animation-values-slow: var(--animation-speed-slow) var(--animation-easing);
    --animation-values: var(--animation-speed) var(--animation-easing);
    --animation-values-fast: var(--animation-speed-fast) var(--animation-easing);
    --animation-values-allow-discrete: var(--animation-speed) var(--animation-easing) allow-discrete;
    --animation-timing-hover: cubic-bezier(0.25, 0.46, 0.45, 0.94);
    --animation-timing-active: cubic-bezier(0.5, 0, 0.75, 0);
    --animation-timing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
    --animation-timing-default: cubic-bezier(0, 0, 0.2, 1);
    --animation-timing-fade-in: cubic-bezier(0.16, 1, 0.3, 1);
    --animation-timing-fade-out: cubic-bezier(0.4, 0, 0.2, 1);

    /* View transitions */
    /* View transition old */
    --view-transition-old-main-content: var(--animation-speed) var(--animation-easing) both fadeOut;

    /* View transition new */
    --view-transition-new-main-content: var(--animation-speed) var(--animation-easing) both fadeIn, var(--animation-speed) var(--animation-easing) both slideInTopViewTransition;

    /* Focus */
    --focus-outline-width: 0.09375rem;
    --focus-outline-offset: 0.2em;

    /* Badges */
    --badge-blob-padding-block: 1px;
    --badge-blob-padding-inline: 12px 8px;
    --badge-rectangle-padding-block: 1px;
    --badge-rectangle-padding-inline: 6px;
    @media screen and (min-width: 750px) {
      --badge-blob-padding-block: 4px;
      --badge-blob-padding-inline: 16px 12px;
      --badge-rectangle-padding-block: 4px;
      --badge-rectangle-padding-inline: 10px;
    }

    /* Icons */
    --icon-size-2xs: 0.6rem;
    --icon-size-xs: 0.85rem;
    --icon-size-sm: 1.25rem;
    --icon-size-md: 1.375rem;
    --icon-size-lg: 1.5rem;
    --icon-stroke-width: 1px;

    /* Input */
    --input-email-min-width: 200px;
    --input-search-max-width: 650px;
    --input-padding-y: 0.8rem;
    --input-padding-x: 0.8rem;
    --input-padding: var(--input-padding-y) var(--input-padding-x);
    --input-box-shadow-width: var(--style-border-width-inputs);
    --input-box-shadow: 0 0 0 var(--input-box-shadow-width) var(--color-input-border);
    --input-box-shadow-focus: 0 0 0 calc(var(--input-box-shadow-width) + 0.5px) var(--color-input-border);
    --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
    --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5));
    --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
    --input-textarea-min-height: 55px;

    /* Button size */
    --button-size-sm: 30px;
    --button-size-md: 36px;
    --button-size: var(--minimum-touch-target);
    --button-padding-inline: 24px;
    --button-padding-block: 16px;

    /* Button font-family */
    --button-font-family-primary: var(--font-body--family);
    --button-font-family-secondary: var(--font-body--family);

    /* Button font-weight */
    --button-font-weight-primary: 600;
    --button-font-weight-secondary: default;

    /* Button text case */
    --button-text-case: ;
    --button-text-case-primary: default;
    --button-text-case-secondary: default;

    /* Borders */
    --border-color: rgb(var(--color-border-rgb) / var(--opacity-50));
    --border-width-sm: 1px;
    --border-width-md: 2px;
    --border-width-lg: 5px;

    /* Drawers */
    --drawer-inline-padding: 25px;
    --drawer-menu-inline-padding: 2.5rem;
    --drawer-header-block-padding: 20px;
    --drawer-content-block-padding: 10px;
    --drawer-header-desktop-top: 0rem;
    --drawer-padding: calc(var(--padding-sm) + 7px);
    --drawer-height: 100dvh;
    --drawer-width: 95vw;
    --drawer-max-width: 500px;

    /* Variant Picker Swatches */
    --variant-picker-swatch-width-unitless: 24;
    --variant-picker-swatch-height-unitless: 24;
    --variant-picker-swatch-width: 24px;
    --variant-picker-swatch-height: 24px;
    --variant-picker-swatch-radius: 24px;
    --variant-picker-border-width: 1px;
    --variant-picker-border-style: solid;
    --variant-picker-border-opacity: 10%;

    /* Variant Picker Buttons */
    --variant-picker-button-radius: 8px;
    --variant-picker-button-border-width: 1px;

    /* Slideshow */
    --slideshow-controls-size: 3.5rem;
    --slideshow-controls-icon: 2rem;
    --peek-next-slide-size: 3rem;

    /* Utilities */
    --backdrop-opacity: 0.15;
    --backdrop-color-rgb: var(--color-shadow-rgb);
    --minimum-touch-target: 44px;
    --disabled-opacity: 0.5;
    --skeleton-opacity: 0.025;

    /* Shapes */
    --shape--circle: circle(50% at center);
    --shape--sunburst: polygon(100% 50%,94.62% 55.87%,98.3% 62.94%,91.57% 67.22%,93.3% 75%,85.7% 77.39%,85.36% 85.36%,77.39% 85.7%,75% 93.3%,67.22% 91.57%,62.94% 98.3%,55.87% 94.62%,50% 100%,44.13% 94.62%,37.06% 98.3%,32.78% 91.57%,25% 93.3%,22.61% 85.7%,14.64% 85.36%,14.3% 77.39%,6.7% 75%,8.43% 67.22%,1.7% 62.94%,5.38% 55.87%,0% 50%,5.38% 44.13%,1.7% 37.06%,8.43% 32.78%,6.7% 25%,14.3% 22.61%,14.64% 14.64%,22.61% 14.3%,25% 6.7%,32.78% 8.43%,37.06% 1.7%,44.13% 5.38%,50% 0%,55.87% 5.38%,62.94% 1.7%,67.22% 8.43%,75% 6.7%,77.39% 14.3%,85.36% 14.64%,85.7% 22.61%,93.3% 25%,91.57% 32.78%,98.3% 37.06%,94.62% 44.13%);
    --shape--diamond: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
    --shape--blob: polygon(85.349% 11.712%, 87.382% 13.587%, 89.228% 15.647%, 90.886% 17.862%, 92.359% 20.204%, 93.657% 22.647%, 94.795% 25.169%, 95.786% 27.752%, 96.645% 30.382%, 97.387% 33.048%, 98.025% 35.740%, 98.564% 38.454%, 99.007% 41.186%, 99.358% 43.931%, 99.622% 46.685%, 99.808% 49.446%, 99.926% 52.210%, 99.986% 54.977%, 99.999% 57.744%, 99.975% 60.511%, 99.923% 63.278%, 99.821% 66.043%, 99.671% 68.806%, 99.453% 71.565%, 99.145% 74.314%, 98.724% 77.049%, 98.164% 79.759%, 97.433% 82.427%, 96.495% 85.030%, 95.311% 87.529%, 93.841% 89.872%, 92.062% 91.988%, 89.972% 93.796%, 87.635% 95.273%, 85.135% 96.456%, 82.532% 97.393%, 79.864% 98.127%, 77.156% 98.695%, 74.424% 99.129%, 71.676% 99.452%, 68.918% 99.685%, 66.156% 99.844%, 63.390% 99.942%, 60.624% 99.990%, 57.856% 99.999%, 55.089% 99.978%, 52.323% 99.929%, 49.557% 99.847%, 46.792% 99.723%, 44.031% 99.549%, 41.273% 99.317%, 38.522% 99.017%, 35.781% 98.639%, 33.054% 98.170%, 30.347% 97.599%, 27.667% 96.911%, 25.024% 96.091%, 22.432% 95.123%, 19.907% 93.994%, 17.466% 92.690%, 15.126% 91.216%, 12.902% 89.569%, 10.808% 87.761%, 8.854% 85.803%, 7.053% 83.703%, 5.418% 81.471%, 3.962% 79.119%, 2.702% 76.656%, 1.656% 74.095%, 0.846% 71.450%, 0.294% 68.740%, 0.024% 65.987%, 0.050% 63.221%, 0.343% 60.471%, 0.858% 57.752%, 1.548% 55.073%, 2.370% 52.431%, 3.283% 49.819%, 4.253% 47.227%, 5.249% 44.646%, 6.244% 42.063%, 7.211% 39.471%, 8.124% 36.858%, 8.958% 34.220%, 9.711% 31.558%, 10.409% 28.880%, 11.083% 26.196%, 11.760% 23.513%, 12.474% 20.839%, 13.259% 18.186%, 14.156% 15.569%, 15.214% 13.012%, 16.485% 10.556%, 18.028% 8.261%, 19.883% 6.211%, 22.041% 4.484%, 24.440% 3.110%, 26.998% 2.057%, 29.651% 1.275%, 32.360% 0.714%, 35.101% 0.337%, 37.859% 0.110%, 40.624% 0.009%, 43.391% 0.016%, 46.156% 0.113%, 48.918% 0.289%, 51.674% 0.533%, 54.425% 0.837%, 57.166% 1.215%, 59.898% 1.654%, 62.618% 2.163%, 65.322% 2.750%, 68.006% 3.424%, 70.662% 4.197%, 73.284% 5.081%, 75.860% 6.091%, 78.376% 7.242%, 80.813% 8.551%, 83.148% 10.036%, 85.349% 11.712%);

    /* Buy buttons */
    --height-buy-buttons: calc(var(--padding-lg) * 2 + var(--icon-size-sm));

    /* Card image height variables */
    --height-small: 10rem;
    --height-medium: 11.5rem;
    --height-large: 13rem;
    --height-full: 100vh;

    @media screen and (min-width: 750px) {
      --height-small: 17.5rem;
      --height-medium: 21.25rem;
      --height-large: 25rem;
    }

    /* Modal */
    --modal-max-height: 65dvh;

    /* Card styles for search */
    --card-bg-hover: rgb(var(--color-foreground-rgb) / var(--opacity-5));
    --card-border-hover: rgb(var(--color-foreground-rgb) / var(--opacity-30));
    --card-border-focus: rgb(var(--color-foreground-rgb) / var(--opacity-10));

    /* Cart */
    --cart-primary-font-family: var(--font-heebo);
    --cart-primary-font-style: var(--font-body--style);
    --cart-primary-font-weight: var(--font-body--weight);
    --cart-secondary-font-family: var(--font-heebo);
    --cart-secondary-font-style: var(--font-secondary--style);
    --cart-secondary-font-weight: var(--font-secondary--weight);
  }
</style>
<style data-shopify>
  
    
      :root,
    
    
    
    .color-scheme-1 {
        --color-background: rgb(255 255 255 / 1.0);
        /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */
        --color-background-rgb: 255 255 255;
        --opacity-5-15: 0.05;
        --opacity-10-25: 0.1;
        --opacity-35-55: 0.35;
        --opacity-40-60: 0.4;
        --opacity-30-60: 0.3;
        --color-foreground: rgb(0 0 0 / 1.0);
        --color-foreground-rgb: 0 0 0;
        --color-foreground-heading: rgb(32 132 104 / 1.0);
        --color-foreground-heading-rgb: 32 132 104;
        --color-primary: rgb(0 15 159 / 1.0);
        --color-primary-rgb: 0 15 159;
        --color-primary-hover: rgb(0 0 0 / 1.0);
        --color-primary-hover-rgb: 0 0 0;
        --color-accent: rgb(32 132 104 / 1.0);
        --color-accent-rgb: 32 132 104;
        --color-grayscale: rgb(112 111 115 / 1.0);
        --color-grayscale-rgb: 112 111 115;
        --color-border: rgb(0 0 0 / 0.19);
        --color-border-rgb: 0 0 0;
        --color-shadow: rgb(0 0 0 / 1.0);
        --color-shadow-rgb: 0 0 0;
        --color-primary-button-text: rgb(22 24 25 / 1.0);
        --color-primary-button-background: rgb(188 249 134 / 1.0);
        --color-primary-button-border: rgb(22 24 25 / 1.0);
        --color-primary-button-hover-text: rgb(22 24 25 / 1.0);
        --color-primary-button-hover-background: rgb(153 246 70 / 1.0);
        --color-primary-button-hover-border: rgb(22 24 25 / 1.0);
        --color-secondary-button-text: rgb(0 0 0 / 1.0);
        --color-secondary-button-background: rgb(255 255 255 / 1.0);
        --color-secondary-button-border: rgb(0 0 0 / 1.0);
        --color-secondary-button-hover-text: rgb(0 0 0 / 1.0);
        --color-secondary-button-hover-background: rgb(222 222 222 / 1.0);
        --color-secondary-button-hover-border: rgb(0 0 0 / 1.0);
        --color-input-background: rgb(0 0 0 / 0.05);
        --color-input-text: rgb(0 0 0 / 1.0);
        --color-input-text-rgb: 0 0 0;
        --color-input-border: rgb(0 0 0 / 0.0);
        --color-input-hover-background: rgb(245 245 245 / 1.0);
        --color-variant-background: rgb(255 255 255 / 1.0);
        --color-variant-border: rgb(189 189 189 / 1.0);
        --color-variant-text: rgb(0 0 0 / 1.0);
        --color-variant-text-rgb: 0 0 0;
        --color-variant-hover-background: rgb(255 255 255 / 1.0);
        --color-variant-hover-text: rgb(0 0 0 / 1.0);
        --color-variant-hover-border: rgb(68 70 70 / 1.0);
        --color-selected-variant-background: rgb(255 255 255 / 1.0);
        --color-selected-variant-border: rgb(0 0 0 / 1.0);
        --color-selected-variant-text: rgb(0 0 0 / 1.0);
        --color-selected-variant-hover-background: rgb(255 255 255 / 1.0);
        --color-selected-variant-hover-text: rgb(0 0 0 / 1.0);
        --color-selected-variant-hover-border: rgb(16 16 16 / 1.0);

        --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
        --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15));
        --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
        --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60));
        --font-h1--color: var(--color-foreground-heading);
        --font-h2--color: var(--color-foreground-heading);
        --font-h3--color: var(--color-foreground-heading);
        --font-h4--color: var(--color-foreground-heading);
        --font-h5--color: var(--color-foreground-heading);
        --font-h6--color: var(--color-foreground-heading);

        /* Shadows */
        
        
          --shadow-blur: 20px;
          --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15));
        
      }
  
    
    
    
    .color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252 {
        --color-background: rgb(22 24 25 / 1.0);
        /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */
        --color-background-rgb: 22 24 25;
        --opacity-5-15: 0.15;
        --opacity-10-25: 0.25;
        --opacity-35-55: 0.55;
        --opacity-40-60: 0.6;
        --opacity-30-60: 0.6;
        --color-foreground: rgb(255 255 255 / 1.0);
        --color-foreground-rgb: 255 255 255;
        --color-foreground-heading: rgb(255 255 255 / 1.0);
        --color-foreground-heading-rgb: 255 255 255;
        --color-primary: rgb(0 15 159 / 1.0);
        --color-primary-rgb: 0 15 159;
        --color-primary-hover: rgb(0 0 0 / 1.0);
        --color-primary-hover-rgb: 0 0 0;
        --color-accent: rgb(153 246 70 / 1.0);
        --color-accent-rgb: 153 246 70;
        --color-grayscale: rgb(112 111 115 / 1.0);
        --color-grayscale-rgb: 112 111 115;
        --color-border: rgb(0 0 0 / 0.19);
        --color-border-rgb: 0 0 0;
        --color-shadow: rgb(0 0 0 / 1.0);
        --color-shadow-rgb: 0 0 0;
        --color-primary-button-text: rgb(22 24 25 / 1.0);
        --color-primary-button-background: rgb(188 249 134 / 1.0);
        --color-primary-button-border: rgb(22 24 25 / 1.0);
        --color-primary-button-hover-text: rgb(22 24 25 / 1.0);
        --color-primary-button-hover-background: rgb(153 246 70 / 1.0);
        --color-primary-button-hover-border: rgb(22 24 25 / 1.0);
        --color-secondary-button-text: rgb(0 0 0 / 1.0);
        --color-secondary-button-background: rgb(255 255 255 / 1.0);
        --color-secondary-button-border: rgb(0 0 0 / 1.0);
        --color-secondary-button-hover-text: rgb(0 0 0 / 1.0);
        --color-secondary-button-hover-background: rgb(222 222 222 / 1.0);
        --color-secondary-button-hover-border: rgb(0 0 0 / 1.0);
        --color-input-background: rgb(255 255 255 / 1.0);
        --color-input-text: rgb(0 0 0 / 1.0);
        --color-input-text-rgb: 0 0 0;
        --color-input-border: rgb(0 0 0 / 0.0);
        --color-input-hover-background: rgb(245 245 245 / 1.0);
        --color-variant-background: rgb(255 255 255 / 1.0);
        --color-variant-border: rgb(189 189 189 / 1.0);
        --color-variant-text: rgb(0 0 0 / 1.0);
        --color-variant-text-rgb: 0 0 0;
        --color-variant-hover-background: rgb(255 255 255 / 1.0);
        --color-variant-hover-text: rgb(0 0 0 / 1.0);
        --color-variant-hover-border: rgb(68 70 70 / 1.0);
        --color-selected-variant-background: rgb(255 255 255 / 1.0);
        --color-selected-variant-border: rgb(0 0 0 / 1.0);
        --color-selected-variant-text: rgb(0 0 0 / 1.0);
        --color-selected-variant-hover-background: rgb(255 255 255 / 1.0);
        --color-selected-variant-hover-text: rgb(0 0 0 / 1.0);
        --color-selected-variant-hover-border: rgb(16 16 16 / 1.0);

        --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10));
        --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15));
        --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
        --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60));
        --font-h1--color: var(--color-foreground-heading);
        --font-h2--color: var(--color-foreground-heading);
        --font-h3--color: var(--color-foreground-heading);
        --font-h4--color: var(--color-foreground-heading);
        --font-h5--color: var(--color-foreground-heading);
        --font-h6--color: var(--color-foreground-heading);

        /* Shadows */
        
        
          --shadow-blur: 20px;
          --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15));
        
      }
  

  body, .color-scheme-1, .color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252 {
    color: var(--color-foreground);
    background-color: var(--color-background);
  }
</style>


    <!-- /snippets/gwa-hreflang.liquid v.1.0.3  from https://apps.shopify.com/hreflang-manager -->

    <script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script><meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/75560616153/digital_wallets/dialog">
<meta name="shopify-checkout-api-token" content="8a16876903fe96fbabfc6c4c4c6257e6">
<meta id="in-context-paypal-metadata" data-shop-id="75560616153" data-venmo-supported="true" data-environment="production" data-locale="en_US" data-paypal-v4="true" data-currency="USD">
<link rel="alternate" type="application/json+oembed" href="https://shop.bodi.com/products/bodi-subscription.oembed">
<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=75560616153" crossorigin="anonymous"></script>
<script id="shopify-features" type="application/json">{"accessToken":"8a16876903fe96fbabfc6c4c4c6257e6","betas":["rich-media-storefront-analytics"],"domain":"shop.bodi.com","predictiveSearch":true,"shopId":75560616153,"locale":"en"}</script>
<script>var Shopify = Shopify || {};
Shopify.shop = "xragki-mv.myshopify.com";
Shopify.locale = "en";
Shopify.currency = {"active":"USD","rate":"1.0"};
Shopify.country = "US";
Shopify.theme = {"name":"commerce-shopify-theme\/main","id":157605626073,"schema_name":"Horizon","schema_version":"1.6.0","theme_store_id":null,"role":"main"};
Shopify.theme.handle = "null";
Shopify.theme.style = {"id":null,"handle":null};
Shopify.cdnHost = "shop.bodi.com/cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "/";
Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
Shopify.SignInWithShop = Shopify.SignInWithShop || {};
Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
Shopify.SignInWithShop.User.recognized = false;</script>
<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
<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>
<script>
  window.ShopifyPay = window.ShopifyPay || {};
  window.ShopifyPay.apiHost = "shop.app\/pay";
  window.ShopifyPay.redirectState = null;
</script>
<script>
  window.Shopify = window.Shopify || {};
  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.01 };
  window.Shopify.SignInWithShop.eligible = false;
</script>
<script id="shop-js-analytics" type="application/json">{"pageType":"product"}</script>
<script defer="defer" async type="module" src="//shop.bodi.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
<script type="module">
  await import("//shop.bodi.com/cdn/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js");

  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});

</script>
<script>
  window.Shopify = window.Shopify || {};
  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
  window.Shopify.featureAssets['shop-js'] = {"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.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"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"avatar":["modules/v2/loader.avatar.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.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"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"]};
</script>
<script>(function() {
  var isLoaded = false;
  function asyncLoad() {
    if (isLoaded) return;
    isLoaded = true;
    var urls = ["https:\/\/cdn.shopify.com\/s\/files\/1\/0755\/6061\/6153\/t\/2\/assets\/yoast-active-script.js?v=1771353645\u0026shop=xragki-mv.myshopify.com","https:\/\/cdn.shopify.com\/s\/files\/1\/0755\/6061\/6153\/t\/2\/assets\/yoast-active-script.js?v=1771353645\u0026shop=xragki-mv.myshopify.com","https:\/\/cdn.attn.tv\/bodi\/dtag.js?shop=xragki-mv.myshopify.com"];
    for (var i = 0; i < urls.length; i++) {
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.async = true;
      s.src = urls[i];
      var x = document.getElementsByTagName('script')[0];
      x.parentNode.insertBefore(s, x);
    }
  };
  if(window.attachEvent) {
    window.attachEvent('onload', asyncLoad);
  } else {
    window.addEventListener('load', asyncLoad, false);
  }
})();</script>
<script id="__st">var __st={"a":75560616153,"offset":-25200,"reqid":"f3c7a9f6-fcb7-4f18-b407-c97c4deb6a8d-1780979683","pageurl":"shop.bodi.com\/products\/bodi-subscription","u":"52e83e73a418","p":"product","rtyp":"product","rid":9413928779993};</script>
<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
<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.2.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>
<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//shop.bodi.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
<script crossorigin="anonymous" defer="defer" src="//shop.bodi.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-bf1cdb70.js?v=20250812"></script>
<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://shop.bodi.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}};
</script>
<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
  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);
</script>
<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})}}));
</script>
<script async="async" integrity="sha256-hlq21VGceRKy8z+Fjhropk1BwDPACP0RdQ5rBrATyUo=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-67b41cb9.js" crossorigin="anonymous"></script>
<script async crossorigin src="/cdn/shopifycloud/autosizes-uploader/autosizes.1.0.0.js"></script>
<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://shop.bodi.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
<style id="shopify-accelerated-checkout-cart">
        #shopify-buyer-consent {
  margin-top: 1em;
  display: inline-block;
  width: 100%;
}

#shopify-buyer-consent.hidden {
  display: none;
}

#shopify-subscription-policy-button {
  background: none;
  border: none;
  padding: 0;
  text-decoration: underline;
  font-size: inherit;
  cursor: pointer;
}

#shopify-subscription-policy-button::before {
  box-shadow: none;
}

      </style>
<link rel="stylesheet" media="screen" href="//shop.bodi.com/cdn/shop/t/2/compiled_assets/styles.css?v=169964553864040022351780502840">
<script id="sections-script" data-sections="bodi-login-drawer,bodi-account-drawer" defer="defer" src="//shop.bodi.com/cdn/shop/t/2/compiled_assets/scripts.js?v=49248537996957404821776268639"></script>
<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
    
    
    
<script>
  (() => {
    // Prevent double-injection (theme editor, app embeds, etc.)
    if (window.__BODI_REBUY_EXTENSIONS__) return;
    window.__BODI_REBUY_EXTENSIONS__ = true;

    // debug flag for teacing ouput
    const BODI_REBUY_DEBUG = false;
    if (BODI_REBUY_DEBUG) {
        console.warn('[Rebuy Debug] Debug mode enabled via theme settings.');
    }

    const logDebug = (...args) => {
        if (!BODI_REBUY_DEBUG) return;
        console.log('[Rebuy Debug]', ...args);
    };

    const bodiWidgets = [];
    const linkedWidgetIdSet = new Set();
    const bodiWidgetById = new Map();
    const shopLocaleCode = "us_en";
    const isNativeCartPage = location.pathname === '/cart' || location.pathname.startsWith('/cart/');
    let progressBarEl = null;bodiWidgets.push({
                id: "274649",
                linked_widget_id: null,

                is_global: true,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: false,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274810",
                linked_widget_id: null,

                is_global: true,
                is_spotlight: false,
                hide_cart_on_open: true,
                show_cart_on_close: true,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [9413928288473
,9413924192473
,9413924421849
,9413924880601
,9665481572569
,9413924946137
,9413924094169
,9413924487385
,9413928616153
,9413924061401
,9413923963097
,9413924749529
,9413928386777
,9413924585689
,9665481638105
,9413924159705
,9413924520153
,9665481605337
,9665481507033
,9665481539801
],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: [48040135983321
]
            });

            
bodiWidgets.push({
                id: "294586",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: true,
                show_cart_on_close: true,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [47683217850585
],

                dependent_product_ids: [],

                dependent_variant_ids: [47683215982809
]
            });

            
bodiWidgets.push({
                id: "274645",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274640",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274648",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "293984",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: true,
                show_cart_on_close: true,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [47683217850585
],

                dependent_product_ids: [],

                dependent_variant_ids: [47683215982809
]
            });

            
bodiWidgets.push({
                id: "294451",
                linked_widget_id: null,

                is_global: true,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: false,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274653",
                linked_widget_id: null,

                is_global: true,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: false,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274807",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: true,
                show_cart_on_close: true,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [47683217817817
],

                dependent_product_ids: [],

                dependent_variant_ids: [47683215982809
]
            });

            
bodiWidgets.push({
                id: "274642",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "274646",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: false,
                show_cart_on_close: false,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [],

                dependent_product_ids: [],

                dependent_variant_ids: []
            });

            
bodiWidgets.push({
                id: "294582",
                linked_widget_id: null,

                is_global: false,
                is_spotlight: false,
                hide_cart_on_open: true,
                show_cart_on_close: true,
                use_bodi_template: true,

                // sources and dependents for orphaned promo items
                source_product_ids: [],

                source_variant_ids: [47683217817817
],

                dependent_product_ids: [],

                dependent_variant_ids: [47683215982809
]
            });

            
logDebug('Initialized bodiWidgets:', bodiWidgets);
    logDebug('Linked widget IDs:', Array.from(linkedWidgetIdSet));

    bodiWidgetById.clear();
    bodiWidgets.forEach((w) => bodiWidgetById.set(w.id, w));

    // Helper: return Rebuy widget instance by ID
    function getRebuyWidget(id) {
        if (!id) return null;
        if (!window.Rebuy || !Array.isArray(window.Rebuy.widgets)) return null;
        const w = window.Rebuy.widgets.find(w => w.id === id) || null;
        logDebug('getRebuyWidget(', id, ') ->', w);
        return w;
    }

    // Helper: get metaobject widget config (O(1))
    function getBodiWidget(id) {
        if (!id) return null;
        const w = bodiWidgetById.get(id) || null;
        logDebug('getBodiWidget(', id, ') ->', w);
        return w;
    }

    // Helper: return both Rebuy + Bodi configs
    function getWidgetPair(id) {
        const pair = { rebuy: getRebuyWidget(id), bodi: getBodiWidget(id) };
        logDebug('getWidgetPair(', id, ') ->', pair);
        return pair;
    }

    // Helper: spotlight detection
    const isSpotlight = (id) => {
        const b = getBodiWidget(id);
        return b ? !!b.is_spotlight : false;
    }

    // Helper: check if more than 1 BODi subscription is in cart
    const hasMultipleUniques = () => {
        setTimeout(() => {
            if (!window.Rebuy || !Rebuy.SmartCart || !Rebuy.Cart) return false;

            const rebuyCart = Rebuy.Cart;
            rebuyCart.enrichCart();
            const cartItems = Array.isArray(rebuyCart.items()) ? rebuyCart.items() : [];
            if (!cartItems.length) return false;

            const uniqueBodiSubTag = 'Merch_Cart_Unique';
            let uniqueCount = 0;

            cartItems.forEach((item) => {
                const tags = item.product?.tags || '';
                if (tags.toLowerCase().includes(uniqueBodiSubTag.toLowerCase())) {
                    uniqueCount++
                };
            });

            handleCartError((uniqueCount > 1));

            return (uniqueCount > 1);
        }, 300);
    }

    // Expose helper globally for rebuy-widget-templates usage (Vue attrs)
    window.__BODI_REBUY__ = window.__BODI_REBUY__ || {};
    window.__BODI_REBUY__.isSpotlight = isSpotlight;

    // Helper: detect native Rebuy GWP widgets so we don't interfere
    function isNativeGwpWidget(widget) {
        if (!widget) return false;
        const type =
            (widget.data && widget.data.config && widget.data.config.type) ||
            widget.type ||
            '';
        return String(type).toLowerCase() === 'gift_with_purchase';
    }

    // Helper: stash widget discount message for translation
    const stashOriginalDiscountMessages = (widget) => {
        const sDisc = widget?.data?.settings?.discount;
        const cDisc = widget?.data?.config?.discount;

        if (sDisc && sDisc.__bodi_original_message == null) {
            sDisc.__bodi_original_message = sDisc.message;
        }
        if (cDisc && cDisc.__bodi_original_message == null) {
            cDisc.__bodi_original_message = cDisc.message;
        }
    };

    // Helper: apply base English discount message override from datasource custom data
    // Reads discount_message_en from the datasource rule's custom output fields
    // Call before applyWidgetFrDiscountMessageOverride so FR can layer on top
    const applyWidgetDiscountMessageOverride = (widget) => {
        if (!widget?.id) return;
        if (isNativeGwpWidget(widget)) return;

        const msg = widget?.data?.metadata?.custom?.en_discount_message;
        if (typeof msg !== 'string' || msg.trim() === '') return;

        const hasSettingsDiscount = !!widget?.data?.settings?.discount;
        const hasConfigDiscount = !!widget?.data?.config?.discount;
        if (!hasSettingsDiscount && !hasConfigDiscount) return;

        stashOriginalDiscountMessages(widget);

        if (hasSettingsDiscount) widget.data.settings.discount.message = msg.trim();
        if (hasConfigDiscount) widget.data.config.discount.message = msg.trim();

        logDebug('[Widget Discount] EN message override applied', { id: widget.id, message: msg.trim() });
    };

    // Helper: translate discount message if custom one is defined (CA-FR only)
    // Always call after applyWidgetDiscountMessageOverride so FR layers on top of EN
    const applyWidgetFrDiscountMessageOverride = (widget) => {
        if (!widget?.id) return;
        if (shopLocaleCode !== 'ca_fr') return;

        const frMsg = widget?.data?.metadata?.custom?.fr_discount_message;
        const msg = (typeof frMsg === 'string' && frMsg.trim() !== '') ? frMsg.trim() : '';
        if (!msg) return;

        const hasSettingsDiscount = !!widget?.data?.settings?.discount;
        const hasConfigDiscount = !!widget?.data?.config?.discount;
        if (!hasSettingsDiscount && !hasConfigDiscount) return;

        if (isNativeGwpWidget(widget)) return;

        stashOriginalDiscountMessages(widget);

        if (hasSettingsDiscount) widget.data.settings.discount.message = msg;
        if (hasConfigDiscount) widget.data.config.discount.message = msg;

        logDebug('[Widget Discount] CA-FR override applied', { id: widget.id, message: msg });
    };

    // Helper: override SmartCart line-item discount titles using widget metadata.custom.fr_discount_message
        const patchSmartCartDiscountTitles = () => {
        if (!Array.isArray(window.Rebuy?.widgets)) return;

        const items = window.Rebuy?.SmartCart?.cart?.items;
        if (!Array.isArray(items) || !items.length) return;

        const getWidgetById = (id) => {
            const n = Number(id);
            return window.Rebuy.widgets.find(w => Number(w?.id) === n) || null;
        };

        for (const item of items) {
            const wid = item?.properties?._widget_id;
            if (!wid) continue;

            const widget = getWidgetById(wid);

            // Resolve message: FR takes priority over EN, EN over nothing
            const enRaw = widget?.data?.metadata?.custom?.en_discount_message;
            const frRaw = widget?.data?.metadata?.custom?.fr_discount_message;
            const msgRaw = (shopLocaleCode === 'ca_fr' ? frRaw : null) || enRaw;
            const msg = (typeof msgRaw === 'string' && msgRaw.trim() !== '') ? msgRaw.trim() : '';
            if (!msg) continue;

            // Only patch if the item actually has line-item discounts
            const hasLineDiscount =
                (Array.isArray(item?.discounts) && item.discounts.length > 0) ||
                (Array.isArray(item?.line_level_discount_allocations) && item.line_level_discount_allocations.length > 0) ||
                Number(item?.line_level_total_discount || 0) > 0 ||
                Number(item?.total_discount || 0) > 0;

            if (!hasLineDiscount) continue;

            if (Array.isArray(item.discounts)) {
                item.discounts.forEach(d => {
                    if (d && typeof d === 'object') d.title = msg;
                });
            }

            if (Array.isArray(item.line_level_discount_allocations)) {
                item.line_level_discount_allocations.forEach(a => {
                    const app = a?.discount_application;
                    if (app && typeof app === 'object') app.title = msg;
                });
            }

            logDebug('[SmartCart] Patched discount title', { widget_id: wid, variant_id: item?.variant_id, msg });
        }
    };

    // Build pruning indexes from current cart items
    // Primary lookup is cfgsByWidgetId — keyed by widget ID string — so pruning
    // decisions are always scoped to the widget that actually placed the item
    const buildPruneIndexes = (items) => {
        const sourceProductIdsInCart = new Set();
        const sourceVariantIdsInCart = new Set();

        for (const it of items) {
            if (typeof it?.product_id === 'number') sourceProductIdsInCart.add(it.product_id);
            if (typeof it?.variant_id === 'number') sourceVariantIdsInCart.add(it.variant_id);
        }

        const cfgByDependentProduct = new Map();
        const cfgByDependentVariant = new Map();

        // Index configs by widget ID (string) — primary lookup path.
        // One widget ID may map to multiple configs (e.g. two promos sharing
        // one cross-sell widget, each with its own metaobject entry).
        const cfgsByWidgetId = new Map();

        for (const cfg of bodiWidgets) {
            const dp = Array.isArray(cfg.dependent_product_ids) ? cfg.dependent_product_ids : [];
            const dv = Array.isArray(cfg.dependent_variant_ids) ? cfg.dependent_variant_ids : [];

            for (const id of dp) {
                if (!cfgByDependentProduct.has(id)) cfgByDependentProduct.set(id, []);
                cfgByDependentProduct.get(id).push(cfg);
            }

            for (const id of dv) {
                if (!cfgByDependentVariant.has(id)) cfgByDependentVariant.set(id, []);
                cfgByDependentVariant.get(id).push(cfg);
            }

            // Only index configs that actually declare dependent items
            if (dp.length > 0 || dv.length > 0) {
                // Normalise to string — Liquid may render the ID as a number
                // but Rebuy writes _widget_id on line items as a string
                const wid = String(cfg.id);
                if (!cfgsByWidgetId.has(wid)) cfgsByWidgetId.set(wid, []);
                cfgsByWidgetId.get(wid).push(cfg);
            }
        }

        const skipCfgIdSet = new Set();
        if (window.Rebuy && Array.isArray(window.Rebuy.widgets)) {
            for (const w of window.Rebuy.widgets) {
                if (isNativeGwpWidget(w)) skipCfgIdSet.add(w.id);
            }
        }

        return {
            sourceProductIdsInCart,
            sourceVariantIdsInCart,
            cfgByDependentProduct,
            cfgByDependentVariant,
            cfgsByWidgetId,
            skipCfgIdSet
        };
    };

    // Removes Rebuy promo products when NO qualifying source remains.
    //
    // An item is a promo candidate only if:
    //   (a) it's Rebuy-tagged and not _flow_id protected
    //   (b) its _widget_id belongs to a managed widget (one with dependent config)
    //   (c) it's discounted or free
    //
    // Config matching: looks up all configs for the item's widget ID, finds those
    // whose dependent lists cover this item's variant/product, then keeps the item
    // if ANY of those configs has a qualifying source in cart. This correctly handles
    // multiple promos sharing one widget ID without cross-contamination.
    const pruneOrphanedRebuyItems = async ({ getItems, removeLine, label = 'Cart' }) => {
        try {
            const items = await getItems();
            if (!Array.isArray(items) || !items.length) return;

            const hasAnyRebuyTagged = items.some((it) => {
                const p = it?.properties || {};
                if (!!p._flow_id) return false;
                return p._source === 'Rebuy' || p._attribution === 'Rebuy Cart' || !!p._widget_id;
            });
            if (!hasAnyRebuyTagged) return;

            const isRebuyTagged = (it) => {
                const p = it?.properties || {};
                if (!!p._flow_id) return false;
                return p._source === 'Rebuy' || p._attribution === 'Rebuy Cart' || !!p._widget_id;
            };

            const hasDiscount = (it) => {
                if (Number(it?.total_discount || 0) > 0) return true;
                if (Array.isArray(it?.discounts) && it.discounts.length > 0) return true;
                if (Array.isArray(it?.line_level_discount_allocations) && it.line_level_discount_allocations.length > 0) return true;
                if (Number(it?.line_level_total_discount || 0) > 0) return true;

                if (typeof it?.final_price === 'number' && typeof it?.original_price === 'number') {
                    return it.final_price < it.original_price;
                }
                if (typeof it?.discounted_price === 'number' && typeof it?.original_price === 'number') {
                    return it.discounted_price < it.original_price;
                }
                return false;
            };

            const {
                sourceProductIdsInCart,
                sourceVariantIdsInCart,
                cfgsByWidgetId,
                skipCfgIdSet
            } = buildPruneIndexes(items);

            // Set of widget IDs (strings) that have at least one managed config.
            // Used to gate isPromo — items from unrelated widgets are never flagged.
            const managedWidgetIds = new Set(cfgsByWidgetId.keys());

            const isPromo = (it) => {
                if (!isRebuyTagged(it)) return false;

                const rawWid = it?.properties?._widget_id;
                const wid = rawWid != null ? String(rawWid) : null;
                if (!wid || !managedWidgetIds.has(wid)) return false;

                const isFree = typeof it?.final_price === 'number' && it.final_price === 0;
                return isFree || hasDiscount(it);
            };

            const cartHasSourceForConfig = (cfg) => {
                const srcP = Array.isArray(cfg.source_product_ids) ? cfg.source_product_ids : [];
                const srcV = Array.isArray(cfg.source_variant_ids) ? cfg.source_variant_ids : [];

                for (const id of srcP) if (sourceProductIdsInCart.has(id)) return true;
                for (const id of srcV) if (sourceVariantIdsInCart.has(id)) return true;
                return false;
            };

            const promos = items.filter(isPromo);
            if (!promos.length) return;

            const toRemove = [];

            for (const promo of promos) {
                const rawWid = promo?.properties?._widget_id;
                const wid = rawWid != null ? String(rawWid) : null;
                if (!wid) continue;

                // All configs for the widget that placed this item, minus native GWP widgets
                const widgetCfgs = (cfgsByWidgetId.get(wid) || [])
                    .filter(cfg => !skipCfgIdSet.has(cfg.id));

                if (!widgetCfgs.length) continue;

                // Find ALL configs whose dependent lists cover this promo item —
                // there may be multiple configs sharing a widget ID (one per promo).
                // The item is valid if ANY of them has a qualifying source in cart.
                const matchingCfgs = widgetCfgs.filter(cfg =>
                    (Array.isArray(cfg.dependent_variant_ids) &&
                        cfg.dependent_variant_ids.includes(promo.variant_id)) ||
                    (Array.isArray(cfg.dependent_product_ids) &&
                        cfg.dependent_product_ids.includes(promo.product_id))
                );

                if (!matchingCfgs.length) continue;

                const stillValid = matchingCfgs.some(cfg => cartHasSourceForConfig(cfg));
                if (!stillValid) toRemove.push(promo);
            }

            if (!toRemove.length) return;

            logDebug(`[${label}] Pruning orphan promos:`, toRemove);

            for (const promo of toRemove) {
                await removeLine(promo);
            }
        } catch (err) {
            console.error('[Rebuy Extensions] Error pruning orphan promos:', err);
        }
    };

    // SmartCart adapter
    const pruneSmartCartOrphans = () => {
        if (!window.Rebuy || !Rebuy.SmartCart || !Rebuy.Cart) return;

        return pruneOrphanedRebuyItems({
            label: 'SmartCart',
            getItems: () => (Array.isArray(Rebuy.SmartCart.items()) ? Rebuy.SmartCart.items() : []),
            removeLine: (item) => Rebuy.Cart.removeItem(item)
        });
    };

    let __nativePruneRunning = false;
    let __nativePrunePending = false;
    let __nativeCartCache = null;

    const dispatchNativeCartUpdate = (cartData) => {
        const detail = { data: { didError: false, cart: cartData } };

        try { document.dispatchEvent(new CustomEvent('cart:update', { detail })); } catch (e) {}
        try { window.dispatchEvent(new CustomEvent('cart:update', { detail })); } catch (e) {}

        // Optional extra “poke” some themes listen for
        // try { document.dispatchEvent(new CustomEvent('cart:refresh', { detail })); } catch (e) {}
        // try { window.dispatchEvent(new CustomEvent('cart:refresh', { detail })); } catch (e) {}
    };

    // Native /cart empty-cart edge case testing for when the DOM is not updated for whatever reason
    const safeReloadOnce = (() => {
        const KEY = '__BODI_NATIVE_CART_RELOAD_TS__';
        const COOLDOWN_MS = 15 * 1000;

        return () => {
            try {
                const now = Date.now();
                const last = Number(sessionStorage.getItem(KEY) || 0);
                if (now - last < COOLDOWN_MS) return;
                sessionStorage.setItem(KEY, String(now));
            } catch (e) {}

            try {
                const url = new URL(window.location.href);
                url.searchParams.set('__bodi_cart_refresh', String(Date.now()));
                window.location.replace(url.toString());
            } catch (e) {
                window.location.reload();
            }
        };
    })();

    // Native /cart DOM row detection. Only use when /cart.js says the cart is empty
    const countNativeCartDomRows = () => {
        const selectors = [
            '[data-line-item-key]',
            '[data-cart-item-key]',
            '[data-key]',
            '.cart-item',
            '.cart__row'
        ];
        try {
            return document.querySelectorAll(selectors.join(',')).length;
        } catch (e) {
            return 0;
        }
    };

    const fetchCartJson = async () => {
        const res = await fetch('/cart.js', { credentials: 'same-origin' });
        const data = await res.json().catch(() => null);
        if (!res.ok || !data) throw new Error(`Failed to fetch /cart.js (${res.status})`);
        __nativeCartCache = data;
        return data;
    };

    const isValidChangeId = (v) => {
        if (v == null) return false;
        const s = String(v);
        return /^\d+$/.test(s) || /^\d+:[a-f0-9]{32}$/.test(s);
    };

    const removeNativeLine = async (item) => {
        const tryChange = async (payload) => {
            const res = await fetch('/cart/change.js', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                credentials: 'same-origin',
                body: JSON.stringify(payload)
            });

            const data = await res.json().catch(() => null);

            if (res.status === 422) return { ok: false, status: 422, data };
            if (!res.ok || !data) return { ok: false, status: res.status, data };

            if (typeof data.status === 'number' && data.status >= 400) {
                return { ok: false, status: data.status, data };
            }

            return { ok: true, status: res.status, data };
        };

        const findLineByKey = (cartItems, key) => {
            if (!Array.isArray(cartItems) || !key) return -1;
            return cartItems.findIndex((it) => it && it.key === key);
        };

        const key = item?.key;

        let cartItems = Array.isArray(__nativeCartCache?.items) ? __nativeCartCache.items : [];
        if (!cartItems.length) {
            const cart = await fetchCartJson();
            cartItems = Array.isArray(cart?.items) ? cart.items : [];
        }

        let idx = findLineByKey(cartItems, key);

        if (idx === -1) {
            const cart = await fetchCartJson();
            cartItems = Array.isArray(cart?.items) ? cart.items : [];
            idx = findLineByKey(cartItems, key);
        }

        if (idx === -1) {
            logDebug('[Native Cart] removeNativeLine: item already removed, skipping', key);
            return __nativeCartCache;
        }

        let result = await tryChange({ line: idx + 1, quantity: 0 });

        if (!result.ok && result.status === 422) {
            const cart = await fetchCartJson();
            const freshItems = Array.isArray(cart?.items) ? cart.items : [];
            const freshIdx = findLineByKey(freshItems, key);

            if (freshIdx === -1) {
                logDebug('[Native Cart] removeNativeLine: item already removed after refetch, skipping', key);
                return cart;
            }

            result = await tryChange({ line: freshIdx + 1, quantity: 0 });
        }

        // Last resort: id:key (NOT variant_id)
        if (!result.ok) {
            if (isValidChangeId(key)) {
                result = await tryChange({ id: String(key), quantity: 0 });
            }
        }

        if (!result.ok) {
            const msg = result?.data?.message || result?.data?.description || '';
            throw new Error(`Cart change failed (${result.status})${msg ? `: ${msg}` : ''}`);
        }

        __nativeCartCache = result.data;

        dispatchNativeCartUpdate(result.data);

        return result.data;
    };

    const pruneNativeCartOrphans = async () => {
        if (!isNativeCartPage) return;

        if (__nativePruneRunning) {
            __nativePrunePending = true;
            return;
        }

        __nativePruneRunning = true;
        try {
            do {
                __nativePrunePending = false;

                await pruneOrphanedRebuyItems({
                    label: 'Native Cart',
                    getItems: async () => {
                        const cart = await fetchCartJson();
                        return Array.isArray(cart?.items) ? cart.items : [];
                    },
                    removeLine: async (item) => {
                        await removeNativeLine(item);
                    }
                });

            } while (__nativePrunePending);
        } finally {
            __nativePruneRunning = false;
        }
    };

    let __lastThemeCartUpdateTs = 0;

    // Stamps when the theme already handled a cart update
    document.addEventListener('cart:update', () => {
        __lastThemeCartUpdateTs = Date.now();
    }, true);

    // Refresh native /cart table when the Shopify cart is mutated on /cart page
    const installNativeCartMutationRefresh = () => {
        if (!isNativeCartPage) return;
        if (window.__BODI_NATIVE_CART_MUTATION_REFRESH__) return;
        window.__BODI_NATIVE_CART_MUTATION_REFRESH__ = true;

        const originalFetch = window.fetch.bind(window);

        // Debounce: add + GWP add + GWP remove, etc. into one refresh
        let refreshTimer = null;

        const THEME_UPDATE_GRACE_MS = 450;
        const DEBOUNCE_MS = 350;

        const scheduleRefresh = (reason) => {
            // Return if the theme just updated the cart UI
            if (Date.now() - (__lastThemeCartUpdateTs || 0) < THEME_UPDATE_GRACE_MS) {
                logDebug('[Native Cart] Skip refresh (theme already updated recently)', { reason });
                return;
            }

            if (refreshTimer) clearTimeout(refreshTimer);
            refreshTimer = setTimeout(async () => {
                refreshTimer = null;

                // Theme may have updated while we were waiting
                if (Date.now() - (__lastThemeCartUpdateTs || 0) < THEME_UPDATE_GRACE_MS) {
                    logDebug('[Native Cart] Skip refresh (theme updated during debounce)', { reason });
                    return;
                }

                try {
                    const cart = await fetchCartJson();
                    dispatchNativeCartUpdate(cart);

                    const isEmpty =
                        Number(cart?.item_count || 0) === 0 ||
                        (Array.isArray(cart?.items) && cart.items.length === 0);

                    if (isEmpty) {
                        const domRows = countNativeCartDomRows();
                        // Edge case where the DOM doesn't reflect a cart update. May not need this
                        /* if (domRows > 0) {
                            logDebug('[Native Cart] /cart.js empty but DOM still shows rows → hard refresh (guarded)');
                            safeReloadOnce();
                        } */
                    }
                } catch (e) {
                    logDebug('[Native Cart] Failed to refresh cart after cart mutation', e);
                }
            }, DEBOUNCE_MS);
        };

        const urlMatchesCartMutation = (url) => {
            if (!url) return false;
            const u = String(url);
            return (
                u.includes('/cart/add') ||
                u.includes('/cart/change') ||
                u.includes('/cart/update')
            );
        };

        // Detect theme-driven section rendering calls so we don’t cause flicker
        const looksLikeThemeSectionChange = (url, init) => {
            try {
                const u = String(url || '');
                if (!u.includes('/cart/change')) return false;

                const body = init?.body;
                if (!body) return false;

                const s = (typeof body === 'string') ? body : '';

                // Specific to theme request
                if (s.includes('"sections"') && s.includes('"sections_url"')) return true;
                if (s.includes('sections=') && s.includes('sections_url=')) return true;

                return false;
            } catch (e) {
                return false;
            }
        };

        window.fetch = async (input, init) => {
            const url = (input instanceof Request) ? input.url : input;

            const method =
                (init && init.method) ||
                (input instanceof Request ? input.method : 'GET') ||
                'GET';

            const isPost = String(method).toUpperCase() === 'POST';
            const shouldWatch = isPost && urlMatchesCartMutation(url);

            // Let the request happen first
            const res = await originalFetch(input, init);

            if (shouldWatch && res && res.ok) {
                // If this was the theme itself morphing sections, skip our refresh to reduce flicker.
                if (looksLikeThemeSectionChange(url, init)) {
                    logDebug('[Native Cart] Skip refresh (theme section change request)', url);
                    return res;
                }

                logDebug('[Native Cart] Detected Shopify cart mutation → scheduling refresh', url);
                scheduleRefresh(String(url));
            }

            return res;
        };

        logDebug('[Native Cart] Installed cart mutation refresh interceptor (debounced + guarded)');
    };

    // Helper: limit quantity for tagged products in Smart Cart
    const limitItemQuantities = () => {
        setTimeout(() => {
            if (!window.Rebuy || !Rebuy.SmartCart || !Rebuy.Cart) return;

            const cartItems = Array.isArray(Rebuy.SmartCart.items()) ? Rebuy.SmartCart.items() : [];
            const limitTags = ['DigitalPurchase', 'Membership', 'Subscription'];

            cartItems.forEach((item) => {
                const tags = item.product?.tags || [];
                const shouldLimit = limitTags.some(t => tags.includes(t));
                if (shouldLimit && item.quantity > 1) {
                    Rebuy.Cart.setItemQuantity(item, 1);
                }
            });
        }, 300);
    };

    function getProgressBarEl() {
        if (progressBarEl && document.contains(progressBarEl)) return progressBarEl;
        progressBarEl = document.querySelector('div[data-rebuy-component="progress-bar"]');
        return progressBarEl;
    }

    // shows/hides smart cart error message
    // can be extended to handle different error messages if needed (msg = '')
    function handleCartError(display) {
        const cartBodyEl = (isNativeCartPage ? document.querySelector('main') : document.querySelector('div[data-rebuy-cart-anchor="body"]'));
        const cartItemsComponentEl = (isNativeCartPage ? document.querySelector('main div.shopify-section:first-child') : document.querySelector('div[data-rebuy-component="cart-items"]'));
        const cartErrorMsgEl = document.querySelector('div[data-rebuy-cart-component="error"]');

        if (display) {
            if (cartErrorMsgEl) return;

            const errorMsgInnerHTML = `<div class="rebuy-cart__error-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14" focusable="false" aria-hidden="true"><g clip-path="url(#alertCircle_svg__a)"><circle cx="7" cy="7" r="5.5"></circle><path stroke-linecap="round" stroke-linejoin="round" d="M7 3.75v3.5"></path><path stroke-linejoin="round" d="M6.99 9.74h.02v.02h-.02z"></path></g><defs><clipPath id="alertCircle_svg__a"><path fill="#fff" d="M0 0h14v14H0z"></path></clipPath></defs></svg></div><div class="rebuy-cart__error-message">Your cart contains multiple BODi Subscriptions. Please choose 1 and remove all others to proceed.</div>`;

            const errorMsgEl = document.createElement('div');
                errorMsgEl.setAttribute('data-rebuy-cart-component', 'error');
                errorMsgEl.role = 'alert';
                errorMsgEl.classList = 'rebuy-cart__error-container';
                errorMsgEl.innerHTML = errorMsgInnerHTML;
            
            cartBodyEl.insertBefore(errorMsgEl, cartItemsComponentEl);
        } else {
            if (!cartErrorMsgEl) return;

            cartErrorMsgEl.remove();
        }
    }

    function updateProgressBarVisibility(items) {
        const el = getProgressBarEl();
        if (!el) return;

        const shouldShow = Array.isArray(items)
        ? items.some(item =>
            item.requires_shipping === true &&
            !item.selling_plan_allocation
          )
        : false;

        el.style.display = shouldShow ? 'block' : 'none';
    }

    /** Rebuy tax disclaimer: only when the smart cart has line items. */
    function syncSmartCartTaxNote(scope) {
        const root =
            scope ||
            document.querySelector('[data-rebuy-cart-anchor="footer"]') ||
            document.querySelector('[data-rebuy-component="cart-subtotal"]')?.parentElement;
        if (!root) return;

        root.querySelectorAll('.tax-note').forEach((el) => el.parentElement?.remove());

        const items = window.Rebuy?.SmartCart?.items?.();
        if (!Array.isArray(items) || !items.length) return;

        const subtotal = root.querySelector('[data-rebuy-component="cart-subtotal"]');
        if (!subtotal) return;

        const wrap = document.createElement('div');
        wrap.innerHTML = `
            <div class="tax-note">
                <p>*Shipping &amp; taxes calculated at checkout.</p>
            </div>
        `;
        subtotal.parentNode.insertBefore(wrap, subtotal.nextSibling);
    }

    // Helper: handle custom actions when cart changes
    const manageCartChange = (e) => {
        const { cart } = e.detail;
        updateProgressBarVisibility(cart.items());
        syncSmartCartTaxNote();
        limitItemQuantities();
    };

    // Translate smartcart language based on store locale
    const translateSmartCart = (locale) => {
        // Only translate for CA French
        if (locale !== 'ca_fr') return;

        const getComp = (type) =>
            (window.Rebuy?.SmartCart?.getComponentsByType?.(type) || [])[0] || null;

        const components = {
            announcement: getComp('announcement_bar'),
            title: getComp('title_bar'),
            progress: getComp('tiered_progress_bar'),
            checkout: getComp('checkout'),
            subtotal: getComp('cart_subtotal'),
            items: getComp('cart_items'),
        };

        // Switch to sub / Buy more save more language at the root SmartCart settings level
        const switchToSubscriptionLanguage =
            window.Rebuy?.SmartCart?.settings?.switch_to_subscription?.language || null;

        const buyMoreSaveMoreLanguage =
            window.Rebuy?.SmartCart?.settings?.buy_more_save_more?.language || null;

        // Treat blank/placeholder values as "no translation"
        const hasValue = (v) => typeof v === 'string' && v.trim() !== '';

        const setExisting = (obj, path, value) => {
            if (!obj) return false;

            let cur = obj;
            for (let i = 0; i < path.length - 1; i++) {
            const key = path[i];
            if (cur == null) return false;
            cur = cur[key];
            if (cur == null || (typeof cur !== 'object' && !Array.isArray(cur))) return false;
            }

            const lastKey = path[path.length - 1];
            if (cur == null || !(lastKey in cur)) return false;

            cur[lastKey] = value;
            return true;
        };

        const patchExisting = (target, entries) => {
            if (!target) return;
            for (const [path, val] of entries) {
            if (!hasValue(val)) continue;
            setExisting(target, path, val);
            }
        };

        const t = {
            title: " ",

            announcement: [
                " ",
                " ",
                " ",
            ],

            progress: {
                gift_area_title:
                    " ",
                free_shipping_reached:
                    " ",
                free_shipping_remaining:
                    " ",
            },

            checkout: {
                checkout_label:
                    " ",
                view_cart_label:
                    " ",
                checking_out_label:
                    " ",
                view_cart_working_label:
                    " ",
                continue_shopping_label:
                    " ",
                terms_and_conditions_label:
                    " ",
            },
        
            cart_subtotal: {
                subtotal_plural_text:
                    " ",
                subtotal_singular_text:
                    " ",
                discount_summary_count_label:
                    " ",
                discount_summary_count_label_plural:
                    " ",
            },

            cart_items: {
                plural_line_item_label:
                    " ",
                single_line_item_label:
                    " ",
                nested_items_hidden_label:
                    " ",
                nested_items_displayed_label:
                    " ",
                savings_violator:
                    "Saving",
            },

            switch_to_subscription: {
                upgrading_label:
                    " ",
                downgrading_label:
                    " ",
                onetime_option_label:
                    " ",
                subscription_option_label:
                    " ",
                onetime_option_group_label:
                    " ",
                upgrade_to_subscription_label:
                    " ",
                subscription_option_group_label:
                    " ",
                upgrade_to_subscription_default_frequency:
                    " ",
                upgrade_to_subscription_without_discount_label:
                    " ",
            },

            buy_more_save_more: {
                bmsm_discount_message:
                    " ",
                bmsm_discount_success:
                    " ",
            },

            empty_cart_markup: " ",
        };

        // Savings violator label
        window.__BODI_REBUY__.test_var = t.cart_items.savings_violator;

        // Announcement bar
        const msgs = components.announcement?.settings?.messages;
        if (Array.isArray(msgs) && msgs.length) {
            t.announcement.forEach((val, i) => {
                if (msgs[i] != null && hasValue(val)) msgs[i] = val;
            });
        }

        // Title bar
        if (hasValue(t.title)) {
            setExisting(components.title, ['settings', 'title'], t.title);
        }

        // Tiered progress bar (bar[0])
        // only supports 1 bar, will need go extend if needed
        const bar0 = components.progress?.settings?.bars?.[0];
        if (bar0?.language) {
            patchExisting(bar0, [
                [['language', 'gift_area_title'], t.progress.gift_area_title],
                [['language', 'free_shipping_reached'], t.progress.free_shipping_reached],
                [['language', 'free_shipping_remaining'], t.progress.free_shipping_remaining],
            ]);
        }

        // Checkout
        patchExisting(components.checkout, [
            [['settings', 'language', 'checkout_label'], t.checkout.checkout_label],
            [['settings', 'language', 'view_cart_label'], t.checkout.view_cart_label],
            [['settings', 'language', 'checking_out_label'], t.checkout.checking_out_label],
            [['settings', 'language', 'view_cart_working_label'], t.checkout.view_cart_working_label],
            [['settings', 'language', 'continue_shopping_label'], t.checkout.continue_shopping_label],
            [['settings', 'language', 'terms_and_conditions_label'], t.checkout.terms_and_conditions_label],
        ]);

        // Cart subtotal
        patchExisting(components.subtotal, [
            [['settings', 'language', 'subtotal_plural_text'], t.cart_subtotal.subtotal_plural_text],
            [['settings', 'language', 'subtotal_singular_text'], t.cart_subtotal.subtotal_singular_text],
            [['settings', 'language', 'discount_summary_count_label'], t.cart_subtotal.discount_summary_count_label],
            [['settings', 'language', 'discount_summary_count_label_plural'], t.cart_subtotal.discount_summary_count_label_plural],
        ]);

        // Cart items
        patchExisting(components.items, [
            [['settings', 'language', 'plural_line_item_label'], t.cart_items.plural_line_item_label],
            [['settings', 'language', 'single_line_item_label'], t.cart_items.single_line_item_label],
            [['settings', 'language', 'nested_items_hidden_label'], t.cart_items.nested_items_hidden_label],
            [['settings', 'language', 'nested_items_displayed_label'], t.cart_items.nested_items_displayed_label],
        ]);

        // Switch to subscription
        if (switchToSubscriptionLanguage && typeof switchToSubscriptionLanguage === 'object') {
            patchExisting(switchToSubscriptionLanguage, [
                [['upgrading_label'], t.switch_to_subscription.upgrading_label],
                [['downgrading_label'], t.switch_to_subscription.downgrading_label],
                [['onetime_option_label'], t.switch_to_subscription.onetime_option_label],
                [['subscription_option_label'], t.switch_to_subscription.subscription_option_label],
                [['onetime_option_group_label'], t.switch_to_subscription.onetime_option_group_label],
                [['upgrade_to_subscription_label'], t.switch_to_subscription.upgrade_to_subscription_label],
                [['subscription_option_group_label'], t.switch_to_subscription.subscription_option_group_label],
                [['upgrade_to_subscription_default_frequency'], t.switch_to_subscription.upgrade_to_subscription_default_frequency],
                [['upgrade_to_subscription_without_discount_label'], t.switch_to_subscription.upgrade_to_subscription_without_discount_label],
            ]);
        }

        // Buy more save more
        if (buyMoreSaveMoreLanguage && typeof buyMoreSaveMoreLanguage === 'object') {
            patchExisting(buyMoreSaveMoreLanguage, [
                [['bmsm_discount_message'], t.buy_more_save_more.bmsm_discount_message],
                [['bmsm_discount_success'], t.buy_more_save_more.bmsm_discount_success],
            ]);
        }

        // Empty cart message
        if (window.Rebuy?.SmartCart?.settings?.empty_cart_markup) {
            window.Rebuy.SmartCart.settings.empty_cart_markup = t.empty_cart_markup;
        }
    };

    // widgets: init
    document.addEventListener('rebuy.init', (event) => {
        const { widget } = event.detail;
        applyWidgetDiscountMessageOverride(widget);
        applyWidgetFrDiscountMessageOverride(widget);
    });

    // widgets: ready
    document.addEventListener('rebuy.ready', (event) => {
        logDebug('rebuy.ready fired');

        const isWidgetLevel = event.detail && event.detail.widget;

        if (isWidgetLevel) {
            const widget = event.detail.widget;
            logDebug('Widget-level rebuy.ready for widget id:', widget.id);

            if (linkedWidgetIdSet.has(widget.id)) {
                widget.data = widget.data || {};
                widget.data.config = widget.data.config || {};
                widget.data.config.popup_trigger = 'manual';
                logDebug('Set popup_trigger="manual" for linked widget', widget.id, widget.data.config);
            }

            // Apply EN then CA-FR discount message overrides (CA-FR layers on top of EN)
            applyWidgetDiscountMessageOverride(widget);
            applyWidgetFrDiscountMessageOverride(widget);

            return;
        }

        logDebug('Global-level rebuy.ready (filtering active widgets)');

        if (!window.Rebuy || !Array.isArray(window.Rebuy.widgets)) {
            logDebug('window.Rebuy.widgets not ready, skipping global filtering');
            return;
        }

        const activeIds = window.Rebuy.widgets.map(w => w.id);
        logDebug('Active widget IDs:', activeIds);

        for (let i = bodiWidgets.length - 1; i >= 0; i--) {
            if (!activeIds.includes(bodiWidgets[i].id)) {
                logDebug('Pruning bodiWidget:', bodiWidgets[i]);
                bodiWidgets.splice(i, 1);
            }
        }

        bodiWidgetById.clear();
        bodiWidgets.forEach((w) => bodiWidgetById.set(w.id, w));

        document.querySelectorAll('.rebuy-widget--global').forEach(el => {
            const id = parseInt(el.dataset.rebuyId, 10);
            if (!activeIds.includes(id)) {
                logDebug('Removing unused global widget container:', id);
                el.remove();
            }
        });

        logDebug('bodiWidgets after filtering:', bodiWidgets);
    });

    // Utilize StorefrontHelper to enrich product JSON with locale-aware titles
    // update product JSON every time products are loaded or changed
    document.addEventListener('rebuy.productsChange', (e) => {
        const widget = e.detail.widget;
        const storefrontHelper = new ShopifyStorefrontHelper();

        // loop over products in the widget and enrich product json
        widget.data.products.forEach((product) => storefrontHelper.updateProductJSON(product));

        patchSmartCartDiscountTitles();
    });

    // widgets: before show
    document.addEventListener('rebuy.beforeShow', (event) => {
        logDebug('rebuy.beforeShow fired for widget id:', event.detail.widget.id);

        const { rebuy, bodi } = getWidgetPair(event.detail.widget.id);
        if (!rebuy || !bodi) {
            logDebug('No rebuy or bodi config found for widget id:', event.detail.widget.id);
            return;
        }

        // Apply discount message overrides now that datasource metadata is populated
        // EN is applied first; CA-FR layers on top if applicable
        applyWidgetDiscountMessageOverride(rebuy);
        applyWidgetFrDiscountMessageOverride(rebuy);

        if (bodi.hide_cart_on_open) {
            logDebug('hide_cart_on_open=true for widget id:', bodi.id, '→ hiding SmartCart');
            window.Rebuy.SmartCart.hide();
            window.Rebuy.SmartCart.skip_open = true;
        }

        if (bodi.linked_widget_id) {
            logDebug('Hiding linked widget placeholder for linked widget id:', bodi.linked_widget_id);
            const el = document.getElementById('rebuy-widget-' + bodi.linked_widget_id);
            if (el) el.style.display = 'none';
        }
    });

    // widgets: hide
    document.addEventListener('rebuy.hide', (event) => {
        logDebug('rebuy.hide fired for widget id:', event.detail.widget.id);

        const { rebuy, bodi } = getWidgetPair(event.detail.widget.id);
        if (!rebuy || !bodi) return;

        if (bodi.linked_widget_id) {
            const nextId = bodi.linked_widget_id;
            const nextRebuyWidget = getRebuyWidget(nextId);

            const nextEl = document.getElementById('rebuy-widget-' + nextId);
            if (nextEl) nextEl.style.display = 'block';

            if (nextRebuyWidget && typeof nextRebuyWidget.show === 'function') {
                nextRebuyWidget.show();
            }
        }

        if (bodi.show_cart_on_close) {
            window.Rebuy.SmartCart.skip_open = false;
            window.Rebuy.SmartCart.show();
        }
    });

    // smartcart: init
    document.addEventListener('rebuy:smartcart.init', (event) => {
        logDebug('rebuy:smartcart.init fired');

        
            const desktop = document.querySelector('.bodi-nav__cart-button');
            const mobile = document.querySelector('.bodi-nav-mobile__cart-button');

            if (desktop) desktop.addEventListener('click', () => Rebuy.SmartCart.show());
            if (mobile) mobile.addEventListener('click', () => Rebuy.SmartCart.show());

            translateSmartCart(shopLocaleCode);
        
    });

    

    // smartcart: ready
    document.addEventListener('rebuy:smartcart.ready', (event) => {
        logDebug('rebuy:smartcart.ready fired');
        patchSmartCartDiscountTitles();
        const header = document.querySelector('div[data-rebuy-cart-anchor="header"]');
        const bar = document.querySelector('div[data-rebuy-component="announcement-bar"]');
        if (header && bar) header.before(bar);
        if (window.Rebuy?.SmartCart?.items) {
            updateProgressBarVisibility(Rebuy.SmartCart.items());
            syncSmartCartTaxNote();
        }
    });

    // smartcart: show
    document.addEventListener('rebuy:smartcart.show', (event) => {
        logDebug('rebuy:smartcart.show fired');
        patchSmartCartDiscountTitles();
        const cart = event.detail.smartcart.dom.cart;
        if (!cart) return;

        syncSmartCartTaxNote(cart);

        // Proper continue shopping CTA URL for FR
        if (shopLocaleCode === 'ca_fr' && cart.querySelector('.rebuy-cart__flyout-empty-cart a')) {
            const continueCTA = cart.querySelector('.rebuy-cart__flyout-empty-cart a');
            continueCTA.href = '/fr';
        }

        // Translate guarantee copy in the custom cart items template
        if (shopLocaleCode === 'ca_fr' && cart.querySelector('#rebuyCartGuaranteeLanguage')) {
            const guaranteeHtml = cart.querySelector('#rebuyCartGuaranteeLanguage');
            const guaranteeMsg = " ";

            if (typeof guaranteeMsg === 'string' && guaranteeMsg.trim() !== '') {
                guaranteeHtml.innerHTML = '<p>' + guaranteeMsg + '</p>';
            }
        }
    });

    // cart: change — debounced prune to let cart state fully settle before checking
    // for orphaned promo items. Prevents race condition where a just-added promo
    // is removed because the source product hasn't been reflected in cart state yet.
    let __smartCartPruneTimer = null;

    document.addEventListener('rebuy:cart.change', (event) => {
        patchSmartCartDiscountTitles();
        manageCartChange(event);
        hasMultipleUniques();

        if (__smartCartPruneTimer) clearTimeout(__smartCartPruneTimer);
        __smartCartPruneTimer = setTimeout(() => {
            __smartCartPruneTimer = null;
            pruneSmartCartOrphans();
        }, 500);
    });

    // Native /cart: hook theme cart update event (ThemeEvents.cartUpdate === 'cart:update')
    (() => {
        if (!isNativeCartPage) return;

        // Native /cart refresh because we were not seeing the
        // DOM update for GWP removals or adds from cross-sells on /cart only
        installNativeCartMutationRefresh();

        let scheduled = false;
        const schedule = () => {
            if (scheduled) return;
            scheduled = true;
            setTimeout(async () => {
                scheduled = false;
                await pruneNativeCartOrphans();
            }, 150);
        };

        document.addEventListener('cart:update', (e) => {
            if (e?.detail?.data?.didError) return;
            const nextCart = e?.detail?.data?.cart;
            if (nextCart) __nativeCartCache = nextCart;
            schedule();
        });

        schedule();
    })();
  })();

  function isBodiSpotlight(id) {
    return !!(window.__BODI_REBUY__?.isSpotlight?.(id));
  }
</script>



  
  

  
<script id="rebuy-widget-274810" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-294586" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-274645" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-274640" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-274648" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-293984" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  

  

  
<script id="rebuy-widget-274807" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-274642" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-274646" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  

  
<script id="rebuy-widget-294582" type="text/template">
            
                <div class="rebuy-widget"
                v-cloak
                v-on:click="stopPropagation($event)"
                v-bind:id="'rebuy-widget-' + id"
                v-bind:class="['widget-type-' + config.type.replace('_','-'), 'widget-display-' + config.display_type, products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

                    <div
                        class="rebuy-widget-container"
                        v-cloak
                        v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]"
                        v-on:click.self="hide()">

                        <div
                            class="rebuy-widget-content"
                            v-bind:class="[isBodiSpotlight(id) ? 'widget-spotlight' : '']"
                        >
                            <div class="rebuy-modal-close" v-on:click="hide()" aria-label="close modal">
                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                    <g clip-path="url(#clip0_5603_464)">
                                        <rect opacity="0.01" width="24" height="24" fill="#E8E8E8"/>
                                        <path fill-rule="evenodd" clip-rule="evenodd" d="M17.8219 17.6852C18.0691 17.4471 18.0599 17.0443 17.8219 16.8062L12.9238 11.9082L17.8219 7.00095C18.0599 6.76291 18.0691 6.36923 17.8219 6.1312C17.5838 5.884 17.181 5.89316 16.943 6.1312L12.0449 11.0293L7.14682 6.1312C6.90878 5.89316 6.50595 5.884 6.26791 6.1312C6.02072 6.36923 6.02988 6.76291 6.26791 7.00095L11.166 11.9082L6.26791 16.8062C6.02988 17.0443 6.02072 17.4471 6.26791 17.6852C6.50595 17.9323 6.90878 17.9232 7.14682 17.6852L12.0449 12.7871L16.943 17.6852C17.181 17.9232 17.5838 17.9323 17.8219 17.6852Z" fill="#161819"/>
                                    </g>
                                    <defs>
                                        <clipPath id="clip0_5603_464">
                                            <rect width="24" height="24" fill="white"/>
                                        </clipPath>
                                    </defs>
                                </svg>
                            </div>

                            <div class="rebuy-timer" v-if="hasTimer()">
                                <p class="rebuy-timer-title" v-if="config.language.timer_title">
                                    <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                                </p>
                            </div>

                            <p
                                class="super-title"
                                v-if="config.language.super_title"
                                v-html="config.language.super_title"
                            ></p>

                            <p class="primary-title"
                                v-if="config.language.title"
                                v-html="config.language.title"
                            ></p>

                            <div class="description" v-if="config.language.description" v-html="config.language.description"></div>

                            <div class="rebuy-product-grid" v-bind:class="layoutClasses" tabindex="0" role="list">

                                <div
                                    v-for="(product, product_index) in products"
                                    v-bind:class="[
                                        product.handle,
                                        'product-id-' + product.id,
                                        cartHasProduct(product) ? 'cart-has-item' : '',
                                        productTagClasses(product),
                                        hasSplideCarousel ? 'splide__slide' : '',
                                    ]"
                                    aria-label="product"
                                    class="rebuy-product-block"
                                    role="listitem"
                                >
                                    <div class="rebuy-product-media">
                                        <a
                                            class="rebuy-product-image"
                                            tabindex="-1"
                                            v-bind:href="learnMoreURL(product)"
                                            v-bind:style="imageStyles"
                                            v-on:click="learnMore(product, $event);"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                            rel="nofollow"
                                        >
                                            <img v-bind:loading="product_index > 1 ? 'lazy' : 'eager'" v-bind:src="itemImage(product, product.selected_variant, '400x400')" v-bind:alt="itemImageAlt(product, product.selected_variant)">
                                        </a>

                                        <button
                                            class="rebuy-button"
                                            v-if="config.display_type == 'embed'"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                                <svg xmlns="http://www.w3.org/2000/svg" width="16" height="15" viewBox="0 0 16 15" fill="none">
                                                    <g clip-path="url(#clip0_4267_416)">
                                                        <path d="M0 7.05261C0 7.40758 0.301393 7.70228 0.656367 7.70228H6.39624V13.4421C6.39624 13.7971 6.69093 14.0985 7.04592 14.0985C7.40758 14.0985 7.70228 13.7971 7.70228 13.4421V7.70228H13.4421C13.7971 7.70228 14.0985 7.40758 14.0985 7.05261C14.0985 6.69093 13.7971 6.39624 13.4421 6.39624H7.70228V0.656367C7.70228 0.301393 7.40758 0 7.04592 0C6.69093 0 6.39624 0.301393 6.39624 0.656367V6.39624H0.656367C0.301393 6.39624 0 6.69093 0 7.05261Z" fill="#161819"></path>
                                                    </g>
                                                    <defs>
                                                        <clipPath id="clip0_4267_416">
                                                            <rect width="15.063" height="14.1119" fill="white"></rect>
                                                        </clipPath>
                                                    </defs>
                                                </svg>
                                                
                                        </button>
                                    </div>

                                    <div class="rebuy-product-info">
                                        <p
                                            class="rebuy-product-message"
                                            v-if="config.discount.message
                                                && config.display_type == 'embed'
                                                && isBodiSpotlight(id)"
                                            v-html="config.discount.message"
                                        ></p>

                                        <div
                                            class="rebuy-product-title"
                                            v-bind:class="[hasLearnMore() ? 'clickable' : '']">
                                            <a
                                                v-bind:href="learnMoreURL(product)"
                                                class="rebuy-product-title-link"
                                                v-on:click="learnMore(product, $event);"
                                                v-html="metadata.custom && metadata.custom.product_title_override
                                                    && metadata.custom.product_title_override ? metadata.custom.product_title_override : product.title"
                                                v-bind:class="[hasLearnMore() ? 'clickable' : '']"
                                                v-bind:aria-label="'View ' + product.title"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div
                                            class="rebuy-product-vendor-container"
                                            v-if="showProductVendor(product.vendor)"
                                        >
                                            <a
                                                class="rebuy-product-vendor"
                                                v-bind:class="[hasEnabledProductVendorLink() ? 'clickable' : '']"
                                                v-html="product.vendor"
                                                v-bind:href="vendorURL(product.vendor)"
                                                v-bind:aria-label="'View ' + product.vendor + ' products'"
                                                rel="nofollow"
                                            ></a>
                                        </div>
                                        <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                        <div class="rebuy-product-review" v-if="hasProductReviews(product)" aria-label="product star rating">
                                            <span class="rebuy-star-rating">
                                                <span
                                                    v-if="product.reviews.star_rating"
                                                    class="rebuy-star-rating-value sr-only"
                                                    v-html="product.reviews.star_rating + ' stars out of 5 stars'"
                                                >
                                                </span>
                                                <span class="rebuy-star-rating-background"></span>
                                                <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                            </span>
                                            <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                        </div>

                                        <div class="rebuy-product-price">
                                            <div v-if="variantOnSale(product, product.selected_variant)">
                                                <span class="rebuy-money compare-at">
                                                    <span class="sr-only">Original price</span>
                                                    <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-money sale">
                                                    <span class="sr-only">Sale price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                                <span class="rebuy-price-label"
                                                    v-if="metadata.custom
                                                        && metadata.custom.price_label"
                                                    v-html="metadata.custom.price_label"
                                                ></span>
                                            </div>
                                            <div v-if="!(variantOnSale(product, product.selected_variant))">
                                                <span class="rebuy-money">
                                                    <span class="sr-only">Price</span>
                                                    <span tabindex="0" v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                                </span>
                                            </div>
                                        </div>

                                        <div v-if="config.display_type == 'embed'" class="rebuy-product-actions">
                                            <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <!-- <div
                                                    v-if="product.subscription_frequencies.length == 1"
                                                    v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                    class="rebuy-fequency-label"
                                                ></div> -->
                                                
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="subscription frequency"
                                                    v-model="product.subscription_frequency"
                                                    v-on:change="updateSubscriptionFrequency(product)"
                                                    v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                    <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                                </select>
                                            </div>

                                            <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                                <div class="rebuy-select-wrapper">
                                                    <label class="rebuy-label">Quantity</label>
                                                    <select
                                                        class="rebuy-select"
                                                        aria-label="product quantity"
                                                        v-model="product.quantity">
                                                        <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                    </select>
                                                </div>
                                            </div>

                                            <button
                                                class="rebuy-button"
                                                v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                                v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                                v-bind:aria-label="buttonAriaLabel(product)"
                                                v-on:click="addToCart(product)"
                                                type="button">
                                                    <span v-html="buttonLabel(product)"></span>
                                            </button>

                                            <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                                <span v-html="declineLabel(product)"></span>
                                            </div>
                                        </div>

                                        <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'cart' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>
                                        
                                        <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                    </div>

                                    <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                        <select
                                            title="Select product variant"
                                            :id="id + '-' + 'select' + '-' + product_index"
                                            :class="{ hide : config.view_options.variant_selector === 'buttons' }"
                                            class="rebuy-select"
                                            v-bind:aria-label="'variant of ' + product.title"
                                            v-model="product.selected_variant_id"
                                            v-on:change="selectVariant(product)">
                                            <option
                                                v-for="variant in product.variants"
                                                class="rebuy-product-options__option"
                                                :class="{ 'rebuy-product-options__option--oos' : !variantAvailable(variant) }"
                                                v-bind:value="variant.id"
                                                :disabled="!variantAvailable(variant)"
                                                v-html="formatVariantOptionTitle(variant)">
                                            </option>
                                        </select>

                                        <div
                                            class="rebuy-product-options__button-swatches-container"
                                            :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                            >
                                            <div
                                                v-for="option in product.options"
                                                :key="'option-' + product.id + '-' + option.name"
                                                class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                                >
                                                <div
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                    >
                                                    <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                        <input
                                                            :name="id + '-color-' + product_index"
                                                            :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-color-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                            :style="getMerchantThemeColorAssetStyle(value)"
                                                            :title="value"
                                                            class="rebuy-color-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                        </label>
                                                    </div>

                                                    <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                        <input
                                                            :name="id + '-' + option.name + '-' + product_index"
                                                            :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                            :value="value"
                                                            type="radio"
                                                            class="rebuy-size-input hide"
                                                            v-on:change="selectVariantByOption(product, option.name, value)"
                                                            :disabled="isDisabledOptionValue(product, option.name, value)"
                                                        />

                                                        <label
                                                            :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                            class="rebuy-size-label"
                                                            :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                        >
                                                            {{ value }}
                                                        </label>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                    
                                    <div v-if="config.display_type != 'embed'" class="rebuy-product-actions">
                                        <div class="subscription-checkbox" v-if="config.display_type != 'embed' && showSubscriptionOptions(product)">
                                            <label class="rebuy-checkbox-label">
                                                <input
                                                    class="checkbox-input rebuy-checkbox"
                                                    v-model="product.subscription"
                                                    v-on:change="toggleSubscription(product)"
                                                    type="checkbox"
                                                    :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                                />
                                                <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                    <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                                </svg>
                                                <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                            </label>
                                        </div>

                                        <div class="subscription-frequency" v-if="showSubscriptionFrequency(product) && product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                            <!-- <div
                                                v-if="product.subscription_frequencies.length == 1"
                                                v-html="frequencyLabel(product.subscription_frequencies[0], product.subscription_interval)"
                                                class="rebuy-fequency-label"
                                            ></div> -->
                                            
                                            <select
                                                class="rebuy-select"
                                                aria-label="subscription frequency"
                                                v-model="product.subscription_frequency"
                                                v-on:change="updateSubscriptionFrequency(product)"
                                                v-if="product.subscription_frequencies && product.subscription_frequencies.length > 1">
                                                <option v-for="frequency in product.subscription_frequencies" v-bind:value="frequency">{{ frequencyLabel(frequency, product.subscription_interval) }}</option>
                                            </select>
                                        </div>

                                        <div class="product-quantity" v-if="hasQuantityInputEnabled()">
                                            <div class="rebuy-select-wrapper">
                                                <label class="rebuy-label">Quantity</label>
                                                <select
                                                    class="rebuy-select"
                                                    aria-label="product quantity"
                                                    v-model="product.quantity">
                                                    <option v-for="n in maxQuantityInputValue()" v-bind:value="n">{{ n }}</option>
                                                </select>
                                            </div>
                                        </div>

                                        <button
                                            class="rebuy-button"
                                            v-bind:class="{ working: (product.status != 'ready' && product.status != 'selecting') }"
                                            v-bind:disabled="!(variantAvailable(product.selected_variant)) || (product.status != 'ready' && product.status != 'selecting')"
                                            v-bind:aria-label="buttonAriaLabel(product)"
                                            v-on:click="addToCart(product)"
                                            type="button">
                                                <span v-html="buttonLabel(product)"></span>
                                        </button>

                                        <div class="no-thanks" v-if="showContinueButton()" v-on:click="hide()">
                                            <span v-html="declineLabel(product)"></span>
                                        </div>
                                    </div>

                                    <div class="subscription-checkbox" v-if="config.display_type == 'embed' && config.type == 'product' && showSubscriptionOptions(product)">
                                        <label class="rebuy-checkbox-label">
                                            <input
                                                class="checkbox-input rebuy-checkbox"
                                                v-model="product.subscription"
                                                v-on:change="toggleSubscription(product)"
                                                type="checkbox"
                                                :aria-label="upgradeToSubscriptionAriaLabel(product)"
                                            />
                                            <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none">
                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M12 5.25C13.2131 5.25 14.4153 5.2957 15.6052 5.38545C17.2196 5.50723 18.4928 6.78038 18.6146 8.39481C18.6586 8.97827 18.692 9.56471 18.7146 10.1539L17.0303 8.46967C16.7374 8.17678 16.2626 8.17678 15.9697 8.46967C15.6768 8.76256 15.6768 9.23744 15.9697 9.53033L18.9697 12.5303C19.2626 12.8232 19.7374 12.8232 20.0303 12.5303L23.0303 9.53033C23.3232 9.23744 23.3232 8.76256 23.0303 8.46967C22.7374 8.17678 22.2626 8.17678 21.9697 8.46967L20.2181 10.2212C20.1948 9.57151 20.1588 8.92503 20.1103 8.28199C19.9327 5.92812 18.0719 4.06725 15.718 3.8897C14.4907 3.79712 13.2508 3.75 12 3.75C10.7492 3.75 9.50933 3.79712 8.28199 3.8897C5.92812 4.06725 4.06725 5.92812 3.8897 8.28199C3.87284 8.50552 3.85748 8.72948 3.84365 8.95384C3.81815 9.36727 4.13264 9.72308 4.54606 9.74858C4.95949 9.77407 5.31531 9.45959 5.3408 9.04616C5.35422 8.82864 5.3691 8.61152 5.38545 8.39481C5.50723 6.78038 6.78038 5.50723 8.39481 5.38545C9.58465 5.2957 10.7869 5.25 12 5.25ZM5.03033 11.4697C4.73744 11.1768 4.26256 11.1768 3.96967 11.4697L0.96967 14.4697C0.676777 14.7626 0.676777 15.2374 0.96967 15.5303C1.26256 15.8232 1.73744 15.8232 2.03033 15.5303L3.78186 13.7788C3.80517 14.4285 3.84119 15.075 3.8897 15.718C4.06725 18.0719 5.92812 19.9327 8.28199 20.1103C9.50933 20.2029 10.7492 20.25 12 20.25C13.2508 20.25 14.4907 20.2029 15.718 20.1103C18.0719 19.9327 19.9327 18.0719 20.1103 15.718C20.1272 15.4945 20.1425 15.2705 20.1564 15.0462C20.1818 14.6327 19.8674 14.2769 19.4539 14.2514C19.0405 14.2259 18.6847 14.5404 18.6592 14.9538C18.6458 15.1714 18.6309 15.3885 18.6146 15.6052C18.4928 17.2196 17.2196 18.4928 15.6052 18.6146C14.4153 18.7043 13.2131 18.75 12 18.75C10.7869 18.75 9.58465 18.7043 8.39481 18.6146C6.78038 18.4928 5.50723 17.2196 5.38545 15.6052C5.34144 15.0217 5.30802 14.4353 5.28539 13.8461L6.96967 15.5303C7.26256 15.8232 7.73744 15.8232 8.03033 15.5303C8.32322 15.2374 8.32322 14.7626 8.03033 14.4697L5.03033 11.4697Z" fill="#161819"/>
                                            </svg>
                                            <span class="checkbox-label" v-html="upgradeToSubscriptionLabel(product)"></span>
                                        </label>
                                    </div>
                                    
                                    <div class="rebuy-product-disclaimer"
                                        v-if="metadata.custom
                                            && metadata.custom.disclaimer
                                            && metadata.custom.disclaimer != ''"
                                        v-html="metadata.custom.disclaimer"
                                    ></div>

                                </div>

                            </div>
                        </div>

                    </div>
                </div>
            
    </script>
  


<script id="rebuy-dynamic-bundle-template" type="text/template">
    <div class="rebuy-widget"
        v-cloak
        v-on:click="stopPropagation($event)"
        v-bind:id="'rebuy-widget-' + id"
        v-bind:class="['widget-type-' + config.type.replace('_','-'), products.length > 0 ? 'is-visible' : 'is-hidden', 'widget-layout-' + currentLayout()]">

        <div class="rebuy-widget-container"
            v-bind:class="['widget-display-' + config.display_type, visible ? 'is-visible' : 'is-hidden' ]">
            <div class="rebuy-widget-content">
                <div class="rebuy-timer" v-if="hasTimer()">
                    <h5 class="rebuy-timer-title" v-if="config.language.timer_title">
                        <span v-html="config.language.timer_title"></span> <span class="rebuy-timer-minutes" v-html="config.timer.duration_minutes"></span>:<span class="rebuy-timer-seconds" v-html="config.timer.duration_seconds"></span>
                    </h5>
                </div>

                <div class="rebuy-dynamic-bundle-header" v-if="products.length > 0">
                    <div class="super-title" v-if="config.language.super_title != ''" v-html="config.language.super_title"></div>
                    <h2 class="primary-title" v-if="config.language.title != ''" v-html="config.language.title"></h2>
                    <div class="description" v-if="config.language.description != ''" v-html="config.language.description"></div>
                </div>

                <div class="rebuy-bundle">

                    <div class="rebuy-bundle__items"
                        v-bind:class="[products.length > 2 ? 'rebuy-bundle-items-many' : 'rebuy-bundle-items-duo']">

                        <div
                            v-for="(product, product_index) in products"
                            class="rebuy-product-block"
                            v-bind:class="[product.handle, 'product-id-' + product.id, cartHasProduct(product) ? 'cart-has-item' : '', productTagClasses(product), isInputProduct(product) ? 'is-input-product' : '' ,product.selected ? 'is-selected': '', variantAvailable(product.selected_variant) ? '' : 'rebuy-product-block--out-of-stock']"
                        >
                            <div class="rebuy-bundle-image">
                                <a class="rebuy-bundle__image-item bundle-single-image"
                                    v-bind:href="learnMoreURL(product)"
                                    v-bind:style="imageStyles"
                                    v-on:click="learnMore(product);"
                                    v-bind:class="[hasLearnMore() && !isInputProduct(product) ? 'clickable' : '' ]">
                                    <img v-bind:src="itemImage(product, product.selected_variant)" v-bind:alt="product.title">
                                </a>
                            </div>

                            <div class="rebuy-product-info">

                                <div class="rebuy-product-title-info">
                                    <div class="rebuy-product-badge">
                                        <span v-if="product.selected_variant.metafields.custom.badge" v-html="product.selected_variant.metafields.custom.badge"></span>
                                    </div>
                                    <a class="rebuy-product-title" v-bind:href="learnMoreURL(product)" v-on:click="learnMore(product);" v-bind:class="[hasLearnMore() && !isInputProduct(product) ? 'clickable' : '']">
                                        <h3 v-html="product.title"></h3>
                                    </a>
                                    <div class="rebuy-variant-title" v-if="showVariantTitle(product)" v-html="product.selected_variant.title"></div>
                                    <div class="rebuy-product-description" v-if="showProductDescription(product)" v-html="text(product.body_html)"></div>
                                </div>
                                
                                <div class="rebuy-product-review" v-if="hasProductReviews(product)">
                                    <span class="rebuy-star-rating" aria-label="product star rating">
                                        <span class="rebuy-star-rating-background"></span>
                                        <span class="rebuy-star-rating-foreground" v-bind:style="{ width: productReviewRatingPercentage(product) }"></span>
                                    </span>
                                    <span class="rebuy-review-count" v-html="productReviewCount(product)"></span>
                                </div>
                                
                                <div class="rebuy-product-options" v-if="showVariantSelect(product)">
                                    
                                        <div
                                            v-for="(option, option_index) in product.options"
                                            :key="'option-select-' + product.id + '-' + option.name"
                                            class="rebuy-product-option-select"
                                        >
                                            <!-- More than one value: show the select -->
                                            <template v-if="filterOOSOptions(option, product).length > 1">
                                                <select
                                                    class="rebuy-select"
                                                    :id="id + '-option-select-' + product_index + '-' + option_index"
                                                    @change="selectVariantByOption(product, option.name, $event.target.value)"
                                                >
                                                <option
                                                    v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                    :key="'value-' + product.id + '-' + option.name + '-' + value_index"
                                                    :value="value"
                                                    :selected="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                    :disabled="isDisabledOptionValue(product, option.name, value)"
                                                    v-html="value"
                                                ></option>
                                                </select>
                                            </template>

                                            <!-- Exactly one value: just display the text -->
                                            <!--<template v-else-if="filterOOSOptions(option, product).length === 1">
                                                <p class="rebuy-option-single-value" v-html="filterOOSOptions(option, product)[0]"></p>
                                            </template>-->

                                            <!-- Zero values (all OOS): render nothing, or a sold-out message -->
                                            <!--<template v-else>
                                                <p class="rebuy-option-sold-out"></p>
                                            </template>-->
                                        </div>
                                    

                                    <div
                                        class="rebuy-product-options__button-swatches-container"
                                        :class="{ 'rebuy-style__hidden-block' : config.view_options.variant_selector === 'select' }"
                                        >
                                        <div
                                            v-for="option in product.options"
                                            :key="'option-' + product.id + '-' + option.name"
                                            class="rebuy-product-options__button-swatches rebuy-size-swatches"
                                            >
                                            <div
                                                v-for="(value, value_index) in filterOOSOptions(option, product)"
                                                :key="'value-' + product.id + '-' + option.name + '-' + value + '-' + value_index"
                                                >
                                                <div v-if="displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-color-swatch">
                                                    <input
                                                        :name="id + '-color-' + product_index"
                                                        :id="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                        :checked="hasSwatchOptionSelected(product, value, value_index, 'color')"
                                                        :value="value"
                                                        type="radio"
                                                        class="rebuy-color-input hide"
                                                        v-on:change="selectVariantByOption(product, option.name, value)"
                                                        :disabled="isDisabledOptionValue(product, option.name, value)"
                                                    />

                                                    <label
                                                        :for="id + '-color-' + product_index + '-' + value + '-' + value_index"
                                                        :style="getMerchantThemeColorAssetStyle(value)"
                                                        :title="value"
                                                        class="rebuy-color-label"
                                                        :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                    >
                                                    </label>
                                                </div>

                                                <div v-if="!displayColorSwatches(option)" class="rebuy-product-options__button-swatch rebuy-size-swatch">
                                                    <input
                                                        :name="id + '-' + option.name + '-' + product_index"
                                                        :id="id + '-' + option.name + '-' + product_index + '-' + value"
                                                        :checked="hasSwatchOptionSelected(product, value, value_index, option.name)"
                                                        :value="value"
                                                        type="radio"
                                                        class="rebuy-size-input hide"
                                                        v-on:change="selectVariantByOption(product, option.name, value)"
                                                        :disabled="isDisabledOptionValue(product, option.name, value)"
                                                    />

                                                    <label
                                                        :for="id + '-' + option.name + '-' + product_index + '-' + value"
                                                        class="rebuy-size-label"
                                                        :class="{ 'rebuy-product-options__button-swatch-label--disabled' : isDisabledOptionValue(product, option.name, value) }"
                                                    >
                                                        
                                                    </label>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>

                                <div class="rebuy-product-price">
                                    <div v-if="variantOnSale(product, product.selected_variant)">
                                        <span class="rebuy-money compare-at">
                                            <span class="sr-only">Original price</span>
                                            <span v-html="formatMoney(variantCompareAtPrice(product, product.selected_variant))"></span>
                                        </span>
                                        <span class="rebuy-money sale">
                                            <span class="sr-only">Sale price</span>
                                            <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                        </span>
                                    </div>
                                    <div v-if="!(variantOnSale(product, product.selected_variant))">
                                        <span class="rebuy-money">
                                            <span class="sr-only">Price</span>
                                            <span v-html="formatMoney(variantPrice(product, product.selected_variant))"></span>
                                        </span>
                                    </div>
                                </div>
                            </div>

                            <div class="rebuy-product-checkbox" v-if="!bundleRequiresAllItems()">
                                <label class="rebuy-checkbox-label">
                                    <span class="sr-only">
                                        Select The BODi Subscription for bundle
                                    </span>
                                    <input
                                        class="checkbox-input rebuy-checkbox"
                                        v-model="product.selected"
                                        type="checkbox"
                                        :id="'checkbox-' + product.id" />
                                </label>
                            </div>
                        </div>
                    </div>

                    <div class="rebuy-bundle__actions" v-if="subtotal() > 0">
                        <div class="rebuy-bundle__actions-price">
                            <strong class="rebuy-bundle__actions-price-label" v-html="config.language.total_price_label"></strong>
                            <p class="rebuy-bundle__actions-price-value" v-if="bundleOnSale()">
                                <span class="rebuy-money compare-at">
                                    <span class="sr-only">Original price</span>
                                    <span v-html="formatMoney(compareAtSubtotal())"></span>
                                </span>
                                <span class="rebuy-money sale">
                                    <span class="sr-only">Sale price</span>
                                    <span v-html="formatMoney(subtotal())"></span>
                                </span>
                            </p>
                            <p class="rebuy-bundle__actions-price-value" v-if="!(bundleOnSale())">
                                <span class="rebuy-money">
                                    <span class="sr-only">Total Price</span>
                                    <span v-html="formatMoney(subtotal())"></span>
                                </span>
                            </p>
                        </div>

                        <div class="rebuy-bundle__actions-buttons">
                            <button
                                class="rebuy-button"
                                v-on:click="addSelectedProductsToCart()"
                                v-bind:disabled="isBundleIncomplete()"
                                type="button">
                                    <span v-html="buttonWidgetLabel()"></span>
                            </button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</script>


    
      
  <!-- BEGIN app block: shopify://apps/redirects-by-shopkit/blocks/redirects/cef9e0c4-4559-4f25-9851-70338bce1224 -->
<script>
    const redirects = [{"from":"https://shop.bodi.com/products/2b-mindset","to":"https://www.bodi.com/us/en/s/nutrition-plan/2b-mindset","id":"45653775"},{"from":"https://shop.bodi.com/products/portion-fix","to":"https://www.bodi.com/us/en/s/nutrition-plan/portion-fix","id":"44886058"},{"from":"https://shop.bodi.com/products/belle-vitale-kit","to":"https://www.bodi.com/us/en/s/fitness/belle-vitale","id":"93813512"},{"from":"https://shop.bodi.com/products/2b-mindset","to":"https://www.bodi.com/us/en/s/nutrition-plan/2b-mindset","id":"16791640"},{"from":"https://shop.bodi.com/products/shaker-cup-free-gift?variant=47683217260761","to":"https://shop.bodi.com/products/shakeology-shaker-cup","id":"64644761"},{"from":"https://shop.bodi.com/products/p90x-subscription?selling_plan=5807931609&variant=47743666028761","to":"https://www.bodi.com/us/en/s/fitness/p90x-generation-next","id":"51046181"},{"from":"https://shop.bodi.com/products/shaun-t-subscription?selling_plan=5785354457&variant=47683215589593","to":"https://www.bodi.com/us/en/s/fitness/shaun-t-subscription","id":"49106168"},{"from":"https://shop.bodi.com/products/10-minute-bodi-subscription?selling_plan=5847744729&variant=47683212837081","to":"https://www.bodi.com/us/en/s/fitness/10-minute-subscription","id":"01721179"},{"from":"https://shop.bodi.com/products/autumn-calabrese-subscription?selling_plan=5785321689&variant=47683213361369","to":"https://www.bodi.com/us/en/s/fitness/autumn-calabrese-subscription","id":"64326959"},{"from":"https://shop.bodi.com/products/shaker-cup-free-gift","to":"https://shop.bodi.com/products/shakeology-shaker-cup","id":"64760407"},{"from":"https://shop.bodi.com/products/free-bodi-subscription","to":"https://shop.bodi.com/products/bodi-subscription","id":"14864279"},{"from":"https://shop.bodi.com/products/portion-fix?variant=47683215163609","to":"https://www.bodi.com/us/en/s/nutrition-plan/portion-fix","id":"25849344"},{"from":"https://shop.bodi.com/products/4-week-gut-protocol?variant=47683213033689","to":"https://www.bodi.com/us/en/s/nutrition-plan/4-week-gut-protocol","id":"14363889"},{"from":"https://shop.bodi.com/products/2b-mindset?variant=47683212968153","to":"https://www.bodi.com/us/en/s/nutrition-plan/2b-mindset","id":"72884450"},{"from":"https://shop.bodi.com/products/belle-vitale-kit?variant=47683213459673","to":"https://www.bodi.com/us/en/s/fitness/belle-vitale","id":"38261171"},{"from":"https://shop.bodi.com/products/p90x-subscription","to":"https://www.bodi.com/us/en/s/fitness/p90x-generation-next","id":"15040904"},{"from":"https://shop.bodi.com/products/10-minute-bodi-subscription","to":"https://www.bodi.com/us/en/s/fitness/10-minute-subscription","id":"58145524"},{"from":"https://shop.bodi.com/products/autumn-calabrese-subscription","to":"https://www.bodi.com/us/en/s/fitness/autumn-calabrese-subscription","id":"10318127"},{"from":"https://shop.bodi.com/products/shaun-t-subscription","to":"https://www.bodi.com/us/en/s/fitness/shaun-t-subscription","id":"50839828"}]
    const foundRedirect = redirects.find(redirect => {
      const isPathName = redirect.from.startsWith("/");
      if (isPathName) {
        return redirect.from === window.location.pathname;
      }
      try {
        return new URL(redirect.from).toString() === new URL(window.location.href).toString();
      } catch (e) {}
      return redirect.from === window.location.href;
    });
    if (foundRedirect) {
      document.querySelector('html').style.display = 'none';
      window.location.href = foundRedirect.to;
    }
  </script><!-- END app block --><!-- BEGIN app block: shopify://apps/intelligems-a-b-testing/blocks/intelligems-script/fa83b64c-0c77-4c0c-b4b2-b94b42f5ef19 --><script>
  window._template = {
    directory: "",
    name: "product",
    suffix: "subscription"
  };
  window.__productIdFromTemplate = 9413928779993;
  window.__plpCollectionIdFromTemplate = null;
  window.igProductData = (function() {
    const data = {};data["9413928779993"] = {
        productId: 9413928779993,
        handle: "bodi-subscription",
        tags: ["CompleteAccess","Membership","Merch_Cart_Unique"],
        collectionIds: [445415194841,445415162073],
        inventory: -33453,
        lowestVariantPrice: 0
      };return data;
  })();
</script>
<script type="module" blocking="render" fetchpriority="high" src="https://cdn.intelligems.io/esm/bb0373470a9f/bundle.js" data-em-disable async></script>


<!-- END app block --><!-- BEGIN app block: shopify://apps/yoast-seo/blocks/metatags/7c777011-bc88-4743-a24e-64336e1e5b46 -->
<!-- This site is optimized with Yoast SEO for Shopify -->
<title>Online Fitness Programs and Fitness App | Streaming Workout Subscription | BODi</title>
<meta name="description" content="Get 225+ online fitness programs with the BODi workout subscription or fitness app for access to expert trainers and streaming classes, plus nutrition guides. Start your fitness journey today!" />
<link rel="canonical" href="https://shop.bodi.com/products/bodi-subscription" />
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
<meta property="og:site_name" content="BODi" />
<meta property="og:url" content="https://shop.bodi.com/products/bodi-subscription" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="product" />
<meta property="og:title" content="Online Fitness Programs and Fitness App | Streaming Workout Subscription | BODi" />
<meta property="og:description" content="Get 225+ online fitness programs with the BODi workout subscription or fitness app for access to expert trainers and streaming classes, plus nutrition guides. Start your fitness journey today!" />
<meta property="og:image" content="https://shop.bodi.com/cdn/shop/files/bodi-membership-programs.png?v=1772479745" />
<meta property="og:image:height" content="930" />
<meta property="og:image:width" content="930" />
<meta property="og:availability" content="backorder" />
<meta property="product:availability" content="available for order" />
<meta property="product:condition" content="new" />
<meta property="product:price:amount" content="179.0" />
<meta property="product:price:currency" content="USD" />
<meta property="product:retailer_item_id" content="BBSHBODI1003" />
<meta name="twitter:card" content="summary_large_image" />
<script type="application/ld+json" id="yoast-schema-graph">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://shop.bodi.com/#/schema/organization/1",
      "url": "https://shop.bodi.com",
      "name": "BODi by Beachbody",
      "logo": {
        "@id": "https://shop.bodi.com/#/schema/ImageObject/38915357442265"
      },
      "image": [
        {
          "@id": "https://shop.bodi.com/#/schema/ImageObject/38915357442265"
        }
      ],
      "sameAs": ["https:\/\/www.instagram.com\/bodi","https:\/\/youtube.com\/beachbody","https:\/\/www.facebook.com\/BODi"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://shop.bodi.com/#/schema/ImageObject/38915357442265",
      "caption": "BODi logo",
      "inLanguage": "en",
      "width": 480,
      "height": 480,
      "url": "https:\/\/shop.bodi.com\/cdn\/shop\/files\/bodilogo.jpg?v=1773075845",
      "contentUrl": "https:\/\/shop.bodi.com\/cdn\/shop\/files\/bodilogo.jpg?v=1773075845"
    },
    {
      "@type": "WebSite",
      "@id": "https://shop.bodi.com/#/schema/website/1",
      "url": "https://shop.bodi.com",
      "name": "BODi by Beachbody",
      "potentialAction": {
        "@type": "SearchAction",
        "target": "https://shop.bodi.com/search?q={search_term_string}",
        "query-input": "required name=search_term_string"
      },
      "publisher": {
        "@id": "https://shop.bodi.com/#/schema/organization/1"
      },
      "inLanguage": "en"
    },
    {
      "@type": "ItemPage",
      "@id": "https:\/\/shop.bodi.com\/products\/bodi-subscription",
      "name": "Online Fitness Programs and Fitness App | Streaming Workout Subscription | BODi",
      "description": "Get 225+ online fitness programs with the BODi workout subscription or fitness app for access to expert trainers and streaming classes, plus nutrition guides. Start your fitness journey today!",
      "datePublished": "2025-12-02T08:24:24-08:00",
      "breadcrumb": {
        "@id": "https:\/\/shop.bodi.com\/products\/bodi-subscription\/#\/schema\/breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://shop.bodi.com/#/schema/ImageObject/38840057266393"
      },
      "image": [{
        "@id": "https://shop.bodi.com/#/schema/ImageObject/38840057266393"
      }],
      "isPartOf": {
        "@id": "https://shop.bodi.com/#/schema/website/1"
      },
      "url": "https:\/\/shop.bodi.com\/products\/bodi-subscription"
    },
    {
      "@type": "ImageObject",
      "@id": "https://shop.bodi.com/#/schema/ImageObject/38840057266393",
      "caption": "BODi programs",
      "inLanguage": "en",
      "width": 930,
      "height": 930,
      "url": "https:\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745",
      "contentUrl": "https:\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https:\/\/shop.bodi.com\/products\/bodi-subscription\/#\/schema\/breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "name": "BODi",
          "item": "https:\/\/shop.bodi.com",
          "position": 1
        },
        {
          "@type": "ListItem",
          "name": "The BODi Subscription",
          "position": 2
        }
      ]
    }

  ]}
</script>
<!--/ Yoast SEO -->
<!-- END app block --><!-- BEGIN app block: shopify://apps/hreflang-manager/blocks/gwa-hreflang/35dc0b05-d599-4c8e-8584-8cd17768854a --><!-- BEGIN app snippet: gwa-hreflang-product --><link rel="alternate" hreflang="en-GB" href="https://shop-gb.bodi.com/products/bodi-subscription"><link rel="alternate" hreflang="en-CA" href="https://shop-ca.bodi.com/products/bodi-subscription"><link rel="alternate" hreflang="fr-CA" href="https://shop-ca.bodi.com/fr/products/bodi-subscription"><link rel="alternate" hreflang="x-default" href="https://shop.bodi.com/products/bodi-subscription"><link rel="alternate" hreflang="en-US" href="https://shop.bodi.com/products/bodi-subscription"><!-- END app snippet --><!-- END app block --><!-- BEGIN app block: shopify://apps/tt-breadcrumbs-seo-schema/blocks/ttSchema/dda6b26d-4f1a-43c6-a94b-6443ed0f750b -->


<!-- BEGIN app snippet: remove-script --><!-- END app snippet -->


    <!-- BEGIN app snippet: carousel -->

<!-- END app snippet --><!-- END app block --><script src="https://cdn.shopify.com/extensions/019ea7e1-d8f8-7119-93e6-d25ba3a5ec66/rebuy-personalization-engine-351/assets/rebuy-extensions.js" type="text/javascript" defer="defer"></script>
<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
<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: 75560616153,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>
<script>
  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
</script>
<script id="web-pixels-manager-setup">(function(){var wpmLoader=function(){"use strict";return function(e,d,r,n){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};if(!Boolean(null==(i=null==(a=window.Shopify)?void 0:a.analytics)?void 0:i.replayQueue)){var a,i;window.Shopify=window.Shopify||{};var t=window.Shopify;t.analytics=t.analytics||{};var s=t.analytics;s.replayQueue=[],s.publish=function(e,d,r){return s.replayQueue.push([e,d,r]),!0};try{self.performance.mark("wpm:start")}catch(e){}var l,u,c,m,p,f,h,g,y,w,v,b,S,P=(u=(l={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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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:?[ /-](13[3-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(13[5-9]|1[4-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(13[3-9]|1[4-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,c=l.legacy,(m=navigator.userAgent).match(u)?"modern":m.match(c)?"legacy":"unknown"),C="modern"===P?"modern":"legacy",_=(null!=n?n:{modern:"",legacy:""})[C],O=[(p={baseUrl:d,hashVersion:r,buildTarget:C}).baseUrl,"/wpm","/b",p.hashVersion,"modern"===p.buildTarget?"m":"l",".js"].join(""),U=(f={version:r,bundleTarget:P,surface:e.surface,pageUrl:self.location.href,monorailEndpoint:e.monorailEndpoint},h=f.version,g=f.bundleTarget,y=f.surface,w=f.pageUrl,v=f.monorailEndpoint,{emit:function(e){var d=e.status,r=e.errorMsg,n=(new Date).getTime(),o=JSON.stringify({metadata:{event_sent_at_ms:n},events:[{schema_id:"web_pixels_manager_load/3.1",payload:{version:h,bundle_target:g,page_url:w,status:d,surface:y,error_msg:r},metadata:{event_created_at_ms:n}}]});if(!v)return console&&console.warn&&console.warn("[Web Pixels Manager] No Monorail endpoint provided, skipping logging."),!1;try{return self.navigator.sendBeacon.bind(self.navigator)(v,o)}catch(e){}var a=new XMLHttpRequest;try{return a.open("POST",v,!0),a.setRequestHeader("Content-Type","text/plain"),a.send(o),!0}catch(e){return console&&console.warn&&console.warn("[Web Pixels Manager] Got an unhandled error while logging to Monorail."),!1}}});try{o.browserTarget=P,function(e){var d=e.src,r=e.async,n=void 0===r||r,o=e.onload,a=e.onerror,i=e.sri,t=e.scriptDataAttributes,s=void 0===t?{}:t,l=document.createElement("script"),u=document.querySelector("head"),c=document.querySelector("body");if(l.async=n,l.src=d,i&&(l.integrity=i,l.crossOrigin="anonymous"),s)for(var m in s)if(Object.prototype.hasOwnProperty.call(s,m))try{l.dataset[m]=s[m]}catch(e){}if(o&&l.addEventListener("load",o),a&&l.addEventListener("error",a),u)u.appendChild(l);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(l)}}({src:O,async:!0,onload:function(){if(!function(){var e,d;return Boolean(null==(d=null==(e=window.Shopify)?void 0:e.analytics)?void 0:d.initialized)}()){var d=window.webPixelsManager.init(e)||void 0;if(d){var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var r=e[0],n=e[1],o=e[2];d.publishCustomEvent(r,n,o)}),r.replayQueue=[],r.publish=d.publishCustomEvent,r.visitor=d.visitor,r.initialized=!0}}},onerror:function(){return U.emit({status:"failed",errorMsg:"".concat(O," has failed to load")})},sri:(b=_,S=/^sha384-[A-Za-z0-9+/=]+$/,"string"==typeof b&&S.test(b)?_:""),scriptDataAttributes:o}),U.emit({status:"loading"})}catch(e){U.emit({status:"failed",errorMsg:(null==e?void 0:e.message)||"Unknown error"})}}}}();wpmLoader({shopId: 75560616153,storefrontBaseUrl: "https://shop.bodi.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://monorail-edge.shopifysvc.com/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["2dca8a86","d5bdd5d0","3209b71c","5acaffe6","86d76263","3b3c7daf","6faea013"],webPixelsConfigList: [{"id":"2228879577","configuration":"{\"campaignID\":\"27336\",\"externalExecutionURL\":\"https:\/\/engine.saasler.com\/api\/v1\/webhook_executions\/ffabc6660687cc707bb361bf386337d9\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"ff1cb5adf8c66f15aefd474481ee1647","type":"APP","apiClientId":3546795,"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":"2206826713","configuration":"{\"shopId\":\"xragki-mv.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"31536d5a2ef62c1887054e49fd58dba0","type":"APP","apiClientId":4845829,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"2079359193","configuration":"{\"env\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"e8e6997ff18eda78e97bab9721f13a5a","type":"APP","apiClientId":3977633,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1838383321","configuration":"{\"accountID\":\"7370993\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"28ab17b6593bd2b9ba565197450f444f","type":"APP","apiClientId":2603379,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1773175001","configuration":"{\"store_id\":\"216182\",\"environment\":\"prod\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c8753c9f7c80c1a1c22d49b41efcf0a4","type":"APP","apiClientId":294517,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"131432665","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"checkout-clear-tracking-codes"},{"id":"131465433","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"7","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"checkout-analytics"},{"id":"133300441","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"3","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"google-tag-manager"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0460","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0460","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"BODi","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"xragki-mv.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/shop.bodi.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[{"price":{"amount":179.0,"currencyCode":"USD"},"product":{"title":"The BODi Subscription","vendor":"bodi-us-prod","id":"9413928779993","untranslatedTitle":"The BODi Subscription","url":"\/products\/bodi-subscription","type":"Digital"},"id":"47683217817817","image":{"src":"\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745"},"sku":"BBSHBODI1003","title":"ANNUAL","untranslatedTitle":"ANNUAL"},{"price":{"amount":0.0,"currencyCode":"USD"},"product":{"title":"The BODi Subscription","vendor":"bodi-us-prod","id":"9413928779993","untranslatedTitle":"The BODi Subscription","url":"\/products\/bodi-subscription","type":"Digital"},"id":"47683217850585","image":{"src":"\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745"},"sku":"BBSHBODI1006","title":"MONTHLY","untranslatedTitle":"MONTHLY"}],"products":null,"purchasingCompany":null,"page":null},},"https://shop.bodi.com/cdn","a9664f44w6a62cec8p04af10e4mb91e3447",{"modern":"","legacy":""},{"trekkieShim":true,"apiClientId":"580111","pageType":"product","resourceId":"9413928779993","shopId":"75560616153","storefrontBaseUrl":"https:\/\/shop.bodi.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"2dca8a86\", \"d5bdd5d0\", \"3209b71c\", \"5acaffe6\", \"86d76263\", \"3b3c7daf\", \"6faea013\"]","isMerchantRequest":"false","hashVersion":"a9664f44w6a62cec8p04af10e4mb91e3447","publish":"custom","events":"[[\"page_viewed\",{}],[\"product_viewed\",{\"productVariant\":{\"price\":{\"amount\":179.0,\"currencyCode\":\"USD\"},\"product\":{\"title\":\"The BODi Subscription\",\"vendor\":\"bodi-us-prod\",\"id\":\"9413928779993\",\"untranslatedTitle\":\"The BODi Subscription\",\"url\":\"\/products\/bodi-subscription\",\"type\":\"Digital\"},\"id\":\"47683217817817\",\"image\":{\"src\":\"\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745\"},\"sku\":\"BBSHBODI1003\",\"title\":\"ANNUAL\",\"untranslatedTitle\":\"ANNUAL\"}}]]"});})();</script><script>
  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
  window.ShopifyAnalytics.meta.currency = 'USD';
  var meta = {"product":{"id":9413928779993,"gid":"gid:\/\/shopify\/Product\/9413928779993","vendor":"bodi-us-prod","type":"Digital","handle":"bodi-subscription","variants":[{"id":47683217817817,"price":17900,"name":"The BODi Subscription - ANNUAL","public_title":"ANNUAL","sku":"BBSHBODI1003"},{"id":47683217850585,"price":0,"name":"The BODi Subscription - MONTHLY","public_title":"MONTHLY","sku":"BBSHBODI1006"}],"remote":false},"page":{"pageType":"product","resourceType":"product","resourceId":9413928779993,"requestId":"f3c7a9f6-fcb7-4f18-b407-c97c4deb6a8d-1780979683"}};
  for (var attr in meta) {
    window.ShopifyAnalytics.meta[attr] = meta[attr];
  }
</script>
<script class="analytics">
  (function () {
    var customDocumentWrite = function(content) {
      var jquery = null;

      if (window.jQuery) {
        jquery = window.jQuery;
      } else if (window.Checkout && window.Checkout.$) {
        jquery = window.Checkout.$;
      }

      if (jquery) {
        jquery('body').append(content);
      }
    };

    var hasLoggedConversion = function(token) {
      if (token) {
        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
      }
      return false;
    }

    var setCookieIfConversion = function(token) {
      if (token) {
        var twoMonthsFromNow = new Date(Date.now());
        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);

        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
      }
    }

    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
    if (trekkie.integrations) {
      return;
    }
    trekkie.methods = [
      'identify',
      'page',
      'ready',
      'track',
      'trackForm',
      'trackLink'
    ];
    trekkie.factory = function(method) {
      return function() {
        var args = Array.prototype.slice.call(arguments);
        args.unshift(method);
        trekkie.push(args);
        if (window.__TREKKIE_SHIM_QUEUE && (method == 'track' || method == 'page')) {
          try {
            window.__TREKKIE_SHIM_QUEUE.push({
              from: 'trekkie-stub',
              method: method,
              args: args.slice(1)
            });
          } catch (e) {
            // no-op
          }
        }
        return trekkie;
      };
    };
    for (var i = 0; i < trekkie.methods.length; i++) {
      var key = trekkie.methods[i];
      trekkie[key] = trekkie.factory(key);
    }
    trekkie.load = function(config) {
      trekkie.config = config || {};
      trekkie.config.initialDocumentCookie = document.cookie;
      var first = document.getElementsByTagName('script')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.onerror = function(e) {
  var scriptFallback = document.createElement('script');
  scriptFallback.type = 'text/javascript';
  scriptFallback.onerror = function(error) {
          var Monorail = {
      produce: function produce(monorailDomain, schemaId, payload) {
        var currentMs = new Date().getTime();
        var event = {
          schema_id: schemaId,
          payload: payload,
          metadata: {
            event_created_at_ms: currentMs,
            event_sent_at_ms: currentMs
          }
        };
        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
      },
      sendRequest: function sendRequest(endpointUrl, payload) {
        // Try the sendBeacon API
        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
          var blobData = new window.Blob([payload], {
            type: 'text/plain'
          });

          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
            return true;
          } // sendBeacon was not successful

        } // XHR beacon

        var xhr = new XMLHttpRequest();

        try {
          xhr.open('POST', endpointUrl);
          xhr.setRequestHeader('Content-Type', 'text/plain');
          xhr.send(payload);
        } catch (e) {
          console.log(e);
        }

        return false;
      },
      isIos12: function isIos12() {
        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
      }
    };
    Monorail.produce('monorail-edge.shopifysvc.com',
      'trekkie_storefront_load_errors/1.1',
      {shop_id: 75560616153,
      theme_id: 157605626073,
      app_name: "storefront",
      context_url: window.location.href,
      source_url: "//shop.bodi.com/cdn/s/trekkie.storefront.f7140b8b25ae1195cf346a36a85e3e4bcf46adb3.min.js"});

  };
  scriptFallback.async = true;
  scriptFallback.src = '//shop.bodi.com/cdn/s/trekkie.storefront.f7140b8b25ae1195cf346a36a85e3e4bcf46adb3.min.js';
  first.parentNode.insertBefore(scriptFallback, first);
};
script.async = true;
script.src = '//shop.bodi.com/cdn/s/trekkie.storefront.f7140b8b25ae1195cf346a36a85e3e4bcf46adb3.min.js';
first.parentNode.insertBefore(script, first);

    };
    trekkie.load(
      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":75560616153,"isMerchantRequest":null,"themeId":157605626073,"themeCityHash":"12702875418755535179","contentLanguage":"en","currency":"USD","eventMetadataId":"d638be06-7680-4ba3-85db-f5b1f95c27b0"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["b5387b81","d5bdd5d0"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}}
    );

    var loaded = false;
    trekkie.ready(function() {
      if (loaded) return;
      loaded = true;

      window.ShopifyAnalytics.lib = window.trekkie;

      var originalDocumentWrite = document.write;
      document.write = customDocumentWrite;
      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
      document.write = originalDocumentWrite;

      window.ShopifyAnalytics.lib.page(null,{"pageType":"product","resourceType":"product","resourceId":9413928779993,"requestId":"f3c7a9f6-fcb7-4f18-b407-c97c4deb6a8d-1780979683","shopifyEmitted":true});

      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
      var token = match? match[1]: undefined;
      if (!hasLoggedConversion(token)) {
        setCookieIfConversion(token);
        window.ShopifyAnalytics.lib.track("Viewed Product",{"currency":"USD","variantId":47683217817817,"productId":9413928779993,"productGid":"gid:\/\/shopify\/Product\/9413928779993","name":"The BODi Subscription - ANNUAL","price":"179.00","sku":"BBSHBODI1003","brand":"bodi-us-prod","variant":"ANNUAL","category":"Digital","nonInteraction":true,"remote":false},undefined,undefined,{"shopifyEmitted":true});
      window.ShopifyAnalytics.lib.track("monorail:\/\/trekkie_storefront_viewed_product\/1.1",{"currency":"USD","variantId":47683217817817,"productId":9413928779993,"productGid":"gid:\/\/shopify\/Product\/9413928779993","name":"The BODi Subscription - ANNUAL","price":"179.00","sku":"BBSHBODI1003","brand":"bodi-us-prod","variant":"ANNUAL","category":"Digital","nonInteraction":true,"remote":false,"referer":"https:\/\/shop.bodi.com\/products\/bodi-subscription"});
      }
    });

    var eventsListenerScript = document.createElement('script');
    eventsListenerScript.async = true;
    eventsListenerScript.src = "//shop.bodi.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
})();</script>
<script
  defer
  src="https://shop.bodi.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.5.0.min.js"
  data-application="storefront-renderer"
  data-shop-id="75560616153"
  data-render-region="gcp-us-central1"
  data-page-type="product"
  data-theme-instance-id="157605626073"
  data-theme-name="Horizon"
  data-theme-version="1.6.0"
  data-monorail-region="shop_domain"
  data-resource-timing-sampling-rate="10"
  data-shs="true"
  data-shs-beacon="true"
  data-shs-export-with-fetch="true"
  data-shs-logs-sample-rate="1"
  data-shs-beacon-endpoint="https://shop.bodi.com/api/collect"
></script>
</head>

  <body class="page-width-narrow card-hover-effect-lift">
    <a
  class="skip-to-content-link button-secondary"
  href="#MainContent"
>
  Skip to content
</a>


    

    
      <div id="header-group">
        <!-- BEGIN sections: header-group -->
<div id="shopify-section-sections--21336457412825__top_banner_n6iTG7" class="shopify-section shopify-section-group-header-group"><section
  class="top-banner"
  style="
    --top-banner-height: 40px;
    --top-banner-text-color: ;
    --top-banner-bg-color: #99f646;
  "
>
  
    <a href="/products/bodi-subscription" class="top-banner__link-wrapper">
  

  <div class="top-banner__inner">
    

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: center; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  





   
  <rte-formatter 
  class="  spacing-style text-block text-block--AbEdsRXZwbDdzY1FhW__text_tjhr9V paragraph
     rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-none);
    
    
  "

  
>
    
     
    <p><strong>Exclusive Booty Bundle! FREE </strong>Shakeology + Power Loops with Annual Subscription** <span style="text-decoration:underline"><strong>Get Started</strong></span></p>
     
  </rte-formatter>
  

<style>
  
</style>





</div>
</div>
<style>
  
</style>





  </div>

  
    </a>
  
</section>





<script>
  
  (function() {
    const topBanner = document.querySelector('.top-banner');
    if (!topBanner) return;

    topBanner.addEventListener('click', (e) => {
      const link = e.target.closest('a');
      if (link && link.href && window.BODi?.trackSelectCta) {
        window.BODi.trackSelectCta('select pencil banner cta', link.href);
      }
    });
  })();
</script>


</div><div id="shopify-section-sections--21336457412825__top_banner_Qr6zVC" class="shopify-section shopify-section-group-header-group"></div><div id="shopify-section-sections--21336457412825__subscriptions_navigation_9KarKP" class="shopify-section shopify-section-group-header-group section-subscriptions-navigation">
</div><div id="shopify-section-sections--21336457412825__bodi_navigation_v2_hRCKhm" class="shopify-section shopify-section-group-header-group section-bodi-navigation">
<link href="//shop.bodi.com/cdn/shop/t/2/assets/bodi-navigation-v2.css?v=49529977608150036181776873391" rel="stylesheet" type="text/css" media="all" />
<!-- Desktop Navigation -->
<div class="bodi-nav-desktop">
  
<div class="bodi-nav__container">
  <nav class="bodi-nav__bar">
    <div class="bodi-nav__bar-wrapper">
      <!-- Logo -->
      <a
        href="/"
        class="bodi-nav__logo-container"
        aria-label="BODI Home"
      >
        <img
          src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-bodi-logo.svg?v=59811868436140331341776873392"
          alt="BODI Logo"
          class="bodi-nav__logo"
          width="120"
          height="40"
        >
      </a>

      <!-- Left Navigation Links -->
      <div class="bodi-nav__links"><a
            href="/collections"
            class="bodi-nav__link"
            data-menu-id="shop"
            data-is-active="false"
            
          >
            Shop
          </a><a
            href="/products/bodi-subscription"
            class="bodi-nav__link bodi-nav__link--active"
            data-menu-id="view-plans"
            data-is-active="false"
            
          >
            View Plans
          </a><a
            href="https://bodi.com/us/en/experience"
            class="bodi-nav__link"
            data-menu-id="experience"
            data-is-active="false"
            
          >
            The BODi Experience
          </a></div>

      <!-- Right Side Actions -->
      <div class="bodi-nav__actions">
        
        
          <button
            class="bodi-nav__cart-container bodi-nav__cart-button"
            aria-label="Open cart Total items in cart: 0"
          >
            <div class="bodi-nav__cart-icon">
              <img
                src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-cart-icon.svg?v=79287340280660578521771353645"
                alt=""
                class="bodi-nav__cart-img"
                width="23"
                height="18.4"
              >
              <div class="bodi-nav__badge bodi-nav__badge--hidden">
                <img
                  src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-badge-circle.svg?v=86924748565645409331771353644"
                  alt=""
                  class="bodi-nav__badge-circle"
                  width="20"
                  height="20"
                >
                <span class="bodi-nav__badge-count">0</span>
              </div>
            </div>
          </button>
        

        

        
          <div class="bodi-nav__button-group"><a
              href="https://www.bodi.com/login?authLocale=en-US"
              class="bodi-nav__btn bodi-nav__btn--login"
              data-bodi-auth-link
            >
              Login
            </a>
          </div>
        

          <a href="/products/bodi-subscription" class="bodi-nav__btn bodi-nav__btn--join">
            Join BODi
          </a>
        
      </div>
    </div>
  </nav>

  <!-- Categories Subnav --><div class="bodi-nav__submenu-wrapper bodi-nav__submenu-wrapper--active">
        <div>
          <div class="bodi-nav__category-nav">
            <div class="bodi-nav__category-tabs"><a
                    href="/products/bodi-subscription"
                    class="bodi-nav__category-tab bodi-nav__category-tab--link"
                  >
                    <span>Subscription Plans</span>
                  </a><div
                    class="bodi-nav__category-tab"
                    data-category="supplements"
                    data-menu-type="mini"
                  >
                  
                    <span class="bodi-nav__category-tab-label">
                      <span>Supplements</span>
                    </span>
                    <img
                      src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-chevron-icon.svg?v=143108315141970138861771353645"
                      alt=""
                      class="bodi-nav__chevron-icon"
                      width="12"
                      height="12"
                    ><div class="bodi-nav__mini-menu" data-mini-menu="supplements">
                        <div class="bodi-nav__mini-menu-content"><a
                              href="/collections/supplements"
                              class="bodi-nav__mini-menu-item bodi-nav__mini-menu-item--cta"
                            >Shop All Supplements</a><a
                              href="/pages/about-p90x-sport-performance-supplements"
                              class="bodi-nav__mini-menu-item"
                            >The P90X Supplement System - <span class="violator">NEW!</span></a><a
                              href="/pages/about-shakeology"
                              class="bodi-nav__mini-menu-item"
                            >Shakeology</a><a
                              href="/collections/supplements/targetedsupplements"
                              class="bodi-nav__mini-menu-item"
                            >Targeted Supplements</a><a
                              href="/collections/supplements/performancesupplements"
                              class="bodi-nav__mini-menu-item"
                            >Performance Supplements</a><a
                              href="/collections/supplements/cleanses"
                              class="bodi-nav__mini-menu-item"
                            >Cleanses </a></div>
                      </div></div><a
                    href="/collections/fitness-programs-plans"
                    class="bodi-nav__category-tab bodi-nav__category-tab--link"
                  >
                    <span>Fitness Programs</span>
                  </a><div
                    class="bodi-nav__category-tab"
                    data-category="nutrition-plans"
                    data-menu-type="mini"
                  >
                  
                    <span class="bodi-nav__category-tab-label">
                      <span>Nutrition Plans</span>
                    </span>
                    <img
                      src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-chevron-icon.svg?v=143108315141970138861771353645"
                      alt=""
                      class="bodi-nav__chevron-icon"
                      width="12"
                      height="12"
                    ><div class="bodi-nav__mini-menu" data-mini-menu="nutrition-plans">
                        <div class="bodi-nav__mini-menu-content"><a
                              href="/collections/nutrition-plans"
                              class="bodi-nav__mini-menu-item bodi-nav__mini-menu-item--cta"
                            >Shop All Nutrition Plans</a><a
                              href="/collections/nutrition-guides-tools-recipes"
                              class="bodi-nav__mini-menu-item"
                            >Nutrition Guides and Tools</a></div>
                      </div></div><a
                    href="/collections/exercise-equipment"
                    class="bodi-nav__category-tab bodi-nav__category-tab--link"
                  >
                    <span>Equipment</span>
                  </a></div>
          </div>

          <!-- Mega Menu -->
          <div class="bodi-nav__mega-menu">
            <div class="bodi-nav__mega-menu-content"></div>
          </div>
        </div>
      </div></div>



</div>

<!-- Mobile Navigation -->
<div class="bodi-nav-mobile">
  
<!-- Top Navigation -->
<div class="bodi-nav-mobile__top">
  <div class="bodi-nav-mobile__left" id="bodiNavMobileHamburgerBtnV2">
    <img
      src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-hamburger-icon.svg?v=49414807911316717841771353646"
      alt="Menu"
      class="bodi-nav-mobile__hamburger"
      width="24"
      height="24"
    ></div>
  <a
    href="/"
    class="bodi-nav-mobile__logo-container"
    aria-label="BODI Home"
  >
    <img
      src="//shop.bodi.com/cdn/shop/t/2/assets/bodi-mobile-logo.svg?v=56909822702469700581776873390"
      alt="BODI Logo"
      class="bodi-nav-mobile__logo"
      width="100"
      height="30"
    >
  </a>
  <div class="bodi-nav-mobile__right">
    
    
      <button
        class="bodi-nav-mobile__cart-button"
        aria-label="Open cart Total items in cart: 0"
      >
        <div class="bodi-nav-mobile__cart-icon">
          <img src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-cart-icon.svg?v=79287340280660578521771353644" alt="" class="bodi-nav-mobile__cart-img" width="24" height="24">
          <div class="bodi-nav-mobile__cart-badge bodi-nav-mobile__cart-badge--hidden">
            <img src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-badge-circle.svg?v=86924748565645409331771353644" alt="" class="bodi-nav-mobile__badge-circle" width="18" height="18">
            <span class="bodi-nav-mobile__badge-count">0</span>
          </div>
        </div>
      </button>
    

    
      <button class="bodi-nav-mobile__user-button" onclick="window.BODi.loginDrawer.open()" aria-label="Login or Join BODi">
        <div class="bodi-nav-mobile__user-avatar-container">
          <img src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-user-avatar.svg?v=127170688596119413491771353644" alt="" class="bodi-nav-mobile__user-avatar" width="32" height="32">
        </div>
      </button>
    
  </div>
</div>


<!-- Menu Overlay -->
<div class="bodi-nav-mobile__menu-overlay" id="bodiNavMobileMenuOverlayV2">
  <div class="bodi-nav-mobile__menu-container">

    <!-- ════════════════════════════════════════════════════════
         MAIN MENU — flat list of all tabs
         ════════════════════════════════════════════════════════ -->
    <div class="bodi-nav-mobile__main-menu" id="bodiNavMobileMainMenuV2">
      <div class="bodi-nav-mobile__close-bar">
        <button class="bodi-nav-mobile__close-btn" id="bodiNavMobileCloseBtnV2" aria-label="Close menu">
          <img src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-close-icon.svg?v=38000291282619383831771353645" alt="" class="bodi-nav-mobile__close-icon" width="24" height="24">
        </button>
      </div>

      <div class="bodi-nav-mobile__menu-content">
        <div class="bodi-nav-mobile__tabs-section">
          <div class="bodi-nav-mobile__accordion-items"><!-- Dropdown tab: opens the submenu panel -->
                <button
                  class="bodi-nav-mobile__accordion-item bodi-nav-mobile__accordion-item--dropdown-trigger"
                  data-mobile-dropdown-trigger="menu_item_xYHETG"
                  aria-haspopup="true"
                >
                  <p class="bodi-nav-mobile__accordion-title">Shop</p>
                  <img
                    src="//shop.bodi.com/cdn/shop/t/2/assets/chevron-forward-green.svg?v=115281400437306312711776268628"
                    alt=""
                    class="bodi-nav-mobile__subitem-chevron"
                    width="12"
                    height="12"
                  >
                </button><!-- Regular tab: direct link -->
                <a href="/products/bodi-subscription" class="bodi-nav-mobile__accordion-item bodi-nav-mobile__accordion-item--link">
                  <p class="bodi-nav-mobile__accordion-title">View Plans</p>
                </a><!-- Regular tab: direct link -->
                <a href="https://bodi.com/us/en/experience" class="bodi-nav-mobile__accordion-item bodi-nav-mobile__accordion-item--link">
                  <p class="bodi-nav-mobile__accordion-title">The BODi Experience</p>
                </a></div>
        </div>

        <!-- Footer -->
        <div class="bodi-nav-mobile__footer-section">
          <div class="bodi-nav-mobile__footer-content">
            <div class="bodi-nav-mobile__footer-links"><a href="/" class="bodi-nav-mobile__footer-link-item">
                    <span class="bodi-nav-mobile__footer-link-text">Home</span>
                  </a><a href="https://www.bodi.com/us/en/about" class="bodi-nav-mobile__footer-link-item">
                    <span class="bodi-nav-mobile__footer-link-text">About Us</span>
                  </a><a href="https://faq.bodi.com/?_gl=1*3mrztx*_gcl_au*NTUxOTY1MjEyLjE3NzU3NjA2NTg.*FPAU*NDMzODUzMjIwLjE3NzE1MjMwMTg." class="bodi-nav-mobile__footer-link-item">
                    <span class="bodi-nav-mobile__footer-link-text">BODi Support</span>
                  </a></div>
            <div class="bodi-nav-mobile__bottom-content">
              <div class="bodi-nav-mobile__app-badges"><a href="https://apps.apple.com/us/app/bodi-by-beachbody-home-fitness/id1031660123" aria-label="Download on the App Store">
                    <img src="//shop.bodi.com/cdn/shop/t/2/assets/app-store-badge.svg?v=120792209405859649841771353645" alt="Download on the App Store" class="bodi-nav-mobile__app-badge" width="120" height="40">
                  </a><a href="https://play.google.com/store/apps/details?id=com.beachbody.bod" aria-label="Get it on Google Play">
                    <img src="//shop.bodi.com/cdn/shop/t/2/assets/google-play-badge.svg?v=177291720263664549321771353646" alt="Get it on Google Play" class="bodi-nav-mobile__app-badge" width="135" height="40">
                  </a></div>
              <div class="bodi-nav-mobile__social-media"><a href="https://instagram.com/bodi" aria-label="Follow us on Instagram" class="bodi-nav-mobile__social-link"><svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 0C27.941 0 36 8.059 36 18C36 27.941 27.941 36 18 36C8.059 36 0 27.941 0 18C0 8.059 8.059 0 18 0ZM19.344 7.2H16.654C15.491 7.202 14.918 7.21 14.384 7.228L14.118 7.238L13.546 7.263C12.396 7.316 11.611 7.498 10.924 7.765C10.214 8.041 9.611 8.41 9.011 9.011C8.411 9.611 8.041 10.214 7.765 10.924C7.498 11.611 7.315 12.396 7.263 13.546L7.238 14.118L7.228 14.384C7.211 14.918 7.202 15.491 7.199 16.654V19.344C7.204 21.088 7.22 21.505 7.263 22.452C7.316 23.602 7.498 24.386 7.765 25.073C8.041 25.783 8.41 26.386 9.011 26.986C9.611 27.586 10.214 27.956 10.924 28.232C11.611 28.499 12.396 28.682 13.546 28.734C13.779 28.744 13.981 28.754 14.178 28.761L14.414 28.77C15.009 28.79 15.666 28.797 17.14 28.799H19.141C20.328 28.796 20.938 28.789 21.463 28.774L21.701 28.766C21.937 28.757 22.171 28.747 22.451 28.734C23.601 28.682 24.386 28.499 25.073 28.232C25.783 27.956 26.386 27.587 26.986 26.986C27.586 26.386 27.956 25.784 28.232 25.073C28.499 24.386 28.682 23.601 28.734 22.452C28.747 22.172 28.757 21.937 28.766 21.702L28.774 21.463C28.79 20.897 28.797 20.233 28.799 18.857V16.856C28.796 15.578 28.789 14.969 28.769 14.414L28.761 14.178C28.754 13.981 28.745 13.779 28.734 13.546C28.682 12.396 28.499 11.611 28.232 10.924C27.956 10.214 27.587 9.611 26.986 9.011C26.386 8.411 25.784 8.041 25.073 7.765C24.386 7.498 23.601 7.315 22.452 7.263C21.505 7.22 21.088 7.204 19.344 7.2ZM19.118 9.145C20.448 9.147 21.034 9.155 21.606 9.175L21.81 9.183L22.363 9.207C23.416 9.255 23.988 9.431 24.369 9.579C24.873 9.775 25.232 10.009 25.61 10.387C25.988 10.765 26.222 11.125 26.418 11.629C26.566 12.009 26.742 12.581 26.79 13.634C26.8 13.838 26.807 14.016 26.814 14.187L26.822 14.391C26.843 15.001 26.851 15.627 26.852 17.155V19.118C26.85 20.448 26.842 21.034 26.822 21.606L26.814 21.81L26.79 22.363C26.742 23.416 26.566 23.988 26.418 24.369C26.222 24.873 25.988 25.232 25.61 25.61C25.232 25.988 24.873 26.222 24.369 26.418C23.988 26.566 23.416 26.742 22.363 26.79C22.16 26.8 21.982 26.807 21.81 26.814L21.606 26.822C20.996 26.843 20.371 26.851 18.842 26.852H16.88C15.55 26.85 14.964 26.842 14.392 26.822L14.188 26.814L13.635 26.79C12.582 26.742 12.01 26.566 11.63 26.418C11.126 26.222 10.766 25.988 10.388 25.61C10.01 25.232 9.776 24.873 9.58 24.369C9.432 23.988 9.256 23.416 9.208 22.363C9.198 22.16 9.191 21.982 9.184 21.81L9.176 21.606C9.155 20.996 9.147 20.371 9.146 18.842V16.88C9.148 15.55 9.156 14.964 9.176 14.392L9.184 14.188L9.208 13.635C9.256 12.582 9.432 12.01 9.58 11.63C9.776 11.126 10.01 10.766 10.388 10.388C10.766 10.01 11.126 9.776 11.63 9.58C12.01 9.432 12.582 9.256 13.635 9.208C13.839 9.198 14.017 9.191 14.188 9.184L14.392 9.176C15.002 9.155 15.628 9.147 17.156 9.146L19.118 9.145ZM17.998 12.452C14.936 12.452 12.452 14.936 12.452 17.999C12.452 21.062 14.936 23.545 17.999 23.545C21.062 23.545 23.545 21.062 23.545 17.999C23.545 14.936 21.062 12.452 17.999 12.452H17.998ZM17.998 14.398C19.987 14.398 21.598 16.01 21.598 17.998C21.598 19.987 19.987 21.598 17.998 21.598C16.01 21.598 14.398 19.987 14.398 17.998C14.398 16.01 16.01 14.398 17.998 14.398ZM23.764 10.938C23.048 10.938 22.468 11.518 22.468 12.233C22.468 12.949 23.048 13.529 23.764 13.529C24.48 13.529 25.06 12.949 25.06 12.233C25.06 11.518 24.48 10.938 23.764 10.938Z" fill="#161819"/>
</svg>
</a><a href="https://facebook.com/bodi" aria-label="Follow us on Facebook" class="bodi-nav-mobile__social-link"><svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M36 18.1097C36 8.10709 27.941 0 18 0C8.059 0 0 8.10709 0 18.1097C0 27.1484 6.582 34.6398 15.188 35.998V23.3444H10.618V18.1097H15.188V14.1205C15.188 9.58102 17.875 7.07484 21.986 7.07484C23.956 7.07484 26.016 7.42798 26.016 7.42798V11.885H23.746C21.51 11.885 20.813 13.2804 20.813 14.7121V18.1097H25.805L25.007 23.3444H20.812V36C29.419 34.6398 36 27.1484 36 18.1087" fill="#161819"/>
</svg>
</a><a href="https://youtube.com/@bodi" aria-label="Follow us on YouTube" class="bodi-nav-mobile__social-link"><svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 0C27.941 0 36 8.059 36 18C36 27.941 27.941 36 18 36C8.059 36 0 27.941 0 18C0 8.059 8.059 0 18 0ZM18.35 9.922H17.65C17.015 9.926 15.6 9.938 14.079 9.985L13.539 10.003C11.729 10.069 9.882 10.188 9.092 10.401C8.111 10.665 7.338 11.442 7.076 12.43C6.672 13.948 6.61 16.867 6.601 17.716V18.191C6.611 19.041 6.671 21.959 7.076 23.477C7.338 24.465 8.111 25.242 9.092 25.507C10.632 25.922 16.194 25.977 17.649 25.985H18.35C19.023 25.981 20.569 25.968 22.19 25.913L22.733 25.893C24.453 25.826 26.158 25.709 26.908 25.506C27.889 25.242 28.662 24.465 28.924 23.477C29.357 21.85 29.397 18.617 29.4 18.042V17.865C29.397 17.291 29.357 14.057 28.924 12.43C28.662 11.442 27.889 10.665 26.908 10.4C25.368 9.985 19.805 9.93 18.35 9.922ZM15.668 14.563L21.628 17.953L15.668 21.343V14.563Z" fill="#161819"/>
</svg>
</a></div>
              <div class="bodi-nav-mobile__language-selector">
                <div
  class="locale-switcher locale-switcher--mobile "
  data-current-locale-base-url="https://shop.bodi.com"
>
  <button
    class="locale-switcher__button"
    type="button"
    aria-expanded="false"
    aria-haspopup="true"
    data-locale-switcher-button
  ><img
        src="//shop.bodi.com/cdn/shop/t/2/assets/us_flag.svg?v=146820449465311856841771353646"
        alt="U.S. flag"
        class="locale-switcher__flag"
        width="20"
        height="20"
      >
      <span class="locale-switcher__label-wrapper">
        <span class="locale-switcher__label locale-switcher__label--normal">U.S. English</span>
        <span class="locale-switcher__label locale-switcher__label--bold">U.S. English</span>
      </span><span class="locale-switcher__chevron">
      <svg
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 20 20"
        fill="currentColor"
        aria-hidden="true"
      >
        <path
          fill-rule="evenodd"
          d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
          clip-rule="evenodd"
        />
      </svg>
    </span>
  </button>

  <div
    class="locale-switcher__dropdown closed"
    role="menu"
    data-locale-switcher-dropdown
  >
    <div class="locale-switcher__dropdown-content"><a
          href="https://shop-ca.bodi.com"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="en_CA"
          data-locale-base-url="https://shop-ca.bodi.com"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/ca_flag.svg?v=140489053438850075871771353646"
            alt="Canada flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">CAN English</span>
        </a><a
          href="https://shop-ca.bodi.com/fr"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="fr_CA"
          data-locale-base-url="https://shop-ca.bodi.com/fr"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/ca_flag.svg?v=140489053438850075871771353646"
            alt="Canada flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">CAN Français</span>
        </a><a
          href="https://shop-gb.bodi.com"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="en_GB"
          data-locale-base-url="https://shop-gb.bodi.com"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/gb_flag.svg?v=184068840994614594711771353645"
            alt="UK flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">UK English</span>
        </a></div>
  </div>
</div>



              </div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <!-- ════════════════════════════════════════════════════════
         SUBMENU PANEL — slides in over the main menu.
         One hidden panel per dropdown tab; JS shows the right one.
         Inside each panel: Shop All + accordion category list.
         ════════════════════════════════════════════════════════ -->
    <div class="bodi-nav-mobile__submenu" id="bodiNavMobileSubmenuV2">
      <div class="bodi-nav-mobile__submenu-header">
        <div class="bodi-nav-mobile__submenu-header-content">
          <button class="bodi-nav-mobile__back-btn" id="bodiNavMobileBackBtnV2" aria-label="Go back">
            <img src="//shop.bodi.com/cdn/shop/t/2/assets/chevron-backward-green.svg?v=64003429246685634761776268627" alt="" class="bodi-nav-mobile__back-icon" width="24" height="24">
          </button>
          <div class="bodi-nav-mobile__submenu-title-container">
            <p class="bodi-nav-mobile__submenu-title" id="bodiNavMobileSubmenuTitleV2"></p>
          </div>
          <button class="bodi-nav-mobile__close-btn" aria-label="Close menu">
            <img src="//shop.bodi.com/cdn/shop/t/2/assets/mobile-close-white-icon.svg?v=107372894147262498891771353645" alt="" class="bodi-nav-mobile__close-icon" width="24" height="24">
          </button>
        </div>
      </div>

      <div class="bodi-nav-mobile__submenu-body" id="bodiNavMobileSubmenuBodyV2"><!-- Panel for dropdown tab: Shop -->
          <div
            class="bodi-nav-mobile__submenu-panel"
            id="submenu-panel-menu_item_xYHETG"
            hidden
          >
            <div class="bodi-nav-mobile__shop-subitems"><a
                  href="/collections"
                  class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--link bodi-nav-mobile__shop-subitem--shop-all"
                >
                  <span class="bodi-nav-mobile__shop-subitem-text">Shop All</span>
                </a><a href="/products/bodi-subscription" class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--link">
                      <span class="bodi-nav-mobile__shop-subitem-text">Subscription Plans</span>
                    </a><button
                      class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--accordion"
                      data-mobile-accordion="supplements"
                      aria-expanded="false"
                      aria-controls="accordion-panel-menu_item_xYHETG-supplements"
                    >
                      <span class="bodi-nav-mobile__shop-subitem-text">Supplements</span>
                      <span class="bodi-nav-mobile__accordion-toggle" aria-hidden="true">+</span>
                    </button>
                    <div
                      class="bodi-nav-mobile__accordion-panel"
                      id="accordion-panel-menu_item_xYHETG-supplements"
                      hidden
                    >
                      <!-- Content injected by JS from pre-rendered template -->
                    </div><a href="/collections/fitness-programs-plans" class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--link">
                      <span class="bodi-nav-mobile__shop-subitem-text">Fitness Programs</span>
                    </a><button
                      class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--accordion"
                      data-mobile-accordion="nutrition-plans"
                      aria-expanded="false"
                      aria-controls="accordion-panel-menu_item_xYHETG-nutrition-plans"
                    >
                      <span class="bodi-nav-mobile__shop-subitem-text">Nutrition Plans</span>
                      <span class="bodi-nav-mobile__accordion-toggle" aria-hidden="true">+</span>
                    </button>
                    <div
                      class="bodi-nav-mobile__accordion-panel"
                      id="accordion-panel-menu_item_xYHETG-nutrition-plans"
                      hidden
                    >
                      <!-- Content injected by JS from pre-rendered template -->
                    </div><a href="/collections/exercise-equipment" class="bodi-nav-mobile__shop-subitem bodi-nav-mobile__shop-subitem--link">
                      <span class="bodi-nav-mobile__shop-subitem-text">Equipment</span>
                    </a></div>
          </div></div>
    </div>

  </div>
</div>


<!-- ════════════════════════════════════════════════════════
     Pre-rendered accordion content templates (hidden, JS reads these)
     ════════════════════════════════════════════════════════ --><script
        type="text/template"
        data-category-content="subscription-plans"
        data-cta-url=""
        data-cta-text=""
      ><div class="bodi-nav-mobile__accordion-panel-items"></div></script><script
        type="text/template"
        data-category-content="supplements"
        data-cta-url=""
        data-cta-text=""
      ><div class="bodi-nav-mobile__accordion-panel-items"><a href="/collections/supplements" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Shop All Supplements</span>
              </a><a href="/pages/about-p90x-sport-performance-supplements" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">The P90X Supplement System - <span class="violator">NEW!</span></span>
              </a><a href="/pages/about-shakeology" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Shakeology</span>
              </a><a href="/collections/supplements/targetedsupplements" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Targeted Supplements</span>
              </a><a href="/collections/supplements/performancesupplements" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Performance Supplements</span>
              </a><a href="/collections/supplements/cleanses" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Cleanses </span>
              </a></div></script><script
        type="text/template"
        data-category-content="fitness-programs"
        data-cta-url=""
        data-cta-text=""
      ><div class="bodi-nav-mobile__accordion-panel-items"></div></script><script
        type="text/template"
        data-category-content="nutrition-plans"
        data-cta-url=""
        data-cta-text=""
      ><div class="bodi-nav-mobile__accordion-panel-items"><a href="/collections/nutrition-plans" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Shop All Nutrition Plans</span>
              </a><a href="/collections/nutrition-guides-tools-recipes" class="bodi-nav-mobile__accordion-panel-link">
                <span class="bodi-nav-mobile__accordion-panel-link-text">Nutrition Guides and Tools</span>
              </a></div></script><script
        type="text/template"
        data-category-content="equipment"
        data-cta-url=""
        data-cta-text=""
      ><div class="bodi-nav-mobile__accordion-panel-items"></div></script>
</div>

<!-- Pass navigation structure to JavaScript -->
<script>
  window.bodiNavStructure = {
    activeTabId: "",
    categories: [{
            id: "subscription-plans",
            name: "Subscription Plans",
            menuType: "mini"
          },
{
            id: "supplements",
            name: "Supplements",
            menuType: "mini"
          },
{
            id: "fitness-programs",
            name: "Fitness Programs",
            menuType: "mini"
          },
{
            id: "nutrition-plans",
            name: "Nutrition Plans",
            menuType: "mini"
          },
{
            id: "equipment",
            name: "Equipment",
            menuType: "mini"
          }
]
  };
</script>

<script src="//shop.bodi.com/cdn/shop/t/2/assets/bodi-navigation-v2.js?v=50864461246443612911776268627" defer></script>

</div><div id="shopify-section-sections--21336457412825__bodi_login_drawer" class="shopify-section shopify-section-group-header-group bodi-login-drawer-section"><div class="login-drawer__backdrop"></div>
<div class="login-drawer">
  <div class="login-drawer__title text-heading-display-3">Login or Join BODi</div>
  <div class="login-drawer__subtitle text-body-base text-bodi-gray-butters">
    Workouts, nutrition, and much more.
  </div>

  <div class="login-drawer__buttons"><a
      class="login-drawer__login-button button"
      href="https://www.bodi.com/login?authLocale=en-US"
      data-bodi-auth-link
    >Login</a>
      <a
        href="https://bodi.com/offers"
        class="login-drawer__join-button button button-primary"
      >Join BODi</a>
    
  </div>

  <div
    role="button"
    class="login-drawer__close-button"
  >
    <svg
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 24 24"
      fill="currentColor"
      aria-hidden="true"
      data-slot="icon"
      class="size-6 stroke-[2px]"
    >
      <path
        fill-rule="evenodd"
        d="M5.47 5.47a.75.75 0 0 1 1.06 0L12 10.94l5.47-5.47a.75.75 0 1 1 1.06 1.06L13.06 12l5.47 5.47a.75.75 0 1 1-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 0 1-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 0 1 0-1.06Z"
        clip-rule="evenodd"
      ></path>
    </svg>
  </div>
</div>





</div><div id="shopify-section-sections--21336457412825__bodi_account_drawer" class="shopify-section shopify-section-group-header-group bodi-account-drawer-section"><div class="bodi-account-drawer__backdrop"></div>
<div class="bodi-account-drawer">
  <div class="bodi-account-drawer__title text-heading-display-3">
    Account &amp; Support
  </div>
  <div class="bodi-account-drawer__subtitle text-body-base text-bodi-gray-butters">
    
    
      Welcome back!
    
  </div>

  <div class="bodi-account-drawer__box">
    <a
      href="https://www.bodi.com/login-bodweb?locale=en_US"
      class="bodi-account-drawer__box-header"
    >
      <div class="bodi-account-drawer__box-thumbnail">
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="48"
          height="48"
          viewBox="0 0 48 48"
          fill="none"
        >
          <g clip-path="url(#clip0_2974_35783)">
            <path
              fill-rule="evenodd"
              clip-rule="evenodd"
              d="M48 14.955C48 14.385 48 13.815 48 13.245C48 12.765 47.985 12.285 47.985 11.805C47.955 10.755 47.895 9.705 47.715 8.67C47.52 7.62 47.22 6.645 46.74 5.685C46.26 4.755 45.645 3.885 44.895 3.15C44.145 2.4 43.29 1.785 42.36 1.305C41.4 0.825 40.425 0.51 39.375 0.33C38.34 0.15 37.29 0.075 36.24 0.06C35.76 0.045 35.28 0.045 34.8 0.045C34.23 0.045 33.66 0.045 33.09 0.045L26.445 0H21.495L14.985 0.03C14.415 0.03 13.845 0.03 13.275 0.03C12.795 0.03 12.315 0.045 11.835 0.045C10.785 0.075 9.735 0.135 8.685 0.315C7.635 0.51 6.66 0.825 5.7 1.305C4.77 1.785 3.915 2.4 3.165 3.15C2.415 3.9 1.8 4.755 1.32 5.685C0.825 6.645 0.525 7.62 0.33 8.67C0.15 9.705 0.09 10.755 0.06 11.805C0.045 12.285 0.03 12.765 0.03 13.245C0.03 13.815 0 14.52 0 15.09V21.51V26.52L0.03 33.075C0.03 33.645 0.03 34.215 0.03 34.785C0.03 35.265 0.045 35.745 0.045 36.225C0.075 37.275 0.135 38.325 0.315 39.36C0.51 40.41 0.81 41.385 1.305 42.345C1.785 43.29 2.4 44.145 3.15 44.88C3.9 45.63 4.755 46.245 5.7 46.725C6.66 47.205 7.635 47.52 8.685 47.715C9.72 47.895 10.785 47.97 11.82 47.985C12.315 47.985 12.795 48 13.275 48C13.845 48 14.415 48 14.985 48H21.54H26.505H33.06C33.63 48 34.2 48 34.77 48C35.25 48 35.73 47.985 36.21 47.985C37.26 47.955 38.31 47.895 39.345 47.715C40.395 47.52 41.37 47.22 42.33 46.725C43.275 46.245 44.13 45.63 44.865 44.88C45.615 44.13 46.23 43.275 46.71 42.345C47.19 41.385 47.505 40.41 47.685 39.36C47.865 38.325 47.94 37.275 47.955 36.225C47.985 35.73 48 35.25 48 34.77C48 34.2 48 33.63 48 33.06C48 33.06 48 26.625 48 26.505V21.495C48 21.405 48 14.955 48 14.955Z"
              fill="#173078"
            />
            <path
              d="M5.12988 20.1899H12.0149C12.8999 20.1899 13.3799 20.2649 13.7699 20.4599C14.3849 20.7749 14.6399 21.2999 14.6399 22.2599C14.6399 23.2499 14.2949 23.7749 13.5749 23.9099C14.6099 24.1049 14.9549 24.5549 14.9549 25.6649C14.9549 26.6249 14.6849 27.2249 14.0699 27.5549C13.7099 27.7349 13.2149 27.8249 12.3299 27.8249H5.12988V20.1899ZM11.2949 23.2349C11.7449 23.2349 11.8949 23.2049 12.0449 23.1449C12.2249 23.0399 12.3449 22.8299 12.3449 22.5749C12.3449 22.2599 12.1949 22.0349 11.9399 21.9449C11.7899 21.8999 11.6699 21.8849 11.2349 21.8849H7.39488V23.2349H11.2949ZM11.5499 26.1149C12.0149 26.1149 12.1049 26.0999 12.2549 26.0549C12.4799 25.9799 12.6149 25.7399 12.6149 25.4249C12.6149 25.0949 12.4799 24.8699 12.2249 24.7799C12.0899 24.7349 11.9999 24.7199 11.4749 24.7199H7.39488V26.1149H11.5499Z"
              fill="white"
            />
            <path
              d="M24.8704 20.22C26.0554 20.445 26.6254 21.045 26.7754 22.26C26.8204 22.575 26.8504 23.19 26.8504 24.12C26.8504 25.965 26.6554 26.7 26.0104 27.24C25.5454 27.63 24.9154 27.81 23.8054 27.855C23.4004 27.885 22.3804 27.885 21.6304 27.885C19.8154 27.885 18.8854 27.855 18.4204 27.765C17.5804 27.615 17.0854 27.3 16.8004 26.73C16.5004 26.175 16.4404 25.605 16.4404 23.94C16.4404 22.665 16.4704 22.335 16.6054 21.825C16.8154 21.015 17.2654 20.58 18.1204 20.325C18.7654 20.145 19.4554 20.1 21.4654 20.1C23.6554 20.1 24.3304 20.13 24.8704 20.22ZM19.1704 22.245C18.8554 22.485 18.7654 22.86 18.7654 23.955C18.7654 25.08 18.8554 25.485 19.1404 25.725C19.4554 25.98 19.8304 26.025 21.5704 26.025C23.5654 26.025 23.9854 25.95 24.2404 25.59C24.4654 25.32 24.5104 24.93 24.5104 23.91C24.5104 21.99 24.4804 21.96 21.6154 21.96C19.9354 21.975 19.4704 22.02 19.1704 22.245Z"
              fill="white"
            />
            <path
              d="M28.6654 20.1899H35.2504C36.8704 20.1899 37.6204 20.3699 38.1454 20.8949C38.5654 21.2999 38.7454 21.7799 38.8204 22.7549C38.8504 23.1149 38.8654 23.6399 38.8654 23.9999C38.8654 24.6899 38.8204 25.4699 38.7454 25.9049C38.6254 26.8199 37.9804 27.5249 37.1404 27.6899C36.7054 27.7799 36.3604 27.8099 35.5504 27.8099H28.6504V20.1899H28.6654ZM34.8754 25.9949C35.5054 25.9949 35.5504 25.9949 35.8204 25.9049C36.3754 25.7399 36.5254 25.3349 36.5254 24.0149C36.5254 22.4099 36.2554 22.0799 34.9054 22.0799H30.9754V25.9949H34.8754Z"
              fill="white"
            />
            <path
              d="M42.9302 26.295C43.0802 26.49 43.0052 26.715 42.8102 26.895C41.9252 27.735 41.0702 27.81 40.5152 27.81C40.0202 27.81 39.7502 27.48 39.9902 26.73C40.2752 25.86 40.6352 24.93 40.8602 24.21C40.9652 23.895 40.9502 23.805 40.8152 23.805C40.6652 23.805 40.3202 23.955 39.9902 24.165C39.8552 23.955 40.0202 23.715 40.4552 23.43C41.3252 22.875 41.9252 22.755 42.4202 22.755C42.9302 22.755 43.0652 23.085 42.7202 24.105C42.4952 24.78 42.1652 25.71 41.9402 26.385C41.8352 26.655 41.8352 26.805 41.9552 26.805C42.0752 26.805 42.4502 26.655 42.9452 26.295H42.9302Z"
              fill="white"
            />
            <path
              d="M43.2148 21C43.2148 21.555 42.7198 22.065 41.9848 22.065C41.3848 22.065 40.9648 21.75 40.9648 21.21C40.9648 20.745 41.4148 20.16 42.2698 20.16C42.9298 20.16 43.2148 20.535 43.2148 21Z"
              fill="white"
            />
          </g>
          <defs>
            <clipPath id="clip0_2974_35783">
              <rect
                width="48"
                height="48"
                fill="white"
              />
            </clipPath>
          </defs>
        </svg>
      </div>
      <div class="bodi-account-drawer__box-header-text">
        <div class="bodi-account-drawer__box-header-title text-heading-5">
          BODi App
        </div>
        <div class="bodi-account-drawer__box-header-subtitle text-body-sm">
          Your workouts, tracking &amp; more
        </div>
      </div>
      <div class="bodi-account-drawer__box-header-arrow">
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="10"
          height="18"
          viewBox="0 0 10 18"
          fill="none"
        >
          <path
            d="M0.161231 16.5407L7.67781 9.00835L0.144531 1.45928L1.29707 0.304321L9.9996 8.99161L1.31377 17.6956L0.161231 16.5407Z"
            fill="white"
          />
        </svg>
      </div>
    </a>

    <div class="bodi-account-drawer__box-links">
      <a
        href="https://beachbodyondemand.com/dashboard?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <g clip-path="url(#clip0_2974_35792)">
            <path
              d="M5.81225 0.160034H1.43644C0.731569 0.160034 0.160156 0.731447 0.160156 1.43632V5.81213C0.160156 6.51702 0.731544 7.08844 1.43644 7.08841H5.81225C6.51709 7.08838 7.08853 6.51698 7.08853 5.81213V1.43632C7.08853 0.731447 6.51712 0.160034 5.81225 0.160034ZM5.99458 5.81213C5.99458 5.91282 5.91294 5.99445 5.81225 5.99445H1.43644C1.33574 5.99445 1.25411 5.91282 1.25411 5.81213V1.43632C1.25411 1.33562 1.33574 1.25398 1.43644 1.25399H5.81225C5.91294 1.25399 5.99458 1.33562 5.99458 1.43632V5.81213ZM14.5639 0.160034H10.1881C9.48317 0.160003 8.91178 0.731422 8.91178 1.43632V5.81213C8.91178 6.51702 9.48317 7.08844 10.1881 7.08841H14.5639C15.2687 7.08838 15.8402 6.51698 15.8402 5.81213V1.43632C15.8402 0.731447 15.2687 0.160034 14.5639 0.160034ZM14.7462 5.81213C14.7462 5.91282 14.6646 5.99445 14.5639 5.99445H10.1881C10.0874 5.99445 10.0057 5.91282 10.0057 5.81213V1.43632C10.0057 1.33562 10.0874 1.25398 10.1881 1.25399H14.5639C14.6646 1.25399 14.7462 1.33562 14.7462 1.43632V5.81213ZM5.81225 8.91167H1.43644C0.731544 8.91163 0.160156 9.48305 0.160156 10.1879V14.5638C0.160156 15.2686 0.731569 15.84 1.43644 15.84H5.81225C6.51712 15.84 7.08853 15.2686 7.08853 14.5638V10.1879C7.08853 9.48310 6.51709 8.91170 5.81225 8.91167ZM5.99458 14.5638C5.99458 14.6644 5.91294 14.7461 5.81225 14.7461H1.43644C1.33574 14.7461 1.25411 14.6645 1.25411 14.5638V10.1879C1.25411 10.0872 1.33574 10.0056 1.43644 10.0056H5.81225C5.91294 10.0056 5.99458 10.0872 5.99458 10.1879V14.5638ZM14.5639 8.91167H10.1881C9.48319 8.91167 8.91178 9.48307 8.91178 10.1879V14.5638C8.91178 15.2686 9.48319 15.84 10.1881 15.84H14.5639C15.2687 15.84 15.8402 15.2686 15.8402 14.5638V10.1879C15.8402 9.48310 15.2687 8.91170 14.5639 8.91167ZM14.7462 14.5638C14.7462 14.6644 14.6646 14.7461 14.5639 14.7461H10.1881C10.0874 14.7461 10.0057 14.6645 10.0057 14.5638V10.1879C10.0057 10.0872 10.0874 10.0056 10.1881 10.0056H14.5639C14.6646 10.0056 14.7462 10.0872 14.7462 10.1879V14.5638Z"
              fill="white"
            />
          </g>
          <defs>
            <clipPath id="clip0_2974_35792">
              <rect
                width="16"
                height="16"
                fill="white"
              />
            </clipPath>
          </defs>
        </svg>
        <span>My Dashboard</span>
      </a>
      <a
        href="https://beachbodyondemand.com/digital-purchases?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <g clip-path="url(#clip0_3068_275)">
            <path
              d="M8.00019 0.160034C1.96495 0.159765 -1.80701 6.69293 1.21037 11.9197C4.22776 17.1465 11.7718 17.1469 14.7896 11.9203C15.4779 10.7284 15.8402 9.37636 15.8402 8.00003C15.8351 3.67223 12.328 0.165115 8.00019 0.160034ZM8.00019 14.9177C2.67498 14.9179 -0.653226 9.15336 2.00917 4.54148C4.67157 -0.0704031 11.3281 -0.070703 13.9909 4.54094C14.5981 5.59262 14.9178 6.78563 14.9178 8.00003C14.9136 11.8188 11.8189 14.9134 8.00019 14.9177ZM11.6266 7.6088L6.70735 4.53429C6.4063 4.34613 6.01446 4.55443 6.00204 4.90923C6.00185 4.91466 6.00175 4.92009 6.00175 4.92552V11.0745C6.00164 11.4296 6.38587 11.6516 6.69339 11.4742C6.69809 11.4715 6.70275 11.4687 6.70735 11.4658L11.6266 8.39127C11.9159 8.21068 11.9159 7.78938 11.6266 7.6088ZM6.9241 10.2421V5.75795L10.5121 8.00003L6.9241 10.2421Z"
              fill="white"
            />
          </g>
          <defs>
            <clipPath id="clip0_3068_275">
              <rect
                width="16"
                height="16"
                fill="white"
              />
            </clipPath>
          </defs>
        </svg>
        <span>Digital Purchases</span>
      </a>
      <a
        href="https://beachbodyondemand.com/favorites?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <path
            d="M11.5638 1.2998C10.0671 1.2998 8.76562 1.97476 8.00016 3.10585C7.23469 1.97476 5.93325 1.2998 4.43652 1.2998C2.07589 1.30255 0.162906 3.21554 0.160156 5.57617C0.160156 7.65734 1.45732 9.82331 4.01601 12.0128C5.18848 13.0119 6.45498 13.895 7.79774 14.6499C7.92414 14.7178 8.07618 14.7178 8.20257 14.6499C9.54534 13.895 10.8118 13.0119 11.9843 12.0128C14.543 9.82331 15.8402 7.65734 15.8402 5.57617C15.8374 3.21554 13.9244 1.30255 11.5638 1.2998ZM8.00016 13.7804C6.83057 13.1054 1.01543 9.54749 1.01543 5.57617C1.01739 3.68757 2.54792 2.15704 4.43652 2.15508C5.88193 2.15508 7.09571 2.92696 7.60459 4.16996C7.72967 4.47447 8.13749 4.52937 8.33866 4.2688C8.36201 4.23855 8.3812 4.2053 8.39572 4.16996C8.90461 2.92696 10.1184 2.15508 11.5638 2.15508C13.4524 2.15704 14.9829 3.68757 14.9849 5.57617C14.9849 9.54749 9.16974 13.1054 8.00016 13.7804Z"
            fill="white"
          />
        </svg>
        <span>Favorites</span>
      </a>
      <a
        href="https://beachbodyondemand.com/dashboard/badges?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link  text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <path
            d="M14.91 3.34946H13.1825V2.15353C13.1825 1.93337 13.004 1.7549 12.7839 1.75488H3.21642C2.99626 1.75488 2.81778 1.93336 2.81778 2.15353V3.34946H1.09032C0.576606 3.34946 0.160156 3.76591 0.160156 4.27963V5.34268C0.160156 6.73706 1.29052 7.86743 2.6849 7.86743H3.02641C3.63415 9.93248 5.45519 11.4068 7.60151 11.5715V13.4484H5.87406C5.56718 13.4488 5.37579 13.7813 5.52957 14.0468C5.60076 14.1698 5.73199 14.2456 5.87406 14.2457H10.1263C10.4331 14.2453 10.6245 13.9129 10.4707 13.6473C10.3996 13.5244 10.2683 13.4486 10.1263 13.4484H8.3988V11.5715C10.5541 11.4041 12.3474 9.89055 12.958 7.86743H13.3154C14.7098 7.86749 15.8402 6.7371 15.8402 5.34268V4.27963C15.8402 3.76591 15.4237 3.34946 14.91 3.34946ZM2.6849 7.07014C1.73088 7.0701 0.957444 6.2967 0.957444 5.34268V4.27963C0.957444 4.20624 1.01694 4.14675 1.09032 4.14675H2.81778V6.40573C2.81843 6.62788 2.83285 6.84978 2.86097 7.07014H2.6849ZM12.3852 6.34593C12.3852 8.779 10.4332 10.7729 8.03337 10.7908C5.5986 10.8093 3.615 8.84058 3.61507 6.40573V2.55217H12.3852V6.34593ZM15.0429 5.34268C15.0429 6.2967 14.2694 7.0701 13.3154 7.07014H13.1314C13.1652 6.83022 13.1823 6.58823 13.1825 6.34593V4.14675H14.91C14.9834 4.14675 15.0429 4.20624 15.0429 4.27963V5.34268Z"
            fill="white"
          />
        </svg>
        <span>Badges</span>
      </a>
      <a
        href="https://beachbodyondemand.com/tracking?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <g clip-path="url(#clip0_2974_35823)">
            <path
              d="M15.6998 2.86036L13.1397 0.300293C12.9523 0.113118 12.6487 0.113118 12.4613 0.300293L4.78108 7.9805C4.69104 8.07043 4.64039 8.19244 4.64028 8.31971V10.8798C4.64028 11.1449 4.85518 11.3598 5.12029 11.3598H7.68036C7.80763 11.3597 7.92964 11.309 8.01957 11.219L15.6998 3.53878C15.8869 3.35137 15.8869 3.04777 15.6998 2.86036ZM7.48116 10.3998H5.6003V8.51891L10.8804 3.23877L12.7613 5.11962L7.48116 10.3998ZM13.4405 4.44041L11.5597 2.55956L12.8005 1.31872L14.6813 3.19957L13.4405 4.44041ZM15.2006 8.31971V14.7199C15.2006 15.3384 14.6991 15.8399 14.0805 15.8399H1.28019C0.661594 15.8399 0.160156 15.3385 0.160156 14.7199V1.91954C0.160156 1.30094 0.661594 0.799481 1.28019 0.799506H7.68036C8.04988 0.799931 8.28036 1.20021 8.09524 1.52C8.00952 1.66808 7.85146 1.75934 7.68036 1.75953H1.28019C1.19182 1.75953 1.12018 1.83117 1.12018 1.91954V14.7199C1.12018 14.8083 1.19182 14.8799 1.28019 14.8799H14.0805C14.1689 14.8799 14.2405 14.8082 14.2405 14.7199V8.31971C14.241 7.95019 14.6412 7.71971 14.961 7.90483C15.1091 7.99055 15.2004 8.14861 15.2006 8.31971Z"
              fill="white"
            />
          </g>
          <defs>
            <clipPath id="clip0_2974_35823">
              <rect
                width="16"
                height="16"
                fill="white"
              />
            </clipPath>
          </defs>
        </svg>
        <span>Tracking</span>
      </a>
      <a
        href="https://beachbodyondemand.com/tracking/my-progress?code=BODI_ACCOUNT_NAV&locale=en_US"
        class="bodi-account-drawer__link text-body-sm"
      >
        <svg
          xmlns="http://www.w3.org/2000/svg"
          width="16"
          height="16"
          viewBox="0 0 16 16"
          fill="none"
        >
          <path
            d="M15.8402 3.44086V8.00543C15.8402 8.33485 15.4836 8.54073 15.1983 8.37602C15.0659 8.29958 14.9843 8.15831 14.9843 8.00543V4.4736L8.8678 10.5901C8.70073 10.757 8.43007 10.757 8.263 10.5901L5.71255 8.04038L0.879821 12.8724C0.638814 13.097 0.245077 12.9764 0.171095 12.6554C0.13917 12.5169 0.178108 12.3716 0.275014 12.2676L5.41015 7.13245C5.57722 6.96559 5.84788 6.96559 6.01495 7.13245L8.5654 9.68219L14.3795 3.8688H10.8477C10.5183 3.8688 10.3124 3.51219 10.4771 3.2269C10.5535 3.0945 10.6948 3.01294 10.8477 3.01294H15.4122C15.6486 3.01294 15.8402 3.20453 15.8402 3.44086Z"
            fill="white"
          />
        </svg>
        <span>My Progress</span>
      </a>
    </div>
  </div>

  <div class="bodi-account-drawer__account-links text-body-base">
    <a
      class="bodi-account-drawer__account-link"
      href="https://account.shop.bodi.com/profile"
    >
      My Account
      <svg
        xmlns="http://www.w3.org/2000/svg"
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
      >
        <g clip-path="url(#clip0_4249_2907)">
          <rect
            opacity="0.01"
            width="24"
            height="24"
            fill="#444646"
          />
          <path
            fill-rule="evenodd"
            clip-rule="evenodd"
            d="M9.44214 5.55806C9.19806 5.31398 8.80233 5.31398 8.55825 5.55806C8.32479 5.79152 8.31464 6.16374 8.5278 6.40927L8.55825 6.44194L14.0664 11.95L8.55825 17.4581C8.32479 17.6915 8.31464 18.0637 8.5278 18.3093L8.55825 18.3419C8.79172 18.5754 9.16394 18.5856 9.40947 18.3724L9.44214 18.3419L15.3921 12.3919C15.6256 12.1585 15.6358 11.7863 15.4226 11.5407L15.3921 11.5081L9.44214 5.55806Z"
            fill="#706F73"
          />
        </g>
        <defs>
          <clipPath id="clip0_4249_2907">
            <rect
              width="24"
              height="24"
              fill="white"
            />
          </clipPath>
        </defs>
      </svg>
    </a>
    <a
      class="bodi-account-drawer__account-link"
      href="https://account.shop.bodi.com/orders"
    >
      My Orders
      <svg
        xmlns="http://www.w3.org/2000/svg"
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
      >
        <g clip-path="url(#clip0_4249_2907)">
          <rect
            opacity="0.01"
            width="24"
            height="24"
            fill="#444646"
          />
          <path
            fill-rule="evenodd"
            clip-rule="evenodd"
            d="M9.44214 5.55806C9.19806 5.31398 8.80233 5.31398 8.55825 5.55806C8.32479 5.79152 8.31464 6.16374 8.5278 6.40927L8.55825 6.44194L14.0664 11.95L8.55825 17.4581C8.32479 17.6915 8.31464 18.0637 8.5278 18.3093L8.55825 18.3419C8.79172 18.5754 9.16394 18.5856 9.40947 18.3724L9.44214 18.3419L15.3921 12.3919C15.6256 12.1585 15.6358 11.7863 15.4226 11.5407L15.3921 11.5081L9.44214 5.55806Z"
            fill="#706F73"
          />
        </g>
        <defs>
          <clipPath id="clip0_4249_2907">
            <rect
              width="24"
              height="24"
              fill="white"
            />
          </clipPath>
        </defs>
      </svg>
    </a>
    <a
      class="bodi-account-drawer__account-link"
      href="https://shop.bodi.com/pages/subscriptions-redirect"
    >
      My Subscriptions
      <svg
        xmlns="http://www.w3.org/2000/svg"
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
      >
        <g clip-path="url(#clip0_4249_2907)">
          <rect
            opacity="0.01"
            width="24"
            height="24"
            fill="#444646"
          />
          <path
            fill-rule="evenodd"
            clip-rule="evenodd"
            d="M9.44214 5.55806C9.19806 5.31398 8.80233 5.31398 8.55825 5.55806C8.32479 5.79152 8.31464 6.16374 8.5278 6.40927L8.55825 6.44194L14.0664 11.95L8.55825 17.4581C8.32479 17.6915 8.31464 18.0637 8.5278 18.3093L8.55825 18.3419C8.79172 18.5754 9.16394 18.5856 9.40947 18.3724L9.44214 18.3419L15.3921 12.3919C15.6256 12.1585 15.6358 11.7863 15.4226 11.5407L15.3921 11.5081L9.44214 5.55806Z"
            fill="#706F73"
          />
        </g>
        <defs>
          <clipPath id="clip0_4249_2907">
            <rect
              width="24"
              height="24"
              fill="white"
            />
          </clipPath>
        </defs>
      </svg>
    </a>
    <a
      class="bodi-account-drawer__account-link"
      href="https://faq.bodi.com/"
    >
      BODi Support
      <svg
        xmlns="http://www.w3.org/2000/svg"
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
      >
        <g clip-path="url(#clip0_4249_2907)">
          <rect
            opacity="0.01"
            width="24"
            height="24"
            fill="#444646"
          />
          <path
            fill-rule="evenodd"
            clip-rule="evenodd"
            d="M9.44214 5.55806C9.19806 5.31398 8.80233 5.31398 8.55825 5.55806C8.32479 5.79152 8.31464 6.16374 8.5278 6.40927L8.55825 6.44194L14.0664 11.95L8.55825 17.4581C8.32479 17.6915 8.31464 18.0637 8.5278 18.3093L8.55825 18.3419C8.79172 18.5754 9.16394 18.5856 9.40947 18.3724L9.44214 18.3419L15.3921 12.3919C15.6256 12.1585 15.6358 11.7863 15.4226 11.5407L15.3921 11.5081L9.44214 5.55806Z"
            fill="#706F73"
          />
        </g>
        <defs>
          <clipPath id="clip0_4249_2907">
            <rect
              width="24"
              height="24"
              fill="white"
            />
          </clipPath>
        </defs>
      </svg>
    </a>
  </div><a
    class="bodi-account-drawer__sign-out-link"
    href="https://www.bodi.com/logout?authLocale=en-US"
    data-bodi-auth-link
  >
    Sign out
  </a>

  <div
    role="button"
    class="bodi-account-drawer__close-button"
  >
    <svg
      xmlns="http://www.w3.org/2000/svg"
      viewBox="0 0 24 24"
      fill="currentColor"
      aria-hidden="true"
      data-slot="icon"
      class="size-6 stroke-[2px]"
    >
      <path
        fill-rule="evenodd"
        d="M5.47 5.47a.75.75 0 0 1 1.06 0L12 10.94l5.47-5.47a.75.75 0 1 1 1.06 1.06L13.06 12l5.47 5.47a.75.75 0 1 1-1.06 1.06L12 13.06l-5.47 5.47a.75.75 0 0 1-1.06-1.06L10.94 12 5.47 6.53a.75.75 0 0 1 0-1.06Z"
        clip-rule="evenodd"
      ></path>
    </svg>
  </div>
</div>





</div>
<!-- END sections: header-group -->
      </div>
    

    <script
      src="//shop.bodi.com/cdn/shop/t/2/assets/critical.js?v=34395725382898153171771353644"
      type="module"
      async
      blocking="render"
    ></script>

    <main
      id="MainContent"
      class="content-for-layout type-product"
      role="main"
      data-page-transition-enabled="false"
      data-product-transition="false"
      data-template="product.subscription"
    >
      <div id="shopify-section-template--21336520491225__section_ctwhwJ" class="shopify-section section-wrapper">

  <div class="section-wrapper ">

<div class="section-background color-scheme-1"></div>
<div
  class="section section--page-width color-scheme-1"

  

  style="
    
      --section-min-height: var(--section-height-small);
    

    
     --section-preview-height: 600px;
     
  "
>
 

  <div
    class="border-style custom-section-content"
    style="--border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;


"
  >
    
 <div class="custom-section-background">
    

  </div>
    <div
      class="
        spacing-style
        layout-panel-flex
        layout-panel-flex--column
        section-content-wrapper
         mobile-column
      "
      style="
        --flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: center; --vertical-alignment: center;
--vertical-alignment-mobile: center;

        --padding-block-start: max(20px, calc(var(--spacing-scale) * 40px));--padding-block-end: 0px;
      "
      data-testid="section-content"
    >
      
    

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    relative
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 97px;


  overflow: hidden;


    --padding-block-start: max(20px, calc(var(--spacing-scale) * 40px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 40px));--padding-inline-start: max(20px, calc(var(--spacing-scale) * 64px));--padding-inline-end: max(20px, calc(var(--spacing-scale) * 64px));
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
      <div
  class="overlay overlay--solid"
  style="
    --overlay-layer: 0;
    --overlay-color: #f7f8fa;
    --overlay-color--end: rgba(247, 248, 250, 0);
    --overlay-direction: to top; --overlay-border-radius: 97px;"
></div>



    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: max(24px, calc(var(--gap-scale, 1.0) * 40px));

--horizontal-alignment: space-between; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  












  <div
    class="
  image-block image-block--AS294aWhGZE9zU1crU__image_ycQ8rq image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.466992665036675;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=3840" alt="bodi app on phones" srcset="//shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-subscription-complete-access-rating.png?v=1776964771&amp;width=3840 3840w" width="2400" height="1636" class="image-block__image border-style" style="
  --ratio: 1.466992665036675;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 21px;
--border-radius-mobile: 16px;

  overflow: hidden;


">
  

  </div>







<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  
<variant-metafield-text data-product-id="9413928779993" data-block-id="AR3BabnFwb3dNQld1W__variant_metafield_text_6HMAmf">
  





   
  <div 
  class=" complete-access-container spacing-style text-block text-block--AR3BabnFwb3dNQld1W__variant_metafield_text_6HMAmf custom
     custom-typography  custom-font-size  custom-color 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-accent);--font-weight: 600;    --font-size: 1rem;--font-weight: 600;    --font-family: var(--font-body--family);    --text-transform: none;    --text-wrap: pretty;          --line-height: var(--line-height--body-normal);        --letter-spacing: var(--letter-spacing--body-normal);
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <div class="metafield-rich_text_field"><p>COMPLETE ACCESS - Now $99 (JUST $8.25/MO)</p></div>
     
  </div>
  

<style>
  
</style>


  
</variant-metafield-text>







   
  <div 
  class="  spacing-style text-block text-block--AeW94UUN6bHNZNC9HR__text_zydfMG text-heading-display-2
    
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <h1>The BODi Subscription</h1>
     
  </div>
  

<style>
  
</style>







  
  <variant-picker
    class="variant-picker spacing-style variant-picker--left"
    style="--color-strikethrough-mix: #000; --mobile-flex-wrap: nowrap; --padding-block-start: 15px;--padding-block-end: 18px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
    data-section-id="template--21336520491225__section_ctwhwJ"
    data-product-id="9413928779993"
    data-block-id="AK3pxalFCQjd5bkdMM__variant_picker_LrrYnw"
    data-product-url="/products/bodi-subscription"
    ref="mainVariantPicker"
    
      data-template-product-match="true"
    
    
    
  >
    <form class="variant-picker__form"><fieldset
            class="variant-option variant-option--buttons toggle variant-option--default-width-buttons"
            
          >
              <label class="variant-option__button-label">
                <input
                  type="radio"
                  name="Cadence-AK3pxalFCQjd5bkdMM__variant_picker_LrrYnw-9413928779993"
                  value="ANNUAL"
                  aria-label="ANNUAL"
                  
                  data-input-id="1-0"
                  data-option-value-id="5188415520985"
                  data-option-available="true"
                  data-connected-product-url=""
                  
                    data-variant-id="47683217817817"
                  
                  
                    checked
                  
                >
                
                  <span class="variant-option__button-label__text">ANNUAL</span>
                
                

              </label>
              <label class="variant-option__button-label">
                <input
                  type="radio"
                  name="Cadence-AK3pxalFCQjd5bkdMM__variant_picker_LrrYnw-9413928779993"
                  value="MONTHLY"
                  aria-label="MONTHLY"
                  
                  data-input-id="1-1"
                  data-option-value-id="5171611533529"
                  data-option-available="true"
                  data-connected-product-url=""
                  
                    data-variant-id="47683217850585"
                  
                  
                >
                
                  <span class="variant-option__button-label__text">MONTHLY</span>
                
                

              </label>
          </fieldset><script type="application/json" >
        {"id":47683217817817,"title":"ANNUAL","option1":"ANNUAL","option2":null,"option3":null,"sku":"BBSHBODI1003","requires_shipping":false,"taxable":true,"featured_image":{"id":48251871592665,"product_id":9413928779993,"position":1,"created_at":"2026-03-02T11:29:02-08:00","updated_at":"2026-03-02T11:29:05-08:00","alt":"BODi programs","width":930,"height":930,"src":"\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745","variant_ids":[47683217817817,47683217850585]},"available":true,"name":"The BODi Subscription - ANNUAL","public_title":"ANNUAL","options":["ANNUAL"],"price":17900,"weight":0,"compare_at_price":null,"inventory_management":"shopify","barcode":"","featured_media":{"alt":"BODi programs","id":38840057266393,"position":1,"preview_image":{"aspect_ratio":1.0,"height":930,"width":930,"src":"\/\/shop.bodi.com\/cdn\/shop\/files\/bodi-membership-programs.png?v=1772479745"}},"requires_selling_plan":false,"selling_plan_allocations":[{"price_adjustments":[{"position":1,"price":17900}],"price":17900,"compare_at_price":17900,"per_delivery_price":17900,"selling_plan_id":5765562585,"selling_plan_group_id":"e451c833d4f08cb2df388601a8fa777a0ea8137c"}],"quantity_rule":{"min":1,"max":null,"increment":1}}
      </script>
   
    </form>
  </variant-picker>





 




<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 15px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: fit-content; --size-style-width-mobile-min: fit-content;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
      
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: flex-end;
--vertical-alignment-mobile: flex-end;
"
  >
  

<product-price
  class="text-block  text-left text-heading-display-2 spacing-style"
  data-block-id="AWXljWmxkNGg0YmdTM__price_LMed98"
  data-product-id="9413928779993"
  style="
    
--color: var(--color-foreground);--font-weight: 500;
    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: fit-content;
  "
  
>
  <div ref="priceContainer">
  

  
     
    <span class="price">$179</span>
  

  
</div>

  <div id="shopify-block-AbkhpVnFXTHQ0cWtqU__variant-marketing-copy" class="shopify-block"><div
        id="marketing-copy"
        data-marketing-copy=""
>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47683217817817"
                data-variant-marketing-copy=""
                hidden
        ></span>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47683217850585"
                data-variant-marketing-copy=""
                hidden
        ></span>
    

    <span class="marketing-copy-text">
    

        
  </span>
</div>

<script>
    (function () {
        const marketingCopyEl = document.getElementById('marketing-copy');
        if (!marketingCopyEl) return;

        const marketingCopyTextEl = marketingCopyEl.querySelector('.marketing-copy-text');

        function getCurrentVariantId() {
            const checked = document.querySelectorAll(
                'variant-picker input[type="radio"]:checked'
            );

            let variantId = null;
            checked.forEach((input) => {
                if (input.dataset.variantId) {
                    variantId = input.dataset.variantId;
                }
            });

            return variantId;
        }

        function updateMarketingCopy(variantId) {
            if (!variantId) {
                return;
            };

            const variantMarketingCopyEl = marketingCopyEl.querySelector(
                `.variant-marketing-copy-data[data-variant-id="${variantId}"]`
            );

            const variantMarketingCopy = variantMarketingCopyEl?.dataset.variantMarketingCopy || '';

            if (variantMarketingCopy) {
                marketingCopyTextEl.textContent = variantMarketingCopy;
                marketingCopyEl.style.display = 'block';
            } else {
                marketingCopyTextEl.textContent = '';
                marketingCopyEl.style.display = 'none';
            }
        }

        document.addEventListener('click', function (e) {
            if (!e.target.closest('variant-picker')) return;

            setTimeout(() => {
                const selectedVariantId = e.target.dataset.variantId;
                updateMarketingCopy(selectedVariantId);
            }, 5);
        });
        updateMarketingCopy(getCurrentVariantId());
    })();
</script>



</div>


  
</product-price>

  <script type="application/json" data-price-sync-meta>
  {
    "currency": "USD",
    "locale": "en"
  }
</script>

<script>
  (() => {
    if (window.__rechargePriceSyncInitialized) return;
    window.__rechargePriceSyncInitialized = true;

    /** @type {Object} */
    const meta = (() => {
      const el = document.querySelector('[data-price-sync-meta]');
      if (!el) return { currency: 'USD', locale: 'en' };

      try {
        return JSON.parse(el.textContent || '{}');
      } catch {
        return { currency: 'USD', locale: 'en' };
      }
    })();

    // Cached product JSON so variant/plan switches don't re-fetch.
    /** @type {Object|null} */
    let productData = null;

    /**
     * @param {number} cents
     * @returns {string}
     */
    const formatCents = (cents) => {
      const value = Number(cents || 0) / 100;

      try {
        return new Intl.NumberFormat(meta.locale || 'en', {
          style: 'currency',
          currency: meta.currency || 'USD',
          currencyDisplay: 'narrowSymbol',
          trailingZeroDisplay:"stripIfInteger"
        }).format(value);
      } catch {
        return value.toFixed(2);
      }
    };

    // Fetches /products/{handle}.js once and caches the full product payload.
    /** @returns {Promise<Object|null>} */
    const fetchProductData = async () => {
      if (productData) return productData;

      const pathname = window.location.pathname.replace(/\/$/, '');

      try {
        const response = await fetch(`${pathname}.js`);
        if (!response.ok) return null;

        productData = await response.json();
        return productData;
      } catch {
        return null;
      }
    };

    /**
     * @param {string|number} variantId
     * @param {Object} data
     * @param {string} sellingPlanId - Active selling plan ID, empty string for one-time
     * @returns {Object}
     */
    const getVariantPricing = (variantId, data, sellingPlanId) => {
      const id = Number(variantId);
      const variant = data.variants?.find((v) => v.id === id);
      if (!variant) return { price: data.price || 0, compareAtPrice: null };

      // Subscription mode: match the active selling plan allocation,
      // fall back to the first allocation if the exact plan isn't found.
      if (sellingPlanId) {
        const planId = Number(sellingPlanId);
        const allocation =
          variant.selling_plan_allocations?.find(
            (a) => a.selling_plan_id === planId
          ) || variant.selling_plan_allocations?.[0];

        if (allocation) {
          return {
            price: allocation.price,
            compareAtPrice: (allocation.compare_at_price === 0 && variant.compare_at_price > 0) ? variant.compare_at_price :
              (allocation.compare_at_price > allocation.price)
                ? allocation.compare_at_price
                : null,
          };
        }
      }
      
      // One-time mode (no selling plan): use the regular variant price.
      return {
        price: variant.price,
        compareAtPrice:
          variant.compare_at_price > variant.price
            ? variant.compare_at_price
            : null,
      };
    };

    /**
     * @param {number} price
     * @param {number|null} compareAtPrice
     * @returns {string}
     */
    const buildPriceHTML = (price, compareAtPrice) => {
      const formatted = formatCents(price);
      if (!compareAtPrice) {
        return `<span class="price">${formatted}</span>`;
      }
      return `<span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">${formatted}</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">${formatCents(compareAtPrice)}</span>
    </span>`;
      
    };

    // Reads current variant + selling plan from the DOM, resolves pricing
    // from cached JSON, and writes formatted HTML into [ref="priceContainer"].
    const syncPrice = async () => {
      const data = await fetchProductData();
      if (!data) return;

      const variantInput = document.querySelector('input[ref="variantId"]');
      const variantId =
        variantInput instanceof HTMLInputElement ? variantInput.value : null;

      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');
      const sellingPlanId =
        sellingPlanInput instanceof HTMLInputElement ? sellingPlanInput.value : '';

      const scope =
        variantInput?.closest('.shopify-section, dialog') || document;
      const container = scope.querySelector('[ref="priceContainer"]');
      if (!(container instanceof HTMLElement)) return;

      const { price, compareAtPrice } = variantId
        ? getVariantPricing(variantId, data, sellingPlanId)
        : { price: data.price || 0, compareAtPrice: null };

      container.innerHTML = buildPriceHTML(price, compareAtPrice);
    };

    const init = async () => {
      await syncPrice();

      const variantInput = document.querySelector('input[ref="variantId"]');

      // Re-sync when the selected variant changes (attribute set programmatically).
      if (variantInput instanceof HTMLInputElement) {
        const observer = new MutationObserver(() => syncPrice());
        observer.observe(variantInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
      }

      // Re-sync when the selling plan toggles between subscription and one-time.
      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');

      if (sellingPlanInput instanceof HTMLInputElement) {
        const spObserver = new MutationObserver(() => syncPrice());
        spObserver.observe(sellingPlanInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
        sellingPlanInput.addEventListener('change', () => syncPrice());
      }

      // Re-sync after product-price.js replaces the container with
      // server-rendered HTML on section re-render. setTimeout defers
      // our update so it runs after the DOM replacement.
      document.addEventListener('variant:update', () => {
        setTimeout(syncPrice, 0);
      });
    };

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
      init();
    }
  })();
</script>










<cadence-text
  class="text-block text-block--align-left text-left text-body-xl spacing-style"
  data-block-id="AamZzOCt6OWNtNDFWR__cadence_text_NKbTi8"
  data-product-id="9413928779993"
  style="
    
--color: var(--color-foreground);--font-weight: 500;
    --padding-block-start: 0px;--padding-block-end: 3px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: 100%;
  "
  
>
  <div ref="cadenceContainer">
  
    <span class="cadence">/ Annual</span>

</div>

  

  

  
</cadence-text>







</div>
</div>
<style>
  
</style>
















  <variant-checklist
    class="checklist variant-checklist"
     data-block-id="ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc"
  data-product-id="9413928779993"
    style="
      --checklist-gap: 12px;
      --checklist-icon-size: 22px;
      --checklist-icon-color: #1f6d5d;
    "
    
  ><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <div class="metafield-rich_text_field"><del>$179</del> <strong>$99</strong> - For a Limited Time Only!<strong> Just $8.25/month</strong> - Save $80
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <strong>FREE</strong> Booty Bundle with 14 servings of Shakeology ($69 Value) + <strong>FREE</strong> Power Loops ($29.95 Value)**
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      225+ fitness programs spanning duration, level, and workout type
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Access to the BODi Community to connect with other BODi members
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Healthy meal plans with over 1,000 recipes
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ASlFtUEhMdGFXSzhYN__variant_checklist_xNVHDc paragraph
    text-block--align- rte 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Step-by-step guidance from world-class trainers
    
  </div>

<style>
  
</style>


        </li></variant-checklist>









<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: max(20px, calc(var(--spacing-scale) * 34px));--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  <div>
  <style>
    /* hiding the regular price group for bodi subscriptions */
    .regular-price-container {
        display: none;
    }

    [ref="priceContainer"] {
        display: flex;
    }

    [ref="priceContainer"] > span:has(.compare-at-price) {
        display: flex;
        flex-direction: column;
    }

    .resource-list__item [ref="priceContainer"] > span:has(.compare-at-price) {
        justify-content: flex-end;
    }

    /* .resource-list__item span.compare-at-price {
        line-height: 22px;
        top: -8px;
        position: relative;
    } */

    span.compare-at-price {
        /* font-size: 22px;
        font-weight: 500;
        color: var(--Grayscale-Medium-Gray, #706F73);
        font-family: 'Heebo'; */
        text-decoration: none;
    }

    span.compare-at-price sup {
        top: 0;
        vertical-align: bottom;
        font-size: inherit;
        font-weight: 400;
        text-decoration-line: line-through;
        text-decoration-thickness: 1.5px;
    }
</style>
</div>



<variant-metafield-text data-product-id="9413928779993" data-block-id="ARTJXUG1XS0U1M0NnT__variant_metafield_text_K8M9yr">
  





<style>
  
</style>


  
</variant-metafield-text>


</div>
</div>
<style>
  
</style>





<script src="//shop.bodi.com/cdn/shop/t/2/assets/bodi-button.js?v=153141443260534750341772843289" type="module" defer></script>
<div class="bodi-button-wrapper" 
  
    style="--bodi-button-width: fit-content; --bodi-button-width-mobile: 100%;"
  
   
>
  <button
    type="button"
    id="bodi-button-AQkJnR0ZzOTJFNGFCe__button_xmwLzP"
    class="bodi-button bodi-button--primary bodi-button--large bodi-button--width-fit-content"
    
    
    data-click-action="add_pdp_item"
    
    
    
      data-analytics-event="none"
    
    
    
    
    
      
    
  >
    <span class="bodi-button__content" 
       
        data-product-id="9413928779993"
        
      >
        
        <variant-cta-text  data-product-id="9413928779993" data-block-id="AQkJnR0ZzOTJFNGFCe__button_xmwLzP">
  
      START FOR $8.25/mo + FREE GIFTS
      
       </variant-cta-text>
      
    </span>
  </button>
  <span class="bodi-button__error hidden" aria-live="polite">
    <span class="bodi-button__error-icon"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
    <span class="bodi-button__error-text"></span>
  </span>
</div>





<span
  class="buy-buttons-block buy-buttons-block--ANnpRY0hxdEJlTWErW__buy_buttons_tiyVHB "
  
><product-form-component
      data-section-id="template--21336520491225__section_ctwhwJ"
      data-product-id="9413928779993"
      data-product-url="/products/bodi-subscription"
      on:submit="/handleSubmit"
      data-quantity-default="1"
    >
      
      <div class="quantity-text">Quantity</div>
      
      <div
        class="visually-hidden"
        aria-live="assertive"
        role="status"
        aria-atomic="true"
        ref="liveRegion"
      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-ANnpRY0hxdEJlTWErW__buy_buttons_tiyVHB" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type="hidden"
          name="id"
          ref="variantId"
          value="47683217817817"
        >
          
        
        <style>
          recharge-custom-block {
          
          }
        </style>
        
        
        <div
          class="product-form-buttons spacing-style"
          style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
        >
          






          

<span
  
  style="--add-to-cart-font-case: ;"
>
  <add-to-cart-component
  ref="addToCartButtonContainer"
  data-product-variant-media="//shop.bodi.com/cdn/shop/files/bodi-membership-programs.png?v=1772479745&width=100"
>
  <button
    id="BuyButtons-ProductSubmitButton-AaWVTMVZ0SlhjaXZFR__add-to-cart"
    type="submit"
    name="add"
    ref="addToCartButton"
    on:click="/handleClick"
    class="button add-to-cart-button button"
    
  >
    <span
      class="add-to-cart-text"
    >
      
      <span class="add-to-cart-text__content">Get Free Gifts</span>
    </span>
    <span
      aria-hidden="true"
      class="add-to-cart-text--added"
    >
      <span class="svg-wrapper add-to-cart-icon--added"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark">
<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
      <span class="">Added</span>
    </span>
  </button>
</add-to-cart-component>



</span>



          <span
            class="product-form-text__error hidden"
            ref="addToCartTextError"
          >
            <span class="svg-wrapper product-form-icon--error"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
          </span>
        </div><input type="hidden" name="product-id" value="9413928779993" /><input type="hidden" name="section-id" value="template--21336520491225__section_ctwhwJ" /></form></product-form-component></span>


<style>
  
</style>




<variant-metafield-text data-product-id="9413928779993" data-block-id="AZ3JDY3JieVF1RlB3W__variant_metafield_text_JtmDDn">
  





   
  <div 
  class="  spacing-style text-block text-block--AZ3JDY3JieVF1RlB3W__variant_metafield_text_JtmDDn text-body-sm
    text-block--align-left text-block--full-width 
  "

  style="
    --padding-block-start: 7px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-grayscale);--font-weight: 400;
    --width: 100%;
    --max-width: var(--max-width--body-none);
    
      --text-align: left;
    
    
  "

  
>
    
     
    <div class="metafield-rich_text_field"><p>$99 billed for the first year. Renews at $179 every 12 months.‡</p></div>
     
  </div>
  

<style>
  
</style>


  
</variant-metafield-text>


</div>
</div>
<style>
  
</style>





</div>
</div>
<style>
  
</style>





  
    </div>
  </div>
</div>
</div>




<style> #shopify-section-template--21336520491225__section_ctwhwJ .image-block {width: 50%; max-width: 600px;} #shopify-section-template--21336520491225__section_ctwhwJ variant-cta-text {text-wrap: wrap;} @media (max-width: 640px) {#shopify-section-template--21336520491225__section_ctwhwJ .image-block {width: 100%; } #shopify-section-template--21336520491225__section_ctwhwJ .group-block-content .bodi-button--large {padding-left: 10px; padding-right: 10px; }} #shopify-section-template--21336520491225__section_ctwhwJ cadence-text {min-width: max-content;} #shopify-section-template--21336520491225__section_ctwhwJ #shopify-block-AVllBZFFUQWsyeS80d__recharge_subscriptions_subscription_widget_v2_VEffFd {display: none;} #shopify-section-template--21336520491225__section_ctwhwJ .buy-buttons-block {display: none;} </style></div><div id="shopify-section-template--21336520491225__section_bcVF3z" class="shopify-section section-wrapper">

  <div class="section-wrapper pdp-section pdp-section-bundle rebuy-widget-bundle-page">

<div class="section-background color-scheme-1"></div>
<div
  class="section section--page-width color-scheme-1"

  

  style="
    

    
  "
>
 

  <div
    class="border-style custom-section-content"
    style="--border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;


"
  >
    
 <div class="custom-section-background">
    

  </div>
    <div
      class="
        spacing-style
        layout-panel-flex
        layout-panel-flex--column
        section-content-wrapper
         mobile-column
      "
      style="
        --flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: center; --vertical-alignment: center;
--vertical-alignment-mobile: center;

        --padding-block-start: max(20px, calc(var(--spacing-scale) * 40px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 40px));
      "
      data-testid="section-content"
    >
      
    






  <div 
    style="
      --width-desktop: 100%;
      --width-mobile: 100%;
    "
    
  >
    
  <div id="shopify-block-Ad0xIakd4dGl6eDhTS__rebuy_personalization_engine_rebuy_widget_r3iNkV" class="shopify-block shopify-app-block">
  <div
    data-rebuy-id="293879"
    data-rebuy-shopify-product-ids="9413928779993"
    data-rebuy-shopify-collection-ids="">
  </div>


</div>

  </div>






  
    </div>
  </div>
</div>
</div>




</div><div id="shopify-section-template--21336520491225__product_list_RNMwfa" class="shopify-section ui-test-product-list">

<div class="section-background color-scheme-1"></div>

<div
  class="
    section
    section--page-width
    color-scheme-1
    section-resource-list
    spacing-style
    gap-style
  "
  style="
    --column-count-mobile: 2;
    --padding-block-start: max(20px, calc(var(--spacing-scale) * 48px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 40px));
    --gap: max(24px, calc(var(--gap-scale, 1.0) * 28px));
    --resource-list-column-gap-desktop: 25px;--column-count: 4;--column-count-mobile: 2;--mobile-card-size: 60cqw;
  "
>
  
  <div class="section-resource-list__header"><div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
      
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: center; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >





   
  <div 
  class="  spacing-style text-block text-block--AOFZKcFpGRUNtclpIa__text_PdUQaG text-heading-display-2
    text-block--align-center
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <h2>Focus on specific workouts</h2>
     
  </div>
  

<style>
  
</style>










   
  <div 
  class="  spacing-style text-block text-block--ASUxhU2dWWWJNWVpEc__text_ktDBnA text-body-base
    text-block--align-center text-block--full-width 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-none);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <p>LIMITED access. 225+ options too much to manage? Try some of our curated options for every need, make it easy for you to get started.</p>
     
  </div>
  

<style>
  
</style>




</div>
</div>
<style>
  
</style>


</div>

  

  

  <div
    class="
      resource-list
      
      
      resource-list__carousel
    "
    style="--resource-list-column-gap-desktop: 25px;--column-count: 4;--column-count-mobile: 2;--mobile-card-size: 60cqw;"
    
  >
    
    
        





<div
  class="resource-list__carousel"
  style="
    --gutter-slide-width: 0px;
    --slide-width-max: 300px;
  "
>
  


<slideshow-component
  
    ref="resourceListCarousel"
  
  
    class="resource-list__carousel"
  
  style="--slideshow-timeline: --slide-1, --slide-2, --slide-3, --slide-4;"
  
  initial-slide="0"
  
  

  
>
  
  <slideshow-container ref="slideshowContainer">
    
    
      
  <slideshow-arrows
  position="center"
  
><button
  class="
    slideshow-control slideshow-control--previous
    
     slideshow-control--shape-circle
    slideshow-control--style-arrow
    button button-unstyled button-unstyled--transparent
     flip-x
  "
  
  aria-label="Previous slide"
  
  on:click="/previous"
  ref="previous"
>
  <span class="svg-wrapper icon-arrow"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" vector-effect="non-scaling-stroke" d="M4.25 10h11.5m0 0-4-4m4 4-4 4"/></svg>
</span>
</button>
<button
  class="
    slideshow-control slideshow-control--next
    
     slideshow-control--shape-circle
    slideshow-control--style-arrow
    button button-unstyled button-unstyled--transparent
    
  "
  
  aria-label="Next slide"
  
  on:click="/next"
  ref="next"
>
  <span class="svg-wrapper icon-arrow"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" vector-effect="non-scaling-stroke" d="M4.25 10h11.5m0 0-4-4m4 4-4 4"/></svg>
</span>
</button>
</slideshow-arrows>


    
    <slideshow-slides
      tabindex="-1"
      ref="scroller"
      style="scroll-snap-type: none"
      
      
    >
      
  
    <slideshow-slide
  ref="slides[]"
  aria-hidden="false"
  style="view-timeline-name: --slide-0; --product-media-fit: cover;"
  
    class="resource-list__slide"
  
  
  
  
  
  
>
  <div
        class="resource-list__item"
      >
        



<style data-shopify>
  
</style>


<product-card
  class="product-card"
  data-product-id="9428807811289"
  data-product-variants-size="1"
  id="product-card-AVFVYUS9EdHhtTDZES__static-product-card"
  data-product-transition="false"
  
  
>
  
  <div
    class="
      product-card__content
      layout-panel-flex
      layout-panel-flex--column
      product-grid__card
      spacing-style
      border-style
      gap-style
       color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252
    "
    style="
      --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 30px;


  overflow: hidden;


      --flex-direction: column; --flex-wrap: nowrap;



--horizontal-alignment: ; --vertical-alignment: ;
--vertical-alignment-mobile: ;

      --padding-block-start: 0px;--padding-block-end: 17px;--padding-inline-start: 0px;--padding-inline-end: 0px;
      --product-card-gap: 0px;
      --quick-add-display: none;
      --quick-add-mobile-display: none;
      
      
      
      --zoom-out-padding-block-end: min(var(--padding-xs), 11.9px);
    "
  >
    
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  












  <div
    class="
  image-block image-block--AN2dlVWUxVHFwOGg3R__image_fYkCXd image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.7763496143958868;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=3840" alt="P90X subscription with a muscular man in a gray tank top and shorts." srcset="//shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-p90x-subscription.png?v=1778702727&amp;width=3840 3840w" width="1382" height="778" class="image-block__image border-style" style="
  --ratio: 1.7763496143958868;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;
--border-radius-mobile: 0px;


">
  

  </div>











<style>
  .carousel-badge {
position: absolute;
bottom: 0px;
color: #000;
border-radius: 0 5px 5px 0;
font-size:14px;
padding: 5px 10px;
}
.carousel-badge p {
margin-block: 0;
}
</style>





</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    space-between
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 12px;--padding-inline-start: max(20px, calc(var(--spacing-scale) * 24px));--padding-inline-end: max(20px, calc(var(--spacing-scale) * 24px));
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 18px;--padding-block-end: 15px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 2px;

--horizontal-alignment: center; --vertical-alignment: flex-end;
--vertical-alignment-mobile: flex-end;
"
  >
  

<product-price
  class="text-block  custom-typography custom-font-size custom-color text-center custom spacing-style"
  data-block-id="AenVFRUR5MGtydDNmW__price_rWqb6f"
  data-product-id="9428807811289"
  style="
    
--color: var(--color-foreground);--font-weight: 700;    --font-size: 2rem;--font-weight: 700;    --font-family: var(--font-subheading--family);    --text-transform: none;    --text-wrap: ;          --line-height: var(--line-height--body-loose);        --letter-spacing: var(--letter-spacing--body-normal);
    --padding-block-start: 11px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: fit-content;
  "
  
>
  <div ref="priceContainer">
  

  
     
    <span class="price">$9.99</span>
  

  
</div>

  <div id="shopify-block-Ad01ZT0xvS2ZMSmVMc__variant-marketing-copy" class="shopify-block"><div
        id="marketing-copy"
        data-marketing-copy=""
>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47743666028761"
                data-variant-marketing-copy=""
                hidden
        ></span>
    

    <span class="marketing-copy-text">
    

        
  </span>
</div>

<script>
    (function () {
        const marketingCopyEl = document.getElementById('marketing-copy');
        if (!marketingCopyEl) return;

        const marketingCopyTextEl = marketingCopyEl.querySelector('.marketing-copy-text');

        function getCurrentVariantId() {
            const checked = document.querySelectorAll(
                'variant-picker input[type="radio"]:checked'
            );

            let variantId = null;
            checked.forEach((input) => {
                if (input.dataset.variantId) {
                    variantId = input.dataset.variantId;
                }
            });

            return variantId;
        }

        function updateMarketingCopy(variantId) {
            if (!variantId) {
                return;
            };

            const variantMarketingCopyEl = marketingCopyEl.querySelector(
                `.variant-marketing-copy-data[data-variant-id="${variantId}"]`
            );

            const variantMarketingCopy = variantMarketingCopyEl?.dataset.variantMarketingCopy || '';

            if (variantMarketingCopy) {
                marketingCopyTextEl.textContent = variantMarketingCopy;
                marketingCopyEl.style.display = 'block';
            } else {
                marketingCopyTextEl.textContent = '';
                marketingCopyEl.style.display = 'none';
            }
        }

        document.addEventListener('click', function (e) {
            if (!e.target.closest('variant-picker')) return;

            setTimeout(() => {
                const selectedVariantId = e.target.dataset.variantId;
                updateMarketingCopy(selectedVariantId);
            }, 5);
        });
        updateMarketingCopy(getCurrentVariantId());
    })();
</script>



</div>


  
</product-price>

  <script type="application/json" data-price-sync-meta>
  {
    "currency": "USD",
    "locale": "en"
  }
</script>

<script>
  (() => {
    if (window.__rechargePriceSyncInitialized) return;
    window.__rechargePriceSyncInitialized = true;

    /** @type {Object} */
    const meta = (() => {
      const el = document.querySelector('[data-price-sync-meta]');
      if (!el) return { currency: 'USD', locale: 'en' };

      try {
        return JSON.parse(el.textContent || '{}');
      } catch {
        return { currency: 'USD', locale: 'en' };
      }
    })();

    // Cached product JSON so variant/plan switches don't re-fetch.
    /** @type {Object|null} */
    let productData = null;

    /**
     * @param {number} cents
     * @returns {string}
     */
    const formatCents = (cents) => {
      const value = Number(cents || 0) / 100;

      try {
        return new Intl.NumberFormat(meta.locale || 'en', {
          style: 'currency',
          currency: meta.currency || 'USD',
          currencyDisplay: 'narrowSymbol',
          trailingZeroDisplay:"stripIfInteger"
        }).format(value);
      } catch {
        return value.toFixed(2);
      }
    };

    // Fetches /products/{handle}.js once and caches the full product payload.
    /** @returns {Promise<Object|null>} */
    const fetchProductData = async () => {
      if (productData) return productData;

      const pathname = window.location.pathname.replace(/\/$/, '');

      try {
        const response = await fetch(`${pathname}.js`);
        if (!response.ok) return null;

        productData = await response.json();
        return productData;
      } catch {
        return null;
      }
    };

    /**
     * @param {string|number} variantId
     * @param {Object} data
     * @param {string} sellingPlanId - Active selling plan ID, empty string for one-time
     * @returns {Object}
     */
    const getVariantPricing = (variantId, data, sellingPlanId) => {
      const id = Number(variantId);
      const variant = data.variants?.find((v) => v.id === id);
      if (!variant) return { price: data.price || 0, compareAtPrice: null };

      // Subscription mode: match the active selling plan allocation,
      // fall back to the first allocation if the exact plan isn't found.
      if (sellingPlanId) {
        const planId = Number(sellingPlanId);
        const allocation =
          variant.selling_plan_allocations?.find(
            (a) => a.selling_plan_id === planId
          ) || variant.selling_plan_allocations?.[0];

        if (allocation) {
          return {
            price: allocation.price,
            compareAtPrice: (allocation.compare_at_price === 0 && variant.compare_at_price > 0) ? variant.compare_at_price :
              (allocation.compare_at_price > allocation.price)
                ? allocation.compare_at_price
                : null,
          };
        }
      }
      
      // One-time mode (no selling plan): use the regular variant price.
      return {
        price: variant.price,
        compareAtPrice:
          variant.compare_at_price > variant.price
            ? variant.compare_at_price
            : null,
      };
    };

    /**
     * @param {number} price
     * @param {number|null} compareAtPrice
     * @returns {string}
     */
    const buildPriceHTML = (price, compareAtPrice) => {
      const formatted = formatCents(price);
      if (!compareAtPrice) {
        return `<span class="price">${formatted}</span>`;
      }
      return `<span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">${formatted}</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">${formatCents(compareAtPrice)}</span>
    </span>`;
      
    };

    // Reads current variant + selling plan from the DOM, resolves pricing
    // from cached JSON, and writes formatted HTML into [ref="priceContainer"].
    const syncPrice = async () => {
      const data = await fetchProductData();
      if (!data) return;

      const variantInput = document.querySelector('input[ref="variantId"]');
      const variantId =
        variantInput instanceof HTMLInputElement ? variantInput.value : null;

      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');
      const sellingPlanId =
        sellingPlanInput instanceof HTMLInputElement ? sellingPlanInput.value : '';

      const scope =
        variantInput?.closest('.shopify-section, dialog') || document;
      const container = scope.querySelector('[ref="priceContainer"]');
      if (!(container instanceof HTMLElement)) return;

      const { price, compareAtPrice } = variantId
        ? getVariantPricing(variantId, data, sellingPlanId)
        : { price: data.price || 0, compareAtPrice: null };

      container.innerHTML = buildPriceHTML(price, compareAtPrice);
    };

    const init = async () => {
      await syncPrice();

      const variantInput = document.querySelector('input[ref="variantId"]');

      // Re-sync when the selected variant changes (attribute set programmatically).
      if (variantInput instanceof HTMLInputElement) {
        const observer = new MutationObserver(() => syncPrice());
        observer.observe(variantInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
      }

      // Re-sync when the selling plan toggles between subscription and one-time.
      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');

      if (sellingPlanInput instanceof HTMLInputElement) {
        const spObserver = new MutationObserver(() => syncPrice());
        spObserver.observe(sellingPlanInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
        sellingPlanInput.addEventListener('change', () => syncPrice());
      }

      // Re-sync after product-price.js replaces the container with
      // server-rendered HTML on section re-render. setTimeout defers
      // our update so it runs after the DOM replacement.
      document.addEventListener('variant:update', () => {
        setTimeout(syncPrice, 0);
      });
    };

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
      init();
    }
  })();
</script>














   
  <div 
  class=" cadence spacing-style text-block text-block--AN1dLMVNwdW9VbzhwY__text_h93D79 text-body-base
    
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p>/monthly</p>
     
  </div>
  

<style>
  .cadence{
bottom:5px;
position: relative;
}
</style>





</div>
</div>
<style>
  
</style>






<span
  class="buy-buttons-block buy-buttons-block--AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L subscription-btn"
  
><product-form-component
      data-section-id="template--21336520491225__product_list_RNMwfa"
      data-product-id="9428807811289"
      data-product-url="/products/p90x-subscription"
      on:submit="/handleSubmit"
      data-quantity-default="1"
    >
      
      <div
        class="visually-hidden"
        aria-live="assertive"
        role="status"
        aria-atomic="true"
        ref="liveRegion"
      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type="hidden"
          name="id"
          ref="variantId"
          value="47743666028761"
        >
          
        
        <style>
          recharge-custom-block {
          
          }
        </style>
        
        
          <input type="hidden" name="selling_plan" value="5807931609">
        
        
        <div
          class="product-form-buttons spacing-style"
          style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
        >
          

          

<span
  
  style="--add-to-cart-font-case: ;"
>
  <add-to-cart-component
  ref="addToCartButtonContainer"
  data-product-variant-media="//shop.bodi.com/cdn/shop/files/bodi-p90x-subscription-1x1.png?v=1772479845&width=100"
>
  <button
    id="BuyButtons-ProductSubmitButton-AOG5CeGNwWEh0WXRmQ__add-to-cart"
    type="submit"
    name="add"
    ref="addToCartButton"
    on:click="/handleClick"
    class="button add-to-cart-button button"
    
  >
    <span
      class="add-to-cart-text"
    >
      
      <span class="add-to-cart-text__content">Start Now</span>
    </span>
    <span
      aria-hidden="true"
      class="add-to-cart-text--added"
    >
      <span class="svg-wrapper add-to-cart-icon--added"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark">
<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
      <span class="">Added</span>
    </span>
  </button>
</add-to-cart-component>



</span>



          <span
            class="product-form-text__error hidden"
            ref="addToCartTextError"
          >
            <span class="svg-wrapper product-form-icon--error"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
          </span>
        </div><input type="hidden" name="product-id" value="9428807811289" /><input type="hidden" name="section-id" value="template--21336520491225__product_list_RNMwfa" /></form></product-form-component></span>


<style>
  .subscription-btn{

}
.subscription-btn .add-to-cart-button {
height: auto;
padding: 6px 32px 5px 32px;
}
</style>









   
  <div 
  class="  spacing-style text-block text-block--AWmFBOEpOczNCV3Q0N__text_9frghn text-body-lg
    
  "

  style="
    --padding-block-start: 21px; --padding-block-end:8px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p><strong>You get:</strong></p>
     
  </div>
  

<style>
  
</style>







  <ul
    class="checklist"
    style="
      --checklist-gap: 12px;
      --checklist-icon-size: 17px;
      --checklist-icon-color: #99f646;
    "
    
  ><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <span class="metafield-multi_line_text_field">Access to the all-new P90X Gen Next and the entire P90X catalog: 145 total workouts including P90X, P90X2, P90X3
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      A 3-phase P90X Nutrition Plan to help burn fat and build muscle
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Support in The BODi Experience Community
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      No hidden fees, no commitments, easily cancel any time</span>
    
  </div>

<style>
  
</style>


        </li></ul>








</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  





   
  <rte-formatter 
  class=" divider spacing-style text-block text-block--Ab01rWEs2Rm5HZktOO__product_text_link_eP3UpV paragraph
    text-block--align-center rte 
  "

  style="
    --padding-block-start: 19px; --padding-block-end:7px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
      <a href="/products/p90x-subscription">
      
    <p><span style="text-decoration:underline">View Details</span></p>
     
      </a>
      
  </rte-formatter>
  

<style>
  .divider {
border-bottom: 1px solid #706F73;
max-width:90%;
}
</style>










   
  <div 
  class="  spacing-style text-block text-block--AdHE5VllRVUU0aUpta__text_7RaY7J text-body-xs
    text-block--align-center
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:10px; --padding-inline-end:10px; 

    
--color: var(--color-grayscale);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <p><div class="metafield-rich_text_field"><p>$9.99 billed today for the first month. Renews at $9.99 every month.‡</p></div></p>
     
  </div>
  

<style>
  
</style>





</div>
</div>
<style>
  
</style>





</div>
</div>
<style>
  .space-between{
flex: 1 1 100% !important;
}
.space-between > .group-block-content {
 justify-content: space-between;
}
</style>






  </div>
</product-card>




      </div>

      
        
</slideshow-slide>

  
    <slideshow-slide
  ref="slides[]"
  aria-hidden="true"
  style="view-timeline-name: --slide-1; --product-media-fit: cover;"
  
    class="resource-list__slide"
  
  
  
  
  
  
>
  
      

    
      
      <div
        class="resource-list__item"
      >
        



<style data-shopify>
  
</style>


<product-card
  class="product-card"
  data-product-id="9413925994713"
  data-product-variants-size="1"
  id="product-card-AVFVYUS9EdHhtTDZES__static-product-card-1"
  data-product-transition="false"
  
  
>
  
  <div
    class="
      product-card__content
      layout-panel-flex
      layout-panel-flex--column
      product-grid__card
      spacing-style
      border-style
      gap-style
       color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252
    "
    style="
      --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 30px;


  overflow: hidden;


      --flex-direction: column; --flex-wrap: nowrap;



--horizontal-alignment: ; --vertical-alignment: ;
--vertical-alignment-mobile: ;

      --padding-block-start: 0px;--padding-block-end: 17px;--padding-inline-start: 0px;--padding-inline-end: 0px;
      --product-card-gap: 0px;
      --quick-add-display: none;
      --quick-add-mobile-display: none;
      
      
      
      --zoom-out-padding-block-end: min(var(--padding-xs), 11.9px);
    "
  >
    
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  












  <div
    class="
  image-block image-block--AN2dlVWUxVHFwOGg3R__image_fYkCXd-1 image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.7789203084832905;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=3840" alt="Woman in athletic wear with &#39;10 Min Bodi&#39; text and &#39;NEW&#39; label on a dark background" srcset="//shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-en-us.png?v=1778702726&amp;width=3840 3840w" width="1384" height="778" class="image-block__image border-style" style="
  --ratio: 1.7789203084832905;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;
--border-radius-mobile: 0px;


">
  

  </div>











   
  <div 
  class=" carousel-badge spacing-style text-block text-block--AZHpBVEhHelhtVUUwS__text_LUVXVP-1 text-body-base
     text-block--background 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
      --text-background-color: #ffffff;
      --text-corner-radius: 21px;
      --text-padding: max(var(--padding-2xs), calc((var(--text-corner-radius) + var(--padding-xs)) * (1 - cos(45deg))));
    
  "

  
>
    
     
    <div class="metafield-rich_text_field"><p>Most Popular</p></div>
     
  </div>
  

<style>
  .carousel-badge {
position: absolute;
bottom: 0px;
color: #000;
border-radius: 0 5px 5px 0;
font-size:14px;
padding: 5px 10px;
}
.carousel-badge p {
margin-block: 0;
}
</style>





</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    space-between
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 12px;--padding-inline-start: max(20px, calc(var(--spacing-scale) * 24px));--padding-inline-end: max(20px, calc(var(--spacing-scale) * 24px));
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 18px;--padding-block-end: 15px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 2px;

--horizontal-alignment: center; --vertical-alignment: flex-end;
--vertical-alignment-mobile: flex-end;
"
  >
  

<product-price
  class="text-block  custom-typography custom-font-size custom-color text-center custom spacing-style"
  data-block-id="AenVFRUR5MGtydDNmW__price_rWqb6f-1"
  data-product-id="9413925994713"
  style="
    
--color: var(--color-foreground);--font-weight: 700;    --font-size: 2rem;--font-weight: 700;    --font-family: var(--font-subheading--family);    --text-transform: none;    --text-wrap: ;          --line-height: var(--line-height--body-loose);        --letter-spacing: var(--letter-spacing--body-normal);
    --padding-block-start: 11px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: fit-content;
  "
  
>
  <div ref="priceContainer">
  

  
    <span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">$0</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">$10</span>
    </span>
  
</div>

  <div id="shopify-block-Ad01ZT0xvS2ZMSmVMc__variant-marketing-copy-1" class="shopify-block"><div
        id="marketing-copy"
        data-marketing-copy=""
>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47683212837081"
                data-variant-marketing-copy=""
                hidden
        ></span>
    

    <span class="marketing-copy-text">
    

        
  </span>
</div>

<script>
    (function () {
        const marketingCopyEl = document.getElementById('marketing-copy');
        if (!marketingCopyEl) return;

        const marketingCopyTextEl = marketingCopyEl.querySelector('.marketing-copy-text');

        function getCurrentVariantId() {
            const checked = document.querySelectorAll(
                'variant-picker input[type="radio"]:checked'
            );

            let variantId = null;
            checked.forEach((input) => {
                if (input.dataset.variantId) {
                    variantId = input.dataset.variantId;
                }
            });

            return variantId;
        }

        function updateMarketingCopy(variantId) {
            if (!variantId) {
                return;
            };

            const variantMarketingCopyEl = marketingCopyEl.querySelector(
                `.variant-marketing-copy-data[data-variant-id="${variantId}"]`
            );

            const variantMarketingCopy = variantMarketingCopyEl?.dataset.variantMarketingCopy || '';

            if (variantMarketingCopy) {
                marketingCopyTextEl.textContent = variantMarketingCopy;
                marketingCopyEl.style.display = 'block';
            } else {
                marketingCopyTextEl.textContent = '';
                marketingCopyEl.style.display = 'none';
            }
        }

        document.addEventListener('click', function (e) {
            if (!e.target.closest('variant-picker')) return;

            setTimeout(() => {
                const selectedVariantId = e.target.dataset.variantId;
                updateMarketingCopy(selectedVariantId);
            }, 5);
        });
        updateMarketingCopy(getCurrentVariantId());
    })();
</script>



</div>


  
</product-price>

  <script type="application/json" data-price-sync-meta>
  {
    "currency": "USD",
    "locale": "en"
  }
</script>

<script>
  (() => {
    if (window.__rechargePriceSyncInitialized) return;
    window.__rechargePriceSyncInitialized = true;

    /** @type {Object} */
    const meta = (() => {
      const el = document.querySelector('[data-price-sync-meta]');
      if (!el) return { currency: 'USD', locale: 'en' };

      try {
        return JSON.parse(el.textContent || '{}');
      } catch {
        return { currency: 'USD', locale: 'en' };
      }
    })();

    // Cached product JSON so variant/plan switches don't re-fetch.
    /** @type {Object|null} */
    let productData = null;

    /**
     * @param {number} cents
     * @returns {string}
     */
    const formatCents = (cents) => {
      const value = Number(cents || 0) / 100;

      try {
        return new Intl.NumberFormat(meta.locale || 'en', {
          style: 'currency',
          currency: meta.currency || 'USD',
          currencyDisplay: 'narrowSymbol',
          trailingZeroDisplay:"stripIfInteger"
        }).format(value);
      } catch {
        return value.toFixed(2);
      }
    };

    // Fetches /products/{handle}.js once and caches the full product payload.
    /** @returns {Promise<Object|null>} */
    const fetchProductData = async () => {
      if (productData) return productData;

      const pathname = window.location.pathname.replace(/\/$/, '');

      try {
        const response = await fetch(`${pathname}.js`);
        if (!response.ok) return null;

        productData = await response.json();
        return productData;
      } catch {
        return null;
      }
    };

    /**
     * @param {string|number} variantId
     * @param {Object} data
     * @param {string} sellingPlanId - Active selling plan ID, empty string for one-time
     * @returns {Object}
     */
    const getVariantPricing = (variantId, data, sellingPlanId) => {
      const id = Number(variantId);
      const variant = data.variants?.find((v) => v.id === id);
      if (!variant) return { price: data.price || 0, compareAtPrice: null };

      // Subscription mode: match the active selling plan allocation,
      // fall back to the first allocation if the exact plan isn't found.
      if (sellingPlanId) {
        const planId = Number(sellingPlanId);
        const allocation =
          variant.selling_plan_allocations?.find(
            (a) => a.selling_plan_id === planId
          ) || variant.selling_plan_allocations?.[0];

        if (allocation) {
          return {
            price: allocation.price,
            compareAtPrice: (allocation.compare_at_price === 0 && variant.compare_at_price > 0) ? variant.compare_at_price :
              (allocation.compare_at_price > allocation.price)
                ? allocation.compare_at_price
                : null,
          };
        }
      }
      
      // One-time mode (no selling plan): use the regular variant price.
      return {
        price: variant.price,
        compareAtPrice:
          variant.compare_at_price > variant.price
            ? variant.compare_at_price
            : null,
      };
    };

    /**
     * @param {number} price
     * @param {number|null} compareAtPrice
     * @returns {string}
     */
    const buildPriceHTML = (price, compareAtPrice) => {
      const formatted = formatCents(price);
      if (!compareAtPrice) {
        return `<span class="price">${formatted}</span>`;
      }
      return `<span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">${formatted}</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">${formatCents(compareAtPrice)}</span>
    </span>`;
      
    };

    // Reads current variant + selling plan from the DOM, resolves pricing
    // from cached JSON, and writes formatted HTML into [ref="priceContainer"].
    const syncPrice = async () => {
      const data = await fetchProductData();
      if (!data) return;

      const variantInput = document.querySelector('input[ref="variantId"]');
      const variantId =
        variantInput instanceof HTMLInputElement ? variantInput.value : null;

      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');
      const sellingPlanId =
        sellingPlanInput instanceof HTMLInputElement ? sellingPlanInput.value : '';

      const scope =
        variantInput?.closest('.shopify-section, dialog') || document;
      const container = scope.querySelector('[ref="priceContainer"]');
      if (!(container instanceof HTMLElement)) return;

      const { price, compareAtPrice } = variantId
        ? getVariantPricing(variantId, data, sellingPlanId)
        : { price: data.price || 0, compareAtPrice: null };

      container.innerHTML = buildPriceHTML(price, compareAtPrice);
    };

    const init = async () => {
      await syncPrice();

      const variantInput = document.querySelector('input[ref="variantId"]');

      // Re-sync when the selected variant changes (attribute set programmatically).
      if (variantInput instanceof HTMLInputElement) {
        const observer = new MutationObserver(() => syncPrice());
        observer.observe(variantInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
      }

      // Re-sync when the selling plan toggles between subscription and one-time.
      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');

      if (sellingPlanInput instanceof HTMLInputElement) {
        const spObserver = new MutationObserver(() => syncPrice());
        spObserver.observe(sellingPlanInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
        sellingPlanInput.addEventListener('change', () => syncPrice());
      }

      // Re-sync after product-price.js replaces the container with
      // server-rendered HTML on section re-render. setTimeout defers
      // our update so it runs after the DOM replacement.
      document.addEventListener('variant:update', () => {
        setTimeout(syncPrice, 0);
      });
    };

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
      init();
    }
  })();
</script>














   
  <div 
  class=" cadence spacing-style text-block text-block--AN1dLMVNwdW9VbzhwY__text_h93D79-1 text-body-base
    
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p>/monthly</p>
     
  </div>
  

<style>
  .cadence{
bottom:5px;
position: relative;
}
</style>





</div>
</div>
<style>
  
</style>






<span
  class="buy-buttons-block buy-buttons-block--AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-1 subscription-btn"
  
><product-form-component
      data-section-id="template--21336520491225__product_list_RNMwfa"
      data-product-id="9413925994713"
      data-product-url="/products/10-minute-bodi-subscription"
      on:submit="/handleSubmit"
      data-quantity-default="1"
    >
      
      <div
        class="visually-hidden"
        aria-live="assertive"
        role="status"
        aria-atomic="true"
        ref="liveRegion"
      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-1" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type="hidden"
          name="id"
          ref="variantId"
          value="47683212837081"
        >
          
        
        <style>
          recharge-custom-block {
          
          }
        </style>
        
        
          <input type="hidden" name="selling_plan" value="5847744729">
        
        
        <div
          class="product-form-buttons spacing-style"
          style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
        >
          

          

<span
  
  style="--add-to-cart-font-case: ;"
>
  <add-to-cart-component
  ref="addToCartButtonContainer"
  data-product-variant-media="//shop.bodi.com/cdn/shop/files/bodi-10-min-bodi-subscription-1x1.png?v=1772478697&width=100"
>
  <button
    id="BuyButtons-ProductSubmitButton-AOG5CeGNwWEh0WXRmQ__add-to-cart-1"
    type="submit"
    name="add"
    ref="addToCartButton"
    on:click="/handleClick"
    class="button add-to-cart-button button"
    
  >
    <span
      class="add-to-cart-text"
    >
      
      <span class="add-to-cart-text__content">Start Now</span>
    </span>
    <span
      aria-hidden="true"
      class="add-to-cart-text--added"
    >
      <span class="svg-wrapper add-to-cart-icon--added"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark">
<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
      <span class="">Added</span>
    </span>
  </button>
</add-to-cart-component>



</span>



          <span
            class="product-form-text__error hidden"
            ref="addToCartTextError"
          >
            <span class="svg-wrapper product-form-icon--error"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
          </span>
        </div><input type="hidden" name="product-id" value="9413925994713" /><input type="hidden" name="section-id" value="template--21336520491225__product_list_RNMwfa" /></form></product-form-component></span>


<style>
  .subscription-btn{

}
.subscription-btn .add-to-cart-button {
height: auto;
padding: 6px 32px 5px 32px;
}
</style>









   
  <div 
  class="  spacing-style text-block text-block--AWmFBOEpOczNCV3Q0N__text_9frghn-1 text-body-lg
    
  "

  style="
    --padding-block-start: 21px; --padding-block-end:8px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p><strong>You get:</strong></p>
     
  </div>
  

<style>
  
</style>







  <ul
    class="checklist"
    style="
      --checklist-gap: 12px;
      --checklist-icon-size: 17px;
      --checklist-icon-color: #99f646;
    "
    
  ><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-1 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <span class="metafield-multi_line_text_field">10-day FREE trial, then 10 Min BODi access for $10/month
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-1 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      400+ 10 minute workouts backed by science to get fast results
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-1 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      10 step-by-step 3-4 week 10-minute fitness programs
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-1 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Support in the BODi Experience Community
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-1 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      No hidden fees, no commitments, easily cancel any time</span>
    
  </div>

<style>
  
</style>


        </li></ul>








</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  





   
  <rte-formatter 
  class=" divider spacing-style text-block text-block--Ab01rWEs2Rm5HZktOO__product_text_link_eP3UpV-1 paragraph
    text-block--align-center rte 
  "

  style="
    --padding-block-start: 19px; --padding-block-end:7px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
      <a href="/products/10-minute-bodi-subscription">
      
    <p><span style="text-decoration:underline">View Details</span></p>
     
      </a>
      
  </rte-formatter>
  

<style>
  .divider {
border-bottom: 1px solid #706F73;
max-width:90%;
}
</style>










   
  <div 
  class="  spacing-style text-block text-block--AdHE5VllRVUU0aUpta__text_7RaY7J-1 text-body-xs
    text-block--align-center
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:10px; --padding-inline-end:10px; 

    
--color: var(--color-grayscale);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <p><div class="metafield-rich_text_field"><p>After the 10-day free trial. Renews at $10 every month.‡</p></div></p>
     
  </div>
  

<style>
  
</style>





</div>
</div>
<style>
  
</style>





</div>
</div>
<style>
  .space-between{
flex: 1 1 100% !important;
}
.space-between > .group-block-content {
 justify-content: space-between;
}
</style>






  </div>
</product-card>




      </div>

      
        
</slideshow-slide>

  
    <slideshow-slide
  ref="slides[]"
  aria-hidden="true"
  style="view-timeline-name: --slide-2; --product-media-fit: cover;"
  
    class="resource-list__slide"
  
  
  
  
  
  
>
  
      

    
      
      <div
        class="resource-list__item"
      >
        



<style data-shopify>
  
</style>


<product-card
  class="product-card"
  data-product-id="9413926519001"
  data-product-variants-size="1"
  id="product-card-AVFVYUS9EdHhtTDZES__static-product-card-2"
  data-product-transition="false"
  
  
>
  
  <div
    class="
      product-card__content
      layout-panel-flex
      layout-panel-flex--column
      product-grid__card
      spacing-style
      border-style
      gap-style
       color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252
    "
    style="
      --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 30px;


  overflow: hidden;


      --flex-direction: column; --flex-wrap: nowrap;



--horizontal-alignment: ; --vertical-alignment: ;
--vertical-alignment-mobile: ;

      --padding-block-start: 0px;--padding-block-end: 17px;--padding-inline-start: 0px;--padding-inline-end: 0px;
      --product-card-gap: 0px;
      --quick-add-display: none;
      --quick-add-mobile-display: none;
      
      
      
      --zoom-out-padding-block-end: min(var(--padding-xs), 11.9px);
    "
  >
    
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  












  <div
    class="
  image-block image-block--AN2dlVWUxVHFwOGg3R__image_fYkCXd-2 image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.7790055248618784;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=3840" alt="The Autumn Subscription" srcset="//shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1288x724-en-us.jpg?v=1772480244&amp;width=3840 3840w" width="1288" height="724" class="image-block__image border-style" style="
  --ratio: 1.7790055248618784;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;
--border-radius-mobile: 0px;


">
  

  </div>











<style>
  .carousel-badge {
position: absolute;
bottom: 0px;
color: #000;
border-radius: 0 5px 5px 0;
font-size:14px;
padding: 5px 10px;
}
.carousel-badge p {
margin-block: 0;
}
</style>





</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    space-between
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 12px;--padding-inline-start: max(20px, calc(var(--spacing-scale) * 24px));--padding-inline-end: max(20px, calc(var(--spacing-scale) * 24px));
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 18px;--padding-block-end: 15px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 2px;

--horizontal-alignment: center; --vertical-alignment: flex-end;
--vertical-alignment-mobile: flex-end;
"
  >
  

<product-price
  class="text-block  custom-typography custom-font-size custom-color text-center custom spacing-style"
  data-block-id="AenVFRUR5MGtydDNmW__price_rWqb6f-2"
  data-product-id="9413926519001"
  style="
    
--color: var(--color-foreground);--font-weight: 700;    --font-size: 2rem;--font-weight: 700;    --font-family: var(--font-subheading--family);    --text-transform: none;    --text-wrap: ;          --line-height: var(--line-height--body-loose);        --letter-spacing: var(--letter-spacing--body-normal);
    --padding-block-start: 11px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: fit-content;
  "
  
>
  <div ref="priceContainer">
  

  
     
    <span class="price">$9.99</span>
  

  
</div>

  <div id="shopify-block-Ad01ZT0xvS2ZMSmVMc__variant-marketing-copy-2" class="shopify-block"><div
        id="marketing-copy"
        data-marketing-copy=""
>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47683213361369"
                data-variant-marketing-copy=""
                hidden
        ></span>
    

    <span class="marketing-copy-text">
    

        
  </span>
</div>

<script>
    (function () {
        const marketingCopyEl = document.getElementById('marketing-copy');
        if (!marketingCopyEl) return;

        const marketingCopyTextEl = marketingCopyEl.querySelector('.marketing-copy-text');

        function getCurrentVariantId() {
            const checked = document.querySelectorAll(
                'variant-picker input[type="radio"]:checked'
            );

            let variantId = null;
            checked.forEach((input) => {
                if (input.dataset.variantId) {
                    variantId = input.dataset.variantId;
                }
            });

            return variantId;
        }

        function updateMarketingCopy(variantId) {
            if (!variantId) {
                return;
            };

            const variantMarketingCopyEl = marketingCopyEl.querySelector(
                `.variant-marketing-copy-data[data-variant-id="${variantId}"]`
            );

            const variantMarketingCopy = variantMarketingCopyEl?.dataset.variantMarketingCopy || '';

            if (variantMarketingCopy) {
                marketingCopyTextEl.textContent = variantMarketingCopy;
                marketingCopyEl.style.display = 'block';
            } else {
                marketingCopyTextEl.textContent = '';
                marketingCopyEl.style.display = 'none';
            }
        }

        document.addEventListener('click', function (e) {
            if (!e.target.closest('variant-picker')) return;

            setTimeout(() => {
                const selectedVariantId = e.target.dataset.variantId;
                updateMarketingCopy(selectedVariantId);
            }, 5);
        });
        updateMarketingCopy(getCurrentVariantId());
    })();
</script>



</div>


  
</product-price>

  <script type="application/json" data-price-sync-meta>
  {
    "currency": "USD",
    "locale": "en"
  }
</script>

<script>
  (() => {
    if (window.__rechargePriceSyncInitialized) return;
    window.__rechargePriceSyncInitialized = true;

    /** @type {Object} */
    const meta = (() => {
      const el = document.querySelector('[data-price-sync-meta]');
      if (!el) return { currency: 'USD', locale: 'en' };

      try {
        return JSON.parse(el.textContent || '{}');
      } catch {
        return { currency: 'USD', locale: 'en' };
      }
    })();

    // Cached product JSON so variant/plan switches don't re-fetch.
    /** @type {Object|null} */
    let productData = null;

    /**
     * @param {number} cents
     * @returns {string}
     */
    const formatCents = (cents) => {
      const value = Number(cents || 0) / 100;

      try {
        return new Intl.NumberFormat(meta.locale || 'en', {
          style: 'currency',
          currency: meta.currency || 'USD',
          currencyDisplay: 'narrowSymbol',
          trailingZeroDisplay:"stripIfInteger"
        }).format(value);
      } catch {
        return value.toFixed(2);
      }
    };

    // Fetches /products/{handle}.js once and caches the full product payload.
    /** @returns {Promise<Object|null>} */
    const fetchProductData = async () => {
      if (productData) return productData;

      const pathname = window.location.pathname.replace(/\/$/, '');

      try {
        const response = await fetch(`${pathname}.js`);
        if (!response.ok) return null;

        productData = await response.json();
        return productData;
      } catch {
        return null;
      }
    };

    /**
     * @param {string|number} variantId
     * @param {Object} data
     * @param {string} sellingPlanId - Active selling plan ID, empty string for one-time
     * @returns {Object}
     */
    const getVariantPricing = (variantId, data, sellingPlanId) => {
      const id = Number(variantId);
      const variant = data.variants?.find((v) => v.id === id);
      if (!variant) return { price: data.price || 0, compareAtPrice: null };

      // Subscription mode: match the active selling plan allocation,
      // fall back to the first allocation if the exact plan isn't found.
      if (sellingPlanId) {
        const planId = Number(sellingPlanId);
        const allocation =
          variant.selling_plan_allocations?.find(
            (a) => a.selling_plan_id === planId
          ) || variant.selling_plan_allocations?.[0];

        if (allocation) {
          return {
            price: allocation.price,
            compareAtPrice: (allocation.compare_at_price === 0 && variant.compare_at_price > 0) ? variant.compare_at_price :
              (allocation.compare_at_price > allocation.price)
                ? allocation.compare_at_price
                : null,
          };
        }
      }
      
      // One-time mode (no selling plan): use the regular variant price.
      return {
        price: variant.price,
        compareAtPrice:
          variant.compare_at_price > variant.price
            ? variant.compare_at_price
            : null,
      };
    };

    /**
     * @param {number} price
     * @param {number|null} compareAtPrice
     * @returns {string}
     */
    const buildPriceHTML = (price, compareAtPrice) => {
      const formatted = formatCents(price);
      if (!compareAtPrice) {
        return `<span class="price">${formatted}</span>`;
      }
      return `<span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">${formatted}</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">${formatCents(compareAtPrice)}</span>
    </span>`;
      
    };

    // Reads current variant + selling plan from the DOM, resolves pricing
    // from cached JSON, and writes formatted HTML into [ref="priceContainer"].
    const syncPrice = async () => {
      const data = await fetchProductData();
      if (!data) return;

      const variantInput = document.querySelector('input[ref="variantId"]');
      const variantId =
        variantInput instanceof HTMLInputElement ? variantInput.value : null;

      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');
      const sellingPlanId =
        sellingPlanInput instanceof HTMLInputElement ? sellingPlanInput.value : '';

      const scope =
        variantInput?.closest('.shopify-section, dialog') || document;
      const container = scope.querySelector('[ref="priceContainer"]');
      if (!(container instanceof HTMLElement)) return;

      const { price, compareAtPrice } = variantId
        ? getVariantPricing(variantId, data, sellingPlanId)
        : { price: data.price || 0, compareAtPrice: null };

      container.innerHTML = buildPriceHTML(price, compareAtPrice);
    };

    const init = async () => {
      await syncPrice();

      const variantInput = document.querySelector('input[ref="variantId"]');

      // Re-sync when the selected variant changes (attribute set programmatically).
      if (variantInput instanceof HTMLInputElement) {
        const observer = new MutationObserver(() => syncPrice());
        observer.observe(variantInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
      }

      // Re-sync when the selling plan toggles between subscription and one-time.
      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');

      if (sellingPlanInput instanceof HTMLInputElement) {
        const spObserver = new MutationObserver(() => syncPrice());
        spObserver.observe(sellingPlanInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
        sellingPlanInput.addEventListener('change', () => syncPrice());
      }

      // Re-sync after product-price.js replaces the container with
      // server-rendered HTML on section re-render. setTimeout defers
      // our update so it runs after the DOM replacement.
      document.addEventListener('variant:update', () => {
        setTimeout(syncPrice, 0);
      });
    };

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
      init();
    }
  })();
</script>














   
  <div 
  class=" cadence spacing-style text-block text-block--AN1dLMVNwdW9VbzhwY__text_h93D79-2 text-body-base
    
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p>/monthly</p>
     
  </div>
  

<style>
  .cadence{
bottom:5px;
position: relative;
}
</style>





</div>
</div>
<style>
  
</style>






<span
  class="buy-buttons-block buy-buttons-block--AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-2 subscription-btn"
  
><product-form-component
      data-section-id="template--21336520491225__product_list_RNMwfa"
      data-product-id="9413926519001"
      data-product-url="/products/autumn-calabrese-subscription"
      on:submit="/handleSubmit"
      data-quantity-default="1"
    >
      
      <div
        class="visually-hidden"
        aria-live="assertive"
        role="status"
        aria-atomic="true"
        ref="liveRegion"
      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-2" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type="hidden"
          name="id"
          ref="variantId"
          value="47683213361369"
        >
          
        
        <style>
          recharge-custom-block {
          
          }
        </style>
        
        
          <input type="hidden" name="selling_plan" value="5785321689">
        
        
        <div
          class="product-form-buttons spacing-style"
          style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
        >
          

          

<span
  
  style="--add-to-cart-font-case: ;"
>
  <add-to-cart-component
  ref="addToCartButtonContainer"
  data-product-variant-media="//shop.bodi.com/cdn/shop/files/bodi-the-autumn-subscription-1x1.png?v=1772478801&width=100"
>
  <button
    id="BuyButtons-ProductSubmitButton-AOG5CeGNwWEh0WXRmQ__add-to-cart-2"
    type="submit"
    name="add"
    ref="addToCartButton"
    on:click="/handleClick"
    class="button add-to-cart-button button"
    
  >
    <span
      class="add-to-cart-text"
    >
      
      <span class="add-to-cart-text__content">Start Now</span>
    </span>
    <span
      aria-hidden="true"
      class="add-to-cart-text--added"
    >
      <span class="svg-wrapper add-to-cart-icon--added"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark">
<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
      <span class="">Added</span>
    </span>
  </button>
</add-to-cart-component>



</span>



          <span
            class="product-form-text__error hidden"
            ref="addToCartTextError"
          >
            <span class="svg-wrapper product-form-icon--error"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
          </span>
        </div><input type="hidden" name="product-id" value="9413926519001" /><input type="hidden" name="section-id" value="template--21336520491225__product_list_RNMwfa" /></form></product-form-component></span>


<style>
  .subscription-btn{

}
.subscription-btn .add-to-cart-button {
height: auto;
padding: 6px 32px 5px 32px;
}
</style>









   
  <div 
  class="  spacing-style text-block text-block--AWmFBOEpOczNCV3Q0N__text_9frghn-2 text-body-lg
    
  "

  style="
    --padding-block-start: 21px; --padding-block-end:8px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p><strong>You get:</strong></p>
     
  </div>
  

<style>
  
</style>







  <ul
    class="checklist"
    style="
      --checklist-gap: 12px;
      --checklist-icon-size: 17px;
      --checklist-icon-color: #99f646;
    "
    
  ><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-2 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <span class="metafield-multi_line_text_field">20 proven fitness programs, like 21 Day Fix, 80 Day Obsession, and 9 Week Control Freak. You’ll also get access to new content, like the all-new Track Pilates, and the breakthrough hormone-health program Belle Vitale
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-2 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Easy-to-follow recipes and nutrition plans, including Portion Fix, 4 Week Gut Protocol, and Belle Vitale
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-2 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Step-by-step guidance from Autumn as she helps you get fast RESULTS
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-2 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Access to Autumn&#39;s accountability room in The BODi Experience
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-2 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      No hidden fees, no commitments, easily cancel any time</span>
    
  </div>

<style>
  
</style>


        </li></ul>








</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  





   
  <rte-formatter 
  class=" divider spacing-style text-block text-block--Ab01rWEs2Rm5HZktOO__product_text_link_eP3UpV-2 paragraph
    text-block--align-center rte 
  "

  style="
    --padding-block-start: 19px; --padding-block-end:7px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
      <a href="/products/autumn-calabrese-subscription">
      
    <p><span style="text-decoration:underline">View Details</span></p>
     
      </a>
      
  </rte-formatter>
  

<style>
  .divider {
border-bottom: 1px solid #706F73;
max-width:90%;
}
</style>










   
  <div 
  class="  spacing-style text-block text-block--AdHE5VllRVUU0aUpta__text_7RaY7J-2 text-body-xs
    text-block--align-center
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:10px; --padding-inline-end:10px; 

    
--color: var(--color-grayscale);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <p><div class="metafield-rich_text_field"><p>$9.99 billed today for the first month. Renews at $9.99 every month.‡</p></div></p>
     
  </div>
  

<style>
  
</style>





</div>
</div>
<style>
  
</style>





</div>
</div>
<style>
  .space-between{
flex: 1 1 100% !important;
}
.space-between > .group-block-content {
 justify-content: space-between;
}
</style>






  </div>
</product-card>




      </div>

      
        
</slideshow-slide>

  
    <slideshow-slide
  ref="slides[]"
  aria-hidden="true"
  style="view-timeline-name: --slide-3; --product-media-fit: cover;"
  
    class="resource-list__slide"
  
  
  
  
  
  
>
  
      

    
      
      <div
        class="resource-list__item"
      >
        



<style data-shopify>
  
</style>


<product-card
  class="product-card"
  data-product-id="9413928059097"
  data-product-variants-size="1"
  id="product-card-AVFVYUS9EdHhtTDZES__static-product-card-3"
  data-product-transition="false"
  
  
>
  
  <div
    class="
      product-card__content
      layout-panel-flex
      layout-panel-flex--column
      product-grid__card
      spacing-style
      border-style
      gap-style
       color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252
    "
    style="
      --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 30px;


  overflow: hidden;


      --flex-direction: column; --flex-wrap: nowrap;



--horizontal-alignment: ; --vertical-alignment: ;
--vertical-alignment-mobile: ;

      --padding-block-start: 0px;--padding-block-end: 17px;--padding-inline-start: 0px;--padding-inline-end: 0px;
      --product-card-gap: 0px;
      --quick-add-display: none;
      --quick-add-mobile-display: none;
      
      
      
      --zoom-out-padding-block-end: min(var(--padding-xs), 11.9px);
    "
  >
    
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  












  <div
    class="
  image-block image-block--AN2dlVWUxVHFwOGg3R__image_fYkCXd-3 image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.7790055248618784;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=3840" alt="The Shaun T Subscription" srcset="//shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-en-us.jpg?v=1772480252&amp;width=3840 3840w" width="1288" height="724" class="image-block__image border-style" style="
  --ratio: 1.7790055248618784;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;
--border-radius-mobile: 0px;


">
  

  </div>











<style>
  .carousel-badge {
position: absolute;
bottom: 0px;
color: #000;
border-radius: 0 5px 5px 0;
font-size:14px;
padding: 5px 10px;
}
.carousel-badge p {
margin-block: 0;
}
</style>





</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    space-between
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 12px;--padding-inline-start: max(20px, calc(var(--spacing-scale) * 24px));--padding-inline-end: max(20px, calc(var(--spacing-scale) * 24px));
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 0px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  

<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 18px;--padding-block-end: 15px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--row
       mobile-column
    "
    style="--flex-direction: row; --flex-wrap: nowrap;

--gap: 2px;

--horizontal-alignment: center; --vertical-alignment: flex-end;
--vertical-alignment-mobile: flex-end;
"
  >
  

<product-price
  class="text-block  custom-typography custom-font-size custom-color text-center custom spacing-style"
  data-block-id="AenVFRUR5MGtydDNmW__price_rWqb6f-3"
  data-product-id="9413928059097"
  style="
    
--color: var(--color-foreground);--font-weight: 700;    --font-size: 2rem;--font-weight: 700;    --font-family: var(--font-subheading--family);    --text-transform: none;    --text-wrap: ;          --line-height: var(--line-height--body-loose);        --letter-spacing: var(--letter-spacing--body-normal);
    --padding-block-start: 11px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --width: fit-content;
  "
  
>
  <div ref="priceContainer">
  

  
     
    <span class="price">$9.99</span>
  

  
</div>

  <div id="shopify-block-Ad01ZT0xvS2ZMSmVMc__variant-marketing-copy-3" class="shopify-block"><div
        id="marketing-copy"
        data-marketing-copy=""
>
    
        <span
                class="variant-marketing-copy-data"
                data-variant-id="47683215589593"
                data-variant-marketing-copy=""
                hidden
        ></span>
    

    <span class="marketing-copy-text">
    

        
  </span>
</div>

<script>
    (function () {
        const marketingCopyEl = document.getElementById('marketing-copy');
        if (!marketingCopyEl) return;

        const marketingCopyTextEl = marketingCopyEl.querySelector('.marketing-copy-text');

        function getCurrentVariantId() {
            const checked = document.querySelectorAll(
                'variant-picker input[type="radio"]:checked'
            );

            let variantId = null;
            checked.forEach((input) => {
                if (input.dataset.variantId) {
                    variantId = input.dataset.variantId;
                }
            });

            return variantId;
        }

        function updateMarketingCopy(variantId) {
            if (!variantId) {
                return;
            };

            const variantMarketingCopyEl = marketingCopyEl.querySelector(
                `.variant-marketing-copy-data[data-variant-id="${variantId}"]`
            );

            const variantMarketingCopy = variantMarketingCopyEl?.dataset.variantMarketingCopy || '';

            if (variantMarketingCopy) {
                marketingCopyTextEl.textContent = variantMarketingCopy;
                marketingCopyEl.style.display = 'block';
            } else {
                marketingCopyTextEl.textContent = '';
                marketingCopyEl.style.display = 'none';
            }
        }

        document.addEventListener('click', function (e) {
            if (!e.target.closest('variant-picker')) return;

            setTimeout(() => {
                const selectedVariantId = e.target.dataset.variantId;
                updateMarketingCopy(selectedVariantId);
            }, 5);
        });
        updateMarketingCopy(getCurrentVariantId());
    })();
</script>



</div>


  
</product-price>

  <script type="application/json" data-price-sync-meta>
  {
    "currency": "USD",
    "locale": "en"
  }
</script>

<script>
  (() => {
    if (window.__rechargePriceSyncInitialized) return;
    window.__rechargePriceSyncInitialized = true;

    /** @type {Object} */
    const meta = (() => {
      const el = document.querySelector('[data-price-sync-meta]');
      if (!el) return { currency: 'USD', locale: 'en' };

      try {
        return JSON.parse(el.textContent || '{}');
      } catch {
        return { currency: 'USD', locale: 'en' };
      }
    })();

    // Cached product JSON so variant/plan switches don't re-fetch.
    /** @type {Object|null} */
    let productData = null;

    /**
     * @param {number} cents
     * @returns {string}
     */
    const formatCents = (cents) => {
      const value = Number(cents || 0) / 100;

      try {
        return new Intl.NumberFormat(meta.locale || 'en', {
          style: 'currency',
          currency: meta.currency || 'USD',
          currencyDisplay: 'narrowSymbol',
          trailingZeroDisplay:"stripIfInteger"
        }).format(value);
      } catch {
        return value.toFixed(2);
      }
    };

    // Fetches /products/{handle}.js once and caches the full product payload.
    /** @returns {Promise<Object|null>} */
    const fetchProductData = async () => {
      if (productData) return productData;

      const pathname = window.location.pathname.replace(/\/$/, '');

      try {
        const response = await fetch(`${pathname}.js`);
        if (!response.ok) return null;

        productData = await response.json();
        return productData;
      } catch {
        return null;
      }
    };

    /**
     * @param {string|number} variantId
     * @param {Object} data
     * @param {string} sellingPlanId - Active selling plan ID, empty string for one-time
     * @returns {Object}
     */
    const getVariantPricing = (variantId, data, sellingPlanId) => {
      const id = Number(variantId);
      const variant = data.variants?.find((v) => v.id === id);
      if (!variant) return { price: data.price || 0, compareAtPrice: null };

      // Subscription mode: match the active selling plan allocation,
      // fall back to the first allocation if the exact plan isn't found.
      if (sellingPlanId) {
        const planId = Number(sellingPlanId);
        const allocation =
          variant.selling_plan_allocations?.find(
            (a) => a.selling_plan_id === planId
          ) || variant.selling_plan_allocations?.[0];

        if (allocation) {
          return {
            price: allocation.price,
            compareAtPrice: (allocation.compare_at_price === 0 && variant.compare_at_price > 0) ? variant.compare_at_price :
              (allocation.compare_at_price > allocation.price)
                ? allocation.compare_at_price
                : null,
          };
        }
      }
      
      // One-time mode (no selling plan): use the regular variant price.
      return {
        price: variant.price,
        compareAtPrice:
          variant.compare_at_price > variant.price
            ? variant.compare_at_price
            : null,
      };
    };

    /**
     * @param {number} price
     * @param {number|null} compareAtPrice
     * @returns {string}
     */
    const buildPriceHTML = (price, compareAtPrice) => {
      const formatted = formatCents(price);
      if (!compareAtPrice) {
        return `<span class="price">${formatted}</span>`;
      }
      return `<span role="group" class="regular-price-container">
      <span class="visually-hidden">Sale price&nbsp;</span>
      <span class="price">${formatted}</span>
    </span>
  

  
    <span role="group" class="compare-at-price-container">
      <span class="visually-hidden">Regular price&nbsp;</span>
      <span class="compare-at-price">${formatCents(compareAtPrice)}</span>
    </span>`;
      
    };

    // Reads current variant + selling plan from the DOM, resolves pricing
    // from cached JSON, and writes formatted HTML into [ref="priceContainer"].
    const syncPrice = async () => {
      const data = await fetchProductData();
      if (!data) return;

      const variantInput = document.querySelector('input[ref="variantId"]');
      const variantId =
        variantInput instanceof HTMLInputElement ? variantInput.value : null;

      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');
      const sellingPlanId =
        sellingPlanInput instanceof HTMLInputElement ? sellingPlanInput.value : '';

      const scope =
        variantInput?.closest('.shopify-section, dialog') || document;
      const container = scope.querySelector('[ref="priceContainer"]');
      if (!(container instanceof HTMLElement)) return;

      const { price, compareAtPrice } = variantId
        ? getVariantPricing(variantId, data, sellingPlanId)
        : { price: data.price || 0, compareAtPrice: null };

      container.innerHTML = buildPriceHTML(price, compareAtPrice);
    };

    const init = async () => {
      await syncPrice();

      const variantInput = document.querySelector('input[ref="variantId"]');

      // Re-sync when the selected variant changes (attribute set programmatically).
      if (variantInput instanceof HTMLInputElement) {
        const observer = new MutationObserver(() => syncPrice());
        observer.observe(variantInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
      }

      // Re-sync when the selling plan toggles between subscription and one-time.
      const sellingPlanInput = document.querySelector('input[name="selling_plan"]');

      if (sellingPlanInput instanceof HTMLInputElement) {
        const spObserver = new MutationObserver(() => syncPrice());
        spObserver.observe(sellingPlanInput, {
          attributes: true,
          attributeFilter: ['value'],
        });
        sellingPlanInput.addEventListener('change', () => syncPrice());
      }

      // Re-sync after product-price.js replaces the container with
      // server-rendered HTML on section re-render. setTimeout defers
      // our update so it runs after the DOM replacement.
      document.addEventListener('variant:update', () => {
        setTimeout(syncPrice, 0);
      });
    };

    if (document.readyState === 'loading') {
      document.addEventListener('DOMContentLoaded', init, { once: true });
    } else {
      init();
    }
  })();
</script>














   
  <div 
  class=" cadence spacing-style text-block text-block--AN1dLMVNwdW9VbzhwY__text_h93D79-3 text-body-base
    
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p>/monthly</p>
     
  </div>
  

<style>
  .cadence{
bottom:5px;
position: relative;
}
</style>





</div>
</div>
<style>
  
</style>






<span
  class="buy-buttons-block buy-buttons-block--AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-3 subscription-btn"
  
><product-form-component
      data-section-id="template--21336520491225__product_list_RNMwfa"
      data-product-id="9413928059097"
      data-product-url="/products/shaun-t-subscription"
      on:submit="/handleSubmit"
      data-quantity-default="1"
    >
      
      <div
        class="visually-hidden"
        aria-live="assertive"
        role="status"
        aria-atomic="true"
        ref="liveRegion"
      ></div><form method="post" action="/cart/add" id="BuyButtons-ProductForm-AYnNaK0E2c1R2eG9nW__buy_buttons_Xqz97L-3" accept-charset="UTF-8" class="shopify-product-form" enctype="multipart/form-data" novalidate="novalidate" data-type="add-to-cart-form"><input type="hidden" name="form_type" value="product" /><input type="hidden" name="utf8" value="✓" /><input
          type="hidden"
          name="id"
          ref="variantId"
          value="47683215589593"
        >
          
        
        <style>
          recharge-custom-block {
          
          }
        </style>
        
        
          <input type="hidden" name="selling_plan" value="5785354457">
        
        
        <div
          class="product-form-buttons spacing-style"
          style="--padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;"
        >
          

          

<span
  
  style="--add-to-cart-font-case: ;"
>
  <add-to-cart-component
  ref="addToCartButtonContainer"
  data-product-variant-media="//shop.bodi.com/cdn/shop/files/bodi-the-shaun-t-subscription-1x1.png?v=1772479513&width=100"
>
  <button
    id="BuyButtons-ProductSubmitButton-AOG5CeGNwWEh0WXRmQ__add-to-cart-3"
    type="submit"
    name="add"
    ref="addToCartButton"
    on:click="/handleClick"
    class="button add-to-cart-button button"
    
  >
    <span
      class="add-to-cart-text"
    >
      
      <span class="add-to-cart-text__content">Start Now</span>
    </span>
    <span
      aria-hidden="true"
      class="add-to-cart-text--added"
    >
      <span class="svg-wrapper add-to-cart-icon--added"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark">
<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
      <span class="">Added</span>
    </span>
  </button>
</add-to-cart-component>



</span>



          <span
            class="product-form-text__error hidden"
            ref="addToCartTextError"
          >
            <span class="svg-wrapper product-form-icon--error"><svg class="icon icon-error" viewBox="0 0 13 13">
  <circle cx="6.5" cy="6.5" r="5.5" stroke="#fff" stroke-width="var(--icon-stroke-width)"/>
  <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width=".7"/>
  <path fill="#fff" d="m5.874 3.528.1 4.044h1.053l.1-4.044zm.627 6.133c.38 0 .68-.288.68-.656s-.3-.656-.68-.656-.681.288-.681.656.3.656.68.656"/>
  <path fill="#fff" stroke="#EB001B" stroke-width=".7" d="M5.874 3.178h-.359l.01.359.1 4.044.008.341h1.736l.008-.341.1-4.044.01-.359H5.873Zm.627 6.833c.56 0 1.03-.432 1.03-1.006s-.47-1.006-1.03-1.006-1.031.432-1.031 1.006.47 1.006 1.03 1.006Z"/>
</svg>
</span>
          </span>
        </div><input type="hidden" name="product-id" value="9413928059097" /><input type="hidden" name="section-id" value="template--21336520491225__product_list_RNMwfa" /></form></product-form-component></span>


<style>
  .subscription-btn{

}
.subscription-btn .add-to-cart-button {
height: auto;
padding: 6px 32px 5px 32px;
}
</style>









   
  <div 
  class="  spacing-style text-block text-block--AWmFBOEpOczNCV3Q0N__text_9frghn-3 text-body-lg
    
  "

  style="
    --padding-block-start: 21px; --padding-block-end:8px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: fit-content;
    --max-width: var(--max-width--body-normal);
    
    
  "

  
>
    
     
    <p><strong>You get:</strong></p>
     
  </div>
  

<style>
  
</style>







  <ul
    class="checklist"
    style="
      --checklist-gap: 12px;
      --checklist-icon-size: 17px;
      --checklist-icon-color: #99f646;
    "
    
  ><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-3 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      <span class="metafield-multi_line_text_field">19 proven Shaun T fitness programs, from classics like INSANITY®, T25®, and LET&#39;S GET UP, to new fan favorites, including DIG DEEPER and Transform :20 – you’ll also get access to his NEW program, DIG IN.
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-3 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Step-by-step guidance throughout every workout, each designed to deliver RESULTS
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-3 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      Support in the BODi Experience Community
    
  </div>

<style>
  
</style>


        </li><li class="checklist__item">
          <span class="checklist__icon" aria-hidden="true"><svg
                class="checklist__svg"
                viewBox="0 0 20 20"
                role="presentation"
                focusable="false"
                aria-hidden="true"
              >
                <path
                  d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658"
                  fill="none"
                  stroke="currentColor"
                  stroke-width="1.75"
                  stroke-linecap="round"
                  stroke-linejoin="round"
                />
              </svg></span>
          





  
  <div 
  class="checklist__text  spacing-style text-block text-block--ARVUzVThCZHhmZ2pZN__checklist_iRrcj8-3 text-body-sm
    text-block--align-
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);      --font-weight: ;
    --width: 100%;
    --max-width: var(--max-width--body-);
    
      --text-align: ;
    
    
  "

  
>
    
      No hidden fees, no commitments, easily cancel any time</span>
    
  </div>

<style>
  
</style>


        </li></ul>








</div>
</div>
<style>
  
</style>






<div
  class="
    group-block
    group-block--height-fit
    group-block--width-fill
    border-style
    spacing-style
    size-style
    
    
    
    
  "
  style="
    --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;



    --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
    --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
    
  "
  
  data-testid="group-block"
><div class="group-block__media-wrapper">
    

    
  </div>

  <div
    class="
      group-block-content
      
      layout-panel-flex
      layout-panel-flex--column
       mobile-column
    "
    style="--flex-direction: column; --flex-wrap: nowrap;

--gap: 12px;

--horizontal-alignment: flex-start; --vertical-alignment: center;
--vertical-alignment-mobile: center;
"
  >
  





   
  <rte-formatter 
  class=" divider spacing-style text-block text-block--Ab01rWEs2Rm5HZktOO__product_text_link_eP3UpV-3 paragraph
    text-block--align-center rte 
  "

  style="
    --padding-block-start: 19px; --padding-block-end:7px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
      <a href="/products/shaun-t-subscription">
      
    <p><span style="text-decoration:underline">View Details</span></p>
     
      </a>
      
  </rte-formatter>
  

<style>
  .divider {
border-bottom: 1px solid #706F73;
max-width:90%;
}
</style>










   
  <div 
  class="  spacing-style text-block text-block--AdHE5VllRVUU0aUpta__text_7RaY7J-3 text-body-xs
    text-block--align-center
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:10px; --padding-inline-end:10px; 

    
--color: var(--color-grayscale);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-normal);
    
      --text-align: center;
    
    
  "

  
>
    
     
    <p><div class="metafield-rich_text_field"><p>$9.99 billed today for the first month. Renews at $9.99 every month.‡</p></div></p>
     
  </div>
  

<style>
  
</style>





</div>
</div>
<style>
  
</style>





</div>
</div>
<style>
  .space-between{
flex: 1 1 100% !important;
}
.space-between > .group-block-content {
 justify-content: space-between;
}
</style>






  </div>
</product-card>




      </div>
</slideshow-slide>

  

    </slideshow-slides>
  </slideshow-container>
  
</slideshow-component>

</div>

      
  </div>

  

  <div
    class="section-resource-list__content"
    style="--horizontal-alignment: center;"
  ></div>
  <div class="custom-section-background">
    

  </div>
</div>

</div><div id="shopify-section-template--21336520491225__custom_liquid_ht7nLF" class="shopify-section"><div class="section-background color-scheme-1"></div>
<div
  class="section section--page-width spacing-style color-scheme-1"
  style="--padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 
"
>
  <style>
@media (max-width:749px) {
slideshow-slides:not(:has(> :nth-child(5))) slideshow-slide {
   width: 80vw !important;
}
slideshow-slides:not(:has(> :nth-child(3))) slideshow-slide:first-child {
padding-left: 24px;
}
slideshow-slides:not(:has(> :nth-child(3))) slideshow-slide:last-child {
padding-right: 24px;
}
}
@media (min-width:750px){
slideshow-slides:not(:has(> :nth-child(3))) {
justify-content: center;
}
slideshow-slides:not(:has(> :nth-child(3))) slideshow-slide {
    min-width: 40% !important;
}
slideshow-slides:not(:has(> :nth-child(3))) slideshow-slide .subscription-btn .add-to-cart-button {
    height: auto;
    padding: 6px 32px 5px 32px;
    max-width: max-content;
    margin: 0 auto;
}
}
@media (max-width:750px){

    .group-block-content:has(> product-price) {
        flex-flow: row !important;
        justify-content: center;
        align-items: end;
    }
} 
</style>
</div>


</div><div id="shopify-section-template--21336520491225__section_chkKQy" class="shopify-section section-wrapper">

  <div class="section-wrapper ">

<div class="section-background color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252"></div>
<div
  class="section section--page-width color-scheme-20731c7a-b0ca-4483-80fd-2d393a3f8252"

  

  style="
    

    
  "
>
 

  <div
    class="border-style custom-section-content"
    style="--border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;


"
  >
    
      <div
  class="overlay overlay--solid"
  style="
    --overlay-layer: 0;
    --overlay-color: #161819;
    --overlay-color--end: rgba(22, 24, 25, 0);
    --overlay-direction: to top; --overlay-border-radius: 0px;"
></div>



    
 <div class="custom-section-background">
    

  </div>
    <div
      class="
        spacing-style
        layout-panel-flex
        layout-panel-flex--row
        section-content-wrapper
        
      "
      style="
        --flex-direction: row; --flex-wrap: nowrap;

--gap: 24px;

--horizontal-alignment: center; --vertical-alignment: center;
--vertical-alignment-mobile: center;

        --padding-block-start: 14px;--padding-block-end: 14px;
      "
      data-testid="section-content"
    >
      
    












  <div
    class="
  image-block image-block--AQzZUSDZOQlozUXZ4b__image_mJQ9fx image-block--height-fit spacing-style size-style
"
    style="
  --ratio: 1.1507936507936507;
  --image-scale: 100%;
  --size-style-width: 100%;--size-style-height: fit;--size-style-width-mobile: 100%; --size-style-width-mobile-min: 5rem;
  --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;
  --object-fit: cover;
  --object-position: center center;
"
    
  >
    
<img src="//shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=3840" alt="31 Days money back guarantee" srcset="//shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=352 352w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=832 832w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=1200 1200w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=1600 1600w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=1920 1920w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=2560 2560w, //shop.bodi.com/cdn/shop/files/bodi-money-back-guarantee-seal.png?v=1772480311&amp;width=3840 3840w" width="290" height="252" loading="lazy" class="image-block__image border-style" style="
  --ratio: 1.1507936507936507;
  --border-width: 1px; --border-style: none;
--border-color: rgb(var(--color-border-rgb) / 1.0);
--border-radius: 0px;
--border-radius-mobile: 0px;


">
  

  </div>











   
  <div 
  class="  spacing-style text-block text-block--AVERCcVRpblFxbzF2c__text_bVnp6k text-body-base
    text-block--align-left text-block--full-width 
  "

  style="
    --padding-block-start: 0px; --padding-block-end:0px; 
--padding-inline-start:0px; --padding-inline-end:0px; 

    
--color: var(--color-foreground);--font-weight: 500;
    --width: 100%;
    --max-width: var(--max-width--body-none);
    
      --text-align: left;
    
    
  "

  
>
    
     
    <p>Our plans are backed by a 31 day money back guarantee, less shipping & handling. Excludes subscriptions initiated by free trial, additional terms and conditions apply.†</p>
     
  </div>
  

<style>
  
</style>





  
    </div>
  </div>
</div>
</div>




<style> #shopify-section-template--21336520491225__section_chkKQy img {width: 64px; height: auto;} #shopify-section-template--21336520491225__section_chkKQy .image-block {display: flex; width: auto;} </style></div>
</main>

    <!-- BEGIN sections: footer-group -->
<footer id="shopify-section-sections--21336457314521__sticky_footer_3Y4ahy" class="shopify-section shopify-section-group-footer-group footer-section"></footer><footer id="shopify-section-sections--21336457314521__sticky_footer_V8LUAT" class="shopify-section shopify-section-group-footer-group footer-section"></footer><footer id="shopify-section-sections--21336457314521__sticky_footer_V3Lfqb" class="shopify-section shopify-section-group-footer-group footer-section"></footer><footer id="shopify-section-sections--21336457314521__footer_hKCm4H" class="shopify-section shopify-section-group-footer-group footer-section">

<section class="footer">
  <div class="footer__content"><div class="footer__top">
      <div class="footer__logo-section">
        <a href="/" class="footer__logo">
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/desktop-bodi-logo-dark.svg?v=39598879658721709861776873391"
            alt="Bodi by Beachbody"
            width="123"
            height="40"
            loading="lazy"
          >
        </a>
        <div
  class="locale-switcher locale-switcher--footer "
  data-current-locale-base-url="https://shop.bodi.com"
>
  <button
    class="locale-switcher__button"
    type="button"
    aria-expanded="false"
    aria-haspopup="true"
    data-locale-switcher-button
  ><img
        src="//shop.bodi.com/cdn/shop/t/2/assets/us_flag.svg?v=146820449465311856841771353646"
        alt="U.S. flag"
        class="locale-switcher__flag"
        width="20"
        height="20"
      >
      <span class="locale-switcher__label-wrapper">
        <span class="locale-switcher__label locale-switcher__label--normal">U.S. English</span>
        <span class="locale-switcher__label locale-switcher__label--bold">U.S. English</span>
      </span><span class="locale-switcher__chevron">
      <svg
        xmlns="http://www.w3.org/2000/svg"
        viewBox="0 0 20 20"
        fill="currentColor"
        aria-hidden="true"
      >
        <path
          fill-rule="evenodd"
          d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
          clip-rule="evenodd"
        />
      </svg>
    </span>
  </button>

  <div
    class="locale-switcher__dropdown closed"
    role="menu"
    data-locale-switcher-dropdown
  >
    <div class="locale-switcher__dropdown-content"><a
          href="https://shop-ca.bodi.com"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="en_CA"
          data-locale-base-url="https://shop-ca.bodi.com"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/ca_flag.svg?v=140489053438850075871771353646"
            alt="Canada flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">CAN English</span>
        </a><a
          href="https://shop-ca.bodi.com/fr"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="fr_CA"
          data-locale-base-url="https://shop-ca.bodi.com/fr"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/ca_flag.svg?v=140489053438850075871771353646"
            alt="Canada flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">CAN Français</span>
        </a><a
          href="https://shop-gb.bodi.com"
          class="locale-switcher__option"
          role="menuitem"
          data-locale-code="en_GB"
          data-locale-base-url="https://shop-gb.bodi.com"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/gb_flag.svg?v=184068840994614594711771353645"
            alt="UK flag"
            class="locale-switcher__flag"
            width="20"
            height="20"
          >
          <span class="locale-switcher__label">UK English</span>
        </a></div>
  </div>
</div>



      </div>

      

      <div class="footer__apps footer__apps--mobile">
        
        <a
          href="https://apps.apple.com/us/app/bodi-by-beachbody-home-fitness/id1031660123"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Apple"
          class="footer__app-badge"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/app-store-badge.svg?v=120792209405859649841771353645"
            alt="Apple"
            width="120"
            height="40"
            loading="lazy"
          >
        </a>
        <a
          href="https://play.google.com/store/apps/details?id=com.beachbody.bod"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Google"
          class="footer__app-badge"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/google-play-badge.svg?v=177291720263664549321771353646"
            alt="Google"
            width="135"
            height="40"
            loading="lazy"
          >
        </a>
        
      </div>

      <div class="footer__social">
        <a
          href="https://www.instagram.com/bodi"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Instagram"
          class="footer__social-link"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/instagram-icon.svg?v=55966984291952598211771353644"
            alt="Instagram"
            width="24"
            height="24"
            loading="lazy"
          >
        </a>
        <a
          href="https://facebook.com/bodi"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Facebook"
          class="footer__social-link"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/facebook-icon.svg?v=107550427014668218611771353644"
            alt="Facebook"
            width="24"
            height="24"
            loading="lazy"
          >
        </a>
        <a
          href="https://youtube.com/@bodi"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="YouTube"
          class="footer__social-link"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/youtube-icon.svg?v=122383149797620814721771353646"
            alt="YouTube"
            width="24"
            height="24"
            loading="lazy"
          >
        </a>
      </div>
      <div class="footer__apps">
        
        <a
          href="https://apps.apple.com/us/app/bodi-by-beachbody-home-fitness/id1031660123"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Apple"
          class="footer__app-badge"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/app-store-badge.svg?v=120792209405859649841771353645"
            alt="Apple"
            width="120"
            height="40"
            loading="lazy"
          >
        </a>
        <a
          href="https://play.google.com/store/apps/details?id=com.beachbody.bod"
          target="_blank"
          rel="noopener noreferrer"
          aria-label="Google"
          class="footer__app-badge"
        >
          <img
            src="//shop.bodi.com/cdn/shop/t/2/assets/google-play-badge.svg?v=177291720263664549321771353646"
            alt="Google"
            width="135"
            height="40"
            loading="lazy"
          >
        </a>
        
      </div>
    </div><div class="footer__middle"><div class="footer__columns footer__columns--desktop"><div class="footer__column" ><span class="footer__column-heading">Explore</span><ul class="footer__column-links"><li><a
                    target="_self"
                    rel=""
                    href="/"
                    class="footer__column-link"
                  >
                    Home
                  </a>
                </li><li><a
                    target="_self"
                    rel=""
                    href="/collections/fitness-programs-plans"
                    class="footer__column-link"
                  >
                    BODi Programs
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/c/success-stories"
                    class="footer__column-link"
                  >
                    Results & Success Stories
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/blog/"
                    class="footer__column-link"
                  >
                    Blog
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.facebook.com/login/?next=https%3A%2F%2Fwww.facebook.com%2Fgroups%2Fbodmembers%2F"
                    class="footer__column-link"
                  >
                    Facebook Community
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/affiliate"
                    class="footer__column-link"
                  >
                    Become an Affiliate
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/experience?sl-view=community"
                    class="footer__column-link"
                  >
                    The BODi Experience
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/experience#raf"
                    class="footer__column-link"
                  >
                    Refer & Earn
                  </a>
                </li></ul>
          </div><div class="footer__column" ><span class="footer__column-heading">Account & Support</span><ul class="footer__column-links"><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/account/settings"
                    class="footer__column-link"
                  >
                    My Account
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/account/orders"
                    class="footer__column-link"
                  >
                    My Orders
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/account/subscriptions"
                    class="footer__column-link"
                  >
                    My Subscriptions
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://faq.bodi.com/?_gl=1*1bjqr0g*_gcl_au*MTUzMzU1ODIwNi4xNzY0OTU2NDQy*FPAU*MTUzMzU1ODIwNi4xNzY0OTU2NDQy"
                    class="footer__column-link"
                  >
                    BODi Support
                  </a>
                </li></ul>
          </div><div class="footer__column" ><span class="footer__column-heading">Company</span><ul class="footer__column-links"><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/careers"
                    class="footer__column-link"
                  >
                    Careers
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/about"
                    class="footer__column-link"
                  >
                    About Us
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/contact"
                    class="footer__column-link"
                  >
                    Contact Information
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://thebeachbodycompany.com/"
                    class="footer__column-link"
                  >
                    Investor
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="mailto:bodi@aiir.agency"
                    class="footer__column-link"
                  >
                    Press Inquiries
                  </a>
                </li></ul>
          </div><div class="footer__column" ><span class="footer__column-heading">Legal</span><ul class="footer__column-links"><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/terms-of-use"
                    class="footer__column-link"
                  >
                    Terms & Conditions
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/privacy"
                    class="footer__column-link"
                  >
                    Privacy Policy
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/consumer-health-data-policy"
                    class="footer__column-link"
                  >
                    Consumer Health Data Policy
                  </a>
                </li><li><a
                    target="_self"
                    rel=""
                    href="javascript:window.Osano.cm.showDrawer()"
                    class="footer__column-link"
                  >
                    Cookie Preferences
                  </a>
                </li><li><a
                    target="_self"
                    rel=""
                    href="javascript:window.Osano.cm.showDoNotSell()"
                    class="footer__column-link"
                  >
                    Do Not Sell My Info
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/accessibility-statement"
                    class="footer__column-link"
                  >
                    Accessibility Statement
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/supplier-code"
                    class="footer__column-link"
                  >
                    Supplier Code
                  </a>
                </li><li><a
                    target="_blank"
                    rel="noopener noreferrer"
                    href="https://www.bodi.com/us/en/supply-chain"
                    class="footer__column-link"
                  >
                    California Supply Chain
                  </a>
                </li></ul>
          </div></div><div class="footer__columns footer__columns--mobile"><accordion-custom>
              <details class="footer__accordion-details">
                <summary class="footer__accordion-summary">
                  Explore
                  <span class="footer__accordion-icon">
                    <svg
                      class="footer__accordion-icon-plus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M12 5.25V18.75M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                    <svg
                      class="footer__accordion-icon-minus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                  </span>
                </summary>
                <div class="footer__accordion-content">
                  <ul class="footer__column-links"><li><a
                          target="_self"
                          rel=""
                          href="/"
                          class="footer__column-link"
                        >
                          Home
                        </a>
                      </li><li><a
                          target="_self"
                          rel=""
                          href="/collections/fitness-programs-plans"
                          class="footer__column-link"
                        >
                          BODi Programs
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/c/success-stories"
                          class="footer__column-link"
                        >
                          Results & Success Stories
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/blog/"
                          class="footer__column-link"
                        >
                          Blog
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.facebook.com/login/?next=https%3A%2F%2Fwww.facebook.com%2Fgroups%2Fbodmembers%2F"
                          class="footer__column-link"
                        >
                          Facebook Community
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/affiliate"
                          class="footer__column-link"
                        >
                          Become an Affiliate
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/experience?sl-view=community"
                          class="footer__column-link"
                        >
                          The BODi Experience
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/experience#raf"
                          class="footer__column-link"
                        >
                          Refer & Earn
                        </a>
                      </li></ul>
                </div>
              </details>
            </accordion-custom><accordion-custom>
              <details class="footer__accordion-details">
                <summary class="footer__accordion-summary">
                  Account & Support
                  <span class="footer__accordion-icon">
                    <svg
                      class="footer__accordion-icon-plus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M12 5.25V18.75M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                    <svg
                      class="footer__accordion-icon-minus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                  </span>
                </summary>
                <div class="footer__accordion-content">
                  <ul class="footer__column-links"><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/account/settings"
                          class="footer__column-link"
                        >
                          My Account
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/account/orders"
                          class="footer__column-link"
                        >
                          My Orders
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/account/subscriptions"
                          class="footer__column-link"
                        >
                          My Subscriptions
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://faq.bodi.com/?_gl=1*1bjqr0g*_gcl_au*MTUzMzU1ODIwNi4xNzY0OTU2NDQy*FPAU*MTUzMzU1ODIwNi4xNzY0OTU2NDQy"
                          class="footer__column-link"
                        >
                          BODi Support
                        </a>
                      </li></ul>
                </div>
              </details>
            </accordion-custom><accordion-custom>
              <details class="footer__accordion-details">
                <summary class="footer__accordion-summary">
                  Company
                  <span class="footer__accordion-icon">
                    <svg
                      class="footer__accordion-icon-plus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M12 5.25V18.75M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                    <svg
                      class="footer__accordion-icon-minus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                  </span>
                </summary>
                <div class="footer__accordion-content">
                  <ul class="footer__column-links"><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/careers"
                          class="footer__column-link"
                        >
                          Careers
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/about"
                          class="footer__column-link"
                        >
                          About Us
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/contact"
                          class="footer__column-link"
                        >
                          Contact Information
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://thebeachbodycompany.com/"
                          class="footer__column-link"
                        >
                          Investor
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="mailto:bodi@aiir.agency"
                          class="footer__column-link"
                        >
                          Press Inquiries
                        </a>
                      </li></ul>
                </div>
              </details>
            </accordion-custom><accordion-custom>
              <details class="footer__accordion-details">
                <summary class="footer__accordion-summary">
                  Legal
                  <span class="footer__accordion-icon">
                    <svg
                      class="footer__accordion-icon-plus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M12 5.25V18.75M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                    <svg
                      class="footer__accordion-icon-minus"
                      aria-hidden="true"
                      focusable="false"
                      width="24"
                      height="24"
                      viewBox="0 0 24 24"
                      fill="none"
                      xmlns="http://www.w3.org/2000/svg"
                    >
                      <path
                        d="M5.25 12H18.75"
                        stroke="currentColor"
                        stroke-width="1.5"
                        stroke-linecap="round"
                      />
                    </svg>
                  </span>
                </summary>
                <div class="footer__accordion-content">
                  <ul class="footer__column-links"><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/terms-of-use"
                          class="footer__column-link"
                        >
                          Terms & Conditions
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/privacy"
                          class="footer__column-link"
                        >
                          Privacy Policy
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/consumer-health-data-policy"
                          class="footer__column-link"
                        >
                          Consumer Health Data Policy
                        </a>
                      </li><li><a
                          target="_self"
                          rel=""
                          href="javascript:window.Osano.cm.showDrawer()"
                          class="footer__column-link"
                        >
                          Cookie Preferences
                        </a>
                      </li><li><a
                          target="_self"
                          rel=""
                          href="javascript:window.Osano.cm.showDoNotSell()"
                          class="footer__column-link"
                        >
                          Do Not Sell My Info
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/accessibility-statement"
                          class="footer__column-link"
                        >
                          Accessibility Statement
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/supplier-code"
                          class="footer__column-link"
                        >
                          Supplier Code
                        </a>
                      </li><li><a
                          target="_blank"
                          rel="noopener noreferrer"
                          href="https://www.bodi.com/us/en/supply-chain"
                          class="footer__column-link"
                        >
                          California Supply Chain
                        </a>
                      </li></ul>
                </div>
              </details>
            </accordion-custom></div><div class="footer__email">
          <span class="footer__email-heading">Sign up & be the first to know about new offers!</span>
          
            <div
              class="footer__email-signup"
              id="lightbox-inline-form-f72bbb69-cc8c-4cd3-9295-1ec538d9ac8d"
              
                style="max-width: 316px;"
              
            ></div>
          
          <p class="footer__email-disclaimer">By continuing, I agree to the Terms and Conditions and Privacy Policy.</p>
        </div></div><div class="footer__bottom">
      <div class="footer__bottom-text">
        <p>The contents on our website are for informational purposes only, and are not intended to diagnose any medical condition, replace the advice of a healthcare professional, or provide any medical advice or treatment. Consult with your physician and follow all safety instructions before beginning any exercise program or nutrition plan, or using any supplement, especially if you are pregnant, breastfeeding, have any medical condition or are taking any medication. <br/><br/>*These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease.<br/><br/>‡Subscription Details: Subscription automatically renews for the same applicable term and price, until you cancel. Cancel anytime to avoid future charges by visiting <a href="https://www.bodi.com/us/en/account/subscriptions" target="_blank">Memberships & Subscriptions.</a><br/><br/>†31-Day Money-Back Guarantee: Our products are backed by a 31-day Money Back Guarantee, less shipping & handling. Excludes subscriptions initiated by a free trial; additional terms and conditions apply. For more information, click <a href="https://faq.bodi.com/answer?Id=259" target="_blank">here</a>. <br/><br/>^25% off P90X supplements for active P90X digital subscribers or BODi Full Access digital subscribers.   </p><p>Applies to an initial one-time purchase or the first month of a new subscription for any P90X supplement. BODi’s Subscribe and Save terms apply.<br/><br/>**Power Loops (set includes 2 bands) with the purchase of a BODi annual subscription on BODi.com only. Offer expires on June 30, 2026. Only one set may be redeemed per account.  Valid in the U.S. and Canada only. The appearance of the products shown may vary.<br/><br/>‡‡Results Driven Stack Promotion. Subscribe to a monthly BODi digital subscription and get 7 days free plus 30% off a Shakeology subscription (30% off applies to initial term only and 10% off applies to subscription period per Subscribe + Save terms).  Valid in the U.S. and CA only beginning June 8, 2026, for a limited time.<br/><br/><strong>APPLIES TO ALL OFFERS AND PROMOTIONS:</strong> While supplies last.  Offer valid only on in-stock items, no rain checks.   Valid for purchases on BODi.com only. Customer may be responsible for tax and/or shipping on free products.  Offer is not transferable and may not be combined with other offers, promotions, or discounts, unless otherwise indicated. Not valid on prior orders and cannot be redeemed for cash or cash equivalents. BODi may modify or end any promo without notice.<br/><br/>The BODi Workout to Win $10,000 Sweepstakes. NO PURCHASE NECESSARY. Open to active BODi Subscribers. Promotion period ends 6/30/26. <a href="https://cdn.builder.io/o/assets%2F97e6e0cdd6a0493da63cf0b4cf432853%2Fc855f1d07fbe488ba48cbaff41846198?alt=media&token=fd8f7654-6e25-42e7-8d0d-13163a74d82a&apiKey=97e6e0cdd6a0493da63cf0b4cf432853" target="_blank">Official Rules.</a><br/><br/>Apple TV is a registered trademarks of Apple Inc. iOS is a registered trademark of Cisco Technology, Inc. Roku is a registered trademark of Roku, Inc. Fire and all related logos are trademarks of Amazon Technologies, Inc. Android, Chromecast, and Google Play are trademarks of Google LLC.<br/><br/>Distributed in the US by Beachbody, LLC, 400 Continental Blvd, Floor 6, El Segundo, CA 90245<br/><br/>© 2026 BODi. All rights reserved. All third party trademarks are the property of their respective owners.</p>
      </div>
    </div>
  </div>
</section>



<script type="module" src="//shop.bodi.com/cdn/shop/t/2/assets/accordion-custom.js?v=78770727478219950621772670204" defer></script>



</footer><footer id="shopify-section-sections--21336457314521__footer_H8QH6p" class="shopify-section shopify-section-group-footer-group footer-section"></footer><footer id="shopify-section-sections--21336457314521__footer_QyjLay" class="shopify-section shopify-section-group-footer-group footer-section"></footer>
<!-- END sections: footer-group -->

    <script
  src="//shop.bodi.com/cdn/shop/t/2/assets/dialog.js?v=138083190563882019441771353646"
  type="module"
></script>

<dialog-component
  id="search-modal"
  class="search-modal"
  
>
  <dialog
    ref="dialog"
    on:click="/closeDialogOnClickOutside"
    on:keydown="/closeDialogOnEscapePress"
    class="search-modal__content dialog-modal"
    scroll-lock
  >
    <script
  src="//shop.bodi.com/cdn/shop/t/2/assets/predictive-search.js?v=137734153844302985541771353646"
  type="module"
  fetchpriority="low"
></script>

<predictive-search-component
  class="predictive-search"
  style="--product-corner-radius: 0px; --card-corner-radius: 0px;"
  data-section-id="predictive-search"
  data-search-position=""
  data-testid="search-component--modal"
  data-active-color-scheme="scheme-1"
  role="search"
  aria-label="Search"
>
  <form
    action="/search"
    method="get"
    role="search"
    class="predictive-search-form"
    ref="form"
    on:keydown="/onSearchKeyDown"
  >
    <div
      class="predictive-search-form__header"
    >
      <div class="predictive-search-form__header-inner">
        <label
          for="cmdk-input"
          class="visually-hidden"
        >Search</label>
        <input
          class="search-input"
          id="cmdk-input"
          type="search"
          name="q"
          role="combobox"
          aria-expanded="false"
          aria-owns="predictive-search-results"
          aria-controls="predictive-search-results"
          aria-haspopup="listbox"
          aria-autocomplete="list"
          autocomplete="off"
          placeholder="Search"
          ref="searchInput"
          on:input="/search"
          on:keydown="/onSearchKeyDown"
          on:focus="/expandSearch"
        >
        <input
          name="options[prefix]"
          type="hidden"
          value="last"
        >
        <span class="svg-wrapper predictive-search__icon">
          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg>

        </span>
        <button
          type="button"
          class="button-unstyled predictive-search__reset-button"
          aria-label="Reset search"
          ref="resetButton"
          hidden
          on:click="/resetSearch"
        >
          <span class="svg-wrapper predictive-search__reset-button-icon">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="10" r="6.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 7.5-5 5M12.5 12.5l-5-5"/></svg>

          </span>
          <span class="predictive-search__reset-button-text">Clear</span>
        </button>
      </div>
      <button
        type="button"
        class="button predictive-search__close-modal-button"
        aria-label="Close dialog"
        on:click="dialog-component/closeDialog"
        ref="closeModalButton"
      >
        <span class="svg-wrapper">
          <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
  <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

        </span>
      </button>
    </div>

    <div class="predictive-search-form__content-wrapper">
      <div
        class="predictive-search-form__content"
        tabindex="-1"
        ref="predictiveSearchResults"
        on:click="/handleModalClick"
      >
        

<div
  id="predictive-search-results"
  class="predictive-search-dropdown"
  role="listbox"
  aria-expanded="true"
  style="--color-shadow: rgb(var(--color-foreground-rgb) / );"
>
  <div class="predictive-search-results__inner">
    
    
    
      <div
  id="predictive-search-products"
  
    data-testid="products-list-default--modal"
  
>
  
    <div class="predictive-search-results__title">
      Products
    </div>
    <ul
      class="predictive-search-results__list predictive-search-results__wrapper-products list-unstyled"
      role="listbox"
      aria-label="Products"
    >
      
      
        <li
          class="predictive-search-results__card predictive-search-results__card--product"
          ref="resultsItems[]"
        >
          
<div
  class="resource-card"
  href="/products/you-can-drop-it-book"
  data-resource-type="product"
>
  <a
    class="resource-card__link"
    href="/products/you-can-drop-it-book"
  >
    <span class="visually-hidden">
      "You Can Drop It!" 2B Mindset Book
    </span>
  </a>
  <div
    class="resource-card__media"
    style="--resource-card-aspect-ratio: 4 / 5;"
    
  >
<img src="//shop.bodi.com/cdn/shop/files/bodi-you-can-drop-it-ilana-mulstein-diet-book.png?v=1772479730&amp;width=500" alt="You Can Drop It! By Ilana Muhlstein, M.S., R.D.N. diet book" srcset="//shop.bodi.com/cdn/shop/files/bodi-you-can-drop-it-ilana-mulstein-diet-book.png?v=1772479730&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-you-can-drop-it-ilana-mulstein-diet-book.png?v=1772479730&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" data-media-id="48251870511321">
</div>

  <div class="resource-card__content">
    <p class="resource-card__title paragraph">"You Can Drop It!" 2B Mindset Book</p>

    
      <div ref="priceContainer">
  

  
     
    <span class="price">$28.00</span>
  

  
</div>

    
  </div>
</div>

        </li>
      
        <li
          class="predictive-search-results__card predictive-search-results__card--product"
          ref="resultsItems[]"
        >
          
<div
  class="resource-card"
  href="/products/mbf-muscle-burns-fat"
  data-resource-type="product"
>
  <a
    class="resource-card__link"
    href="/products/mbf-muscle-burns-fat"
  >
    <span class="visually-hidden">
      #mbf + #mbfa
    </span>
  </a>
  <div
    class="resource-card__media"
    style="--resource-card-aspect-ratio: 4 / 5;"
    
  >
<img src="//shop.bodi.com/cdn/shop/files/bodi-mbf-mbfa-digital-program-box-art-1x1.png?v=1772479396&amp;width=500" alt="mbf and mbfa Muscle Burns Fat" srcset="//shop.bodi.com/cdn/shop/files/bodi-mbf-mbfa-digital-program-box-art-1x1.png?v=1772479396&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-mbf-mbfa-digital-program-box-art-1x1.png?v=1772479396&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" data-media-id="48251856126169">
<img src="//shop.bodi.com/cdn/shop/files/preview_images/cdc52f62f354487f809152dc40f9bc97.thumbnail.0000000000.jpg?v=1772479537&amp;width=500" alt="Muscle Burns Fat Sizzle Video" srcset="//shop.bodi.com/cdn/shop/files/preview_images/cdc52f62f354487f809152dc40f9bc97.thumbnail.0000000000.jpg?v=1772479537&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/preview_images/cdc52f62f354487f809152dc40f9bc97.thumbnail.0000000000.jpg?v=1772479537&amp;width=352 352w" width="500" height="281" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="38840042881241">
</div>

  <div class="resource-card__content">
    <p class="resource-card__title paragraph">#mbf + #mbfa</p>

    
      <div ref="priceContainer">
  

  
     
    <span class="price">$79.95</span>
  

  
</div>

    
  </div>
</div>

        </li>
      
        <li
          class="predictive-search-results__card predictive-search-results__card--product"
          ref="resultsItems[]"
        >
          
<div
  class="resource-card"
  href="/products/21-day-fix"
  data-resource-type="product"
>
  <a
    class="resource-card__link"
    href="/products/21-day-fix"
  >
    <span class="visually-hidden">
      21 Day Fix
    </span>
  </a>
  <div
    class="resource-card__media"
    style="--resource-card-aspect-ratio: 4 / 5;"
    
  >
<img src="//shop.bodi.com/cdn/shop/files/bodi-21-day-fix-digital-program-box-art-1x1.png?v=1772478696&amp;width=500" alt="21 Day Fix" srcset="//shop.bodi.com/cdn/shop/files/bodi-21-day-fix-digital-program-box-art-1x1.png?v=1772478696&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-21-day-fix-digital-program-box-art-1x1.png?v=1772478696&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" data-media-id="48251830468825">
<img src="//shop.bodi.com/cdn/shop/files/preview_images/98365fe5587f4fb29cfb34b733da0998.thumbnail.0000000000.jpg?v=1772478790&amp;width=500" alt="21 Day Fix Promotional Video" srcset="//shop.bodi.com/cdn/shop/files/preview_images/98365fe5587f4fb29cfb34b733da0998.thumbnail.0000000000.jpg?v=1772478790&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/preview_images/98365fe5587f4fb29cfb34b733da0998.thumbnail.0000000000.jpg?v=1772478790&amp;width=352 352w" width="500" height="281" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="38840019255513">
</div>

  <div class="resource-card__content">
    <p class="resource-card__title paragraph">21 Day Fix</p>

    
      <div ref="priceContainer">
  

  
     
    <span class="price">$59.95</span>
  

  
</div>

    
  </div>
</div>

        </li>
      
        <li
          class="predictive-search-results__card predictive-search-results__card--product"
          ref="resultsItems[]"
        >
          
<div
  class="resource-card"
  href="/products/25-minute-speed-train"
  data-resource-type="product"
>
  <a
    class="resource-card__link"
    href="/products/25-minute-speed-train"
  >
    <span class="visually-hidden">
      25 Minute Speed Train
    </span>
  </a>
  <div
    class="resource-card__media"
    style="--resource-card-aspect-ratio: 4 / 5;"
    
  >
<img src="//shop.bodi.com/cdn/shop/files/bodi-25-min-speed-train-digital-program-box-art-1x1.png?v=1772478699&amp;width=500" alt="25 Min Speed Train" srcset="//shop.bodi.com/cdn/shop/files/bodi-25-min-speed-train-digital-program-box-art-1x1.png?v=1772478699&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/bodi-25-min-speed-train-digital-program-box-art-1x1.png?v=1772478699&amp;width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" data-media-id="48251830665433">
<img src="//shop.bodi.com/cdn/shop/files/preview_images/f87ab11f624b4024bf74191c2d43d6ea.thumbnail.0000000000.jpg?v=1772478743&amp;width=500" alt="25 Minute Speed Train Sizzle Video" srcset="//shop.bodi.com/cdn/shop/files/preview_images/f87ab11f624b4024bf74191c2d43d6ea.thumbnail.0000000000.jpg?v=1772478743&amp;width=240 240w, //shop.bodi.com/cdn/shop/files/preview_images/f87ab11f624b4024bf74191c2d43d6ea.thumbnail.0000000000.jpg?v=1772478743&amp;width=352 352w" width="500" height="281" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="38840019452121">
</div>

  <div class="resource-card__content">
    <p class="resource-card__title paragraph">25 Minute Speed Train</p>

    
      <div ref="priceContainer">
  

  
     
    <span class="price">$119.95</span>
  

  
</div>

    
  </div>
</div>

        </li>
      
    </ul>
  
</div>

    
  </div>
</div>

      </div>

      <div class="predictive-search-form__footer">
        <button
          class="button button-primary predictive-search__search-button"
          ref="viewAllButton"
        >
          View all
        </button>
      </div>
    </div>
  </form>
</predictive-search-component>



  </dialog>
</dialog-component>



    <div
  class="redirect-modal"
  role="dialog"
  aria-modal="true"
  hidden
>
  <div class="redirect-modal__backdrop"></div>
  <div class="redirect-modal__panel">
    <div class="redirect-modal__top">
      <h2 class="redirect-modal__title">Change shipping country?</h2>

      <button class="redirect-modal__close" type="button" aria-label="Close dialog">
        <svg
          width="24"
          height="24"
          viewBox="0 0 24 24"
          fill="none"
          xmlns="http://www.w3.org/2000/svg"
        >
          <path d="M4.31373 17.8587C3.90357 18.2688 3.88404 19.0012 4.3235 19.4309C4.75318 19.8606 5.48561 19.8508 5.89576 19.4407L11.8723 13.4544L17.8587 19.4407C18.2786 19.8606 19.0012 19.8606 19.4309 19.4309C19.8508 18.9915 19.8606 18.2786 19.4309 17.8587L13.4544 11.8723L19.4309 5.89576C19.8606 5.47584 19.8606 4.75318 19.4309 4.3235C18.9915 3.90357 18.2786 3.89381 17.8587 4.31373L11.8723 10.3001L5.89576 4.31373C5.48561 3.90357 4.74342 3.88404 4.3235 4.3235C3.89381 4.75318 3.90357 5.48561 4.31373 5.89576L10.3001 11.8723L4.31373 17.8587Z" fill="#161819"/>
        </svg>
      </button>
    </div>

    <p class="redirect-modal__body">
      It seems you&#39;re in a different region. Would you like to update your shipping country?
    </p>

    <div class="redirect-modal__select-wrapper">
      <select class="redirect-modal__select" aria-label="Select store region">
        <option value="" data-placeholder disabled hidden>
          Select Your Country
        </option><option value="https://shop.bodi.com" data-country="US">
            U.S. English
          </option><option value="https://shop-ca.bodi.com" data-country="CA">
            CAN English
          </option><option value="https://shop-ca.bodi.com/fr" data-country="CA" data-lang="fr">
            CAN Français
          </option><option value="https://shop-gb.bodi.com" data-country="GB">
            UK English
          </option></select>
      <span class="redirect-modal__select-chevron" aria-hidden="true">
        <svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M8.32723 0L4.16361 5L0 0L8.32723 0Z" fill="#49454F"/>
        </svg>
      </span>
    </div>

    <div class="redirect-modal__actions">
      <button
        class="redirect-modal__confirm bodi-button bodi-button--primary bodi-button--large"
        type="button"
      >
        <span class="bodi-button__content">Confirm</span>
        <span class="bodi-button__spinner" aria-hidden="true">
          <svg
            width="20"
            height="20"
            viewBox="0 0 20 20"
            fill="none"
            xmlns="http://www.w3.org/2000/svg"
          >
            <circle cx="10" cy="10" r="8" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-dasharray="40 12" />
          </svg>
        </span>
      </button>
      <button
        class="redirect-modal__dismiss bodi-button bodi-button--secondary bodi-button--large"
        type="button"
      >
        <span class="bodi-button__content">No thanks</span>
      </button>
    </div>
  </div>
</div>

<script
  type="module"
>
  (async function () {
    const storeCountry = "US";
    const baseUrl = "https:\/\/shop.bodi.com";
    const geoURL = `${baseUrl}/browsing_context_suggestions.json`;

    const modal = document.querySelector('.redirect-modal');
    if (!modal) return;

    const backdrop = modal.querySelector('.redirect-modal__backdrop');
    const confirmBtn = modal.querySelector('.redirect-modal__confirm');
    const dismissBtn = modal.querySelector('.redirect-modal__dismiss');
    const closeBtn = modal.querySelector('.redirect-modal__close');
    const select = modal.querySelector('.redirect-modal__select');

    function getRedirectPath() {
      let path = window.location.pathname;
      if (path.startsWith('/fr')) {
        const parts = path.split('/fr');
        path = parts[1] || '/';
      }
      if (!path.startsWith('/')) path = '/' + path;
      return path;
    }

    const COOKIE_NAME = 'bodi-redirect-modal-dismissed';
    const COOKIE_TTL_SECONDS = 5 * 60 * 60 * 24 * 30 * 12; // 1 year

    function setDismissedCookie() {
      window.BODi.setCookie(COOKIE_NAME, '1', { maxAge: COOKIE_TTL_SECONDS });
    }

    function hasDismissedCookie() {
      return window.BODi.getCookie(COOKIE_NAME) !== null;
    }

    function showModal() {
      modal.removeAttribute('hidden');
      modal.offsetHeight; // force reflow so transition plays from initial state
      modal.classList.add('is-open');
      document.body.style.overflow = 'hidden';
    }

    function closeModal() {
      setDismissedCookie();
      modal.classList.remove('is-open');
      document.body.style.overflow = '';
      modal.addEventListener('transitionend', function handler(e) {
        if (e.target !== modal) return;
        modal.setAttribute('hidden', '');
        modal.removeEventListener('transitionend', handler);
      });
    }

    function handleConfirm() {
      const selectedUrl = select.value;
      if (!selectedUrl || select.options[select.selectedIndex]?.dataset.placeholder !== undefined) return;
      setDismissedCookie();
      confirmBtn.classList.add('bodi-button--loading');
      window.location.href = selectedUrl + getRedirectPath() + '?localeChanged=true';
    }

    confirmBtn.addEventListener('click', handleConfirm);
    dismissBtn.addEventListener('click', closeModal);
    closeBtn.addEventListener('click', closeModal);
    backdrop.addEventListener('click', closeModal);
    modal.addEventListener('keydown', (e) => {
      if (e.key === 'Escape') closeModal();
    });

    try {
      const res = await fetch(geoURL);
      const data = await res.json();
      const debugCountry = new URLSearchParams(window.location.search).get('debugRedirectModalCountry');
      const detectedCountry = (debugCountry ?? data.detected_values?.country?.handle)?.toUpperCase();

      if (!detectedCountry || detectedCountry === storeCountry.toUpperCase()) return;

      if (hasDismissedCookie()) return;

      const matchingOption = Array.from(select.options).find(
        (opt) => opt.dataset.country === detectedCountry
      );
      if (matchingOption) {
        matchingOption.selected = true;
      } else {
        const placeholder = select.querySelector('[data-placeholder]');
        if (placeholder) placeholder.selected = true;
      }

      showModal();
    } catch (e) {
      console.error('Could not detect user country. Error:', e);
    }
  })();
</script>




    
      <quick-add-dialog id="quick-add-dialog">
  <dialog
    class="quick-add-modal dialog-modal color-scheme-1"
    ref="dialog"
    scroll-lock
  >
    <button
      ref="closeButton"
      on:click="/closeDialog"
      class="button button-unstyled close-button quick-add-modal__close"
      aria-label="Close dialog"
    ><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
  <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</button>
    <div
      id="quick-add-modal-content"
      class="quick-add-modal__content"
    ></div>
  </dialog>
</quick-add-dialog>



    

    
  


          <div
            class="rebuy-widget--global"
            data-rebuy-id="274649"
            data-rebuy-shopify-product-ids="9413928779993">
          </div>
        
      



          <div
            class="rebuy-widget--global"
            data-rebuy-id="274810"
            data-rebuy-shopify-product-ids="9413928779993">
          </div>
        
      













          <div
            class="rebuy-widget--global"
            data-rebuy-id="294451"
            data-rebuy-shopify-product-ids="9413928779993">
          </div>
        
      



          <div
            class="rebuy-widget--global"
            data-rebuy-id="274653"
            data-rebuy-shopify-product-ids="9413928779993">
          </div>
        
      











<script type="application/json" data-page-view-product="auto">
      {
        "product_key": "bodi-subscription",
        "product_type": "Digital",
        "product_subtype": "Subscription"
      }
    </script><script type="module" data-page-view-tracker="auto">
  import {
    trackViewCategoryPage,
    trackViewLandingPage,
    trackViewOtherPage,
    trackViewProductDetailPage
  } from '//shop.bodi.com/cdn/shop/t/2/assets/analytics.util.js?v=29615392350665263441778687717';

  /**
   * Track page view based on event type
   * Only runs if section-based tracker is not present (acts as fallback for auto snippet)
   */
  async function trackPageView() {
    const trackerId = "auto";
    const namespace = `[PageViewAnalytics:${trackerId}]`;

    // If this is auto snippet, check if section tracker exists (override behavior)
    if (trackerId === 'auto' && document.querySelector('[data-page-view-section-tracker]')) {
      console.info(`${namespace} - Section tracker detected, skipping auto-track`);
      return;
    }

    const eventType = "view product detail page";

    try {
      switch (eventType) {
        case 'view category page':
          await trackViewCategoryPage();
          break;

        case 'view landing page':
          await trackViewLandingPage();
          break;

        case 'view other page':
          await trackViewOtherPage();
          break;

        case 'view product detail page': {
          const productDataElement = document.querySelector(`[data-page-view-product="${trackerId}"]`);
          
          if (productDataElement) {
            try {
              const productData = JSON.parse(productDataElement.textContent);
              await trackViewProductDetailPage(productData);
            } catch (error) {
              console.error(`${namespace} - Failed to parse product data`, error);
            }
          } else {
            console.warn(`${namespace} - Product data not found for PDP event`);
          }
          break;
        }

        default:
          console.warn(`${namespace} - Unknown event type: ${eventType}`);
      }
    } catch (error) {
      console.error(`${namespace} - Failed to track page view`, { error });
    }
  }

  // Fire event when page loads
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', trackPageView);
  } else {
    trackPageView();
  }
</script>
    <script>
  (() => {
    // Guard against duplicate script injection across section reloads.
    if (window.__conditionalQueryEvaluatorInitialized) return;
    window.__conditionalQueryEvaluatorInitialized = true;

    const evaluateElement = (element) => {
      if (!(element instanceof HTMLElement)) return;

      const rawValue = element.dataset.queryParamString || '';
      const queryParamString = decodeURIComponent(rawValue);
      const queryMatchType = element.dataset.queryMatchType || 'contains';
      if (!queryParamString) return;

      const params = new URLSearchParams(window.location.search);
      const searchString = params.toString().toLowerCase();
      const expectedParam = queryParamString.toLowerCase();

      let shouldShow = false;
      if (queryMatchType === 'contains') {
        shouldShow = searchString.includes(expectedParam);
      } else if (queryMatchType === 'does-not-contain') {
        shouldShow = !searchString.includes(expectedParam);
      } else if (queryMatchType === 'regex') {
        try {
          shouldShow = new RegExp(queryParamString, 'i').test(params.toString());
        } catch {
          shouldShow = false;
        }
      }

      if (shouldShow) {
        const sectionId = element.dataset.sectionId;
        if (sectionId) {
          // Section triggers reveal the whole section wrapper by id.
          const targetSection = document.getElementById(`shopify-section-${sectionId}`);
          if (targetSection) {
            targetSection.style.display = 'block';
          }
        } else {
          // Non-section targets can be revealed directly.
          element.style.display = '';
        }
      }
    };

    // Run on initial load and Shopify section hot-reloads.
    const run = () => {
      const elements = document.querySelectorAll('[data-conditional-query="true"]');
      for (const element of elements) {
        evaluateElement(element);
      }
    };

    document.addEventListener('DOMContentLoaded', run);
    document.addEventListener('shopify:section:load', run);
    run();
  })();
</script>


    <script>
  window.Shopify.loadFeatures(
    [
      {
        name: 'consent-tracking-api',
        version: '0.1',
      },
    ],
    function (error) {
      if (!error) {
        try {
          window.Osano.cm.ready('shopify');
        } catch (error) {
          console.error('Osano must be loaded before initializing the Shopify API.');
        }
      }
    }
  );
</script>


        
  <style> .password-main-content {padding-top: 0px;} </style>
<div id="shopify-block-AQTlTWDBDUEVwNWNoZ__10641372206048101839" class="shopify-block shopify-app-block">
<script>
  window.Rebuy = window.Rebuy || {};
  window.Rebuy.customer = window.Rebuy.customer || {};
  
</script>


<script async src="https://cdn.rebuyengine.com/onsite/js/rebuy.js?shop=xragki-mv.myshopify.com"></script>


</div><div id="shopify-block-AbWVYSnVnNHNXVDQvd__8043271908280424605" class="shopify-block shopify-app-block">
<script type="text/javascript" id="sezerium-products">
    console.log('%c Stamp - Variant Collections is active!', 'background-color: green; color: white; padding: 5px; border-radius: 3px;');
        
        
        
        const totalPage= 0;

    
    

    
    const SezeriumCollection = {
        id: '0',
        handle: 'product',
        sortBy: 'featured',
        page: totalPage,
        featured: false,
        search: false,
        renderLimit: 99,
        products: []
    };</script>
<script type="text/javascript">
    let SezeriumButtonTemplates = {
        addToCartButton: false,
        chooseButton: false,
    };
    const SezeriumAdvanced = true;
    const SezeriumPreview = false;let SezeriumAppSettings = {moneyFormat: '${{amount}}',settings: {"user":{"hash":"2c758933af02c0b301906f2819ae1268"},"theme":{"id":"157605626073","lock":false,"name":"commerce-shopify-theme/main","disable":false,"password":"activebunny","theme_store_id":"157605626073"},"general":{"all":false,"scroll":{"auto":false,"text":"Show More..","active":false},"search":false,"featured":true,"metafield":"custom.badge","mixEnabled":false,"buttonSettings":{"active":false,"bgColor":"#FFFFFF","textColor":"#000000"},"hideOutOfStock":false,"productOptions":["1.option"],"hideUnavailable":false,"hideWithoutImages":false,"featuredCollections":[{"order":"0","collection":{"id":"gid://shopify/Collection/447976702169","title":"Supplements","handle":"supplements"}},{"order":"1","collection":{"id":"gid://shopify/Collection/447977029849","title":"Shakeology","handle":"shakeology"}},{"order":"2","collection":{"id":"gid://shopify/Collection/449019707609","title":"P90x Supplement System","handle":"p90x-supplements"}}],"featuredVariantLimit":"8"},"translation":{"badge":{"sale":"Sale","soldOut":"Sold Out"},"button":{"soldOut":"Sold Out","addToCart":"Add To Cart","chooseOptions":"Choose Options"}},"variantsList":{"format":"{product.title} - {variant.title}","collection":{"all":false,"list":[{"id":"gid://shopify/Collection/447977029849","title":"Shakeology","handle":"shakeology"},{"id":"gid://shopify/Collection/447976702169","title":"Supplements","handle":"supplements"},{"id":"gid://shopify/Collection/449019707609","title":"P90x Supplement System","handle":"p90x-supplement-system"}]},"priceFormat":"{MIN_PRICE} - {MAX_PRICE}"}},
        collectionSettings: { "cs_445415162073":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_445415194841":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447976702169":{"format":"{product.title} <br>{variant.option1}","sortBy":"manual","sortList":["47683215982809","47683208642777","47683209527513","47683210379481","48369731961049","47683210576089","47683208380633","47683208708313","47683216015577","47683216277721","47683216343257","47683208773849","47683210543321","47683216212185","47683209691353","47683210412249","47683208839385","47683217391833","47683208347865","47683208184025","47683210051801","47683216507097","47683209822425","48369732124889","47683208446169","47683209756889","48369731895513","47683208216793","48369732026585","47683208315097","48369731993817","48369731928281","48369731797209","48369731698905","48369732059353","48369731829977","48369731862745","48369732092121","48369731764441","48369731731673","47683216572633"],"mixVariant":false,"priceFormat":"{MIN_PRICE} - {MAX_PRICE}","hideOutOfStock":false,"productOptions":["1.option"],"hideUnavailable":false,"hideWithoutImages":false},"cs_447976931545":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447976964313":{"format":"{product.title} - {variant.title}","sortBy":"manual","sortList":["47683212214489","47683211952345","47683211886809","47683211428057","47683211919577","47683212181721","47683211821273","47683211329753","47683211493593","47683211755737","47683212312793","47683211002073","47683212247257","47683212083417","47683211722969","47683211165913","47683211133145","47683212050649","47683212378329"],"mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447976997081":{"format":"{product.title} - {variant.title}","sortBy":"manual","sortList":["48773657395417","48040100495577","48040136147161","47683212935385","47683214868697","47683212869849","47683214967001","47683215098073","47683213230297","47683213689049","47683214508249","48040136114393","47683215032537","47683214606553","47683213426905","48040136048857","48040136081625","47683215065305","47683213557977","47683213590745","47683214213337","47683215786201","47683214246105","47683213164761","47683213131993","47683213197529","47683214311641","47683215655129","47683213000921","47683215753433","47683214737625","47683215884505","47683213656281","47683215458521","47683213328601","47683214377177"],"mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447977029849":{"format":"{product.title}<br>{variant.option1}/{variant.option2}<br>{variant.option3}","sortBy":"manual","sortList":["47683210871001","47683215982809","47683210641625","47683216113881","47683216081113","47683216244953","47683216146649","47683216310489","47683216179417","47683210903769","47683210674393","47683210576089","47683216277721","47683216343257","47683216015577","47683210805465","47683208184025","47683216507097","47683216212185","47683210543321","47683210838233","47683208216793","47683216048345","47683216572633","47683216539865","47683217162457","47683217260761"],"mixVariant":false,"priceFormat":"{MIN_PRICE} - {MAX_PRICE}","hideOutOfStock":false,"productOptions":["flavor","packaging","key ingredient"],"hideUnavailable":false,"hideWithoutImages":false},"cs_447977062617":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447977095385":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_447977128153":{"format":"{product.title} - {variant.title}","mixVariant":false,"priceFormat":"{PRICE}","hideOutOfStock":false,"productOptions":[],"hideUnavailable":false,"hideWithoutImages":false},"cs_449019707609":{"format":"{product.title} <br>{variant.option1}","sortBy":"manual","sortList":["48369732124889","48369731961049","48369731698905","48369731895513","48369731797209","48369732059353","48369731928281","48369732026585","48369731829977","48369732092121","48369731862745","48369731764441","48369731993817","48369731731673"],"mixVariant":false,"priceFormat":"{MIN_PRICE} - {MAX_PRICE}","hideOutOfStock":false,"productOptions":["1.option"],"hideUnavailable":false,"hideWithoutImages":false} },
        "selectors": {
            "collection": "",
            "product": ".product-grid__item, .sf__product-listing .sf__col-item, ul > li.product-grid__item, .resource-list__item, ul.product-grid > li",
            "title": "a[ref='productTitleLink'] p, .product-card__title, .group-block p, .sezerium-section__product-title",
            "image": ".product-media img, .product-card__image img, .card-gallery img, .sezerium-section__image",
            "imgTag": "img, .product__media, .product-block__image .rimage-background, .inner .rimage-background, .grid-view-item__image, .gitem-img, .pr_lazy_img, .cs_bg_lz, .grid_img, .collection__image__top, .double__image > [data-bgset], .product-item-hover",
            "firstImage": "is-active|media-default|main-image|image-primary|product-card-featured-image|main-media|first-image|image-first-hover|product-primary-image",
            "button": "::ignore,.quick-add",
            "price": ".price, .product-card__price, product-price > div[ref='priceContainer'] > .price, .sezerium-section__price--sale, .sezerium-section__price--regular",
            "salePrice": ".compare-at-price, .product-card__compare-price, .sezerium-section__price--compare",
            "unitPrice": "",
            "saveBadge": ".sezerium-section__badge--sale, .product-badges .product-badges__badge, .card__badge span.badge, .product-card__label--sale, .product-label--sale, .price-label--sale, .badge--on-sale, .grid-product__tag--sale, .grid-product__price--savings, .product__badge--sale, .product__badge__item--saving, .label--highlight, .price-item--sale__save-tag, .color-promo-tag, .price__badge--sale, .sale-item, .grid-product__on-sale, .sale-box, .product-label.sale, .marquee-tags .badge, .product-label--on-sale, .product-thumbnail__product-sticker--sale, .prod-container .sale-item, .product--label, .product-badge__sale, .sale-badge, .productitem__badge--sale, .product-badge--sale, .displayed-discount, .sale_banner, .t4s-badge-sale, .product-item__badge--sale, .tag--sale, .bg-scheme-accent, .product-sale-amount-badge",
            "swatchSeparate": "li.variant-option__swatch, .mobile-column .variant-option__swatch,.color-swatch, .swatches li, .swatch .item, .swatch-view li, .ProductItem__ColorSwatchItem, .card-product__swatch, .tt-options-swatch li, .option-color-list li, .product-options__value, .m-product-option--node, .gridSwatches > li",
            "swatchGroupped": ".product-card__info fieldset, .card-information fieldset, .x-variants-data fieldset, swatch-div .card__swatches, .card__info .card__swatches",
            "scroll": "nav.pagination, div.pagination-wrapper, .pagination-border-top, #collection-pagination, .gf_collection-paginator-wrapper, .pagination-page, .boost-pfs-filter-bottom-pagination, .toolbar-bottom, .Pagination Text--subdued, .pagination, .pagination-border-top, .pagination-custom, .Pagination, .justify-content-center, .collection-pagination, .box__paginate, .paginate, .pagination--container, #pagination, .collection--pagination, div.pagination,div.pagination__list,nav.pagination__nav,ul.t4s-pagination__list,nav.hdt-pagination,div.main-collection--pagination,#Huratips-Pagination,.m-pagination,.ecom-pagination-navigation.ecom-collection__pagination-navigation",
            "badges": {selector: {"wrapSelector": ".product-badges__badge", "containerSelector": ".product-badges"},soldOut: {"content": {"html": "{{text}}", "text": "Sold Out"}, "classNames": ".product-badges__badge product-badges__badge--rectangle.color-scheme-3"},},
            "imageSliderArr": [
                {ifEl:'product-grid-item-image',copyEl:'product-grid-item-image',copyUpdate:e=>(e.classList.remove('is-active'),e.removeAttribute('data-grid-current-image'),e),originUpdate:e=>e},
                {ifEl:'.product-item__image-wrapper--multiple',copyEl:'img',copyUpdate:e=>(e.setAttribute('hidden','hidden'),e),originUpdate:e=>(e.removeAttribute('data-media-id'),e)},
                {ifEl:'.card__main-image',copyEl:'img',copyUpdate:e=>(e.setAttribute('hidden','hidden'),e),originUpdate:e=>(e.removeAttribute('data-media-id'),e)},
                //{ifEl:'.image-label-wrap .product-block__image',copyEl:'.image-label-wrap .product-block__image',hoverClass:'product-block__image--show-on-hover',hoverRemoveClass:'product-block__image--inactivated',hoverAllowPartialMatch:!0,copyUpdate:e=>(e.classList.remove('product-block__image--active','product-block__image--primary'),e.classList.add('product-block__image--secondary'),e),originUpdate:e=>{e.removeAttribute('data-media-id'),e.classList.add('product-block__image--active')},cardUpdate:e=>{e.querySelectorAll('.image-label-wrap .product-block__image:not(.sezerium-main-image)').forEach(e=>{e.classList.remove('product-block__image--active','product-block__image--primary')})},afterHoverInit:(e,a)=>{const t=e.previousElementSibling;if(!a.mainImage||!t||!t.innerHTML.includes(a.cleanMainImagePath))return;t.classList.add('product-block__image--active'),t.classList.remove('product-block__image--inactivated'),t.classList.contains('product-block__image--primary')||(a.variantEl.querySelector('.product-block__image--primary')?.classList.remove('product-block__image--active'),t.previousElementSibling?.classList.remove('product-block__image--inactivated'))}}
            ]
        }
    };
</script>

<script type="text/javascript">
    try {
        document.addEventListener('sezerium:variant:initialize', (e) => {
    const { el, variant, product } = e.detail;
    el.id = `product-card-${variant.id}`;
    el.dataset.productId = variant.id;
    const overflowList =  el.querySelector('swatches-variant-picker-component overflow-list');

    const comp = el.querySelector('slideshow-component');
    if (overflowList) {
        const template = document.createElement('template');
        template.setAttribute('shadowrootmode', 'open');

        const uniqueVersion = Date.now() + Math.floor(Math.random() * 1000);
        template.innerHTML = `
        <link rel="stylesheet" type="text/css" href="//custom-variant-collections.myshopify.com/cdn/shop/t/14/assets/overflow-list.css?v=${uniqueVersion}" media="all">
        <ul part="list">
        <slot></slot>
        <slot
            name="more"
            part="more"
            hidden
        >
            <li
            part="more"
            >
            <button
                class="button"
                type="button"
                tabindex="0"
            >
                m
            </button>
            </li>
        </slot>
        <li
            part="placeholder"
            hidden
        ></li>
        </ul>

        <div part="overflow">
        <ul part="overflow-list">
            <slot name="overflow"></slot>
        </ul>
        </div>
        `;
        overflowList.prepend(template);
    }

    let mainVariantSlide;
    let hoverSlide;
    if (!overflowList && comp.disabled === true) {
        Array.from(el.querySelectorAll('slideshow-slide')).slice(2).forEach(slide => slide.remove());
        const comp = el.querySelector('slideshow-component');
        if (comp) {
            comp.style.setProperty('--slideshow-timeline', '--slide-1, --slide-2');
            comp.setAttribute('data-generic-media-size', '2');
        }
    } else {  
        mainVariantSlide = Array.from(el.querySelectorAll('slideshow-slide[variant-image]')).find(slide => {
            const img = slide.querySelector('img');
            return img && img.src.includes(variant.image);
        });

        if (mainVariantSlide) {
            const hoverImageSrc = window.SezeriumImageHandler.getHoverImage(variant.image, product.images);
            
            // Get the next sibling element
            hoverSlide = mainVariantSlide.nextElementSibling;
            let hoverSlideImg = hoverSlide?.querySelector('img');
            
            // Check if next slide exists and has the hover image
            const hasHoverSlide = hoverSlideImg && hoverSlideImg.src.includes(hoverImageSrc);
            
            if (!hasHoverSlide && hoverImageSrc) {
                // Clone the main variant slide
                hoverSlide = mainVariantSlide.cloneNode(true);
                hoverSlideImg = hoverSlide.querySelector('img');
                
                // Insert it after the main variant slide
                if (mainVariantSlide.nextSibling) {
                    mainVariantSlide.parentNode.insertBefore(hoverSlide, mainVariantSlide.nextSibling);
                } else {
                    mainVariantSlide.parentNode.appendChild(hoverSlide);
                }
                
                // Update the hover slide with new image source
                window.SezeriumImageHandler.updateImageSource(hoverSlideImg, window.SezeriumImageHandler.getImagePath(hoverSlideImg), hoverImageSrc);

                hoverSlide.removeAttribute('variant-image');
                
                // Update slide-id with variant.id
                hoverSlide.setAttribute('slide-id', variant.id);
            }
        }        
    }
console.log(comp.disabled, mainVariantSlide);
    if ((overflowList || comp.disabled === false) && mainVariantSlide) {
        el.querySelector('.sezerium-image')?.classList.remove('sezerium-image');
        el.querySelector('.sezerium-hover-image')?.classList.remove('sezerium-hover-image');

        mainVariantSlide.querySelector('img').classList.add('sezerium-image');
        hoverSlide?.querySelector('img').classList.add('sezerium-hover-image');

        e.detail.product.tmpImages = product.images;
        e.detail.variant.tmpImage = variant.image;
        e.detail.product.images = [];
        e.detail.variant.image = '';
    }
});
document.addEventListener('sezerium:image:update', (event) => {
  const { el, variant } = event.detail;

    el.querySelectorAll('slideshow-slide[hidden]').forEach(s => {s.removeAttribute('hidden'); s.setAttribute('reveal', '')});

    const sliderComp = el.querySelector('slideshow-component');
    if (!sliderComp) return;

    const img = el.querySelector('.sezerium-image');
    if (!img) return;

    const productLink = el.querySelector('product-card-link');
    if (productLink) {
      productLink.setAttribute('data-product-id', variant.id);
      productLink.setAttribute('data-featured-media-url', img.src);
    }

    const slider = img.closest('slideshow-slide');
    if (!slider) return;
    const sliderId = slider.getAttribute('slide-id');
    if (!sliderId) return;

    setTimeout(() => {
        sliderComp.select({id:sliderId}, undefined, { animate: false });
    }, 250);
});
document.addEventListener('sezerium:price:update', (event) => {
  const { el, variant, isOnSale } = event.detail;
  
  if (isOnSale && !el.querySelector(SezeriumAppSettings.selectors.salePrice)) {
    const priceEl = el.querySelector(SezeriumAppSettings.selectors.price);
    if (!priceEl) return;
    const priceContainer = priceEl.parentElement;

    const salePrice = window.SezeriumPriceHandler.formatPrice(variant.compareAtPrice);

    priceContainer.innerHTML = `<span role="group">
        ${priceEl.outerHTML}
    <span>
    <span role="group">
        <span class="compare-at-price sezerium-compare-at-price sezerium-skip-price">${salePrice}</span>
    <span>`;
  }
  el.querySelector('.price-from')?.remove?.();
});
document.addEventListener('sezerium:swatch:update', (e) => {
    const { el, color, variant } = e.detail;

    const firstOption = color.replace(/&amp;/g, '&') || variant.option1.replace(/&amp;/g, '&');
    const secondOption = variant.option2.replace(/&amp;/g, '&');
    
    // if (window.SezeriumHelper.isMobile()) {
    //     el.classList.add('sezerium-swatch');
    //     return;
    // }

    setTimeout(() => {
        el.querySelectorAll('swatches-variant-picker-component fieldset').forEach((fieldset) => {
            fieldset.classList.add('sezerium-swatch');
            const targetInput = fieldset.querySelector(`input[value="${firstOption}"]`);
            if (targetInput) {
                const checkedInput = fieldset.querySelector('input:checked');
                if (checkedInput) {
                    checkedInput.checked = false;
                    checkedInput.removeAttribute('checked');
                }
                
                if (variant.available) {
                    targetInput.dataset.optionAvailable = 'true';
                    targetInput.ariaDisabled = 'false';
                } else {
                    targetInput.dataset.optionAvailable = 'false';
                    targetInput.ariaDisabled = 'true';
                }
                
                targetInput.classList.add('sezerium-checked');
                targetInput.checked = true;
                targetInput.setAttribute('checked', '');
                targetInput.disabled = false;
                targetInput.dispatchEvent(new Event('change', { bubbles: true }));
            }
        });
    }, 50);

    setTimeout(() => {
        el.querySelectorAll('variant-picker fieldset').forEach((fieldset, index) => {
            fieldset.classList.add('sezerium-swatch');
            const selectedOption = index === 0 ? firstOption : secondOption;
            const targetInput = fieldset.querySelector(`input[value="${selectedOption}"]`);
            if (targetInput) {
                const checkedInput = fieldset.querySelector('input:checked');
                
                if (checkedInput) {
                    checkedInput.checked = false;
                    checkedInput.removeAttribute('checked');
                    checkedInput.dispatchEvent(new Event('input', { bubbles: true }));
                    checkedInput.dispatchEvent(new Event('change', { bubbles: true }));
                }
                
                if (variant.available) {
                    targetInput.dataset.optionAvailable = 'true';
                    targetInput.ariaDisabled = 'false';
                } else {
                    targetInput.dataset.optionAvailable = 'false';
                    targetInput.ariaDisabled = 'true';
                }
                
                targetInput.classList.add('sezerium-checked');
                targetInput.checked = true;
                targetInput.setAttribute('checked', 'checked');
                targetInput.disabled = false;
                targetInput.dispatchEvent(new Event('input', { bubbles: true }));
                targetInput.dispatchEvent(new Event('change', { bubbles: true }));
            }
        });
    }, 50);
});
document.addEventListener('sezerium:js:unload', (e) => {
    const { collectionEl } = e.detail;

    if (!collectionEl) return;

    const slideshowComponent = collectionEl.closest('slideshow-component');
    
    if (slideshowComponent) {
        const itemCount = collectionEl.querySelectorAll('.sezerium-product').length;
        const newTimeline = Array.from({length: itemCount}, (_, i) => `--slide-${i + 1}`)
            .join(', ');
        slideshowComponent.style.setProperty('--slideshow-timeline', newTimeline);

        collectionEl.querySelectorAll('slideshow-slide.sezerium-product').forEach((item, index) => {
            const slide = `--slide-${index+1}`;
            item.style.setProperty('--slideshow-timeline', slide);
            item.setAttribute('aria-hidden', false);
        });
        
        slideshowComponent.connectedCallback();
        setTimeout(()=> slideshowComponent.select(0, undefined, { animate: false }), 500)
    }
});
document.addEventListener('sezerium:set:productCount', (e) => {
    const { productCount } = e.detail;

    const productCountDiv = document.querySelector('div.products-count-wrapper > span');
    if (productCountDiv) {
        productCountDiv.textContent = productCountDiv.textContent.replace(/[0-9]+/, productCount);
    }
});
document.addEventListener('sezerium:widget:update', (event) => {
  const { el, product, variant } = event.detail;
  const isSoldOut = !variant.available;
  const qckComponent = el.querySelector('quick-add-component');
  if (qckComponent) {
    if (qckComponent.getAttribute('data-quick-add-button') == 'choose' && qckComponent.getAttribute('data-product-options-count') <= 1) return;
    qckComponent.setAttribute('data-quick-add-button', product.variantLevel > 1 ? 'choose' : 'add');
  }
  const btnComponent = el.querySelector('add-to-cart-component');
  if (btnComponent) {
    btnComponent.querySelector('button').disabled = isSoldOut;
    const btnText = btnComponent.querySelector('.add-to-cart-text__content');
    if (isSoldOut) {
        btnText.innerHTML = `<span>
          <span>${SezeriumAppSettings.settings.translation.button.soldOut}</span>
        </span>`;
    } else {
        btnText.innerHTML = `<span>
          <span>${SezeriumAppSettings.settings.translation.button.addToCart}</span>
        </span>`;
    }
  }
});
        
        document.addEventListener('sezerium:title:update', (event) => {
  const { el, product, variant } = event.detail;
  const badgeElement = el.querySelector('.product-badge p');
  const productBadgeText = product.metafield.length > 0 ? product.metafield : '';
  const variantBadgeText = variant.metafield.length > 0 ? variant.metafield : '';
 
  let badgeText = '';
  if (variantBadgeText != '') {
    badgeText = variantBadgeText;
  }
  
  // else {
    // badgeText = productBadgeText;
  // }
 
  if (badgeElement) {
    badgeElement.innerHTML = badgeText;
  }
 
  return;
});
    } catch (e) {
        console.log('%c Stamp - Variant Collections custom js error:', 'background-color: black; color: white; padding: 5px; border-radius: 3px;');
        console.log(e);
    }
</script>






<script src="https://cdn.shopify.com/extensions/019e047a-1d60-756a-adc2-d644c7ae0b34/stamp-variants-collection-992/assets/sezerium-variant.min.js" defer></script><script>
    document.addEventListener('DOMContentLoaded', () => {
        if (!window.sezeriumVariableInstance) {
            window.sezeriumVariableInstance = new window.sezeriumVariantProduct(SezeriumCollection.products, SezeriumCollection.handle);
        }
    });
    </script>
    <style>
        
        
        
        .sezerium-remove {
            display:none;
        }

        .sezerium-button-wrapper {
            position: relative;
            grid-row-start: 4;
            margin: 0 0 1rem;
            z-index: 1;
        }
        .sezerium-button, .sezerium-add-to-cart, .sezerium-choose-option {
            color:#000000!important;
            background-color:#FFFFFF!important;
        }
        .sezerium-sold-out {
            cursor: not-allowed;
            opacity: .5;
        }
        .sezerium-infinite {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 100%;
            margin: 20px 0;
        }

        .sezerium-infinite-button {
            position: relative;
            background-color: white;
            color: black;
            width: 120px;
            height: 40px;
            border: 1px solid #ddd;
            border-radius: 6px;
            cursor: pointer;
            font-size: 14px;
            font-weight: 500;
            transition: all 0.2s ease;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1),
            0 1px 2px rgba(0, 0, 0, 0.06);
        }

        .sezerium-infinite-button:hover {
            background-color: #f9f9f9;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15),
            0 2px 4px rgba(0, 0, 0, 0.1);
            transform: translateY(-1px);
        }

        .sezerium-infinite-button:active {
            transform: translateY(0);
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1),
            0 1px 2px rgba(0, 0, 0, 0.06);
        }

        /* When loading */
        .sezerium-infinite-loading {
            pointer-events: none; /* Disable clicks */
            opacity: 0.6;         /* Visual cue for disabled state */
        }

        /* Spinner overlay */
        .sezerium-infinite-loading::after {
            content: "";
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 24px;
            height: 24px;
            border: 3px solid rgba(0, 0, 0, 0.2); /* Light background circle */
            border-top: 3px solid black;          /* Black spinner */
            border-radius: 50%;
            animation: spin 1s linear infinite;
        }
        /* Spinner animation */
        @keyframes spin {
            0% { transform: translate(-50%, -50%) rotate(0deg); }
            100% { transform: translate(-50%, -50%) rotate(360deg); }
        }

        .sezerium-infinite-loading span {
            visibility: hidden;
        }
    </style>

</div><script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
</body>
</html>
