{"title":"Home page","description":null,"products":[{"product_id":"masajeador-anticelulitis","title":"Masajeador anticelulitis con calor y succión","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\u003eBellavora – Masajeador Countdown\u003c\/title\u003e\n\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow+Condensed:wght@700;900\u0026amp;family=Noto+Sans+KR:wght@600;700;900\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cstyle\u003e\n  * { margin:0; padding:0; box-sizing:border-box; }\n  body { background:#fff; font-family:'Noto Sans KR',sans-serif; }\n\n  .wrap {\n    width: 100%;\n    overflow: hidden;\n  }\n\n  \/* ── VIEWERS BAR ── *\/\n  .viewers-bar {\n    background: #FF546E;\n    padding: 9px 12px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    white-space: nowrap;\n    overflow: hidden;\n  }\n  .dot-live {\n    width: 10px;\n    height: 10px;\n    min-width: 10px;\n    border-radius: 50%;\n    background: #4dff6e;\n    box-shadow: 0 0 0 3px rgba(77,255,110,.3);\n    flex-shrink: 0;\n    display: block;\n    animation: livePulse 1s ease-in-out infinite;\n  }\n  @keyframes livePulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.5;transform:scale(.75)} }\n  .viewers-bar p {\n    font-size: 13px;\n    font-weight: 700;\n    color: #fff;\n    white-space: nowrap;\n  }\n  .viewers-bar p span { font-weight: 900; }\n\n  \/* ── STOCK BAR ── *\/\n  .stock-area {\n    background: #fff;\n    padding: 14px 16px 12px;\n    border-bottom: 1px solid #ffe0e5;\n  }\n  .stock-label {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 9px;\n    gap: 8px;\n  }\n  .stock-left {\n    font-size: 13px;\n    color: #555;\n    font-weight: 700;\n    white-space: nowrap;\n    display: flex;\n    align-items: center;\n    gap: 5px;\n  }\n  .stock-right {\n    font-size: 13px;\n    color: #FF546E;\n    font-weight: 900;\n    white-space: nowrap;\n  }\n\n  \/* ── COUNTDOWN ── *\/\n  .countdown-core {\n    background: linear-gradient(180deg, #fff 0%, #fff0f3 100%);\n    padding: 16px 16px 20px;\n  }\n  .expires-label {\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1.1px;\n    color: #FF546E;\n    text-transform: uppercase;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    margin-bottom: 14px;\n  }\n  .expires-label::before,\n  .expires-label::after {\n    content:''; flex:1; height:1px; max-width:70px;\n    background: linear-gradient(90deg, transparent, #FF546E);\n  }\n  .expires-label::after { background: linear-gradient(90deg, #FF546E, transparent); }\n\n  .clock-row {\n    display: flex;\n    justify-content: center;\n    align-items: flex-start;\n    gap: 8px;\n  }\n  .clock-unit {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 6px;\n    flex: 1;\n    max-width: 90px;\n  }\n  .digit-box {\n    background: #FF546E;\n    color: #fff;\n    font-family: 'Barlow Condensed', sans-serif;\n    font-size: clamp(32px, 9vw, 44px);\n    font-weight: 900;\n    width: 100%;\n    height: clamp(62px, 18vw, 82px);\n    border-radius: 12px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    letter-spacing: -1px;\n    box-shadow: 0 5px 16px rgba(240,90,126,.35), inset 0 1px 0 rgba(255,255,255,.2);\n    position: relative;\n    overflow: hidden;\n  }\n  .digit-box::after {\n    content:''; position:absolute; top:0; left:0; right:0; height:50%;\n    background:rgba(255,255,255,.10); border-radius:12px 12px 0 0;\n  }\n  .digit-box.flip { animation:flip .3s ease; }\n  @keyframes flip {\n    0%{transform:rotateX(0)} 50%{transform:rotateX(-80deg)} 100%{transform:rotateX(0)}\n  }\n  .unit-label {\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    color: #FF546E;\n    text-transform: uppercase;\n  }\n  .colon {\n    font-family: 'Barlow Condensed', sans-serif;\n    font-size: clamp(32px, 9vw, 44px);\n    font-weight: 900;\n    color: #FF546E;\n    margin-top: 12px;\n    padding: 0 2px;\n    animation: blink 1s step-start infinite;\n    user-select: none;\n    flex-shrink: 0;\n  }\n  @keyframes blink { 50%{opacity:0} }\n\u003c\/style\u003e\n\n\n\n\u003cdiv class=\"wrap\"\u003e\n\n  \u003c!-- Live viewers --\u003e\n  \u003cdiv class=\"viewers-bar\"\u003e\n    \u003cdiv style=\"width:10px!important;height:10px!important;min-width:10px!important;border-radius:50%!important;background:#4dff6e!important;box-shadow:0 0 0 3px rgba(77,255,110,.35)!important;flex-shrink:0!important;display:block!important;animation:livePulse 1s ease-in-out infinite;\"\u003e\u003c\/div\u003e\n    \u003cp\u003e\u003cspan id=\"viewerCount\"\u003e63\u003c\/span\u003e personas viendo ahora\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Stock bar --\u003e\n  \u003cdiv class=\"stock-area\"\u003e\n    \u003cdiv class=\"stock-label\"\u003e\n      \u003cspan class=\"stock-left\"\u003e🛒 Stock disponible\u003c\/span\u003e\n      \u003cspan class=\"stock-right\"\u003e⚠️ Solo \u003cspan id=\"stockNum\"\u003e5\u003c\/span\u003e restantes\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv style=\"background:#ffd0d8!important;border-radius:99px;height:13px;overflow:hidden;width:100%;display:block;\"\u003e\n      \u003cdiv style=\"height:13px!important;width:82%!important;display:block!important;border-radius:99px!important;background:linear-gradient(90deg,#FF546E 0%,#ff8c6e 100%)!important;\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Countdown --\u003e\n  \u003cdiv class=\"countdown-core\"\u003e\n    \u003cdiv class=\"expires-label\"\u003e⏰ La oferta expira en\u003c\/div\u003e\n    \u003cdiv class=\"clock-row\"\u003e\n      \u003cdiv class=\"clock-unit\"\u003e\n        \u003cdiv class=\"digit-box\" id=\"hours\"\u003e02\u003c\/div\u003e\n        \u003cdiv class=\"unit-label\"\u003eHoras\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"colon\"\u003e:\u003c\/div\u003e\n      \u003cdiv class=\"clock-unit\"\u003e\n        \u003cdiv class=\"digit-box\" id=\"minutes\"\u003e59\u003c\/div\u003e\n        \u003cdiv class=\"unit-label\"\u003eMin\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"colon\"\u003e:\u003c\/div\u003e\n      \u003cdiv class=\"clock-unit\"\u003e\n        \u003cdiv class=\"digit-box\" id=\"seconds\"\u003e59\u003c\/div\u003e\n        \u003cdiv class=\"unit-label\"\u003eSeg\u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n  const DURATION_MS = (2 * 3600 + 59 * 60 + 59) * 1000;\n  const KEY = 'bellavora_masajeador_dl';\n\n  function getDeadline() {\n    let stored = localStorage.getItem(KEY);\n    if (!stored || parseInt(stored,10) \u003c= Date.now()) {\n      const nd = Date.now() + DURATION_MS;\n      localStorage.setItem(KEY, nd);\n      return nd;\n    }\n    return parseInt(stored, 10);\n  }\n\n  let deadline = getDeadline();\n  function pad(n){ return String(n).padStart(2,'0'); }\n\n  function tick() {\n    let diff = Math.floor((deadline - Date.now()) \/ 1000);\n    if (diff \u003c= 0) {\n      deadline = Date.now() + DURATION_MS;\n      localStorage.setItem(KEY, deadline);\n      diff = Math.floor(DURATION_MS \/ 1000);\n    }\n    const h = Math.floor(diff \/ 3600); diff -= h * 3600;\n    const m = Math.floor(diff \/ 60);\n    const s = diff % 60;\n    ['hours','minutes','seconds'].forEach((id,i) =\u003e {\n      const val = [h,m,s][i];\n      const el = document.getElementById(id);\n      const fmt = pad(val);\n      if (el.textContent !== fmt) {\n        el.classList.remove('flip');\n        void el.offsetWidth;\n        el.classList.add('flip');\n        el.textContent = fmt;\n      }\n    });\n  }\n  tick(); setInterval(tick, 1000);\n\n  \/\/ Viewer drift\n  const vcEl = document.getElementById('viewerCount');\n  let viewers = 63;\n  setInterval(() =\u003e {\n    viewers = Math.min(89, Math.max(41, viewers + (Math.random()\u003c.5?1:-1)));\n    vcEl.textContent = viewers;\n  }, 3500);\n\n  \/\/ Stock slow decrease\n  const snEl = document.getElementById('stockNum');\n  let stock = 5;\n  setInterval(() =\u003e {\n    if (stock \u003e 1 \u0026\u0026 Math.random() \u003c .12) { stock--; snEl.textContent = stock; }\n  }, 11000);\n\u003c\/script\u003e\n\n\u003c\/body\u003e","brand":"bellavora","offers":[{"title":"Default Title","offer_id":46109501358276,"sku":"ELCHNSLLT","price":54.99,"currency_code":"PAB","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0744\/6242\/9380\/files\/Gemini_Generated_Image_4dq7a24dq7a24dq7.png?v=1777749324"}],"url":"https:\/\/bellavora.store\/collections\/frontpage.oembed","provider":"My Store 3","version":"1.0","type":"link"}