{"product_id":"magnetne-kocke-kreativni-edukativni-set-100-delova","title":"Magnetne Kocke – Kreativni Edukativni Set (100 delova)","description":"\u003cstyle\u003e\n  .rm-nylonke{\n    font-family: system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;\n    line-height: 1.6;\n    color: #111827;\n    background: #ffffff;\n    border: 1px solid rgba(17,24,39,.10);\n    border-radius: 14px;\n    padding: 16px;\n    max-width: 900px;\n    margin: 0 auto;\n  }\n  .rm-nylonke h3{\n    margin: 0 0 8px 0;\n    font-size: 18px;\n    line-height: 1.25;\n    font-weight: 900;\n  }\n\n  .rm-topline{\n    display:flex;\n    flex-wrap:wrap;\n    gap:10px;\n    align-items:center;\n    margin: 8px 0 12px 0;\n  }\n  .rm-rating{\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    padding: 8px 12px;\n    border-radius: 999px;\n    background:#f9fafb;\n    border: 1px solid rgba(17,24,39,.10);\n    font-weight: 800;\n    font-size: 13px;\n  }\n  .rm-rating small{\n    font-weight: 700;\n    color: rgba(17,24,39,.72);\n  }\n  .rm-stars{ letter-spacing:.6px; color: #f59e0b; }\n\n  .rm-live{\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    padding: 8px 12px;\n    border-radius: 999px;\n    background:#fff7ed;\n    border: 1px solid rgba(124,45,18,.18);\n    font-weight: 800;\n    font-size: 13px;\n  }\n  .rm-dot{\n    width:8px;height:8px;border-radius:50%;\n    background:#f97316;\n    box-shadow:0 0 0 3px rgba(249,115,22,.18);\n  }\n\n  \/* ===== SINGLE PRODUCT CARD ===== *\/\n  .rm-product-card{\n    margin: 10px 0 14px 0;\n    border: 1px solid #f97316;\n    border-radius: 14px;\n    background:#fff7ed;\n    overflow:hidden;\n    padding: 12px;\n  }\n  \n  .rm-bundle-top{\n    display:flex;\n    align-items:flex-start;\n    justify-content:space-between;\n    gap: 10px;\n  }\n  .rm-bundle-left{\n    display:flex;\n    gap: 10px;\n    align-items:flex-start;\n    min-width: 0;\n  }\n  .rm-bundle-thumb{\n    width: 56px;\n    height: 56px;\n    border-radius: 10px;\n    background:#fff;\n    border:1px solid rgba(17,24,39,.10);\n    display:flex;\n    align-items:center;\n    justify-content:center;\n    overflow:hidden;\n    flex: 0 0 auto;\n  }\n  .rm-bundle-thumb img{\n    width:100%;\n    height:100%;\n    object-fit:cover;\n    display:block;\n  }\n  .rm-bundle-title{\n    font-weight: 900;\n    line-height: 1.15;\n    margin: 0;\n    font-size: 16px;\n  }\n  .rm-badges{\n    margin-top: 6px;\n    display:flex;\n    gap:6px;\n    flex-wrap:wrap;\n  }\n  .rm-badge{\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    padding: 4px 8px;\n    border-radius: 8px;\n    font-weight: 900;\n    font-size: 11px;\n    letter-spacing:.3px;\n    text-transform:uppercase;\n    border:1px solid rgba(17,24,39,.10);\n    background:#111827;\n    color:#fff;\n  }\n  .rm-bundle-prices{\n    text-align:right;\n    flex: 0 0 auto;\n    min-width: 100px;\n  }\n  .rm-compare{\n    display:block;\n    color: rgba(17,24,39,.55);\n    text-decoration: line-through;\n    font-weight: 800;\n    font-size: 13px;\n    min-height: 16px;\n  }\n  .rm-price{\n    display:block;\n    font-weight: 950;\n    font-size: 19px;\n    line-height: 1.1;\n  }\n\n  \/* ===== QUANTITY SELECTOR (+ \/ -) ===== *\/\n  .rm-qty-row{\n    margin-top: 14px;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    background: #fff;\n    padding: 10px 12px;\n    border-radius: 10px;\n    border: 1px solid rgba(17,24,39,.10);\n  }\n  .rm-qty-row label{\n    font-weight: 900;\n    font-size: 13px;\n    color: rgba(17,24,39,.85);\n  }\n  .rm-qty-wrapper{\n    display: flex;\n    align-items: center;\n    border: 1px solid rgba(17,24,39,.18);\n    border-radius: 8px;\n    height: 36px;\n    background: #fff;\n    overflow: hidden;\n  }\n  .rm-qty-wrapper:focus-within {\n    border-color: #f97316;\n    box-shadow: 0 0 0 2px rgba(249,115,22,.12);\n  }\n  .rm-qty-btn{\n    background: #f9fafb;\n    border: none;\n    width: 36px;\n    height: 100%;\n    font-size: 18px;\n    font-weight: 800;\n    color: #111827;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: background 0.15s ease;\n  }\n  .rm-qty-btn:hover{ background: #f3f4f6; }\n  .rm-qty-btn:active{ background: #e5e7eb; }\n  .rm-qty-input{\n    width: 44px;\n    height: 100%;\n    border: none;\n    border-left: 1px solid rgba(17,24,39,.10);\n    border-right: 1px solid rgba(17,24,39,.10);\n    text-align: center;\n    font-weight: 800;\n    font-size: 15px;\n    color: #111827;\n    -moz-appearance: textfield;\n  }\n  .rm-qty-input::-webkit-outer-spin-button,\n  .rm-qty-input::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n  }\n  .rm-qty-input:focus { outline: none; }\n\n  .rm-buybar{\n    margin-top: 10px;\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap: 10px;\n    flex-wrap:wrap;\n    padding: 10px 12px;\n    border-radius: 14px;\n    background:#fff;\n    border: 1px solid rgba(17,24,39,.10);\n  }\n  .rm-total{\n    display:flex;\n    flex-direction:column;\n    gap:2px;\n    min-width: 160px;\n  }\n  .rm-total small{\n    color: rgba(17,24,39,.65);\n    font-weight: 800;\n    font-size: 12px;\n  }\n  .rm-total strong{\n    font-weight: 950;\n    font-size: 18px;\n  }\n\n  .rm-add{\n    border:0;\n    cursor:pointer;\n    border-radius: 12px;\n    padding: 12px 16px;\n    background:#f97316;\n    color:#fff;\n    font-weight: 950;\n    font-size: 14px;\n    display:inline-flex;\n    align-items:center;\n    gap: 10px;\n    transition: transform .12s ease, opacity .12s ease;\n    white-space:nowrap;\n  }\n  .rm-add:hover{ opacity:.92; }\n  .rm-add:active{ transform: translateY(1px); }\n  .rm-add[disabled]{ opacity:.55; cursor:not-allowed; transform:none; }\n\n  .rm-note{\n    margin-top: 8px;\n    color: rgba(17,24,39,.65);\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  \/* Reviews *\/\n  .rm-reviews{\n    margin: 10px 0 14px 0;\n    border-radius: 14px;\n    background:#f9fafb;\n    border: 1px solid rgba(17,24,39,.10);\n    padding: 10px 12px;\n    overflow:hidden;\n  }\n  .rm-track{\n    display:flex;\n    transition: transform .45s ease;\n    will-change: transform;\n  }\n  .rm-review{\n    min-width:100%;\n    display:flex;\n    gap:10px;\n    align-items:flex-start;\n  }\n  .rm-avatar{\n    width:34px;height:34px;border-radius:10px;\n    background:#111827;color:#fff;\n    display:flex;align-items:center;justify-content:center;\n    font-weight:900;\n    font-size: 14px;\n    flex: 0 0 auto;\n  }\n  .rm-mini-stars{\n    font-size:12px;\n    letter-spacing:.4px;\n    color: #f59e0b;\n    margin-top: 2px;\n  }\n  .rm-reviews p{\n    margin: 0;\n    color: rgba(17,24,39,.78);\n    font-size: 13px;\n    line-height: 1.35;\n  }\n  .rm-reviews b{\n    display:block;\n    font-size: 13px;\n    line-height: 1.15;\n    margin-bottom: 2px;\n  }\n\n  \/* Content \/ Read more *\/\n  .rm-content{\n    position:relative;\n    overflow:hidden;\n    max-height:260px;\n    transition:max-height .35s ease;\n  }\n  .rm-nylonke[data-collapsed=\"false\"] .rm-content{ max-height:9999px; }\n  .rm-fade{\n    position:absolute;\n    left:0;right:0;bottom:0;\n    height:70px;\n    background:linear-gradient(to bottom,rgba(255,255,255,0),#fff);\n    pointer-events:none;\n  }\n  .rm-nylonke[data-collapsed=\"false\"] .rm-fade{ display:none; }\n\n  .rm-content p{ margin: 10px 0; }\n  .rm-content ul{ margin: 10px 0 0 18px; padding-left:0; list-style-type:none; }\n  .rm-content li{ margin: 6px 0; display: flex; align-items: flex-start; gap: 8px;}\n  .rm-content li::before { content: \"✔\"; color: #f97316; font-weight: bold; }\n\n  .rm-btn-row{ margin-top:12px; display:flex; }\n  .rm-toggle{\n    border:0;\n    cursor:pointer;\n    border-radius:999px;\n    padding:10px 16px;\n    background:#111827;\n    color:#fff;\n    font-weight:800;\n    font-size: 14px;\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    transition: transform .12s ease, opacity .12s ease;\n  }\n  .rm-toggle:hover{ opacity:.92; }\n  .rm-toggle:active{ transform: translateY(1px); }\n\n  @media (max-width: 480px){\n    .rm-nylonke{ padding: 14px; }\n    .rm-content{ max-height: 300px; }\n    .rm-bundle-prices{ min-width: 90px; }\n    .rm-price{ font-size: 17px; }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"rm-nylonke\" data-collapsed=\"true\"\u003e\n\n  \u003ch3\u003e🧳🧲 Magnetne Kocke u Koferu – Kreativni Edukativni Set (100 delova)\u003c\/h3\u003e\n\n  \u003cdiv class=\"rm-product-card\" aria-label=\"Proizvod\"\u003e\n    \u003cdiv class=\"rm-bundle-top\"\u003e\n      \u003cdiv class=\"rm-bundle-left\"\u003e\n        \u003cdiv class=\"rm-bundle-thumb\" aria-hidden=\"true\"\u003e\n          \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0974\/4737\/9264\/files\/MagnetneKocke_KreativniEdukativniSet_100delova_2.webp?v=1776882785\" alt=\"Magnetne kocke u koferu\" onerror=\"this.style.display='none'\"\u003e\n        \u003c\/div\u003e\n        \u003cdiv style=\"min-width:0\"\u003e\n          \u003cp class=\"rm-bundle-title\"\u003eSet 100 delova u koferu\u003c\/p\u003e\n          \u003cdiv class=\"rm-badges\"\u003e\n            \u003cspan class=\"rm-badge\"\u003eHIT PROIZVOD\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"rm-bundle-prices\"\u003e\n        \u003cspan class=\"rm-compare\" id=\"rmUnitOld\"\u003eRSD 5,100.00\u003c\/span\u003e\n        \u003cspan class=\"rm-price\" id=\"rmUnitNew\"\u003eRSD 4,500.00\u003c\/span\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"rm-qty-row\"\u003e\n      \u003clabel for=\"rmQtyInput\"\u003eIzaberite količinu:\u003c\/label\u003e\n      \u003cdiv class=\"rm-qty-wrapper\"\u003e\n        \u003cbutton type=\"button\" class=\"rm-qty-btn\" id=\"rmQtyMinus\" aria-label=\"Smanji količinu\"\u003e−\u003c\/button\u003e\n        \u003cinput type=\"number\" id=\"rmQtyInput\" class=\"rm-qty-input\" value=\"1\" min=\"1\" step=\"1\" aria-label=\"Količina\"\u003e\n        \u003cbutton type=\"button\" class=\"rm-qty-btn\" id=\"rmQtyPlus\" aria-label=\"Povećaj količinu\"\u003e+\u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rm-buybar\" aria-label=\"Ukupno i kupovina\"\u003e\n    \u003cdiv class=\"rm-total\"\u003e\n      \u003csmall\u003eUkupno za plaćanje:\u003c\/small\u003e\n      \u003cstrong class=\"rm-grand\"\u003eRSD 4,500.00\u003c\/strong\u003e\n    \u003c\/div\u003e\n\n    \u003cbutton class=\"rm-add\" type=\"button\"\u003e\n      \u003cspan aria-hidden=\"true\"\u003e🛒\u003c\/span\u003e\n      \u003cspan\u003eDodaj u korpu\u003c\/span\u003e\n    \u003c\/button\u003e\n\n    \u003cdiv class=\"rm-note\"\u003e\n      Napomena: Dostava i osiguranje se računaju u korpi\/checkout-u.\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rm-topline\" aria-label=\"Ocene i trenutno gledanje\"\u003e\n    \u003cdiv class=\"rm-rating\" aria-label=\"Ocena proizvoda\"\u003e\n      \u003cspan class=\"rm-stars\" aria-hidden=\"true\"\u003e★★★★★\u003c\/span\u003e\n      \u003cspan\u003e4.9 \/ 5.0\u003c\/span\u003e\n      \u003csmall\u003e(214 ocena)\u003c\/small\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"rm-live\" aria-label=\"Trenutno gleda\"\u003e\n      \u003cspan class=\"rm-dot\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n      \u003cspan\u003eOvaj proizvod gleda\u003c\/span\u003e\n      \u003cstrong class=\"rm-viewers\" style=\"margin-left:2px;\"\u003e38\u003c\/strong\u003e\n      \u003cspan\u003eljudi\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rm-reviews\" aria-label=\"Recenzije kupaca\"\u003e\n    \u003cdiv class=\"rm-track\"\u003e\n      \u003cdiv class=\"rm-review\"\u003e\n        \u003cdiv class=\"rm-avatar\"\u003eM\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cb\u003eMaja\u003c\/b\u003e\n          \u003cdiv class=\"rm-mini-stars\" aria-hidden=\"true\"\u003e★★★★★\u003c\/div\u003e\n          \u003cp\u003eKofer je spas! Konačno ne gazim po kockama po celoj kući, a sin se igra satima bez prestanka.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"rm-review\"\u003e\n        \u003cdiv class=\"rm-avatar\"\u003eD\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cb\u003eDejan\u003c\/b\u003e\n          \u003cdiv class=\"rm-mini-stars\" aria-hidden=\"true\"\u003e★★★★★\u003c\/div\u003e\n          \u003cp\u003eKvalitetna plastika i jaki magneti. Set od 100 delova je sasvim dovoljan za ozbiljne kule i rakete.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"rm-review\"\u003e\n        \u003cdiv class=\"rm-avatar\"\u003eI\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cb\u003eIvana\u003c\/b\u003e\n          \u003cdiv class=\"rm-mini-stars\" aria-hidden=\"true\"\u003e★★★★☆\u003c\/div\u003e\n          \u003cp\u003eSavršen poklon. Nosili smo ih na more i kod babe, jer je koferčić neverovatno praktičan.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"rm-review\"\u003e\n        \u003cdiv class=\"rm-avatar\"\u003eJ\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cb\u003eJovan\u003c\/b\u003e\n          \u003cdiv class=\"rm-mini-stars\" aria-hidden=\"true\"\u003e★★★★★\u003c\/div\u003e\n          \u003cp\u003eVredi svaki dinar. Deca su zaboravila na telefone otkad imamo ove kocke u kući.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"rm-review\"\u003e\n        \u003cdiv class=\"rm-avatar\"\u003eA\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cb\u003eAna\u003c\/b\u003e\n          \u003cdiv class=\"rm-mini-stars\" aria-hidden=\"true\"\u003e★★★★★\u003c\/div\u003e\n          \u003cp\u003eLako se slažu, dete od 3 godine već samo pravi kućice. Sve preporuke za ovaj set!\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rm-content\" id=\"rmText\"\u003e\n    \u003cspan class=\"rm-fade\" aria-hidden=\"true\"\u003e\u003c\/span\u003e\n\n    \u003cp\u003e\u003cb\u003eIgračka koju dete ne ostavlja posle 5 minuta.\u003c\/b\u003e\u003c\/p\u003e\n    \u003cp\u003e\n      Ovaj set magnetnih kocki dolazi u praktičnom koferu i pretvara svaku igru u kreativnu avanturu – gde dete samo gradi, istražuje i razvija sopstvene ideje bez ograničenja.\u003cbr\u003e\u003cbr\u003e\n      Od jednostavnih oblika do velikih konstrukcija poput kuća, kula ili čak raketa – sve je moguće.\n    \u003c\/p\u003e\n\n    \u003cul\u003e\n      \u003cli\u003e100 delova za maksimalnu kreativnost\u003c\/li\u003e\n      \u003cli\u003eMagnetno povezivanje – lako slaganje bez frustracije\u003c\/li\u003e\n      \u003cli\u003ePraktičan kofer – sve na jednom mestu, lako za nošenje\u003c\/li\u003e\n      \u003cli\u003eRazvoj logike, motorike i mašte\u003c\/li\u003e\n      \u003cli\u003eBezbedni i kvalitetni materijali\u003c\/li\u003e\n    \u003c\/ul\u003e\n\n    \u003cp\u003e\u003cb\u003eOno što ovaj set izdvaja\u003c\/b\u003e\u003cbr\u003e\n      Kofer nije samo pakovanje – već organizacija, red i mobilnost.\u003cbr\u003e\n      Bez razbacanih delova po kući. Bez gubljenja.\n    \u003c\/p\u003e\n\n    \u003cp\u003e\u003cb\u003eSavršeno za\u003c\/b\u003e\u003c\/p\u003e\n    \u003cul\u003e\n      \u003cli\u003eigru kod kuće\u003c\/li\u003e\n      \u003cli\u003eputovanja\u003c\/li\u003e\n      \u003cli\u003evrtić ili poklon\u003c\/li\u003e\n    \u003c\/ul\u003e\n\n    \u003cp\u003e\u003cb\u003eDok se igra, dete\u003c\/b\u003e\u003c\/p\u003e\n    \u003cul\u003e\n      \u003cli\u003erazvija kreativno razmišljanje\u003c\/li\u003e\n      \u003cli\u003euči kako funkcionišu oblici i strukture\u003c\/li\u003e\n      \u003cli\u003eunapređuje koncentraciju\u003c\/li\u003e\n      \u003cli\u003egradi samopouzdanje kroz stvaranje\u003c\/li\u003e\n    \u003c\/ul\u003e\n\n    \u003cp\u003e\n      Ovo nije još jedna igračka.\u003cbr\u003e\n      Ovo je set koji raste sa detetom – od prvih jednostavnih oblika do složenih konstrukcija.\u003cbr\u003e\u003cbr\u003e\n      \u003cb\u003eUzrast: 3+\u003c\/b\u003e\n    \u003c\/p\u003e\n    \u003cp\u003e\n      Ako želiš poklon koji je i zabavan i koristan – ovo je pravi izbor.\u003cbr\u003e\n      \u003cb\u003ePoruči sada i daj detetu igru koja ima smisla.\u003c\/b\u003e\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"rm-btn-row\"\u003e\n    \u003cbutton class=\"rm-toggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"rmText\"\u003e\n      \u003cspan class=\"rm-icon\" aria-hidden=\"true\"\u003e▼\u003c\/span\u003e\n      \u003cspan class=\"rm-label\"\u003ePrikaži više\u003c\/span\u003e\n    \u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function(){\n      const root = document.currentScript.closest('.rm-nylonke');\n      if(!root) return;\n\n      \/* =========================\n         PODACI O PROIZVODU\n         ========================= *\/\n      const VARIANT_ID = 51873085948224;\n      const PRICE_NEW = 4500;\n      const PRICE_OLD = 5100;\n\n      const money = (n) =\u003e {\n        const x = Number(n || 0);\n        const s = x.toFixed(2);\n        const parts = s.split('.');\n        parts[0] = parts[0].replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ',');\n        return `RSD ${parts.join('.')}`;\n      };\n\n      \/* ====== Cena po kolicini (+\/- logika) ====== *\/\n      const qtyInput = root.querySelector('#rmQtyInput');\n      const btnMinus = root.querySelector('#rmQtyMinus');\n      const btnPlus = root.querySelector('#rmQtyPlus');\n      \n      const grandEl = root.querySelector('.rm-grand');\n      const unitOldEl = root.querySelector('#rmUnitOld');\n      const unitNewEl = root.querySelector('#rmUnitNew');\n\n      \/\/ Postavljamo jedinične cene u gornjem redu (uvek prikazuju cenu za 1 komad)\n      if(unitOldEl) unitOldEl.textContent = money(PRICE_OLD);\n      if(unitNewEl) unitNewEl.textContent = money(PRICE_NEW);\n\n      function getValidQty() {\n        let val = parseInt(qtyInput.value, 10);\n        if (isNaN(val) || val \u003c 1) {\n          val = 1;\n        }\n        return val;\n      }\n\n      function recalcTotal(){\n        const qty = getValidQty();\n        const total = PRICE_NEW * qty;\n        grandEl.textContent = money(total);\n      }\n\n      btnMinus.addEventListener('click', () =\u003e {\n        let qty = getValidQty();\n        if (qty \u003e 1) {\n          qtyInput.value = qty - 1;\n          recalcTotal();\n        }\n      });\n\n      btnPlus.addEventListener('click', () =\u003e {\n        let qty = getValidQty();\n        qtyInput.value = qty + 1;\n        recalcTotal();\n      });\n\n      qtyInput.addEventListener('change', () =\u003e {\n        qtyInput.value = getValidQty(); \/\/ Vraća na 1 ako korisnik unese slova ili minus\n        recalcTotal();\n      });\n\n      recalcTotal();\n\n      \/* ====== Add to cart (Shopify) ====== *\/\n      const addBtn = root.querySelector('.rm-add');\n\n      async function addToCartShopify(items){\n        const res = await fetch('\/cart\/add.js', {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\/json', 'Accept': 'application\/json' },\n          body: JSON.stringify({ items })\n        });\n        if(!res.ok){\n          const txt = await res.text().catch(()=\u003e '');\n          throw new Error(txt || 'Greška pri dodavanju u korpu.');\n        }\n        return res.json();\n      }\n\n      addBtn.addEventListener('click', async () =\u003e {\n        const qty = getValidQty();\n        const items = [{ id: VARIANT_ID, quantity: qty }];\n\n        const old = addBtn.innerHTML;\n        addBtn.disabled = true;\n        addBtn.innerHTML = `\u003cspan aria-hidden=\"true\"\u003e⏳\u003c\/span\u003e\u003cspan\u003eDodajem…\u003c\/span\u003e`;\n\n        try{\n          await addToCartShopify(items);\n          window.location.href = '\/cart';\n        }catch(err){\n          console.error(err);\n          alert('Nešto nije prošlo kako treba. Proveri da li tema dozvoljava \/cart\/add.js.');\n        }finally{\n          addBtn.disabled = false;\n          addBtn.innerHTML = old;\n        }\n      });\n\n      \/* ====== Read more ====== *\/\n      const btn = root.querySelector('.rm-toggle');\n      const label = root.querySelector('.rm-label');\n      const icon = root.querySelector('.rm-icon');\n\n      btn.addEventListener('click', function(){\n        const collapsed = root.getAttribute('data-collapsed') !== 'false';\n        root.setAttribute('data-collapsed', collapsed ? 'false' : 'true');\n        btn.setAttribute('aria-expanded', collapsed ? 'true' : 'false');\n        label.textContent = collapsed ? 'Prikaži manje' : 'Prikaži više';\n        icon.textContent = collapsed ? '▲' : '▼';\n      });\n\n      \/* ====== Reviews slider + pause on hover ====== *\/\n      const track = root.querySelector('.rm-track');\n      const itemsR = Array.from(root.querySelectorAll('.rm-review'));\n      const box = root.querySelector('.rm-reviews');\n\n      let idx = 0, sliderTimer = null;\n\n      function go(i){\n        idx = (i + itemsR.length) % itemsR.length;\n        track.style.transform = `translateX(-${idx * 100}%)`;\n      }\n      function start(){\n        stop();\n        sliderTimer = setInterval(() =\u003e go(idx + 1), 3200);\n      }\n      function stop(){\n        if(sliderTimer) clearInterval(sliderTimer);\n        sliderTimer = null;\n      }\n\n      box.addEventListener('mouseenter', stop);\n      box.addEventListener('mouseleave', start);\n\n      go(0);\n      start();\n\n      \/* ====== Live viewers (16 do 57, variranje +\/- 3 do 4) ====== *\/\n      const viewersEl = root.querySelector('.rm-viewers');\n      function bumpViewers(){\n        let cur = parseInt(viewersEl.textContent || '38', 10);\n        \n        const step = Math.random() \u003e 0.5 ? 3 : 4;\n        const dir = Math.random() \u003e 0.5 ? 1 : -1;\n        \n        let next = cur + (step * dir);\n        \n        if(next \u003c 16) next = 16 + step;\n        if(next \u003e 57) next = 57 - step;\n        \n        viewersEl.textContent = String(next);\n      }\n      setInterval(bumpViewers, 8500);\n    })();\n  \u003c\/script\u003e\n\n\u003c\/div\u003e","brand":"Brza korpa","offers":[{"title":"100","offer_id":51873085948224,"sku":null,"price":4500.0,"currency_code":"RSD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0974\/4737\/9264\/files\/MagnetneKocke_KreativniEdukativniSet_100delova_3.webp?v=1776882785","url":"https:\/\/brzakorpa.rs\/products\/magnetne-kocke-kreativni-edukativni-set-100-delova","provider":"Brza korpa","version":"1.0","type":"link"}