{"product_id":"pet-spree™-cube-roller","title":"Pet Spree™ Cube Roller","description":"\u003c!-- Pet Spree™ Cube Roller — Mobile-Optimised Shopify Product Description --\u003e\n\u003csection class=\"pscr\" aria-label=\"Pet Spree Cube Roller product information\"\u003e\n  \u003cstyle\u003e\n    .pscr {\n      --pscr-navy: #102a43;\n      --pscr-navy-deep: #071b2e;\n      --pscr-navy-soft: #173f62;\n      --pscr-gold: #c89b3c;\n      --pscr-gold-light: #f6e9ca;\n      --pscr-cream: #fcfaf5;\n      --pscr-white: #ffffff;\n      --pscr-ink: #243443;\n      --pscr-muted: #687785;\n      box-sizing: border-box;\n      width: 100%;\n      max-width: 920px;\n      margin: 0 auto;\n      color: var(--pscr-ink);\n      font-family: inherit;\n      line-height: 1.55;\n      -webkit-font-smoothing: antialiased;\n    }\n\n    .pscr *,\n    .pscr *::before,\n    .pscr *::after {\n      box-sizing: inherit;\n    }\n\n    .pscr__hero {\n      position: relative;\n      isolation: isolate;\n      overflow: hidden;\n      padding: 36px 20px 34px;\n      border: 1px solid rgba(200, 155, 60, 0.18);\n      border-radius: 22px;\n      background:\n        radial-gradient(circle at 85% 15%, rgba(200, 155, 60, 0.18), transparent 28%),\n        linear-gradient(145deg, var(--pscr-navy-deep), var(--pscr-navy) 62%, var(--pscr-navy-soft));\n      color: var(--pscr-white);\n      text-align: center;\n      box-shadow: 0 18px 48px rgba(7, 27, 46, 0.18);\n      animation: pscr-reveal 700ms cubic-bezier(0.22, 1, 0.36, 1) both;\n    }\n\n    .pscr__hero::before {\n      content: \"\";\n      position: absolute;\n      z-index: -1;\n      top: -100px;\n      right: -90px;\n      width: 230px;\n      height: 230px;\n      border: 1px solid rgba(200, 155, 60, 0.2);\n      border-radius: 50%;\n      box-shadow:\n        0 0 0 26px rgba(200, 155, 60, 0.045),\n        0 0 0 58px rgba(200, 155, 60, 0.025);\n      animation: pscr-orbit 9s ease-in-out infinite;\n    }\n\n    .pscr__hero::after {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      background: linear-gradient(110deg, transparent 25%, rgba(255, 255, 255, 0.08) 45%, transparent 65%);\n      transform: translateX(-120%);\n      animation: pscr-sheen 5.5s ease-in-out 1.2s infinite;\n    }\n\n    .pscr__eyebrow {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      margin-bottom: 13px;\n      padding: 7px 12px;\n      border: 1px solid rgba(200, 155, 60, 0.34);\n      border-radius: 999px;\n      background: rgba(7, 27, 46, 0.42);\n      color: var(--pscr-gold);\n      font-size: 11px;\n      font-weight: 800;\n      letter-spacing: 0.14em;\n      line-height: 1;\n      text-transform: uppercase;\n      animation: pscr-fade-up 650ms 140ms both;\n    }\n\n    .pscr__eyebrow::before {\n      content: \"\";\n      width: 6px;\n      height: 6px;\n      border-radius: 50%;\n      background: var(--pscr-gold);\n      box-shadow: 0 0 0 5px rgba(200, 155, 60, 0.12);\n      animation: pscr-pulse 2.8s ease-in-out infinite;\n    }\n\n    .pscr h2,\n    .pscr h3,\n    .pscr p {\n      margin-top: 0;\n    }\n\n    .pscr__hero h2 {\n      position: relative;\n      margin: 0 auto 13px;\n      color: var(--pscr-white);\n      font-size: clamp(30px, 9vw, 47px);\n      font-weight: 800;\n      letter-spacing: -0.035em;\n      line-height: 1.08;\n      animation: pscr-fade-up 700ms 220ms both;\n    }\n\n    .pscr__hero h2 span {\n      color: var(--pscr-gold);\n    }\n\n    .pscr__intro {\n      max-width: 690px;\n      margin: 0 auto;\n      color: rgba(255, 255, 255, 0.84);\n      font-size: 15px;\n      line-height: 1.65;\n      animation: pscr-fade-up 700ms 300ms both;\n    }\n\n    .pscr__chips {\n      display: flex;\n      flex-wrap: wrap;\n      justify-content: center;\n      gap: 7px;\n      margin-top: 20px;\n      animation: pscr-fade-up 700ms 380ms both;\n    }\n\n    .pscr__chip {\n      padding: 7px 10px;\n      border: 1px solid rgba(255, 255, 255, 0.12);\n      border-radius: 999px;\n      background: rgba(255, 255, 255, 0.07);\n      color: rgba(255, 255, 255, 0.88);\n      font-size: 11px;\n      font-weight: 700;\n      letter-spacing: 0.02em;\n    }\n\n    .pscr__features {\n      padding: 34px 2px 0;\n    }\n\n    .pscr__section-heading {\n      margin-bottom: 20px;\n      text-align: center;\n    }\n\n    .pscr__section-heading h2 {\n      margin-bottom: 8px;\n      color: var(--pscr-navy);\n      font-size: 24px;\n      font-weight: 800;\n      letter-spacing: -0.025em;\n      line-height: 1.2;\n    }\n\n    .pscr__gold-line {\n      position: relative;\n      overflow: hidden;\n      width: 54px;\n      height: 3px;\n      margin: 0 auto;\n      border-radius: 999px;\n      background: rgba(200, 155, 60, 0.22);\n    }\n\n    .pscr__gold-line::after {\n      content: \"\";\n      position: absolute;\n      inset: 0;\n      background: linear-gradient(90deg, transparent, var(--pscr-gold), transparent);\n      animation: pscr-line 2.6s ease-in-out infinite;\n    }\n\n    .pscr__list {\n      display: grid;\n      grid-template-columns: 1fr;\n      gap: 11px;\n      max-width: 700px;\n      margin: 0 auto;\n    }\n\n    .pscr__card {\n      position: relative;\n      display: grid;\n      grid-template-columns: 46px minmax(0, 1fr);\n      gap: 13px;\n      align-items: center;\n      overflow: hidden;\n      padding: 16px;\n      border: 1px solid rgba(16, 42, 67, 0.085);\n      border-radius: 17px;\n      background: linear-gradient(150deg, var(--pscr-white), var(--pscr-cream));\n      box-shadow: 0 8px 24px rgba(16, 42, 67, 0.07);\n      opacity: 0;\n      transform: translateY(14px);\n      animation: pscr-card-in 600ms cubic-bezier(0.22, 1, 0.36, 1) forwards;\n      transition: transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease;\n    }\n\n    .pscr__card:nth-child(1) { animation-delay: 420ms; }\n    .pscr__card:nth-child(2) { animation-delay: 510ms; }\n    .pscr__card:nth-child(3) { animation-delay: 600ms; }\n    .pscr__card:nth-child(4) { animation-delay: 690ms; }\n\n    .pscr__card::after {\n      content: \"\";\n      position: absolute;\n      right: -34px;\n      bottom: -34px;\n      width: 82px;\n      height: 82px;\n      border-radius: 50%;\n      background: rgba(200, 155, 60, 0.06);\n      transition: transform 280ms ease;\n    }\n\n    .pscr__card:hover,\n    .pscr__card:focus-within {\n      transform: translateY(-3px);\n      border-color: rgba(200, 155, 60, 0.32);\n      box-shadow: 0 14px 32px rgba(16, 42, 67, 0.11);\n    }\n\n    .pscr__card:hover::after {\n      transform: scale(1.35);\n    }\n\n    .pscr__icon {\n      display: grid;\n      width: 44px;\n      height: 44px;\n      border: 1px solid rgba(200, 155, 60, 0.22);\n      border-radius: 13px;\n      background: var(--pscr-gold-light);\n      color: var(--pscr-navy);\n      place-items: center;\n      transition: transform 240ms ease, background 240ms ease;\n    }\n\n    .pscr__card:hover .pscr__icon {\n      transform: translateY(-2px) rotate(-3deg);\n      background: #f3dfb0;\n    }\n\n    .pscr__icon svg {\n      width: 22px;\n      height: 22px;\n      fill: none;\n      stroke: currentColor;\n      stroke-width: 1.8;\n      stroke-linecap: round;\n      stroke-linejoin: round;\n    }\n\n    .pscr__card-copy {\n      position: relative;\n      z-index: 1;\n    }\n\n    .pscr__card h3 {\n      margin-bottom: 3px;\n      color: var(--pscr-navy);\n      font-size: 14px;\n      font-weight: 800;\n      line-height: 1.25;\n    }\n\n    .pscr__card p {\n      margin-bottom: 0;\n      color: var(--pscr-muted);\n      font-size: 12px;\n      line-height: 1.45;\n    }\n\n    .pscr__closing {\n      position: relative;\n      overflow: hidden;\n      margin-top: 26px;\n      padding: 27px 20px;\n      border: 1px solid rgba(200, 155, 60, 0.25);\n      border-radius: 19px;\n      background: linear-gradient(135deg, var(--pscr-gold-light), var(--pscr-cream));\n      text-align: center;\n      box-shadow: 0 10px 28px rgba(16, 42, 67, 0.065);\n      animation: pscr-fade-up 700ms 770ms both;\n    }\n\n    .pscr__closing::before,\n    .pscr__closing::after {\n      content: \"\";\n      position: absolute;\n      width: 80px;\n      height: 80px;\n      border: 1px solid rgba(200, 155, 60, 0.16);\n      border-radius: 50%;\n    }\n\n    .pscr__closing::before {\n      top: -48px;\n      left: -38px;\n    }\n\n    .pscr__closing::after {\n      right: -42px;\n      bottom: -50px;\n    }\n\n    .pscr__closing p {\n      position: relative;\n      z-index: 1;\n      max-width: 630px;\n      margin: 0 auto 12px;\n      color: var(--pscr-ink);\n      font-size: 14px;\n    }\n\n    .pscr__closing strong {\n      position: relative;\n      z-index: 1;\n      display: block;\n      color: var(--pscr-navy);\n      font-size: 16px;\n      letter-spacing: 0.01em;\n    }\n\n    @keyframes pscr-reveal {\n      from { opacity: 0; transform: translateY(12px) scale(0.99); }\n      to { opacity: 1; transform: translateY(0) scale(1); }\n    }\n\n    @keyframes pscr-fade-up {\n      from { opacity: 0; transform: translateY(10px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    @keyframes pscr-card-in {\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    @keyframes pscr-sheen {\n      0%, 64% { transform: translateX(-120%); }\n      86%, 100% { transform: translateX(120%); }\n    }\n\n    @keyframes pscr-pulse {\n      0%, 100% { box-shadow: 0 0 0 5px rgba(200, 155, 60, 0.1); }\n      50% { box-shadow: 0 0 0 8px rgba(200, 155, 60, 0.025); }\n    }\n\n    @keyframes pscr-orbit {\n      0%, 100% { transform: translate(0, 0) rotate(0deg); }\n      50% { transform: translate(-8px, 7px) rotate(8deg); }\n    }\n\n    @keyframes pscr-line {\n      from { transform: translateX(-110%); }\n      to { transform: translateX(110%); }\n    }\n\n    @media (min-width: 700px) {\n      .pscr__hero {\n        padding: 48px 36px 46px;\n        border-radius: 26px;\n      }\n\n      .pscr__intro {\n        font-size: 16px;\n      }\n\n      .pscr__features {\n        padding-top: 42px;\n      }\n\n      .pscr__section-heading h2 {\n        font-size: 28px;\n      }\n\n      .pscr__card {\n        grid-template-columns: 54px minmax(0, 1fr);\n        gap: 16px;\n        padding: 19px 21px;\n      }\n\n      .pscr__icon {\n        width: 50px;\n        height: 50px;\n      }\n\n      .pscr__card h3 {\n        font-size: 16px;\n      }\n\n      .pscr__card p {\n        font-size: 13px;\n      }\n\n      .pscr__closing {\n        margin-top: 34px;\n        padding: 32px 28px;\n      }\n\n      .pscr__closing p {\n        font-size: 15px;\n      }\n\n      .pscr__closing strong {\n        font-size: 18px;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      .pscr *,\n      .pscr *::before,\n      .pscr *::after {\n        scroll-behavior: auto !important;\n        animation-duration: 0.01ms !important;\n        animation-iteration-count: 1 !important;\n        transition-duration: 0.01ms !important;\n      }\n    }\n  \u003c\/style\u003e\n\n  \u003cdiv class=\"pscr__hero\"\u003e\n    \u003cspan class=\"pscr__eyebrow\"\u003ePet Spree™ Cube Roller\u003c\/span\u003e\n    \u003ch2\u003ePet Hair.\u003cbr\u003e\u003cspan\u003ePicked Up in Seconds.\u003c\/span\u003e\n\u003c\/h2\u003e\n    \u003cp class=\"pscr__intro\"\u003e\n      Keep your clothes looking neat wherever the day takes you. The \u003cstrong\u003ePet Spree™ Cube Roller\u003c\/strong\u003e lifts loose pet hair from fabric, then folds into a compact cube that is easy to carry, clean and use again.\n    \u003c\/p\u003e\n    \u003cdiv class=\"pscr__chips\" aria-label=\"Product highlights\"\u003e\n      \u003cspan class=\"pscr__chip\"\u003eCompact\u003c\/span\u003e\n      \u003cspan class=\"pscr__chip\"\u003eWashable\u003c\/span\u003e\n      \u003cspan class=\"pscr__chip\"\u003eReusable\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"pscr__features\"\u003e\n    \u003cdiv class=\"pscr__section-heading\"\u003e\n      \u003ch2\u003eSmall Roller. Big Everyday Difference.\u003c\/h2\u003e\n      \u003cdiv class=\"pscr__gold-line\" aria-hidden=\"true\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"pscr__list\"\u003e\n      \u003carticle class=\"pscr__card\"\u003e\n        \u003cspan class=\"pscr__icon\" aria-hidden=\"true\"\u003e\n          \u003csvg viewbox=\"0 0 24 24\"\u003e\u003cpath d=\"M4 16c4-1 7-4 8-8M8 20c4-1 8-5 9-9\"\u003e\u003c\/path\u003e\u003cpath d=\"M15 4l1 2 2 1-2 1-1 2-1-2-2-1 2-1 1-2ZM5 6l.7 1.3L7 8l-1.3.7L5 10l-.7-1.3L3 8l1.3-.7L5 6Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n        \u003c\/span\u003e\n        \u003cdiv class=\"pscr__card-copy\"\u003e\n          \u003ch3\u003eFast Fur Pickup\u003c\/h3\u003e\n          \u003cp\u003eRoll over your clothing to lift loose pet hair in a few quick passes.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/article\u003e\n\n      \u003carticle class=\"pscr__card\"\u003e\n        \u003cspan class=\"pscr__icon\" aria-hidden=\"true\"\u003e\n          \u003csvg viewbox=\"0 0 24 24\"\u003e\u003crect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\"\u003e\u003c\/rect\u003e\u003cpath d=\"M8 8h8v8H8zM8 8l8 8M16 8l-8 8\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n        \u003c\/span\u003e\n        \u003cdiv class=\"pscr__card-copy\"\u003e\n          \u003ch3\u003eCompact Cube Design\u003c\/h3\u003e\n          \u003cp\u003eCloses neatly for easy storage in your handbag, drawer or car.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/article\u003e\n\n      \u003carticle class=\"pscr__card\"\u003e\n        \u003cspan class=\"pscr__icon\" aria-hidden=\"true\"\u003e\n          \u003csvg viewbox=\"0 0 24 24\"\u003e\u003cpath d=\"M12 3s5 5.4 5 10a5 5 0 0 1-10 0c0-4.6 5-10 5-10Z\"\u003e\u003c\/path\u003e\u003cpath d=\"M9.5 14.5c.6 1.2 1.5 1.8 2.8 1.8\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n        \u003c\/span\u003e\n        \u003cdiv class=\"pscr__card-copy\"\u003e\n          \u003ch3\u003eWashable \u0026amp; Reusable\u003c\/h3\u003e\n          \u003cp\u003eRinse the hair-collecting surface, let it dry and it is ready to use again.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/article\u003e\n\n      \u003carticle class=\"pscr__card\"\u003e\n        \u003cspan class=\"pscr__icon\" aria-hidden=\"true\"\u003e\n          \u003csvg viewbox=\"0 0 24 24\"\u003e\u003cpath d=\"M8 7V5a4 4 0 0 1 8 0v2\"\u003e\u003c\/path\u003e\u003crect x=\"4\" y=\"7\" width=\"16\" height=\"14\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M8 12h8\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n        \u003c\/span\u003e\n        \u003cdiv class=\"pscr__card-copy\"\u003e\n          \u003ch3\u003eReady Wherever You Go\u003c\/h3\u003e\n          \u003cp\u003eKeep it nearby for quick touch-ups at home, at work or on the move.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/article\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"pscr__closing\"\u003e\n    \u003cp\u003eNo bulky rollers. No endless disposable sheets. Just a compact, reusable way to keep pet hair off your clothes.\u003c\/p\u003e\n    \u003cstrong\u003eRoll. Rinse. Reuse.\u003c\/strong\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e","brand":"Pet Spree","offers":[{"title":"Default Title","offer_id":54297783927097,"sku":null,"price":149.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1005\/4739\/5897\/files\/IMG-8766.png?v=1785598806","url":"https:\/\/www.petspree.co.za\/products\/pet-spree%e2%84%a2-cube-roller","provider":"Pet Spree","version":"1.0","type":"link"}