{"product_id":"black-dog-tuxedo","title":"Black Dog Tuxedo","description":"\u003cdiv class=\"pawse-pdp\"\u003e\n\n\u003cdiv class=\"pawse-value-strip\"\u003e\n  \u003cp class=\"pawse-notify-line\"\u003eSold out for now. \u003ca href=\"mailto:support@pawse.au?subject=Notify%20me%3A%20Black%20Dog%20Tuxedo%20XL\"\u003eEmail me when it’s back →\u003c\/a\u003e\u003c\/p\u003e\n  \u003cul class=\"pawse-trust-badges\"\u003e\n    \u003cli\u003e\n\u003cspan class=\"icon\"\u003e🎀\u003c\/span\u003e\u003cspan\u003eReal satin bow tie, not glued\u003c\/span\u003e\n\u003c\/li\u003e\n    \u003cli\u003e\n\u003cspan class=\"icon\"\u003e🐕\u003c\/span\u003e\u003cspan\u003eLarge dogs 28–40 kg · chest 80–98 cm\u003c\/span\u003e\n\u003c\/li\u003e\n    \u003cli\u003e\n\u003cspan class=\"icon\"\u003e✨\u003c\/span\u003e\u003cspan\u003ePull-on, no zippers, no plastic stiffener\u003c\/span\u003e\n\u003c\/li\u003e\n    \u003cli\u003e\n\u003cspan class=\"icon\"\u003e📦\u003c\/span\u003e\u003cspan\u003eFree AU shipping over $65\u003c\/span\u003e\n\u003c\/li\u003e\n  \u003c\/ul\u003e\n\u003c\/div\u003e\n\n\u003cp class=\"pawse-hook\"\u003e\u003cem\u003eMade for weddings, Christmas cards, and the moments your dog belongs in the photo.\u003c\/em\u003e\u003c\/p\u003e\n\u003cdiv class=\"pawse-jdgm-preview\"\u003e\n  \u003cdiv class=\"jdgm-widget jdgm-prev-badge\" data-id=\"10204229402937\" data-template=\"product\" data-style=\"\" data-product-title=\"Black Dog Tuxedo\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"pawse-tagline\"\u003eA soft fleece dog tuxedo with a sewn-in white shirt front and a real wine-red satin bow tie.\u003c\/p\u003e\n\u003cp class=\"pawse-intro-para\"\u003eThe PAWSE Black Dog Tuxedo is a soft fleece formal piece designed for large dogs. Cut from a brushed black fleece with a sewn-in white triangle shirt front and a wine-red satin bow tie that ties at the back of the collar (not glued, not velcroed), it slips on over the head and sits on the shoulders without clips, plastic stiffeners, or pressure points. Cut short on the back so it doesn’t drag when a large dog sits down — built for the photo and easy to wear before and after it.\u003c\/p\u003e\n\n\u003ch3\u003eAt a glance\u003c\/h3\u003e\n\u003cul class=\"pawse-bullets\"\u003e\n  \u003cli\u003eBrushed fleece body, sewn-in white triangle shirt front\u003c\/li\u003e\n  \u003cli\u003eReal wine-red satin bow tie that ties at the back of the collar\u003c\/li\u003e\n  \u003cli\u003eNo plastic stiffener anywhere a dog needs to bend\u003c\/li\u003e\n  \u003cli\u003eHand wash cold, drip dry — iron bow tie on low if needed\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eDogs love it\u003c\/h3\u003e\n\u003cul class=\"pawse-bullets\"\u003e\n  \u003cli\u003eSoft brushed fleece against the body — no scratching seams\u003c\/li\u003e\n  \u003cli\u003eNo plastic stiffener anywhere a dog needs to bend (shoulders, chest, hips)\u003c\/li\u003e\n  \u003cli\u003ePull-on shoulders sit softly over a harness\u003c\/li\u003e\n  \u003cli\u003eBow tie ties properly so it can be re-tied if it shifts\u003c\/li\u003e\n  \u003cli\u003e92% polyester fleece + 8% spandex, cut short on the back\u003c\/li\u003e\n  \u003cli\u003eHand wash cold, drip dry — iron bow tie on low if needed\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eSizing\u003c\/h3\u003e\n\u003cdiv class=\"pawse-size-illustration\"\u003e\n  \u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0975\/2310\/6105\/files\/pawse-sizing-dog.png?v=1778856571\" alt=\"PAWSE measurement diagram showing chest, neck, and back length\" loading=\"lazy\"\u003e\n\u003c\/div\u003e\n\u003ctable class=\"pawse-size-table\"\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth\u003eSize\u003c\/th\u003e\n\u003cth\u003eWeight\u003c\/th\u003e\n\u003cth\u003eChest\u003c\/th\u003e\n\u003cth\u003eNeck\u003c\/th\u003e\n\u003cth\u003eBack\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eXL\u003c\/td\u003e\n\u003ctd\u003e28–40 kg\u003c\/td\u003e\n\u003ctd\u003e80–98 cm\u003c\/td\u003e\n\u003ctd\u003e44–54 cm\u003c\/td\u003e\n\u003ctd\u003e55–68 cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eXXL (coming soon)\u003c\/td\u003e\n\u003ctd\u003e40–55 kg\u003c\/td\u003e\n\u003ctd\u003e98–115 cm\u003c\/td\u003e\n\u003ctd\u003e54–62 cm\u003c\/td\u003e\n\u003ctd\u003e68–82 cm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003cul class=\"pawse-bullets pawse-size-notes\"\u003e\n  \u003cli\u003eChest at the widest point, just behind the front legs.\u003c\/li\u003e\n  \u003cli\u003eNeck loose enough to fit two fingers between tape and fur.\u003c\/li\u003e\n  \u003cli\u003eBack from shoulder blades to the base of the tail.\u003c\/li\u003e\n  \u003cli\u003eBetween sizes? Go up — a pull-on is kinder loose than tight.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003caside class=\"pawse-attention\"\u003e\n  \u003cp class=\"pawse-attention-eyebrow\"\u003eWhere it belongs\u003c\/p\u003e\n\u003cp class=\"pawse-attention-quote\"\u003e\u003cem\u003e“Twenty-three guests asked where it was from.”\u003c\/em\u003e\u003cbr\u003e\u003cspan class=\"pawse-attention-attrib\"\u003e— from Marlow’s wedding, 2025\u003c\/span\u003e\u003c\/p\u003e\n  \u003cul class=\"pawse-attention-bullets\"\u003e\n    \u003cli\u003eWeddings — the photo where your dog stands at the altar\u003c\/li\u003e\n    \u003cli\u003eChristmas cards and holiday family portraits\u003c\/li\u003e\n    \u003cli\u003eGraduations and milestone family photos\u003c\/li\u003e\n    \u003cli\u003eThe dinner where the dog earns a chair at the table\u003c\/li\u003e\n  \u003c\/ul\u003e\n  \u003cp class=\"pawse-attention-note\"\u003e\u003cem\u003eBest for ceremony and supervised photo events. If your dog is a heavy lap-sitter, the bow tie may shift on contact — re-tying takes about 10 seconds. Not designed for outdoor sport, heavy rain, or rough play.\u003c\/em\u003e\u003c\/p\u003e\n\u003c\/aside\u003e\n\n\u003cdetails class=\"pawse-accordion\"\u003e\n  \u003csummary\u003eQuestions\u003c\/summary\u003e\n  \u003cdiv class=\"pawse-qa\"\u003e\n\u003cp class=\"pawse-q\"\u003eWill the bow tie fall off?\u003c\/p\u003e\n\u003cp class=\"pawse-a\"\u003eNo. It ties at the back of the collar like a real bow tie. If your dog scratches it loose, re-tying takes about 10 seconds.\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"pawse-qa\"\u003e\n\u003cp class=\"pawse-q\"\u003eCan my dog wear it over a harness?\u003c\/p\u003e\n\u003cp class=\"pawse-a\"\u003eYes. Loosen the harness one notch first. The tuxedo sits over the harness without pinching.\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"pawse-qa\"\u003e\n\u003cp class=\"pawse-q\"\u003eWill the fleece lint onto a black dog’s coat?\u003c\/p\u003e\n\u003cp class=\"pawse-a\"\u003eNo. The fleece is bonded — it doesn’t shed onto dark coats.\u003c\/p\u003e\n\u003c\/div\u003e\n  \u003cdiv class=\"pawse-qa\"\u003e\n\u003cp class=\"pawse-q\"\u003eCan I machine wash it?\u003c\/p\u003e\n\u003cp class=\"pawse-a\"\u003eHand wash gives the best longevity. If you must machine wash, cold + gentle cycle + air dry, and remove the bow tie first.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/details\u003e\n\n\u003cdiv class=\"pawse-particles\" data-id=\"bottom\" data-catdog=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0975\/2310\/6105\/files\/pawse-particles-catdog.png?v=1778857581\" data-paw=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0975\/2310\/6105\/files\/pawse-particles-paw.png?v=1778857587\"\u003e\n  \u003ccanvas aria-hidden=\"true\"\u003e\u003c\/canvas\u003e\n  \u003cdiv class=\"pawse-particles-fallback\"\u003e\n    \u003cp class=\"pawse-particles-mark\"\u003ePAWSE\u003c\/p\u003e\n    \u003cp class=\"pawse-particles-line\"\u003ePause for the one who lives for you.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cspan class=\"pawse-particles-sr\"\u003ePAWSE — Pause for the one who lives for you. A brand for cats and dogs designed in Melbourne.\u003c\/span\u003e\n\u003c\/div\u003e\n\n\u003ch3 class=\"pawse-reviews-heading\"\u003eReviews\u003c\/h3\u003e\n\u003cdiv class=\"pawse-jdgm-widget\"\u003e\n  \u003cdiv class=\"jdgm-widget jdgm-review-widget\" data-id=\"10204229402937\" data-product-title=\"Black Dog Tuxedo\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"pawse-sticky-cta\" role=\"complementary\" aria-label=\"Quick actions\"\u003e\n  \u003cdiv class=\"pawse-sticky-info\"\u003e\n    \u003cspan class=\"pawse-sticky-name\"\u003eBlack Dog Tuxedo\u003c\/span\u003e\n    \u003cspan class=\"pawse-sticky-price\"\u003e$79.95\u003c\/span\u003e\n  \u003c\/div\u003e\n  \u003ca class=\"pawse-sticky-btn\" href=\"mailto:support@pawse.au?subject=Notify%20me%3A%20Black%20Dog%20Tuxedo%20XL\"\u003eNotify me\u003c\/a\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  if (typeof window === 'undefined') return;\n  if (window.__pawseParticlesV8) return; window.__pawseParticlesV8 = true;\n\n  function init(){\n    var blocks = document.querySelectorAll('.pawse-particles');\n    if (!blocks.length) return;\n\n    blocks.forEach(function(block){\n      var canvas = block.querySelector('canvas');\n      if (!canvas || !canvas.getContext) return;\n      var ctx = canvas.getContext('2d');\n      var dpr = Math.max(1, window.devicePixelRatio || 1);\n      var W=0, H=0;\n      var particles = [];\n      var mouse = { x:-9999, y:-9999, active:false };\n      var startTime = 0, running = false, rafId = 0;\n      var fonts = (document.fonts \u0026\u0026 document.fonts.ready) ? document.fonts.ready : Promise.resolve();\n\n      var catDogUrl = block.getAttribute('data-catdog');\n      var pawUrl    = block.getAttribute('data-paw');\n      var catDogImg = null, pawImg = null;\n\n      var CFG = {\n        particleSize: 1.1,\n        densityStep: 1,\n        mouseRadius: 90,\n        repulsion: 3.5,\n        spring: 0.18,\n        damping: 0.92,\n        jitter: 0.02,\n        trailAlpha: 0.22,\n        entranceMs: 900\n      };\n\n      function loadImage(url){\n        if (!url) return Promise.resolve(null);\n        return new Promise(function(res){\n          var img = new Image();\n          img.crossOrigin = 'anonymous';\n          img.onload = function(){ res(img); };\n          img.onerror = function(){ res(null); };\n          img.src = url;\n        });\n      }\n\n      function size(){\n        var rect = block.getBoundingClientRect();\n        W = rect.width|0; H = rect.height|0;\n        if (W\u003c=0 || H\u003c=0) return false;\n        canvas.width = W*dpr; canvas.height = H*dpr;\n        canvas.style.width = W+'px'; canvas.style.height = H+'px';\n        ctx.setTransform(dpr,0,0,dpr,0,0);\n        return true;\n      }\n\n      function buildParticles(){\n        var off = document.createElement('canvas');\n        off.width = W; off.height = H;\n        var o = off.getContext('2d');\n        var isMobile = W \u003c 480;\n\n        \/\/ Cat+dog illustration at top — closer to PAWSE\n        var catDogBottom = 0;\n        if (catDogImg){\n          var imgW = Math.min(isMobile ? 175 : 240, W * 0.50);\n          var imgH = imgW * (catDogImg.height \/ catDogImg.width);\n          var imgX = W\/2 - imgW\/2;\n          var imgY = isMobile ? 6 : 10;\n          try { o.drawImage(catDogImg, imgX, imgY, imgW, imgH); } catch(e){}\n          catDogBottom = imgY + imgH;\n        } else {\n          catDogBottom = H * 0.12;\n        }\n\n        \/\/ PAWSE wordmark — small gap below cat+dog (18 instead of 55)\n        var gap = isMobile ? -14 : -22;\n        var pawseSize = Math.min(isMobile ? 56 : 92, W * 0.14);\n        var pawseY = catDogBottom + gap + pawseSize\/2;\n\n        \/\/ Paws on left + right\n        if (pawImg){\n          var pawSize = isMobile ? 40 : 60;\n          var pawseHalfW = pawseSize * 1.45;\n          var pawXLeft = W\/2 - pawseHalfW - pawSize - 4;\n          var pawXRight = W\/2 + pawseHalfW + 4;\n          if (pawXLeft \u003e 4){\n            try {\n              o.drawImage(pawImg, pawXLeft, pawseY - pawSize\/2, pawSize, pawSize);\n              o.drawImage(pawImg, pawXRight, pawseY - pawSize\/2, pawSize, pawSize);\n            } catch(e){}\n          }\n        }\n\n        \/\/ PAWSE text in brand brown\n        o.fillStyle = '#984B2C';\n        o.textAlign = 'center';\n        o.textBaseline = 'middle';\n        o.font = '400 ' + pawseSize + \"px 'Fraunces', 'Times New Roman', serif\";\n        o.fillText('PAWSE', W\/2, pawseY);\n\n        \/\/ Larger tagline\n        var size2 = Math.min(isMobile ? 22 : 30, W * 0.045);\n        var taglineY = pawseY + pawseSize*0.55 + (isMobile ? 18 : 26);\n        if (taglineY \u003e H - 8){ taglineY = H - 14; }\n        o.font = 'italic 300 ' + size2 + \"px 'Fraunces', 'Times New Roman', serif\";\n        o.fillText('Pause for the one who lives for you.', W\/2, taglineY);\n\n        \/\/ Sample pixels with original colors\n        var imgData;\n        try { imgData = o.getImageData(0,0,W,H); }\n        catch(err){ return; }\n        var d = imgData.data;\n        var step = CFG.densityStep;\n        particles = [];\n        for (var y=0; y\u003cH; y+=step){\n          for (var x=0; x\u003cW; x+=step){\n            var idx = (y*W + x)*4;\n            if (d[idx+3] \u003e 50){\n              particles.push({\n                ox:x, oy:y,\n                x:x + (Math.random()-0.5)*20,\n                y:-25 - Math.random()*90,\n                vx:0, vy:0,\n                delay: Math.random()*350,\n                r:d[idx], g:d[idx+1], b:d[idx+2]\n              });\n            }\n          }\n        }\n      }\n\n      function frame(t){\n        var elapsed = t - startTime;\n        \/\/ Trail effect on TRANSPARENT background using destination-out\n        ctx.save();\n        ctx.globalCompositeOperation = 'destination-out';\n        ctx.fillStyle = 'rgba(0,0,0,' + CFG.trailAlpha + ')';\n        ctx.fillRect(0,0,W,H);\n        ctx.restore();\n\n        for (var i=0,n=particles.length; i\u003cn; i++){\n          var p = particles[i];\n          var et = elapsed - p.delay;\n          var ep = Math.min(1, Math.max(0, et \/ CFG.entranceMs));\n          var ease = 1 - Math.pow(1-ep, 2);\n\n          p.vx += (p.ox - p.x) * CFG.spring;\n          p.vy += (p.oy - p.y) * CFG.spring;\n\n          if (mouse.active \u0026\u0026 ep \u003e 0.4){\n            var dx = p.x - mouse.x;\n            var dy = p.y - mouse.y;\n            var d2 = dx*dx + dy*dy;\n            var r2 = CFG.mouseRadius*CFG.mouseRadius;\n            if (d2 \u003c r2 \u0026\u0026 d2 \u003e 1){\n              var dist = Math.sqrt(d2);\n              var f = (CFG.mouseRadius - dist)\/CFG.mouseRadius * CFG.repulsion;\n              p.vx += (dx\/dist)*f;\n              p.vy += (dy\/dist)*f;\n            }\n          }\n\n          if (CFG.jitter \u003e 0){\n            p.vx += (Math.random()-0.5)*CFG.jitter;\n            p.vy += (Math.random()-0.5)*CFG.jitter;\n          }\n          p.vx *= CFG.damping;\n          p.vy *= CFG.damping;\n          p.x += p.vx;\n          p.y += p.vy;\n\n          if (ease \u003c 0.05) continue;\n          ctx.globalAlpha = ease;\n          ctx.fillStyle = 'rgb(' + p.r + ',' + p.g + ',' + p.b + ')';\n          var s = CFG.particleSize * ease;\n          ctx.fillRect(p.x - s, p.y - s, s*2, s*2);\n        }\n        ctx.globalAlpha = 1;\n        if (running) rafId = requestAnimationFrame(frame);\n      }\n\n      function start(){\n        if (running) return;\n        if (!size()) return;\n        ctx.clearRect(0,0,W,H);\n        buildParticles();\n        if (!particles.length){ return; }\n        block.classList.add('pawse-particles-active');\n        running = true;\n        startTime = performance.now();\n        rafId = requestAnimationFrame(frame);\n      }\n      function stop(){ running = false; if (rafId) cancelAnimationFrame(rafId); }\n\n      function onMove(e){\n        var rect = canvas.getBoundingClientRect();\n        var p = e.touches ? e.touches[0] : e;\n        mouse.x = p.clientX - rect.left;\n        mouse.y = p.clientY - rect.top;\n        mouse.active = true;\n      }\n      function onLeave(){ mouse.active=false; mouse.x=-9999; mouse.y=-9999; }\n\n      canvas.addEventListener('mousemove', onMove);\n      canvas.addEventListener('mouseleave', onLeave);\n      canvas.addEventListener('touchmove', onMove, {passive:true});\n      canvas.addEventListener('touchend', onLeave);\n\n      try { new ResizeObserver(function(){ if (running){ stop(); start(); } }).observe(block); } catch(_){}\n\n      var beginWhenReady = function(){\n        Promise.all([loadImage(catDogUrl), loadImage(pawUrl), fonts]).then(function(arr){\n          catDogImg = arr[0]; pawImg = arr[1];\n          setTimeout(start, 80);\n        });\n      };\n      try {\n        var io = new IntersectionObserver(function(entries){\n          entries.forEach(function(en){ if (en.isIntersecting){ beginWhenReady(); } else { stop(); } });\n        }, { threshold: 0.05 });\n        io.observe(block);\n      } catch(_) { beginWhenReady(); }\n    });\n  }\n\n  if (document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', init);\n  } else { init(); }\n})();\n\u003c\/script\u003e\n\n\u003cstyle\u003e\n.pawse-pdp { font-family: 'Source Sans Pro', sans-serif; color: #3A3A3E; line-height: 1.7; font-size: 16px; max-width: 760px; }\n.pawse-pdp h3, .pawse-pdp .pawse-accordion summary {\n  font-family: 'Fraunces', serif; font-weight: 300; font-size: 1.4rem;\n  margin: 2.2em 0 0.55em; color: #3A3A3E;\n  border-bottom: 1px solid #E8E0DC; padding: 0 0 0.4em;\n  letter-spacing: 0.08em; text-transform: uppercase; display: block;\n}\n.pawse-pdp ul { padding-left: 0; margin: 0 0 1.6em; list-style: none; }\n.pawse-pdp ul li { margin-bottom: 0.5em; font-size: 1rem; }\n.pawse-bullets li { position: relative; padding-left: 1.9em; }\n.pawse-bullets li::before {\n  content: ''; position: absolute; left: 0; top: 0.4em; width: 16px; height: 16px;\n  background: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'%3E%3Cellipse cx='12' cy='15' rx='5.5' ry='4.2' fill='%23984B2C'\/%3E%3Cellipse cx='5' cy='9' rx='2' ry='2.4' fill='%23984B2C'\/%3E%3Cellipse cx='19' cy='9' rx='2' ry='2.4' fill='%23984B2C'\/%3E%3Cellipse cx='9' cy='5' rx='1.8' ry='2.1' fill='%23984B2C'\/%3E%3Cellipse cx='15' cy='5' rx='1.8' ry='2.1' fill='%23984B2C'\/%3E%3C\/svg%3E\") no-repeat center;\n  background-size: contain;\n}\n\n.pawse-particles {\n  position: relative; width: 100%; height: 320px;\n  background: transparent; border-radius: 6px;\n  margin: 2.5em 0 0; overflow: hidden; cursor: crosshair;\n}\n.pawse-particles canvas { display: block; width: 100%; height: 100%; position: relative; z-index: 2; }\n.pawse-particles-fallback {\n  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;\n  z-index: 1; text-align: center; pointer-events: none;\n}\n.pawse-particles-active .pawse-particles-fallback { display: none; }\n.pawse-particles-mark {\n  font-family: 'Fraunces', serif; font-size: 3rem; letter-spacing: 0.15em; color: #984B2C; margin: 0 0 0.5em; font-weight: 400; text-transform: uppercase;\n}\n.pawse-particles-line {\n  font-family: 'Fraunces', serif; font-style: italic; font-weight: 300; color: #6A6A6E; font-size: 1.4rem; margin: 0;\n}\n\n.pawse-value-strip { background: #F9F3F1; padding: 1.1em 1.2em; border-radius: 6px; margin: 0 0 1.6em; border-left: 3px solid #984B2C; }\n.pawse-notify-line { margin: 0 0 0.7em; font-size: 0.98rem; color: #3A3A3E; font-family: 'Fraunces', serif; font-style: italic; }\n.pawse-notify-line a { color: #984B2C; text-decoration: underline; font-weight: 500; font-style: normal; }\n.pawse-value-strip .pawse-trust-badges { display: grid; grid-template-columns: 1fr 1fr; gap: 0.45em 1.2em; list-style: none; padding: 0; margin: 0; }\n.pawse-value-strip .pawse-trust-badges li { font-size: 0.9rem; display: flex; align-items: flex-start; gap: 0.5em; margin: 0; padding: 0; }\n.pawse-value-strip .pawse-trust-badges li::before { display: none; }\n.pawse-value-strip .pawse-trust-badges .icon { font-size: 1.15em; flex-shrink: 0; line-height: 1.3; }\n\n.pawse-hook { font-family: 'Fraunces', serif; font-size: 1.65rem; font-weight: 300; line-height: 1.35; color: #3A3A3E; margin: 0 0 0.5em; letter-spacing: 0.003em; }\n.pawse-hook em { font-style: italic; }\n.pawse-tagline { font-size: 1.05rem; color: #3A3A3E; margin: 0 0 0.9em; }\n.pawse-intro-para { font-size: 1rem; color: #3A3A3E; margin: 0 0 1.3em; line-height: 1.75; }\n\n.pawse-size-illustration { background: #FFFFFF; padding: 1.2em 1em 1em; margin: 0.6em 0 1.2em; text-align: center; border: 1px solid #E8E0DC; border-radius: 6px; }\n.pawse-size-illustration img { max-width: 100%; width: 100%; max-height: 420px; object-fit: contain; height: auto; }\n.pawse-size-table { border-collapse: collapse; width: 100%; margin: 0.4em 0 1.4em; font-size: 0.93rem; }\n.pawse-size-table th, .pawse-size-table td { padding: 0.55em 0.8em; text-align: left; border-bottom: 1px solid #E8E0DC; }\n.pawse-size-table th { font-family: 'Fraunces', serif; font-weight: 400; color: #984B2C; background: #F9F3F1; }\n.pawse-size-notes { margin-top: 0.6em; }\n\n.pawse-attention { background: #F9F3F1; border-left: 3px solid #984B2C; padding: 1.3em 1.5em; margin: 2.2em 0; border-radius: 0 4px 4px 0; }\n.pawse-attention-eyebrow { font-family: 'Fraunces', serif; font-size: 1.4rem; font-weight: 300; color: #3A3A3E; margin: 0 0 0.6em; letter-spacing: 0.08em; text-transform: uppercase; border-bottom: 1px solid #E8E0DC; padding-bottom: 0.4em; }\n.pawse-attention-quote { font-family: 'Fraunces', serif; font-size: 1.15rem; font-style: italic; color: #3A3A3E; margin: 0 0 0.9em; }\n.pawse-attention-attrib { font-size: 0.85rem; color: #6A6A6E; font-style: normal; }\n.pawse-attention-bullets { padding-left: 0; margin: 0 0 0.9em; list-style: none; }\n.pawse-attention-bullets li { position: relative; padding-left: 1.9em; margin-bottom: 0.4em; font-size: 1rem; }\n.pawse-attention-bullets li::before {\n  content: ''; position: absolute; left: 0; top: 0.4em; width: 16px; height: 16px;\n  background: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24'%3E%3Cellipse cx='12' cy='15' rx='5.5' ry='4.2' fill='%23984B2C'\/%3E%3Cellipse cx='5' cy='9' rx='2' ry='2.4' fill='%23984B2C'\/%3E%3Cellipse cx='19' cy='9' rx='2' ry='2.4' fill='%23984B2C'\/%3E%3Cellipse cx='9' cy='5' rx='1.8' ry='2.1' fill='%23984B2C'\/%3E%3Cellipse cx='15' cy='5' rx='1.8' ry='2.1' fill='%23984B2C'\/%3E%3C\/svg%3E\") no-repeat center;\n  background-size: contain;\n}\n.pawse-attention-note { font-family: 'Fraunces', serif; font-size: 0.95rem; color: #6A6A6E; margin: 0.9em 0 0; font-style: italic; line-height: 1.55; }\n\n.pawse-accordion { margin: 2.2em 0 0; padding: 0; border-top: none; }\n.pawse-accordion summary { cursor: pointer; list-style: none; }\n.pawse-accordion summary::-webkit-details-marker { display: none; }\n.pawse-accordion summary::after { content: \" +\"; color: #984B2C; font-weight: 300; font-size: 0.9em; }\n.pawse-accordion[open] summary::after { content: \" –\"; }\n.pawse-accordion[open] summary { margin-bottom: 0.7em; }\n.pawse-qa { margin: 0 0 1.2em; padding: 0 0 0.9em; border-bottom: 1px solid #F0E8E4; }\n.pawse-qa:last-child { border-bottom: none; padding-bottom: 0; margin-bottom: 0; }\n.pawse-q { font-family: 'Fraunces', serif; font-size: 1rem; color: #984B2C; margin: 0 0 0.35em; font-style: italic; }\n.pawse-a { font-size: 0.97rem; color: #3A3A3E; margin: 0; line-height: 1.65; }\n\n@media (max-width: 768px) {\n  .pawse-pdp { font-size: 15px; max-width: 100%; }\n  .pawse-pdp h3, .pawse-pdp .pawse-accordion summary { font-size: 1.2rem; margin-top: 1.8em; letter-spacing: 0.06em; }\n  .pawse-hook { font-size: 1.35rem; }\n  .pawse-value-strip { padding: 0.95em 1em; }\n  .pawse-value-strip .pawse-trust-badges { grid-template-columns: 1fr; gap: 0.45em; }\n  .pawse-value-strip .pawse-trust-badges li { font-size: 0.88rem; }\n  .pawse-attention { padding: 1.1em 1.2em; }\n  .pawse-attention-eyebrow { font-size: 1.2rem; }\n  .pawse-attention-quote { font-size: 1.05rem; }\n  .pawse-size-table { font-size: 0.85rem; }\n  .pawse-particles { height: 240px; }\n  .pawse-particles-mark { font-size: 2.2rem; }\n  .pawse-particles-line { font-size: 1.1rem; }\n}\n\n\/* P1#8 cross-sell *\/\n.pawse-cross-sell { margin: 2.5em 0 0; }\n.pawse-cross-item {\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 1.1em 1.4em;\n  background: #F9F3F1;\n  border-radius: 6px;\n  text-decoration: none;\n  color: #3A3A3E;\n  transition: background 0.2s;\n}\n.pawse-cross-item:hover { background: #F2E8E4; }\n.pawse-cross-text { display: flex; flex-direction: column; gap: 0.25em; }\n.pawse-cross-name { font-family: 'Fraunces', serif; font-size: 1.1rem; margin: 0; color: #3A3A3E; }\n.pawse-cross-price { font-size: 0.95rem; color: #6A6A6E; margin: 0; }\n.pawse-cross-arrow { font-family: 'Fraunces', serif; font-size: 1.4rem; color: #984B2C; }\n\n\/* P1#5 mobile sticky bottom CTA *\/\n.pawse-sticky-cta { display: none; }\n@media (max-width: 768px) {\n  .pawse-sticky-cta {\n    display: flex; align-items: center; justify-content: space-between;\n    position: fixed; left: 0; right: 0; bottom: 0;\n    background: #FFFFFF;\n    border-top: 1px solid #E8E0DC;\n    padding: 0.7em 1em;\n    z-index: 1000;\n    box-shadow: 0 -2px 8px rgba(58, 58, 62, 0.06);\n    gap: 1em;\n  }\n  .pawse-sticky-info { display: flex; flex-direction: column; gap: 0.1em; flex: 1; min-width: 0; overflow: hidden; }\n  .pawse-sticky-name { font-family: 'Fraunces', serif; font-size: 0.9rem; color: #3A3A3E; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n  .pawse-sticky-price { font-family: 'Fraunces', serif; font-size: 1.05rem; color: #984B2C; font-weight: 400; }\n  .pawse-sticky-btn {\n    background: #3A3A3E; color: #FFFFFF;\n    padding: 0.75em 1.2em; border-radius: 4px;\n    font-family: 'Fraunces', serif; font-size: 0.95rem;\n    text-decoration: none; flex-shrink: 0;\n    text-transform: uppercase; letter-spacing: 0.08em;\n  }\n  \/* prevent body content hidden under sticky bar *\/\n  .pawse-pdp { padding-bottom: 80px; }\n}\n\n\/* P2#13 motion safe *\/\n@media (prefers-reduced-motion: reduce) {\n  .pawse-particles canvas { display: none; }\n  .pawse-particles .pawse-particles-fallback { position: static; padding: 2em 1em; }\n}\n\n\/* P2#15 improved canvas fallback (visible to bot, hidden visually when canvas works) *\/\n.pawse-particles-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }\n\n\n.pawse-jdgm-preview { margin: 0 0 1.2em; min-height: 22px; }\n.pawse-jdgm-preview .jdgm-prev-badge { font-size: 0.95rem; }\n.pawse-reviews-heading {\n  font-family: 'Fraunces', serif; font-weight: 300; font-size: 1.4rem;\n  margin: 2.2em 0 0.55em; color: #3A3A3E;\n  border-bottom: 1px solid #E8E0DC; padding: 0 0 0.4em;\n  letter-spacing: 0.08em; text-transform: uppercase; display: block;\n}\n.pawse-jdgm-widget { margin: 0.6em 0 1.5em; min-height: 80px; }\n.pawse-jdgm-widget:empty::before {\n  content: \"Reviews will appear here once your Judge.me app embed is enabled in the theme editor.\";\n  display: block; color: #6A6A6E; font-style: italic; font-size: 0.92rem; padding: 1em 0;\n}\n\n\u003c\/style\u003e","brand":"PAWSE","offers":[{"title":"XL (28-40kg)","offer_id":53297823809849,"sku":"PAWSE-CL-AD-CU-TR-BK-7XL-01","price":79.95,"currency_code":"AUD","in_stock":false},{"title":"XXL (40-55kg) - coming soon","offer_id":53298277908793,"sku":"PAWSE-CL-AD-CU-TR-BK-8XL-01","price":89.95,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0975\/2310\/6105\/files\/PAWSE-CL-AD-CU-TR-BK-7XL-01_main_white.png?v=1779028544","url":"https:\/\/pawse.au\/products\/black-dog-tuxedo","provider":"PAWSE","version":"1.0","type":"link"}