{"product_id":"mc-dtc-102","title":"MCROONS Square Cat-Eye Glasses | Tortoiseshell Acetate","description":"\u003ch2\u003eSquare cat-eye glasses with a polished acetate look\u003c\/h2\u003e\u003cp\u003eThese MCROONS square cat-eye glasses combine a lifted cat-eye shape with a stronger square profile, giving the frame a confident fashion-forward look.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eBold square cat-eye silhouette\u003c\/li\u003e\n\u003cli\u003eAcetate-style colours including tortoiseshell, marble, pearl white, and blue tortoiseshell\u003c\/li\u003e\n\u003cli\u003eAvailable as frame only, non-prescription, and prescription-ready options\u003c\/li\u003e\n\u003cli\u003eSuitable for daily wear, office styling, and statement outfits\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch3\u003eLens options made simple\u003c\/h3\u003e\u003cp\u003eChoose frame only if you will add lenses elsewhere, non-prescription for fashion use, or prescription for vision-corrected lenses through MCROONS.\u003c\/p\u003e\u003ch3\u003eBuyer tip\u003c\/h3\u003e\u003cp\u003eIf you like a defined frame but want more lift than a standard square shape, this is one of the strongest MCROONS cat-eye choices.\u003c\/p\u003e\u003cp\u003eSecure checkout is available. Delivery options, taxes, and returns are shown clearly at checkout and in store policies.\u003c\/p\u003e\u003cscript id=\"mcroons-lens-variant-sync-v2\"\u003e\n(function(){\n  if (window.__mcroonsLensVariantSyncV2) return;\n  window.__mcroonsLensVariantSyncV2 = true;\n  var selectedOptions = {};\n\n  function money(cents){ return '£' + (Number(cents || 0) \/ 100).toFixed(2); }\n  function norm(text){ return String(text || '').replace(\/[:\\s]+$\/g, '').trim(); }\n  function variantDataNode(){ return document.querySelector('variant-radios script[type=\"application\/json\"], variant-selects script[type=\"application\/json\"]'); }\n  function variants(){\n    var node = variantDataNode();\n    if (!node) return [];\n    try { return JSON.parse(node.textContent || '[]'); } catch(e) { return []; }\n  }\n  function optionNames(){\n    var picker = document.querySelector('variant-radios, variant-selects');\n    if (!picker) return [];\n    var names = [];\n    picker.querySelectorAll('fieldset, .product-form__input--dropdown').forEach(function(group){\n      var label = group.querySelector('legend, .form__label');\n      var name = norm(label \u0026\u0026 label.textContent);\n      if (name \u0026\u0026 names.indexOf(name) === -1) names.push(name);\n    });\n    return names;\n  }\n  function currentVariant(){\n    var idInput = document.querySelector('form[action*=\"\/cart\/add\"] input.product-variant-id[name=\"id\"], form[action*=\"\/cart\/add\"] input[name=\"id\"]');\n    var id = idInput \u0026\u0026 idInput.value;\n    return variants().find(function(v){ return String(v.id) === String(id); });\n  }\n  function seedSelection(){\n    var names = optionNames();\n    var current = currentVariant() || variants()[0];\n    if (current \u0026\u0026 current.options) {\n      names.forEach(function(name, index){ selectedOptions[name] = current.options[index]; });\n    }\n  }\n  function optionNameForInput(input){\n    var group = input \u0026\u0026 input.closest('fieldset, .product-form__input--dropdown');\n    var label = group \u0026\u0026 group.querySelector('legend, .form__label');\n    return norm(label \u0026\u0026 label.textContent) || input.name;\n  }\n  function inputForEvent(event){\n    var label = event.target \u0026\u0026 event.target.closest \u0026\u0026 event.target.closest('label');\n    if (label) {\n      var input = label.previousElementSibling \u0026\u0026 label.previousElementSibling.matches \u0026\u0026 label.previousElementSibling.matches('input[type=\"radio\"]') ? label.previousElementSibling : null;\n      if (!input) input = label.closest('fieldset') \u0026\u0026 label.closest('fieldset').querySelector('input[id=\"' + label.getAttribute('for') + '\"]');\n      if (input) return input;\n    }\n    if (event.target \u0026\u0026 event.target.matches \u0026\u0026 event.target.matches('input[type=\"radio\"], select')) return event.target;\n    return null;\n  }\n  function matchingVariant(){\n    var names = optionNames();\n    return variants().find(function(variant){\n      return names.every(function(name, index){ return !selectedOptions[name] || variant.options[index] === selectedOptions[name]; });\n    });\n  }\n  function setActiveInput(input){\n    if (!input || input.type !== 'radio') return;\n    var group = input.closest('fieldset');\n    if (!group) return;\n    group.querySelectorAll('input[type=\"radio\"]').forEach(function(radio){ radio.checked = radio === input; });\n    group.querySelectorAll('label').forEach(function(label){ label.classList.remove('active', 'active-swatch', 'forced-active'); });\n    var label = group.querySelector('label[for=\"' + input.id + '\"]');\n    if (label) label.classList.add('active', 'active-swatch', 'forced-active');\n  }\n  function updatePriceBlock(block, variant){\n    if (!block || !variant) return;\n    var price = money(variant.price);\n    var compare = variant.compare_at_price ? money(variant.compare_at_price) : '';\n    block.querySelectorAll('.price__regular .price-item--regular, .price-item--sale, .price-item--sale .money').forEach(function(el){ el.textContent = price; });\n    block.querySelectorAll('.price__sale s, .price__sale s .money').forEach(function(el){ el.textContent = compare; });\n    block.querySelectorAll('.price__sale \u003e span:first-child').forEach(function(el){ el.style.display = compare ? '' : 'none'; });\n    var saleBadge = block.querySelector('.price__badge-sale span');\n    if (saleBadge \u0026\u0026 variant.compare_at_price \u0026\u0026 variant.compare_at_price \u003e variant.price) {\n      saleBadge.textContent = '-' + Math.round(((variant.compare_at_price - variant.price) * 100) \/ variant.compare_at_price) + '%';\n    }\n  }\n  function applyVariant(variant){\n    if (!variant) return;\n    document.querySelectorAll('form[action*=\"\/cart\/add\"] input[name=\"id\"]').forEach(function(input){\n      input.value = variant.id;\n      input.setAttribute('value', variant.id);\n    });\n    document.querySelectorAll('[id^=\"price-\"]').forEach(function(block){ updatePriceBlock(block, variant); });\n    if (history.replaceState) history.replaceState({}, '', location.pathname + '?variant=' + variant.id);\n  }\n  function handleSelection(event){\n    var input = inputForEvent(event);\n    if (!input) return;\n    seedSelection();\n    selectedOptions[optionNameForInput(input)] = input.value;\n    setActiveInput(input);\n    setTimeout(function(){ applyVariant(matchingVariant()); }, 20);\n    setTimeout(function(){ applyVariant(matchingVariant()); }, 250);\n  }\n\n  document.addEventListener('DOMContentLoaded', function(){ seedSelection(); applyVariant(currentVariant()); });\n  document.addEventListener('click', handleSelection, true);\n  document.addEventListener('change', handleSelection, true);\n  setTimeout(function(){ seedSelection(); applyVariant(currentVariant()); }, 800);\n})();\n\u003c\/script\u003e","brand":"MCROONS","offers":[{"title":"Green-Tortoiseshell \/ Frame Only","offer_id":53972231160153,"sku":null,"price":25.0,"currency_code":"GBP","in_stock":true},{"title":"Green-Tortoiseshell \/ Non-Prescription","offer_id":53972231455065,"sku":null,"price":49.0,"currency_code":"GBP","in_stock":true},{"title":"Green-Tortoiseshell \/ Prescription","offer_id":53972231749977,"sku":null,"price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Black-Marble \/ Frame Only","offer_id":53711819538777,"sku":null,"price":25.0,"currency_code":"GBP","in_stock":true},{"title":"Black-Marble \/ Non-Prescription","offer_id":53695210357081,"sku":null,"price":49.0,"currency_code":"GBP","in_stock":true},{"title":"Black-Marble \/ Prescription","offer_id":53695210258777,"sku":null,"price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Pearl-White \/ Frame Only","offer_id":53972231192921,"sku":null,"price":25.0,"currency_code":"GBP","in_stock":true},{"title":"Pearl-White \/ Non-Prescription","offer_id":53972231487833,"sku":null,"price":49.0,"currency_code":"GBP","in_stock":true},{"title":"Pearl-White \/ Prescription","offer_id":53972231782745,"sku":null,"price":75.0,"currency_code":"GBP","in_stock":true},{"title":"Blue-Tortoiseshell \/ Frame Only","offer_id":54095791751513,"sku":null,"price":25.0,"currency_code":"GBP","in_stock":true},{"title":"Blue-Tortoiseshell \/ Non-Prescription","offer_id":54095791849817,"sku":null,"price":49.0,"currency_code":"GBP","in_stock":true},{"title":"Blue-Tortoiseshell \/ Prescription","offer_id":54095791948121,"sku":null,"price":75.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0895\/8312\/4825\/files\/mc-dtc-102-5610846.jpg?v=1757703965","url":"https:\/\/www.mcroons.com\/ru\/products\/mc-dtc-102","provider":"MCROONS.COM","version":"1.0","type":"link"}