{"product_id":"iris-ruched-halter-maxi-dress","title":"IRIS RUCHED HALTER MAXI DRESS","description":"\u003cbody\u003e\n\n\n\u003cmeta charset=\"UTF-8\"\u003e\n\u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\n\u003ctitle\u003eThe IRIS Ruched Halter Maxi Dress\u003c\/title\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400\u0026amp;family=Montserrat:wght@300;400;500;600\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n:root{--cream:#FAF7F2;--warm-black:#5C3D2E;--muted-gold:#7A6C52;--text-secondary:#4A443D;--border:#E8E2D9;--highlight:#F0EBE3}*{margin:0;padding:0;box-sizing:border-box}body{background:var(--cream);color:var(--warm-black);font-family:'Montserrat',sans-serif;font-weight:300;font-size:14px;min-height:100vh;display:flex;justify-content:center;padding:40px 20px;-webkit-font-smoothing:antialiased}.container{max-width:820px;width:100%;font-size:14px;animation:fadeIn .6s ease-out}@keyframes fadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.divider{width:40px;height:1px;background:var(--muted-gold);margin:20px auto}.description{max-width:620px;margin:0 auto 40px;text-align:center}.description .lead{font-family:'Cormorant Garamond',serif;font-weight:400;font-style:italic;font-size:1.15rem;line-height:1.7;margin-bottom:12px}.tabs-container{margin-top:10px}.tab-nav{display:flex;border-bottom:2px solid var(--border);gap:0}.tab-btn{font-family:'Montserrat',sans-serif;font-size:.68rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--text-secondary);background:transparent;border:none;padding:14px 24px;cursor:pointer;position:relative;transition:color .3s ease;white-space:nowrap}.tab-btn:hover{color:var(--warm-black)}.tab-btn.active{color:var(--warm-black);font-weight:500}.tab-btn.active::after{content:'';position:absolute;bottom:-2px;left:0;right:0;height:2px;background:var(--warm-black)}.tab-panel{display:none;padding:32px 0;animation:tabFade .3s ease-out}.tab-panel.active{display:block}@keyframes tabFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.love-list{list-style:none;padding:0}.love-list li{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--border);font-size:.78rem;color:var(--text-secondary);letter-spacing:.02em}.love-list li:last-child{border-bottom:none}.love-dot{width:5px;height:5px;border-radius:50%;background:var(--muted-gold);flex-shrink:0}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px;margin-top:8px}.detail-card{text-align:center;padding:16px;background:#fff;border:1px solid var(--border);border-radius:2px}.detail-card .detail-label{font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px}.detail-card .detail-value{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:.95rem}.stretch-dots{display:flex;gap:5px;justify-content:center;margin-top:3px}.stretch-dot{width:8px;height:8px;border-radius:50%;border:1px solid var(--muted-gold);background:transparent}.stretch-dot.filled{background:var(--muted-gold)}.size-finder{background:#fff;border:1px solid var(--border);border-radius:2px;padding:24px;margin-bottom:24px}.size-finder-title{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.05rem;margin-bottom:6px;text-align:center}.size-finder-subtitle{font-size:.62rem;color:var(--text-secondary);text-align:center;margin-bottom:16px}.size-finder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(85px,1fr));gap:8px}.size-finder-card{text-align:center;padding:14px 8px;border:1px solid var(--border);border-radius:2px;transition:all .2s ease;cursor:default}.size-finder-card:hover{border-color:var(--muted-gold);background:var(--highlight)}.size-finder-card .size-label{font-family:'Cormorant Garamond',serif;font-weight:600;font-size:1.1rem;margin-bottom:2px}.size-finder-card .us-size{font-size:.58rem;letter-spacing:.15em;text-transform:uppercase;color:var(--muted-gold);margin-bottom:6px}.size-finder-card .bust-range{font-size:.6rem;color:var(--text-secondary);line-height:1.4}.unit-toggle{display:flex;justify-content:center;gap:0;margin-bottom:24px}.unit-btn{font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;padding:10px 28px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .3s ease;font-family:'Montserrat',sans-serif}.unit-btn:first-child{border-radius:2px 0 0 2px}.unit-btn:last-child{border-radius:0 2px 2px 0;border-left:none}.unit-btn.active{background:var(--warm-black);color:var(--cream);border-color:var(--warm-black)}.garment-label{text-align:center;margin-bottom:16px}.garment-label span{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-secondary);background:var(--highlight);padding:6px 16px;border-radius:2px}.table-wrapper{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}thead th{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1rem;padding:14px 12px;text-align:center;border-bottom:2px solid var(--warm-black)}thead th:first-child{text-align:left;font-family:'Montserrat',sans-serif;font-weight:400;font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--text-secondary);vertical-align:bottom}tbody td{padding:12px;text-align:center;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;font-weight:300}tbody td:first-child{text-align:left;font-size:.75rem;color:var(--text-secondary);white-space:nowrap;min-width:110px}tbody tr:hover{background:var(--highlight)}.waist-range{font-size:.78rem;white-space:nowrap}.between-sizes{margin-top:20px;padding:16px 20px;background:var(--highlight);border-left:3px solid var(--muted-gold);border-radius:0 2px 2px 0}.between-sizes-title{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:.9rem;margin-bottom:6px}.between-sizes p{font-size:.7rem;line-height:1.7;color:var(--text-secondary)}.fit-notes p{font-size:.72rem;line-height:1.8;color:var(--text-secondary);max-width:600px}.fit-notes p+p{margin-top:8px}.model-note{margin-top:14px;font-style:italic;font-size:.68rem!important;color:var(--muted-gold)!important}.measure-guide{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-top:20px}.measure-item{padding:18px;background:#fff;border:1px solid var(--border);border-radius:2px}.measure-item h4{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:.95rem;margin-bottom:6px}.measure-item p{font-size:.68rem;line-height:1.7;color:var(--text-secondary)}@media(max-width:640px){.description .lead{font-size:1rem}.tab-btn{padding:12px 14px;font-size:.6rem;letter-spacing:.12em}table{font-size:.78rem}thead th{font-size:.88rem;padding:10px 8px}tbody td{padding:10px 8px}.size-finder-grid{grid-template-columns:repeat(4,1fr)}}\n\u003c\/style\u003e\n\n\n\n\u003cdiv class=\"container\"\u003e\n\n  \u003cdiv class=\"description\"\u003e\n    \u003cp class=\"lead\"\u003eEmbrace the allure of sunrise in the IRIS Ruched Halter Mesh Dress, a stunning piece that combines elegance and sophistication. The standout ruched design beautifully enhances your figure, creating a flattering silhouette that's sure to turn heads. Crafted with a soft mesh fabric, this dress features a mesmerising ombré colour palette that seamlessly transitions, capturing the depths of the ocean from sunlit teal to midnight navy. The chic halter neckline accentuates your shoulders, while the sleek back slit adds an element of allure.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"tabs-container\"\u003e\n    \u003cnav class=\"tab-nav\"\u003e\n      \u003cbutton class=\"tab-btn active\" onclick=\"switchTab('details')\"\u003eDetails\u003c\/button\u003e\n      \u003cbutton class=\"tab-btn\" onclick=\"switchTab('sizing')\"\u003eSize Guide\u003c\/button\u003e\n      \u003cbutton class=\"tab-btn\" onclick=\"switchTab('care')\"\u003eFabric \u0026amp; Care\u003c\/button\u003e\n    \u003c\/nav\u003e\n\n    \u003c!-- DETAILS TAB --\u003e\n    \u003cdiv class=\"tab-panel active\" id=\"tab-details\"\u003e\n      \u003cul class=\"love-list\"\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003ePrinted mesh ruched halter maxi dress\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003eBack zipper\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003eLightweight and stretchy\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003eFully lined\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003eApprox. 63″ long\u003c\/li\u003e\n        \u003cli\u003e\n\u003cspan class=\"love-dot\"\u003e\u003c\/span\u003eLined but slightly sheer. The mesh fabric has a subtle see-through quality even with the lining\u003c\/li\u003e\n      \u003c\/ul\u003e\n\n      \u003cdiv style=\"margin-top:16px;padding:14px 18px;background:var(--highlight);border-radius:2px\"\u003e\n        \u003cp style=\"font-size:.72rem;color:var(--text-secondary);line-height:1.6\"\u003e\n          \u003cspan style=\"font-family:'Cormorant Garamond',serif;font-weight:500;font-size:.85rem;color:var(--warm-black)\"\u003eSizing Tip:\u003c\/span\u003e\n          Choose your normal size.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- SIZE GUIDE TAB --\u003e\n    \u003cdiv class=\"tab-panel\" id=\"tab-sizing\"\u003e\n\n      \u003cdiv class=\"size-finder\"\u003e\n        \u003cdiv class=\"size-finder-title\"\u003eFind Your Size\u003c\/div\u003e\n        \u003cdiv class=\"size-finder-subtitle\"\u003eBased on your body measurements\u003c\/div\u003e\n        \u003cdiv class=\"size-finder-grid\" id=\"sizeFinderGrid\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"unit-toggle\"\u003e\n        \u003cbutton class=\"unit-btn active\" onclick=\"setUnit('in')\"\u003eInches\u003c\/button\u003e\n        \u003cbutton class=\"unit-btn\" onclick=\"setUnit('cm')\"\u003eCentimetres\u003c\/button\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"garment-label\"\u003e\u003cspan\u003eGarment Measurements — Laid Flat\u003c\/span\u003e\u003c\/div\u003e\n\n      \u003cdiv class=\"table-wrapper\"\u003e\n        \u003ctable\u003e\n          \u003cthead\u003e\n            \u003ctr\u003e\n              \u003cth\u003eMeasurement\u003c\/th\u003e\n              \u003cth\u003eXS\u003c\/th\u003e\n              \u003cth\u003eS\u003c\/th\u003e\n              \u003cth\u003eM\u003c\/th\u003e\n              \u003cth\u003eL\u003c\/th\u003e\n              \u003cth\u003eXL\u003c\/th\u003e\n              \u003cth\u003e2XL\u003c\/th\u003e\n              \u003cth\u003e3XL\u003c\/th\u003e\n            \u003c\/tr\u003e\n          \u003c\/thead\u003e\n          \u003ctbody id=\"tableBody\"\u003e\u003c\/tbody\u003e\n        \u003c\/table\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"between-sizes\"\u003e\n        \u003cdiv class=\"between-sizes-title\"\u003eBetween Sizes?\u003c\/div\u003e\n        \u003cp\u003eChoose your normal size. The stretchy mesh fabric hugs and adapts to your shape comfortably.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"fit-notes\" style=\"margin-top:24px\"\u003e\n        \u003cp\u003eThe IRIS Ruched Halter Maxi Dress is a stretchy mesh with a 2\/3 stretch factor. Choose your normal size.\u003c\/p\u003e\n        \u003cp class=\"model-note\"\u003eModel is 5′8″ and wears size S.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"measure-guide\"\u003e\n        \u003cdiv class=\"measure-item\"\u003e\n          \u003ch4\u003eBust\u003c\/h4\u003e\n          \u003cp\u003eMeasure around the fullest part of your bust, keeping the tape level across your back.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"measure-item\"\u003e\n          \u003ch4\u003eWaist\u003c\/h4\u003e\n          \u003cp\u003eMeasure around your natural waistline — the narrowest part of your torso, typically just above the navel.\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"measure-item\"\u003e\n          \u003ch4\u003eTotal Length\u003c\/h4\u003e\n          \u003cp\u003eMeasured from the highest point of the shoulder down to the hem.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- FABRIC \u0026 CARE TAB --\u003e\n    \u003cdiv class=\"tab-panel\" id=\"tab-care\"\u003e\n      \u003cdiv class=\"details-grid\"\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eFabric\u003c\/div\u003e\n          \u003cdiv class=\"detail-value\"\u003e70% Polyester · 30% Spandex\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eWeight\u003c\/div\u003e\n          \u003cdiv class=\"detail-value\"\u003eLightweight · Sheer\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eCare\u003c\/div\u003e\n          \u003cdiv class=\"detail-value\"\u003eHand Wash\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eStretch\u003c\/div\u003e\n          \u003cdiv class=\"stretch-dots\"\u003e\n            \u003cdiv class=\"stretch-dot filled\"\u003e\u003c\/div\u003e\n            \u003cdiv class=\"stretch-dot filled\"\u003e\u003c\/div\u003e\n            \u003cdiv class=\"stretch-dot\"\u003e\u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eLining\u003c\/div\u003e\n          \u003cdiv class=\"detail-value\"\u003eFully Lined\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"detail-card\"\u003e\n          \u003cdiv class=\"detail-label\"\u003eOpacity\u003c\/div\u003e\n          \u003cdiv class=\"detail-value\"\u003eSlightly Sheer\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\nconst usSizes = ['US 0\\u20132', 'US 4\\u20136', 'US 6\\u20138', 'US 10\\u201312', 'US 14\\u201316', 'US 18\\u201320', 'US 22\\u201324'];\n\nconst sizeFinderData = {\n  in: [\n    {size: 'XS', bust: 'Bust 31\\u201333\\u2033', waist: 'Waist 23\\u201325\\u2033'},\n    {size: 'S',  bust: 'Bust 34\\u201336\\u2033', waist: 'Waist 26\\u201328\\u2033'},\n    {size: 'M',  bust: 'Bust 37\\u201339\\u2033', waist: 'Waist 29\\u201331\\u2033'},\n    {size: 'L',  bust: 'Bust 40\\u201342\\u2033', waist: 'Waist 32\\u201334\\u2033'},\n    {size: 'XL', bust: 'Bust 43\\u201345\\u2033', waist: 'Waist 36\\u201338\\u2033'},\n    {size: '2XL',bust: 'Bust 46\\u201348\\u2033', waist: 'Waist 39\\u201341\\u2033'},\n    {size: '3XL',bust: 'Bust 49\\u201351\\u2033', waist: 'Waist 42\\u201344\\u2033'}\n  ],\n  cm: [\n    {size: 'XS', bust: 'Bust 78.5\\u201384 cm',   waist: 'Waist 58.5\\u201363.5 cm'},\n    {size: 'S',  bust: 'Bust 86.5\\u201391.5 cm', waist: 'Waist 66\\u201371 cm'},\n    {size: 'M',  bust: 'Bust 94\\u201399 cm',     waist: 'Waist 73.5\\u201378.5 cm'},\n    {size: 'L',  bust: 'Bust 101.5\\u2013107 cm', waist: 'Waist 81\\u201386.5 cm'},\n    {size: 'XL', bust: 'Bust 109\\u2013114 cm',   waist: 'Waist 91.5\\u201396.5 cm'},\n    {size: '2XL',bust: 'Bust 117\\u2013122 cm',   waist: 'Waist 99\\u2013104 cm'},\n    {size: '3XL',bust: 'Bust 124.5\\u2013130 cm', waist: 'Waist 106.5\\u2013112 cm'}\n  ]\n};\n\nconst tableData = {\n  in: [\n    {label: 'Bust',   values: ['25.2', '27.6', '30.0', '32.4', '34.8', '37.2', '39.6']},\n    {label: 'Waist',  values: ['23.2', '25.6', '28.0', '30.4', '32.8', '35.2', '37.6']},\n    {label: 'Length', values: ['63.8', '65.0', '66.2', '67.4', '68.6', '69.8', '71.0']}\n  ],\n  cm: [\n    {label: 'Bust',   values: ['64.0', '70.0', '76.0', '82.5', '88.5', '94.5', '100.5']},\n    {label: 'Waist',  values: ['59.0', '65.0', '71.0', '77.0', '83.5', '89.5', '95.5']},\n    {label: 'Length', values: ['162.0', '165.0', '168.0', '171.0', '174.0', '177.5', '180.5']}\n  ]\n};\n\nfunction switchTab(tab) {\n  document.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });\n  document.querySelectorAll('.tab-panel').forEach(function(p) { p.classList.remove('active'); });\n  event.target.classList.add('active');\n  document.getElementById('tab-' + tab).classList.add('active');\n}\n\nvar currentUnit = 'in';\n\nfunction setUnit(u) {\n  currentUnit = u;\n  document.querySelectorAll('.unit-btn').forEach(function(b) {\n    b.classList.toggle('active', b.textContent.toLowerCase().includes(u === 'in' ? 'inch' : 'cent'));\n  });\n  renderTable();\n  renderSizeFinder();\n}\n\nfunction renderSizeFinder() {\n  var g = document.getElementById('sizeFinderGrid');\n  g.innerHTML = '';\n  sizeFinderData[currentUnit].forEach(function(item, i) {\n    var c = document.createElement('div');\n    c.className = 'size-finder-card';\n    var f1 = item.bust || item.waist;\n    var f2 = item.waist \u0026\u0026 item.bust ? item.waist : (item.hip || '');\n    c.innerHTML = '\u003cdiv class=\"size-label\"\u003e' + item.size + '\u003c\/div\u003e'\n      + '\u003cdiv class=\"us-size\"\u003e' + usSizes[i] + '\u003c\/div\u003e'\n      + '\u003cdiv class=\"bust-range\"\u003e' + f1 + (f2 ? '\u003cbr\u003e' + f2 : '') + '\u003c\/div\u003e';\n    g.appendChild(c);\n  });\n}\n\nfunction renderTable() {\n  var t = document.getElementById('tableBody');\n  t.innerHTML = '';\n  tableData[currentUnit].forEach(function(r) {\n    var tr = document.createElement('tr');\n    tr.innerHTML = '\u003ctd\u003e' + r.label + '\u003c\/td\u003e'\n      + r.values.map(function(v) { return '\u003ctd\u003e' + v + '\u003c\/td\u003e'; }).join('');\n    t.appendChild(tr);\n  });\n}\n\nrenderTable();\nrenderSizeFinder();\n\u003c\/script\u003e\n\n\n\u003c\/body\u003e","brand":"shakara","offers":[{"title":"XS","offer_id":45616610181311,"sku":"05321353262","price":260.0,"currency_code":"USD","in_stock":true},{"title":"S","offer_id":45616610214079,"sku":"05321354207","price":260.0,"currency_code":"USD","in_stock":true},{"title":"M","offer_id":45616610246847,"sku":"05321354214","price":260.0,"currency_code":"USD","in_stock":true},{"title":"L","offer_id":45616610279615,"sku":"05321354221","price":260.0,"currency_code":"USD","in_stock":true},{"title":"XL","offer_id":45616610312383,"sku":"05321354238","price":260.0,"currency_code":"USD","in_stock":true},{"title":"XXL","offer_id":45616610345151,"sku":"05321354245","price":260.0,"currency_code":"USD","in_stock":true},{"title":"XXXL","offer_id":45616610377919,"sku":"05321353255","price":260.0,"currency_code":"USD","in_stock":true},{"title":"XXXXL","offer_id":45616610410687,"sku":"05321353347","price":260.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1463\/5092\/files\/ofuureiris14249.jpg?v=1779404280","url":"https:\/\/www.ofuure.com\/products\/iris-ruched-halter-maxi-dress","provider":"OFUURE","version":"1.0","type":"link"}