{"title":"Dresses","description":"\u003cp\u003eDresses from Clyro. One silhouette at a time, each in a couple of colours, nothing that needs a special occasion.\u003c\/p\u003e","products":[{"product_id":"half-zip-denim-dress","title":"The Half-Zip Denim Dress","description":"\u003cp\u003eA denim dress cut like a borrowed shirt. Polo collar, silver half zip, one chest pocket, sleeves wide enough to push up. It sits oversized on purpose, so the body is roomy and the hem lands mid-thigh.\u003c\/p\u003e\n\n\u003cp\u003eTwo washes: Washed Blue, faded through the shoulders, and Dark Denim, a deep even indigo. Both are 100% cotton, no stretch, and soften from the first wash. Take your usual size for the look in the photos, one down for a closer fit.\u003c\/p\u003e\n\n\u003cstyle\u003e\n#cl-sets{margin:6px 0 18px}\n#cl-sets .clb-head{display:flex;align-items:center;gap:12px;margin:0 0 14px}\n#cl-sets .clb-line{flex:1;height:1px;background:currentColor;opacity:.3}\n#cl-sets .clb-title{font-size:1.2rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700}\n#cl-sets .clb-card{position:relative;border:2px solid rgba(23,23,27,.2);border-radius:10px;padding:1.5rem 1.6rem;margin:0 0 1.1rem;display:flex;align-items:center;gap:1.2rem;cursor:pointer;background:#fff}\n#cl-sets .clb-card.sel{border-color:#b3182a}\n#cl-sets .clb-radio{width:2rem;height:2rem;border:2px solid rgba(23,23,27,.35);border-radius:50%;flex:none;position:relative}\n#cl-sets .clb-card.sel .clb-radio{border-color:#b3182a}\n#cl-sets .clb-card.sel .clb-radio:after{content:\"\";position:absolute;inset:4px;background:#b3182a;border-radius:50%}\n#cl-sets .clb-main{flex:1;min-width:0}\n#cl-sets .clb-t{font-weight:700;font-size:1.5rem;line-height:1.25;display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;color:#17171b}\n#cl-sets .clb-pill{background:#b3182a;color:#fff;font-size:1.02rem;font-weight:700;letter-spacing:.08em;padding:.25rem .7rem;border-radius:4px;white-space:nowrap}\n#cl-sets .clb-c{font-size:1.25rem;opacity:.65;margin-top:.35rem;color:#17171b}\n#cl-sets .clb-price{text-align:right;flex:none}\n#cl-sets .clb-p{font-size:1.6rem;font-weight:700;color:#17171b}\n#cl-sets .clb-was{font-size:1.2rem;opacity:.5;text-decoration:line-through;color:#17171b}\n#cl-sets .clb-badge{position:absolute;top:-1.05rem;right:1.2rem;background:#b3182a;color:#fff;font-size:1.02rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:.35rem .9rem}\n#cl-sets .clb-extra{border:1px solid rgba(23,23,27,.18);border-radius:10px;padding:1.2rem 1.4rem;margin:0 0 1.1rem;background:#fff}\n#cl-sets .clb-extra h4{margin:0 0 .8rem;font-size:1.1rem;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:#17171b}\n#cl-sets .clb-lab{font-size:1.05rem;letter-spacing:.1em;text-transform:uppercase;opacity:.6;margin:.6rem 0 .4rem;color:#17171b}\n#cl-sets .clb-opts{display:flex;flex-wrap:wrap;gap:.5rem}\n#cl-sets .clb-opt{display:inline-block;user-select:none;border:1px solid rgba(23,23,27,.35);border-radius:4px;padding:.55rem .9rem;font-size:1.25rem;cursor:pointer;background:#fff;color:#17171b;font-family:inherit;line-height:1}\n#cl-sets .clb-opt.on{background:#b3182a !important;color:#fff !important;border-color:#b3182a !important}\n#cl-sets .clb-note{font-size:1.15rem;opacity:.65;margin:.2rem 0 1rem;color:#17171b}\n\u003c\/style\u003e\n\n\u003cscript id=\"cl-sets-js\"\u003e\n(function () {\n  var HANDLE = 'half-zip-denim-dress';\n  function boot() {\n    if (document.getElementById('cl-sets')) return;\n    var addBtn = document.querySelector('.product__info-container button[name=\"add\"], .product__info-container .product-form__submit');\n    var form = addBtn ? addBtn.closest('form') : null;\n    if (!form || !form.querySelector('input[name=\"id\"], [name=\"id\"]')) { setTimeout(boot, 300); return; }\n    fetch('\/products\/' + HANDLE + '.js', { credentials: 'same-origin' })\n      .then(function (r) { return r.json(); })\n      .then(function (p) { build(p, form); })\n      .catch(function () {});\n  }\n  function build(p, form) {\n    if (document.getElementById('cl-sets')) return;\n    var cur = (window.Shopify \u0026\u0026 Shopify.currency \u0026\u0026 Shopify.currency.active) || 'USD';\n    function money(cents) {\n      try { return new Intl.NumberFormat(undefined, { style: 'currency', currency: cur }).format(cents \/ 100); }\n      catch (e) { return (cents \/ 100).toFixed(2) + ' ' + cur; }\n    }\n    var colours = [], sizes = [], colImg = {};\n    p.variants.forEach(function (v) {\n      if (colours.indexOf(v.option1) \u003c 0) colours.push(v.option1);\n      if (sizes.indexOf(v.option2) \u003c 0) sizes.push(v.option2);\n      if (!colImg[v.option1] \u0026\u0026 v.featured_image \u0026\u0026 v.featured_image.src) colImg[v.option1] = v.featured_image.src.replace(\/(\\.[a-z]+)(\\?|$)\/i, '_300x$1$2');\n    });\n    window.__clColImg = colImg;\n    function tiersFor(unit) {\n      return [\n        { qty: 1, title: 'One dress', total: unit, was: 0 },\n        { qty: 2, title: 'Two dresses — second one 40% off', total: unit * 2 - Math.floor(unit * 0.4), was: unit * 2 },\n        { qty: 3, title: 'Three dresses — one of them free', total: unit * 2, was: unit * 3 }\n      ];\n    }\n    var chosen = 1;\n    var tiers = tiersFor(p.variants[0].price);\n    var extra = [null, null];\n    function selected() {\n      var out = {};\n      var radios = document.querySelectorAll('.product__info-container input[type=\"radio\"]:checked, variant-selects input[type=\"radio\"]:checked, variant-radios input[type=\"radio\"]:checked');\n      Array.prototype.forEach.call(radios, function (r) { if (!r.closest('#cl-sets')) out[r.name] = r.value; });\n      var sels = document.querySelectorAll('variant-selects select, variant-picker select, .product__info-container select');\n      Array.prototype.forEach.call(sels, function (s) { out[s.name || s.id] = s.value; });\n      return out;\n    }\n    function mainVariant() {\n      var chosenVals = [];\n      var sel = selected();\n      Object.keys(sel).forEach(function (k) { chosenVals.push(sel[k]); });\n      var best = null, bestScore = -1;\n      p.variants.forEach(function (v) {\n        var score = 0;\n        [v.option1, v.option2].forEach(function (o) { if (o \u0026\u0026 chosenVals.indexOf(o) \u003e -1) score++; });\n        if (score \u003e bestScore) { bestScore = score; best = v; }\n      });\n      var idInput = form.querySelector('input[name=\"id\"], [name=\"id\"]');\n      if (idInput \u0026\u0026 bestScore \u003c 2) {\n        var byId = p.variants.filter(function (v) { return String(v.id) === String(idInput.value); })[0];\n        if (byId) best = byId;\n      }\n      return best || p.variants[0];\n    }\n    function variantFor(col, size) {\n      return p.variants.filter(function (v) { return v.option1 === col \u0026\u0026 v.option2 === size; })[0] || null;\n    }\n    function ensureExtra() {\n      var m = mainVariant();\n      for (var i = 0; i \u003c 2; i++) { if (!extra[i]) extra[i] = { col: m.option1, size: m.option2 }; }\n    }\n    function setQty(n) {\n      var forms = document.querySelectorAll('form[action*=\"\/cart\/add\"]');\n      Array.prototype.forEach.call(forms, function (f) {\n        var inputs = f.querySelectorAll('input[name=\"quantity\"], [name=\"quantity\"]');\n        if (!inputs.length) {\n          var qi = document.createElement('input');\n          qi.type = 'hidden'; qi.name = 'quantity'; f.appendChild(qi); inputs = [qi];\n        }\n        Array.prototype.forEach.call(inputs, function (i) {\n          i.value = String(n);\n          try { i.dispatchEvent(new Event('change', { bubbles: true })); } catch (e) {}\n        });\n      });\n    }\n    var box = document.createElement('div');\n    box.id = 'cl-sets';\n    function optRow(label, list, idx, key) {\n      var h = '\u003cdiv class=\"clb-lab\"\u003e' + label + '\u003c\/div\u003e\u003cdiv class=\"clb-opts\"\u003e';\n      list.forEach(function (val) {\n        var on = extra[idx][key] === val;\n        var im = (key === 'col' \u0026\u0026 colImg[val]) ? '\u003cimg src=\"' + colImg[val] + '\" alt=\"\"\u003e' : '';\n        h += '\u003cspan role=\"button\" tabindex=\"0\" class=\"clb-opt' + (im ? ' clb-img' : '') + (on ? ' on' : '') + '\" data-idx=\"' + idx + '\" data-key=\"' + key + '\" data-val=\"' + val + '\"\u003e' + im + '\u003ci\u003e' + val + '\u003c\/i\u003e\u003c\/span\u003e';\n      });\n      return h + '\u003c\/div\u003e';\n    }\n    function render() {\n      ensureExtra();\n      var html = '';\n      if (chosen \u003e 1) {\n        html += '\u003cdiv class=\"clb-note\"\u003eDress 1 is the colour and size chosen above. Pick the others here — mix them however you like.\u003c\/div\u003e';\n        for (var r0 = 0; r0 \u003c chosen - 1; r0++) {\n          html += '\u003cdiv class=\"clb-extra\"\u003e\u003ch4\u003eDress ' + (r0 + 2) + '\u003c\/h4\u003e' + optRow('Colour', colours, r0, 'col') + optRow('Size', sizes, r0, 'size') + '\u003c\/div\u003e';\n        }\n      }\n      html += '\u003cdiv class=\"clb-head\"\u003e\u003cspan class=\"clb-line\"\u003e\u003c\/span\u003e\u003cspan class=\"clb-title\"\u003eHow many\u003c\/span\u003e\u003cspan class=\"clb-line\"\u003e\u003c\/span\u003e\u003c\/div\u003e';\n      tiers.forEach(function (t, i) {\n        var save = t.was ? t.was - t.total : 0;\n        var pill = save ? '\u003cspan class=\"clb-pill\"\u003eSAVE ' + money(save) + '\u003c\/span\u003e' : '';\n        var was = save ? '\u003cdiv class=\"clb-was\"\u003e' + money(t.was) + '\u003c\/div\u003e' : '';\n        var badge = i === 1 ? '\u003cspan class=\"clb-badge\"\u003eMost popular\u003c\/span\u003e' : '';\n        var sub = i === 0 ? 'Ships free' : 'Any colour, any size · Ships free · Taken off in the cart';\n        html += '\u003cdiv class=\"clb-card' + (t.qty === chosen ? ' sel' : '') + '\" data-qty=\"' + t.qty + '\"\u003e' + badge +\n          '\u003cspan class=\"clb-radio\"\u003e\u003c\/span\u003e' +\n          '\u003cspan class=\"clb-main\"\u003e\u003cspan class=\"clb-t\"\u003e' + t.title + ' ' + pill + '\u003c\/span\u003e\u003cdiv class=\"clb-c\"\u003e' + sub + '\u003c\/div\u003e\u003c\/span\u003e' +\n          '\u003cspan class=\"clb-price\"\u003e\u003cdiv class=\"clb-p\"\u003e' + money(t.total) + '\u003c\/div\u003e' + was + '\u003c\/span\u003e' +\n          '\u003c\/div\u003e';\n      });\n      box.innerHTML = html;\n    }\n    render();\n    var host = form.closest('product-form') || form;\n    var info = document.querySelector('.product__info-container');\n    if (info) { while (host.parentNode \u0026\u0026 host.parentNode !== info) host = host.parentNode; }\n    host.parentNode.insertBefore(box, host);\n    function apply() {\n      var v = mainVariant();\n      tiers = tiersFor(v.price);\n      render();\n      setQty(1);\n      var t = tiers.filter(function (x) { return x.qty === chosen; })[0] || tiers[0];\n      var was = chosen === 1 ? (v.compare_at_price \u0026\u0026 v.compare_at_price \u003e v.price ? v.compare_at_price : 0) : v.price * chosen;\n      document.querySelectorAll('.product__info-container .price-item--sale, .product__info-container .price__regular .price-item--regular').forEach(function (el) { el.textContent = money(t.total); });\n      document.querySelectorAll('.product__info-container s.price-item--regular').forEach(function (el) { el.textContent = was ? money(was) : ''; el.style.display = was ? '' : 'none'; });\n    }\n    function items() {\n      var v = mainVariant();\n      var list = [{ id: v.id, quantity: 1 }];\n      for (var r = 0; r \u003c chosen - 1; r++) {\n        var ev = variantFor(extra[r].col, extra[r].size) || v;\n        var hit = list.filter(function (x) { return x.id === ev.id; })[0];\n        if (hit) hit.quantity++; else list.push({ id: ev.id, quantity: 1 });\n      }\n      return list;\n    }\n    var busy = false;\n    function coreAdd(id, qty) {\n      var f = document.createElement('form');\n      f.method = 'post'; f.action = '\/cart\/add'; f.className = 'cl-core-add'; f.style.display = 'none';\n      f.innerHTML = '\u003cinput name=\"id\" value=\"' + id + '\"\u003e\u003cinput name=\"quantity\" value=\"' + qty + '\"\u003e';\n      document.body.appendChild(f);\n      if (f.requestSubmit) { f.requestSubmit(); } else { f.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true })); }\n      setTimeout(function () { if (f.parentNode) f.parentNode.removeChild(f); }, 5000);\n    }\n    function addBundle() {\n      if (busy) return;\n      busy = true;\n      var btns = document.querySelectorAll('form[action*=\"\/cart\/add\"] button, sticky-atc button');\n      Array.prototype.forEach.call(btns, function (b) { b.disabled = true; });\n      var list = items();\n      var first = list.shift();\n      var done = function () { coreAdd(first.id, first.quantity); setTimeout(function () { busy = false; Array.prototype.forEach.call(btns, function (b) { b.disabled = false; }); }, 1500); };\n      if (!list.length) { done(); return; }\n      fetch('\/cart\/add.js', { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' }, body: JSON.stringify({ items: list }) })\n        .then(function (r) { return r.json(); })\n        .then(done)\n        .catch(function () { busy = false; Array.prototype.forEach.call(btns, function (b) { b.disabled = false; }); });\n    }\n    function isAdd(el) {\n      if (!el) return false;\n      if (el.closest \u0026\u0026 el.closest('sticky-atc')) return !!el.closest('button');\n      var f = el.closest \u0026\u0026 el.closest('form[action*=\"\/cart\/add\"]');\n      if (!f || f.classList.contains('cl-core-add')) return false;\n      return el.matches('button, [type=\"submit\"], .product-form__submit') || !!el.closest('button, [type=\"submit\"]');\n    }\n    document.addEventListener('click', function (e) {\n      var t = e.target;\n      var card = t \u0026\u0026 t.closest ? t.closest('#cl-sets .clb-card') : null;\n      if (card) { chosen = parseInt(card.getAttribute('data-qty'), 10) || 1; apply(); return; }\n      var opt = t \u0026\u0026 t.closest ? t.closest('#cl-sets .clb-opt') : null;\n      if (opt) {\n        var r = parseInt(opt.getAttribute('data-idx'), 10);\n        extra[r][opt.getAttribute('data-key')] = opt.getAttribute('data-val');\n        render();\n        return;\n      }\n      var btn = t \u0026\u0026 t.closest ? t.closest('button, [type=\"submit\"]') : null;\n      if (isAdd(btn)) { e.preventDefault(); e.stopImmediatePropagation(); addBundle(); }\n    }, true);\n    document.addEventListener('submit', function (e) {\n      if (e.target \u0026\u0026 e.target.matches \u0026\u0026 e.target.matches('form[action*=\"\/cart\/add\"]') \u0026\u0026 !e.target.classList.contains('cl-core-add')) { e.preventDefault(); e.stopImmediatePropagation(); addBundle(); }\n    }, true);\n    document.addEventListener('change', function (e) {\n      if (e.target \u0026\u0026 !e.target.closest('#cl-sets') \u0026\u0026 (e.target.type === 'radio' || e.target.tagName === 'SELECT')) setTimeout(apply, 60);\n    }, true);\n    setInterval(function () { setQty(1); }, 1200);\n    apply();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', boot); } else { boot(); }\n})();\n\u003c\/script\u003e\n\n\u003cstyle\u003e#clyro-xsell-card{display:none!important}\u003c\/style\u003e\n\n\u003cstyle\u003e\n#cl-gw{margin:22px 0 8px}\n#cl-gw .gw-k{font-size:1.05rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:#17171b;margin:0 0 .6rem}\n#cl-gw .gw-s{font-size:1.3rem;color:rgba(23,23,27,.65);margin:0 0 1.2rem}\n#cl-gw .gw-c{display:flex;gap:1.4rem;align-items:center;border:1px solid rgba(23,23,27,.18);border-radius:10px;padding:1.2rem 1.4rem;margin:0 0 1rem;background:#fff;text-decoration:none;color:#17171b}\n#cl-gw .gw-c img{width:76px;height:76px;object-fit:cover;border-radius:6px;flex:none;background:#f3f1ec}\n#cl-gw .gw-b{flex:1;min-width:0}\n#cl-gw .gw-t{font-weight:700;font-size:1.45rem;line-height:1.25;margin:0 0 .25rem;color:#17171b}\n#cl-gw .gw-d{font-size:1.2rem;color:rgba(23,23,27,.62);margin:0 0 .6rem;line-height:1.5}\n#cl-gw .gw-r{display:flex;align-items:center;justify-content:space-between;gap:1rem}\n#cl-gw .gw-p{font-size:1.4rem;font-weight:700;color:#17171b}\n#cl-gw .gw-a{font-size:1.05rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#fff;background:#b3182a;border:0;border-radius:4px;padding:.65rem 1rem;cursor:pointer;font-family:inherit;text-decoration:none;white-space:nowrap}\n#cl-gw .gw-a.lk{background:#fff;color:#b3182a;border:1px solid #b3182a}\n\u003c\/style\u003e\n\u003cscript id=\"cl-gw-js\"\u003e\n(function(){\n  var ITEMS=[\n    {h:'steel-spinner-ring',t:'Spinner Ring',d:'Silver, gold or rose gold. The thing your hands do while the dress does the rest.',link:true},\n    {h:'bow-necklace',t:'The Bow Necklace',d:'Sits right in the open collar. Silver tone, one size.',link:false}\n  ];\n  function money(c){var cur=(window.Shopify\u0026\u0026Shopify.currency\u0026\u0026Shopify.currency.active)||'USD';try{return new Intl.NumberFormat(undefined,{style:'currency',currency:cur}).format(c\/100)}catch(e){return (c\/100).toFixed(2)+' '+cur}}\n  function coreAdd(id){var f=document.createElement('form');f.method='post';f.action='\/cart\/add';f.className='cl-core-add';f.style.display='none';f.innerHTML='\u003cinput name=\"id\" value=\"'+id+'\"\u003e\u003cinput name=\"quantity\" value=\"1\"\u003e';document.body.appendChild(f);if(f.requestSubmit)f.requestSubmit();else f.dispatchEvent(new Event('submit',{bubbles:true,cancelable:true}));setTimeout(function(){if(f.parentNode)f.parentNode.removeChild(f)},5000)}\n  function place(box){var d=document.querySelector('.product__info-container .product__description');if(!d){setTimeout(function(){place(box)},400);return}d.parentNode.insertBefore(box,d.nextSibling)}\n  function boot(){\n    if(document.getElementById('cl-gw'))return;\n    Promise.all(ITEMS.map(function(it){return fetch('\/products\/'+it.h+'.js',{credentials:'same-origin'}).then(function(r){return r.ok?r.json():null}).catch(function(){return null})})).then(function(ps){\n      var box=document.createElement('div');box.id='cl-gw';\n      var html='\u003cdiv class=\"gw-k\"\u003eGoes with it\u003c\/div\u003e\u003cdiv class=\"gw-s\"\u003eThe two pieces that get worn with this dress. Both ship free alongside it.\u003c\/div\u003e';\n      ps.forEach(function(p,i){\n        if(!p||!p.available)return;var it=ITEMS[i];var v=p.variants[0];var img=p.featured_image||'';\n        var action=it.link?'\u003ca class=\"gw-a lk\" href=\"\/products\/'+it.h+'\"\u003eChoose finish \u0026amp; size\u003c\/a\u003e':'\u003cbutton type=\"button\" class=\"gw-a\" data-add=\"'+v.id+'\"\u003eAdd to bag\u003c\/button\u003e';\n        html+='\u003cdiv class=\"gw-c\"\u003e\u003ca href=\"\/products\/'+it.h+'\"\u003e\u003cimg src=\"'+img+'\" alt=\"'+it.t+'\" loading=\"lazy\"\u003e\u003c\/a\u003e\u003cdiv class=\"gw-b\"\u003e\u003cdiv class=\"gw-t\"\u003e'+it.t+'\u003c\/div\u003e\u003cdiv class=\"gw-d\"\u003e'+it.d+'\u003c\/div\u003e\u003cdiv class=\"gw-r\"\u003e\u003cspan class=\"gw-p\"\u003e'+money(p.price)+'\u003c\/span\u003e'+action+'\u003c\/div\u003e\u003c\/div\u003e\u003c\/div\u003e';\n      });\n      box.innerHTML=html;place(box);\n    });\n  }\n  document.addEventListener('click',function(e){var b=e.target.closest\u0026\u0026e.target.closest('#cl-gw [data-add]');if(b){e.preventDefault();e.stopImmediatePropagation();coreAdd(b.getAttribute('data-add'))}},true);\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',boot);else boot();\n})();\n\u003c\/script\u003e\n\n\u003cscript id=\"cl-size-fix\"\u003e(function(){function f(){var c=document.querySelectorAll('[id^=\"cgs-\"] table td');for(var i=0;i\u003cc.length;i++){if(c[i].textContent.indexOf('S \/ M \/ L \/ XL')===0\u0026\u0026c[i].textContent.indexOf('XXL')\u003c0){c[i].textContent='S \/ M \/ L \/ XL \/ XXL — US 2–4 \/ 6–8 \/ 10–12 \/ 14–16 \/ 18–20';}}}f();var n=0;var iv=setInterval(function(){f();if(++n\u003e20)clearInterval(iv)},500)})();\u003c\/script\u003e\n\n\u003cstyle\u003e\n#cl-sets .clb-opt.clb-img{padding:0;border-radius:8px;overflow:hidden;width:72px;text-align:center}\n#cl-sets .clb-opt.clb-img img{display:block;width:72px;height:92px;object-fit:cover;object-position:top}\n#cl-sets .clb-opt.clb-img i{display:block;font-style:normal;font-size:1.05rem;padding:.4rem .2rem;line-height:1.1}\n#cl-sets .clb-opt.clb-img.on{background:#fff !important;color:#17171b !important;border:2px solid #b3182a !important}\n#cl-sets .clb-opt.clb-img.on i{background:#b3182a;color:#fff}\n.product__info-container label.cl-sw{display:inline-flex !important;flex-direction:column;align-items:center;padding:0 !important;width:96px;border:2px solid rgba(23,23,27,.2) !important;border-radius:8px;overflow:hidden;background:#fff !important;color:#17171b !important;min-height:0 !important;line-height:1.1}\n.product__info-container label.cl-sw img{display:block;width:96px;height:124px;object-fit:cover;object-position:top}\n.product__info-container label.cl-sw .cl-swt{display:block;font-size:1.15rem;padding:.5rem .3rem;width:100%;text-align:center}\n.product__info-container input:checked + label.cl-sw{border-color:#b3182a !important;background:#fff !important;color:#17171b !important}\n.product__info-container input:checked + label.cl-sw .cl-swt{background:#b3182a;color:#fff}\n\u003c\/style\u003e\n\u003cscript id=\"cl-swatch-js\"\u003e(function(){\n  function run(){\n    var m=window.__clColImg; if(!m){setTimeout(run,300);return;}\n    var done=0;\n    var inputs=document.querySelectorAll('.product__info-container input[type=\"radio\"]');\n    for(var i=0;i\u003cinputs.length;i++){var inp=inputs[i];if(inp.closest('#cl-sets'))continue;var src=m[inp.value];if(!src)continue;\n      var lab=document.querySelector('label[for=\"'+inp.id+'\"]')||inp.nextElementSibling; if(!lab||lab.classList.contains('cl-sw'))continue;\n      lab.classList.add('cl-sw'); lab.dataset.clWhite='1';\n      lab.innerHTML='\u003cimg src=\"'+src+'\" alt=\"'+inp.value+'\"\u003e\u003cspan class=\"cl-swt\"\u003e'+inp.value+'\u003c\/span\u003e'; done++;\n    }\n    if(!done) setTimeout(run,500);\n  }\n  run();\n  setInterval(run,800);\n})();\u003c\/script\u003e\n\n\u003cstyle\u003e\n#cl-see{background:#fff;padding:36px 26px 40px}\n#cl-see .w{max-width:1080px;margin:0 auto}\n#cl-see .g{display:grid;grid-template-columns:repeat(2,minmax(0,340px));gap:22px;justify-content:center}\n#cl-see .v{position:relative;aspect-ratio:9\/16;background:#f3f1ec;border-radius:12px;overflow:hidden;cursor:pointer}\n#cl-see video{width:100%;height:100%;object-fit:cover;display:block}\n#cl-see .c{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;background:linear-gradient(transparent,rgba(0,0,0,.55));color:#fff;font-size:13px;letter-spacing:1.6px;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}\n#cl-see .c i{font-style:normal;opacity:.8;font-size:11px;letter-spacing:1.2px}\n@media(max-width:700px){#cl-see{padding:24px 16px 28px}#cl-see .g{grid-template-columns:1fr 1fr;gap:12px}}\n\u003c\/style\u003e\n\u003cscript id=\"cl-see-js\"\u003e(function(){\n  var V=[\n    {src:'https:\/\/cdn.shopify.com\/videos\/c\/vp\/f25b1e54cdbe4484a07dbbe937c66cf5\/f25b1e54cdbe4484a07dbbe937c66cf5.HD-720p-1.6Mbps-97360512.mp4',poster:'https:\/\/cdn.shopify.com\/s\/files\/1\/1079\/2524\/2188\/files\/preview_images\/f25b1e54cdbe4484a07dbbe937c66cf5.thumbnail.0000000000.jpg?v=1791921559',cap:'Dark Denim'},\n    {src:'https:\/\/cdn.shopify.com\/videos\/c\/vp\/1504a9b1523f4422808b2239602c6076\/1504a9b1523f4422808b2239602c6076.HD-720p-1.6Mbps-97360514.mp4',poster:'https:\/\/cdn.shopify.com\/s\/files\/1\/1079\/2524\/2188\/files\/preview_images\/1504a9b1523f4422808b2239602c6076.thumbnail.0000000000.jpg?v=1791921578',cap:'Washed Blue'}\n  ];\n  function build(){\n    if(document.getElementById('cl-see'))return true;\n    var story=document.querySelector('[id^=\"cgs-\"]');var host=story\u0026\u0026story.closest('.shopify-section');if(!host)return false;\n    var sec=document.createElement('div');sec.id='cl-see';\n    var h='\u003cdiv class=\"w\"\u003e\u003cdiv class=\"g\"\u003e';\n    V.forEach(function(v){h+='\u003cdiv class=\"v\"\u003e\u003cvideo playsinline muted loop preload=\"metadata\" poster=\"'+v.poster+'\" src=\"'+v.src+'\"\u003e\u003c\/video\u003e\u003cdiv class=\"c\"\u003e\u003cspan\u003e'+v.cap+'\u003c\/span\u003e\u003ci\u003etap for sound\u003c\/i\u003e\u003c\/div\u003e\u003c\/div\u003e';});\n    sec.innerHTML=h+'\u003c\/div\u003e\u003c\/div\u003e';\n    host.parentNode.insertBefore(sec,host);\n    var vids=sec.querySelectorAll('video');\n    if('IntersectionObserver' in window){var io=new IntersectionObserver(function(es){es.forEach(function(e){var v=e.target;if(e.isIntersecting){v.play().catch(function(){});}else{v.pause();}});},{threshold:.35});Array.prototype.forEach.call(vids,function(v){io.observe(v);});}\n    else{Array.prototype.forEach.call(vids,function(v){v.play().catch(function(){});});}\n    sec.addEventListener('click',function(e){var box=e.target.closest('.v');if(!box)return;var v=box.querySelector('video');var on=v.muted;Array.prototype.forEach.call(vids,function(o){o.muted=true;o.closest('.v').querySelector('i').textContent='tap for sound';});if(on){v.muted=false;box.querySelector('i').textContent='tap to mute';v.play().catch(function(){});}});\n    return true;\n  }\n  if(!build()){var n=0;var iv=setInterval(function(){if(build()||++n\u003e40)clearInterval(iv);},500);}\n})();\u003c\/script\u003e\n\n\u003cstyle\u003e[id^=\"cgs-\"] .sec:has(.quad),[id^=\"cgs-\"] .sec:has(.occ){display:none!important}\u003c\/style\u003e\n\u003cscript id=\"cl-trim\"\u003e(function(){function f(){var r=document.querySelectorAll('[id^=\"cgs-\"] .sec');for(var i=0;i\u003cr.length;i++){if(r[i].querySelector('.quad,.occ'))r[i].style.display='none';}}f();var n=0;var iv=setInterval(function(){f();if(++n\u003e20)clearInterval(iv)},500)})();\u003c\/script\u003e\n","brand":"clyro","offers":[{"title":"Washed Blue \/ S","offer_id":59187081675084,"sku":"CL-DD-WB-S","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Washed Blue \/ M","offer_id":59187081707852,"sku":"CL-DD-WB-M","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Washed Blue \/ L","offer_id":59187081740620,"sku":"CL-DD-WB-L","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Washed Blue \/ XL","offer_id":59187081773388,"sku":"CL-DD-WB-XL","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Dark Denim \/ S","offer_id":59187081806156,"sku":"CL-DD-DK-S","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Dark Denim \/ M","offer_id":59187081838924,"sku":"CL-DD-DK-M","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Dark Denim \/ L","offer_id":59187081871692,"sku":"CL-DD-DK-L","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Dark Denim \/ XL","offer_id":59187081904460,"sku":"CL-DD-DK-XL","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Washed Blue \/ XXL","offer_id":59189968765260,"sku":"CL-DD-WB-XXL","price":54.99,"currency_code":"USD","in_stock":true},{"title":"Dark Denim \/ XXL","offer_id":59189968798028,"sku":"CL-DD-DK-XXL","price":54.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1079\/2524\/2188\/files\/half-zip-denim-dress-washed-blue.jpg?v=1791903541"}],"url":"https:\/\/clyro22.com\/collections\/dresses.oembed","provider":"clyro","version":"1.0","type":"link"}