{"product_id":"solefresh-restore-bag","title":"SoleFresh Restore Bag","description":"\n\u003cstyle\u003e\n  .sf-premium {\n    --sf-cream: #F3EFD8;\n    --sf-green: #1DE17;\n    --sf-dark: #151814;\n    --sf-muted: #5d625b;\n    --sf-white: #fffdf5;\n\n    font-family: -apple-system, BlinkMacSystemFont, \"Helvetica Neue\", Arial, sans-serif;\n    color: var(--sf-dark);\n    background: var(--sf-cream);\n    border-radius: 28px;\n    overflow: hidden;\n    position: relative;\n    isolation: isolate;\n  }\n\n  .sf-premium * {\n    box-sizing: border-box;\n  }\n\n  \/* Soft ambient glow *\/\n  .sf-premium::before {\n    content: \"\";\n    position: absolute;\n    width: 500px;\n    height: 500px;\n    background: rgba(29, 225, 23, 0.12);\n    border-radius: 50%;\n    filter: blur(90px);\n    top: -180px;\n    right: -180px;\n    z-index: -1;\n    animation: sfFloat 8s ease-in-out infinite;\n  }\n\n  .sf-premium::after {\n    content: \"\";\n    position: absolute;\n    width: 350px;\n    height: 350px;\n    background: rgba(29, 225, 23, 0.08);\n    border-radius: 50%;\n    filter: blur(80px);\n    bottom: -180px;\n    left: -150px;\n    z-index: -1;\n  }\n\n  .sf-inner {\n    max-width: 1100px;\n    margin: auto;\n    padding: 75px 28px;\n  }\n\n  \/* HERO *\/\n  .sf-hero {\n    text-align: center;\n    max-width: 850px;\n    margin: 0 auto 75px;\n  }\n\n  .sf-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    background: rgba(29, 225, 23, 0.12);\n    border: 1px solid rgba(29, 225, 23, 0.3);\n    color: #087d0b;\n    padding: 9px 15px;\n    border-radius: 999px;\n    font-size: 12px;\n    font-weight: 700;\n    letter-spacing: 1.3px;\n    text-transform: uppercase;\n    margin-bottom: 22px;\n    animation: sfFadeUp .8s ease both;\n  }\n\n  .sf-badge-dot {\n    width: 7px;\n    height: 7px;\n    background: var(--sf-green);\n    border-radius: 50%;\n    box-shadow: 0 0 0 5px rgba(29,225,23,.12);\n    animation: sfPulse 2s infinite;\n  }\n\n  .sf-hero h2 {\n    margin: 0;\n    font-size: clamp(38px, 6vw, 72px);\n    line-height: .98;\n    letter-spacing: -3px;\n    font-weight: 800;\n    animation: sfFadeUp .8s .1s ease both;\n  }\n\n  .sf-highlight {\n    color: var(--sf-green);\n    position: relative;\n    white-space: nowrap;\n  }\n\n  .sf-hero p {\n    max-width: 680px;\n    margin: 25px auto 0;\n    font-size: 18px;\n    line-height: 1.7;\n    color: var(--sf-muted);\n    animation: sfFadeUp .8s .2s ease both;\n  }\n\n  \/* PRODUCT INTRO *\/\n  .sf-product-card {\n    background: rgba(255,255,255,.5);\n    border: 1px solid rgba(21,24,20,.08);\n    border-radius: 26px;\n    padding: 38px;\n    margin-bottom: 70px;\n    box-shadow: 0 25px 70px rgba(21,24,20,.07);\n    backdrop-filter: blur(12px);\n    transition: transform .4s ease, box-shadow .4s ease;\n  }\n\n  .sf-product-card:hover {\n    transform: translateY(-5px);\n    box-shadow: 0 35px 90px rgba(21,24,20,.11);\n  }\n\n  .sf-product-top {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 45px;\n    align-items: center;\n  }\n\n  .sf-product-label {\n    color: #087d0b;\n    font-size: 12px;\n    text-transform: uppercase;\n    font-weight: 800;\n    letter-spacing: 1.5px;\n    margin-bottom: 12px;\n  }\n\n  .sf-product-card h3 {\n    font-size: clamp(28px,4vw,42px);\n    line-height: 1.05;\n    margin: 0 0 17px;\n    letter-spacing: -1.5px;\n  }\n\n  .sf-product-card p {\n    color: var(--sf-muted);\n    font-size: 16px;\n    line-height: 1.75;\n    margin: 0;\n  }\n\n  \/* VISUAL *\/\n  .sf-visual {\n    min-height: 290px;\n    border-radius: 22px;\n    background:\n      radial-gradient(circle at 50% 45%, rgba(29,225,23,.25), transparent 35%),\n      #ece8d1;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .sf-shoe {\n    font-size: 100px;\n    filter: drop-shadow(0 18px 18px rgba(0,0,0,.15));\n    animation: sfShoeFloat 4s ease-in-out infinite;\n    z-index: 2;\n  }\n\n  .sf-ring {\n    position: absolute;\n    width: 210px;\n    height: 210px;\n    border: 1px solid rgba(29,225,23,.35);\n    border-radius: 50%;\n    animation: sfRotate 12s linear infinite;\n  }\n\n  .sf-ring::before,\n  .sf-ring::after {\n    content: \"\";\n    position: absolute;\n    width: 9px;\n    height: 9px;\n    background: var(--sf-green);\n    border-radius: 50%;\n  }\n\n  .sf-ring::before {\n    top: 18px;\n    left: 50%;\n  }\n\n  .sf-ring::after {\n    bottom: 30px;\n    right: 5px;\n  }\n\n  \/* OUTCOME *\/\n  .sf-section-title {\n    text-align: center;\n    margin-bottom: 35px;\n  }\n\n  .sf-section-title span {\n    display: block;\n    color: #087d0b;\n    text-transform: uppercase;\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 1.8px;\n    margin-bottom: 10px;\n  }\n\n  .sf-section-title h3 {\n    margin: 0;\n    font-size: clamp(30px,5vw,48px);\n    letter-spacing: -2px;\n  }\n\n  .sf-benefits {\n    display: grid;\n    grid-template-columns: repeat(4, 1fr);\n    gap: 15px;\n    margin-bottom: 75px;\n  }\n\n  .sf-benefit {\n    background: rgba(255,255,255,.55);\n    border: 1px solid rgba(21,24,20,.07);\n    padding: 27px 20px;\n    border-radius: 20px;\n    transition: all .35s ease;\n  }\n\n  .sf-benefit:hover {\n    transform: translateY(-8px);\n    background: rgba(255,255,255,.85);\n    border-color: rgba(29,225,23,.35);\n    box-shadow: 0 18px 45px rgba(21,24,20,.08);\n  }\n\n  .sf-icon {\n    width: 46px;\n    height: 46px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: rgba(29,225,23,.12);\n    border-radius: 14px;\n    font-size: 21px;\n    margin-bottom: 18px;\n  }\n\n  .sf-benefit h4 {\n    margin: 0 0 8px;\n    font-size: 17px;\n  }\n\n  .sf-benefit p {\n    margin: 0;\n    color: var(--sf-muted);\n    font-size: 14px;\n    line-height: 1.55;\n  }\n\n  \/* HOW IT WORKS *\/\n.sf-how {\n  background: #151814;\n  color: #ffffff !important;\n  border-radius: 28px;\n  padding: 55px 35px;\n  position: relative;\n  overflow: hidden;\n  margin-bottom: 70px;\n}\n\n.sf-how::before {\n  content: \"\";\n  position: absolute;\n  width: 300px;\n  height: 300px;\n  right: -100px;\n  top: -130px;\n  border-radius: 50%;\n  background: rgba(29,225,23,.18);\n  filter: blur(50px);\n}\n\n\/* SECTION TITLE *\/\n.sf-how-title {\n  text-align: center;\n  position: relative;\n  margin-bottom: 45px;\n}\n\n.sf-how-title span {\n  display: block;\n  color: #1DE117 !important;\n  font-size: 11px;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 1.8px;\n  margin-bottom: 10px;\n}\n\n.sf-how-title h3 {\n  color: #ffffff !important;\n  margin: 9px 0 0 !important;\n  font-size: clamp(30px,5vw,45px);\n  line-height: 1.1;\n  letter-spacing: -1.5px;\n  font-weight: 800;\n}\n\n\/* STEPS *\/\n.sf-steps {\n  display: grid;\n  grid-template-columns: repeat(3,1fr);\n  gap: 25px;\n  position: relative;\n}\n\n.sf-step {\n  text-align: center;\n}\n\n.sf-number {\n  width: 54px;\n  height: 54px;\n  margin: 0 auto 18px;\n  border: 1px solid #1DE117;\n  background: rgba(29,225,23,.08);\n  color: #ffffff !important;\n  border-radius: 50%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  font-weight: 800;\n  font-size: 17px;\n}\n\n.sf-step h4 {\n  color: #ffffff !important;\n  margin: 0 0 8px !important;\n  font-size: 18px;\n  font-weight: 700;\n}\n\n.sf-step p {\n  color: rgba(255,255,255,.82) !important;\n  font-size: 14px;\n  line-height: 1.6;\n  margin: 0 auto !important;\n  max-width: 240px;\n}\n\n\/* MOBILE *\/\n@media (max-width: 750px) {\n  .sf-how {\n    padding: 45px 20px;\n  }\n\n  .sf-how-title h3 {\n    color: #ffffff !important;\n  }\n\n  .sf-steps {\n    grid-template-columns: 1fr;\n    gap: 35px;\n  }\n\n  .sf-step h4 {\n    color: #ffffff !important;\n  }\n\n  .sf-step p {\n    color: rgba(255,255,255,.85) !important;\n  }\n}\n  \/* FINAL STATEMENT *\/\n  .sf-final {\n    text-align: center;\n    max-width: 720px;\n    margin: auto;\n  }\n\n  .sf-final-icon {\n    font-size: 35px;\n    margin-bottom: 15px;\n    animation: sfPulse 2.5s infinite;\n  }\n\n  .sf-final h3 {\n    font-size: clamp(28px,5vw,48px);\n    letter-spacing: -1.8px;\n    margin: 0 0 15px;\n  }\n\n  .sf-final p {\n    color: var(--sf-muted);\n    line-height: 1.7;\n    font-size: 16px;\n    margin: 0;\n  }\n\n  .sf-accent {\n    color: #087d0b;\n    font-weight: 700;\n  }\n\n  \/* ANIMATIONS *\/\n  @keyframes sfFadeUp {\n    from {\n      opacity: 0;\n      transform: translateY(25px);\n    }\n    to {\n      opacity: 1;\n      transform: translateY(0);\n    }\n  }\n\n  @keyframes sfShoeFloat {\n    0%,100% { transform: translateY(0) rotate(-2deg); }\n    50% { transform: translateY(-13px) rotate(2deg); }\n  }\n\n  @keyframes sfFloat {\n    0%,100% { transform: translate(0,0); }\n    50% { transform: translate(-30px,25px); }\n  }\n\n  @keyframes sfRotate {\n    from { transform: rotate(0deg); }\n    to { transform: rotate(360deg); }\n  }\n\n  @keyframes sfPulse {\n    0%,100% { transform: scale(1); opacity: 1; }\n    50% { transform: scale(1.08); opacity: .75; }\n  }\n\n  \/* MOBILE *\/\n  @media (max-width: 750px) {\n    .sf-inner {\n      padding: 55px 17px;\n    }\n\n    .sf-hero {\n      margin-bottom: 50px;\n    }\n\n    .sf-hero h2 {\n      letter-spacing: -2px;\n    }\n\n    .sf-hero p {\n      font-size: 16px;\n    }\n\n    .sf-product-card {\n      padding: 22px;\n    }\n\n    .sf-product-top {\n      grid-template-columns: 1fr;\n      gap: 28px;\n    }\n\n    .sf-visual {\n      min-height: 230px;\n    }\n\n    .sf-shoe {\n      font-size: 75px;\n    }\n\n    .sf-benefits {\n      grid-template-columns: 1fr 1fr;\n      gap: 10px;\n    }\n\n    .sf-benefit {\n      padding: 20px 15px;\n    }\n\n    .sf-how {\n      padding: 45px 20px;\n    }\n\n    .sf-steps {\n      grid-template-columns: 1fr;\n      gap: 35px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .sf-premium *,\n    .sf-premium::before {\n      animation: none !important;\n      transition: none !important;\n    }\n  }\n\u003c\/style\u003e\n\n\u003cdiv class=\"sf-premium\"\u003e\n  \u003cdiv class=\"sf-inner\"\u003e\n\n    \u003c!-- HERO --\u003e\n    \u003cdiv class=\"sf-hero\"\u003e\n      \u003cdiv class=\"sf-badge\"\u003e\n        \u003cspan class=\"sf-badge-dot\"\u003e\u003c\/span\u003e\n        Premium Shoe Care\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Clean Shoes.\u003cbr\u003e\n        \u003cspan class=\"sf-highlight\"\u003eFresh Confidence.\u003c\/span\u003e\n      \u003c\/h2\u003e\n\n      \u003cp\u003e\n        Give your favourite sneakers a fresh start with a smarter way\n        to wash, protect and care for your shoes at home.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- PRODUCT INTRO --\u003e\n    \u003cdiv class=\"sf-product-card\"\u003e\n      \u003cdiv class=\"sf-product-top\"\u003e\n\n        \u003cdiv\u003e\n          \u003cdiv class=\"sf-product-label\"\u003eMeet your new shoe essential\u003c\/div\u003e\n\n          \u003ch3\u003e\n            The Sole Fresh\u003cbr\u003e\n            Restore Bag.\n          \u003c\/h3\u003e\n\n          \u003cp\u003e\n            A premium chenille wash bag designed to cradle your shoes\n            during a machine wash. Its soft fibres help lift away\n            everyday dirt, grime and odour while helping reduce\n            unnecessary impact and abrasion.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sf-visual\"\u003e\n          \u003cdiv class=\"sf-ring\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"sf-shoe\"\u003e👟\u003c\/div\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- OUTCOME --\u003e\n    \u003cdiv class=\"sf-section-title\"\u003e\n      \u003cspan\u003eThe result\u003c\/span\u003e\n      \u003ch3\u003eFrom worn-in to fresh.\u003c\/h3\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sf-benefits\"\u003e\n\n      \u003cdiv class=\"sf-benefit\"\u003e\n        \u003cdiv class=\"sf-icon\"\u003e✨\u003c\/div\u003e\n        \u003ch4\u003eVisibly Cleaner\u003c\/h4\u003e\n        \u003cp\u003e\n          Bring back that fresh, clean look and make your favourite\n          shoes feel new again.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sf-benefit\"\u003e\n        \u003cdiv class=\"sf-icon\"\u003e💨\u003c\/div\u003e\n        \u003ch4\u003eFresh Feel\u003c\/h4\u003e\n        \u003cp\u003e\n          Helps remove everyday dirt, grime and unwanted odours\n          from your shoes.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sf-benefit\"\u003e\n        \u003cdiv class=\"sf-icon\"\u003e🛡️\u003c\/div\u003e\n        \u003ch4\u003eAdded Protection\u003c\/h4\u003e\n        \u003cp\u003e\n          The cushioned chenille design helps protect shoes from\n          unnecessary contact with the washing machine drum.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sf-benefit\"\u003e\n        \u003cdiv class=\"sf-icon\"\u003e⏱️\u003c\/div\u003e\n        \u003ch4\u003eZero Scrubbing\u003c\/h4\u003e\n        \u003cp\u003e\n          Pop your shoes inside, start the wash cycle and let the\n          machine handle the hard work.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n    \u003c\/div\u003e\n\n    \u003c!-- HOW IT WORKS --\u003e\n    \u003cdiv class=\"sf-how\"\u003e\n\n      \u003cdiv class=\"sf-how-title\"\u003e\n        \u003cspan\u003eSimple shoe care\u003c\/span\u003e\n        \u003ch3\u003eFresh shoes in 3 steps.\u003c\/h3\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sf-steps\"\u003e\n\n        \u003cdiv class=\"sf-step\"\u003e\n          \u003cdiv class=\"sf-number\"\u003e01\u003c\/div\u003e\n          \u003ch4\u003eLoad\u003c\/h4\u003e\n          \u003cp\u003e\n            Place your shoes inside the Sole Fresh Restore Bag.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sf-step\"\u003e\n          \u003cdiv class=\"sf-number\"\u003e02\u003c\/div\u003e\n          \u003ch4\u003eWash\u003c\/h4\u003e\n          \u003cp\u003e\n            Put the bag into your washing machine and start your\n            preferred suitable wash cycle.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sf-step\"\u003e\n          \u003cdiv class=\"sf-number\"\u003e03\u003c\/div\u003e\n          \u003ch4\u003eRefresh\u003c\/h4\u003e\n          \u003cp\u003e\n            Take them out and enjoy a cleaner, fresher pair of shoes.\n          \u003c\/p\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- FINAL --\u003e\n    \u003cdiv class=\"sf-final\"\u003e\n\n      \u003cdiv class=\"sf-final-icon\"\u003e🌿\u003c\/div\u003e\n\n      \u003ch3\u003e\n        Gentle on shoes.\u003cbr\u003e\n        \u003cspan class=\"sf-highlight\"\u003eTough on dirt.\u003c\/span\u003e\n      \u003c\/h3\u003e\n\n      \u003cp\u003e\n        Whether they're your everyday runners, gym kicks or favourite\n        white sneakers, the \u003cspan class=\"sf-accent\"\u003eSole Fresh Restore Bag\u003c\/span\u003e\n        makes shoe care easier — so you can spend less time scrubbing\n        and more time wearing them.\n      \u003c\/p\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\u003c\/div\u003e\n```\n","brand":"My Store","offers":[{"title":"Default Title","offer_id":47343506718809,"sku":null,"price":399.99,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0758\/5667\/4905\/files\/solefresh-shoe-wash-bag-packaging.png?v=1790531169","url":"https:\/\/solefresh.co.za\/products\/solefresh-restore-bag","provider":"My Store","version":"1.0","type":"link"}