{"product_id":"rolling-treat-ball","title":"Rolling Treat Ball","description":"\u003c!-- TailVale Rolling Treat Dispenser | Paste into a Shopify Custom Liquid block --\u003e\n\u003cstyle\u003e\n    .treatroll {\n      --rt-ink: #242329;\n      --rt-red: #e3342f;\n      --rt-red-dark: #b92027;\n      --rt-yellow: #ffd45c;\n      --rt-blue: #72c4d5;\n      --rt-cream: #fff9ee;\n      --rt-paper: #fffefd;\n      --rt-muted: #706d70;\n      --rt-line: #e9dfd0;\n      color: var(--rt-ink);\n      background: var(--rt-cream);\n      border: 1px solid rgba(36,35,41,.1);\n      border-radius: 28px;\n      overflow: hidden;\n      font-family: inherit;\n      margin: 24px auto;\n      max-width: 1180px;\n      box-shadow: 0 24px 68px rgba(52,44,35,.09);\n      isolation: isolate;\n    }\n    .treatroll * { box-sizing: border-box; }\n    .treatroll a { color: inherit; }\n    .treatroll h2, .treatroll h3, .treatroll p { margin-top: 0; }\n    .treatroll__hero {\n      position: relative;\n      display: grid;\n      grid-template-columns: minmax(0,1fr) minmax(320px,1fr);\n      align-items: center;\n      gap: clamp(28px,5vw,66px);\n      min-height: 500px;\n      padding: clamp(30px,6vw,74px);\n      background:\n        radial-gradient(circle at 86% 14%,rgba(255,255,255,.62) 0 3px,transparent 4px),\n        radial-gradient(circle at 93% 22%,rgba(255,255,255,.55) 0 5px,transparent 6px),\n        linear-gradient(135deg,#ffe68b 0%,#ffd45c 48%,#ffc274 100%);\n      overflow: hidden;\n    }\n    .treatroll__hero:after {\n      content: \"\";\n      position: absolute;\n      right: -165px;\n      top: -205px;\n      width: 400px;\n      height: 400px;\n      border: 1px solid rgba(36,35,41,.14);\n      border-radius: 50%;\n      box-shadow: 0 0 0 28px rgba(36,35,41,.035),0 0 0 58px rgba(36,35,41,.025);\n      pointer-events: none;\n    }\n    .treatroll__copy { position: relative; z-index: 1; max-width: 590px; }\n    .treatroll__eyebrow {\n      display: inline-flex;\n      align-items: center;\n      gap: 9px;\n      margin: 0 0 21px;\n      padding: 8px 12px;\n      border: 1px solid rgba(36,35,41,.16);\n      border-radius: 999px;\n      background: rgba(255,250,238,.55);\n      color: var(--rt-ink);\n      font-size: 10px;\n      font-weight: 900;\n      letter-spacing: .15em;\n      text-transform: uppercase;\n    }\n    .treatroll__eyebrow:before { content: \"★\"; color: var(--rt-red); font-size: 12px; }\n    .treatroll__title {\n      max-width: 610px;\n      margin-bottom: 19px;\n      font-size: clamp(44px,6.5vw,78px);\n      font-weight: 850;\n      letter-spacing: -.07em;\n      line-height: .94;\n      text-wrap: balance;\n    }\n    .treatroll__title em { color: var(--rt-red); font-family: Georgia,serif; font-weight: 700; }\n    .treatroll__intro {\n      max-width: 500px;\n      margin-bottom: 27px;\n      color: #4e4a49;\n      font-size: clamp(15px,1.5vw,18px);\n      line-height: 1.72;\n    }\n    .treatroll__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 11px; }\n    .treatroll__button {\n      display: inline-flex;\n      justify-content: center;\n      align-items: center;\n      min-height: 48px;\n      padding: 0 19px;\n      border: 2px solid var(--rt-ink);\n      border-radius: 999px;\n      background: var(--rt-ink);\n      color: #fff9ee !important;\n      font-size: 13px;\n      font-weight: 850;\n      text-decoration: none;\n      transition: transform .2s ease,background .2s ease,box-shadow .2s ease;\n      cursor: pointer;\n    }\n    .treatroll__button:hover { transform: translateY(-2px) rotate(-1deg); background: #39363e; box-shadow: 0 8px 18px rgba(36,35,41,.18); }\n    .treatroll__button--quiet { background: transparent; color: var(--rt-ink) !important; }\n    .treatroll__button--quiet:hover { background: rgba(255,255,255,.48); }\n    .treatroll__micro { margin: 17px 0 0; color: #6f5c4b; font-size: 10px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }\n    .treatroll__stage {\n      position: relative;\n      display: grid;\n      min-height: 365px;\n      place-items: center;\n      overflow: hidden;\n      border: 1px solid rgba(36,35,41,.15);\n      border-radius: 28px 78px 30px 78px;\n      background:\n        radial-gradient(circle,rgba(36,35,41,.08) 1px,transparent 1.5px) 0 0\/19px 19px,\n        linear-gradient(145deg,#fffaf0,#f7ecd9);\n      box-shadow: inset 0 0 40px rgba(255,255,255,.7),0 15px 30px rgba(130,92,45,.08);\n      perspective: 900px;\n    }\n    .treatroll__stage:before {\n      content: \"\";\n      position: absolute;\n      left: 7%;\n      right: 7%;\n      bottom: 24%;\n      height: 2px;\n      background: repeating-linear-gradient(90deg,rgba(227,52,47,.55) 0 10px,transparent 10px 19px);\n      transform: rotate(-4deg);\n      opacity: .7;\n    }\n    .treatroll__stage:after {\n      content: \"\";\n      position: absolute;\n      width: 150px;\n      height: 150px;\n      right: 4%;\n      top: 9%;\n      border: 1px dashed rgba(227,52,47,.2);\n      border-radius: 50%;\n      transform: rotate(20deg) scaleX(1.35);\n    }\n    .treatroll__scene { position: relative; z-index: 2; width: min(100%,360px); height: 290px; }\n    .treatroll__toy {\n      position: absolute;\n      top: 48px;\n      left: 50%;\n      width: 330px;\n      height: 180px;\n      transform: translateX(-50%) rotate(-7deg);\n      transform-style: preserve-3d;\n    }\n    .treatroll__collar {\n      position: absolute;\n      z-index: 1;\n      top: 20px;\n      left: 17%;\n      width: 66%;\n      height: 142px;\n      border: 2px solid #15151a;\n      border-radius: 43px;\n      background: repeating-linear-gradient(90deg,#111216 0 5px,#29292f 5px 10px,#16171b 10px 15px);\n      box-shadow: inset 0 9px 9px rgba(255,255,255,.08),inset 0 -12px 14px rgba(0,0,0,.34),0 15px 22px rgba(25,22,20,.22);\n      animation: tr-rib 1.3s linear infinite;\n    }\n    .treatroll__cap {\n      position: absolute;\n      z-index: 2;\n      top: 8px;\n      width: 116px;\n      height: 164px;\n      border: 2px solid rgba(255,255,255,.35);\n      border-radius: 54% 46% 47% 53%;\n      background: radial-gradient(circle at 33% 25%,#ff7770 0%,#ed3934 34%,#c82129 100%);\n      box-shadow: inset 8px 7px 12px rgba(255,255,255,.24),inset -12px -13px 18px rgba(91,10,17,.28),0 19px 28px rgba(37,24,19,.23);\n    }\n    .treatroll__cap--left { left: 0; }\n    .treatroll__cap--right { right: 0; transform: scaleX(-1); }\n    .treatroll__window {\n      position: absolute;\n      z-index: 4;\n      top: 37px;\n      left: 31%;\n      width: 38%;\n      height: 112px;\n      overflow: hidden;\n      border: 4px solid rgba(255,255,255,.9);\n      border-radius: 28px;\n      background: linear-gradient(105deg,rgba(255,255,255,.56),rgba(202,232,237,.32) 42%,rgba(255,255,255,.65));\n      box-shadow: inset 0 0 0 1px rgba(30,37,39,.2),0 0 14px rgba(255,255,255,.5);\n    }\n    .treatroll__window:before {\n      content: \"\";\n      position: absolute;\n      z-index: 3;\n      top: -16px;\n      left: 18px;\n      width: 19px;\n      height: 145px;\n      transform: rotate(17deg);\n      border-radius: 50%;\n      background: rgba(255,255,255,.32);\n      pointer-events: none;\n    }\n    .treatroll__treat {\n      position: absolute;\n      z-index: 2;\n      display: block;\n      width: 23px;\n      height: 15px;\n      border: 1px solid rgba(102,64,32,.18);\n      border-radius: 5px 8px 5px 8px;\n      background: linear-gradient(145deg,#e8b45f,#b97935);\n      box-shadow: 0 2px 2px rgba(89,54,24,.18);\n      animation: tr-tumble 1.8s ease-in-out infinite;\n    }\n    .treatroll__treat--one { left: 15px; top: 30px; transform: rotate(18deg); }\n    .treatroll__treat--two { left: 48px; top: 63px; width: 18px; height: 18px; border-radius: 50%; background: #cf8751; animation-delay: -.6s; }\n    .treatroll__treat--three { right: 16px; top: 25px; width: 19px; height: 17px; border-radius: 50% 50% 4px 4px; background: #e3c28d; animation-delay: -.9s; }\n    .treatroll__treat--four { right: 39px; bottom: 19px; width: 24px; height: 13px; background: #bb6d43; animation-delay: -.3s; }\n    .treatroll__treat--five { left: 26px; bottom: 16px; width: 18px; height: 14px; background: #dec28c; animation-delay: -1.2s; }\n    .treatroll__window-bead {\n      position: absolute;\n      z-index: 5;\n      left: 50%;\n      top: 50%;\n      width: 12px;\n      height: 12px;\n      transform: translate(-50%,-50%);\n      border: 2px solid rgba(255,255,255,.8);\n      border-radius: 50%;\n      background: var(--rt-red);\n      box-shadow: 0 0 0 4px rgba(255,255,255,.28);\n    }\n    .treatroll__hole {\n      position: absolute;\n      z-index: 5;\n      top: 98px;\n      width: 39px;\n      height: 38px;\n      border: 5px solid #28282d;\n      border-radius: 50%;\n      background: radial-gradient(circle at 35% 30%,#f15148 0 35%,#9e1b23 75%);\n      box-shadow: inset 0 3px 6px rgba(0,0,0,.46),0 2px 3px rgba(255,255,255,.16);\n    }\n    .treatroll__hole--left { left: 39px; }\n    .treatroll__hole--right { right: 39px; }\n    .treatroll__sprinkle {\n      position: absolute;\n      z-index: 6;\n      top: 117px;\n      right: 58px;\n      width: 1px;\n      height: 1px;\n      opacity: 0;\n      pointer-events: none;\n    }\n    .treatroll__sprinkle i {\n      position: absolute;\n      display: block;\n      width: 13px;\n      height: 11px;\n      border-radius: 4px 7px 4px 7px;\n      background: linear-gradient(145deg,#f6cc75,#bd7636);\n      box-shadow: 0 2px 3px rgba(75,45,22,.2);\n      opacity: 0;\n      animation: tr-snack-pop 2.2s ease-out infinite;\n    }\n    .treatroll__sprinkle i:nth-child(1) { --tr-x: 28px; --tr-y: 42px; animation-delay: .1s; }\n    .treatroll__sprinkle i:nth-child(2) { --tr-x: 58px; --tr-y: 29px; animation-delay: .75s; }\n    .treatroll__sprinkle i:nth-child(3) { --tr-x: 79px; --tr-y: 54px; animation-delay: 1.4s; }\n    .treatroll__stage.is-playing .treatroll__toy { animation: tr-roll 3.8s ease-in-out infinite; }\n    .treatroll__stage.is-playing .treatroll__sprinkle { opacity: 1; }\n    .treatroll__stage:not(.is-playing) .treatroll__collar,\n    .treatroll__stage:not(.is-playing) .treatroll__treat,\n    .treatroll__stage:not(.is-playing) .treatroll__sprinkle i,\n    .treatroll__stage:not(.is-playing) .treatroll__paw { animation-play-state: paused; }\n    .treatroll__paw {\n      position: absolute;\n      z-index: 1;\n      bottom: 12%;\n      left: 13%;\n      width: 18px;\n      height: 15px;\n      border-radius: 50% 50% 45% 45%;\n      background: rgba(227,52,47,.23);\n      transform: rotate(-18deg);\n      animation: tr-paw 2.4s ease-in-out infinite;\n    }\n    .treatroll__paw:before {\n      content: \"\";\n      position: absolute;\n      left: -3px;\n      top: -9px;\n      width: 7px;\n      height: 8px;\n      border-radius: 50%;\n      background: inherit;\n      box-shadow: 9px -4px 0 rgba(227,52,47,.23),18px 0 0 rgba(227,52,47,.23);\n    }\n    .treatroll__paw--two { left: 25%; bottom: 9%; animation-delay: .3s; transform: rotate(13deg) scale(.85); }\n    .treatroll__shadow {\n      position: absolute;\n      z-index: 1;\n      left: 19%;\n      right: 19%;\n      bottom: 19%;\n      height: 20px;\n      border-radius: 50%;\n      background: rgba(50,39,27,.15);\n      filter: blur(9px);\n      animation: tr-shadow 3.8s ease-in-out infinite;\n    }\n    .treatroll__stage:not(.is-playing) .treatroll__shadow { animation-play-state: paused; }\n    .treatroll__stamp {\n      position: absolute;\n      z-index: 7;\n      top: 8%;\n      left: 7%;\n      display: grid;\n      width: 75px;\n      height: 75px;\n      place-content: center;\n      border: 2px solid var(--rt-ink);\n      border-radius: 50%;\n      background: var(--rt-red);\n      color: white;\n      text-align: center;\n      font-size: 9px;\n      font-weight: 900;\n      letter-spacing: .08em;\n      line-height: 1.3;\n      text-transform: uppercase;\n      transform: rotate(-13deg);\n      box-shadow: 3px 4px 0 var(--rt-ink);\n    }\n    @keyframes tr-roll {\n      0%,100% { transform: translateX(-50%) translateX(-12px) rotate(-7deg); }\n      50% { transform: translateX(-50%) translateX(12px) rotate(7deg); }\n    }\n    @keyframes tr-rib { to { background-position: 15px 0; } }\n    @keyframes tr-tumble {\n      0%,100% { margin-top: 0; }\n      50% { margin-top: 8px; }\n    }\n    @keyframes tr-snack-pop {\n      0%,10% { opacity: 0; transform: translate(0,0) rotate(-8deg) scale(.3); }\n      26% { opacity: 1; }\n      80% { opacity: .9; }\n      100% { opacity: 0; transform: translate(var(--tr-x),var(--tr-y)) rotate(28deg) scale(.82); }\n    }\n    @keyframes tr-paw { 0%,100% { opacity: .35; } 50% { opacity: .9; } }\n    @keyframes tr-shadow { 0%,100% { transform: scaleX(1); opacity: .7; } 50% { transform: scaleX(.88); opacity: .45; } }\n    .treatroll__ribbon {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 16px;\n      padding: 17px clamp(24px,6vw,74px);\n      border-bottom: 1px solid var(--rt-line);\n      background: #27262c;\n      color: #fff9ee;\n      font-size: 10px;\n      font-weight: 850;\n      letter-spacing: .16em;\n      text-transform: uppercase;\n    }\n    .treatroll__ribbon span { display: inline-flex; align-items: center; gap: 9px; }\n    .treatroll__ribbon span:before { content: \"✦\"; color: var(--rt-yellow); font-size: 14px; }\n    .treatroll__body { padding: clamp(34px,6vw,72px); }\n    .treatroll__section-head { display: flex; justify-content: space-between; align-items: end; gap: 22px; margin-bottom: 27px; }\n    .treatroll__section-head .treatroll__eyebrow { margin-bottom: 11px; background: #ffe9a7; }\n    .treatroll__section-head h3 { max-width: 620px; margin-bottom: 0; font-size: clamp(30px,4vw,47px); letter-spacing: -.055em; line-height: 1.04; }\n    .treatroll__section-note { max-width: 255px; margin: 0; color: var(--rt-muted); font-size: 13px; line-height: 1.65; }\n    .treatroll__features { display: grid; grid-template-columns: repeat(3,1fr); gap: 13px; }\n    .treatroll__feature {\n      min-height: 190px;\n      padding: 23px;\n      border: 1px solid var(--rt-line);\n      border-radius: 18px 18px 18px 4px;\n      background: var(--rt-paper);\n      box-shadow: 0 9px 24px rgba(52,44,35,.035);\n      transition: transform .2s ease,box-shadow .2s ease;\n    }\n    .treatroll__feature:hover { transform: translateY(-4px) rotate(-.5deg); box-shadow: 0 16px 30px rgba(52,44,35,.09); }\n    .treatroll__number { display: block; margin-bottom: 24px; color: var(--rt-red); font-size: 10px; font-weight: 900; letter-spacing: .16em; }\n    .treatroll__feature h4 { margin: 0 0 9px; color: var(--rt-ink); font-size: 19px; letter-spacing: -.03em; }\n    .treatroll__feature p { margin: 0; color: var(--rt-muted); font-size: 13px; line-height: 1.7; }\n    .treatroll__how {\n      display: grid;\n      grid-template-columns: .8fr 1.2fr;\n      gap: clamp(26px,5vw,62px);\n      margin-top: clamp(42px,7vw,76px);\n      padding: clamp(24px,4vw,42px);\n      border: 1px solid rgba(227,52,47,.16);\n      border-radius: 24px;\n      background: linear-gradient(125deg,#fff0d0,#fff8eb);\n    }\n    .treatroll__how-title h3 { margin: 0 0 12px; font-size: clamp(28px,3vw,38px); letter-spacing: -.055em; line-height: 1.04; }\n    .treatroll__how-title p { margin: 0; color: var(--rt-muted); font-size: 13px; line-height: 1.7; }\n    .treatroll__steps { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; counter-reset: tr-step; }\n    .treatroll__steps li {\n      display: grid;\n      grid-template-columns: 38px 1fr;\n      align-items: center;\n      gap: 13px;\n      padding: 13px 0;\n      border-bottom: 1px solid rgba(36,35,41,.11);\n      color: var(--rt-ink);\n      font-size: 14px;\n      line-height: 1.55;\n      counter-increment: tr-step;\n    }\n    .treatroll__steps li:last-child { border: 0; padding-bottom: 0; }\n    .treatroll__steps li:before {\n      content: \"0\" counter(tr-step);\n      display: grid;\n      width: 35px;\n      height: 35px;\n      place-items: center;\n      border: 1px solid rgba(36,35,41,.14);\n      border-radius: 50%;\n      background: var(--rt-yellow);\n      color: var(--rt-ink);\n      font-size: 10px;\n      font-weight: 900;\n    }\n    .treatroll__care {\n      display: flex;\n      gap: 14px;\n      align-items: flex-start;\n      margin-top: 14px;\n      padding: 19px 21px;\n      border: 1px solid rgba(227,52,47,.18);\n      border-radius: 18px;\n      background: #fff2ed;\n    }\n    .treatroll__care-mark {\n      display: grid;\n      flex: 0 0 30px;\n      width: 30px;\n      height: 30px;\n      place-items: center;\n      border-radius: 50%;\n      background: var(--rt-red);\n      color: white;\n      font-size: 14px;\n      font-weight: 900;\n    }\n    .treatroll__care strong { display: block; margin-bottom: 4px; color: #8f2929; font-size: 13px; }\n    .treatroll__care p { margin: 0; color: #766665; font-size: 12px; line-height: 1.65; }\n    .treatroll__faq { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(28px,5vw,64px); margin-top: clamp(44px,7vw,80px); }\n    .treatroll__faq-intro h3 { margin: 0 0 12px; font-size: clamp(30px,4vw,45px); letter-spacing: -.055em; line-height: 1.03; }\n    .treatroll__faq-intro p { margin: 0; color: var(--rt-muted); font-size: 13px; line-height: 1.65; }\n    .treatroll__questions { border-top: 1px solid var(--rt-line); }\n    .treatroll__questions details { border-bottom: 1px solid var(--rt-line); }\n    .treatroll__questions summary {\n      position: relative;\n      padding: 18px 42px 18px 0;\n      color: var(--rt-ink);\n      font-size: 14px;\n      font-weight: 800;\n      list-style: none;\n      cursor: pointer;\n    }\n    .treatroll__questions summary::-webkit-details-marker { display: none; }\n    .treatroll__questions summary:after {\n      content: \"+\";\n      position: absolute;\n      top: 50%;\n      right: 4px;\n      display: grid;\n      width: 26px;\n      height: 26px;\n      place-items: center;\n      transform: translateY(-50%);\n      border: 1px solid rgba(36,35,41,.2);\n      border-radius: 50%;\n      background: #fff3d0;\n      color: var(--rt-red);\n      font-size: 18px;\n      font-weight: 400;\n      transition: transform .2s ease;\n    }\n    .treatroll__questions details[open] summary:after { content: \"−\"; transform: translateY(-50%) rotate(180deg); }\n    .treatroll__answer { max-width: 620px; padding: 0 30px 18px 0; color: var(--rt-muted); font-size: 13px; line-height: 1.7; }\n    .treatroll__footer {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 22px;\n      margin-top: clamp(34px,5vw,56px);\n      padding-top: 21px;\n      border-top: 1px solid var(--rt-line);\n    }\n    .treatroll__footer p { margin: 0; color: #8a7a6c; font-size: 10px; font-weight: 800; letter-spacing: .08em; }\n    @media (max-width: 760px) {\n      .treatroll { border-radius: 21px; }\n      .treatroll__hero { grid-template-columns: 1fr; gap: 20px; min-height: 0; padding: 30px 23px 24px; }\n      .treatroll__title { font-size: clamp(45px,13vw,69px); }\n      .treatroll__stage { min-height: 330px; }\n      .treatroll__scene { transform: scale(.9); transform-origin: center center; }\n      .treatroll__ribbon { justify-content: flex-start; overflow: auto; white-space: nowrap; padding: 15px 22px; }\n      .treatroll__body { padding: 35px 22px; }\n      .treatroll__section-head { display: block; }\n      .treatroll__section-note { margin-top: 12px; }\n      .treatroll__features { grid-template-columns: 1fr; }\n      .treatroll__feature { min-height: 0; }\n      .treatroll__number { margin-bottom: 15px; }\n      .treatroll__how,.treatroll__faq { grid-template-columns: 1fr; }\n      .treatroll__how { gap: 21px; }\n      .treatroll__footer { align-items: flex-start; flex-direction: column; }\n    }\n    @media (prefers-reduced-motion: reduce) {\n      .treatroll *, .treatroll *:before, .treatroll *:after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }\n    }\n  \u003c\/style\u003e\n\u003csection class=\"treatroll\"\u003e\n\u003cdiv class=\"treatroll__hero\"\u003e\n\u003cdiv class=\"treatroll__copy\"\u003e\n\u003cp class=\"treatroll__eyebrow\"\u003eTailVale · rolling treat dispenser\u003c\/p\u003e\n\u003ch2 class=\"treatroll__title\" id=\"treatroll-title\"\u003eRoll. Sniff. \u003cem\u003eReward.\u003c\/em\u003e\n\u003c\/h2\u003e\n\u003cp class=\"treatroll__intro\"\u003eTurn treat time into a little game with the TailVale Rolling Treat Dispenser. Add treats to the clear centre chamber and let your dog nudge and roll the toy to discover them.\u003c\/p\u003e\n\u003cdiv class=\"treatroll__actions\"\u003e\n\u003ca class=\"treatroll__button\" href=\"#treatroll-details\"\u003eSee how it works \u003cspan\u003e ↘\u003c\/span\u003e\u003c\/a\u003e \u003cbutton class=\"treatroll__button treatroll__button--quiet\" type=\"button\" data-tr-toggle=\"\"\u003ePause the roll\u003c\/button\u003e\n\u003c\/div\u003e\n\u003cp class=\"treatroll__micro\"\u003eA nudge here · a snack there · let the game roll\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__stage is-playing\" data-tr-stage=\"\" role=\"img\"\u003e\n\u003cspan class=\"treatroll__stamp\"\u003esnack\u003cbr\u003equest\u003cbr\u003eon!\u003c\/span\u003e \u003cspan class=\"treatroll__paw\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__paw treatroll__paw--two\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__shadow\"\u003e\u003c\/span\u003e\n\u003cdiv class=\"treatroll__scene\"\u003e\n\u003cdiv class=\"treatroll__toy\"\u003e\n\u003cdiv class=\"treatroll__collar\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"treatroll__cap treatroll__cap--left\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"treatroll__cap treatroll__cap--right\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"treatroll__window\"\u003e\n\u003cspan class=\"treatroll__treat treatroll__treat--one\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__treat treatroll__treat--two\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__treat treatroll__treat--three\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__treat treatroll__treat--four\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__treat treatroll__treat--five\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__window-bead\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cspan class=\"treatroll__hole treatroll__hole--left\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__hole treatroll__hole--right\"\u003e\u003c\/span\u003e \u003cspan class=\"treatroll__sprinkle\"\u003e\u003ci\u003e\u003c\/i\u003e\u003ci\u003e\u003c\/i\u003e\u003ci\u003e\u003c\/i\u003e\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__ribbon\"\u003e\n\u003cspan\u003eRolling play\u003c\/span\u003e\u003cspan\u003eClear treat chamber\u003c\/span\u003e\u003cspan\u003eTreats on the move\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__body\" id=\"treatroll-details\"\u003e\n\u003cdiv class=\"treatroll__section-head\"\u003e\n\u003cdiv\u003e\n\u003cp class=\"treatroll__eyebrow\"\u003eLet curiosity do the work\u003c\/p\u003e\n\u003ch3\u003eA snack-time side quest for curious noses.\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cp class=\"treatroll__section-note\"\u003eA rolling toy, a few treats and a little room to explore make for a playful change to the routine.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__features\"\u003e\n\u003carticle class=\"treatroll__feature\"\u003e\u003cspan class=\"treatroll__number\"\u003e01 \/ LOAD\u003c\/span\u003e\n\u003ch4\u003eAdd a few treats\u003c\/h4\u003e\n\u003cp\u003ePlace suitable treats in the clear chamber, following the instructions supplied with the toy.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"treatroll__feature\"\u003e\u003cspan class=\"treatroll__number\"\u003e02 \/ ROLL\u003c\/span\u003e\n\u003ch4\u003eLet paws investigate\u003c\/h4\u003e\n\u003cp\u003eYour dog can nudge and roll the dispenser to move treats toward the openings.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003carticle class=\"treatroll__feature\"\u003e\u003cspan class=\"treatroll__number\"\u003e03 \/ DISCOVER\u003c\/span\u003e\n\u003ch4\u003eEnjoy the little wins\u003c\/h4\u003e\n\u003cp\u003eAs the toy moves, treats can come through the openings for your dog to find.\u003c\/p\u003e\n\u003c\/article\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__how\"\u003e\n\u003cdiv class=\"treatroll__how-title\"\u003e\n\u003cp class=\"treatroll__eyebrow\"\u003eReady, set, roll\u003c\/p\u003e\n\u003ch3\u003eStart with a short play session.\u003c\/h3\u003e\n\u003cp\u003eLet your dog get familiar with the toy and its movement at their own pace.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003col class=\"treatroll__steps\"\u003e\n\u003cli\u003eAdd suitable treats to the centre chamber as directed.\u003c\/li\u003e\n\u003cli\u003ePlace the dispenser on a clear, open area of floor.\u003c\/li\u003e\n\u003cli\u003eSupervise your dog while they nudge and roll it to find the treats.\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__care\"\u003e\n\u003cspan class=\"treatroll__care-mark\"\u003e!\u003c\/span\u003e\n\u003cdiv\u003e\n\u003cstrong\u003ePlay note\u003c\/strong\u003e\n\u003cp\u003eSupervise play and follow the care and safety instructions supplied with the dispenser. Remove it from play if it becomes damaged.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__faq\" id=\"treatroll-faq\"\u003e\n\u003cdiv class=\"treatroll__faq-intro\"\u003e\n\u003cp class=\"treatroll__eyebrow\"\u003eQuick answers\u003c\/p\u003e\n\u003ch3\u003eGood to know before play.\u003c\/h3\u003e\n\u003cp\u003eTap a question to open the answer.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__questions\"\u003e\n\u003cdetails\u003e\n\u003csummary\u003eWhat is the Rolling Treat Dispenser?\u003c\/summary\u003e\n\u003cdiv class=\"treatroll__answer\"\u003eIt is a rolling interactive toy with a clear centre chamber for treats and openings for treats to come through as the toy moves.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eHow do treats come out?\u003c\/summary\u003e\n\u003cdiv class=\"treatroll__answer\"\u003eAs your dog nudges and rolls the dispenser, treats shift inside the chamber and can come through the openings.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eHow do I get started?\u003c\/summary\u003e\n\u003cdiv class=\"treatroll__answer\"\u003eAdd suitable treats as directed, place the toy on a clear area of floor and let your dog explore it under supervision.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eWhat treats should I use?\u003c\/summary\u003e\n\u003cdiv class=\"treatroll__answer\"\u003eChoose treats that fit the dispenser openings and follow the product instructions.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCan I leave my dog alone with it?\u003c\/summary\u003e\n\u003cdiv class=\"treatroll__answer\"\u003eSupervise your dog during play and remove the dispenser if it becomes damaged.\u003c\/div\u003e\n\u003c\/details\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"treatroll__footer\"\u003e\n\u003cp\u003eTAILVALE · LET THE LITTLE ADVENTURES ROLL\u003c\/p\u003e\n\u003ca class=\"treatroll__button\" href=\"#treatroll-title\"\u003eBack to the top ↑\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function () {\n      var root = document.currentScript \u0026\u0026 document.currentScript.closest('.treatroll');\n      if (!root) return;\n\n      var stage = root.querySelector('[data-tr-stage]');\n      var toggle = root.querySelector('[data-tr-toggle]');\n      if (!stage || !toggle) return;\n\n      toggle.addEventListener('click', function () {\n        var playing = stage.classList.toggle('is-playing');\n        toggle.setAttribute('aria-pressed', String(playing));\n        toggle.textContent = playing ? 'Pause the roll' : 'Roll again';\n      });\n    })();\n  \u003c\/script\u003e\u003c\/section\u003e","brand":"TailVale","offers":[{"title":"Blue","offer_id":67583699517682,"sku":null,"price":599.0,"currency_code":"ZAR","in_stock":true},{"title":"Red","offer_id":67583699615986,"sku":null,"price":599.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0856\/3143\/4994\/files\/red.jpg?v=1790589872","url":"https:\/\/tailvale.co.za\/products\/rolling-treat-ball","provider":"TailVale","version":"1.0","type":"link"}