{"product_id":"harnas","title":"Dog Harnas","description":"\u003cp\u003e\u003cmeta charset=\"UTF-8\"\u003e \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\u003e\u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@400;700\u0026amp;family=DM+Sans:wght@300;400;500\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\u003c\/p\u003e\n\u003cstyle\u003e\n  :root {\n    --orange: #E8621A;\n    --orange-light: #FF8C42;\n    --orange-pale: #FFF0E8;\n    --cream: #FDF8F3;\n    --dark: #1A1208;\n    --mid: #5A4230;\n    --muted: #9A7E6A;\n    --white: #FFFFFF;\n    --radius: 20px;\n  }\n\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n  html { scroll-behavior: smooth; }\n\n  body {\n    font-family: 'DM Sans', sans-serif;\n    background: var(--cream);\n    color: var(--dark);\n    overflow-x: hidden;\n  }\n\n  \/* Paw cursor trail *\/\n  .paw-trail {\n    position: fixed; pointer-events: none; z-index: 9999;\n    width: 22px; height: 22px; opacity: 0;\n    animation: paw-fade 0.8s ease forwards;\n  }\n  @keyframes paw-fade {\n    0%   { opacity: 0.7; transform: scale(0.6) rotate(var(--rot)); }\n    100% { opacity: 0; transform: scale(1.1) rotate(var(--rot)) translateY(-12px); }\n  }\n\n  \/* Floating paws background *\/\n  .bg-paws { position: fixed; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; }\n  .bg-paw {\n    position: absolute; opacity: 0.04;\n    animation: float-paw linear infinite;\n  }\n  @keyframes float-paw {\n    0%   { transform: translateY(110vh) rotate(0deg); opacity: 0; }\n    10%  { opacity: 0.05; }\n    90%  { opacity: 0.05; }\n    100% { transform: translateY(-10vh) rotate(360deg); opacity: 0; }\n  }\n\n  \/* Hero *\/\n  .hero {\n    position: relative; z-index: 1;\n    display: flex; flex-direction: column; justify-content: center;\n    padding: 40px 40px;\n    overflow: hidden;\n  }\n  .hero-blob {\n    position: absolute; border-radius: 50%;\n    filter: blur(80px); opacity: 0.35;\n    animation: blob-drift 8s ease-in-out infinite alternate;\n    pointer-events: none;\n  }\n  .blob-1 { width: 600px; height: 600px; background: var(--orange-light); top: -200px; right: -200px; }\n  .blob-2 { width: 400px; height: 400px; background: #FFD4A8; bottom: -100px; left: -100px; animation-delay: -4s; }\n  @keyframes blob-drift {\n    0%   { transform: translate(0,0) scale(1); }\n    100% { transform: translate(30px,20px) scale(1.08); }\n  }\n\n  .hero-inner { max-width: 600px; margin: 0 auto; width: 100%; }\n\n  .hero-tag {\n    display: inline-flex; align-items: center; gap: 8px;\n    background: var(--orange); color: #fff;\n    font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase;\n    padding: 6px 14px; border-radius: 999px; margin-bottom: 24px;\n    animation: slide-in-left 0.7s cubic-bezier(.22,1,.36,1) both;\n  }\n  .hero-tag span { display: inline-block; animation: wag 1s ease-in-out infinite alternate; }\n  @keyframes wag { 0% { transform: rotate(-10deg); } 100% { transform: rotate(10deg); } }\n\n  .hero-title {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(38px, 5vw, 62px); line-height: 1.1;\n    color: var(--dark); margin-bottom: 20px;\n    animation: slide-in-left 0.8s cubic-bezier(.22,1,.36,1) 0.1s both;\n  }\n  .hero-title em { color: var(--orange); font-style: normal; }\n\n  .hero-body {\n    font-size: 17px; line-height: 1.75; color: var(--mid);\n    max-width: 420px; margin-bottom: 36px;\n    animation: slide-in-left 0.8s cubic-bezier(.22,1,.36,1) 0.2s both;\n  }\n\n  .hero-cta {\n    display: inline-flex; align-items: center; gap: 12px;\n    background: var(--orange); color: #fff;\n    font-size: 16px; font-weight: 500;\n    padding: 16px 32px; border-radius: 999px;\n    text-decoration: none; border: none; cursor: pointer;\n    box-shadow: 0 8px 30px rgba(232,98,26,0.35);\n    transition: transform 0.2s, box-shadow 0.2s;\n    animation: slide-in-left 0.8s cubic-bezier(.22,1,.36,1) 0.3s both;\n  }\n  .hero-cta:hover { transform: translateY(-3px); box-shadow: 0 14px 40px rgba(232,98,26,0.45); }\n  .hero-cta .arrow { transition: transform 0.2s; }\n  .hero-cta:hover .arrow { transform: translateX(5px); }\n\n  @keyframes slide-in-left {\n    from { opacity: 0; transform: translateX(-40px); }\n    to   { opacity: 1; transform: translateX(0); }\n  }\n\n  \/* Features strip *\/\n  .features-strip {\n    position: relative; z-index: 1;\n    background: var(--dark); padding: 20px 40px; overflow: hidden;\n  }\n  .strip-track {\n    display: flex; gap: 60px;\n    animation: marquee 18s linear infinite;\n    white-space: nowrap; width: max-content;\n  }\n  .strip-item {\n    display: inline-flex; align-items: center; gap: 12px;\n    font-size: 14px; font-weight: 400; letter-spacing: .04em;\n    color: rgba(255,255,255,0.8); flex-shrink: 0;\n  }\n  .strip-item .dot { color: var(--orange-light); font-size: 18px; }\n  @keyframes marquee {\n    0%   { transform: translateX(0); }\n    100% { transform: translateX(-50%); }\n  }\n\n  \/* Product section *\/\n  .product-section {\n    position: relative; z-index: 1;\n    max-width: 960px; margin: 0 auto;\n    padding: 50px 40px;\n  }\n\n  .section-label {\n    font-size: 11px; font-weight: 500; letter-spacing: .14em;\n    text-transform: uppercase; color: var(--orange); margin-bottom: 14px;\n  }\n  .section-title {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(30px, 4vw, 48px); line-height: 1.15;\n    color: var(--dark); margin-bottom: 40px;\n  }\n\n  \/* Feature cards *\/\n  .feat-grid {\n    display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;\n  }\n  .feat-card {\n    background: var(--white); border-radius: var(--radius);\n    padding: 32px; border: 1px solid rgba(26,18,8,0.06);\n    box-shadow: 0 4px 20px rgba(26,18,8,0.05);\n    transition: transform 0.3s, box-shadow 0.3s;\n    opacity: 0; transform: translateY(30px);\n  }\n  .feat-card.visible { animation: card-in 0.6s cubic-bezier(.22,1,.36,1) forwards; }\n  @keyframes card-in { to { opacity: 1; transform: translateY(0); } }\n  .feat-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(26,18,8,0.1); }\n\n  .feat-icon {\n    width: 52px; height: 52px; border-radius: 14px;\n    background: var(--orange-pale);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 24px; margin-bottom: 18px;\n    transition: transform 0.3s;\n  }\n  .feat-card:hover .feat-icon { transform: rotate(-8deg) scale(1.1); }\n  .feat-name { font-size: 17px; font-weight: 500; margin-bottom: 8px; color: var(--dark); }\n  .feat-desc { font-size: 14px; line-height: 1.65; color: var(--muted); }\n\n  \/* CTA band *\/\n  .cta-band {\n    position: relative; z-index: 1;\n    background: var(--orange); padding: 50px 40px;\n    overflow: hidden; text-align: center;\n  }\n  .cta-band-bg {\n    position: absolute; inset: 0; pointer-events: none; overflow: hidden; opacity: 0.12;\n  }\n  .cta-band-bg span {\n    position: absolute; font-size: 120px;\n    animation: spin-paw 20s linear infinite;\n  }\n  @keyframes spin-paw { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }\n  .cta-band h2 {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(28px, 4vw, 52px); color: #fff;\n    margin-bottom: 16px; position: relative; z-index: 1;\n  }\n  .cta-band p {\n    font-size: 17px; color: rgba(255,255,255,0.85);\n    max-width: 480px; margin: 0 auto 36px;\n    position: relative; z-index: 1;\n  }\n  .cta-band-btn {\n    display: inline-flex; align-items: center; gap: 10px;\n    background: #fff; color: var(--orange);\n    font-size: 16px; font-weight: 500;\n    padding: 16px 36px; border-radius: 999px;\n    text-decoration: none; cursor: pointer; border: none;\n    box-shadow: 0 8px 30px rgba(0,0,0,0.15);\n    transition: transform 0.2s, box-shadow 0.2s;\n    position: relative; z-index: 1;\n  }\n  .cta-band-btn:hover { transform: scale(1.04); box-shadow: 0 14px 40px rgba(0,0,0,0.2); }\n\n  \/* Reviews *\/\n  .reviews-section {\n    position: relative; z-index: 1;\n    max-width: 960px; margin: 0 auto;\n    padding: 50px 40px;\n  }\n  .reviews-grid {\n    display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px;\n  }\n  .review-card {\n    background: var(--white); border-radius: var(--radius);\n    padding: 28px; border: 1px solid rgba(26,18,8,0.06);\n    opacity: 0; transform: translateY(24px);\n  }\n  .review-card.visible { animation: card-in 0.6s cubic-bezier(.22,1,.36,1) forwards; }\n  .stars { color: var(--orange); font-size: 15px; margin-bottom: 12px; letter-spacing: 2px; }\n  .review-text { font-size: 14px; line-height: 1.7; color: var(--mid); margin-bottom: 16px; }\n  .reviewer { font-size: 13px; font-weight: 500; color: var(--dark); }\n  .reviewer span { color: var(--muted); font-weight: 400; }\n\n  \/* Footer *\/\n  .footer {\n    position: relative; z-index: 1;\n    background: var(--dark); padding: 40px;\n    text-align: center; font-size: 14px; color: rgba(255,255,255,0.45);\n  }\n  .footer strong { color: rgba(255,255,255,0.8); font-weight: 500; }\n\n  \/* Responsive *\/\n  @media (max-width: 700px) {\n    .hero { padding: 30px 24px; }\n    .feat-grid { grid-template-columns: 1fr; }\n    .reviews-grid { grid-template-columns: 1fr; }\n    .product-section, .reviews-section { padding: 36px 24px; }\n  }\n\u003c\/style\u003e\n\u003c!-- Floating background paws --\u003e\n\u003cdiv id=\"bgPaws\" class=\"bg-paws\"\u003e\u003c\/div\u003e\n\u003c!-- HERO --\u003e\n\u003csection class=\"hero\"\u003e\n\u003cdiv class=\"hero-blob blob-1\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"hero-blob blob-2\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"hero-inner\"\u003e\n\u003cdiv class=\"hero-tag\"\u003e\n\u003cspan\u003e🐾\u003c\/span\u003e New arrival\u003c\/div\u003e\n\u003ch1 class=\"hero-title\"\u003eEvery walk.\u003cbr\u003e\u003cem\u003ePure joy.\u003c\/em\u003e\n\u003c\/h1\u003e\n\u003cp class=\"hero-body\"\u003eThe no-pull mesh harness \u0026amp; leash set designed for dogs who love adventures — and the humans who take them there.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- MARQUEE STRIP --\u003e\n\u003cdiv class=\"features-strip\"\u003e\n\u003cdiv class=\"strip-track\"\u003e\n\u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Breathable mesh design\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e No-pull chest harness\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Escape-proof buckles\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Matching leash included\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e 30-day free returns\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Vet approved\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Free shipping\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Breathable mesh design\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e No-pull chest harness\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Escape-proof buckles\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Matching leash included\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e 30-day free returns\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Vet approved\u003c\/span\u003e \u003cspan class=\"strip-item\"\u003e\u003cspan class=\"dot\"\u003e🐾\u003c\/span\u003e Free shipping\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c!-- FEATURES --\u003e\n\u003csection id=\"product\" class=\"product-section\"\u003e\n\u003cp class=\"section-label\"\u003eWhy PawBuddy\u003c\/p\u003e\n\u003ch2 class=\"section-title\"\u003eBuilt for real walks.\u003cbr\u003eNot just product photos.\u003c\/h2\u003e\n\u003cdiv class=\"feat-grid\"\u003e\n\u003cdiv style=\"animation-delay: 0.0s;\" class=\"feat-card\"\u003e\n\u003cdiv class=\"feat-icon\"\u003e💨\u003c\/div\u003e\n\u003cdiv class=\"feat-name\"\u003eBreathable mesh\u003c\/div\u003e\n\u003cdiv class=\"feat-desc\"\u003ePremium airflow mesh keeps your pup cool on long summer walks — no sweaty overheating, just happy tail wags.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"animation-delay: 0.1s;\" class=\"feat-card\"\u003e\n\u003cdiv class=\"feat-icon\"\u003e🔒\u003c\/div\u003e\n\u003cdiv class=\"feat-name\"\u003eEscape-proof fit\u003c\/div\u003e\n\u003cdiv class=\"feat-desc\"\u003eTwo heavy-duty side-release buckles and a fully adjustable chest strap mean your dog stays secure, always.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"animation-delay: 0.2s;\" class=\"feat-card\"\u003e\n\u003cdiv class=\"feat-icon\"\u003e🦮\u003c\/div\u003e\n\u003cdiv class=\"feat-name\"\u003eNo-choke, no-pull\u003c\/div\u003e\n\u003cdiv class=\"feat-desc\"\u003eWeight distributes across the chest — not the neck — naturally reducing pulling without any training tools.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"animation-delay: 0.3s;\" class=\"feat-card\"\u003e\n\u003cdiv class=\"feat-icon\"\u003e🎯\u003c\/div\u003e\n\u003cdiv class=\"feat-name\"\u003eSet includes everything\u003c\/div\u003e\n\u003cdiv class=\"feat-desc\"\u003eMatching nylon leash with solid steel clip included — grab it and go, nothing extra to buy.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- CTA BAND --\u003e\n\u003cdiv class=\"cta-band\"\u003e\n\u003cdiv class=\"cta-band-bg\"\u003e\n\u003cspan style=\"top: 5%; left: 10%;\"\u003e🐾\u003c\/span\u003e \u003cspan style=\"top: 30%; right: 8%; animation-direction: reverse; animation-duration: 15s;\"\u003e🐾\u003c\/span\u003e \u003cspan style=\"bottom: 10%; left: 40%; animation-duration: 25s;\"\u003e🐾\u003c\/span\u003e\n\u003c\/div\u003e\n\u003ch2\u003eYour dog deserves the best walk of their life.\u003c\/h2\u003e\n\u003cp\u003eSoft. Secure. Stylish. Everything your pup needs for walks they'll beg for.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c!-- REVIEWS --\u003e\n\u003csection class=\"reviews-section\"\u003e\n\u003cp class=\"section-label\"\u003eHappy customers\u003c\/p\u003e\n\u003ch2 class=\"section-title\"\u003eDogs approved.\u003cbr\u003eOwners obsessed.\u003c\/h2\u003e\n\u003cdiv class=\"reviews-grid\"\u003e\n\u003cdiv style=\"animation-delay: 0s;\" class=\"review-card\"\u003e\n\u003cdiv class=\"stars\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"review-text\"\u003e\"My dog used to drag me down the street. First walk with PawBuddy she walked right beside me. I'm still shocked.\"\u003c\/p\u003e\n\u003cp class=\"reviewer\"\u003eSarah M. \u003cspan\u003e— Golden Retriever mum\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"animation-delay: 0.1s;\" class=\"review-card\"\u003e\n\u003cdiv class=\"stars\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"review-text\"\u003e\"The mesh is so soft — my nervous rescue pup wore it for the first time without any fuss. That never happens.\"\u003c\/p\u003e\n\u003cp class=\"reviewer\"\u003eJames T. \u003cspan\u003e— Rescue dog dad\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"animation-delay: 0.2s;\" class=\"review-card\"\u003e\n\u003cdiv class=\"stars\"\u003e★★★★★\u003c\/div\u003e\n\u003cp class=\"review-text\"\u003e\"Looks gorgeous, fits perfectly, and the leash is really solid. Great quality for the money — would buy again.\"\u003c\/p\u003e\n\u003cp class=\"reviewer\"\u003eAnika P. \u003cspan\u003e— French Bulldog owner\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\u003c!-- FOOTER --\u003e\u003cfooter class=\"footer\"\u003e\u003cstrong\u003ePawBuddy\u003c\/strong\u003e — Made with 🐾 love for dogs and the humans who adore them.\u003cbr\u003e\u003cspan style=\"font-size: 12px; margin-top: 8px; display: inline-block;\"\u003eFree shipping · 30-day returns · Vet approved\u003c\/span\u003e\u003c\/footer\u003e\n\u003cp\u003e \u003c\/p\u003e","brand":"Pawbuddy","offers":[{"title":"Orange \/ XS-27-30cm","offer_id":50009028591853,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Orange \/ S-30-34cm","offer_id":50009028624621,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Orange \/ M-34-39cm","offer_id":50009028657389,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Orange \/ L-39-44cm","offer_id":50009028690157,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Orange \/ XL-44-50cm","offer_id":50009028722925,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Black \/ XS-27-30cm","offer_id":50009028755693,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Black \/ S-30-34cm","offer_id":50009028788461,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Black \/ M-34-39cm","offer_id":50009028821229,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Black \/ L-39-44cm","offer_id":50009028853997,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Black \/ XL-44-50cm","offer_id":50009028886765,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ XS-27-30cm","offer_id":50009028919533,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ S-30-34cm","offer_id":50009028952301,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ M-34-39cm","offer_id":50009028985069,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ L-39-44cm","offer_id":50009029017837,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Pink \/ XL-44-50cm","offer_id":50009029050605,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue \/ XS-27-30cm","offer_id":50009029083373,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue \/ S-30-34cm","offer_id":50009029116141,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue \/ M-34-39cm","offer_id":50009029148909,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue \/ L-39-44cm","offer_id":50009029181677,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true},{"title":"Blue \/ XL-44-50cm","offer_id":50009029214445,"sku":null,"price":299.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0811\/6168\/3181\/files\/orangelogo.png?v=1779655486","url":"https:\/\/pawbuddy.co.za\/products\/harnas","provider":"Pawbuddy","version":"1.0","type":"link"}