{"sections":{"main":{"type":"main-product","blocks":{"custom_liquid_9jcKUx":{"type":"custom_liquid","name":"Custom - Easy-Drape PDP Alt Text","settings":{"spacing_bottom":"0","custom_liquid":"<style>\n  .tsr-media-text-target {\n    position: relative !important;\n  }\n\n  .tsr-media-text-label {\n  position: absolute;\n  left: 20px;\n  bottom: 20px;\n  z-index: 20;\n\n  \/* text *\/\n  color: #fff;\n  font-size: 12px;\n  font-weight: 500;\n  letter-spacing: 0.14rem;\n  text-transform: uppercase;\n  line-height: 1;\n\n  \/* badge style *\/\n  padding: 6px 10px;\n  background: rgba(0, 0, 0, 0.55);\n  backdrop-filter: blur(6px);\n  -webkit-backdrop-filter: blur(6px);\nborder-radius: .4rem;\n  white-space: nowrap;\n\n  pointer-events: none;\n}\n<\/style>\n\n<script>\n  function addEasyDrapeText() {\n    const targetAlt = \"Easy-Drape Hook Feature\";\n\n    document.querySelectorAll('img[alt]').forEach((img) => {\n      if (img.getAttribute('alt')?.trim() !== targetAlt) return;\n\n      \/\/ 👇 THIS is the key fix\n      const wrapper =\n        img.closest('.main-product__media-grid-item') || \/\/ desktop grid\n        img.closest('.swiper-slide'); \/\/ mobile slider\n\n      if (!wrapper) return;\n\n      wrapper.classList.add('tsr-media-text-target');\n\n      if (wrapper.querySelector('.tsr-media-text-label')) return;\n\n      const label = document.createElement('div');\n      label.className = 'tsr-media-text-label';\n      label.textContent = targetAlt;\n\n      wrapper.appendChild(label);\n    });\n  }\n\n  document.addEventListener('DOMContentLoaded', addEasyDrapeText);\n  document.addEventListener('shopify:section:load', addEasyDrapeText);\n<\/script>"}},"custom_liquid_64WdWp":{"type":"custom_liquid","name":"SALE BLOCK - STYLING","settings":{"spacing_bottom":"0","custom_liquid":"<style>\n.tsr-sale-block .product__accordion {\n  padding: 3%;\n    border-block-end: 0;\nborder-radius: 5px !important;\n}\n\n.tsr-sale-block.gradient {\n    border-radius: 5px;\n    overflow: hidden; \/* keep children contained within rounded corners *\/\n  }\n\n.tsr-sale-block .product__accordion .accordion__body-inner {\npadding-inline-end: 0 !important;\npadding: 10px 0 5px 0;\n}\n\n.tsr-sale-block  .product__accordion .accordion__body p {\n    font-size: 80%;\n<\/style>"}},"sale_info_KKdNYP":{"type":"sale_info","name":"Sale block - Sale","disabled":true,"settings":{"heading":"UP TO 30% OFF SITEWIDE","body":"<p>Sale ends soon. 15% off is applied sitewide. An additional 15% off orders of $500 CAD or more will be automatically applied at checkout. Discount applies to all items excluding already discounted items and cannot be combined with other promotions. This offer cannot be applied to past purchases. The 15-Day Free Return & Exchange policy for Store Credit apply to eligible items. Please refer to product pages for details.<\/p>","display_mode":"accordion","open_by_default":true,"color_scheme":"scheme-99a884a7-2a83-4bf1-8e24-ac9f77abb1b2","tag_mode":"include","tags":"non-sale,non-sale-jewelry"}},"sale_info_QeXpgr":{"type":"sale_info","name":"Sale block - $199 Suits","disabled":true,"settings":{"heading":"C$199 Suits Sitewide","body":"<p>Offer valid while quantities last. Final sale.<\/p>","display_mode":"accordion","open_by_default":false,"color_scheme":"scheme-99a884a7-2a83-4bf1-8e24-ac9f77abb1b2","tag_mode":"include","tags":"199suits"}},"badge_Hkd38r":{"type":"badge","settings":{"spacing_bottom":"1","show_badges":true,"show_badges_discount":true,"show_badges_sold":true}},"1e0c79e9-7de0-4eee-b9c5-f27132635fb8":{"type":"title","settings":{"heading_size":"h6","spacing_bottom":"1"}},"8effeb43-55b7-4ec4-ab9b-68bcd89b865b":{"type":"price","settings":{"spacing_bottom":"1","show_price_tax_info":false,"show_price_shipping_info":false,"show_price_custom_info":""}},"custom_liquid_qNBhEc":{"type":"custom_liquid","name":"Dynamic Final Sale Tag + Hide Exchange + Return Blocks","settings":{"spacing_bottom":"0","custom_liquid":"{% if product.tags contains 'final-sale' %}\n  {% assign tsr_final_sale_reason = 'Final sale. No returns or exchanges.' %}\n  {% if product.tags contains 'jewelry' %}\n    {% assign tsr_final_sale_reason = 'Final sale for hygienic reasons (jewelry). No returns or exchanges.' %}\n  {% elsif product.tags contains 'underskirt' %}\n    {% assign tsr_final_sale_reason = 'Final sale because this is an undergarment (Volume Underskirt). No returns or exchanges.' %}\n  {% elsif product.tags contains 'clutch' %}\n    {% assign tsr_final_sale_reason = 'Final sale due to the delicate nature of clutches. No returns or exchanges.' %}\n  {% elsif product.tags contains 'lastchance' %}\n    {% assign tsr_final_sale_reason = 'Final sale due to markdown\/clearance. No returns or exchanges.' %}\n  {% endif %}\n\n  <div class=\"tsr-final-sale product__block product__block--gap-1 font-size-sm\" data-tsr-final-sale>\n    <div class=\"product__text--body-wrapper\">\n      <div class=\"product__text--body no-animation\">\n\n        <!-- Clickable trigger -->\n        <button type=\"button\" class=\"tsr-final-sale__trigger\" aria-expanded=\"false\" aria-controls=\"tsr-final-sale-popover\">\n          <svg class=\"tsr-final-sale__i\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"1.15em\" height=\"1.15em\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n            <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"#990000\" stroke-width=\"2\"\/>\n            <line x1=\"12\" y1=\"10\" x2=\"12\" y2=\"16\" stroke=\"#990000\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n            <circle cx=\"12\" cy=\"7\" r=\"1.2\" fill=\"#990000\"\/>\n          <\/svg>\n          <span class=\"tsr-final-sale__label\">Final Sale<\/span>\n        <\/button>\n\n        <!-- Popover (fixed-positioned; JS sets coords) -->\n        <div class=\"tsr-final-sale__popover\" id=\"tsr-final-sale-popover\" role=\"dialog\" aria-live=\"polite\">\n          <p class=\"tsr-final-sale__text\">\n            {{ tsr_final_sale_reason }}\n            <a href=\"https:\/\/www.thesareeroom.com\/pages\/sale-terms-conditions\" class=\"tsr-final-sale__link\">See Sale Terms.<\/a>\n          <\/p>\n        <\/div>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <style>\n    .tsr-final-sale {\n      --tsr-red: #990000;\n      --tsr-gap: 1rem;\n      color: var(--tsr-red);\n    }\n\n    .tsr-final-sale__trigger{\n      all: unset;\n      display: inline-flex;\n      align-items: center;\n      gap: .6rem;\n      color: var(--tsr-red);\n      font-weight: 400;\n      cursor: pointer;\n      line-height: 1.2;\n      font-size: var(--font-size-static-md);\n    }\n    .tsr-final-sale__trigger:focus-visible{\n      outline: 2px solid var(--tsr-red);\n      outline-offset: 2px;\n      border-radius: .375rem;\n    }\n    .tsr-final-sale__i{ flex: 0 0 auto; }\n\n    .tsr-final-sale__popover{\n      position: fixed;\n      top: 0; left: 0;\n      transform: translate(0,0);\n      background: #fff;\n      border: 1px solid rgba(0,0,0,.12);\n      box-shadow: 0 8px 24px rgba(0,0,0,.16);\n      border-radius: .6rem;\n      padding: .85rem 1rem;\n      min-width: 300px;\n      max-width: 420px;\n      display: none;\n      z-index: 2000;\n      font-size: 1rem;\n      line-height: 1.45;\n      color: var(--color-foreground,#222);\n    }\n    .tsr-final-sale__popover.is-visible{ display:block; }\n    .tsr-final-sale__link{ color: inherit; text-decoration: underline; }\n\n    .product__text--body svg { width: 2rem; }\n  <\/style>\n\n  <script>\n    (function(){\n      var root = document.querySelector('[data-tsr-final-sale]');\n      if(!root) return;\n      var trigger = root.querySelector('.tsr-final-sale__trigger');\n      var pop = root.querySelector('.tsr-final-sale__popover');\n      var gap = 16;\n\n      function placePopover(){\n        var t = trigger.getBoundingClientRect();\n\n        pop.style.visibility = 'hidden';\n        pop.style.display = 'block';\n        var pw = pop.offsetWidth;\n        var ph = pop.offsetHeight;\n\n        var vw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n        var vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n        var padding = 12;\n\n        var left = t.right + gap;\n        var top = Math.max(padding, Math.min(t.top + (t.height\/2) - (ph\/2), vh - ph - padding));\n\n        if (left + pw > vw - padding) {\n          left = t.left - gap - pw;\n        }\n\n        left = Math.max(padding, Math.min(left, vw - pw - padding));\n\n        pop.style.left = left + 'px';\n        pop.style.top  = top  + 'px';\n\n        if (!pop.classList.contains('is-visible')) {\n          pop.style.display = 'none';\n        } else {\n          pop.style.visibility = 'visible';\n        }\n      }\n\n      function show(){\n        pop.classList.add('is-visible');\n        trigger.setAttribute('aria-expanded','true');\n        placePopover();\n        pop.style.visibility = 'visible';\n      }\n      function hide(){\n        pop.classList.remove('is-visible');\n        trigger.setAttribute('aria-expanded','false');\n        pop.style.display = 'none';\n      }\n\n      trigger.addEventListener('click', function(e){\n        e.stopPropagation();\n        pop.classList.contains('is-visible') ? hide() : show();\n      });\n      document.addEventListener('click', function(e){ if(!root.contains(e.target)) hide(); });\n      document.addEventListener('keydown', function(e){ if(e.key === 'Escape') hide(); });\n      window.addEventListener('resize', function(){ if(pop.classList.contains('is-visible')) placePopover(); });\n      window.addEventListener('scroll', function(){ if(pop.classList.contains('is-visible')) placePopover(); }, { passive: true });\n\n      \/* === HIDE SPECIFIC ROWS\/SLIDES WHEN FINAL SALE === *\/\n      var scope = root.closest('section') || document;\n\n      function hideReturnExchangeRows(ctx){\n        \/\/ Desktop grid\n        var spans = ctx.querySelectorAll('.product__content-grid-item span, .product__content-grid-item.icon span');\n        spans.forEach(function(span){\n          var t = (span.textContent || '').trim().toLowerCase();\n          if (t === 'free exchanges' || t === '15-day returns') {\n            var row = span.closest('.product__content-grid-item');\n            if (row) row.style.display = 'none';\n          }\n        });\n\n        \/\/ Mobile swiper\n        var mobileSpans = ctx.querySelectorAll('.swiper-slide.icon span');\n        mobileSpans.forEach(function(span){\n          var t = (span.textContent || '').trim().toLowerCase();\n          if (t === 'free exchanges' || t === '15-day returns') {\n            var slide = span.closest('.swiper-slide');\n            if (slide) slide.style.display = 'none';\n          }\n        });\n      }\n\n      hideReturnExchangeRows(scope);\n\n      var mo = new MutationObserver(function(muts){\n        muts.forEach(function(m){\n          if (m.addedNodes && m.addedNodes.length) {\n            hideReturnExchangeRows(scope);\n          }\n        });\n      });\n      mo.observe(scope, { childList: true, subtree: true });\n    })();\n  <\/script>\n{% endif %}"}},"description_qA3HqH":{"type":"description","settings":{"spacing_bottom":"1","behaviour":"plain","heading":"Product Details","text_truncate":2,"icon":"","metafield_for_product_variant":"","show_block_content":true}},"text_BrRPp8":{"type":"text","settings":{"spacing_bottom":"1","heading":"{{ product.metafields.custom.model_size.value }}","icon":"theme-info-circle","link_to_resource":"none","text_before_link":false,"heading_secondary":"","metafield_for_product_variant":"","show_block_content":true}},"1e939cd6-0958-4135-a9e5-c50faef01437":{"type":"variant_picker","settings":{"spacing_bottom":"4","title":"Variant picker","enable_back_in_stock":true,"picker_type":"swatch","variant_options_with_thumbnails":"","size_guide_page":"{{ product.metafields.custom.size_guide.value }}","sizes_option":"Size"}},"custom_liquid_hh7UHc":{"type":"custom_liquid","name":"Sold out variant style + variant pill style","settings":{"spacing_bottom":"0","custom_liquid":"{%- comment -%}\nClickable \"Sold Out\" look for variant chips.\nApplies ONLY to variant labels (size\/length), NOT swatches and NOT the ATC button.\n{%- endcomment -%}\n\n<style>\n  \/* 1) Clone your theme's disabled look onto our custom class *\/\n  .product-option__label.tsr-oos {\n    border-color: rgba(var(--color-foreground), .15);\n    color: rgba(var(--color-foreground), .4);\n    background-color: transparent;\n    overflow: hidden;\n    position: relative;\n    cursor: pointer;\n    pointer-events: auto;\n  }\n\n  \/* 2) Soft fade overlay (keeps text legible but “washed”) *\/\n  .product-option__label.tsr-oos::before {\n    content: \"\";\n    position: absolute; inset: 0;\n    background: rgba(0,0,0,.02);\n    pointer-events: none;\n    border-radius: inherit;\n  }\n\n  \/* Thinner + lighter diagonal slash *\/\n  .product-option__label.tsr-oos::after {\n    content: \"\";\n    position: absolute;\n    inset: 0;\n    background:\n      linear-gradient(\n        135deg,\n        transparent calc(50% - 0.5px),\n        rgba(var(--color-foreground), .18) calc(50% - 0.5px),\n        rgba(var(--color-foreground), .18) calc(50% + 0.5px),\n        transparent calc(50% + 0.5px)\n      );\n    pointer-events: none;\n    border-radius: inherit;\n  }\n\n  \/* If the chip gets \"selected\" styling, mute it for OOS to stay consistent *\/\n  .product-option__input:checked + .product-option__label.tsr-oos {\n    box-shadow: none;\n    border-color: rgba(var(--color-foreground), .25);\n  }\n\n  \/* (Optional) tiny “Sold out” text for screen readers *\/\n  .tsr-vh {\n    position: absolute;\n    width: 1px; height: 1px; padding: 0; margin: -1px;\n    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;\n  }\n\n\n<\/style>\n\n<script>\n(function(){\n  var FORCE_CLICKABLE = true; \/\/ set to false if you DON'T want to override disabled\n\n  function markOOS(root){\n    var inputs = (root || document).querySelectorAll('.product-option__input.variant-option-radio-input');\n    inputs.forEach(function(input){\n      var label = document.querySelector('label[for=\"'+ input.id +'\"]');\n      if (!label) return;\n\n      var qtyAttr = input.getAttribute('data-variant-quantity');\n      var qty = qtyAttr == null ? null : parseInt(qtyAttr, 10);\n      var themeDisabled = input.disabled || input.classList.contains('disabled');\n      var isOOS = themeDisabled || (qty !== null && !isNaN(qty) && qty <= 0);\n\n      if (isOOS) {\n        label.classList.add('tsr-oos');\n\n        \/\/ Optional SR-only hint\n        if (!label.querySelector('.tsr-vh')) {\n          var sr = document.createElement('span');\n          sr.className = 'tsr-vh';\n          sr.textContent = ' (Sold out)';\n          label.appendChild(sr);\n        }\n\n        \/\/ Keep it clickable (if your theme disabled it)\n        if (FORCE_CLICKABLE && input.disabled) {\n          input.disabled = false;              \/\/ allow selection\n          input.classList.remove('disabled');  \/\/ some themes add this\n          input.setAttribute('data-tsr-oos', '1');\n        }\n      } else {\n        label.classList.remove('tsr-oos');\n        var srNode = label.querySelector('.tsr-vh');\n        if (srNode) srNode.remove();\n        if (input.hasAttribute('data-tsr-oos')) input.removeAttribute('data-tsr-oos');\n      }\n    });\n  }\n\n  \/\/ Initial run\n  markOOS(document);\n\n  \/\/ Re-run on changes and dynamic rerenders\n  document.addEventListener('change', function(e){\n    if (e.target && e.target.classList && e.target.classList.contains('variant-option-radio-input')) {\n      requestAnimationFrame(function(){ markOOS(document); });\n    }\n  });\n\n  var scope = document.querySelector('section[id^=\"product\"]') || document;\n  var mo = new MutationObserver(function(muts){\n    for (var i=0;i<muts.length;i++){\n      if (muts[i].addedNodes && muts[i].addedNodes.length) {\n        markOOS(scope);\n        break;\n      }\n    }\n  });\n  mo.observe(scope, { childList: true, subtree: true });\n})();\n<\/script>\n\n<style>\n  \/* ✅ Pill layout ONLY for text variants (Size\/Length) — excludes swatches AND never targets ATC *\/\n  .product__variant-picker fieldset.product__variant-options.product-form__input--button:not(:has(.product-option__swatch)) {\n    display: flex !important;\n    flex-wrap: nowrap !important; \/* Prevent wrapping *\/\n    justify-content: space-between !important;\n    gap: 8px !important;\n    margin-bottom: 32px !important;\n    padding: 0 !important;\n    width: 100% !important;\n  }\n\n  \/* Each size\/length option pill — only labels inside those fieldsets *\/\n  .product__variant-picker fieldset.product__variant-options.product-form__input--button:not(:has(.product-option__swatch)) > label {\n    flex: 1 1 auto !important;\n    min-width: 0 !important;\n    padding: 10px !important;\n    border-radius: 10px !important;\n    text-align: center;\n    height: 3.6rem !important;        \/* keeps pill height consistent *\/\n    line-height: 3.6rem !important;   \/* vertically centers text *\/\n  }\n\n  \/* Container full-width cleanup (variants wrapper only) *\/\n  .product__variant-picker {\n    width: 100% !important;\n    max-width: 100% !important;\n    padding: 0 !important;\n    margin: 0 !important;\n  }\n\n  \/* Spacing for variant groups; ATC row uses .product-form__buttons (not touched) *\/\n  .product__variant-picker .product-form__input {\n    margin-bottom: 30px !important;\n  }\n<\/style>"}},"1e939cd6-0955-4135-a9e5-c50faef01437":{"type":"purchase_options","settings":{"spacing_bottom":"1","show_subscription_title":true,"show_subscription_custom_info":"","show_subscription_policy":true}},"8604a6ff-ad0b-44dd-8068-1de4e062f8e8":{"type":"buy_buttons","settings":{"spacing_bottom":"1","show_quantity":true,"layout":"inline","show_dynamic_checkout":false,"show_gift_card_recipient":false}},"custom_liquid_cdFV93":{"type":"custom_liquid","name":"Stoq Notify Me Button","disabled":true,"settings":{"spacing_bottom":"0","custom_liquid":"<style>\n  \/* Put the RR button in the same layout as ATC and span full width *\/\n  .product-form__buttons .restock-rocket-button-container{\n    grid-column: 1 \/ -1;     \/* ← full width across the grid *\/\n    width: 100%;\n    margin-top: var(--button-group-gap, 10px);\n    position: relative;\n  }\n\n  \/* Make the RR button look like .product-form__submit.button.button--filled.button--full *\/\n  .restock-rocket-button{\n    display: inline-flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    width: 100% !important;\n    min-height: var(--button-min-height, 56px) !important;\n    padding: 0 var(--button-padding-inline, 2rem) !important;\n\n    border: none !important;\n    border-radius: var(--button-border-radius, 9999px) !important; \/* pill like ATC *\/\n    background-color: var(--color-button, var(--color-foreground)) !important;\n    color: var(--color-button-text, var(--color-background)) !important;\n\n    font: inherit !important;\n    font-weight: var(--font-button-weight, 600) !important;\n    text-transform: uppercase !important;\n    letter-spacing: var(--button-letter-spacing, .06em) !important;\n    line-height: 1 !important;\n    box-shadow: var(--button-shadow, none) !important;\n    transition: background-color .2s ease, color .2s ease, box-shadow .2s ease !important;\n  }\n\n  .restock-rocket-button:hover,\n  .restock-rocket-button:focus-visible{\n    background-color: var(--color-button-hover, #000) !important;\n    color: var(--color-button-text-hover, #fff) !important;\n    outline: none !important;\n  }\n\n  \/* Make the clickable cover match the pill shape and not look boxy *\/\n  .restock-rocket-button-cover{\n    border-radius: var(--button-border-radius, 9999px) !important;\n  }\n\n  \/* Safety: prevent any fixed widths injected by the app *\/\n  .restock-rocket-button,\n  .restock-rocket-button-container{ max-width: 100% !important; }\n<\/style>\n\n<script>\n\/* If the app rendered the button outside the .product-form__buttons grid,\n   move it so it sits exactly where the ATC lives. *\/\n(function(){\n  var rr = document.querySelector('.restock-rocket-button-container');\n  var group = document.querySelector('.product-form__buttons');\n  if (rr && group && rr.parentElement !== group) group.appendChild(rr);\n\n  \/* If you want the RR button directly AFTER the ATC button: *\/\n  var atc = document.querySelector('.product-form__submit.button');\n  if (rr && atc && atc.nextSibling !== rr) atc.parentNode.insertBefore(rr, atc.nextSibling);\n})();\n<\/script>"}},"custom_liquid_8DY4r7":{"type":"custom_liquid","name":"Attentive Back In Stock Button","settings":{"spacing_bottom":"0","custom_liquid":"<script id=\"attn-waitlist-eligibility\" type=\"application\/json\">{\n{%- liquid\n  assign out = ''\n  for v in product.variants\n    assign oos = false\n    if v.available == false\n      assign oos = true\n    elsif v.inventory_management and v.inventory_quantity <= 0\n      assign oos = true\n    endif\n    assign pair = '\"' | append: v.id | append: '\": ' | append: oos\n    assign out = out | append: pair\n    unless forloop.last\n      assign out = out | append: ', '\n    endunless\n  endfor\n  echo out\n-%}\n}<\/script>\n\n<div id=\"attn-waitlist-trigger\"><\/div>\n\n<style>\n  \/* Keep wrapper transparent; Attentive injects its own <button> *\/\n  #attn-waitlist-trigger {\n    background: transparent !important;\n    border: none !important;\n    padding: 0 !important;\n    display: none;                 \/* JS will show\/hide *\/\n    width: 100%;\n  }\n\n  \/* Place trigger in the same grid slot as ATC when inside .product-form__buttons *\/\n  .product-form__buttons #attn-waitlist-trigger { grid-column: span 7 \/ span 7; }\n\n  \/* Style ONLY the inner button Attentive injects (match ATC: black\/white + invert on hover) *\/\n  #attn-waitlist-trigger button,\n  #attn-waitlist-trigger [role=\"button\"] {\n    display: inline-block;\n    width: 100%;\n    text-align: center;\n    border: 0;\n    border-radius: var(--button-border-radius, 4px);\n    padding: 1.6rem 2.4rem;\n    cursor: pointer;\n    font-family: var(--font-button-family, inherit);\n    font-size: calc(var(--font-button-scale,1) * 1rem);\n    line-height: 1.2;\n    font-weight: var(--font-button-weight,600);\n    letter-spacing: var(--font-button-letter-spacing,.05em);\n    text-transform: uppercase;\n    color: #fff !important;\n    background-color: #000 !important;\n    border: .1rem solid #000 !important;\n    transition: color .3s, background-color .3s, border-color .3s, opacity .2s;\n  }\n  #attn-waitlist-trigger button:hover,\n  #attn-waitlist-trigger button:focus-visible,\n  #attn-waitlist-trigger [role=\"button\"]:hover,\n  #attn-waitlist-trigger [role=\"button\"]:focus-visible {\n    color: #000 !important;\n    background-color: transparent !important;\n    border-color: #000 !important;\n    outline: none;\n  }\n<\/style>\n\n<script>\n(function(){\n  \/\/ ATC button (SOLD OUT state lives on this same element)\n  const atcBtn  = document.querySelector('form[action*=\"\/cart\/add\"] [type=\"submit\"]');\n  const trigger = document.getElementById('attn-waitlist-trigger');\n  const eligEl  = document.getElementById('attn-waitlist-eligibility');\n  if (!atcBtn || !trigger || !eligEl) return;\n\n  \/\/ Eligibility map: { \"variantId\": true|false }  (true => OOS\/eligible)\n  let ELIG = {};\n  try { ELIG = JSON.parse(eligEl.textContent || '{}'); } catch(e){ ELIG = {}; }\n\n  \/\/ Ensure trigger sits right after ATC (same row)\n  if (atcBtn.parentNode && trigger.parentNode !== atcBtn.parentNode) {\n    atcBtn.parentNode.insertBefore(trigger, atcBtn.nextSibling);\n  }\n\n  function currentVariantId(){\n    const idInput = document.querySelector('form[action*=\"\/cart\/add\"] [name=\"id\"]');\n    if (idInput && idInput.value) return idInput.value;\n    const p = new URLSearchParams(location.search);\n    return p.get('variant');\n  }\n\n  \/\/ Has Attentive mounted its inner button yet?\n  function attentiveReady(){\n    return !!trigger.querySelector('button, [role=\"button\"]');\n  }\n\n  function update(){\n    const vid = currentVariantId();\n    if (!vid) return;\n\n    \/\/ Helpful for some setups\n    trigger.setAttribute('data-variant-id', String(vid));\n\n    const eligible = !!ELIG[vid];\n\n    if (eligible && attentiveReady()) {\n      \/\/ Hide ATC (SOLD OUT) and show Attentive button in the same spot\n      atcBtn.style.display = 'none';\n      atcBtn.setAttribute('aria-hidden','true');\n      trigger.style.display = 'block';\n    } else {\n      \/\/ Show ATC (normal or SOLD OUT), hide Attentive trigger\n      atcBtn.style.display = '';\n      atcBtn.removeAttribute('aria-hidden');\n      trigger.style.display = 'none';\n    }\n  }\n\n  \/\/ Initial run\n  update();\n\n  \/\/ Re-run on variant changes \/ DOM updates\n  ['change','variant:change','variant:changed','product:variant-change','theme:variant:change','popstate']\n    .forEach(evt => {\n      window.addEventListener(evt, () => requestAnimationFrame(update));\n      document.addEventListener(evt, () => requestAnimationFrame(update));\n    });\n\n  \/\/ Attentive mounts its inner button asynchronously → watch for it\n  new MutationObserver(update).observe(trigger, { childList:true, subtree:true });\n\n  \/\/ Themes sometimes re-render the form → keep updating\n  const scope = document.querySelector('section[id^=\"product\"]') || document;\n  new MutationObserver(update).observe(scope, { childList:true, subtree:true, attributes:true, attributeFilter:['value'] });\n})();\n<\/script>"}},"e6d841d6-2f71-40b3-956a-912df13f9f6e":{"type":"inventory_notice","disabled":true,"settings":{"spacing_bottom":"1","inventory_threshold":21,"notice_just_text":true}},"b2dabe12-2158-4ba6-bc54-9baae453acf5":{"type":"text","disabled":true,"settings":{"spacing_bottom":"1","heading":"In Stock & Ready to Ship","icon":"theme-check","link_to_resource":"none","text_before_link":false,"heading_secondary":"","metafield_for_product_variant":"","show_block_content":true}},"text_trRftG":{"type":"text","disabled":true,"settings":{"spacing_bottom":"1","heading":"FREE Exchanges (Canada & USA)","icon":"theme-check","link_to_resource":"none","text_before_link":false,"heading_secondary":"15-Day Returns (Canada & USA)","metafield_for_product_variant":"","show_block_content":true}},"content_grid_iCJFCN":{"type":"content_grid","settings":{"heading":"Free Exchanges","icon":"theme-check-circle"}},"content_grid_W3Mqy6":{"type":"content_grid","settings":{"heading":"15-Day Returns","icon":"theme-check-circle"}},"content_grid_HTRRPP":{"type":"content_grid","settings":{"heading":"In Stock & Ready to Ship","icon":"theme-check-circle"}},"content_grid_AAkHkC":{"type":"content_grid","settings":{"heading":"Free Shipping on C$150+","icon":"theme-check-circle"}},"goback_KzEGGF":{"type":"goback","disabled":true,"settings":{"goback_style":"filled","goback_label":"Go back","display_goback_mobile":"on-media","show_on":"mobile"}},"content_tabs_3NAUzY":{"type":"content_tabs","name":"Content tabs - WIP","disabled":true,"settings":{"spacing_bottom":"1","heading":"","active_tab":"1","display_description":"none","heading_description":"","icon_description":"","heading_01":"Model Size","icon_01":"theme-plus","content_01":"<p>{{ product.metafields.custom.model_size.value }}<\/p>","page_01":"","enable_tab_rule_01":true,"tab_rule_mode_01":"hide_on_match","tab_rule_tags_01":"O\/S","heading_02":"Details & Materials","icon_02":"theme-plus","content_02":"<p>{{ product.metafields.custom.product_details | metafield_tag }}<\/p>","page_02":"","enable_tab_rule_02":true,"tab_rule_mode_02":"show_only_on_match","tab_rule_tags_02":"easy-drape,","heading_03":"Materials","icon_03":"theme-plus","content_03":"<p>{{ product.metafields.custom.product_materials | metafield_tag }}<\/p>","page_03":"","enable_tab_rule_03":true,"tab_rule_mode_03":"show_only_on_match","tab_rule_tags_03":"O\/S","heading_04":"Details","icon_04":"theme-plus","content_04":"<p>{{ product.metafields.custom.product_details | metafield_tag }}<\/p>","page_04":"","enable_tab_rule_04":true,"tab_rule_mode_04":"show_only_on_match","tab_rule_tags_04":"O\/S","heading_05":"Shipping & Returns","icon_05":"theme-plus","content_05":"","page_05":"shipping-returns","enable_tab_rule_05":false,"tab_rule_mode_05":"hide_on_match","tab_rule_tags_05":"","heading_06":"","icon_06":"theme-box","content_06":"","page_06":"","enable_tab_rule_06":false,"tab_rule_mode_06":"hide_on_match","tab_rule_tags_06":""}},"content_block_VEKmWL":{"type":"content_block","name":"Content block - (Shipping & Returns)","settings":{"spacing_bottom":"1","heading":"Shipping & Returns","row_content":"","icon":"theme-box","page":"shipping-returns","metafield_for_product_variant":"","show_block_content":true}},"custom_liquid_pAdnMX":{"type":"custom_liquid","name":"Code - Spacing Fix for Content Block","settings":{"spacing_bottom":"0","custom_liquid":"<style>\n.product__accordion .accordion__body-inner {\n    padding-inline-end: 1.2rem !important;\n}\n<\/style>"}},"complementary_products_tKerNK":{"type":"complementary_products","settings":{"spacing_bottom":"1","heading":"loved with","icon":"option-heart","limit":8}},"custom_liquid_DkfFYw":{"type":"custom_liquid","settings":{"spacing_bottom":"0","custom_liquid":"{%- comment -%}\nTSR TEMP FIX (Launch Patch):\n- Traditional Drape: force Size=One Size + Length=One Size (optionally hide Size\/Length)\n- Easy-Drape: restore last Easy-Drape selection OR default to XXS - M + Short (42\")\n{%- endcomment -%}\n\n<script>\n(function () {\n  const VALUE_TRAD = 'Traditional Drape';\n  const VALUE_EASY = 'Easy-Drape';\n\n  const ONE_SIZE = 'One Size';\n\n  \/\/ ✅ Default Easy-Drape fallback (edit if you want a different default)\n  const EASY_DEFAULT_SIZE = 'XXS - M';\n  const EASY_DEFAULT_LENGTH = 'Short (42\")';\n\n  \/\/ ✅ Hide size\/length when Traditional is selected?\n  const HIDE_WHEN_TRADITIONAL = true;\n\n  const norm = (s) => (s || '').toString().trim().toLowerCase();\n\n  function getOptionFieldsets() {\n    \/\/ Your markup doesn't use data-option-position, so grab in-order inside product-variant-selects\n    const root = document.querySelector('product-variant-selects') || document;\n    const fieldsets = Array.from(root.querySelectorAll('fieldset.product__variant-options, fieldset.product-form__input--button, fieldset'));\n\n    \/\/ Expect: [Type, Size, Length]\n    const typeFS = fieldsets[0] || null;\n    const sizeFS = fieldsets[1] || null;\n    const lengthFS = fieldsets[2] || null;\n\n    return { root, typeFS, sizeFS, lengthFS };\n  }\n\n  function selectedValue(container) {\n    if (!container) return null;\n\n    const checked = container.querySelector('input[type=\"radio\"]:checked');\n    if (checked) return (checked.value || '').trim();\n\n    const sel = container.querySelector('select');\n    if (sel) return (sel.options[sel.selectedIndex]?.textContent || sel.value || '').trim();\n\n    return null;\n  }\n\n  function setHidden(el, hidden) {\n    if (!el) return;\n    el.style.display = hidden ? 'none' : '';\n    el.setAttribute('aria-hidden', hidden ? 'true' : 'false');\n  }\n\n  function clickValue(container, desiredValue) {\n    if (!container) return false;\n    const want = norm(desiredValue);\n\n    const radios = Array.from(container.querySelectorAll('input[type=\"radio\"]'));\n    if (radios.length) {\n      const hit = radios.find(r => norm(r.value) === want);\n      if (hit) {\n        if (!hit.checked) {\n          hit.click();\n          hit.dispatchEvent(new Event('change', { bubbles: true }));\n        }\n        return true;\n      }\n    }\n\n    const sel = container.querySelector('select');\n    if (sel) {\n      const opts = Array.from(sel.options);\n      const idx = opts.findIndex(o => norm(o.value) === want || norm(o.textContent) === want);\n      if (idx >= 0 && sel.selectedIndex !== idx) {\n        sel.selectedIndex = idx;\n        sel.dispatchEvent(new Event('change', { bubbles: true }));\n      }\n      return idx >= 0;\n    }\n\n    return false;\n  }\n\n  function isValueAvailableForType(allVariants, typeValue, sizeValue, lengthValue) {\n    const t = norm(typeValue), s = norm(sizeValue), l = norm(lengthValue);\n    return allVariants.some(v =>\n      norm(v.option1) === t &&\n      norm(v.option2) === s &&\n      norm(v.option3) === l &&\n      v.available\n    );\n  }\n\n  function getAllVariantsJSON(root) {\n    const script = root?.querySelector('script[data-all-variants]') || document.querySelector('script[data-all-variants]');\n    if (!script) return [];\n    try { return JSON.parse(script.textContent || '[]'); } catch { return []; }\n  }\n\n  function storeEasySelection(sizeVal, lengthVal) {\n    try {\n      sessionStorage.setItem('tsr_easy_size', sizeVal || '');\n      sessionStorage.setItem('tsr_easy_length', lengthVal || '');\n    } catch {}\n  }\n\n  function getStoredEasySelection() {\n    try {\n      return {\n        size: sessionStorage.getItem('tsr_easy_size') || '',\n        length: sessionStorage.getItem('tsr_easy_length') || ''\n      };\n    } catch {\n      return { size: '', length: '' };\n    }\n  }\n\n  function ensureEasyDefaultsOrRestore(root, sizeFS, lengthFS) {\n    const allVariants = getAllVariantsJSON(root);\n    const stored = getStoredEasySelection();\n\n    \/\/ Prefer restoring last Easy selection if it exists + is available\n    const restoreSize = stored.size || '';\n    const restoreLength = stored.length || '';\n\n    if (restoreSize && restoreLength && isValueAvailableForType(allVariants, VALUE_EASY, restoreSize, restoreLength)) {\n      clickValue(sizeFS, restoreSize);\n      clickValue(lengthFS, restoreLength);\n      return;\n    }\n\n    \/\/ Otherwise force your default Easy-Drape combo (only if it's available)\n    if (isValueAvailableForType(allVariants, VALUE_EASY, EASY_DEFAULT_SIZE, EASY_DEFAULT_LENGTH)) {\n      clickValue(sizeFS, EASY_DEFAULT_SIZE);\n      clickValue(lengthFS, EASY_DEFAULT_LENGTH);\n      return;\n    }\n\n    \/\/ Last fallback: pick first available Easy-Drape variant and apply its size\/length\n    const firstAvailEasy = allVariants.find(v => norm(v.option1) === norm(VALUE_EASY) && v.available);\n    if (firstAvailEasy) {\n      clickValue(sizeFS, firstAvailEasy.option2);\n      clickValue(lengthFS, firstAvailEasy.option3);\n    }\n  }\n\n  function update() {\n    const { root, typeFS, sizeFS, lengthFS } = getOptionFieldsets();\n    if (!typeFS || !sizeFS || !lengthFS) return;\n\n    const type = selectedValue(typeFS);\n\n    \/\/ Track Easy selections whenever Easy is selected\n    if (type && norm(type) === norm(VALUE_EASY)) {\n      const sz = selectedValue(sizeFS);\n      const ln = selectedValue(lengthFS);\n\n      \/\/ Only store if not One Size (so we don’t “remember” the Traditional forced selection)\n      if (sz && ln && norm(sz) !== norm(ONE_SIZE) && norm(ln) !== norm(ONE_SIZE)) {\n        storeEasySelection(sz, ln);\n      }\n    }\n\n    if (type && norm(type) === norm(VALUE_TRAD)) {\n      \/\/ Force One Size + One Size\n      clickValue(sizeFS, ONE_SIZE);\n      clickValue(lengthFS, ONE_SIZE);\n\n      if (HIDE_WHEN_TRADITIONAL) {\n        setHidden(sizeFS, true);\n        setHidden(lengthFS, true);\n      } else {\n        setHidden(sizeFS, false);\n        setHidden(lengthFS, false);\n      }\n    } else {\n      \/\/ Easy-Drape (or any other)\n      setHidden(sizeFS, false);\n      setHidden(lengthFS, false);\n\n      \/\/ If we’re stuck on One Size (from Traditional), switch back to a valid Easy selection\n      const sz = selectedValue(sizeFS);\n      const ln = selectedValue(lengthFS);\n\n      if (norm(sz) === norm(ONE_SIZE) || norm(ln) === norm(ONE_SIZE)) {\n        ensureEasyDefaultsOrRestore(root, sizeFS, lengthFS);\n      }\n    }\n  }\n\n  function init() {\n    update();\n\n    document.addEventListener('change', (e) => {\n      const t = e.target;\n      if (t && (t.matches('input[type=\"radio\"]') || t.matches('select'))) {\n        requestAnimationFrame(update);\n      }\n    });\n\n    const obsRoot = document.querySelector('product-variant-selects') || document.body;\n    const obs = new MutationObserver(() => {\n      clearTimeout(window.__tsrVariantPatch2);\n      window.__tsrVariantPatch2 = setTimeout(update, 50);\n    });\n    obs.observe(obsRoot, { childList: true, subtree: true });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>"}}},"block_order":["custom_liquid_9jcKUx","custom_liquid_64WdWp","sale_info_KKdNYP","sale_info_QeXpgr","badge_Hkd38r","1e0c79e9-7de0-4eee-b9c5-f27132635fb8","8effeb43-55b7-4ec4-ab9b-68bcd89b865b","custom_liquid_qNBhEc","description_qA3HqH","text_BrRPp8","1e939cd6-0958-4135-a9e5-c50faef01437","custom_liquid_hh7UHc","1e939cd6-0955-4135-a9e5-c50faef01437","8604a6ff-ad0b-44dd-8068-1de4e062f8e8","custom_liquid_cdFV93","custom_liquid_8DY4r7","e6d841d6-2f71-40b3-956a-912df13f9f6e","b2dabe12-2158-4ba6-bc54-9baae453acf5","text_trRftG","content_grid_iCJFCN","content_grid_W3Mqy6","content_grid_HTRRPP","content_grid_AAkHkC","goback_KzEGGF","content_tabs_3NAUzY","content_block_VEKmWL","custom_liquid_pAdnMX","complementary_products_tKerNK","custom_liquid_DkfFYw"],"custom_css":["@media only screen and (max-width: 749px) {.color-scheme-1 {padding-block-start: 0 !important; }}"],"settings":{"product_media_layout":"product__media-layout--grid","product_media_layout_mobile":"product__media-layout--full--sm","product_media_aspect_ratio":"2\/3","product_media_object_fit":"cover","product_slider_auto_height":true,"media_transparent_background":false,"display_media_zoom":"none","product_media_with_thumbs":"none","product_media_thumbs_ratio":"2\/3","product_media_thumbs_object_fit":"cover","gallery_arrows_show_on":"none","display_media_gallery_pagination":"lines","media_gallery_info":"","metafield_as_seen_on":"theme.as_seen_on","color_scheme_gallery":"","enable_sticky_info":true,"enable_actions_bar":true,"media_grid_size":"large","media_grid_position":"start","grid_gap":"2","spacing_grid":2,"grid_content_alignment":"start","section_width":"max-w-fluid","color_scheme":"scheme-1","spacing_top":"2","spacing_bottom":"1"}},"product_styled_more_ways_cdVj94":{"type":"product-styled-more-ways","name":"Styled more ways","settings":{"section_width":"page","color_scheme":"","color_scheme_media":"","padding_top":"m","padding_bottom":"m","heading":"Styled more ways"}},"977cac03-4044-4567-8907-fa55103a47eb":{"type":"complete-the-set","blocks":{"collapsible_BxQcN6":{"type":"collapsible","disabled":true,"settings":{"block_type":"collapsible","heading":"Description","link":"","content":"<p>[description]<\/p>","page":""}},"collapsible_pR4zmY":{"type":"collapsible","settings":{"block_type":"drawer","heading":"Shipping & Returns","link":"","content":"","page":"shipping-returns-old"}},"collapsible_DYfCGt":{"type":"collapsible","settings":{"block_type":"collapsible","heading":"Model size & details","link":"","content":"<p>{{ product.metafields.custom.model_size.value }}<\/p>","page":""}},"collapsible_QcDnKh":{"type":"collapsible","settings":{"block_type":"drawer","heading":"Find your size","link":"shopify:\/\/pages\/sizing","content":"","page":"{{ product.metafields.custom.size_guide.value }}"}}},"block_order":["collapsible_BxQcN6","collapsible_pR4zmY","collapsible_DYfCGt","collapsible_QcDnKh"],"disabled":true,"settings":{"heading":"More info","content_heading":"Similar items","heading_size":"h4","content_type":"products","featured_image_aspect_ratio":"auto","open_first_collapsible":true,"flip_desktop":true,"flip_mobile":true,"section_width":"max-w-fluid","color_scheme":"","spacing_top":"6","spacing_bottom":"2"}},"recommendations":{"type":"product-recommendations","custom_css":[".button--filled {display: none !important;}"],"settings":{"layout":"layout-1","enable_slideshow_overflow":true,"heading":"Your <em>next<\/em> obsession.","heading_size":"h2","subheading":"","button_label":"","button_link":"","button_style":"button--filled","show_navigation_arrows":true,"slider_autoplay":5.5,"tabs_button_style":"tab-btn-filled","max_products":12,"show_unavailable_products":false,"section_width":"max-w-fluid","color_scheme":"","spacing_top":"4","spacing_bottom":"4"}},"175934514655014569":{"type":"apps","disabled":true,"name":"Apps - Rebuy","settings":{"section_layout":"normal","spacing_inner":"2","section_width":"max-w-page","color_scheme":"","spacing_top":"2","spacing_bottom":"2"}},"multitile_KDV8BX":{"type":"multitile","blocks":{"tile_qpzFf7":{"type":"tile","settings":{"show_on":"both","column_factor":3,"row_factor":1,"color_scheme":"","gradient_background_color":"","tile_aspect_ratio":"1\/1","content_position_vertical":"justify-center","content_alignment":"align-center text-center","content_alignment_for_mobile":"start","media_position":"background","heading":"","heading_size":"h3","text":"","button_label":"","button_link":"","button_style":"button--filled","video_external":"","show_controls_on_video":false,"video_external_mobile":"","show_controls_on_video_mobile":false,"spacing_inner":"2"}},"tile_kkJDV4":{"type":"tile","settings":{"show_on":"both","column_factor":3,"row_factor":2,"color_scheme":"","gradient_background_color":"","tile_aspect_ratio":"auto","content_position_vertical":"justify-center","content_alignment":"align-center text-center","content_alignment_for_mobile":"start","media_position":"background","heading":"","heading_size":"h3","text":"","button_label":"","button_link":"","button_style":"button--filled","video_external":"","show_controls_on_video":false,"video_external_mobile":"","show_controls_on_video_mobile":false,"spacing_inner":"2"}},"tile_aT3xD9":{"type":"tile","settings":{"show_on":"both","column_factor":3,"row_factor":1,"color_scheme":"scheme-8","gradient_background_color":"","tile_aspect_ratio":"auto","content_position_vertical":"justify-center","content_alignment":"align-center text-center","content_alignment_for_mobile":"start","media_position":"background","heading":"Amazing details. Organic fabrics.","heading_size":"h3","text":"","button_label":"","button_link":"","button_style":"button--filled","video_external":"","show_controls_on_video":false,"video_external_mobile":"","show_controls_on_video_mobile":false,"spacing_inner":"6"}}},"block_order":["tile_qpzFf7","tile_kkJDV4","tile_aT3xD9"],"disabled":true,"settings":{"block_order_mobile":false,"heading":"","heading_size":"h3","heading_alignment":"start","spacing_tile":"default","color_scheme":"","section_width":"max-w-fluid","spacing_top":"2","spacing_bottom":"2"}},"166904322806a89075":{"type":"apps","blocks":{"judge_me_reviews_review_widget_WKrDXa":{"type":"shopify:\/\/apps\/judge-me-reviews\/blocks\/review_widget\/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8","settings":{"review_data":"real_data","max_width":1200,"show_shop_reviews":false,"empty_state":"hide_widget"}}},"block_order":["judge_me_reviews_review_widget_WKrDXa"],"disabled":true,"custom_css":[".junip-product-review-average-container {text-align: left;}",".junip-powered-by-footer {display: none;}"],"name":"Apps - Reviews","settings":{"section_layout":"normal","spacing_inner":"2","section_width":"max-w-page","color_scheme":"scheme-55676cb2-d126-4c0e-ba10-9fd6c2d27042","spacing_top":"4","spacing_bottom":"2"}},"custom_liquid_YpNr9W":{"type":"custom-liquid","disabled":true,"name":"Junip Reviews - Custom Styling","settings":{"custom_liquid":"<!-- Start of Judge.me code -->\n\n{% assign has_legacy = false %}\n{% if product.metafields.judgeme.widget.size > 20 %}\n  {% assign has_legacy = true %}\n{% endif %}\n\n<div style=\"clear:both\"><\/div>\n\n<div\n  id=\"judgeme_product_reviews\"\n  class=\"jdgm-widget jdgm-review-widget\"\n  data-product-title=\"{{ product.title | escape }}\"\n  data-id=\"{{ product.id }}\"\n  data-product-id=\"{{ product.id }}\"\n  data-widget=\"review\"\n  data-auto-install=\"false\"\n  data-shop-reviews-count=\"{{ shop.metafields.judgeme.shop_reviews_count | default: 0 | escape }}\"\n  data-entry-point=\"review_widget.js\"\n  data-entry-key=\"review-widget\/main.js\"\n>\n  {% if has_legacy %}\n    <div class=\"jdgm-legacy-widget-content\" style=\"display:none;\">\n      {{ product.metafields.judgeme.widget }}\n    <\/div>\n  {% endif %}\n<\/div>\n\n{% if product.metafields.judgeme.review_widget_data %}\n  <script>\n    jdgm.data ||= {};\n    jdgm.data.reviewWidget ||= {};\n    jdgm.data.reviewWidget[{{ product.id }}] = {{ product.metafields.judgeme.review_widget_data }};\n  <\/script>\n{% endif %}\n\n{% style %}\n\n\/* =========================\n   Judge.me Base Styling\n========================= *\/\n\n.jdgm-widget,\n.jdgm-rev-widg,\n.jdgm-all-reviews-widget {\n  font-family: inherit !important;\n  color: rgb(var(--color-foreground)) !important;\n}\n\n\/* Remove ugly default container styling *\/\n.jdgm-rev-widg {\n  border: none !important;\n  background: transparent !important;\n  padding: 0 !important;\n  margin-top: 4rem !important;\n}\n\n\/* Headings *\/\n.jdgm-rev-widg__title,\n.jdgm-all-reviews__title {\n  font-size: calc(var(--font-heading-scale) * 2.2rem) !important;\n  font-weight: var(--font-heading-weight) !important;\n  letter-spacing: -0.02em !important;\n  margin-bottom: 2rem !important;\n}\n\n\/* Review text *\/\n.jdgm-rev__body,\n.jdgm-rev__title,\n.jdgm-rev__author,\n.jdgm-rev__timestamp {\n  font-family: inherit !important;\n}\n\n\/* Review cards *\/\n.jdgm-rev {\n  border-top: 1px solid rgba(var(--color-foreground), 0.08) !important;\n  padding: 2.4rem 0 !important;\n}\n\n\/* Stars *\/\n.jdgm-star,\n.jdgm-prev-badge__stars .jdgm-star {\n  color: #d4af37 !important;\n}\n\n\/* =========================\n   Buttons (Junip Style)\n========================= *\/\n\n.jdgm-widget .jdgm-write-rev-link,\n.jdgm-widget .jdgm-btn,\n.jdgm-widget input[type=\"submit\"],\n.jdgm-widget button {\n\n  --color-button-text: rgb(var(--color-filled-button-text));\n  --color-button-background: rgb(var(--color-filled-button));\n  --color-button-outline: rgb(var(--color-filled-button));\n  --color-button-hover-text: rgb(var(--color-filled-button));\n  --color-button-hover-background: transparent;\n  --color-button-hover-outline: rgb(var(--color-filled-button));\n\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  padding: 1.6rem 2.4rem !important;\n\n  font: inherit !important;\n  font-weight: var(--font-button-weight) !important;\n  font-size: calc(var(--font-button-scale) * 1rem) !important;\n  line-height: calc(1 + 0 \/ var(--font-button-scale)) !important;\n\n  letter-spacing: var(--font-button-letter-spacing) !important;\n  text-transform: var(--button-text-transform) !important;\n\n  border-radius: var(--button-border-radius) !important;\n  border: 1px solid var(--color-button-outline) !important;\n\n  color: var(--color-button-text) !important;\n  background: var(--color-button-background) !important;\n\n  text-decoration: none !important;\n  box-shadow: none !important;\n\n  transition: all 0.25s ease !important;\n  cursor: pointer !important;\n}\n\n.jdgm-widget .jdgm-write-rev-link:hover,\n.jdgm-widget .jdgm-btn:hover,\n.jdgm-widget input[type=\"submit\"]:hover,\n.jdgm-widget button:hover {\n  color: var(--color-button-hover-text) !important;\n  background: var(--color-button-hover-background) !important;\n  border-color: var(--color-button-hover-outline) !important;\n}\n\n\/* =========================\n   Form Styling\n========================= *\/\n\n.jdgm-form input,\n.jdgm-form textarea,\n.jdgm-form select {\n  border-radius: var(--input-border-radius, 8px) !important;\n  border: 1px solid rgba(var(--color-foreground), 0.15) !important;\n  padding: 1.2rem 1.4rem !important;\n  font: inherit !important;\n  background: rgb(var(--color-background)) !important;\n  color: rgb(var(--color-foreground)) !important;\n}\n\n.jdgm-form textarea {\n  min-height: 140px !important;\n}\n\n.jdgm-form label {\n  font-size: 1.3rem !important;\n  margin-bottom: 0.6rem !important;\n}\n\n\/* =========================\n   Pagination\n========================= *\/\n\n.jdgm-paginate {\n  margin-top: 3rem !important;\n}\n\n.jdgm-paginate__page {\n  font: inherit !important;\n}\n\n\/* =========================\n   Mobile\n========================= *\/\n\n@media screen and (max-width: 749px) {\n\n  .jdgm-widget .jdgm-write-rev-link,\n  .jdgm-widget .jdgm-btn,\n  .jdgm-widget input[type=\"submit\"],\n  .jdgm-widget button {\n    width: 100% !important;\n  }\n\n}\n\n{% endstyle %}\n\n<!-- End of Judge.me code -->","section_width":"max-w-page","color_scheme":"","spacing_top":"0","spacing_bottom":"0"}},"custom_liquid_VRTqnA":{"type":"custom-liquid","disabled":true,"name":"Judge.Me Reviews - Custom","settings":{"custom_liquid":"<!-- Start of Judge.me code -->\n{% assign has_legacy = false %}\n{% if product.metafields.judgeme.widget.size > 20 %}\n  {% assign has_legacy = true %}\n{% endif %}\n\n<div style=\"clear:both\"><\/div>\n\n<div\n  id=\"judgeme_product_reviews\"\n  class=\"jdgm-widget jdgm-review-widget tsr-judgeme-widget\"\n  data-product-title=\"{{ product.title | escape }}\"\n  data-id=\"{{ product.id }}\"\n  data-product-id=\"{{ product.id }}\"\n  data-widget=\"review\"\n  data-auto-install=\"false\"\n  data-shop-reviews-count=\"{{ shop.metafields.judgeme.shop_reviews_count | default: 0 | escape }}\"\n  data-entry-point=\"review_widget.js\"\n  data-entry-key=\"review-widget\/main.js\"\n>\n  {% if has_legacy %}\n    <div class=\"jdgm-legacy-widget-content\" style=\"display:none;\">\n      {{ product.metafields.judgeme.widget }}\n    <\/div>\n  {% endif %}\n<\/div>\n\n{% if product.metafields.judgeme.review_widget_data %}\n  <script>\n    jdgm.data ||= {};\n    jdgm.data.reviewWidget ||= {};\n    jdgm.data.reviewWidget[{{ product.id }}] = {{ product.metafields.judgeme.review_widget_data }};\n  <\/script>\n{% endif %}\n\n{% style %}\n\n\/* ===============================\n   TSR Judge.me PDP Styling\n   safer Junip-inspired layout\n================================ *\/\n\n.tsr-judgeme-widget {\n  width: 100%;\n  max-width: 1400px;\n  margin: 0 auto;\n  padding: 6rem 3rem 0;\n  overflow: hidden;\n  color: #111;\n}\n\n.tsr-judgeme-widget,\n.tsr-judgeme-widget * {\n  font-family: inherit !important;\n  box-sizing: border-box !important;\n}\n\n\/* Main wrapper *\/\n.tsr-judgeme-widget .jdgm-rev-widg {\n  border: 0 !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  background: transparent !important;\n}\n\n\/* Header container *\/\n.tsr-judgeme-widget .jdgm-rev-widg__header {\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: center !important;\n  gap: 3rem 5rem !important;\n  width: 100% !important;\n  border-bottom: 1px solid rgba(0,0,0,0.12) !important;\n  padding-bottom: 4rem !important;\n  margin-bottom: 4rem !important;\n  text-align: left !important;\n}\n\n\/* Title *\/\n.tsr-judgeme-widget .jdgm-rev-widg__title {\n  flex: 0 0 100% !important;\n  width: 100% !important;\n  max-width: 100% !important;\n\n  margin: 0 !important;\n  text-align: left !important;\n\n  font-size: clamp(4rem, 4.6vw, 6.6rem) !important;\n  line-height: 0.98 !important;\n  letter-spacing: -0.065em !important;\n  font-weight: 400 !important;\n}\n\n\/* Summary rating *\/\n.tsr-judgeme-widget .jdgm-rev-widg__summary {\n  flex: 0 0 230px !important;\n  width: 230px !important;\n  max-width: 230px !important;\n  text-align: left !important;\n  margin: 0 !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev-widg__summary-average {\n  display: block !important;\n  font-size: 5.4rem !important;\n  line-height: 1 !important;\n  letter-spacing: -0.05em !important;\n  font-weight: 400 !important;\n  margin: 0 0 1rem !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev-widg__summary-stars {\n  display: block !important;\n  margin: 0 0 1rem !important;\n  white-space: nowrap !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev-widg__summary-text {\n  display: block !important;\n  font-size: 1.4rem !important;\n  line-height: 1.4 !important;\n  opacity: 0.75 !important;\n  margin: 0 !important;\n}\n\n\/* Stars *\/\n.tsr-judgeme-widget .jdgm-star {\n  color: #111 !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev-widg__summary .jdgm-star {\n  font-size: 2rem !important;\n}\n\n\/* Histogram *\/\n.tsr-judgeme-widget .jdgm-histogram {\n  flex: 0 1 420px !important;\n  width: 420px !important;\n  max-width: 420px !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__row {\n  display: grid !important;\n  grid-template-columns: 1fr 42px !important;\n  align-items: center !important;\n  gap: 1.4rem !important;\n  height: auto !important;\n  padding: 0.4rem 0 !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__star {\n  width: 130px !important;\n  min-width: 130px !important;\n  white-space: nowrap !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__star .jdgm-star {\n  font-size: 1.6rem !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__bar {\n  width: 100% !important;\n  height: 0.8rem !important;\n  background: rgba(0,0,0,0.1) !important;\n  border-radius: 0 !important;\n  box-shadow: none !important;\n  overflow: hidden !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__bar-content {\n  height: 100% !important;\n  background: #111 !important;\n  border-radius: 0 !important;\n}\n\n.tsr-judgeme-widget .jdgm-histogram__frequency {\n  font-size: 1.2rem !important;\n  opacity: 0.5 !important;\n}\n\n\/* Button wrapper *\/\n.tsr-judgeme-widget .jdgm-widget-actions-wrapper {\n  flex: 0 0 auto !important;\n  margin-left: auto !important;\n  padding-left: 4rem !important;\n  border-left: 1px solid rgba(0,0,0,0.12) !important;\n}\n\n\/* Button *\/\n.tsr-judgeme-widget .jdgm-write-rev-link,\n.tsr-judgeme-widget .jdgm-btn,\n.tsr-judgeme-widget button,\n.tsr-judgeme-widget input[type=\"submit\"] {\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n\n  min-width: 220px !important;\n  padding: 1.7rem 3.4rem !important;\n\n  background: #111 !important;\n  color: #fff !important;\n  border: 1px solid #111 !important;\n  border-radius: 999px !important;\n\n  font-size: 1.1rem !important;\n  letter-spacing: 0.14em !important;\n  text-transform: uppercase !important;\n  font-weight: 500 !important;\n  line-height: 1 !important;\n\n  text-decoration: none !important;\n  box-shadow: none !important;\n}\n\n.tsr-judgeme-widget .jdgm-write-rev-link:hover,\n.tsr-judgeme-widget .jdgm-btn:hover,\n.tsr-judgeme-widget button:hover,\n.tsr-judgeme-widget input[type=\"submit\"]:hover {\n  background: transparent !important;\n  color: #111 !important;\n}\n\n\/* Hide extra Judge.me controls *\/\n.tsr-judgeme-widget .jdgm-row-actions,\n.tsr-judgeme-widget .jdgm-subtab,\n.tsr-judgeme-widget .jdgm-rev-widg__sort-wrapper,\n.tsr-judgeme-widget .jdgm-powered-by {\n  display: none !important;\n}\n\n\/* Review list *\/\n.tsr-judgeme-widget .jdgm-rev-widg__body {\n  border-top: 1px solid rgba(0,0,0,0.12) !important;\n  margin-top: 0 !important;\n}\n\n\/* Review row *\/\n.tsr-judgeme-widget .jdgm-rev {\n  display: grid !important;\n  grid-template-columns: 230px 120px 1fr !important;\n  gap: 3rem !important;\n\n  border: 0 !important;\n  border-bottom: 1px solid rgba(0,0,0,0.12) !important;\n\n  padding: 4rem 0 !important;\n  margin: 0 !important;\n}\n\n\/* Review header\/author column *\/\n.tsr-judgeme-widget .jdgm-rev .jdgm-rev__header {\n  grid-column: 1 !important;\n  display: block !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n}\n\n\/* Date *\/\n.tsr-judgeme-widget .jdgm-rev__timestamp {\n  grid-column: 2 !important;\n  grid-row: 1 !important;\n  font-size: 1.3rem !important;\n  opacity: 0.45 !important;\n  white-space: nowrap !important;\n}\n\n\/* Content *\/\n.tsr-judgeme-widget .jdgm-rev__content {\n  grid-column: 3 !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev__title {\n  font-size: 1.7rem !important;\n  font-weight: 600 !important;\n  margin: 0 0 1rem !important;\n}\n\n.tsr-judgeme-widget .jdgm-rev__body {\n  font-size: 1.5rem !important;\n  line-height: 1.6 !important;\n  opacity: 0.9 !important;\n}\n\n\/* Author *\/\n.tsr-judgeme-widget .jdgm-rev__author {\n  display: block !important;\n  font-size: 1.4rem !important;\n  font-weight: 600 !important;\n  margin-top: 1rem !important;\n}\n\n\/* Verified badge *\/\n.tsr-judgeme-widget .jdgm-rev__buyer-badge {\n  background: transparent !important;\n  border: 0 !important;\n  padding: 0 !important;\n  color: #111 !important;\n  font-size: 1.2rem !important;\n  opacity: 0.75 !important;\n}\n\n\/* Mobile\/tablet *\/\n@media screen and (max-width: 900px) {\n  .tsr-judgeme-widget {\n    padding: 4rem 2rem 0;\n  }\n\n  .tsr-judgeme-widget .jdgm-rev-widg__header {\n    display: block !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-rev-widg__title {\n    font-size: 4rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-rev-widg__summary,\n  .tsr-judgeme-widget .jdgm-histogram {\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-histogram {\n    margin-top: 2.5rem !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-widget-actions-wrapper {\n    margin-left: 0 !important;\n    margin-top: 2.5rem !important;\n    padding-left: 0 !important;\n    border-left: 0 !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-write-rev-link {\n    width: 100% !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-rev {\n    display: block !important;\n  }\n\n  .tsr-judgeme-widget .jdgm-rev__timestamp {\n    display: block !important;\n    margin: 1rem 0 2rem !important;\n  }\n}\n.tsr-judgeme-widget .jdgm-histogram__star {\n  display: none !important;\n}\n\n{% endstyle %}","section_width":"max-w-page","color_scheme":"scheme-4","spacing_top":"4","spacing_bottom":"4"}}},"order":["main","product_styled_more_ways_cdVj94","977cac03-4044-4567-8907-fa55103a47eb","recommendations","175934514655014569","multitile_KDV8BX","166904322806a89075","custom_liquid_YpNr9W","custom_liquid_VRTqnA"]}