{"title":"Cozy Home","description":"\u003cp\u003eTransform your living space into a warm winter sanctuary. The Cozy Home collection features SoftHaven™'s premium home comfort pieces — from ultra-plush oval rugs that cushion every step to thick bubble blankets that wrap your whole family in warmth. Because home should always feel like a hug.\u003c\/p\u003e","products":[{"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"},{"product_id":"softhaven™-the-plush-ground","title":"SoftHaven™ The Plush Ground","description":"\u003csection class=\"sfhc-section\" id=\"sfhc-plush-ground\"\u003e\n  \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: #8f8f8f;\n      --accent-dark: #5c5c5c;\n      --accent-rgb: 143, 143, 143;\n      --bg-one: #fafafa;\n      --bg-two: #d6d6d6;\n      --rug-one: #d5d5d5;\n      --rug-two: #8f8f8f;\n      --rug-deep: #6f6f6f;\n      --rug-size: 0.95;\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% 16%, rgba(255,255,255,0.95), 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-room-line {\n      position: absolute;\n      left: 8%;\n      right: 8%;\n      top: 32%;\n      height: 2px;\n      background: rgba(44,44,44,0.06);\n      z-index: 0;\n    }\n\n    .sfhc-side-table {\n      position: absolute;\n      top: 64px;\n      left: 58px;\n      width: 92px;\n      height: 78px;\n      border-radius: 12px;\n      background: rgba(255,255,255,0.76);\n      border: 1px solid rgba(255,255,255,0.9);\n      box-shadow: 0 18px 34px rgba(44,44,44,0.08);\n      z-index: 1;\n    }\n\n    .sfhc-side-table::before {\n      content: \"\";\n      position: absolute;\n      left: 13px;\n      right: 13px;\n      top: 36px;\n      height: 2px;\n      background: rgba(44,44,44,0.12);\n    }\n\n    .sfhc-side-table::after {\n      content: \"\";\n      position: absolute;\n      left: 18px;\n      right: 18px;\n      bottom: -20px;\n      height: 20px;\n      border-left: 6px solid rgba(112,67,54,0.28);\n      border-right: 6px solid rgba(112,67,54,0.28);\n    }\n\n    .sfhc-bed-edge {\n      position: absolute;\n      left: 0;\n      top: 72px;\n      width: 90px;\n      height: 210px;\n      border-radius: 0 34px 34px 0;\n      background: rgba(255,255,255,0.72);\n      box-shadow: 12px 0 30px rgba(44,44,44,0.06);\n      z-index: 1;\n    }\n\n    .sfhc-rug-wrap {\n      position: relative;\n      width: 330px;\n      height: 230px;\n      transform: scale(var(--rug-size));\n      transition: transform 0.35s ease;\n      z-index: 3;\n      filter: drop-shadow(0 28px 38px rgba(44,44,44,0.16));\n      animation: sfhcBreathe 4.5s ease-in-out infinite;\n    }\n\n    .sfhc-rug {\n      position: absolute;\n      left: 50%;\n      top: 50%;\n      width: 300px;\n      height: 200px;\n      transform: translate(-50%, -50%) perspective(520px) rotateX(58deg);\n      border-radius: 50%;\n      background:\n        radial-gradient(circle at 42% 42%, rgba(255,255,255,0.45), transparent 18%),\n        radial-gradient(circle at 65% 50%, rgba(255,255,255,0.22), transparent 16%),\n        radial-gradient(circle at 30% 70%, rgba(0,0,0,0.08), transparent 18%),\n        linear-gradient(145deg, var(--rug-one), var(--rug-two));\n      box-shadow:\n        inset 0 0 35px rgba(255,255,255,0.35),\n        inset 0 -18px 35px rgba(44,44,44,0.12),\n        0 30px 55px rgba(44,44,44,0.14);\n      overflow: hidden;\n      transition: background 0.45s ease;\n    }\n\n    .sfhc-rug::before {\n      content: \"\";\n      position: absolute;\n      inset: -10px;\n      border-radius: 50%;\n      background:\n        repeating-radial-gradient(circle at 50% 50%,\n          rgba(255,255,255,0.42) 0 2px,\n          rgba(255,255,255,0.05) 2px 5px,\n          rgba(44,44,44,0.06) 5px 7px,\n          transparent 7px 11px);\n      opacity: 0.72;\n      filter: blur(0.2px);\n      animation: sfhcShimmer 5s ease-in-out infinite;\n    }\n\n    .sfhc-rug::after {\n      content: \"\";\n      position: absolute;\n      inset: 14px;\n      border-radius: 50%;\n      background:\n        repeating-linear-gradient(90deg,\n          rgba(255,255,255,0.26) 0 3px,\n          rgba(44,44,44,0.04) 3px 6px,\n          transparent 6px 10px);\n      opacity: 0.55;\n      filter: blur(1px);\n    }\n\n    .sfhc-fibre {\n      position: absolute;\n      width: 8px;\n      height: 42px;\n      border-radius: 999px;\n      background: rgba(255,255,255,0.55);\n      filter: blur(2px);\n      opacity: 0.85;\n      animation: sfhcFibre 4s ease-in-out infinite;\n      z-index: 4;\n    }\n\n    .sfhc-fibre.f1 { left: 24%; top: 34%; transform: rotate(-22deg); animation-delay: 0s; }\n    .sfhc-fibre.f2 { left: 45%; top: 24%; transform: rotate(12deg); animation-delay: 0.7s; }\n    .sfhc-fibre.f3 { right: 24%; top: 38%; transform: rotate(24deg); animation-delay: 1.4s; }\n    .sfhc-fibre.f4 { left: 36%; bottom: 22%; transform: rotate(-12deg); animation-delay: 2s; }\n    .sfhc-fibre.f5 { right: 34%; bottom: 20%; transform: rotate(18deg); animation-delay: 2.5s; }\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-grey-dot { background: #9b9b9b; }\n    .sfhc-blue-dot { background: #00a9c7; }\n    .sfhc-apricot-dot { background: #f2d9bb; }\n    .sfhc-pink-dot { background: #f5a9bd; }\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-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(--rug-size)); }\n      50% { transform: scale(calc(var(--rug-size) + 0.018)); }\n    }\n\n    @keyframes sfhcShimmer {\n      0%, 100% { opacity: 0.55; transform: scale(1); }\n      50% { opacity: 0.82; transform: scale(1.04); }\n    }\n\n    @keyframes sfhcFibre {\n      0%, 100% { opacity: 0.55; transform: translateY(0) rotate(var(--r, 10deg)); }\n      50% { opacity: 1; transform: translateY(-10px) rotate(var(--r, 10deg)); }\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-rug-wrap {\n        width: 275px;\n        height: 210px;\n      }\n\n      .sfhc-rug {\n        width: 260px;\n        height: 175px;\n      }\n\n      .sfhc-side-table {\n        left: 42px;\n        top: 58px;\n        width: 78px;\n        height: 66px;\n      }\n\n      .sfhc-bed-edge {\n        width: 70px;\n        height: 190px;\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\n  \u003cdiv class=\"sfhc-wrap\"\u003e\n    \u003cdiv class=\"sfhc-hero\"\u003e\n      \u003cdiv\u003e\n        \u003cdiv class=\"sfhc-badge\"\u003e🇿🇦 Plush comfort for cold SA floors\u003c\/div\u003e\n\n        \u003ch1 class=\"sfhc-title\"\u003e\n          SoftHaven™\n          \u003cspan\u003eThe Plush Ground\u003c\/span\u003e\n        \u003c\/h1\u003e\n\n        \u003cdiv class=\"sfhc-subtitle\"\u003eBecause Your First Step of the Day Should Feel Like a Reward. 🐾\u003c\/div\u003e\n\n        \u003cp class=\"sfhc-text\"\u003e\n          Cold floors can ruin a cosy morning. The Plush Ground changes that moment completely with thick,\n          cloud-soft fibres that cradle your feet and turn your bedroom, bathroom or living room into a warmer,\n          softer space from the very first step.\n        \u003c\/p\u003e\n\n        \u003cdiv class=\"sfhc-actions\"\u003e\n          \u003cbutton type=\"button\" class=\"sfhc-btn\" data-sfhc-scroll\u003e\n            Choose My Colour \u0026amp; Size\n          \u003c\/button\u003e\n\n          \u003cdiv class=\"sfhc-note\"\u003e\n            Grey, Blue, Apricot \u0026amp; Pink · Small 40×120cm · Large 60×160cm · Premium plush fibres · Non-slip base\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sfhc-trust-row\"\u003e\n          \u003cspan\u003e🌫️ Cloud-soft step\u003c\/span\u003e\n          \u003cspan\u003e🔥 Warmer floors\u003c\/span\u003e\n          \u003cspan\u003e🧸 Plush fibres\u003c\/span\u003e\n          \u003cspan\u003e⭐ Non-slip base\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-product-card\"\u003e\n        \u003cdiv class=\"sfhc-visual\"\u003e\n          \u003cdiv class=\"sfhc-room-line\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"sfhc-bed-edge\"\u003e\u003c\/div\u003e\n          \u003cdiv class=\"sfhc-side-table\"\u003e\u003c\/div\u003e\n\n          \u003cdiv class=\"sfhc-rug-wrap\"\u003e\n            \u003cdiv class=\"sfhc-rug\"\u003e\u003c\/div\u003e\n            \u003cspan class=\"sfhc-fibre f1\"\u003e\u003c\/span\u003e\n            \u003cspan class=\"sfhc-fibre f2\"\u003e\u003c\/span\u003e\n            \u003cspan class=\"sfhc-fibre f3\"\u003e\u003c\/span\u003e\n            \u003cspan class=\"sfhc-fibre f4\"\u003e\u003c\/span\u003e\n            \u003cspan class=\"sfhc-fibre f5\"\u003e\u003c\/span\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sfhc-colour-title\"\u003eTap a colour to preview your room vibe\u003c\/div\u003e\n\n        \u003cdiv class=\"sfhc-colours\"\u003e\n          \u003cbutton type=\"button\" class=\"sfhc-colour sfhc-blue-dot\" data-colour=\"blue\" aria-label=\"Blue\"\u003e\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"sfhc-colour sfhc-grey-dot\" data-colour=\"grey\" aria-label=\"Grey\"\u003e\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"sfhc-colour sfhc-apricot-dot\" data-colour=\"apricot\" aria-label=\"Apricot\"\u003e\u003c\/button\u003e\n          \u003cbutton type=\"button\" class=\"sfhc-colour sfhc-pink-dot\" data-colour=\"pink\" aria-label=\"Pink\"\u003e\u003c\/button\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"sfhc-selected\" data-selected-text\u003e\n          Selected vibe: Soft Grey · Small · 40×120cm \/ 15.75×47.24in\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\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 room transformation.\u003c\/p\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sfhc-benefits\"\u003e\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"cloud\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🌫️\u003c\/div\u003e\n        \u003ch3\u003eCloud-Like Cushioning\u003c\/h3\u003e\n        \u003cp\u003eUltra-thick shaggy fibres sink under your feet and make every step feel softer.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"warm\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🔥\u003c\/div\u003e\n        \u003ch3\u003eWarmth From The Ground Up\u003c\/h3\u003e\n        \u003cp\u003eHelps insulate against cold floors so your feet and body feel warmer in winter.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"soft\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🧸\u003c\/div\u003e\n        \u003ch3\u003eIrresistibly Soft\u003c\/h3\u003e\n        \u003cp\u003ePremium plush fibres feel luxurious against bare skin every morning and night.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"home\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🏠\u003c\/div\u003e\n        \u003ch3\u003eTransforms Any Room\u003c\/h3\u003e\n        \u003cp\u003eInstantly makes your bedroom, living room or bathroom feel warmer, styled and cosy.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"colour\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🎨\u003c\/div\u003e\n        \u003ch3\u003e4 Colours, 2 Sizes\u003c\/h3\u003e\n        \u003cp\u003eChoose Blue, Grey, Apricot or Pink in 40×120cm or 60×160cm to suit your space.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"sfhc-benefit\" data-effect=\"clean\"\u003e\n        \u003cdiv class=\"sfhc-effect-layer\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"sfhc-icon\"\u003e🧹\u003c\/div\u003e\n        \u003ch3\u003eEasy To Maintain\u003c\/h3\u003e\n        \u003cp\u003eShake out or gently vacuum to keep it fresh, fluffy and beautiful for everyday use.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\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\u003eSoft morning comfort:\u003c\/strong\u003e no more harsh cold-floor shock when you get out of bed.\u003c\/span\u003e\n\u003c\/li\u003e\n          \u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eInstant cosy upgrade:\u003c\/strong\u003e makes any room feel warmer, softer and more premium.\u003c\/span\u003e\n\u003c\/li\u003e\n          \u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eBarefoot luxury:\u003c\/strong\u003e thick plush fibres feel gentle and comforting under your feet.\u003c\/span\u003e\n\u003c\/li\u003e\n          \u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003ePractical beauty:\u003c\/strong\u003e soft enough for comfort, stylish enough to complete the room.\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n\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\u003eBedrooms\u003c\/strong\u003e beside your bed so your first step feels warm and soft.\u003c\/span\u003e\n\u003c\/li\u003e\n          \u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eLiving rooms\u003c\/strong\u003e where you want a cosy, premium winter feel.\u003c\/span\u003e\n\u003c\/li\u003e\n          \u003cli\u003e\n\u003cspan class=\"sfhc-check\"\u003e✓\u003c\/span\u003e\u003cspan\u003e\u003cstrong\u003eBathrooms\u003c\/strong\u003e when cold tiles make mornings feel uncomfortable.\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 a soft, cosy and stylish home.\u003c\/span\u003e\n\u003c\/li\u003e\n        \u003c\/ul\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\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 the colour that matches your space and the size that fits your room best.\u003c\/p\u003e\n\n      \u003cdiv class=\"sfhc-option-grid\"\u003e\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-colour=\"blue\"\u003e\n          \u003cspan\u003e🩵\u003c\/span\u003e\n          Blue\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-colour=\"grey\"\u003e\n          \u003cspan\u003e🪨\u003c\/span\u003e\n          Grey\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-colour=\"apricot\"\u003e\n          \u003cspan\u003e🍑\u003c\/span\u003e\n          Apricot\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-colour=\"pink\"\u003e\n          \u003cspan\u003e🌸\u003c\/span\u003e\n          Pink\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-size=\"small\"\u003e\n          \u003cspan\u003e📐\u003c\/span\u003e\n          Small\n          \u003csmall\u003e40×120cm \/ 15.75×47.24in\u003c\/small\u003e\n        \u003c\/button\u003e\n\n        \u003cbutton type=\"button\" class=\"sfhc-option-item\" data-size=\"large\"\u003e\n          \u003cspan\u003e🛋️\u003c\/span\u003e\n          Large\n          \u003csmall\u003e60×160cm \/ 23.62×62.99in\u003c\/small\u003e\n        \u003c\/button\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"sfhc-story\"\u003e\n      \u003ch2\u003eYour Story ☀️\u003c\/h2\u003e\n      \u003cp\u003e\n        It is 6am. The alarm goes off. You brace yourself for the cold floor — but instead,\n        your feet land on The Plush Ground. Warm. Soft. Instant comfort. You smile before you have even had coffee.\n        That is the SoftHaven difference.\n      \u003c\/p\u003e\n\n      \u003cbutton type=\"button\" class=\"sfhc-btn\" data-sfhc-scroll\u003e\n        Step Into Comfort Every Morning 🌫️\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cscript\u003e\n    (function () {\n      var script = document.currentScript;\n      var section = script ? script.closest(\".sfhc-section\") : document.getElementById(\"sfhc-plush-ground\");\n      if (!section) return;\n\n      var selectedText = section.querySelector(\"[data-selected-text]\");\n      var sizeText = \"Small · 40×120cm \/ 15.75×47.24in\";\n\n      var colourData = {\n        blue: {\n          name: \"Blue\",\n          accent: \"#00a9c7\",\n          accentDark: \"#0086a0\",\n          accentRgb: \"0, 169, 199\",\n          bgOne: \"#effcff\",\n          bgTwo: \"#b7eef6\",\n          rugOne: \"#36d8ee\",\n          rugTwo: \"#00a9c7\",\n          rugDeep: \"#007b91\"\n        },\n        grey: {\n          name: \"Grey\",\n          accent: \"#8f8f8f\",\n          accentDark: \"#5c5c5c\",\n          accentRgb: \"143, 143, 143\",\n          bgOne: \"#fafafa\",\n          bgTwo: \"#d6d6d6\",\n          rugOne: \"#d5d5d5\",\n          rugTwo: \"#8f8f8f\",\n          rugDeep: \"#6f6f6f\"\n        },\n        apricot: {\n          name: \"Apricot\",\n          accent: \"#d9b98f\",\n          accentDark: \"#b8905f\",\n          accentRgb: \"217, 185, 143\",\n          bgOne: \"#fff8ef\",\n          bgTwo: \"#ead0ad\",\n          rugOne: \"#f4dfc2\",\n          rugTwo: \"#d9b98f\",\n          rugDeep: \"#ad8353\"\n        },\n        pink: {\n          name: \"Pink\",\n          accent: \"#d97896\",\n          accentDark: \"#be5f7d\",\n          accentRgb: \"217, 120, 150\",\n          bgOne: \"#fff3f6\",\n          bgTwo: \"#f5b5c7\",\n          rugOne: \"#ffd3df\",\n          rugTwo: \"#f5a9bd\",\n          rugDeep: \"#cf7892\"\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(\"--rug-one\", data.rugOne);\n        section.style.setProperty(\"--rug-two\", data.rugTwo);\n        section.style.setProperty(\"--rug-deep\", data.rugDeep);\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        if (size === \"large\") {\n          sizeText = \"Large · 60×160cm \/ 23.62×62.99in\";\n          section.style.setProperty(\"--rug-size\", \"1.08\");\n        } else {\n          sizeText = \"Small · 40×120cm \/ 15.75×47.24in\";\n          section.style.setProperty(\"--rug-size\", \"0.95\");\n        }\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\") : \"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          warm: [\"🔥\", \"☀️\", \"🔥\", \"✨\", \"☀️\"],\n          soft: [\"🧸\", \"♡\", \"✨\", \"♡\", \"🧸\"],\n          home: [\"🏠\", \"✨\", \"♡\", \"🏠\", \"✨\"],\n          colour: [\"🎨\", \"🌸\", \"🩵\", \"🍑\", \"🪨\"],\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 {\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(\"grey\");\n      setSize(\"small\");\n    })();\n  \u003c\/script\u003e\n\u003c\/section\u003e","brand":"SoftHaven","offers":[{"title":"White \/ Small (40 x 120cm)","offer_id":46777764380809,"sku":"SSH-RUG-WHT-S","price":349.0,"currency_code":"ZAR","in_stock":true},{"title":"White \/ Large ( 60 x 160cm)","offer_id":46777764413577,"sku":"SSH-RUG-WHT-L","price":449.0,"currency_code":"ZAR","in_stock":true},{"title":"blue light \/ Small (40 x 120cm)","offer_id":46777764446345,"sku":"SSH-RUG-BLU-S","price":349.0,"currency_code":"ZAR","in_stock":true},{"title":"blue light \/ Large ( 60 x 160cm)","offer_id":46777764479113,"sku":"SSH-RUG-BLU-L","price":449.0,"currency_code":"ZAR","in_stock":true},{"title":"Gray \/ Small (40 x 120cm)","offer_id":46777764511881,"sku":"SSH-RUG-GRY-S","price":349.0,"currency_code":"ZAR","in_stock":true},{"title":"Gray \/ Large ( 60 x 160cm)","offer_id":46777764544649,"sku":"SSH-RUG-GRY-L","price":449.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ Small (40 x 120cm)","offer_id":46777764577417,"sku":"SSH-RUG-PNK-S","price":349.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ Large ( 60 x 160cm)","offer_id":46777764610185,"sku":"SSH-RUG-PNK-L","price":449.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0765\/3539\/8537\/files\/rug-living-room-lifestyle-shot.png?v=1779279646"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0765\/3539\/8537\/collections\/cloud-blanket-green-image-4.png?v=1779291231","url":"https:\/\/www.softhaven.co.za\/collections\/cozy-home.oembed","provider":"SoftHaven","version":"1.0","type":"link"}