{"title":"Pet Feeders","description":"\u003cp\u003eAutomatic timed feeders designed for portion control — helping your pet eat better, one meal at a time.\u003c\/p\u003e","products":[{"product_id":"pawportion™-automatic-pet-feeder","title":"PawPortion™ Automatic Pet Feeder","description":"\u003cstyle\u003e\n    .pp-desc {\n      --pp-cream: #FFF8F0;\n      --pp-cream-2: #F1E9DA;\n      --pp-teal: #1F6F6B;\n      --pp-teal-deep: #123F3D;\n      --pp-coral: #FF8B5E;\n      --pp-ink: #23302F;\n      --pp-ink-soft: #6B7C7B;\n      font-family: 'PP-Body', -apple-system, sans-serif;\n      color: var(--pp-ink);\n      background: var(--pp-cream);\n      overflow: hidden;\n      border-radius: 20px;\n      position: relative;\n      font-size: 16px;\n    }\n    .pp-desc * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }\n    .pp-desc { --serif: 'Fraunces', Georgia, serif; --sans: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; }\n    .pp-desc h1, .pp-desc h2, .pp-desc h3, .pp-desc .pp-serif { font-family: var(--serif); }\n    .pp-desc p, .pp-desc span, .pp-desc button, .pp-desc li { font-family: var(--sans); }\n\n    .pp-bg-glow {\n      position: absolute; inset: -20%;\n      background:\n        radial-gradient(circle at 20% 20%, rgba(31,111,107,0.10), transparent 45%),\n        radial-gradient(circle at 80% 70%, rgba(255,139,94,0.12), transparent 45%);\n      animation: pp-drift 18s ease-in-out infinite alternate;\n      pointer-events: none; z-index: 0;\n    }\n    @keyframes pp-drift { 0% { transform: translate(0,0) scale(1); } 100% { transform: translate(-3%, 2%) scale(1.06); } }\n\n    .pp-hero { position: relative; z-index: 1; padding: 64px 24px 40px; text-align: center; max-width: 760px; margin: 0 auto; }\n    @media (min-width: 640px) { .pp-hero { padding: 88px 40px 48px; } }\n\n    .pp-eyebrow {\n      display: inline-flex; align-items: center; gap: 8px;\n      font-size: 12px; font-weight: 700; letter-spacing: 2px; color: var(--pp-teal);\n      opacity: 0; animation: pp-fade-up 0.7s ease forwards 0.1s;\n    }\n    .pp-eyebrow::before, .pp-eyebrow::after { content: ''; width: 18px; height: 1px; background: var(--pp-coral); }\n    @media (min-width: 640px) { .pp-eyebrow { font-size: 13px; letter-spacing: 3px; } .pp-eyebrow::before, .pp-eyebrow::after { width: 24px; } }\n\n    .pp-headline { font-size: clamp(28px, 7vw, 54px); line-height: 1.15; font-weight: 500; margin: 18px 0 16px; color: var(--pp-teal-deep); opacity: 0; animation: pp-fade-up 0.8s ease forwards 0.28s; }\n    .pp-headline em { font-style: italic; color: var(--pp-coral); }\n    .pp-sub { font-size: 15.5px; line-height: 1.6; color: var(--pp-ink-soft); max-width: 560px; margin: 0 auto; opacity: 0; animation: pp-fade-up 0.8s ease forwards 0.46s; }\n    @media (min-width: 640px) { .pp-sub { font-size: 17px; } }\n\n    @keyframes pp-fade-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }\n\n    .pp-rating {\n      display: inline-flex; align-items: center; gap: 8px;\n      margin-top: 18px; opacity: 0; animation: pp-fade-up 0.8s ease forwards 0.55s;\n      font-size: 13.5px; color: var(--pp-ink-soft); font-weight: 600;\n    }\n    .pp-stars { display: flex; gap: 2px; color: var(--pp-coral); }\n    .pp-stars svg { width: 16px; height: 16px; fill: currentColor; }\n\n    .pp-trust {\n      position: relative; z-index: 1;\n      display: flex; overflow-x: auto; gap: 10px;\n      padding: 0 20px 32px; scrollbar-width: none;\n      -webkit-overflow-scrolling: touch;\n    }\n    .pp-trust::-webkit-scrollbar { display: none; }\n    .pp-trust-item {\n      flex: 0 0 auto;\n      display: flex; align-items: center; gap: 8px;\n      background: #fff; border: 1px solid rgba(31,111,107,0.10);\n      border-radius: 999px; padding: 10px 16px;\n      font-size: 12.5px; font-weight: 600; color: var(--pp-ink);\n      white-space: nowrap;\n    }\n    .pp-trust-item svg { width: 16px; height: 16px; color: var(--pp-teal); flex-shrink: 0; }\n\n    .pp-clock-wrap { position: relative; width: 140px; height: 140px; margin: 8px auto 8px; opacity: 0; animation: pp-fade-up 0.8s ease forwards 0.6s; }\n    @media (min-width: 640px) { .pp-clock-wrap { width: 168px; height: 168px; margin: 20px auto 8px; } }\n    .pp-clock-wrap svg.pp-ring { width: 100%; height: 100%; transform: rotate(-90deg); }\n    .pp-clock-track { fill: none; stroke: var(--pp-cream-2); stroke-width: 5; }\n    .pp-clock-progress { fill: none; stroke: var(--pp-coral); stroke-width: 5; stroke-linecap: round; stroke-dasharray: 440; stroke-dashoffset: 440; animation: pp-draw 2.2s cubic-bezier(.65,0,.35,1) forwards 1s; }\n    @keyframes pp-draw { to { stroke-dashoffset: 40; } }\n    .pp-clock-center { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; }\n    .pp-clock-center .pp-paw { width: 30px; height: 30px; animation: pp-pulse 2.6s ease-in-out infinite; animation-delay: 2.4s; }\n    @keyframes pp-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.12); } }\n    .pp-clock-center span { font-size: 10px; letter-spacing: 1.5px; font-weight: 700; color: var(--pp-teal); margin-top: 6px; }\n\n    .pp-section { position: relative; z-index: 1; max-width: 980px; margin: 0 auto; padding: 8px 20px 56px; }\n    .pp-section-title { text-align: center; font-size: 13px; font-weight: 700; letter-spacing: 2.5px; color: var(--pp-ink-soft); margin-bottom: 28px; }\n\n    .pp-benefits { display: grid; grid-template-columns: 1fr; gap: 14px; }\n    @media (min-width: 700px) { .pp-benefits { grid-template-columns: repeat(4, 1fr); gap: 16px; } }\n    .pp-benefit {\n      background: var(--pp-teal-deep); color: var(--pp-cream);\n      border-radius: 18px; padding: 24px 20px; text-align: center;\n      transition: opacity 0.6s ease, transform 0.6s ease;\n    }\n    .pp-desc.pp-js .pp-benefit { opacity: 0; transform: translateY(20px); }\n    .pp-desc.pp-js .pp-benefit.pp-visible { opacity: 1; transform: translateY(0); }\n    .pp-benefit svg { width: 26px; height: 26px; color: var(--pp-coral); margin-bottom: 10px; }\n    .pp-benefit h4 { font-family: var(--sans); font-size: 15px; font-weight: 700; margin: 0 0 6px; }\n    .pp-benefit p { font-size: 13px; line-height: 1.5; color: rgba(255,248,240,0.75); margin: 0; }\n\n    .pp-chips { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }\n    .pp-chip {\n      display: flex; align-items: center; gap: 8px;\n      background: #fff; border: 1px solid rgba(31,111,107,0.12);\n      border-radius: 999px; padding: 10px 18px; font-size: 13.5px; font-weight: 600;\n      transition: opacity 0.5s ease, transform 0.5s ease;\n    }\n    .pp-desc.pp-js .pp-chip { opacity: 0; transform: translateY(14px); }\n    .pp-desc.pp-js .pp-chip.pp-visible { opacity: 1; transform: translateY(0); }\n    .pp-chip svg { width: 16px; height: 16px; color: var(--pp-coral); }\n\n    .pp-grid { display: grid; grid-template-columns: 1fr; gap: 14px; }\n    @media (min-width: 640px) { .pp-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; } }\n    .pp-card {\n      background: #FFFFFF; border: 1px solid rgba(31,111,107,0.08); border-radius: 18px;\n      padding: 22px 20px; display: flex; gap: 16px; align-items: flex-start;\n      transition: opacity 0.6s ease, transform 0.6s ease, box-shadow 0.3s ease;\n    }\n    .pp-desc.pp-js .pp-card { opacity: 0; transform: translateY(20px); }\n    .pp-desc.pp-js .pp-card.pp-visible { opacity: 1; transform: translateY(0); }\n    .pp-card:hover { box-shadow: 0 20px 40px rgba(18,63,61,0.10); transform: translateY(-3px); }\n    .pp-card.pp-full { grid-column: 1 \/ -1; }\n    .pp-icon-dot { flex-shrink: 0; width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; background: var(--pp-teal); }\n    .pp-card:nth-child(2n) .pp-icon-dot { background: var(--pp-coral); }\n    .pp-icon-dot svg { width: 20px; height: 20px; }\n    .pp-card h3 { font-family: var(--sans); font-size: 16px; font-weight: 700; margin: 0 0 5px; color: var(--pp-ink); }\n    .pp-card p { font-size: 14px; line-height: 1.5; color: var(--pp-ink-soft); margin: 0; }\n    .pp-stat { font-family: var(--serif); font-size: 24px; font-weight: 600; color: var(--pp-teal-deep); display: inline-block; min-width: 56px; }\n    .pp-card.pp-full .pp-stat { color: var(--pp-coral); }\n\n    .pp-colors { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }\n    .pp-swatch { width: 32px; height: 32px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; transition: transform 0.25s ease, border-color 0.25s ease; }\n    .pp-swatch:hover { transform: scale(1.15); }\n    .pp-swatch.pp-active { border-color: var(--pp-teal); }\n    .pp-swatch.pp-black { background: #23302F; }\n    .pp-swatch.pp-white { background: #FFFFFF; border-color: #D8CFBE; }\n    .pp-color-label { font-size: 13px; font-weight: 600; color: var(--pp-ink-soft); }\n\n    .pp-faq { display: flex; flex-direction: column; gap: 10px; max-width: 700px; margin: 0 auto; }\n    .pp-faq-item { background: #fff; border: 1px solid rgba(31,111,107,0.10); border-radius: 14px; overflow: hidden; }\n    .pp-faq-q {\n      width: 100%; text-align: left; background: none; border: none; cursor: pointer;\n      padding: 16px 18px; display: flex; align-items: center; justify-content: space-between; gap: 12px;\n      font-size: 14.5px; font-weight: 700; color: var(--pp-ink); min-height: 48px;\n    }\n    .pp-faq-q svg { width: 18px; height: 18px; color: var(--pp-teal); flex-shrink: 0; transition: transform 0.3s ease; }\n    .pp-faq-item.pp-open .pp-faq-q svg { transform: rotate(45deg); }\n    .pp-faq-a { max-height: 0; overflow: hidden; transition: max-height 0.35s ease; }\n    .pp-faq-a-inner { padding: 0 18px 18px; font-size: 13.5px; line-height: 1.6; color: var(--pp-ink-soft); }\n    .pp-faq-item.pp-open .pp-faq-a { max-height: 300px; }\n\n    .pp-closing { position: relative; z-index: 1; background: var(--pp-teal-deep); padding: 48px 24px 56px; text-align: center; overflow: hidden; }\n    .pp-closing::before { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 50% 120%, rgba(255,139,94,0.25), transparent 60%); }\n    .pp-closing-text { position: relative; font-family: var(--serif); font-size: clamp(22px, 5.5vw, 32px); color: var(--pp-cream); max-width: 520px; margin: 0 auto 22px; line-height: 1.4; }\n    .pp-shimmer { background: linear-gradient(90deg, var(--pp-cream) 40%, #fff 50%, var(--pp-cream) 60%); background-size: 200% auto; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: pp-shimmer 3.5s linear infinite; }\n    @keyframes pp-shimmer { to { background-position: -200% center; } }\n    .pp-closing-note { position: relative; font-size: 12.5px; color: rgba(255,248,240,0.65); max-width: 420px; margin: 0 auto; line-height: 1.5; }\n\n    @media (prefers-reduced-motion: reduce) {\n      .pp-desc * { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"pp-desc\"\u003e\n\u003clink rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\u003e \u003clink href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,wght@0,500;0,600;1,500\u0026amp;family=Inter:wght@400;500;600;700\u0026amp;display=swap\" rel=\"stylesheet\"\u003e\n\u003cdiv class=\"pp-bg-glow\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pp-hero\"\u003e\n\u003cdiv class=\"pp-eyebrow\"\u003ePAWPORTION™ AUTOMATIC PET FEEDER\u003c\/div\u003e\n\u003ch1 class=\"pp-headline\"\u003eNever rush home for\u003cbr\u003e\u003cem\u003efeeding time\u003c\/em\u003e again.\u003c\/h1\u003e\n\u003cp class=\"pp-sub\"\u003eThe PawPortion™ Automatic Pet Feeder keeps your dog on a healthy, consistent routine — whether you're at work, out running errands, or enjoying a lie-in. Set it once, and your pup is fed on time, every time.\u003c\/p\u003e\n\u003cdiv class=\"pp-clock-wrap\"\u003e\n\u003csvg class=\"pp-ring\" viewbox=\"0 0 160 160\"\u003e\n        \u003ccircle class=\"pp-clock-track\" cx=\"80\" cy=\"80\" r=\"70\"\u003e\u003c\/circle\u003e\n        \u003ccircle class=\"pp-clock-progress\" cx=\"80\" cy=\"80\" r=\"70\"\u003e\u003c\/circle\u003e\n      \u003c\/svg\u003e\n\u003cdiv class=\"pp-clock-center\"\u003e\n\u003csvg class=\"pp-paw\" viewbox=\"0 0 100 100\" fill=\"none\"\u003e\n          \u003cellipse cx=\"50\" cy=\"62\" rx=\"26\" ry=\"20\" fill=\"#1F6F6B\"\u003e\u003c\/ellipse\u003e\n          \u003ccircle cx=\"24\" cy=\"30\" r=\"11\" fill=\"#FF8B5E\"\u003e\u003c\/circle\u003e\n          \u003ccircle cx=\"50\" cy=\"18\" r=\"12\" fill=\"#1F6F6B\"\u003e\u003c\/circle\u003e\n          \u003ccircle cx=\"76\" cy=\"30\" r=\"11\" fill=\"#FF8B5E\"\u003e\u003c\/circle\u003e\n        \u003c\/svg\u003e \u003cspan\u003eON SCHEDULE\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-trust\"\u003e\n\u003cdiv class=\"pp-trust-item\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M12 2l8 4v6c0 5-3.4 8.4-8 10-4.6-1.6-8-5-8-10V6z\"\u003e\u003c\/path\u003e\u003c\/svg\u003eSecure Checkout\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-section\"\u003e\n\u003cdiv class=\"pp-section-title\"\u003eWHAT IT MEANS FOR YOU\u003c\/div\u003e\n\u003cdiv class=\"pp-benefits\"\u003e\n\u003cdiv class=\"pp-benefit\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 7v5l3 3\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003ch4\u003eGet your time back\u003c\/h4\u003e\n\u003cp\u003eNo more racing home or waking up early — mealtime handles itself.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-benefit\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.6l-1-1a5.5 5.5 0 1 0-7.8 7.8l1 1L12 21l7.8-7.6 1-1a5.5 5.5 0 0 0 0-7.8z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003ch4\u003eSupport a healthy weight\u003c\/h4\u003e\n\u003cp\u003eExact portions help avoid overfeeding, guesswork, and the guilt of \"just one more scoop.\"\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-benefit\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M12 22s8-4.5 8-11a8 8 0 0 0-16 0c0 6.5 8 11 8 11z\"\u003e\u003c\/path\u003e\u003ccircle cx=\"12\" cy=\"11\" r=\"3\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e\n\u003ch4\u003eTravel without the worry\u003c\/h4\u003e\n\u003cp\u003eAway for the day or the weekend, your pet still eats on their normal routine.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-benefit\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M4 4v16M4 4h16v10H8l-4 4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003ch4\u003eReduce mealtime stress\u003c\/h4\u003e\n\u003cp\u003ePets settle into a predictable rhythm — no more anxious pacing or begging.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-section\" style=\"padding-top: 0;\"\u003e\n\u003cdiv class=\"pp-section-title\"\u003eBUILT FOR\u003c\/div\u003e\n\u003cdiv class=\"pp-chips\"\u003e\n\u003cdiv class=\"pp-chip\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003crect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\"\u003e\u003c\/path\u003e\u003c\/svg\u003eBusy 9-to-5ers\u003c\/div\u003e\n\u003cdiv class=\"pp-chip\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M2 22l4-4M22 2l-4 4M4 20l16-16\"\u003e\u003c\/path\u003e\u003c\/svg\u003eFrequent travellers\u003c\/div\u003e\n\u003cdiv class=\"pp-chip\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003ccircle cx=\"8\" cy=\"8\" r=\"3\"\u003e\u003c\/circle\u003e\u003ccircle cx=\"17\" cy=\"8\" r=\"3\"\u003e\u003c\/circle\u003e\u003cpath d=\"M2 20c0-3.3 2.7-5 6-5s6 1.7 6 5M13 20c0-2.4 1.6-4.3 4-4.8\"\u003e\u003c\/path\u003e\u003c\/svg\u003eMulti-pet homes\u003c\/div\u003e\n\u003cdiv class=\"pp-chip\"\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M12 2v20M2 12h20\"\u003e\u003c\/path\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003c\/svg\u003ePets on a diet\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-section\"\u003e\n\u003cdiv class=\"pp-section-title\"\u003eWHY YOU'LL LOVE IT\u003c\/div\u003e\n\u003cdiv class=\"pp-grid\"\u003e\n\u003cdiv class=\"pp-card\"\u003e\n\u003cdiv class=\"pp-icon-dot\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M8 2v4M16 2v4M3 10h18M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eMeals on your schedule\u003c\/h3\u003e\n\u003cp\u003eProgram \u003cspan class=\"pp-stat\"\u003e1–4\u003c\/span\u003e feedings a day with a fully customisable timetable.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-card\"\u003e\n\u003cdiv class=\"pp-icon-dot\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M12 2v20M2 12h20\"\u003e\u003c\/path\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003c\/svg\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003ePortion-perfect control\u003c\/h3\u003e\n\u003cp\u003e\u003cspan class=\"pp-stat\"\u003e0–40\u003c\/span\u003e portions per meal for precise servings and easy weight management.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-card\"\u003e\n\u003cdiv class=\"pp-icon-dot\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003crect x=\"3\" y=\"6\" width=\"18\" height=\"12\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"M7 10h4M7 14h2\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eSimple digital display\u003c\/h3\u003e\n\u003cp\u003eAn easy-to-read LCD with intuitive +\/− buttons; setup takes minutes, no app required.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-card\"\u003e\n\u003cdiv class=\"pp-icon-dot\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003cpath d=\"M9 3H5a2 2 0 0 0-2 2v4M15 3h4a2 2 0 0 1 2 2v4M9 21H5a2 2 0 0 1-2-2v-4M15 21h4a2 2 0 0 0 2-2v-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3\u003eFits any space\u003c\/h3\u003e\n\u003cp\u003eA compact \u003cspan class=\"pp-stat\" style=\"font-size: 18px;\"\u003e17×17×24cm\u003c\/span\u003e footprint for counters and corners.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-card pp-full\"\u003e\n\u003cdiv class=\"pp-icon-dot\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"9\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 3a9 9 0 0 1 0 18\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003c\/div\u003e\n\u003cdiv style=\"flex: 1; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px;\"\u003e\n\u003cdiv\u003e\n\u003ch3\u003eMatches your home\u003c\/h3\u003e\n\u003cp\u003eChoose the finish that fits your space.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-colors\"\u003e\n\u003cdiv class=\"pp-swatch pp-black pp-active\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cdiv class=\"pp-swatch pp-white\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\u003cspan class=\"pp-color-label\" id=\"ppColorLabel\"\u003eBlack\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pp-closing\"\u003e\n\u003cp class=\"pp-closing-text\"\u003eGive your best friend the gift of routine —\u003cbr\u003e\u003cspan class=\"pp-shimmer\"\u003ehealthy habits for happy pets.\u003c\/span\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cscript\u003e\n    (function() {\n      var root = document.currentScript.closest('.pp-desc');\n      if (!root) return;\n\n      var revealTargets = root.querySelectorAll('.pp-card, .pp-benefit, .pp-chip');\n      \/\/ Only switch elements to the \"start hidden, reveal on scroll\" state\n      \/\/ once we've confirmed JS is actually running. If this script gets\n      \/\/ stripped by a theme, .pp-js never gets added and everything just\n      \/\/ stays visible by default — never permanently blank.\n      if ('IntersectionObserver' in window) {\n        root.classList.add('pp-js');\n        var io = new IntersectionObserver(function(entries) {\n          entries.forEach(function(e, i) {\n            if (e.isIntersecting) {\n              setTimeout(function() { e.target.classList.add('pp-visible'); }, i * 60);\n              io.unobserve(e.target);\n            }\n          });\n        }, { threshold: 0.15 });\n        revealTargets.forEach(function(el) { io.observe(el); });\n      } else {\n        revealTargets.forEach(function(el) { el.classList.add('pp-visible'); });\n      }\n\n      window.ppSelectColor = function(el) {\n        root.querySelectorAll('.pp-swatch').forEach(function(s) { s.classList.remove('pp-active'); });\n        el.classList.add('pp-active');\n        var label = root.querySelector('#ppColorLabel');\n        if (label) label.textContent = el.getAttribute('data-label');\n      };\n\n      window.ppToggleFaq = function(btn) {\n        var item = btn.closest('.pp-faq-item');\n        var wasOpen = item.classList.contains('pp-open');\n        root.querySelectorAll('.pp-faq-item').forEach(function(i) { i.classList.remove('pp-open'); });\n        if (!wasOpen) item.classList.add('pp-open');\n      };\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e","brand":"My Store 2","offers":[{"title":"Black","offer_id":58328020779311,"sku":null,"price":1099.0,"currency_code":"ZAR","in_stock":true},{"title":"White","offer_id":58328020812079,"sku":null,"price":1099.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0994\/3921\/4895\/files\/pawportion_real_photo_2_countertop.jpg?v=1786905867"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0994\/3921\/4895\/collections\/pawportion_photo_schedule.png?v=1787241296","url":"https:\/\/pawportion.co.za\/collections\/pet-feeders.oembed","provider":"Paw Portion","version":"1.0","type":"link"}