{"product_id":"christmas-tree-earrings-for-women-sparkling-zircon-dangle","title":"Christmas Tree Earrings for Women, Sparkling Zircon Dangle","description":"\n\u003cstyle\u003e\n\/* =========================================================\nSARA BOUTIQUE: PRODUCT DESCRIPTION (Christmas Tree Earrings)\n========================================================= *\/\n.sdp,.sdp-lb{--t:#282223;--m:#6f6768;--b:#e4dcd8;--r:#b78387;--rd:#96666a;--rl:#ead7d7;--soft:#fbf7f5;--gold:#c8963e;--serif:Georgia,'Times New Roman',serif}\n.sdp{color:var(--t);font-size:14px;line-height:1.6;max-width:100%;overflow:hidden;text-align:left}\n.sdp *,.sdp *::before,.sdp *::after,.sdp-lb *{box-sizing:border-box}\n.sdp img,.sdp video{max-width:100%}\n.sdp button{font-family:inherit}\n.sdp p{margin:0}\n.sdp .sdp-h{font-family:var(--serif);font-size:23px;font-weight:400;line-height:1.2;letter-spacing:-.01em;margin:0 0 5px;color:var(--t)}\n.sdp .sdp-sub{font-size:13px;color:var(--m);margin:0 0 14px}\n.sdp-sec{margin:0 0 38px}\n.sdp-lead{font-size:15px;line-height:1.7;color:#4a4243;margin:0 0 18px}\n\n\/* ---------- HIGHLIGHTS ---------- *\/\n.sdp-hl{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n.sdp-hl-item{display:flex;gap:11px;align-items:flex-start;padding:13px;background:#fff;border:1px solid var(--b);border-radius:12px}\n.sdp-hl-ico{width:34px;height:34px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--rl);color:var(--rd);font-size:15px}\n.sdp-hl-item strong{display:block;font-size:14px;line-height:1.3;color:var(--t)}\n.sdp-hl-item span.sdp-hl-t{display:block;margin-top:2px;font-size:12.5px;line-height:1.45;color:var(--m)}\n\n\/* ---------- VIDEO REEL ---------- *\/\n.sdp-reel-wrap{container-type:inline-size;position:relative}\n.sdp-reel{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:2px 2px 10px;scrollbar-width:none}\n.sdp-reel::-webkit-scrollbar{display:none}\n.sdp-reel-fade{position:absolute;top:0;right:0;bottom:44px;width:46px;pointer-events:none;background:linear-gradient(to left,rgba(247,243,239,.96),rgba(247,243,239,0));border-radius:0 14px 14px 0;transition:opacity .3s ease}\n.sdp-reel-wrap.at-end .sdp-reel-fade{opacity:0}\n.sdp-swipe{position:absolute;right:10px;top:42%;display:flex;align-items:center;gap:6px;padding:9px 14px;border-radius:999px;background:rgba(40,34,35,.78);color:#fff;font-size:13px;font-weight:700;pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:opacity .4s ease}\n.sdp-swipe i{font-style:normal;font-size:17px;line-height:1;display:inline-block;animation:sdpNudge 1.3s ease-in-out infinite}\n@keyframes sdpNudge{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}\n.sdp-reel-wrap.hint-off .sdp-swipe{opacity:0}\n.sdp-reel-ctrl{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:2px}\n.sdp-reel-ctrl .sdp-arrow:disabled{opacity:.35;cursor:default;background:#fff;color:var(--rd);border-color:var(--b)}\n.sdp-dots{display:flex;align-items:center}\n.sdp-dot{width:22px;height:30px;padding:0;border:0;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center}\n.sdp-dot::before{content:\"\";display:block;width:8px;height:8px;border-radius:999px;background:#d4c8c5;transition:width .25s ease,background .25s ease}\n.sdp-dot.on::before{width:22px;background:var(--r)}\n.sdp-vid{position:relative;flex:0 0 min(42cqw,176px);aspect-ratio:9\/14;scroll-snap-align:start;overflow:hidden;border-radius:14px;border:1px solid var(--b);background:#e9dfda;cursor:pointer;-webkit-tap-highlight-color:transparent}\n.sdp-vid video{width:100%;height:100%;display:block;object-fit:cover}\n.sdp-snd{position:absolute;left:8px;bottom:8px;padding:6px 11px;border:0;border-radius:999px;background:rgba(40,34,35,.62);color:#fff;font-size:12px;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}\n.sdp-vid.is-sound .sdp-snd{background:var(--rd)}\n\n\/* ---------- REVIEWS ---------- *\/\n.sdp-note{display:flex;gap:10px;align-items:flex-start;margin:0 0 16px;padding:12px 14px;border:1px solid var(--b);border-left:3px solid var(--r);border-radius:10px;background:var(--soft);font-size:12.5px;line-height:1.55;color:#5f5758}\n.sdp-note b{color:var(--t)}\n.sdp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 14px}\n.sdp-stat{padding:14px 6px;text-align:center;background:#fff;border:1px solid var(--b);border-radius:12px}\n.sdp-stat b{display:block;font-family:var(--serif);font-size:28px;font-weight:400;line-height:1.1;color:var(--rd)}\n.sdp-stat span{display:block;margin-top:3px;font-size:12px;color:var(--m)}\n.sdp-stat .sdp-stars{font-size:12px;letter-spacing:1px;margin-top:4px}\n.sdp-stars{color:var(--gold);letter-spacing:2px;font-size:14px;line-height:1}\n.sdp-wall{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:0 0 18px}\n.sdp-wall button{position:relative;padding:0;border:1px solid var(--b);border-radius:9px;overflow:hidden;aspect-ratio:3\/4;background:#eee7e3;cursor:zoom-in;transition:transform .2s ease,border-color .2s ease}\n.sdp-wall button:hover{transform:translateY(-3px);border-color:var(--r)}\n.sdp-wall img{width:100%;height:100%;object-fit:cover;display:block}\n.sdp-rev{container-type:inline-size}\n.sdp-track{--cw:min(88cqw,360px);position:relative;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:14px calc((100cqw - var(--cw))\/2) 18px;margin:0;scrollbar-width:none;align-items:flex-start}\n.sdp-track::-webkit-scrollbar{display:none}\n.sdp-card{flex:0 0 var(--cw);scroll-snap-align:center;display:flex;gap:13px;align-items:flex-start;padding:13px;background:#fff;border:1px solid var(--b);border-radius:16px;opacity:.5;transform:scale(.95);transition:opacity .35s ease,transform .35s ease,box-shadow .35s ease,border-color .35s ease}\n.sdp-card.is-focus{opacity:1;transform:scale(1);border-color:#d9b9bb;box-shadow:0 18px 40px rgba(150,102,106,.2),0 0 0 3px rgba(183,131,135,.12)}\n.sdp-card-photo{position:relative;flex:0 0 36%;padding:0;border:1px solid var(--b);border-radius:11px;overflow:hidden;background:#eee7e3;cursor:zoom-in;align-self:flex-start;aspect-ratio:3\/4;min-height:0;height:auto}\n.sdp-card-photo img{width:100%;height:100%;object-fit:cover;display:block}\n.sdp-more-ph{position:absolute;right:6px;bottom:6px;padding:2px 8px;border-radius:999px;background:rgba(40,34,35,.72);color:#fff;font-size:11px;font-weight:700}\n.sdp-card-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:flex-start;gap:7px}\n.sdp-quote{font-family:var(--serif);font-size:16px;line-height:1.5;color:var(--t);overflow-wrap:break-word;white-space:pre-line}\n.sdp-quote.is-clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;line-clamp:5;overflow:hidden}\n.sdp-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:12.5px;color:var(--m)}\n.sdp-meta b{color:var(--t);font-weight:700}\n.sdp-chip{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;background:var(--rl);color:var(--rd);font-size:12px;font-weight:600}\n.sdp-rev-ctrl{display:flex;align-items:center;justify-content:center;gap:14px}\n.sdp-arrow{width:42px;height:42px;display:flex;align-items:center;justify-content:center;border:1px solid var(--b);border-radius:50%;background:#fff;color:var(--rd);font-size:18px;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}\n.sdp-arrow:hover{background:var(--r);border-color:var(--r);color:#fff}\n.sdp-count{min-width:54px;text-align:center;font-size:13px;font-weight:700;color:var(--m)}\n.sdp-tr{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--b);border-radius:999px;background:var(--soft);color:var(--rd);font-size:12px;font-weight:700;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}\n.sdp-tr:hover{background:var(--r);border-color:var(--r);color:#fff}\n.sdp-tr[disabled]{opacity:.6;cursor:wait}\n.sdp-tr-err{font-size:12px;color:var(--rd)}\n.sdp-more{align-self:flex-start;padding:0;border:0;background:none;color:var(--rd);font-size:12.5px;font-weight:700;text-decoration:underline;cursor:pointer}\n\n\/* ---------- DETAILS \/ DELIVERY ---------- *\/\n.sdp-det{border:1px solid var(--b);border-radius:14px;background:#fff;overflow:hidden;margin:0 0 10px}\n.sdp-det summary{list-style:none;display:flex;align-items:center;justify-content:space-between;padding:16px 18px;font-size:15px;font-weight:700;cursor:pointer}\n.sdp-det summary::-webkit-details-marker{display:none}\n.sdp-det summary::after{content:\"+\";display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #daccca;border-radius:50%;color:var(--rd);font-size:18px;font-weight:400;transition:transform .25s ease,background .25s ease,color .25s ease}\n.sdp-det[open] summary::after{transform:rotate(45deg);background:var(--r);border-color:var(--r);color:#fff}\n.sdp-dt{width:100%;border-collapse:collapse;font-size:14px}\n.sdp-dt tr{border-top:1px solid var(--b)}\n.sdp-dt td{padding:11px 18px;vertical-align:top}\n.sdp-dt td:first-child{width:40%;color:var(--rd);font-weight:700}\n.sdp-dt td:last-child{color:#4a4243}\n.sdp-ship{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:14px 18px 6px;border-top:1px solid var(--b)}\n.sdp-ship div{padding:14px 8px;text-align:center;background:var(--soft);border:1px solid var(--b);border-radius:12px}\n.sdp-ship b{display:block;font-family:var(--serif);font-size:20px;font-weight:400;color:var(--rd);line-height:1.2}\n.sdp-ship span{display:block;margin-top:3px;font-size:12px;color:var(--m)}\n.sdp-ship-note{padding:6px 18px 16px;font-size:12.5px;color:var(--m)}\n\n\/* ---------- LIGHTBOX ---------- *\/\n.sdp-lb{position:fixed;inset:0;z-index:99999;background:rgba(20,16,17,.96);display:flex;align-items:center;justify-content:center;touch-action:pan-y}\n.sdp-lb[hidden]{display:none}\n.sdp-lb img{max-width:92vw;max-height:84vh;object-fit:contain;border-radius:10px;user-select:none;-webkit-user-drag:none}\n.sdp-lb button{position:absolute;display:flex;align-items:center;justify-content:center;width:46px;height:46px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:22px;cursor:pointer;font-family:inherit}\n.sdp-lb .sdp-lb-x{top:max(14px,env(safe-area-inset-top,0px));right:14px;font-size:28px}\n.sdp-lb .sdp-lb-p{left:12px;top:50%;transform:translateY(-50%)}\n.sdp-lb .sdp-lb-n{right:12px;top:50%;transform:translateY(-50%)}\n.sdp-lb .sdp-lb-c{position:absolute;bottom:max(18px,env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;font-size:13px;color:rgba(255,255,255,.75)}\n\n.sdp button:focus-visible,.sdp summary:focus-visible,.sdp-lb button:focus-visible{outline:2px solid var(--rd);outline-offset:2px}\n\n@media(max-width:420px){\n  .sdp-hl{gap:8px}\n  .sdp-hl-item{padding:11px;gap:9px}\n  .sdp-hl-ico{width:30px;height:30px;font-size:13px}\n  .sdp-quote{font-size:15px}\n  .sdp-card{gap:11px;padding:11px}\n  .sdp-wall{gap:4px}\n  .sdp-dt td{padding:10px 14px}\n}\n@media(prefers-reduced-motion:reduce){\n  .sdp-card,.sdp-swipe i{transition:none!important;animation:none!important}\n  .sdp-card{transform:none}\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"sdp\" id=\"sdp\"\u003e\n\n\u003c!-- ================= INTRO + HIGHLIGHTS ================= --\u003e\n\u003csection class=\"sdp-sec\"\u003e\n\u003cp class=\"sdp-lead\"\u003eSweet Christmas tree dangle earrings with sparkling zircon detailing and an electroplated alloy finish. The supplied color option is Pink Christmas Earrings.\u003c\/p\u003e\n\u003cdiv class=\"sdp-hl\"\u003e\n\u003cdiv class=\"sdp-hl-item\"\u003e\n\u003cspan class=\"sdp-hl-ico\"\u003e🎄\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eChristmas Tree Design\u003c\/strong\u003e\u003cspan class=\"sdp-hl-t\"\u003eA geometric holiday design\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-hl-item\"\u003e\n\u003cspan class=\"sdp-hl-ico\"\u003e💎\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eSparkling Zircon\u003c\/strong\u003e\u003cspan class=\"sdp-hl-t\"\u003eZircon detailing\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-hl-item\"\u003e\n\u003cspan class=\"sdp-hl-ico\"\u003e✨\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eElectroplated Finish\u003c\/strong\u003e\u003cspan class=\"sdp-hl-t\"\u003eElectroplated alloy finish\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-hl-item\"\u003e\n\u003cspan class=\"sdp-hl-ico\"\u003e🎁\u003c\/span\u003e\u003cdiv\u003e\n\u003cstrong\u003eHoliday Style\u003c\/strong\u003e\u003cspan class=\"sdp-hl-t\"\u003eA festive accessory for the season\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- ================= VIDEO REEL ================= --\u003e\n\u003csection class=\"sdp-sec\"\u003e\n\u003ch2 class=\"sdp-h\"\u003eSee the details\u003c\/h2\u003e\n\u003cp class=\"sdp-sub\"\u003e2 videos. Swipe sideways or use the arrows. Tap a video for sound.\u003c\/p\u003e\n\u003cdiv class=\"sdp-reel-wrap\" id=\"sdpReelWrap\"\u003e\n\u003cdiv class=\"sdp-reel\" id=\"sdpReel\"\u003e\n\u003cdiv class=\"sdp-vid\"\u003e\n\u003cvideo data-src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/c2d3c4d952664ff3a92c1ef1a9dfd890.mp4\" muted loop playsinline preload=\"metadata\"\u003e\u003c\/video\u003e\u003cbutton type=\"button\" class=\"sdp-snd\"\u003eTap for sound\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-vid\"\u003e\n\u003cvideo data-src=\"https:\/\/cdn.shopify.com\/videos\/c\/o\/v\/6ba4912503f9489db6ce859c34706a9d.mp4\" muted loop playsinline preload=\"metadata\"\u003e\u003c\/video\u003e\u003cbutton type=\"button\" class=\"sdp-snd\"\u003eTap for sound\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-reel-fade\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"sdp-swipe\"\u003eSwipe \u003ci\u003e›\u003c\/i\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-reel-ctrl\"\u003e\n\u003cbutton type=\"button\" class=\"sdp-arrow\" id=\"sdpReelPrev\" aria-label=\"Previous video\"\u003e‹\u003c\/button\u003e\u003cdiv class=\"sdp-dots\" id=\"sdpReelDots\"\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"sdp-arrow\" id=\"sdpReelNext\" aria-label=\"Next video\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- ================= REVIEWS ================= --\u003e\n\u003csection class=\"sdp-sec\"\u003e\n\u003ch2 class=\"sdp-h\"\u003eReviews from our suppliers\u003c\/h2\u003e\n\u003cp class=\"sdp-sub\"\u003e14 supplier-provided customer reviews for these Christmas tree earrings.\u003c\/p\u003e\n\u003cdiv class=\"sdp-note\"\u003e\u003cdiv\u003e\n\u003cb\u003eWhere these come from:\u003c\/b\u003e these customer comments and photos were provided in the supplier review data for this Christmas tree earrings listing.\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"sdp-stats\"\u003e\n\u003cdiv class=\"sdp-stat\"\u003e\n\u003cb id=\"sdpAvg\"\u003e–\u003c\/b\u003e\u003cdiv class=\"sdp-stars\" id=\"sdpAvgStars\"\u003e★★★★★\u003c\/div\u003e\n\u003cspan\u003eaverage rating\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-stat\"\u003e\n\u003cb id=\"sdpTotal\"\u003e–\u003c\/b\u003e\u003cspan\u003ecustomer reviews\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-stat\"\u003e\n\u003cb id=\"sdpCountries\"\u003e–\u003c\/b\u003e\u003cspan\u003ecountries\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sdp-wall\" id=\"sdpWall\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"sdp-rev\"\u003e\n\u003cdiv class=\"sdp-track\" id=\"sdpTrack\" tabindex=\"0\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"sdp-rev-ctrl\"\u003e\n\u003cbutton type=\"button\" class=\"sdp-arrow\" id=\"sdpPrev\" aria-label=\"Previous review\"\u003e‹\u003c\/button\u003e\n\u003cspan class=\"sdp-count\" id=\"sdpCount\"\u003e1 \/ 1\u003c\/span\u003e\n\u003cbutton type=\"button\" class=\"sdp-arrow\" id=\"sdpNext\" aria-label=\"Next review\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- ================= DETAILS ================= --\u003e\n\u003csection class=\"sdp-sec\" style=\"margin-bottom:6px;\"\u003e\n\u003cdetails class=\"sdp-det\"\u003e\n\u003csummary\u003eProduct details\u003c\/summary\u003e\n\u003ctable class=\"sdp-dt\"\u003e\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eMaterial\u003c\/td\u003e\n\u003ctd\u003eAlloy\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eTreatment process\u003c\/td\u003e\n\u003ctd\u003eElectroplating\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eColor\u003c\/td\u003e\n\u003ctd\u003ePink Christmas Earrings\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eShape\u003c\/td\u003e\n\u003ctd\u003eGeometry\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eApplicable population\u003c\/td\u003e\n\u003ctd\u003eFemale\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAttributes\u003c\/td\u003e\n\u003ctd\u003eOrdinary, Thin\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePackage size\u003c\/td\u003e\n\u003ctd\u003e100 × 100 × 20 mm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePacking list\u003c\/td\u003e\n\u003ctd\u003e1 pair of earrings\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\u003c\/table\u003e\n\u003c\/details\u003e\n\u003cdetails class=\"sdp-det\"\u003e\n\u003csummary\u003eDelivery \u0026amp; shipping\u003c\/summary\u003e\n\u003cdiv class=\"sdp-ship\"\u003e\n\u003cdiv\u003e\n\u003cb\u003e7–20 days\u003c\/b\u003e\u003cspan\u003eWorldwide delivery\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cb\u003eIncluded\u003c\/b\u003e\u003cspan\u003eTracking on every order\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"sdp-ship-note\"\u003eTracking number is sent to your email once your order is dispatched.\u003c\/p\u003e\n\u003c\/details\u003e\n\u003c\/section\u003e\n\u003c\/div\u003e\n\n\u003c!-- ================= PHOTO VIEWER ================= --\u003e\n\u003cdiv class=\"sdp-lb\" id=\"sdpLb\" hidden\u003e\n\u003cbutton type=\"button\" class=\"sdp-lb-x\" id=\"sdpLbX\" aria-label=\"Close\"\u003e×\u003c\/button\u003e\n\u003cbutton type=\"button\" class=\"sdp-lb-p\" id=\"sdpLbP\" aria-label=\"Previous photo\"\u003e‹\u003c\/button\u003e\n\u003cimg id=\"sdpLbImg\" alt=\"Buyer photo\"\u003e\n\u003cbutton type=\"button\" class=\"sdp-lb-n\" id=\"sdpLbN\" aria-label=\"Next photo\"\u003e›\u003c\/button\u003e\n\u003cdiv class=\"sdp-lb-c\" id=\"sdpLbC\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  'use strict';\n\n  \/* =====================================================\n     REVIEW DATA  [name, country, rating, text, needsTranslate, [photo ids]]\n     (supplier reviews that include photos; duplicates removed)\n  ====================================================== *\/\n  var D = [\n    [\"B***w\",\"mx\",5,\"están hermosos, de buen tamaño\",1,[\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/2dd92e96-cba9-4cd4-838c-553bf1270693.jpg\"]],\n    [\"J***b\",\"gt\",5,\"lindos, mas grandes de lo que pense, tiempo de entrega fue rapido\",1,[\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/a2d430ab-7b6c-4e40-9894-259387e4c9f1.jpg\"]],\n    [\"C***a\",\"cl\",5,\"Muy brillantes pero pequeños\",1,[\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/8d3a5e68-9c69-4d04-b7f1-dc78c4a54158.jpg\"]],\n    [\"N***w\",\"mx\",5,\"Son realmente hermosos ❤️ \\nLos postes están un poco torcidos, espero que no se rompan al tratar de enderezarlos.\",1,[\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/73b0bb8d-c419-4591-afb3-f64781fe513f.jpg\",\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/5bccf517-f2c9-4fe3-a4be-baea94bed879.jpg\",\"https:\/\/cc-west-usa.oss-us-west-1.aliyuncs.com\/comment\/additional\/0001\/image\/2024-11-21\/4b3a4499-b41f-499c-b751-06cb749bd665.jpg\"]],\n    [\"I***o\",\"es\",5,\"se ven hermosos\",1,[]],\n    [\"X***c\",\"ru\",5,\"Нереально красивые сережки, смотрятся очень красиво!\",1,[]],\n    [\"G***q\",\"ru\",5,\"сразу супер новогодняя атмосфера!!\\nсделаны очень аккуратно! спасибо!!🤝\",1,[]],\n    [\"W***s\",\"cl\",5,\"hermoso\",1,[]],\n    [\"K***p\",\"cl\",5,\"hermosísimo\",1,[]],\n    [\"S***g\",\"ca\",5,\"k\",0,[]],\n    [\"V***e\",\"cl\",5,\"hermosos ! aunque uno venir con el arbolito pegado a la argolla (no se mueve) igual muy bellos, volveré a comprar antes de navidad\",1,[]],\n    [\"H***w\",\"ru\",5,\"красиво, аккуратно и по- новогоднему!\\nспасибо!🎄🎄👍🤩\",1,[]],\n    [\"U***b\",\"cl\",5,\"PD. Buena confección, preciosa terminación, cálidad muy por sobre  precio pagado y llegó en tiempo récord. Recomendable completamente.\",1,[]],\n    [\"P***q\",\"ru\",5,\"за эту цену очень даже\",1,[]]\n  ];\n\n  var FLAGS_NAME = null;\n  try{ FLAGS_NAME = new Intl.DisplayNames(['en'], {type:'region'}); }catch(e){}\n  function countryName(cc){\n    try{ return FLAGS_NAME ? FLAGS_NAME.of(cc.toUpperCase()) : cc.toUpperCase(); }catch(e){ return cc.toUpperCase(); }\n  }\n  function maskName(n){\n    if(!n) return '***';\n    if(n.indexOf('*') \u003e -1) return n;\n    n = n.trim();\n    return n.charAt(0) + '***' + n.charAt(n.length - 1).toLowerCase();\n  }\n  function starsText(n){ return '★★★★★'.slice(0, n) + '☆☆☆☆☆'.slice(0, 5 - n); }\n  function esc(s){ return String(s).replace(\/\u0026\/g,'\u0026amp;').replace(\/\u003c\/g,'\u0026lt;').replace(\/\u003e\/g,'\u0026gt;').replace(\/\"\/g,'\u0026quot;'); }\n\n  \/* ---------- flat photo list (wall + lightbox) ---------- *\/\n  var photoUrls = [];\n  var firstPhotoIndex = [];\n  D.forEach(function(r, i){\n    firstPhotoIndex[i] = photoUrls.length;\n    r[5].forEach(function(url){ photoUrls.push(url); });\n  });\n\n  \/* ---------- stats ---------- *\/\n  var sum = 0, ccs = {};\n  D.forEach(function(r){ sum += r[2]; ccs[r[1]] = 1; });\n  var avg = sum \/ D.length;\n  document.getElementById('sdpAvg').textContent = avg.toFixed(1);\n  document.getElementById('sdpAvgStars').textContent = starsText(Math.round(avg));\n  document.getElementById('sdpTotal').textContent = D.length;\n  document.getElementById('sdpCountries').textContent = Object.keys(ccs).length;\n\n  \/* ---------- photo wall (first photo of the first 18 reviews) ---------- *\/\n  var wall = document.getElementById('sdpWall');\n  var wallHtml = '';\n  var wallShown = 0;\n  for(var w = 0; w \u003c D.length \u0026\u0026 wallShown \u003c 18; w++){\n    if(!D[w][5] || !D[w][5].length) continue;\n    wallHtml += '\u003cbutton type=\"button\" data-photo=\"' + firstPhotoIndex[w] + '\"\u003e\u003cimg src=\"' + D[w][5][0] + '\" alt=\"Buyer photo of the earrings\" loading=\"lazy\"\u003e\u003c\/button\u003e';\n    wallShown++;\n  }\n  wall.innerHTML = wallHtml;\n\n  \/* ---------- review cards ---------- *\/\n  var track = document.getElementById('sdpTrack');\n  var cardsHtml = '';\n  D.forEach(function(r, i){\n    var photos = r[5];\n    cardsHtml += '\u003carticle class=\"sdp-card\"\u003e';\n    if(photos.length){\n      cardsHtml += '\u003cbutton type=\"button\" class=\"sdp-card-photo\" data-photo=\"' + firstPhotoIndex[i] + '\" aria-label=\"Open buyer photo\"\u003e\u003cimg src=\"' + photos[0] + '\" alt=\"Buyer photo\" loading=\"lazy\"\u003e' +\n        (photos.length \u003e 1 ? '\u003cspan class=\"sdp-more-ph\"\u003e+' + (photos.length - 1) + '\u003c\/span\u003e' : '') + '\u003c\/button\u003e';\n    }\n    cardsHtml += '\u003cdiv class=\"sdp-card-body\"\u003e' +\n      '\u003cdiv class=\"sdp-stars\"\u003e' + starsText(r[2]) + '\u003c\/div\u003e' +\n      '\u003cp class=\"sdp-quote\"\u003e“' + esc(r[3]) + '”\u003c\/p\u003e' +\n      (r[4] ? '\u003cbutton type=\"button\" class=\"sdp-tr\"\u003e🌐 Translate to English\u003c\/button\u003e' : '') +\n      '\u003cdiv class=\"sdp-meta\"\u003e\u003cb\u003e' + esc(maskName(r[0])) + '\u003c\/b\u003e\u003cspan class=\"sdp-chip\"\u003e' +\n      esc(countryName(r[1])) + '\u003c\/span\u003e\u003c\/div\u003e' +\n      '\u003c\/div\u003e\u003c\/article\u003e';\n  });\n  track.innerHTML = cardsHtml;\n\n  \/* =====================================================\n     VIDEO REEL\n  ====================================================== *\/\n  var reelWrap = document.getElementById('sdpReelWrap');\n  var reel = document.getElementById('sdpReel');\n  var reelPrevBtn = document.getElementById('sdpReelPrev');\n  var reelNextBtn = document.getElementById('sdpReelNext');\n  var reelDotsWrap = document.getElementById('sdpReelDots');\n  var vidCards = reel ? Array.prototype.slice.call(reel.querySelectorAll('.sdp-vid')) : [];\n\n  vidCards.forEach(function(card, i){\n    var dot = document.createElement('button');\n    dot.type = 'button';\n    dot.className = 'sdp-dot' + (i === 0 ? ' on' : '');\n    dot.setAttribute('aria-label', 'Go to video ' + (i + 1));\n    dot.addEventListener('click', function(){ scrollReelTo(i); hideSwipeHint(); });\n    if(reelDotsWrap) reelDotsWrap.appendChild(dot);\n  });\n\n  function reelDots(){ return reelDotsWrap ? Array.prototype.slice.call(reelDotsWrap.querySelectorAll('.sdp-dot')) : []; }\n\n  function currentReelIndex(){\n    if(!reel || !vidCards.length) return 0;\n    var center = reel.scrollLeft + reel.clientWidth \/ 2, best = 0, bestDist = Infinity;\n    vidCards.forEach(function(card, i){\n      var dist = Math.abs(card.offsetLeft + card.offsetWidth \/ 2 - center);\n      if(dist \u003c bestDist){ bestDist = dist; best = i; }\n    });\n    return best;\n  }\n\n  function updateReelUI(){\n    if(!reel) return;\n    var idx = currentReelIndex();\n    reelDots().forEach(function(d, i){ d.classList.toggle('on', i === idx); });\n    if(reelPrevBtn) reelPrevBtn.disabled = idx === 0;\n    if(reelNextBtn) reelNextBtn.disabled = idx === vidCards.length - 1;\n    var atEnd = reel.scrollLeft + reel.clientWidth \u003e= reel.scrollWidth - 6;\n    if(reelWrap) reelWrap.classList.toggle('at-end', atEnd);\n  }\n\n  function scrollReelTo(i){\n    if(!reel || !vidCards[i]) return;\n    reel.scrollTo({left: vidCards[i].offsetLeft, behavior: 'smooth'});\n  }\n  function hideSwipeHint(){ if(reelWrap) reelWrap.classList.add('hint-off'); }\n\n  if(reel){\n    var reelTimer;\n    reel.addEventListener('scroll', function(){ clearTimeout(reelTimer); reelTimer = setTimeout(updateReelUI, 40); }, {passive:true});\n    ['touchstart','wheel','mousedown'].forEach(function(evt){ reel.addEventListener(evt, hideSwipeHint, {passive:true, once:true}); });\n  }\n  if(reelPrevBtn) reelPrevBtn.addEventListener('click', function(){ scrollReelTo(Math.max(0, currentReelIndex() - 1)); hideSwipeHint(); });\n  if(reelNextBtn) reelNextBtn.addEventListener('click', function(){ scrollReelTo(Math.min(vidCards.length - 1, currentReelIndex() + 1)); hideSwipeHint(); });\n\n  \/* lazy-load + autoplay (muted) each video once it's in view *\/\n  if('IntersectionObserver' in window \u0026\u0026 vidCards.length){\n    var vidObserver = new IntersectionObserver(function(entries){\n      entries.forEach(function(entry){\n        var video = entry.target.querySelector('video');\n        if(!video) return;\n        if(entry.isIntersecting){\n          if(!video.getAttribute('src') \u0026\u0026 video.dataset.src) video.src = video.dataset.src;\n          video.play().catch(function(){});\n        }else{ video.pause(); }\n      });\n    }, {root: reel, threshold: 0.6});\n    vidCards.forEach(function(card){ vidObserver.observe(card); });\n  }else{\n    vidCards.forEach(function(card){\n      var video = card.querySelector('video');\n      if(video \u0026\u0026 video.dataset.src){ video.src = video.dataset.src; video.play().catch(function(){}); }\n    });\n  }\n\n  \/* tap-for-sound (muting every other video first) *\/\n  vidCards.forEach(function(card){\n    var video = card.querySelector('video');\n    var sndBtn = card.querySelector('.sdp-snd');\n    if(!video || !sndBtn) return;\n    sndBtn.addEventListener('click', function(e){\n      e.stopPropagation();\n      vidCards.forEach(function(other){\n        if(other === card) return;\n        var ov = other.querySelector('video'), ob = other.querySelector('.sdp-snd');\n        if(ov) ov.muted = true;\n        other.classList.remove('is-sound');\n        if(ob) ob.textContent = 'Tap for sound';\n      });\n      var nowMuted = !video.muted;\n      video.muted = nowMuted;\n      card.classList.toggle('is-sound', !nowMuted);\n      sndBtn.textContent = nowMuted ? 'Tap for sound' : 'Sound on';\n      if(!nowMuted) video.play().catch(function(){});\n    });\n  });\n  updateReelUI();\n\n  \/* =====================================================\n     LIGHTBOX\n  ====================================================== *\/\n  var lb = document.getElementById('sdpLb');\n  var lbImg = document.getElementById('sdpLbImg');\n  var lbCount = document.getElementById('sdpLbC');\n  var lbIndex = 0;\n\n  function openLightbox(index){\n    if(!lb || !photoUrls.length) return;\n    lbIndex = ((index % photoUrls.length) + photoUrls.length) % photoUrls.length;\n    lbImg.src = photoUrls[lbIndex];\n    lbCount.textContent = (lbIndex + 1) + ' \/ ' + photoUrls.length;\n    lb.hidden = false;\n    document.body.style.overflow = 'hidden';\n  }\n  function closeLightbox(){\n    lb.hidden = true;\n    lbImg.src = '';\n    document.body.style.overflow = '';\n  }\n  function stepLightbox(dir){ openLightbox(lbIndex + dir); }\n\n  document.getElementById('sdpLbX').addEventListener('click', closeLightbox);\n  document.getElementById('sdpLbP').addEventListener('click', function(){ stepLightbox(-1); });\n  document.getElementById('sdpLbN').addEventListener('click', function(){ stepLightbox(1); });\n  lb.addEventListener('click', function(e){ if(e.target === lb) closeLightbox(); });\n  document.addEventListener('keydown', function(e){\n    if(lb.hidden) return;\n    if(e.key === 'Escape') closeLightbox();\n    if(e.key === 'ArrowLeft') stepLightbox(-1);\n    if(e.key === 'ArrowRight') stepLightbox(1);\n  });\n  (function(){\n    var startX = 0;\n    lb.addEventListener('touchstart', function(e){ startX = e.changedTouches[0].screenX; }, {passive:true});\n    lb.addEventListener('touchend', function(e){\n      var dist = e.changedTouches[0].screenX - startX;\n      if(Math.abs(dist) \u003c 40) return;\n      stepLightbox(dist \u003c 0 ? 1 : -1);\n    }, {passive:true});\n  })();\n\n  Array.prototype.forEach.call(document.querySelectorAll('#sdpWall button[data-photo], .sdp-card-photo[data-photo]'), function(btn){\n    btn.addEventListener('click', function(e){\n      e.stopPropagation();\n      openLightbox(parseInt(btn.dataset.photo, 10) || 0);\n    });\n  });\n\n  \/* =====================================================\n     REVIEW CARD CAROUSEL\n  ====================================================== *\/\n  var reviewCards = Array.prototype.slice.call(track.querySelectorAll('.sdp-card'));\n  var revPrevBtn = document.getElementById('sdpPrev');\n  var revNextBtn = document.getElementById('sdpNext');\n  var revCount = document.getElementById('sdpCount');\n\n  function currentCardIndex(){\n    if(!reviewCards.length) return 0;\n    var center = track.scrollLeft + track.clientWidth \/ 2, best = 0, bestDist = Infinity;\n    reviewCards.forEach(function(card, i){\n      var dist = Math.abs(card.offsetLeft + card.offsetWidth \/ 2 - center);\n      if(dist \u003c bestDist){ bestDist = dist; best = i; }\n    });\n    return best;\n  }\n  function updateCardsUI(){\n    var idx = currentCardIndex();\n    reviewCards.forEach(function(card, i){ card.classList.toggle('is-focus', i === idx); });\n    revCount.textContent = (idx + 1) + ' \/ ' + reviewCards.length;\n    revPrevBtn.disabled = idx === 0;\n    revNextBtn.disabled = idx === reviewCards.length - 1;\n  }\n  function scrollToCard(i){\n    if(!reviewCards.length) return;\n    i = Math.max(0, Math.min(reviewCards.length - 1, i));\n    var card = reviewCards[i];\n    track.scrollTo({left: card.offsetLeft - (track.clientWidth - card.offsetWidth) \/ 2, behavior: 'smooth'});\n  }\n\n  var cardTimer;\n  track.addEventListener('scroll', function(){ clearTimeout(cardTimer); cardTimer = setTimeout(updateCardsUI, 50); }, {passive:true});\n  track.addEventListener('keydown', function(e){\n    if(e.key === 'ArrowLeft'){ e.preventDefault(); scrollToCard(currentCardIndex() - 1); }\n    if(e.key === 'ArrowRight'){ e.preventDefault(); scrollToCard(currentCardIndex() + 1); }\n  });\n  revPrevBtn.addEventListener('click', function(){ scrollToCard(currentCardIndex() - 1); });\n  revNextBtn.addEventListener('click', function(){ scrollToCard(currentCardIndex() + 1); });\n\n  updateCardsUI();\n  window.requestAnimationFrame(function(){ scrollToCard(0); });\n\n  \/* =====================================================\n     \"READ MORE\" CLAMP + TRANSLATE\n  ====================================================== *\/\n  function setupClamp(card){\n    var q = card.querySelector('.sdp-quote');\n    if(!q) return;\n    var old = card.querySelector('.sdp-more');\n    if(old) old.remove();\n    q.classList.add('is-clamped');\n    if(q.scrollHeight \u003e q.clientHeight + 2){\n      var more = document.createElement('button');\n      more.type = 'button';\n      more.className = 'sdp-more';\n      more.textContent = 'Read more';\n      more.addEventListener('click', function(ev){\n        ev.stopPropagation();\n        var clamped = q.classList.toggle('is-clamped');\n        more.textContent = clamped ? 'Read more' : 'Show less';\n      });\n      q.insertAdjacentElement('afterend', more);\n    }else{\n      q.classList.remove('is-clamped');\n    }\n  }\n  function setupAllClamps(){ reviewCards.forEach(setupClamp); }\n  setupAllClamps();\n  window.addEventListener('load', setupAllClamps);\n  if(document.fonts \u0026\u0026 document.fonts.ready) document.fonts.ready.then(setupAllClamps);\n  var resizeTimer;\n  window.addEventListener('resize', function(){ clearTimeout(resizeTimer); resizeTimer = setTimeout(setupAllClamps, 150); });\n\n  track.addEventListener('click', function(e){\n    var btn = e.target.closest('.sdp-tr');\n    if(!btn) return;\n    e.stopPropagation();\n    var card = btn.closest('.sdp-card');\n    var quote = card \u0026\u0026 card.querySelector('.sdp-quote');\n    if(!quote) return;\n    var oldErr = card.querySelector('.sdp-tr-err');\n    if(oldErr) oldErr.remove();\n\n    if(btn.dataset.state === 'done'){\n      quote.textContent = quote.dataset.orig;\n      btn.dataset.state = '';\n      btn.textContent = '🌐 Translate to English';\n      setupClamp(card);\n      return;\n    }\n    if(!quote.dataset.orig) quote.dataset.orig = quote.textContent;\n    var original = quote.dataset.orig.replace(\/^“\/, '').replace(\/”$\/, '');\n\n    btn.disabled = true;\n    btn.textContent = 'Translating…';\n\n    fetch('https:\/\/translate.googleapis.com\/translate_a\/single?client=gtx\u0026sl=auto\u0026tl=en\u0026dt=t\u0026q=' + encodeURIComponent(original))\n      .then(function(res){ if(!res.ok) throw new Error('bad'); return res.json(); })\n      .then(function(json){\n        var out = json[0].map(function(seg){ return seg[0]; }).join('');\n        quote.textContent = '“' + out + '”';\n        btn.dataset.state = 'done';\n        btn.textContent = '↺ See original';\n        setupClamp(card);\n      })\n      .catch(function(){\n        btn.textContent = '🌐 Translate to English';\n        var err = document.createElement('span');\n        err.className = 'sdp-tr-err';\n        err.textContent = 'Translation is unavailable right now. Please try again.';\n        btn.insertAdjacentElement('afterend', err);\n      })\n      .then(function(){ btn.disabled = false; });\n  });\n})();\n\u003c\/script\u003e","brand":"Sara Boutique","offers":[{"title":"Pink Christmas Earrings","offer_id":47685207326892,"sku":"CJLX191285201AZ","price":35.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0777\/2507\/3580\/files\/38dc558e-906a-47d8-9ecc-ab12e8624650.jpg?v=1792679597","url":"https:\/\/saraboutiquefashion.com\/products\/christmas-tree-earrings-for-women-sparkling-zircon-dangle","provider":"Sara Boutique","version":"1.0","type":"link"}