{"product_id":"crochet-flower-bag","title":"Crochet Flower Bag","description":"\u003c!-- ============================================================\n     CROCHET FLOWER BAG — Add this snippet to your Shopify product\n     description (below your real Buy Now \/ Add to Cart button).\n     All \"Shop Now\" buttons below scroll back UP to that real button\n     instead of linking anywhere else.\n     ============================================================ --\u003e\n\u003cdiv class=\"ccb-section\"\u003e\n\u003cstyle\u003e\n  .ccb-section{\n    --ccb-ink:#2c2418;\n    --ccb-bg:#f1eee5;\n    --ccb-bg-soft:#e8e2d3;\n    --ccb-ink-dim:#7a6c54;\n    --ccb-purple:#9b046f;\n    --ccb-purple-dark:#7a0357;\n    --ccb-purple-tint:#f5dcec;\n    --ccb-gold:#b8923f;\n    --ccb-line:#e6dabf;\n    --ccb-radius:10px;\n    --ccb-shadow: 0 2px 12px rgba(44,36,24,0.08);\n    --ccb-shadow-lg: 0 14px 32px rgba(44,36,24,0.16);\n    font-family: 'Inter', Arial, sans-serif;\n    color: var(--ccb-ink);\n    background: var(--ccb-bg);\n    max-width: 1080px;\n    margin: 32px auto;\n    padding: 0;\n    box-sizing: border-box;\n    line-height: 1.6;\n  }\n  .ccb-section *{box-sizing:border-box;}\n  .ccb-section img, .ccb-section video{max-width:100%; display:block;}\n  .ccb-wrap{padding: 0 20px;}\n  .ccb-eyebrow{\n    text-transform:uppercase; letter-spacing:0.16em; font-size:0.72rem;\n    color:var(--ccb-purple); font-weight:700; text-align:center; margin-bottom:8px;\n  }\n  .ccb-h2{\n    font-size:clamp(1.5rem,3vw,2rem); font-weight:700; text-align:center;\n    margin:0 0 10px; color:var(--ccb-ink);\n  }\n  .ccb-p-center{color:var(--ccb-ink-dim); text-align:center; max-width:520px; margin:0 auto 32px; font-size:0.95rem;}\n  .ccb-stars{color:var(--ccb-gold); font-size:0.85rem; letter-spacing:1px;}\n\n  .ccb-block{padding:40px 0;}\n\n  \/* video gallery *\/\n  .ccb-slider{position:relative; max-width:340px; margin:0 auto;}\n  .ccb-slider-viewport{overflow:hidden; border-radius:var(--ccb-radius);}\n  .ccb-slider-track{display:flex; transition:transform .35s ease;}\n  .ccb-slide{flex:0 0 100%; min-width:100%; background:#fff; border:1px solid var(--ccb-line);}\n  .ccb-slide video{width:100%; aspect-ratio:9\/16; object-fit:cover; background:#000; display:block;}\n  .ccb-slide .ccb-cap{padding:10px 12px; font-size:0.8rem; color:var(--ccb-ink-dim); display:flex; justify-content:space-between; align-items:center;}\n  .ccb-slider-arrow{\n    position:absolute !important; top:40% !important; transform:translateY(-50%); width:38px !important; height:38px !important; border-radius:50% !important;\n    background-color:#ffffff !important; border:1px solid var(--ccb-line) !important; box-shadow:var(--ccb-shadow) !important; cursor:pointer !important;\n    display:flex !important; align-items:center !important; justify-content:center !important; font-size:1.1rem !important; color:var(--ccb-purple) !important;\n    z-index:5 !important; padding:0 !important; margin:0 !important; line-height:1 !important;\n    transition:background-color .15s ease, transform .15s ease;\n  }\n  .ccb-slider-arrow:hover{background-color:var(--ccb-purple-tint) !important; transform:translateY(-50%) scale(1.06);}\n  .ccb-arrow-prev{left:-14px;}\n  .ccb-arrow-next{right:-14px;}\n  .ccb-slider-dots{display:flex !important; justify-content:center !important; gap:7px !important; margin-top:14px !important;}\n  .ccb-slider-dot{width:7px !important; height:7px !important; border-radius:50% !important; background-color:var(--ccb-line) !important; cursor:pointer !important; border:none !important; padding:0 !important; margin:0 !important;}\n  .ccb-slider-dot.ccb-dot-active{background-color:var(--ccb-purple) !important; width:18px !important; border-radius:4px !important; transition:width .2s ease;}\n\n  \/* CTA button *\/\n  .ccb-cta{\n    display:inline-flex !important; align-items:center !important; gap:8px !important;\n    background-color:var(--ccb-purple) !important; background-image:none !important;\n    color:#ffffff !important; fill:#ffffff !important;\n    font-family:'Inter', Arial, sans-serif !important;\n    font-weight:700 !important; font-size:0.92rem !important; letter-spacing:0.02em !important;\n    text-transform:uppercase !important;\n    padding:15px 32px !important; border:none !important; cursor:pointer !important;\n    border-radius:999px !important; text-decoration:none !important;\n    box-shadow:0 8px 20px rgba(155,4,111,0.35) !important;\n    line-height:1.2 !important; opacity:1 !important; visibility:visible !important;\n    transition:transform .15s ease, background-color .15s ease, box-shadow .15s ease !important;\n  }\n  .ccb-cta:visited, .ccb-cta:active, .ccb-cta:focus{\n    color:#ffffff !important; background-color:var(--ccb-purple) !important; text-decoration:none !important;\n  }\n  .ccb-cta:hover{background-color:var(--ccb-purple-dark) !important; transform:translateY(-1px); box-shadow:0 10px 24px rgba(155,4,111,0.45) !important;}\n  .ccb-cta-row{text-align:center; margin-top:8px;}\n\n  \/* mid banner *\/\n  .ccb-mid{background:var(--ccb-ink); text-align:center; border-radius:var(--ccb-radius); padding:36px 24px;}\n  .ccb-mid h3{color:#faf6ee; font-size:1.4rem; margin:0 0 8px; font-weight:700;}\n  .ccb-mid p{color:#c7bda6; margin:0 0 20px; font-size:0.92rem;}\n\n  \/* reviews *\/\n  .ccb-review-summary{display:flex; align-items:center; justify-content:center; gap:20px; margin-bottom:28px; flex-wrap:wrap;}\n  .ccb-review-score{font-size:2.4rem; font-weight:800; color:var(--ccb-purple);}\n  .ccb-review-summary-text{font-size:0.83rem; color:var(--ccb-ink-dim);}\n  .ccb-reviews-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:16px;}\n  .ccb-review-card{background:#fff; border:1px solid var(--ccb-line); border-radius:var(--ccb-radius); padding:20px; box-shadow:var(--ccb-shadow);}\n  .ccb-review-card p{font-size:0.88rem; color:var(--ccb-ink); margin:8px 0 14px; font-style:italic;}\n  .ccb-review-who{display:flex; justify-content:space-between; align-items:center; font-size:0.75rem; color:var(--ccb-ink-dim); border-top:1px solid var(--ccb-line); padding-top:10px;}\n  .ccb-verified{color:var(--ccb-purple); font-weight:700;}\n\n  \/* trust strip *\/\n  .ccb-trust{display:flex; justify-content:center; gap:24px; flex-wrap:wrap; text-align:center; background:var(--ccb-bg-soft); border-radius:var(--ccb-radius); padding:24px;}\n  .ccb-trust div{max-width:150px;}\n  .ccb-trust .ccb-ic{font-size:1.3rem; margin-bottom:6px;}\n  .ccb-trust p{font-size:0.78rem; font-weight:600; color:var(--ccb-ink-dim); margin:0;}\n\n  \/* purchase popup *\/\n  .ccb-toast{\n    position:fixed !important; left:18px !important; bottom:18px !important; z-index:99998 !important;\n    background-color:#ffffff !important; border:1px solid var(--ccb-line) !important;\n    border-left:4px solid var(--ccb-purple) !important; padding:12px 16px !important; display:flex !important;\n    gap:12px !important; align-items:center !important;\n    max-width:280px !important; box-shadow:var(--ccb-shadow-lg) !important; border-radius:var(--ccb-radius) !important;\n    opacity:0; transform:translateY(12px); transition:opacity .35s ease, transform .35s ease; pointer-events:none !important;\n    margin:0 !important;\n  }\n  .ccb-toast.ccb-show{opacity:1 !important; transform:translateY(0) !important;}\n  .ccb-toast .ccb-avatar{width:32px !important; height:32px !important; border-radius:50% !important; background-color:var(--ccb-purple) !important; color:#ffffff !important; font-weight:700 !important; display:flex !important; align-items:center !important; justify-content:center !important; font-size:0.8rem !important; flex-shrink:0 !important;}\n  .ccb-toast .ccb-txt{font-size:0.78rem !important; line-height:1.4 !important; color:var(--ccb-ink-dim) !important;}\n  .ccb-toast .ccb-txt b{color:var(--ccb-ink) !important;}\n  .ccb-toast .ccb-meta{color:var(--ccb-ink-dim); font-size:0.7rem; display:flex; gap:5px; align-items:center; margin-top:2px;}\n\n  .ccb-section, .ccb-section *, .ccb-toast, .ccb-toast *{\n    box-sizing:border-box !important;\n  }\n\n  @media(max-width:1024px){\n    .ccb-wrap{padding:0 24px;}\n  }\n  @media(max-width:900px){\n    .ccb-slider{max-width:280px;}\n    .ccb-arrow-prev{left:-6px;}\n    .ccb-arrow-next{right:-6px;}\n    .ccb-reviews-grid{grid-template-columns:1fr; }\n    body{padding-bottom:64px;}\n  }\n  @media(max-width:600px){\n    .ccb-wrap{padding:0 14px;}\n    .ccb-block{padding:28px 0;}\n    .ccb-cta{width:100%; justify-content:center;}\n    .ccb-trust{gap:14px; padding:18px;}\n    .ccb-trust div{max-width:44%;}\n    .ccb-toast{max-width:190px; left:8px; bottom:66px; padding:8px 10px;}\n  }\n  @media(max-width:380px){\n    .ccb-toast{display:none;}\n  }\n\u003c\/style\u003e\n\n\u003c!-- VIDEOS --\u003e\n\u003cdiv class=\"ccb-block ccb-wrap\"\u003e\n  \u003cp class=\"ccb-eyebrow\"\u003eSee It In Real Life\u003c\/p\u003e\n  \u003ch2 class=\"ccb-h2\"\u003eWatch the crochet detail up close\u003c\/h2\u003e\n  \u003cp class=\"ccb-p-center\"\u003eNo filters — just the bag, from three angles.\u003c\/p\u003e\n  \u003cdiv class=\"ccb-slider\"\u003e\n    \u003cdiv class=\"ccb-slider-viewport\"\u003e\n      \u003cdiv class=\"ccb-slider-track\" id=\"ccbSliderTrack\"\u003e\n        \u003cdiv class=\"ccb-slide\"\u003e\n          \u003cvideo src=\"https:\/\/cdn.videy.co\/Tb9WXQY61.mp4\" controls playsinline muted\u003e\u003c\/video\u003e\n          \u003cdiv class=\"ccb-cap\"\u003e\n\u003cspan\u003eFull detail\u003c\/span\u003e\u003cspan class=\"ccb-stars\"\u003e★★★★★\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ccb-slide\"\u003e\n          \u003cvideo src=\"https:\/\/cdn.videy.co\/ga2brHFD1.mp4\" controls playsinline muted\u003e\u003c\/video\u003e\n          \u003cdiv class=\"ccb-cap\"\u003e\n\u003cspan\u003eCarrying it\u003c\/span\u003e\u003cspan class=\"ccb-stars\"\u003e★★★★★\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"ccb-slide\"\u003e\n          \u003cvideo src=\"https:\/\/cdn.videy.co\/UtXVPvzd1.mp4\" controls playsinline muted\u003e\u003c\/video\u003e\n          \u003cdiv class=\"ccb-cap\"\u003e\n\u003cspan\u003eUp close\u003c\/span\u003e\u003cspan class=\"ccb-stars\"\u003e★★★★★\u003c\/span\u003e\n\u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cbutton class=\"ccb-slider-arrow ccb-arrow-prev\" id=\"ccbArrowPrev\" aria-label=\"Previous video\"\u003e‹\u003c\/button\u003e\n    \u003cbutton class=\"ccb-slider-arrow ccb-arrow-next\" id=\"ccbArrowNext\" aria-label=\"Next video\"\u003e›\u003c\/button\u003e\n    \u003cdiv class=\"ccb-slider-dots\" id=\"ccbSliderDots\"\u003e\n      \u003cbutton class=\"ccb-slider-dot ccb-dot-active\" data-i=\"0\"\u003e\u003c\/button\u003e\n      \u003cbutton class=\"ccb-slider-dot\" data-i=\"1\"\u003e\u003c\/button\u003e\n      \u003cbutton class=\"ccb-slider-dot\" data-i=\"2\"\u003e\u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"ccb-cta-row\" style=\"margin-top:28px;\"\u003e\n    \u003ca href=\"#\" class=\"ccb-cta ccb-scroll-top\"\u003eShop Now — See Options Above\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- MID BANNER --\u003e\n\u003cdiv class=\"ccb-block ccb-wrap\"\u003e\n  \u003cdiv class=\"ccb-mid\"\u003e\n    \u003ch3\u003eHandmade, one flower at a time.\u003c\/h3\u003e\n    \u003cp\u003eFree US shipping and a 30-day guarantee on every order.\u003c\/p\u003e\n    \u003ca href=\"#\" class=\"ccb-cta ccb-scroll-top\"\u003eShop Now — See Options Above\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- REVIEWS --\u003e\n\u003cdiv class=\"ccb-block ccb-wrap\"\u003e\n  \u003cp class=\"ccb-eyebrow\"\u003eCustomer Love\u003c\/p\u003e\n  \u003ch2 class=\"ccb-h2\"\u003eWhat buyers are saying\u003c\/h2\u003e\n  \u003cdiv class=\"ccb-review-summary\"\u003e\n    \u003cdiv class=\"ccb-review-score\"\u003e4.7\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cdiv class=\"ccb-stars\" style=\"font-size:1.05rem;\"\u003e★★★★★\u003c\/div\u003e\n      \u003cdiv class=\"ccb-review-summary-text\"\u003e890 verified reviews · 93% recommend\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"ccb-reviews-grid\"\u003e\n    \u003cdiv class=\"ccb-review-card\"\u003e\n      \u003cdiv class=\"ccb-stars\"\u003e★★★★★\u003c\/div\u003e\n      \u003cp\u003e\"So much better in person — the crochet work is tight and neat, not loose like some handmade bags I've bought before.\"\u003c\/p\u003e\n      \u003cdiv class=\"ccb-review-who\"\u003e\n\u003cspan\u003eOlivia R. — Charleston, SC\u003c\/span\u003e\u003cspan class=\"ccb-verified\"\u003e✓ Verified\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ccb-review-card\"\u003e\n      \u003cdiv class=\"ccb-stars\"\u003e★★★★★\u003c\/div\u003e\n      \u003cp\u003e\"Took this on vacation and it held up great — fits my phone, wallet, and sunscreen with room to spare.\u003c\/p\u003e\n      \u003cdiv class=\"ccb-review-who\"\u003e\n\u003cspan\u003eMaya T. — San Diego, CA\u003c\/span\u003e\u003cspan class=\"ccb-verified\"\u003e✓ Verified\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ccb-review-card\"\u003e\n      \u003cdiv class=\"ccb-stars\"\u003e★★★★☆\u003c\/div\u003e\n      \u003cp\u003e\"The purple flowers are even prettier than the photos. Strap is a bit long for me but easy enough to knot shorter.\u003c\/p\u003e\n      \u003cdiv class=\"ccb-review-who\"\u003e\n\u003cspan\u003eIsabella G. — Tampa, FL\u003c\/span\u003e\u003cspan class=\"ccb-verified\"\u003e✓ Verified\u003c\/span\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- TRUST STRIP --\u003e\n\u003cdiv class=\"ccb-block ccb-wrap\" style=\"padding-top:0;\"\u003e\n  \u003cdiv class=\"ccb-trust\"\u003e\n    \u003cdiv\u003e\n\u003cdiv class=\"ccb-ic\"\u003e🔒\u003c\/div\u003e\n\u003cp\u003eSecure Checkout\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003cdiv\u003e\n\u003cdiv class=\"ccb-ic\"\u003e🛡️\u003c\/div\u003e\n\u003cp\u003eSSL Protected\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003cdiv\u003e\n\u003cdiv class=\"ccb-ic\"\u003e🔄\u003c\/div\u003e\n\u003cp\u003eMoney-Back Guarantee\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003cdiv\u003e\n\u003cdiv class=\"ccb-ic\"\u003e🚚\u003c\/div\u003e\n\u003cp\u003eFast Shipping\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"ccb-cta-row\" style=\"margin-top:28px;\"\u003e\n    \u003ca href=\"#\" class=\"ccb-cta ccb-scroll-top\"\u003eShop Now — See Options Above\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\u003c!-- \/.ccb-section --\u003e\n\n\u003c!-- Purchase popup --\u003e\n\u003cdiv class=\"ccb-toast\" id=\"ccbProofToast\"\u003e\n  \u003cdiv class=\"ccb-avatar\" id=\"ccbProofAvatar\"\u003eO\u003c\/div\u003e\n  \u003cdiv class=\"ccb-txt\"\u003e\n    \u003cdiv\u003e\n\u003cb id=\"ccbProofName\"\u003eOlivia\u003c\/b\u003e \u003cspan id=\"ccbProofCity\"\u003efrom Charleston\u003c\/span\u003e just purchased\u003c\/div\u003e\n    \u003cdiv class=\"ccb-meta\"\u003e\n\u003cspan class=\"ccb-stars\" style=\"font-size:0.65rem;\"\u003e★★★★★\u003c\/span\u003e\u003cspan id=\"ccbProofTime\"\u003e10 minutes ago\u003c\/span\u003e\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  \/\/ Video slider — one video at a time, arrow + dot navigation\n  var track = document.getElementById('ccbSliderTrack');\n  var slides = track ? track.querySelectorAll('.ccb-slide') : [];\n  var dots = document.querySelectorAll('.ccb-slider-dot');\n  var prevBtn = document.getElementById('ccbArrowPrev');\n  var nextBtn = document.getElementById('ccbArrowNext');\n  var current = 0;\n\n  function goToSlide(i){\n    if (!track || !slides.length) return;\n    current = (i + slides.length) % slides.length;\n    track.style.transform = 'translateX(-' + (current * 100) + '%)';\n    dots.forEach(function(d, di){ d.classList.toggle('ccb-dot-active', di === current); });\n    \/\/ pause any playing video when we move away from it\n    slides.forEach(function(s, si){\n      var v = s.querySelector('video');\n      if (v \u0026\u0026 si !== current) v.pause();\n    });\n  }\n  if (prevBtn) prevBtn.addEventListener('click', function(){ goToSlide(current - 1); });\n  if (nextBtn) nextBtn.addEventListener('click', function(){ goToSlide(current + 1); });\n  dots.forEach(function(d){\n    d.addEventListener('click', function(){ goToSlide(parseInt(d.dataset.i, 10)); });\n  });\n\n  \/\/ All \"Shop Now\" buttons in this section scroll to the top of the page,\n  \/\/ where the real Add to Cart \/ Buy button with the active payment gateway lives.\n  document.querySelectorAll('.ccb-scroll-top').forEach(function(btn){\n    btn.addEventListener('click', function(e){\n      e.preventDefault();\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    });\n  });\n\n  \/\/ Simulated recent-purchase popup\n  var proofData = [\n    { name: \"Olivia\", city: \"Charleston, SC\", time: \"10 minutes ago\" },\n    { name: \"Maya\", city: \"San Diego, CA\", time: \"2 minutes ago\" },\n    { name: \"Isabella\", city: \"Tampa, FL\", time: \"6 minutes ago\" },\n    { name: \"Grace\", city: \"Nashville, TN\", time: \"just now\" },\n    { name: \"Chloe\", city: \"Austin, TX\", time: \"4 minutes ago\" },\n    { name: \"Hannah\", city: \"Portland, OR\", time: \"8 minutes ago\" },\n    { name: \"Sophia\", city: \"Miami, FL\", time: \"1 minute ago\" }\n  ];\n  var toast = document.getElementById('ccbProofToast');\n  var avatarEl = document.getElementById('ccbProofAvatar');\n  var nameEl = document.getElementById('ccbProofName');\n  var cityEl = document.getElementById('ccbProofCity');\n  var timeEl = document.getElementById('ccbProofTime');\n  var idx = 0;\n  function showProof(){\n    var d = proofData[idx % proofData.length];\n    idx++;\n    avatarEl.textContent = d.name.charAt(0);\n    nameEl.textContent = d.name;\n    cityEl.textContent = \"from \" + d.city;\n    timeEl.textContent = d.time;\n    toast.classList.add('ccb-show');\n    setTimeout(function(){ toast.classList.remove('ccb-show'); }, 4500);\n  }\n  setTimeout(showProof, 2000);\n  setInterval(showProof, 9000);\n})();\n\u003c\/script\u003e","brand":"Cliff Cart","offers":[{"title":"Default Title","offer_id":55276171395371,"sku":null,"price":27.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1002\/0097\/2587\/files\/Handmade-Crochet-Flower-Crossbody-Bag-Bohemian-Shoulder-Purse-Spring-Summer-Outfits-Gifting-Unique-Women-s-Gift-Fresh-Natural-Style-Detachable-Flower_24c73ae2-566c-4a13-9b51-19901b704.avif?v=1788335377","url":"https:\/\/cliffcart.com\/products\/crochet-flower-bag","provider":"Cliff Cart","version":"1.0","type":"link"}