{"product_id":"softhaven™-the-cloud-blanket","title":"SoftHaven™ The Cloud Blanket","description":"\u003cstyle\u003e\n    .sfhc-section {\n      --rust: #d4806a;\n      --rust-dark: #bd6b57;\n      --cream: #faf0eb;\n      --peach: #f2c4b0;\n      --charcoal: #2c2c2c;\n      --grey: #5c5c5c;\n\n      --accent: #7f7f7f;\n      --accent-dark: #555555;\n      --accent-rgb: 127, 127, 127;\n      --bg-one: #fafafa;\n      --bg-two: #d8d8d8;\n      --blanket-one: #d8d8d8;\n      --blanket-two: #7f7f7f;\n      --blanket-deep: #5c5c5c;\n      --blanket-size: 0.96;\n\n      width: 100%;\n      position: relative;\n      overflow: hidden;\n      padding: 64px 18px;\n      border-radius: 32px;\n      background:\n        radial-gradient(circle at 8% 10%, rgba(var(--accent-rgb), 0.22), transparent 32%),\n        radial-gradient(circle at 92% 4%, rgba(255,255,255,0.82), transparent 28%),\n        linear-gradient(135deg, var(--bg-one), var(--bg-two));\n      color: var(--charcoal);\n      font-family: inherit;\n      transition: background 0.45s ease;\n    }\n\n    .sfhc-section * {\n      box-sizing: border-box;\n      max-width: 100%;\n    }\n\n    .sfhc-wrap {\n      max-width: 1180px;\n      margin: 0 auto;\n      width: 100%;\n    }\n\n    .sfhc-hero {\n      display: grid;\n      grid-template-columns: 1.05fr 0.95fr;\n      gap: 44px;\n      align-items: center;\n    }\n\n    .sfhc-badge {\n      display: inline-flex;\n      padding: 10px 15px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.72);\n      border: 1px solid rgba(255,255,255,0.86);\n      font-size: 14px;\n      font-weight: 800;\n      margin-bottom: 18px;\n    }\n\n    .sfhc-title {\n      margin: 0 0 14px;\n      font-size: clamp(38px, 6vw, 74px);\n      line-height: 0.96;\n      letter-spacing: -2px;\n      font-weight: 950;\n      color: var(--charcoal);\n    }\n\n    .sfhc-title span {\n      display: block;\n      color: var(--accent);\n      transition: color 0.35s ease;\n    }\n\n    .sfhc-subtitle {\n      font-size: clamp(20px, 2.4vw, 28px);\n      font-weight: 900;\n      margin-bottom: 16px;\n    }\n\n    .sfhc-text {\n      color: var(--grey);\n      font-size: 17px;\n      line-height: 1.75;\n      margin: 0 0 24px;\n    }\n\n    .sfhc-actions {\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      gap: 14px;\n    }\n\n    .sfhc-btn {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-height: 52px;\n      padding: 16px 28px;\n      border-radius: 999px;\n      border: none;\n      background: var(--accent);\n      color: #fff;\n      font-size: 16px;\n      font-weight: 950;\n      cursor: pointer;\n      text-decoration: none;\n      box-shadow: 0 18px 38px rgba(var(--accent-rgb), 0.34);\n      transition: 0.22s ease;\n    }\n\n    .sfhc-btn:hover {\n      transform: translateY(-2px);\n      background: var(--accent-dark);\n    }\n\n    .sfhc-note {\n      color: var(--grey);\n      font-size: 14px;\n      font-weight: 700;\n      line-height: 1.45;\n    }\n\n    .sfhc-trust-row {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 9px;\n      margin-top: 22px;\n    }\n\n    .sfhc-trust-row span {\n      padding: 9px 12px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.66);\n      border: 1px solid rgba(255,255,255,0.82);\n      font-size: 13px;\n      font-weight: 800;\n    }\n\n    .sfhc-product-card {\n      width: 100%;\n      max-width: 520px;\n      justify-self: end;\n      padding: 24px;\n      border-radius: 34px;\n      background: rgba(255,255,255,0.68);\n      border: 1px solid rgba(255,255,255,0.88);\n      box-shadow: 0 32px 80px rgba(112,67,54,0.18);\n      backdrop-filter: blur(16px);\n    }\n\n    .sfhc-visual {\n      position: relative;\n      width: 100%;\n      min-height: 360px;\n      border-radius: 28px;\n      overflow: hidden;\n      background:\n        radial-gradient(circle at 50% 18%, rgba(255,255,255,0.94), transparent 30%),\n        linear-gradient(145deg, rgba(255,255,255,0.72), rgba(var(--accent-rgb), 0.32));\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: background 0.45s ease;\n    }\n\n    .sfhc-blanket-wrap {\n      position: relative;\n      width: 330px;\n      height: 250px;\n      transform: scale(var(--blanket-size));\n      transition: transform 0.35s ease;\n      filter: drop-shadow(0 28px 45px rgba(112,67,54,0.22));\n      animation: sfhcBreathe 4.5s ease-in-out infinite;\n    }\n\n    .sfhc-blanket {\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 290px;\n      height: 205px;\n      transform: translate(-50%, -50%) rotate(-5deg);\n      border-radius: 36px;\n      background:\n        radial-gradient(circle at 25% 28%, rgba(255,255,255,0.42), transparent 13%),\n        radial-gradient(circle at 62% 38%, rgba(255,255,255,0.28), transparent 12%),\n        radial-gradient(circle at 45% 72%, rgba(0,0,0,0.08), transparent 14%),\n        linear-gradient(145deg, var(--blanket-one), var(--blanket-two));\n      box-shadow:\n        inset 0 0 36px rgba(255,255,255,0.28),\n        inset 0 -24px 35px rgba(44,44,44,0.13),\n        0 28px 58px rgba(44,44,44,0.14);\n      overflow: hidden;\n      transition: background 0.45s ease;\n    }\n\n    .sfhc-blanket::before {\n      content: \"\";\n      position: absolute;\n      inset: -10px;\n      background:\n        radial-gradient(circle, rgba(255,255,255,0.48) 0 10px, transparent 11px),\n        radial-gradient(circle, rgba(255,255,255,0.30) 0 8px, transparent 9px),\n        radial-gradient(circle, rgba(44,44,44,0.08) 0 8px, transparent 9px);\n      background-size: 48px 48px, 48px 48px, 48px 48px;\n      background-position: 0 0, 24px 24px, 13px 31px;\n      opacity: 0.78;\n      animation: sfhcBubbleSoft 5.5s ease-in-out infinite;\n    }\n\n    .sfhc-blanket::after {\n      content: \"\";\n      position: absolute;\n      right: -8px;\n      top: 36px;\n      width: 88px;\n      height: 138px;\n      border-radius: 30px;\n      background:\n        linear-gradient(120deg, rgba(255,255,255,0.45), rgba(255,255,255,0.04)),\n        linear-gradient(145deg, var(--blanket-one), var(--blanket-deep));\n      transform: rotate(8deg);\n      box-shadow: inset 0 0 22px rgba(255,255,255,0.28);\n      opacity: 0.92;\n    }\n\n    .sfhc-fold {\n      position: absolute;\n      left: 36px;\n      bottom: 16px;\n      width: 220px;\n      height: 72px;\n      border-radius: 28px;\n      background:\n        radial-gradient(circle at 30% 40%, rgba(255,255,255,0.35), transparent 24%),\n        linear-gradient(145deg, var(--blanket-one), var(--blanket-deep));\n      transform: rotate(2deg);\n      box-shadow: inset 0 0 24px rgba(255,255,255,0.22);\n      z-index: 3;\n      opacity: 0.98;\n    }\n\n    .sfhc-cloud-puff {\n      position: absolute;\n      width: 18px;\n      height: 18px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.78);\n      filter: blur(1px);\n      animation: sfhcFloatPuff 5s ease-in-out infinite;\n      z-index: 5;\n    }\n\n    .sfhc-cloud-puff.p1 { left: 18%; top: 22%; animation-delay: 0s; }\n    .sfhc-cloud-puff.p2 { left: 48%; top: 13%; animation-delay: 1s; }\n    .sfhc-cloud-puff.p3 { right: 19%; top: 25%; animation-delay: 2s; }\n\n    .sfhc-warmth {\n      position: absolute;\n      bottom: 34px;\n      width: 14px;\n      height: 82px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.55);\n      filter: blur(8px);\n      pointer-events: none;\n      animation: sfhcSteam 4.5s ease-in-out infinite;\n    }\n\n    .sfhc-warmth.one { left: 23%; animation-delay: 0s; }\n    .sfhc-warmth.two { left: 50%; animation-delay: 1s; }\n    .sfhc-warmth.three { right: 23%; animation-delay: 2s; }\n\n    .sfhc-colour-title {\n      margin-top: 18px;\n      text-align: center;\n      font-size: 15px;\n      font-weight: 900;\n    }\n\n    .sfhc-colours {\n      display: flex;\n      justify-content: center;\n      gap: 11px;\n      margin-top: 13px;\n      flex-wrap: wrap;\n    }\n\n    .sfhc-colour {\n      width: 42px;\n      height: 42px;\n      border-radius: 999px;\n      border: 3px solid #fff;\n      box-shadow: 0 8px 18px rgba(44,44,44,0.15);\n      cursor: pointer;\n      transition: 0.2s ease;\n      appearance: none;\n      padding: 0;\n    }\n\n    .sfhc-colour.is-active {\n      box-shadow: 0 0 0 4px rgba(var(--accent-rgb), 0.24), 0 8px 18px rgba(44,44,44,0.14);\n      transform: scale(1.08);\n    }\n\n    .sfhc-space-grey { background: #7f7f7f; }\n    .sfhc-off-white { background: #f5efe6; }\n    .sfhc-khaki { background: #b39c76; }\n    .sfhc-olive { background: #78815d; }\n    .sfhc-pink-red { background: #d97896; }\n\n    .sfhc-selected {\n      text-align: center;\n      margin-top: 12px;\n      color: var(--grey);\n      font-size: 14px;\n      font-weight: 800;\n    }\n\n    .sfhc-heading {\n      max-width: 760px;\n      margin: 58px auto 24px;\n      text-align: center;\n    }\n\n    .sfhc-heading h2 {\n      margin: 0 0 10px;\n      font-size: clamp(28px, 4vw, 42px);\n      line-height: 1.08;\n      font-weight: 950;\n    }\n\n    .sfhc-heading p {\n      margin: 0;\n      color: var(--grey);\n      font-size: 16px;\n      line-height: 1.65;\n    }\n\n    .sfhc-benefits {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 18px;\n    }\n\n    .sfhc-benefit {\n      position: relative;\n      overflow: hidden;\n      padding: 24px;\n      border-radius: 26px;\n      background: rgba(255,255,255,0.68);\n      border: 1px solid rgba(255,255,255,0.86);\n      box-shadow: 0 18px 42px rgba(112,67,54,0.11);\n      cursor: pointer;\n      min-height: 188px;\n      transition: transform 0.22s ease, box-shadow 0.22s ease;\n    }\n\n    .sfhc-benefit:hover,\n    .sfhc-benefit.is-tapped {\n      transform: translateY(-5px) scale(1.01);\n      box-shadow: 0 25px 55px rgba(112,67,54,0.17);\n    }\n\n    .sfhc-icon {\n      width: 50px;\n      height: 50px;\n      border-radius: 17px;\n      background: var(--accent);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #fff;\n      font-size: 23px;\n      margin-bottom: 16px;\n      transition: background 0.35s ease;\n    }\n\n    .sfhc-benefit h3 {\n      margin: 0 0 8px;\n      font-size: 18px;\n      font-weight: 950;\n    }\n\n    .sfhc-benefit p {\n      margin: 0;\n      color: var(--grey);\n      font-size: 15px;\n      line-height: 1.6;\n    }\n\n    .sfhc-effect-layer {\n      position: absolute;\n      inset: 0;\n      pointer-events: none;\n      overflow: hidden;\n    }\n\n    .sfhc-particle {\n      position: absolute;\n      left: var(--x);\n      bottom: 14px;\n      font-size: var(--size);\n      opacity: 0;\n      animation: sfhcParticle 1.15s ease-out forwards;\n    }\n\n    .sfhc-particle.cloud {\n      width: 24px;\n      height: 24px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.78);\n      filter: blur(3px);\n    }\n\n    .sfhc-particle.steam {\n      width: 14px;\n      height: 54px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.74);\n      filter: blur(7px);\n    }\n\n    .sfhc-split {\n      display: grid;\n      grid-template-columns: repeat(2, 1fr);\n      gap: 18px;\n      margin-top: 28px;\n    }\n\n    .sfhc-panel,\n    .sfhc-size-guide {\n      padding: 30px;\n      border-radius: 30px;\n      background: rgba(255,255,255,0.66);\n      border: 1px solid rgba(255,255,255,0.86);\n      box-shadow: 0 22px 55px rgba(112,67,54,0.12);\n    }\n\n    .sfhc-size-guide {\n      margin-top: 28px;\n    }\n\n    .sfhc-panel h3,\n    .sfhc-size-guide h3 {\n      margin: 0 0 16px;\n      font-size: 24px;\n      font-weight: 950;\n    }\n\n    .sfhc-size-guide p {\n      margin: 0 0 18px;\n      color: var(--grey);\n      font-size: 15px;\n      line-height: 1.55;\n      font-weight: 700;\n    }\n\n    .sfhc-list {\n      display: grid;\n      gap: 13px;\n      margin: 0;\n      padding: 0;\n      list-style: none;\n    }\n\n    .sfhc-list li {\n      display: flex;\n      gap: 10px;\n      align-items: flex-start;\n      color: var(--grey);\n      font-size: 15px;\n      line-height: 1.55;\n      font-weight: 650;\n    }\n\n    .sfhc-list strong {\n      color: var(--charcoal);\n    }\n\n    .sfhc-check {\n      flex: 0 0 auto;\n      width: 24px;\n      height: 24px;\n      border-radius: 999px;\n      background: var(--accent);\n      color: #fff;\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 13px;\n      font-weight: 950;\n      margin-top: 1px;\n      transition: background 0.35s ease;\n    }\n\n    .sfhc-option-grid {\n      display: grid;\n      grid-template-columns: repeat(2, 1fr);\n      gap: 12px;\n      margin-top: 16px;\n    }\n\n    .sfhc-option-item {\n      padding: 20px;\n      border-radius: 22px;\n      background: rgba(255,255,255,0.62);\n      border: 1px solid rgba(255,255,255,0.85);\n      text-align: center;\n      font-weight: 900;\n      color: var(--charcoal);\n      box-shadow: 0 12px 28px rgba(112,67,54,0.08);\n      cursor: pointer;\n      appearance: none;\n      transition: transform 0.22s ease, box-shadow 0.22s ease, background 0.22s ease;\n    }\n\n    .sfhc-option-item:hover,\n    .sfhc-option-item.is-active {\n      transform: translateY(-4px);\n      background: rgba(255,255,255,0.78);\n      box-shadow: 0 18px 38px rgba(var(--accent-rgb),0.18);\n    }\n\n    .sfhc-option-item span {\n      display: block;\n      font-size: 30px;\n      margin-bottom: 8px;\n    }\n\n    .sfhc-option-item small {\n      display: block;\n      margin-top: 6px;\n      font-size: 12.5px;\n      line-height: 1.35;\n      color: var(--grey);\n      font-weight: 800;\n    }\n\n    .sfhc-story {\n      margin-top: 34px;\n      padding: 36px;\n      border-radius: 34px;\n      background: rgba(255,255,255,0.7);\n      border: 1px solid rgba(255,255,255,0.88);\n      box-shadow: 0 26px 68px rgba(112,67,54,0.14);\n      text-align: center;\n    }\n\n    .sfhc-story h2 {\n      margin: 0 0 12px;\n      font-size: clamp(27px, 4vw, 42px);\n      font-weight: 950;\n    }\n\n    .sfhc-story p {\n      max-width: 820px;\n      margin: 0 auto 22px;\n      color: var(--grey);\n      font-size: 17px;\n      line-height: 1.75;\n    }\n\n    @keyframes sfhcBreathe {\n      0%, 100% { transform: scale(var(--blanket-size)); }\n      50% { transform: scale(calc(var(--blanket-size) + 0.018)); }\n    }\n\n    @keyframes sfhcBubbleSoft {\n      0%, 100% { opacity: 0.65; transform: scale(1); }\n      50% { opacity: 0.9; transform: scale(1.03); }\n    }\n\n    @keyframes sfhcFloatPuff {\n      0%, 100% { transform: translateY(0) scale(1); opacity: 0.72; }\n      50% { transform: translateY(-12px) scale(1.18); opacity: 1; }\n    }\n\n    @keyframes sfhcSteam {\n      0% { opacity: 0; transform: translateY(20px) scaleX(1); }\n      35% { opacity: 0.62; }\n      100% { opacity: 0; transform: translateY(-115px) scaleX(2.2); }\n    }\n\n    @keyframes sfhcParticle {\n      0% { opacity: 0; transform: translateY(20px) scale(0.8); }\n      18% { opacity: 1; }\n      100% { opacity: 0; transform: translateY(-105px) scale(1.35); }\n    }\n\n    @media (max-width: 990px) {\n      .sfhc-hero {\n        grid-template-columns: 1fr;\n      }\n\n      .sfhc-product-card {\n        justify-self: center;\n        max-width: 620px;\n      }\n\n      .sfhc-benefits {\n        grid-template-columns: repeat(2, 1fr);\n      }\n    }\n\n    @media (max-width: 700px) {\n      .sfhc-section {\n        padding: 44px 14px;\n        border-radius: 24px;\n      }\n\n      .sfhc-title {\n        font-size: clamp(36px, 11vw, 48px);\n        letter-spacing: -1.3px;\n      }\n\n      .sfhc-text {\n        font-size: 15.5px;\n      }\n\n      .sfhc-actions {\n        align-items: stretch;\n      }\n\n      .sfhc-btn {\n        width: 100%;\n        padding: 15px 18px;\n      }\n\n      .sfhc-product-card {\n        padding: 18px;\n        border-radius: 28px;\n      }\n\n      .sfhc-visual {\n        min-height: 320px;\n        border-radius: 24px;\n      }\n\n      .sfhc-blanket-wrap {\n        width: 280px;\n        height: 220px;\n      }\n\n      .sfhc-blanket {\n        width: 250px;\n        height: 178px;\n      }\n\n      .sfhc-fold {\n        left: 30px;\n        bottom: 20px;\n        width: 190px;\n        height: 62px;\n      }\n\n      .sfhc-benefits,\n      .sfhc-split,\n      .sfhc-option-grid {\n        grid-template-columns: 1fr;\n      }\n\n      .sfhc-benefit {\n        min-height: auto;\n        padding: 20px;\n      }\n\n      .sfhc-panel,\n      .sfhc-story,\n      .sfhc-size-guide {\n        padding: 24px 18px;\n      }\n    }\n  \u003c\/style\u003e\n\u003csection id=\"sfhc-cloud-blanket\" class=\"sfhc-section\"\u003e\n\u003cdiv class=\"sfhc-wrap\"\u003e\n\u003cdiv class=\"sfhc-hero\"\u003e\n\u003cdiv\u003e\n\u003cbr\u003e\n\u003ch1 class=\"sfhc-title\"\u003eSoftHaven™ \u003cspan\u003eThe Cloud Blanket\u003c\/span\u003e\n\u003c\/h1\u003e\n\u003cdiv class=\"sfhc-subtitle\"\u003eBecause Warmth Should Feel Like a Hug You Never Want to Leave. ☁️\u003c\/div\u003e\n\u003cp class=\"sfhc-text\"\u003eThere is cold. And then there is that deep SA winter cold that thin blankets cannot touch. The Cloud Blanket wraps you in thick, bubble-textured plush warmth — soft, heavy and cosy enough to make your couch or bed feel like a cloud.\u003c\/p\u003e\n\u003cdiv class=\"sfhc-actions\"\u003e\n\u003cbutton data-sfhc-scroll=\"\" class=\"sfhc-btn\" type=\"button\"\u003e Choose My Colour \u0026amp; Size \u003c\/button\u003e\n\u003cdiv class=\"sfhc-note\"\u003e5 colours · 4 sizes · Premium bubble plush · Double-layer warmth · Machine washable\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-trust-row\"\u003e\n\u003cspan\u003e☁️ Cloud-like softness\u003c\/span\u003e \u003cspan\u003e🔥 Deep lasting warmth\u003c\/span\u003e \u003cspan\u003e🧸 Weighted comfort\u003c\/span\u003e \u003cspan\u003e🧺 Machine washable\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-product-card\"\u003e\n\u003cdiv class=\"sfhc-visual\"\u003e\n\u003cspan class=\"sfhc-warmth one\"\u003e\u003c\/span\u003e \u003cspan class=\"sfhc-warmth two\"\u003e\u003c\/span\u003e \u003cspan class=\"sfhc-warmth three\"\u003e\u003c\/span\u003e \u003cspan class=\"sfhc-cloud-puff p1\"\u003e\u003c\/span\u003e \u003cspan class=\"sfhc-cloud-puff p2\"\u003e\u003c\/span\u003e \u003cspan class=\"sfhc-cloud-puff p3\"\u003e\u003c\/span\u003e\n\u003cdiv class=\"sfhc-blanket-wrap\"\u003e\n\u003cdiv class=\"sfhc-blanket\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-fold\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-colour-title\"\u003eTap a colour to preview your blanket vibe\u003c\/div\u003e\n\u003cdiv class=\"sfhc-colours\"\u003e\n\u003cbutton aria-label=\"Space Grey\" data-colour=\"space-grey\" class=\"sfhc-colour sfhc-space-grey\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton aria-label=\"Off White\" data-colour=\"off-white\" class=\"sfhc-colour sfhc-off-white\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton aria-label=\"Khaki\" data-colour=\"khaki\" class=\"sfhc-colour sfhc-khaki\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton aria-label=\"Olive Green\" data-colour=\"olive\" class=\"sfhc-colour sfhc-olive\" type=\"button\"\u003e\u003c\/button\u003e \u003cbutton aria-label=\"Pink Red\" data-colour=\"pink-red\" class=\"sfhc-colour sfhc-pink-red\" type=\"button\"\u003e\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cdiv data-selected-text=\"\" class=\"sfhc-selected\"\u003eSelected vibe: Space Grey · 100×150cm\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-heading\"\u003e\n\u003ch2\u003eTap a Benefit to Feel the Effect\u003c\/h2\u003e\n\u003cp\u003eEach benefit is interactive, helping customers feel the softness, warmth and cosy cloud comfort.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-benefits\"\u003e\n\u003cdiv data-effect=\"cloud\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e☁️\u003c\/div\u003e\n\u003ch3\u003eCloud-Like Softness\u003c\/h3\u003e\n\u003cp\u003ePremium bubble plush texture feels irresistibly soft and cosy against bare skin.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv data-effect=\"steam\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e🔥\u003c\/div\u003e\n\u003ch3\u003eDeep, Lasting Warmth\u003c\/h3\u003e\n\u003cp\u003eThick double-layer construction traps heat so you stay warmer for longer.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv data-effect=\"comfort\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e🧸\u003c\/div\u003e\n\u003ch3\u003eWeighted Comfort\u003c\/h3\u003e\n\u003cp\u003eThe satisfying weight helps melt away stress, tension and that restless cold feeling.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv data-effect=\"colour\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e🎨\u003c\/div\u003e\n\u003ch3\u003e5 Beautiful Colours\u003c\/h3\u003e\n\u003cp\u003eSpace Grey, Off White, Khaki, Olive Green and Pink Red to match your room.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv data-effect=\"size\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e📏\u003c\/div\u003e\n\u003ch3\u003e4 Generous Sizes\u003c\/h3\u003e\n\u003cp\u003eFrom single comfort to king-size coverage, there is a perfect fit for your bed or couch.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv data-effect=\"clean\" class=\"sfhc-benefit\"\u003e\n\u003cdiv class=\"sfhc-effect-layer\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"sfhc-icon\"\u003e🧹\u003c\/div\u003e\n\u003ch3\u003eEasy Care\u003c\/h3\u003e\n\u003cp\u003eMachine washable and made to stay fluffy, soft and beautiful wash after wash.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-split\"\u003e\n\u003cdiv class=\"sfhc-panel\"\u003e\n\u003ch3\u003eWhy You’ll Love It\u003c\/h3\u003e\n\u003cul class=\"sfhc-list\"\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eWarmth that surrounds you:\u003c\/strong\u003e perfect for freezing nights, cold couches and winter mornings.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eBubble plush texture:\u003c\/strong\u003e soft, cosy and premium enough to make every touch feel comforting.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eHeavy cosy feel:\u003c\/strong\u003e wraps around you with a calming, cocoon-like comfort.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eBeautiful home upgrade:\u003c\/strong\u003e looks good on your bed or couch while keeping you warm.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-panel\"\u003e\n\u003ch3\u003ePerfect For\u003c\/h3\u003e\n\u003cul class=\"sfhc-list\"\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eLoad shedding nights\u003c\/strong\u003e when the house gets dark, cold and uncomfortable.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eMovie nights\u003c\/strong\u003e when you want full-body softness and warmth.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eBedrooms\u003c\/strong\u003e as a cosy winter layer that feels premium and comforting.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eGifting\u003c\/strong\u003e for anyone who loves warm, soft, useful comfort.\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-size-guide\"\u003e\n\u003ch3\u003eAvailable Options 🎨📏\u003c\/h3\u003e\n\u003cp\u003eTap a colour or size below to preview the vibe. Choose your favourite colour and the size that fits your bed, couch or cosy corner.\u003c\/p\u003e\n\u003cdiv class=\"sfhc-option-grid\"\u003e\n\u003cbutton data-colour=\"space-grey\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🪨\u003c\/span\u003e Space Grey \u003c\/button\u003e \u003cbutton data-colour=\"off-white\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🤍\u003c\/span\u003e Off White \u003c\/button\u003e \u003cbutton data-colour=\"khaki\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🥥\u003c\/span\u003e Khaki \u003c\/button\u003e \u003cbutton data-colour=\"olive\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🫒\u003c\/span\u003e Olive Green \u003c\/button\u003e \u003cbutton data-colour=\"pink-red\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🌹\u003c\/span\u003e Pink Red \u003c\/button\u003e \u003cbutton data-size=\"single\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e📏\u003c\/span\u003e 100×150cm \u003csmall\u003eSolo comfort · Couch throw\u003c\/small\u003e \u003c\/button\u003e \u003cbutton data-size=\"double\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🛋️\u003c\/span\u003e 150×200cm \u003csmall\u003eFull couch comfort\u003c\/small\u003e \u003c\/button\u003e \u003cbutton data-size=\"queen\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e🛏️\u003c\/span\u003e 180×200cm \u003csmall\u003eBed-ready coverage\u003c\/small\u003e \u003c\/button\u003e \u003cbutton data-size=\"king\" class=\"sfhc-option-item\" type=\"button\"\u003e \u003cspan\u003e👑\u003c\/span\u003e 200×230cm \u003csmall\u003eMaximum cosy coverage\u003c\/small\u003e \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"sfhc-story\"\u003e\n\u003ch2\u003eYour Story ☀️\u003c\/h2\u003e\n\u003cp\u003eIt is a freezing Friday night. Load shedding hits. The house goes dark and cold. You reach for The Cloud Blanket, wrap it around your shoulders and suddenly nothing else matters. Warm, soft, completely cocooned. That is the SoftHaven difference.\u003c\/p\u003e\n\u003cbutton data-sfhc-scroll=\"\" class=\"sfhc-btn\" type=\"button\"\u003e Wrap Yourself In Warmth ☁️ \u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function () {\n      var script = document.currentScript;\n      var section = script ? script.closest(\".sfhc-section\") : document.getElementById(\"sfhc-cloud-blanket\");\n      if (!section) return;\n\n      var selectedText = section.querySelector(\"[data-selected-text]\");\n      var sizeText = \"100×150cm\";\n\n      var colourData = {\n        \"space-grey\": {\n          name: \"Space Grey\",\n          accent: \"#7f7f7f\",\n          accentDark: \"#555555\",\n          accentRgb: \"127, 127, 127\",\n          bgOne: \"#fafafa\",\n          bgTwo: \"#d8d8d8\",\n          blanketOne: \"#d8d8d8\",\n          blanketTwo: \"#7f7f7f\",\n          blanketDeep: \"#5c5c5c\"\n        },\n        \"off-white\": {\n          name: \"Off White\",\n          accent: \"#d8c7b4\",\n          accentDark: \"#b49b82\",\n          accentRgb: \"216, 199, 180\",\n          bgOne: \"#fffaf4\",\n          bgTwo: \"#eadac8\",\n          blanketOne: \"#fff8ef\",\n          blanketTwo: \"#e6d5c1\",\n          blanketDeep: \"#c7ad91\"\n        },\n        \"khaki\": {\n          name: \"Khaki\",\n          accent: \"#b39c76\",\n          accentDark: \"#8d7654\",\n          accentRgb: \"179, 156, 118\",\n          bgOne: \"#fff8ec\",\n          bgTwo: \"#d9c39b\",\n          blanketOne: \"#d4bd90\",\n          blanketTwo: \"#9d835d\",\n          blanketDeep: \"#75603f\"\n        },\n        \"olive\": {\n          name: \"Olive Green\",\n          accent: \"#78815d\",\n          accentDark: \"#596043\",\n          accentRgb: \"120, 129, 93\",\n          bgOne: \"#f7faef\",\n          bgTwo: \"#c8d0ad\",\n          blanketOne: \"#a5ad83\",\n          blanketTwo: \"#68734f\",\n          blanketDeep: \"#4e553a\"\n        },\n        \"pink-red\": {\n          name: \"Pink Red\",\n          accent: \"#d97896\",\n          accentDark: \"#be5f7d\",\n          accentRgb: \"217, 120, 150\",\n          bgOne: \"#fff3f6\",\n          bgTwo: \"#f5b5c7\",\n          blanketOne: \"#ffd3df\",\n          blanketTwo: \"#d97896\",\n          blanketDeep: \"#b85070\"\n        }\n      };\n\n      var sizeData = {\n        single: {\n          label: \"100×150cm\",\n          scale: \"0.92\"\n        },\n        double: {\n          label: \"150×200cm\",\n          scale: \"1\"\n        },\n        queen: {\n          label: \"180×200cm\",\n          scale: \"1.07\"\n        },\n        king: {\n          label: \"200×230cm\",\n          scale: \"1.13\"\n        }\n      };\n\n      function updateSelectedText(colourName) {\n        if (selectedText) {\n          selectedText.textContent = \"Selected vibe: \" + colourName + \" · \" + sizeText;\n        }\n      }\n\n      function setColour(colour) {\n        var data = colourData[colour];\n        if (!data) return;\n\n        section.style.setProperty(\"--accent\", data.accent);\n        section.style.setProperty(\"--accent-dark\", data.accentDark);\n        section.style.setProperty(\"--accent-rgb\", data.accentRgb);\n        section.style.setProperty(\"--bg-one\", data.bgOne);\n        section.style.setProperty(\"--bg-two\", data.bgTwo);\n        section.style.setProperty(\"--blanket-one\", data.blanketOne);\n        section.style.setProperty(\"--blanket-two\", data.blanketTwo);\n        section.style.setProperty(\"--blanket-deep\", data.blanketDeep);\n\n        section.querySelectorAll(\"[data-colour]\").forEach(function (btn) {\n          btn.classList.toggle(\"is-active\", btn.getAttribute(\"data-colour\") === colour);\n        });\n\n        updateSelectedText(data.name);\n      }\n\n      function setSize(size) {\n        var data = sizeData[size];\n        if (!data) return;\n\n        sizeText = data.label;\n        section.style.setProperty(\"--blanket-size\", data.scale);\n\n        section.querySelectorAll(\"[data-size]\").forEach(function (btn) {\n          btn.classList.toggle(\"is-active\", btn.getAttribute(\"data-size\") === size);\n        });\n\n        var activeColour = section.querySelector(\"[data-colour].is-active\");\n        var colourKey = activeColour ? activeColour.getAttribute(\"data-colour\") : \"space-grey\";\n        updateSelectedText(colourData[colourKey].name);\n      }\n\n      function createEffect(card, type) {\n        var layer = card.querySelector(\".sfhc-effect-layer\");\n        if (!layer) return;\n\n        layer.innerHTML = \"\";\n        card.classList.add(\"is-tapped\");\n\n        setTimeout(function () {\n          card.classList.remove(\"is-tapped\");\n        }, 450);\n\n        var symbols = {\n          cloud: [\"\", \"\", \"\", \"\", \"\"],\n          steam: [\"\", \"\", \"\", \"\", \"\"],\n          comfort: [\"🧸\", \"♡\", \"✨\", \"♡\", \"🧸\"],\n          colour: [\"🎨\", \"🤍\", \"🫒\", \"🌹\", \"🪨\"],\n          size: [\"📏\", \"🛏️\", \"👑\", \"✨\", \"🛋️\"],\n          clean: [\"✨\", \"🧹\", \"✨\", \"♡\", \"🧺\"]\n        };\n\n        var selected = symbols[type] || [\"✨\", \"✨\", \"✨\"];\n\n        selected.forEach(function (symbol, index) {\n          var particle = document.createElement(\"span\");\n          particle.className = \"sfhc-particle\";\n\n          if (type === \"cloud\") {\n            particle.classList.add(\"cloud\");\n          } else if (type === \"steam\") {\n            particle.classList.add(\"steam\");\n          } else {\n            particle.textContent = symbol;\n          }\n\n          particle.style.setProperty(\"--x\", 18 + index * 15 + \"%\");\n          particle.style.setProperty(\"--size\", 18 + index * 2 + \"px\");\n          particle.style.animationDelay = index * 0.08 + \"s\";\n\n          layer.appendChild(particle);\n        });\n\n        setTimeout(function () {\n          layer.innerHTML = \"\";\n        }, 1500);\n      }\n\n      section.addEventListener(\"click\", function (event) {\n        var colourButton = event.target.closest(\"[data-colour]\");\n        if (colourButton \u0026\u0026 section.contains(colourButton)) {\n          event.preventDefault();\n          setColour(colourButton.getAttribute(\"data-colour\"));\n          return;\n        }\n\n        var sizeButton = event.target.closest(\"[data-size]\");\n        if (sizeButton \u0026\u0026 section.contains(sizeButton)) {\n          event.preventDefault();\n          setSize(sizeButton.getAttribute(\"data-size\"));\n          return;\n        }\n\n        var benefitCard = event.target.closest(\".sfhc-benefit\");\n        if (benefitCard \u0026\u0026 section.contains(benefitCard)) {\n          createEffect(benefitCard, benefitCard.getAttribute(\"data-effect\"));\n          return;\n        }\n\n        var scrollButton = event.target.closest(\"[data-sfhc-scroll]\");\n        if (scrollButton \u0026\u0026 section.contains(scrollButton)) {\n          var productForm =\n            document.querySelector(\".product-form\") ||\n            document.querySelector('form[action*=\"\/cart\/add\"]') ||\n            document.querySelector('[id*=\"ProductSubmitButton\"]');\n\n          if (productForm) {\n            productForm.scrollIntoView({\n              behavior: \"smooth\",\n              block: \"center\"\n            });\n          }\n        }\n      });\n\n      setColour(\"space-grey\");\n      setSize(\"single\");\n    })();\n  \u003c\/script\u003e\u003c\/section\u003e","brand":"SoftHaven","offers":[{"title":"Green \/ 100 x 150cm","offer_id":46777763561609,"sku":"SSH-BLK-GRN-S","price":399.0,"currency_code":"ZAR","in_stock":true},{"title":"Green \/ 150 x 200cm","offer_id":46777763594377,"sku":"SSH-BLK-GRN-M","price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Green \/ 180 x 200cm","offer_id":46777763627145,"sku":"SSH-BLK-GRN-L","price":579.0,"currency_code":"ZAR","in_stock":true},{"title":"Green \/ 200 x 230cm","offer_id":46777763659913,"sku":"SSH-BLK-GRN-XL","price":649.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ 100 x 150cm","offer_id":46777763692681,"sku":"SSH-BLK-PNK-S","price":399.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ 150 x 200cm","offer_id":46777763725449,"sku":"SSH-BLK-PNK-M","price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ 180 x 200cm","offer_id":46777763758217,"sku":"SSH-BLK-PNK-L","price":579.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ 200 x 230cm","offer_id":46777763790985,"sku":"SSH-BLK-PNK-XL","price":649.0,"currency_code":"ZAR","in_stock":true},{"title":"Khaki \/ 100 x 150cm","offer_id":46777763823753,"sku":"SSH-BLK-KHK-S","price":399.0,"currency_code":"ZAR","in_stock":true},{"title":"Khaki \/ 150 x 200cm","offer_id":46777763856521,"sku":"SSH-BLK-KHK-M","price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Khaki \/ 180 x 200cm","offer_id":46777763889289,"sku":"SSH-BLK-KHK-L","price":579.0,"currency_code":"ZAR","in_stock":true},{"title":"Khaki \/ 200 x 230cm","offer_id":46777763922057,"sku":"SSH-BLK-KHK-XL","price":649.0,"currency_code":"ZAR","in_stock":true},{"title":"White \/ 100 x 150cm","offer_id":46777763954825,"sku":"SSH-BLK-WHT-S","price":399.0,"currency_code":"ZAR","in_stock":true},{"title":"White \/ 150 x 200cm","offer_id":46777763987593,"sku":"SSH-BLK-WHT-M","price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"White \/ 180 x 200cm","offer_id":46777764020361,"sku":"SSH-BLK-WHT-L","price":579.0,"currency_code":"ZAR","in_stock":true},{"title":"White \/ 200 x 230cm","offer_id":46777764053129,"sku":"SSH-BLK-WHT-XL","price":649.0,"currency_code":"ZAR","in_stock":true},{"title":"Grey \/ 100 x 150cm","offer_id":46777764085897,"sku":"SSH-BLK-GRY-S","price":399.0,"currency_code":"ZAR","in_stock":true},{"title":"Grey \/ 150 x 200cm","offer_id":46777764118665,"sku":"SSH-BLK-GRY-M","price":499.0,"currency_code":"ZAR","in_stock":true},{"title":"Grey \/ 180 x 200cm","offer_id":46777764151433,"sku":"SSH-BLK-GRY-L","price":579.0,"currency_code":"ZAR","in_stock":true},{"title":"Grey \/ 200 x 230cm","offer_id":46777764184201,"sku":"SSH-BLK-GRY-XL","price":649.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0765\/3539\/8537\/files\/cloud-blanket-green-image-3.png?v=1779282281","url":"https:\/\/www.softhaven.co.za\/products\/softhaven%e2%84%a2-the-cloud-blanket","provider":"SoftHaven","version":"1.0","type":"link"}