{"title":"Home page","description":null,"products":[{"product_id":"grin-goods™-toothbrush-steriliser","title":"Grin Goods™ Brush Ready Toothbrush Steriliser","description":"\n\u003cdiv id=\"gg-description\"\u003e\n  \u003cstyle\u003e\n    #gg-description {\n      --gg-green: #174b35;\n      --gg-sage: #dfe9d7;\n      --gg-cream: #f7f5ed;\n      --gg-ink: #171a16;\n      --gg-muted: #697166;\n      font-family: inherit;\n      color: var(--gg-ink);\n      line-height: 1.65;\n    }\n\n    #gg-description * { box-sizing: border-box; }\n\n    #gg-description .gg-intro {\n      background: linear-gradient(145deg, #f8f6ef, #e8efe2);\n      padding: 27px 20px 23px;\n      text-align: center;\n      position: relative;\n      overflow: hidden;\n    }\n\n    #gg-description .gg-brand {\n      font-size: 10px;\n      letter-spacing: 2.5px;\n      font-weight: 800;\n      color: var(--gg-green);\n      margin-bottom: 12px;\n    }\n\n    #gg-description h2 {\n      font-size: clamp(27px, 7vw, 36px);\n      line-height: 1.12;\n      letter-spacing: -1px;\n      font-weight: 800;\n      margin: 0 0 13px;\n    }\n\n    #gg-description .gg-green {\n      color: var(--gg-green);\n    }\n\n    #gg-description .gg-intro p {\n      font-size: 13px;\n      color: #596256;\n      max-width: 390px;\n      margin: 0 auto;\n      line-height: 1.85;\n    }\n\n    #gg-description .gg-divider {\n      width: 35px;\n      height: 3px;\n      border-radius: 10px;\n      background: #71966b;\n      margin: 18px auto 0;\n    }\n\n    #gg-description .gg-benefits {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 10px;\n      padding: 20px 0;\n    }\n\n    #gg-description .gg-benefit {\n      background: #f5f7f1;\n      border: 1px solid #e9ede4;\n      padding: 17px 13px;\n      border-radius: 5px;\n      text-align: left;\n      opacity: 0;\n      transform: translateY(12px);\n      transition: opacity .5s ease, transform .5s ease,\n        background .2s ease;\n    }\n\n    #gg-description .gg-benefit.gg-in {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    #gg-description .gg-benefit:hover {\n      background: #eaf1e5;\n    }\n\n    #gg-description .gg-icon {\n      width: 35px;\n      height: 35px;\n      display: grid;\n      place-items: center;\n      border-radius: 50%;\n      background: var(--gg-sage);\n      color: var(--gg-green);\n      font-size: 19px;\n      margin-bottom: 12px;\n    }\n\n    #gg-description .gg-benefit h3 {\n      font-size: 12px;\n      line-height: 1.4;\n      margin: 0 0 5px;\n      font-weight: 800;\n    }\n\n    #gg-description .gg-benefit p {\n      font-size: 11px;\n      line-height: 1.75;\n      color: var(--gg-muted);\n      margin: 0;\n    }\n\n    #gg-description .gg-section-title {\n      text-align: center;\n      font-size: 22px;\n      font-weight: 800;\n      letter-spacing: -.6px;\n      margin: 13px 0 5px;\n    }\n\n    #gg-description .gg-subtitle {\n      text-align: center;\n      color: var(--gg-muted);\n      font-size: 12px;\n      margin: 0 0 18px;\n    }\n\n    #gg-description .gg-steps {\n      padding: 20px 16px;\n      background: var(--gg-cream);\n      margin-bottom: 20px;\n    }\n\n    #gg-description .gg-step {\n      display: flex;\n      align-items: flex-start;\n      gap: 13px;\n      padding: 13px 0;\n      border-bottom: 1px solid #e6e8df;\n    }\n\n    #gg-description .gg-step:last-child {\n      border-bottom: 0;\n    }\n\n    #gg-description .gg-number {\n      flex: 0 0 29px;\n      height: 29px;\n      display: grid;\n      place-items: center;\n      border-radius: 50%;\n      background: var(--gg-green);\n      color: white;\n      font-size: 11px;\n      font-weight: 800;\n    }\n\n    #gg-description .gg-step h3 {\n      font-size: 12px;\n      margin: 2px 0 4px;\n      font-weight: 800;\n    }\n\n    #gg-description .gg-step p {\n      font-size: 11px;\n      line-height: 1.75;\n      color: var(--gg-muted);\n      margin: 0;\n    }\n\n    #gg-description .gg-tabs {\n      display: flex;\n      gap: 7px;\n      margin: 18px 0 0;\n    }\n\n    #gg-description .gg-tab {\n      flex: 1;\n      padding: 11px 5px;\n      border: 1px solid #dfe4d9;\n      background: white;\n      color: var(--gg-green);\n      font: inherit;\n      font-size: 10px;\n      font-weight: 750;\n      cursor: pointer;\n      border-radius: 4px;\n      transition: background .2s, color .2s;\n    }\n\n    #gg-description .gg-tab[aria-selected=\"true\"] {\n      background: var(--gg-green);\n      border-color: var(--gg-green);\n      color: white;\n    }\n\n    #gg-description .gg-tab-panel {\n      background: #f5f7f1;\n      padding: 18px;\n      margin-top: 8px;\n      min-height: 104px;\n      animation: gg-change .25s ease;\n    }\n\n    #gg-description .gg-tab-panel h3 {\n      font-size: 13px;\n      margin: 0 0 7px;\n    }\n\n    #gg-description .gg-tab-panel p {\n      font-size: 12px;\n      line-height: 1.8;\n      color: var(--gg-muted);\n      margin: 0;\n    }\n\n    #gg-description .gg-details {\n      border-top: 1px solid #e7eae2;\n      margin-top: 20px;\n    }\n\n    #gg-description details {\n      border-bottom: 1px solid #e7eae2;\n    }\n\n    #gg-description summary {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 12px;\n      cursor: pointer;\n      list-style: none;\n      padding: 16px 2px;\n      font-size: 12px;\n      font-weight: 800;\n    }\n\n    #gg-description summary::-webkit-details-marker {\n      display: none;\n    }\n\n    #gg-description summary::after {\n      content: \"+\";\n      font-size: 20px;\n      font-weight: 400;\n      color: var(--gg-green);\n    }\n\n    #gg-description details[open] summary::after {\n      content: \"−\";\n    }\n\n    #gg-description .gg-answer {\n      padding: 0 2px 16px;\n      color: var(--gg-muted);\n      font-size: 12px;\n      line-height: 1.85;\n    }\n\n    #gg-description .gg-size {\n      margin-top: 20px;\n      background: var(--gg-green);\n      color: white;\n      padding: 19px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 10px;\n    }\n\n    #gg-description .gg-size small {\n      display: block;\n      font-size: 9px;\n      letter-spacing: 1.5px;\n      opacity: .8;\n      margin-bottom: 3px;\n    }\n\n    #gg-description .gg-size strong {\n      font-size: 16px;\n    }\n\n    #gg-description .gg-size-icon {\n      font-size: 26px;\n      color: #dfe9d7;\n    }\n\n    #gg-description .gg-note {\n      font-size: 10px;\n      line-height: 1.8;\n      color: #777d72;\n      margin: 15px 0 0;\n    }\n\n    @keyframes gg-change {\n      from { opacity: 0; transform: translateY(5px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      #gg-description *,\n      #gg-description *::before,\n      #gg-description *::after {\n        animation: none !important;\n        transition: none !important;\n      }\n\n      #gg-description .gg-benefit {\n        opacity: 1;\n        transform: none;\n      }\n    }\n  \u003c\/style\u003e\n\n  \u003c!-- Brand-matched introduction --\u003e\n  \u003cdiv class=\"gg-intro\"\u003e\n    \u003cdiv class=\"gg-brand\"\u003eGRIN GOODS™ · DAILY ESSENTIALS\u003c\/div\u003e\n    \u003ch2\u003eA fresh start\u003cbr\u003efor your \u003cspan class=\"gg-green\"\u003esmile.\u003c\/span\u003e\n\u003c\/h2\u003e\n    \u003cp\u003e\n      Meet a smarter way to store and care for your toothbrush.\n      Thoughtful design meets everyday convenience, helping you\n      create a bathroom space that feels a little more organised.\n    \u003c\/p\u003e\n    \u003cdiv class=\"gg-divider\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Benefits --\u003e\n  \u003cdiv class=\"gg-benefits\"\u003e\n    \u003carticle class=\"gg-benefit\"\u003e\n      \u003cdiv class=\"gg-icon\"\u003e↗\u003c\/div\u003e\n      \u003ch3\u003eWave to open\u003c\/h3\u003e\n      \u003cp\u003eEnjoy convenient, touch-free access whenever you need your brush.\u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"gg-benefit\"\u003e\n      \u003cdiv class=\"gg-icon\"\u003e✧\u003c\/div\u003e\n      \u003ch3\u003eAutomatic care cycle\u003c\/h3\u003e\n      \u003cp\u003eUVC and drying functions designed for between-brush care.\u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"gg-benefit\"\u003e\n      \u003cdiv class=\"gg-icon\"\u003e⌂\u003c\/div\u003e\n      \u003ch3\u003eA tidier bathroom\u003c\/h3\u003e\n      \u003cp\u003eKeep your toothbrush stored neatly and free up counter space.\u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"gg-benefit\"\u003e\n      \u003cdiv class=\"gg-icon\"\u003e◫\u003c\/div\u003e\n      \u003ch3\u003eCompact \u0026amp; practical\u003c\/h3\u003e\n      \u003cp\u003eA space-conscious design with no-drill wall mounting.\u003c\/p\u003e\n    \u003c\/article\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Interactive feature tabs --\u003e\n  \u003ch3 class=\"gg-section-title\"\u003eDesigned around you.\u003c\/h3\u003e\n  \u003cp class=\"gg-subtitle\"\u003eTap to discover what makes it special.\u003c\/p\u003e\n\n  \u003cdiv class=\"gg-tabs\" role=\"tablist\" aria-label=\"Product features\"\u003e\n    \u003cbutton class=\"gg-tab\" type=\"button\" role=\"tab\" aria-selected=\"true\" data-panel=\"access\"\u003eEasy access\u003c\/button\u003e\n    \u003cbutton class=\"gg-tab\" type=\"button\" role=\"tab\" aria-selected=\"false\" data-panel=\"care\"\u003eBrush care\u003c\/button\u003e\n    \u003cbutton class=\"gg-tab\" type=\"button\" role=\"tab\" aria-selected=\"false\" data-panel=\"space\"\u003eYour space\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gg-tab-panel\" role=\"tabpanel\" aria-live=\"polite\"\u003e\n    \u003ch3 id=\"gg-feature-heading\"\u003eA wave is all it takes.\u003c\/h3\u003e\n    \u003cp id=\"gg-feature-copy\"\u003e\n      Open the unit with a simple hand wave for convenient access to\n      your toothbrush, without needing to handle a lid.\n    \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- How it works --\u003e\n  \u003cdiv class=\"gg-steps\" style=\"margin-top:26px\"\u003e\n    \u003ch3 style=\"font-size:20px;letter-spacing:-.5px;margin:0 0 5px\"\u003e\n      Your new routine, simplified.\n    \u003c\/h3\u003e\n    \u003cp style=\"font-size:12px;color:#697166;margin:0 0 8px\"\u003e\n      Three simple steps. Less fuss every day.\n    \u003c\/p\u003e\n\n    \u003cdiv class=\"gg-step\"\u003e\n      \u003cdiv class=\"gg-number\"\u003e1\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eWave to open\u003c\/h3\u003e\n        \u003cp\u003eAccess the toothbrush compartment with a simple wave.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gg-step\"\u003e\n      \u003cdiv class=\"gg-number\"\u003e2\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003ePlace your toothbrush\u003c\/h3\u003e\n        \u003cp\u003ePosition the brush head inside as directed in the product instructions.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"gg-step\"\u003e\n      \u003cdiv class=\"gg-number\"\u003e3\u003c\/div\u003e\n      \u003cdiv\u003e\n        \u003ch3\u003eLet the cycle run\u003c\/h3\u003e\n        \u003cp\u003eAllow the automatic UVC and drying cycle to complete according to the supplied instructions.\u003c\/p\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Expandable details --\u003e\n  \u003ch3 class=\"gg-section-title\" style=\"text-align:left;margin-top:25px\"\u003e\n    The details matter.\n  \u003c\/h3\u003e\n\n  \u003cdiv class=\"gg-details\"\u003e\n    \u003cdetails\u003e\n      \u003csummary\u003eSize \u0026amp; installation\u003c\/summary\u003e\n      \u003cdiv class=\"gg-answer\"\u003e\n        The stated product size is 11.8 × 6.1 cm. The unit is designed\n        for no-drill wall mounting. Follow the manufacturer's guidance\n        on compatible surfaces and installation clearance.\n      \u003c\/div\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eUVC \u0026amp; drying function\u003c\/summary\u003e\n      \u003cdiv class=\"gg-answer\"\u003e\n        The device features an automatic UVC and drying cycle.\n        Actual germ-reduction performance depends on the device and\n        operating conditions. Refer to verified manufacturer test\n        results for specific efficacy claims.\n      \u003c\/div\u003e\n    \u003c\/details\u003e\n\n    \u003cdetails\u003e\n      \u003csummary\u003eEveryday toothbrush care\u003c\/summary\u003e\n      \u003cdiv class=\"gg-answer\"\u003e\n        Continue to rinse and maintain your toothbrush according to\n        your dentist's advice and the toothbrush manufacturer's\n        instructions. The device does not replace routine toothbrush care.\n      \u003c\/div\u003e\n    \u003c\/details\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Compact dimensions --\u003e\n  \u003cdiv class=\"gg-size\"\u003e\n    \u003cdiv\u003e\n      \u003csmall\u003eCOMPACT BY DESIGN\u003c\/small\u003e\n      \u003cstrong\u003e11.8 × 6.1 cm\u003c\/strong\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gg-size-icon\"\u003e↔\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"gg-note\"\u003e\n    Please refer to the supplied product instructions for operation,\n    installation and care. UVC performance claims should be based on\n    verified manufacturer testing.\n  \u003c\/p\u003e\n\n  \u003cscript\u003e\n    (() =\u003e {\n      const root = document.getElementById('gg-description');\n      if (!root || root.dataset.ready === 'true') return;\n      root.dataset.ready = 'true';\n\n      \/\/ Staggered entrance animation.\n      const benefits = root.querySelectorAll('.gg-benefit');\n\n      if ('IntersectionObserver' in window) {\n        const observer = new IntersectionObserver(entries =\u003e {\n          entries.forEach(entry =\u003e {\n            if (entry.isIntersecting) {\n              entry.target.classList.add('gg-in');\n              observer.unobserve(entry.target);\n            }\n          });\n        }, { threshold: 0.12 });\n\n        benefits.forEach((item, index) =\u003e {\n          item.style.transitionDelay = (index % 2) * 100 + 'ms';\n          observer.observe(item);\n        });\n      } else {\n        benefits.forEach(item =\u003e item.classList.add('gg-in'));\n      }\n\n      \/\/ Interactive product feature tabs.\n      const content = {\n        access: {\n          title: 'A wave is all it takes.',\n          copy: 'Open the unit with a simple hand wave for convenient access to your toothbrush, without needing to handle a lid.'\n        },\n        care: {\n          title: 'Between-brush care, made simple.',\n          copy: 'The automatic UVC and drying functions are designed to support your toothbrush care routine. Follow the supplied instructions for the correct cycle.'\n        },\n        space: {\n          title: 'A little more room to breathe.',\n          copy: 'The compact, wall-mounted design helps keep your toothbrush stored neatly and your countertop looking less cluttered.'\n        }\n      };\n\n      const heading = root.querySelector('#gg-feature-heading');\n      const copy = root.querySelector('#gg-feature-copy');\n      const tabs = root.querySelectorAll('.gg-tab');\n      const panel = root.querySelector('.gg-tab-panel');\n\n      tabs.forEach(tab =\u003e {\n        tab.addEventListener('click', () =\u003e {\n          const selected = content[tab.dataset.panel];\n          if (!selected) return;\n\n          tabs.forEach(item =\u003e {\n            item.setAttribute('aria-selected', String(item === tab));\n          });\n\n          panel.style.animation = 'none';\n          heading.textContent = selected.title;\n          copy.textContent = selected.copy;\n          void panel.offsetWidth;\n          panel.style.animation = '';\n        });\n      });\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n","brand":"Grin Goods™","offers":[{"title":"Default Title","offer_id":46252926533767,"sku":null,"price":399.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0776\/0088\/2823\/files\/product-image-with-the-two-small-hooks-removed.png?v=1792578420"},{"product_id":"grin-goods™-dental-floss-picks","title":"Grin Goods™ Smile Ready Floss Picks","description":"\n\u003cdiv id=\"gg-smile-premium\"\u003e\n  \u003cstyle\u003e\n    #gg-smile-premium {\n      --gg-green: #286b43;\n      --gg-forest: #103d2b;\n      --gg-black: #111411;\n      --gg-muted: #687168;\n      --gg-pale: #edf3e9;\n      --gg-border: #dce5d8;\n      background: #fff;\n      color: var(--gg-black);\n      font-family: Arial, Helvetica, sans-serif;\n      line-height: 1.7;\n      overflow: hidden;\n    }\n\n    #gg-smile-premium * { box-sizing: border-box; }\n\n    #gg-smile-premium h2,\n    #gg-smile-premium h3,\n    #gg-smile-premium p { margin-top: 0; }\n\n    #gg-smile-premium .gg-wrap {\n      max-width: 1080px;\n      margin: 0 auto;\n      padding: 0 24px;\n    }\n\n    #gg-smile-premium .gg-section { padding: 76px 0; }\n\n    #gg-smile-premium .gg-center { text-align: center; }\n\n    #gg-smile-premium .gg-eyebrow {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 9px;\n      color: var(--gg-green);\n      font-size: 10px;\n      font-weight: 800;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n    }\n\n    #gg-smile-premium .gg-dot {\n      width: 8px;\n      height: 8px;\n      border-radius: 50%;\n      background: #78a778;\n      box-shadow: 0 0 0 4px #78a77824;\n    }\n\n    #gg-smile-premium h2 {\n      margin: 18px 0;\n      color: var(--gg-forest);\n      font-size: clamp(34px, 5vw, 53px);\n      font-weight: 800;\n      line-height: 1.1;\n      letter-spacing: -2px;\n    }\n\n    #gg-smile-premium .gg-accent { color: var(--gg-green); }\n\n    #gg-smile-premium .gg-intro {\n      max-width: 610px;\n      margin: 0 auto 36px;\n      color: var(--gg-muted);\n      font-size: 14px;\n      line-height: 1.9;\n    }\n\n    \/* Subtle reveal animation with visible-content fallback *\/\n    #gg-smile-premium .gg-reveal {\n      opacity: 1;\n      transform: none;\n    }\n\n    #gg-smile-premium.gg-animated .gg-reveal {\n      opacity: 0;\n      transform: translateY(22px);\n      transition: opacity .7s ease, transform .7s ease;\n    }\n\n    #gg-smile-premium.gg-animated .gg-reveal.gg-in {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    #gg-smile-premium .gg-d1 { transition-delay: .1s !important; }\n    #gg-smile-premium .gg-d2 { transition-delay: .2s !important; }\n    #gg-smile-premium .gg-d3 { transition-delay: .3s !important; }\n\n    \/* HERO *\/\n    #gg-smile-premium .gg-hero {\n      position: relative;\n      isolation: isolate;\n      padding: 86px 22px 78px;\n      text-align: center;\n      background:\n        radial-gradient(ellipse at 95% 5%, #dce9d8, transparent 42%),\n        radial-gradient(ellipse at 0% 100%, #edf3e9, transparent 42%),\n        #fafbf8;\n    }\n\n    #gg-smile-premium .gg-hero-inner {\n      max-width: 760px;\n      margin: auto;\n    }\n\n    #gg-smile-premium .gg-hero h2 {\n      margin: 26px 0;\n      font-size: clamp(43px, 7vw, 74px);\n      letter-spacing: -3px;\n      line-height: 1.02;\n    }\n\n    #gg-smile-premium .gg-hero-copy {\n      max-width: 590px;\n      margin: auto;\n      color: #59645b;\n      font-size: 15px;\n      line-height: 1.95;\n    }\n\n    #gg-smile-premium .gg-hero-note {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 9px;\n      margin-top: 26px;\n      color: var(--gg-forest);\n      font-size: 11px;\n      font-weight: 700;\n    }\n\n    #gg-smile-premium .gg-check {\n      display: grid;\n      place-items: center;\n      width: 23px;\n      height: 23px;\n      border-radius: 50%;\n      background: #dce9d8;\n      color: var(--gg-forest);\n    }\n\n    \/* GREEN BENEFIT STRIP *\/\n    #gg-smile-premium .gg-strip {\n      padding: 20px;\n      background: var(--gg-forest);\n      color: white;\n    }\n\n    #gg-smile-premium .gg-strip-inner {\n      display: flex;\n      flex-wrap: wrap;\n      justify-content: center;\n      gap: 14px 36px;\n    }\n\n    #gg-smile-premium .gg-strip-item {\n      font-size: 11px;\n      font-weight: 700;\n    }\n\n    #gg-smile-premium .gg-strip-item span {\n      margin-right: 7px;\n      color: #b8d9ad;\n      font-size: 16px;\n    }\n\n    \/* BENEFIT CARDS *\/\n    #gg-smile-premium .gg-benefits {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 16px;\n    }\n\n    #gg-smile-premium .gg-benefit {\n      position: relative;\n      padding: 28px 25px;\n      border: 1px solid #e5eae2;\n      border-radius: 15px;\n      background: #fff;\n      transition: transform .3s ease, box-shadow .3s ease,\n        border-color .3s ease;\n    }\n\n    #gg-smile-premium .gg-benefit:hover {\n      transform: translateY(-5px);\n      border-color: #a9c6a4;\n      box-shadow: 0 15px 35px #103d2b0c;\n    }\n\n    #gg-smile-premium .gg-icon {\n      display: grid;\n      place-items: center;\n      width: 47px;\n      height: 47px;\n      margin-bottom: 19px;\n      border-radius: 14px;\n      background: var(--gg-pale);\n      color: var(--gg-forest);\n      font-size: 22px;\n    }\n\n    #gg-smile-premium .gg-number {\n      position: absolute;\n      top: 24px;\n      right: 22px;\n      color: #a0aaa0;\n      font-size: 10px;\n      letter-spacing: 1px;\n    }\n\n    #gg-smile-premium .gg-benefit h3 {\n      margin-bottom: 8px;\n      color: var(--gg-forest);\n      font-size: 16px;\n      line-height: 1.45;\n    }\n\n    #gg-smile-premium .gg-benefit p {\n      margin-bottom: 0;\n      color: var(--gg-muted);\n      font-size: 12px;\n      line-height: 1.85;\n    }\n\n    \/* LIFESTYLE *\/\n    #gg-smile-premium .gg-soft { background: #fafbf8; }\n\n    #gg-smile-premium .gg-lifestyle {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 15px;\n    }\n\n    #gg-smile-premium .gg-life {\n      padding: 25px 22px;\n      border: 1px solid var(--gg-border);\n      border-radius: 14px;\n      background: white;\n      transition: transform .3s ease, box-shadow .3s ease;\n    }\n\n    #gg-smile-premium .gg-life:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 12px 28px #103d2b0c;\n    }\n\n    #gg-smile-premium .gg-life h3 {\n      margin-bottom: 7px;\n      color: var(--gg-forest);\n      font-size: 14px;\n    }\n\n    #gg-smile-premium .gg-life p {\n      margin: 0;\n      color: var(--gg-muted);\n      font-size: 12px;\n    }\n\n    #gg-smile-premium .gg-life-icon {\n      margin-bottom: 14px;\n      color: var(--gg-green);\n      font-size: 25px;\n    }\n\n    \/* HOW TO USE *\/\n    #gg-smile-premium .gg-how {\n      display: grid;\n      grid-template-columns: .8fr 1.2fr;\n      gap: 50px;\n      align-items: center;\n    }\n\n    #gg-smile-premium .gg-routine {\n      display: flex;\n      flex-direction: column;\n      justify-content: space-between;\n      min-height: 300px;\n      padding: 30px;\n      border-radius: 18px;\n      background: linear-gradient(145deg, #edf3e9, #dce9d8);\n    }\n\n    #gg-smile-premium .gg-big {\n      color: #a5c3a0;\n      font-size: 100px;\n      font-weight: 900;\n      line-height: 1;\n      letter-spacing: -7px;\n    }\n\n    #gg-smile-premium .gg-routine strong {\n      color: var(--gg-forest);\n      font-size: 20px;\n    }\n\n    #gg-smile-premium .gg-routine p {\n      margin: 7px 0 0;\n      color: #59645b;\n      font-size: 12px;\n    }\n\n    #gg-smile-premium .gg-steps {\n      display: grid;\n      gap: 23px;\n    }\n\n    #gg-smile-premium .gg-step {\n      display: grid;\n      grid-template-columns: 38px 1fr;\n      gap: 14px;\n    }\n\n    #gg-smile-premium .gg-step-num {\n      display: grid;\n      place-items: center;\n      width: 37px;\n      height: 37px;\n      border: 1px solid #a9c6a4;\n      border-radius: 50%;\n      color: var(--gg-forest);\n      font-size: 11px;\n      font-weight: 800;\n    }\n\n    #gg-smile-premium .gg-step h3 {\n      margin: 2px 0 5px;\n      color: var(--gg-forest);\n      font-size: 14px;\n    }\n\n    #gg-smile-premium .gg-step p {\n      margin: 0;\n      color: var(--gg-muted);\n      font-size: 12px;\n      line-height: 1.85;\n    }\n\n    \/* PACK SIZES AND PRICES *\/\n    #gg-smile-premium .gg-packs {\n      background: linear-gradient(145deg, #f1f6ed, #e0ebdc);\n    }\n\n    #gg-smile-premium .gg-pack-grid {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 13px;\n      max-width: 780px;\n      margin: 0 auto 25px;\n    }\n\n    #gg-smile-premium .gg-pack {\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      align-items: flex-start;\n      min-width: 0;\n      min-height: 170px;\n      padding: 22px 18px;\n      border: 1px solid #d2dfce;\n      border-radius: 14px;\n      background: white;\n      color: var(--gg-forest);\n      transition: transform .3s ease, box-shadow .3s ease;\n    }\n\n    #gg-smile-premium .gg-pack:hover {\n      transform: translateY(-4px);\n      box-shadow: 0 12px 25px #103d2b10;\n    }\n\n    #gg-smile-premium .gg-pack-featured {\n      border: 2px solid var(--gg-green);\n      padding: 21px 17px;\n      background: #f7fbf4;\n    }\n\n    #gg-smile-premium .gg-pack .gg-quantity {\n      font-size: 29px;\n      font-weight: 900;\n      line-height: 1.2;\n      letter-spacing: -1px;\n    }\n\n    #gg-smile-premium .gg-pack .gg-unit {\n      margin-top: 5px;\n      color: var(--gg-muted);\n      font-size: 11px;\n    }\n\n    #gg-smile-premium .gg-price {\n      margin-top: 12px;\n      color: var(--gg-forest);\n      font-size: 17px;\n      font-weight: 800;\n      letter-spacing: -.3px;\n      white-space: nowrap;\n    }\n\n    #gg-smile-premium .gg-choice {\n      margin-top: 13px;\n      color: var(--gg-green);\n      font-size: 9px;\n      font-weight: 800;\n      letter-spacing: .6px;\n      line-height: 1.5;\n      text-transform: uppercase;\n    }\n\n    #gg-smile-premium .gg-selected {\n      position: absolute;\n      top: 12px;\n      right: 13px;\n      color: var(--gg-green);\n      font-size: 16px;\n      font-weight: 800;\n    }\n\n    #gg-smile-premium .gg-pack-summary {\n      max-width: 780px;\n      margin: auto;\n      padding-top: 22px;\n      border-top: 1px solid #cedcc8;\n    }\n\n    #gg-smile-premium .gg-pack-summary strong {\n      display: block;\n      color: var(--gg-forest);\n      font-size: 15px;\n    }\n\n    #gg-smile-premium .gg-pack-summary small {\n      display: block;\n      margin-top: 5px;\n      color: var(--gg-muted);\n      font-size: 12px;\n    }\n\n    #gg-smile-premium .gg-pack-note {\n      max-width: 620px;\n      margin: 22px auto 0;\n      color: var(--gg-muted);\n      font-size: 10px;\n      text-align: center;\n    }\n\n    \/* FAQ *\/\n    #gg-smile-premium .gg-faq {\n      max-width: 760px;\n      margin: auto;\n    }\n\n    #gg-smile-premium .gg-faq-item {\n      border-bottom: 1px solid #e2e8df;\n    }\n\n    #gg-smile-premium .gg-question {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 15px;\n      width: 100%;\n      padding: 20px 0;\n      border: 0;\n      background: transparent;\n      color: var(--gg-forest);\n      text-align: left;\n      font: inherit;\n      font-size: 13px;\n      font-weight: 750;\n      cursor: pointer;\n    }\n\n    #gg-smile-premium .gg-plus {\n      color: var(--gg-green);\n      font-size: 22px;\n      transition: transform .25s ease;\n    }\n\n    #gg-smile-premium .gg-question[aria-expanded=\"true\"] .gg-plus {\n      transform: rotate(45deg);\n    }\n\n    #gg-smile-premium .gg-answer {\n      padding: 0 25px 20px 0;\n      color: var(--gg-muted);\n      font-size: 12px;\n      line-height: 1.85;\n    }\n\n    #gg-smile-premium .gg-answer[hidden] { display: none; }\n\n    #gg-smile-premium .gg-footer {\n      padding: 32px 20px;\n      text-align: center;\n      background: #fafbf8;\n    }\n\n    #gg-smile-premium .gg-brand {\n      color: var(--gg-forest);\n      font-size: 23px;\n      font-weight: 900;\n      letter-spacing: -1px;\n    }\n\n    #gg-smile-premium .gg-footer p {\n      margin: 7px 0 0;\n      color: var(--gg-muted);\n      font-size: 11px;\n    }\n\n    @media (max-width: 650px) {\n      #gg-smile-premium .gg-wrap { padding: 0 19px; }\n      #gg-smile-premium .gg-section { padding: 53px 0; }\n      #gg-smile-premium .gg-hero { padding: 57px 19px 53px; }\n\n      #gg-smile-premium .gg-hero h2 {\n        font-size: clamp(40px, 10vw, 56px);\n        letter-spacing: -2px;\n      }\n\n      #gg-smile-premium .gg-hero-copy { font-size: 13px; }\n\n      #gg-smile-premium .gg-strip-inner {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 10px;\n        max-width: 260px;\n        margin: auto;\n      }\n\n      #gg-smile-premium .gg-benefits { gap: 10px; }\n      #gg-smile-premium .gg-benefit { padding: 19px 13px; }\n      #gg-smile-premium .gg-benefit h3 { font-size: 13px; }\n      #gg-smile-premium .gg-benefit p { font-size: 11px; }\n\n      #gg-smile-premium .gg-number {\n        top: 12px;\n        right: 10px;\n        font-size: 8px;\n      }\n\n      #gg-smile-premium .gg-icon {\n        width: 39px;\n        height: 39px;\n        margin-bottom: 14px;\n      }\n\n      #gg-smile-premium .gg-lifestyle { grid-template-columns: 1fr; }\n\n      #gg-smile-premium .gg-life { padding: 21px; }\n\n      #gg-smile-premium .gg-how {\n        grid-template-columns: 1fr;\n        gap: 30px;\n      }\n\n      #gg-smile-premium .gg-routine { min-height: 230px; }\n      #gg-smile-premium .gg-big { font-size: 80px; }\n\n      #gg-smile-premium .gg-pack-grid { gap: 8px; }\n\n      #gg-smile-premium .gg-pack {\n        min-height: 150px;\n        padding: 16px 10px;\n      }\n\n      #gg-smile-premium .gg-pack-featured {\n        padding: 15px 9px;\n      }\n\n      #gg-smile-premium .gg-pack .gg-quantity { font-size: 24px; }\n      #gg-smile-premium .gg-pack .gg-unit { font-size: 10px; }\n      #gg-smile-premium .gg-price { font-size: 12px; }\n\n      #gg-smile-premium .gg-choice {\n        font-size: 7.5px;\n        letter-spacing: .2px;\n      }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n      #gg-smile-premium *,\n      #gg-smile-premium *::before,\n      #gg-smile-premium *::after {\n        animation: none !important;\n        transition: none !important;\n      }\n\n      #gg-smile-premium.gg-animated .gg-reveal {\n        opacity: 1;\n        transform: none;\n      }\n    }\n  \u003c\/style\u003e\n\n  \u003c!-- HERO --\u003e\n  \u003csection class=\"gg-hero\"\u003e\n    \u003cdiv class=\"gg-hero-inner gg-reveal\"\u003e\n      \u003cdiv class=\"gg-eyebrow\"\u003e\n        \u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003e\n        GRIN GOODS™ · EVERYDAY ORAL CARE\n      \u003c\/div\u003e\n\n      \u003ch2\u003e\n        Enjoy your meal.\u003cbr\u003e\n        Get \u003cspan class=\"gg-accent\"\u003esmile ready.\u003c\/span\u003e\n      \u003c\/h2\u003e\n\n      \u003cp class=\"gg-hero-copy\"\u003e\n        Lunch is over, but something is still stuck between your teeth.\n        Grin Goods™ Smile Ready Floss Picks help remove trapped food\n        and make between-teeth cleaning simpler, without the fuss of\n        winding floss around your fingers.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"gg-hero-note\"\u003e\n        \u003cspan class=\"gg-check\"\u003e✓\u003c\/span\u003e\n        A simple step in your everyday oral-care routine\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- BENEFIT STRIP --\u003e\n  \u003cdiv class=\"gg-strip\"\u003e\n    \u003cdiv class=\"gg-strip-inner\"\u003e\n      \u003cdiv class=\"gg-strip-item\"\u003e\n\u003cspan\u003e✳\u003c\/span\u003eHelps remove trapped food\u003c\/div\u003e\n      \u003cdiv class=\"gg-strip-item\"\u003e\n\u003cspan\u003e↗\u003c\/span\u003eConvenient handheld design\u003c\/div\u003e\n      \u003cdiv class=\"gg-strip-item\"\u003e\n\u003cspan\u003e○\u003c\/span\u003eFor home, work or travel\u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- BENEFITS --\u003e\n  \u003csection class=\"gg-section\"\u003e\n    \u003cdiv class=\"gg-wrap\"\u003e\n      \u003cdiv class=\"gg-center gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eTHE LITTLE THINGS MATTER\u003c\/div\u003e\n        \u003ch2\u003eA small pick.\u003cbr\u003e\u003cspan class=\"gg-accent\"\u003eA better-feeling routine.\u003c\/span\u003e\n\u003c\/h2\u003e\n        \u003cp class=\"gg-intro\"\u003e\n          Make between-teeth cleaning a simpler part of your day.\n          Give your smile a little extra attention after meals and\n          feel ready for whatever comes next.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-benefits\"\u003e\n        \u003carticle class=\"gg-benefit gg-reveal\"\u003e\n          \u003cspan class=\"gg-number\"\u003e01 \/ 04\u003c\/span\u003e\n          \u003cdiv class=\"gg-icon\"\u003e✳\u003c\/div\u003e\n          \u003ch3\u003eLeave the leftovers behind\u003c\/h3\u003e\n          \u003cp\u003eHelp remove food caught between your teeth after meals and snacks as part of your everyday oral-care routine.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"gg-benefit gg-reveal gg-d1\"\u003e\n          \u003cspan class=\"gg-number\"\u003e02 \/ 04\u003c\/span\u003e\n          \u003cdiv class=\"gg-icon\"\u003e⌁\u003c\/div\u003e\n          \u003ch3\u003eReach between your teeth\u003c\/h3\u003e\n          \u003cp\u003eGive easy-to-miss spaces extra attention with a handy tool designed for between-teeth cleaning.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"gg-benefit gg-reveal gg-d2\"\u003e\n          \u003cspan class=\"gg-number\"\u003e03 \/ 04\u003c\/span\u003e\n          \u003cdiv class=\"gg-icon\"\u003e↗\u003c\/div\u003e\n          \u003ch3\u003eKeep your routine simple\u003c\/h3\u003e\n          \u003cp\u003eSkip winding floss around your fingers. The handheld pick makes between-teeth cleaning convenient.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"gg-benefit gg-reveal gg-d3\"\u003e\n          \u003cspan class=\"gg-number\"\u003e04 \/ 04\u003c\/span\u003e\n          \u003cdiv class=\"gg-icon\"\u003e☺\u003c\/div\u003e\n          \u003ch3\u003eFeel ready for what's next\u003c\/h3\u003e\n          \u003cp\u003eEnjoy a cleaner-feeling smile before your next meeting, catching up with friends or heading out.\u003c\/p\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- LIFESTYLE --\u003e\n  \u003csection class=\"gg-section gg-soft\"\u003e\n    \u003cdiv class=\"gg-wrap\"\u003e\n      \u003cdiv class=\"gg-center gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eMADE FOR REAL LIFE\u003c\/div\u003e\n        \u003ch2\u003eYour day doesn't stop\u003cbr\u003eafter \u003cspan class=\"gg-accent\"\u003ea meal.\u003c\/span\u003e\n\u003c\/h2\u003e\n        \u003cp class=\"gg-intro\"\u003e\n          Keep your Smile Ready Floss Picks somewhere convenient\n          for the moments when you want to clean between your teeth.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-lifestyle\"\u003e\n        \u003carticle class=\"gg-life gg-reveal\"\u003e\n          \u003cdiv class=\"gg-life-icon\"\u003e⌂\u003c\/div\u003e\n          \u003ch3\u003eAt home\u003c\/h3\u003e\n          \u003cp\u003eAdd between-teeth cleaning to your regular bathroom and oral-care routine.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"gg-life gg-reveal gg-d1\"\u003e\n          \u003cdiv class=\"gg-life-icon\"\u003e▤\u003c\/div\u003e\n          \u003ch3\u003eAt work\u003c\/h3\u003e\n          \u003cp\u003eKeep a supply with your work essentials for a convenient after-lunch clean-up.\u003c\/p\u003e\n        \u003c\/article\u003e\n\n        \u003carticle class=\"gg-life gg-reveal gg-d2\"\u003e\n          \u003cdiv class=\"gg-life-icon\"\u003e↗\u003c\/div\u003e\n          \u003ch3\u003eOn the go\u003c\/h3\u003e\n          \u003cp\u003ePack them in a clean, closed container in your travel kit or work bag.\u003c\/p\u003e\n        \u003c\/article\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- HOW TO USE --\u003e\n  \u003csection class=\"gg-section\"\u003e\n    \u003cdiv class=\"gg-wrap gg-how\"\u003e\n      \u003cdiv class=\"gg-routine gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eYOUR DAILY RITUAL\u003c\/div\u003e\n        \u003cdiv class=\"gg-big\"\u003e03\u003c\/div\u003e\n        \u003cdiv\u003e\n          \u003cstrong\u003eSimple by design.\u003c\/strong\u003e\n          \u003cp\u003eThree steps to make between-teeth cleaning part of your routine.\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eHOW TO USE\u003c\/div\u003e\n        \u003ch2\u003eMake every\u003cbr\u003e\u003cspan class=\"gg-accent\"\u003egap count.\u003c\/span\u003e\n\u003c\/h2\u003e\n\n        \u003cdiv class=\"gg-steps\"\u003e\n          \u003cdiv class=\"gg-step\"\u003e\n            \u003cdiv class=\"gg-step-num\"\u003e01\u003c\/div\u003e\n            \u003cdiv\u003e\n              \u003ch3\u003eGuide gently\u003c\/h3\u003e\n              \u003cp\u003eWith clean hands, gently guide the floss between your teeth using a small back-and-forth motion. Never force or snap it into your gums.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"gg-step\"\u003e\n            \u003cdiv class=\"gg-step-num\"\u003e02\u003c\/div\u003e\n            \u003cdiv\u003e\n              \u003ch3\u003eClean each side\u003c\/h3\u003e\n              \u003cp\u003eCurve the floss against the side of each tooth and gently move it up and down. Repeat on the neighbouring tooth before moving to the next gap.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n\n          \u003cdiv class=\"gg-step\"\u003e\n            \u003cdiv class=\"gg-step-num\"\u003e03\u003c\/div\u003e\n            \u003cdiv\u003e\n              \u003ch3\u003eDispose after use\u003c\/h3\u003e\n              \u003cp\u003eDiscard the pick after use. Use alongside regular brushing, not as a replacement. Follow the supplied product instructions.\u003c\/p\u003e\n            \u003c\/div\u003e\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- PACKS WITH PRICES: DISPLAY ONLY --\u003e\n  \u003csection class=\"gg-section gg-packs\" id=\"gg-smile-packs\"\u003e\n    \u003cdiv class=\"gg-wrap\"\u003e\n      \u003cdiv class=\"gg-center gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eAVAILABLE IN DIFFERENT PACKS\u003c\/div\u003e\n        \u003ch2\u003eA little care.\u003cbr\u003e\u003cspan class=\"gg-accent\"\u003eEvery day.\u003c\/span\u003e\n\u003c\/h2\u003e\n        \u003cp class=\"gg-intro\"\u003e\n          Choose the pack size that suits your routine,\n          from trying something new to keeping a supply on hand.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-pack-grid gg-reveal\" aria-label=\"Pack sizes and prices\"\u003e\n\n        \u003cdiv class=\"gg-pack\"\u003e\n          \u003cspan class=\"gg-quantity\"\u003e50\u003c\/span\u003e\n          \u003cspan class=\"gg-unit\"\u003efloss picks\u003c\/span\u003e\n          \u003cspan class=\"gg-price\"\u003eR 50.00\u003c\/span\u003e\n          \u003cspan class=\"gg-choice\"\u003eTry the essentials\u003c\/span\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-pack\"\u003e\n          \u003cspan class=\"gg-quantity\"\u003e100\u003c\/span\u003e\n          \u003cspan class=\"gg-unit\"\u003efloss picks\u003c\/span\u003e\n          \u003cspan class=\"gg-price\"\u003eR 89.00\u003c\/span\u003e\n          \u003cspan class=\"gg-choice\"\u003eEveryday supply\u003c\/span\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-pack gg-pack-featured\"\u003e\n          \u003cspan class=\"gg-selected\"\u003e✓\u003c\/span\u003e\n          \u003cspan class=\"gg-quantity\"\u003e150\u003c\/span\u003e\n          \u003cspan class=\"gg-unit\"\u003efloss picks\u003c\/span\u003e\n          \u003cspan class=\"gg-price\"\u003eR 119.00\u003c\/span\u003e\n          \u003cspan class=\"gg-choice\"\u003eStock up\u003c\/span\u003e\n        \u003c\/div\u003e\n\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-pack-summary gg-reveal\"\u003e\n        \u003cstrong\u003eSmile Ready Floss Picks\u003c\/strong\u003e\n        \u003csmall\u003eThree pack sizes. Clear, upfront pricing.\u003c\/small\u003e\n      \u003c\/div\u003e\n\n      \u003cp class=\"gg-pack-note\"\u003e\n        Prices are displayed in South African rand (ZAR).\n        Pack cards are for information only and cannot be selected\n        or purchased from this section. Check the product listing\n        for availability and purchasing options.\n      \u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- FAQ --\u003e\n  \u003csection class=\"gg-section\"\u003e\n    \u003cdiv class=\"gg-wrap\"\u003e\n      \u003cdiv class=\"gg-center gg-reveal\"\u003e\n        \u003cdiv class=\"gg-eyebrow\"\u003e\n\u003cspan class=\"gg-dot\"\u003e\u003c\/span\u003eGOOD TO KNOW\u003c\/div\u003e\n        \u003ch2\u003eQuestions?\u003cbr\u003e\u003cspan class=\"gg-accent\"\u003eWe've got you.\u003c\/span\u003e\n\u003c\/h2\u003e\n        \u003cp class=\"gg-intro\"\u003eA few helpful details about Smile Ready Floss Picks.\u003c\/p\u003e\n      \u003c\/div\u003e\n\n      \u003cdiv class=\"gg-faq gg-reveal\"\u003e\n        \u003cdiv class=\"gg-faq-item\"\u003e\n          \u003cbutton type=\"button\" class=\"gg-question\" aria-expanded=\"false\"\u003e\n            What are floss picks used for?\n            \u003cspan class=\"gg-plus\"\u003e+\u003c\/span\u003e\n          \u003c\/button\u003e\n          \u003cdiv class=\"gg-answer\" hidden\u003e\n            Floss picks help clean between teeth and remove trapped food.\n            They complement regular brushing rather than replacing it.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-faq-item\"\u003e\n          \u003cbutton type=\"button\" class=\"gg-question\" aria-expanded=\"false\"\u003e\n            Can I use them after meals?\n            \u003cspan class=\"gg-plus\"\u003e+\u003c\/span\u003e\n          \u003c\/button\u003e\n          \u003cdiv class=\"gg-answer\" hidden\u003e\n            Yes. You can use a floss pick after meals to clean between\n            your teeth. Always use it gently and never force it into tight spaces.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-faq-item\"\u003e\n          \u003cbutton type=\"button\" class=\"gg-question\" aria-expanded=\"false\"\u003e\n            What pack sizes are available?\n            \u003cspan class=\"gg-plus\"\u003e+\u003c\/span\u003e\n          \u003c\/button\u003e\n          \u003cdiv class=\"gg-answer\" hidden\u003e\n            The pack options displayed here are 50 pieces for R 50.00,\n            100 pieces for R 89.00, and 150 pieces for R 119.00.\n            Check the product listing for current availability.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-faq-item\"\u003e\n          \u003cbutton type=\"button\" class=\"gg-question\" aria-expanded=\"false\"\u003e\n            Do floss picks replace brushing?\n            \u003cspan class=\"gg-plus\"\u003e+\u003c\/span\u003e\n          \u003c\/button\u003e\n          \u003cdiv class=\"gg-answer\" hidden\u003e\n            No. Floss picks complement brushing and are not a replacement\n            for brushing your teeth.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n\n        \u003cdiv class=\"gg-faq-item\"\u003e\n          \u003cbutton type=\"button\" class=\"gg-question\" aria-expanded=\"false\"\u003e\n            How should I store them?\n            \u003cspan class=\"gg-plus\"\u003e+\u003c\/span\u003e\n          \u003c\/button\u003e\n          \u003cdiv class=\"gg-answer\" hidden\u003e\n            Store unused picks in a clean, closed container, follow the\n            supplied product instructions and keep them out of reach\n            of young children.\n          \u003c\/div\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003c!-- BRAND FOOTER --\u003e\n  \u003cfooter class=\"gg-footer\"\u003e\n    \u003cdiv class=\"gg-brand\"\u003egrin goods™\u003c\/div\u003e\n    \u003cp\u003eA simpler routine. A cleaner-feeling smile. Smile ready.\u003c\/p\u003e\n  \u003c\/footer\u003e\n\n  \u003cscript\u003e\n    (function () {\n      var root = document.getElementById('gg-smile-premium');\n      if (!root || root.dataset.ggInitialized === 'true') return;\n      root.dataset.ggInitialized = 'true';\n\n      var items = root.querySelectorAll('.gg-reveal');\n      var reduceMotion = window.matchMedia \u0026\u0026\n        window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n      if ('IntersectionObserver' in window \u0026\u0026 !reduceMotion) {\n        root.classList.add('gg-animated');\n\n        var observer = new IntersectionObserver(function (entries) {\n          entries.forEach(function (entry) {\n            if (entry.isIntersecting) {\n              entry.target.classList.add('gg-in');\n              observer.unobserve(entry.target);\n            }\n          });\n        }, { threshold: 0.12 });\n\n        items.forEach(function (item) {\n          observer.observe(item);\n        });\n      } else {\n        items.forEach(function (item) {\n          item.classList.add('gg-in');\n        });\n      }\n\n      \/* Only FAQ answers are interactive. Pack cards are static. *\/\n      root.querySelectorAll('.gg-question').forEach(function (button) {\n        button.addEventListener('click', function () {\n          var answer = button.nextElementSibling;\n          var open = button.getAttribute('aria-expanded') !== 'true';\n\n          root.querySelectorAll('.gg-question').forEach(function (other) {\n            other.setAttribute('aria-expanded', 'false');\n            other.nextElementSibling.hidden = true;\n          });\n\n          button.setAttribute('aria-expanded', String(open));\n          answer.hidden = !open;\n        });\n      });\n    })();\n  \u003c\/script\u003e\n\u003c\/div\u003e\n","brand":"Grin Goods™","offers":[{"title":"50 Pieces","offer_id":46278350536839,"sku":null,"price":50.0,"currency_code":"ZAR","in_stock":true},{"title":"100 Pieces","offer_id":46278350569607,"sku":null,"price":89.0,"currency_code":"ZAR","in_stock":true},{"title":"150 Pieces","offer_id":46278350602375,"sku":null,"price":119.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0776\/0088\/2823\/files\/grin-goods-dental-floss-picks-with-branded-packaging.png?v=1792442480"},{"product_id":"grin-goods™-fresh-confidence-tongue-scraper","title":"Grin Goods™ Fresh Confidence Tongue Scraper","description":"\n\u003cdiv id=\"grin-tongue\"\u003e\n\u003cstyle\u003e\n#grin-tongue{\n  --forest:#103d2b;\n  --green:#38734b;\n  --sage:#dce9d8;\n  --pale:#edf3e9;\n  --cream:#f8f7ef;\n  --ink:#17231b;\n  --muted:#68736a;\n  background:#fff;\n  color:var(--ink);\n  font-family:Arial,Helvetica,sans-serif;\n  line-height:1.65;\n  overflow:hidden;\n}\n#grin-tongue *{box-sizing:border-box}\n#grin-tongue h2,#grin-tongue h3,#grin-tongue p{margin-top:0}\n#grin-tongue a{color:inherit;text-decoration:none}\n#grin-tongue button{font:inherit;cursor:pointer}\n#grin-tongue .gt-container{max-width:1000px;margin:auto;padding:0 25px}\n#grin-tongue .gt-section{padding:66px 0}\n#grin-tongue .gt-eyebrow{\n  display:inline-flex;align-items:center;gap:8px;\n  color:var(--green);font-size:10px;font-weight:800;\n  letter-spacing:2px;text-transform:uppercase\n}\n#grin-tongue .gt-dot{\n  width:7px;height:7px;border-radius:50%;\n  background:#6b9b6b;box-shadow:0 0 0 4px #6b9b6b20\n}\n#grin-tongue h2{\n  font-size:clamp(30px,4.5vw,47px);\n  line-height:1.13;letter-spacing:-1.7px;\n  color:var(--forest);margin:15px 0 17px\n}\n#grin-tongue .gt-accent{color:var(--green)}\n#grin-tongue .gt-center{text-align:center}\n#grin-tongue .gt-center .gt-eyebrow{justify-content:center}\n#grin-tongue .gt-intro{\n  max-width:590px;margin:0 auto 34px;\n  color:var(--muted);font-size:14px\n}\n#grin-tongue .gt-btn{\n  display:inline-flex;align-items:center;justify-content:center;\n  gap:9px;padding:13px 22px;border-radius:30px;\n  border:1px solid var(--forest);font-size:12px;\n  font-weight:750;transition:transform .25s,background .25s\n}\n#grin-tongue .gt-btn:hover{transform:translateY(-2px)}\n#grin-tongue .gt-btn-primary{background:var(--forest);color:#fff}\n#grin-tongue .gt-btn-primary:hover{background:var(--green)}\n#grin-tongue .gt-btn-secondary{background:transparent;color:var(--forest)}\n#grin-tongue .gt-btn-secondary:hover{background:var(--pale)}\n#grin-tongue .gt-arrow{transition:transform .25s}\n#grin-tongue .gt-btn:hover .gt-arrow{transform:translateX(4px)}\n\n\/* HERO *\/\n#grin-tongue .gt-hero{\n  position:relative;isolation:isolate;\n  padding:70px 20px 62px;text-align:center;\n  background:\n    radial-gradient(ellipse at 100% 0%,#dce9d8 0,transparent 40%),\n    radial-gradient(ellipse at 0% 100%,#e8eedf 0,transparent 35%),\n    var(--cream);\n}\n#grin-tongue .gt-hero:before,\n#grin-tongue .gt-hero:after{\n  content:\"\";position:absolute;z-index:-1;pointer-events:none;\n  width:120px;height:250px;border:1px solid #b6d0b1;\n  border-radius:100%\n}\n#grin-tongue .gt-hero:before{\n  right:-60px;top:-115px;transform:rotate(-30deg)\n}\n#grin-tongue .gt-hero:after{\n  left:-75px;bottom:-180px;transform:rotate(35deg)\n}\n#grin-tongue .gt-hero-content{max-width:740px;margin:auto}\n#grin-tongue .gt-hero h2{\n  font-size:clamp(42px,7vw,69px);\n  line-height:1.05;letter-spacing:-3px;margin:23px 0\n}\n#grin-tongue .gt-hero h2 em{font-style:normal;color:var(--green)}\n#grin-tongue .gt-hero-copy{\n  max-width:585px;margin:0 auto 25px;\n  font-size:14px;line-height:1.9;color:#606c61\n}\n#grin-tongue .gt-actions{\n  display:flex;justify-content:center;gap:10px;flex-wrap:wrap\n}\n#grin-tongue .gt-hero-note{\n  display:flex;justify-content:center;align-items:center;\n  gap:8px;margin-top:23px;color:var(--muted);font-size:11px\n}\n#grin-tongue .gt-check{color:var(--green);font-weight:900}\n\n\/* BENEFIT STRIP *\/\n#grin-tongue .gt-strip{background:var(--forest);color:#fff;padding:19px 0}\n#grin-tongue .gt-strip-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);gap:12px\n}\n#grin-tongue .gt-strip-item{\n  display:flex;justify-content:center;align-items:center;\n  gap:9px;font-size:11px;font-weight:650\n}\n#grin-tongue .gt-strip-icon{font-size:18px;color:#b8d9ad}\n\n\/* BENEFITS *\/\n#grin-tongue .gt-benefits{\n  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px\n}\n#grin-tongue .gt-benefit{\n  position:relative;padding:24px 22px;\n  border:1px solid #e5eae0;border-radius:13px;background:#fff;\n  transition:transform .3s,box-shadow .3s,border-color .3s\n}\n#grin-tongue .gt-benefit:hover{\n  transform:translateY(-4px);border-color:#b6d0b1;\n  box-shadow:0 14px 32px #163b2110\n}\n#grin-tongue .gt-icon{\n  width:44px;height:44px;display:grid;place-items:center;\n  background:var(--pale);border-radius:13px;\n  color:var(--forest);font-size:21px;margin-bottom:18px\n}\n#grin-tongue .gt-benefit h3{font-size:15px;color:var(--forest);margin-bottom:7px}\n#grin-tongue .gt-benefit p{font-size:12px;color:var(--muted);margin:0}\n#grin-tongue .gt-number{\n  position:absolute;top:22px;right:19px;\n  font-size:10px;letter-spacing:1px;color:#9aa99a\n}\n\n\/* ROUTINE *\/\n#grin-tongue .gt-routine{background:var(--cream)}\n#grin-tongue .gt-routine-grid{\n  display:grid;grid-template-columns:.85fr 1.15fr;\n  gap:46px;align-items:center\n}\n#grin-tongue .gt-routine-card{\n  min-height:290px;padding:29px;border-radius:15px;\n  background:linear-gradient(145deg,#e7efe2,#dce9d8);\n  display:flex;flex-direction:column;justify-content:space-between\n}\n#grin-tongue .gt-big-number{\n  font-size:100px;font-weight:850;line-height:1;\n  letter-spacing:-8px;color:#a8c8a3\n}\n#grin-tongue .gt-routine-card strong{font-size:19px;color:var(--forest)}\n#grin-tongue .gt-routine-card p{font-size:12px;color:var(--muted);margin:7px 0 0}\n#grin-tongue .gt-steps{display:grid;gap:22px}\n#grin-tongue .gt-step{display:grid;grid-template-columns:39px 1fr;gap:14px}\n#grin-tongue .gt-step-num{\n  width:37px;height:37px;display:grid;place-items:center;\n  border:1px solid #b6d0b1;border-radius:50%;\n  color:var(--forest);font-size:11px;font-weight:800\n}\n#grin-tongue .gt-step h3{font-size:14px;color:var(--forest);margin:2px 0 5px}\n#grin-tongue .gt-step p{font-size:12px;color:var(--muted);margin:0}\n\n\/* MOMENTS *\/\n#grin-tongue .gt-moments{\n  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px\n}\n#grin-tongue .gt-moment{\n  padding:23px 19px;border-radius:12px;background:var(--pale);\n  transition:transform .25s,background .25s\n}\n#grin-tongue .gt-moment:hover{\n  transform:translateY(-4px);background:#e1eddb\n}\n#grin-tongue .gt-moment-icon{font-size:23px;margin-bottom:14px}\n#grin-tongue .gt-moment h3{font-size:14px;color:var(--forest);margin-bottom:7px}\n#grin-tongue .gt-moment p{font-size:11px;color:var(--muted);margin:0}\n\n\/* DAILY ROUTINE CALLOUT *\/\n#grin-tongue .gt-callout{\n  padding:30px;border-radius:14px;\n  background:var(--forest);color:white;\n  display:flex;align-items:center;justify-content:space-between;gap:25px\n}\n#grin-tongue .gt-callout h3{\n  color:white;font-size:clamp(20px,3vw,29px);\n  line-height:1.2;margin-bottom:8px\n}\n#grin-tongue .gt-callout p{\n  font-size:12px;color:#d1e0d0;margin:0;max-width:510px\n}\n#grin-tongue .gt-callout .gt-btn{\n  flex-shrink:0;background:#dce9d8;border-color:#dce9d8;color:var(--forest)\n}\n#grin-tongue .gt-callout .gt-btn:hover{background:#fff}\n\n\/* FAQ *\/\n#grin-tongue .gt-faq{max-width:740px;margin:auto}\n#grin-tongue .gt-faq-item{border-bottom:1px solid #e4e9e0}\n#grin-tongue .gt-question{\n  width:100%;display:flex;align-items:center;justify-content:space-between;\n  gap:15px;padding:20px 0;border:0;background:transparent;\n  text-align:left;color:var(--forest);font-size:13px;font-weight:750\n}\n#grin-tongue .gt-plus{\n  color:var(--green);font-size:23px;font-weight:400;\n  transition:transform .25s\n}\n#grin-tongue .gt-question[aria-expanded=\"true\"] .gt-plus{transform:rotate(45deg)}\n#grin-tongue .gt-answer{\n  padding:0 30px 19px 0;color:var(--muted);font-size:12px;line-height:1.8\n}\n#grin-tongue .gt-answer[hidden]{display:none}\n\n\/* FOOTER *\/\n#grin-tongue .gt-footer{\n  padding:31px 20px;text-align:center;background:var(--cream)\n}\n#grin-tongue .gt-brand{\n  font-size:21px;font-weight:900;letter-spacing:-1px;color:var(--forest)\n}\n#grin-tongue .gt-footer p{font-size:11px;color:var(--muted);margin:6px 0 0}\n\n\/* REVEAL ANIMATIONS *\/\n#grin-tongue .gt-reveal{\n  opacity:0;transform:translateY(17px);\n  transition:opacity .6s ease,transform .6s ease\n}\n#grin-tongue .gt-reveal.gt-visible{opacity:1;transform:translateY(0)}\n#grin-tongue .gt-benefit:nth-child(2){transition-delay:.06s}\n#grin-tongue .gt-benefit:nth-child(3){transition-delay:.12s}\n#grin-tongue .gt-benefit:nth-child(4){transition-delay:.18s}\n\n@media(prefers-reduced-motion:reduce){\n  #grin-tongue *,#grin-tongue *:before,#grin-tongue *:after{\n    animation:none!important;transition:none!important\n  }\n  #grin-tongue .gt-reveal{opacity:1;transform:none}\n}\n@media(max-width:650px){\n  #grin-tongue .gt-container{padding:0 19px}\n  #grin-tongue .gt-section{padding:49px 0}\n  #grin-tongue .gt-hero{padding:51px 18px 45px}\n  #grin-tongue .gt-hero h2{font-size:clamp(40px,10.5vw,56px);letter-spacing:-2.4px}\n  #grin-tongue .gt-hero-copy{font-size:13px}\n  #grin-tongue .gt-strip-grid{grid-template-columns:1fr;gap:12px}\n  #grin-tongue .gt-strip-item{justify-content:flex-start}\n  #grin-tongue .gt-benefits{gap:10px}\n  #grin-tongue .gt-benefit{padding:17px 13px}\n  #grin-tongue .gt-benefit h3{font-size:12px}\n  #grin-tongue .gt-benefit p{font-size:10px}\n  #grin-tongue .gt-icon{width:39px;height:39px;margin-bottom:15px}\n  #grin-tongue .gt-routine-grid{grid-template-columns:1fr;gap:29px}\n  #grin-tongue .gt-routine-card{min-height:220px}\n  #grin-tongue .gt-big-number{font-size:78px}\n  #grin-tongue .gt-moments{grid-template-columns:1fr}\n  #grin-tongue .gt-moment{padding:20px}\n  #grin-tongue .gt-callout{align-items:flex-start;flex-direction:column;padding:24px}\n  #grin-tongue .gt-callout .gt-btn{width:100%}\n}\n\u003c\/style\u003e\n\n\u003c!-- PREMIUM TEXT-LED HERO --\u003e\n\u003csection class=\"gt-hero\"\u003e\n \u003cdiv class=\"gt-hero-content gt-reveal\"\u003e\n  \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e GRIN GOODS™ · EVERYDAY ORAL CARE\u003c\/div\u003e\n  \u003ch2\u003eA cleaner-feeling tongue.\u003cbr\u003e\u003cem\u003eA fresh start.\u003c\/em\u003e\n\u003c\/h2\u003e\n  \u003cp class=\"gt-hero-copy\"\u003e\n   Brushed your teeth but your mouth still doesn't feel quite refreshed?\n   Give your tongue some attention too. Grin Goods™ Tongue Cleaning Tools\n   help lift away surface coating and food debris, adding a simple finishing\n   touch to your everyday oral-care routine.\n  \u003c\/p\u003e\n  \u003cdiv class=\"gt-actions\"\u003e\n   \u003ca href=\"#gt-benefits\" class=\"gt-btn gt-btn-primary\"\u003eDiscover the benefits \u003cspan class=\"gt-arrow\"\u003e↗\u003c\/span\u003e\u003c\/a\u003e\n   \u003ca href=\"#gt-how\" class=\"gt-btn gt-btn-secondary\"\u003eHow to use it\u003c\/a\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"gt-hero-note\"\u003e\n\u003cspan class=\"gt-check\"\u003e✓\u003c\/span\u003e One simple step. A more complete-feeling routine.\u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cdiv class=\"gt-strip\"\u003e\n \u003cdiv class=\"gt-container gt-strip-grid\"\u003e\n  \u003cdiv class=\"gt-strip-item\"\u003e\n\u003cspan class=\"gt-strip-icon\"\u003e✳\u003c\/span\u003e Helps lift surface buildup\u003c\/div\u003e\n  \u003cdiv class=\"gt-strip-item\"\u003e\n\u003cspan class=\"gt-strip-icon\"\u003e○\u003c\/span\u003e A simple extra step\u003c\/div\u003e\n  \u003cdiv class=\"gt-strip-item\"\u003e\n\u003cspan class=\"gt-strip-icon\"\u003e⌂\u003c\/span\u003e Fits your daily routine\u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- BENEFITS --\u003e\n\u003csection class=\"gt-section\" id=\"gt-benefits\"\u003e\n \u003cdiv class=\"gt-container\"\u003e\n  \u003cdiv class=\"gt-center gt-reveal\"\u003e\n   \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e A LITTLE EXTRA CARE\u003c\/div\u003e\n   \u003ch2\u003eYour oral care,\u003cbr\u003e\u003cspan class=\"gt-accent\"\u003ewith one more thoughtful step.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp class=\"gt-intro\"\u003e\n    Your tongue deserves attention too. Make tongue cleaning a simple\n    addition to the routine you already know.\n   \u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"gt-benefits\"\u003e\n   \u003carticle class=\"gt-benefit gt-reveal\"\u003e\n    \u003cspan class=\"gt-number\"\u003e01 \/ 04\u003c\/span\u003e\n    \u003cdiv class=\"gt-icon\"\u003e✳\u003c\/div\u003e\n    \u003ch3\u003eEnjoy a cleaner feeling\u003c\/h3\u003e\n    \u003cp\u003eGently remove surface coating and debris from your tongue for a refreshed, clean-mouth feeling.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gt-benefit gt-reveal\"\u003e\n    \u003cspan class=\"gt-number\"\u003e02 \/ 04\u003c\/span\u003e\n    \u003cdiv class=\"gt-icon\"\u003e⌁\u003c\/div\u003e\n    \u003ch3\u003eCare beyond your teeth\u003c\/h3\u003e\n    \u003cp\u003eGive your tongue attention alongside brushing and flossing for a more complete oral-care routine.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gt-benefit gt-reveal\"\u003e\n    \u003cspan class=\"gt-number\"\u003e03 \/ 04\u003c\/span\u003e\n    \u003cdiv class=\"gt-icon\"\u003e↗\u003c\/div\u003e\n    \u003ch3\u003eKeep things simple\u003c\/h3\u003e\n    \u003cp\u003eAdd an easy extra step to your existing bathroom routine without making it complicated.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gt-benefit gt-reveal\"\u003e\n    \u003cspan class=\"gt-number\"\u003e04 \/ 04\u003c\/span\u003e\n    \u003cdiv class=\"gt-icon\"\u003e☺\u003c\/div\u003e\n    \u003ch3\u003eStart the day feeling ready\u003c\/h3\u003e\n    \u003cp\u003eBuild a small moment of self-care into your morning before work, social plans or whatever comes next.\u003c\/p\u003e\n   \u003c\/article\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- HOW TO USE --\u003e\n\u003csection class=\"gt-section gt-routine\" id=\"gt-how\"\u003e\n \u003cdiv class=\"gt-container gt-routine-grid\"\u003e\n  \u003cdiv class=\"gt-routine-card gt-reveal\"\u003e\n   \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e YOUR DAILY RITUAL\u003c\/div\u003e\n   \u003cdiv class=\"gt-big-number\"\u003e05\u003c\/div\u003e\n   \u003cdiv\u003e\n    \u003cstrong\u003eA gentler kind of care.\u003c\/strong\u003e\n    \u003cp\u003eTake a few moments to clean your tongue comfortably and carefully.\u003c\/p\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"gt-reveal\"\u003e\n   \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e HOW TO USE\u003c\/div\u003e\n   \u003ch2\u003eSimple steps.\u003cbr\u003e\u003cspan class=\"gt-accent\"\u003eGentle care.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cdiv class=\"gt-steps\"\u003e\n    \u003cdiv class=\"gt-step\"\u003e\n     \u003cdiv class=\"gt-step-num\"\u003e01\u003c\/div\u003e\n     \u003cdiv\u003e\n\u003ch3\u003eRinse before use\u003c\/h3\u003e\n\u003cp\u003eWash your hands and rinse the tongue cleaning tool before you begin.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gt-step\"\u003e\n     \u003cdiv class=\"gt-step-num\"\u003e02\u003c\/div\u003e\n     \u003cdiv\u003e\n\u003ch3\u003eFind a comfortable position\u003c\/h3\u003e\n\u003cp\u003eStick out your tongue and position the cleaning edge as far back as feels comfortable. Avoid triggering your gag reflex.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gt-step\"\u003e\n     \u003cdiv class=\"gt-step-num\"\u003e03\u003c\/div\u003e\n     \u003cdiv\u003e\n\u003ch3\u003eDraw gently forward\u003c\/h3\u003e\n\u003cp\u003eUsing light pressure, draw the tool towards the tip of your tongue. Never scrub or press hard.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gt-step\"\u003e\n     \u003cdiv class=\"gt-step-num\"\u003e04\u003c\/div\u003e\n     \u003cdiv\u003e\n\u003ch3\u003eRinse and repeat if needed\u003c\/h3\u003e\n\u003cp\u003eRinse away collected residue and repeat gently as needed, following the supplied instructions.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"gt-step\"\u003e\n     \u003cdiv class=\"gt-step-num\"\u003e05\u003c\/div\u003e\n     \u003cdiv\u003e\n\u003ch3\u003eClean and store\u003c\/h3\u003e\n\u003cp\u003eClean the tool according to its care instructions and let it dry before storing.\u003c\/p\u003e\n\u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- LIFESTYLE --\u003e\n\u003csection class=\"gt-section\"\u003e\n \u003cdiv class=\"gt-container\"\u003e\n  \u003cdiv class=\"gt-center gt-reveal\"\u003e\n   \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e MADE FOR REAL LIFE\u003c\/div\u003e\n   \u003ch2\u003eA little care,\u003cbr\u003e\u003cspan class=\"gt-accent\"\u003ewherever you are.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp class=\"gt-intro\"\u003e\n    Your routine doesn't need to be complicated. Keep tongue cleaning\n    within easy reach wherever you normally take care of your smile.\n   \u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"gt-moments\"\u003e\n   \u003carticle class=\"gt-moment gt-reveal\"\u003e\n    \u003cdiv class=\"gt-moment-icon\"\u003e☼\u003c\/div\u003e\n    \u003ch3\u003eYour morning routine\u003c\/h3\u003e\n    \u003cp\u003eAdd tongue cleaning to your morning oral-care ritual before heading into your day.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gt-moment gt-reveal\"\u003e\n    \u003cdiv class=\"gt-moment-icon\"\u003e⌂\u003c\/div\u003e\n    \u003ch3\u003eYour bathroom shelf\u003c\/h3\u003e\n    \u003cp\u003eKeep your tool clean and accessible alongside your other everyday oral-care essentials.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gt-moment gt-reveal\"\u003e\n    \u003cdiv class=\"gt-moment-icon\"\u003e↗\u003c\/div\u003e\n    \u003ch3\u003eYour travel wash bag\u003c\/h3\u003e\n    \u003cp\u003eTake your routine along on holidays, business trips or weekends away.\u003c\/p\u003e\n   \u003c\/article\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- CLOSING BRAND MESSAGE --\u003e\n\u003csection class=\"gt-section\" style=\"padding-top:0\"\u003e\n \u003cdiv class=\"gt-container\"\u003e\n  \u003cdiv class=\"gt-callout gt-reveal\"\u003e\n   \u003cdiv\u003e\n    \u003ch3\u003eMake room for a fresher-feeling routine.\u003c\/h3\u003e\n    \u003cp\u003eA small addition to your daily oral care can help you feel more cared for. Give your tongue a little attention, gently and consistently.\u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003ca href=\"#gt-faq\" class=\"gt-btn\"\u003eGood to know \u003cspan class=\"gt-arrow\"\u003e↗\u003c\/span\u003e\u003c\/a\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- INTERACTIVE FAQ --\u003e\n\u003csection class=\"gt-section\" id=\"gt-faq\"\u003e\n \u003cdiv class=\"gt-container\"\u003e\n  \u003cdiv class=\"gt-center gt-reveal\"\u003e\n   \u003cdiv class=\"gt-eyebrow\"\u003e\n\u003cspan class=\"gt-dot\"\u003e\u003c\/span\u003e GOOD TO KNOW\u003c\/div\u003e\n   \u003ch2\u003eQuestions? \u003cspan class=\"gt-accent\"\u003eWe've got you.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp class=\"gt-intro\"\u003eA few helpful answers to get you started with tongue cleaning.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gt-faq gt-reveal\"\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eWhat does a tongue cleaner do?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eTongue cleaners help remove surface coating and food debris from the tongue. They are an addition to your oral-care routine, alongside brushing and cleaning between your teeth.\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eWhen should I use it?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eYou can use a tongue cleaner as part of your morning or evening oral-care routine, following the supplied product instructions.\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eShould I apply pressure?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eNo. Use light pressure and gentle strokes. Avoid aggressive scraping, and stop if you experience pain or irritation.\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eDoes it replace brushing or flossing?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eNo. Tongue cleaning complements brushing and flossing; it does not replace them. Continue your regular oral-care routine.\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eHow should I clean and store it?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eClean the tool according to its supplied care instructions and let it dry before storage. Do not share tongue cleaning tools.\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gt-faq-item\"\u003e\n    \u003cbutton type=\"button\" class=\"gt-question\" aria-expanded=\"false\"\u003eWhat if bad breath persists?\u003cspan class=\"gt-plus\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n    \u003cdiv class=\"gt-answer\" hidden\u003eIf bad breath persists despite your oral-care routine, consult a dental professional to help identify the cause.\u003c\/div\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cfooter class=\"gt-footer\"\u003e\n \u003cdiv class=\"gt-brand\"\u003egrin goods™\u003c\/div\u003e\n \u003cp\u003eA fresher routine. A little extra care. A smile ready for what's next.\u003c\/p\u003e\n\u003c\/footer\u003e\n\n\u003cscript\u003e\n(function(){\n const root=document.getElementById('grin-tongue');\n if(!root)return;\n\n \/\/ Smooth scroll-reveal animations.\n const items=root.querySelectorAll('.gt-reveal');\n if('IntersectionObserver' in window){\n  const observer=new IntersectionObserver(entries=\u003e{\n   entries.forEach(entry=\u003e{\n    if(entry.isIntersecting){\n     entry.target.classList.add('gt-visible');\n     observer.unobserve(entry.target);\n    }\n   });\n  },{threshold:.12});\n  items.forEach(item=\u003eobserver.observe(item));\n }else{\n  items.forEach(item=\u003eitem.classList.add('gt-visible'));\n }\n\n \/\/ Accessible interactive FAQ accordion.\n root.querySelectorAll('.gt-question').forEach(button=\u003e{\n  button.addEventListener('click',()=\u003e{\n   const answer=button.nextElementSibling;\n   const shouldOpen=button.getAttribute('aria-expanded')!=='true';\n\n   root.querySelectorAll('.gt-question').forEach(other=\u003e{\n    other.setAttribute('aria-expanded','false');\n    other.nextElementSibling.hidden=true;\n   });\n\n   button.setAttribute('aria-expanded',String(shouldOpen));\n   answer.hidden=!shouldOpen;\n  });\n });\n\n \/\/ Smooth navigation within this description.\n root.querySelectorAll('a[href^=\"#\"]').forEach(link=\u003e{\n  link.addEventListener('click',event=\u003e{\n   const target=root.querySelector(link.getAttribute('href'));\n   if(target){\n    event.preventDefault();\n    target.scrollIntoView({behavior:'smooth',block:'start'});\n   }\n  });\n });\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n","brand":"Grin Goods™","offers":[{"title":"Default Title","offer_id":46264233361543,"sku":null,"price":249.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0776\/0088\/2823\/files\/grin-goods-tongue-cleaning-tools-with-branded-packaging.png?v=1792442480"},{"product_id":"grin-goods™-cuddle-molar-tooth-cushion","title":"Grin Goods™ Cuddle Molar Tooth Cushion","description":"\u003cp\u003e\u003cstrong\u003eSize: 19.99 cm\u003c\/strong\u003e\u003c\/p\u003e\n\u003cdiv id=\"grin-cushion\"\u003e\n\u003cstyle\u003e\n#grin-cushion{\n --forest:#103d2b;--green:#38734b;--sage:#dce9d8;\n --pale:#edf3e9;--cream:#f8f7ef;--ink:#17231b;\n --muted:#68736a;\n font-family:Arial,Helvetica,sans-serif;color:var(--ink);\n background:#fff;line-height:1.65;overflow:hidden\n}\n#grin-cushion *{box-sizing:border-box}\n#grin-cushion h2,#grin-cushion h3,#grin-cushion p{margin-top:0}\n#grin-cushion a{color:inherit;text-decoration:none}\n#grin-cushion button{font:inherit;cursor:pointer}\n#grin-cushion .gc-container{max-width:1000px;margin:auto;padding:0 25px}\n#grin-cushion .gc-section{padding:65px 0}\n#grin-cushion .gc-eyebrow{\n display:inline-flex;align-items:center;gap:8px;\n color:var(--green);font-size:10px;font-weight:800;\n letter-spacing:2px;text-transform:uppercase\n}\n#grin-cushion .gc-dot{\n width:7px;height:7px;border-radius:50%;background:#6b9b6b;\n box-shadow:0 0 0 4px #6b9b6b20\n}\n#grin-cushion h2{\n color:var(--forest);font-size:clamp(30px,4.5vw,47px);\n line-height:1.13;letter-spacing:-1.7px;margin:15px 0 17px\n}\n#grin-cushion .gc-accent{color:var(--green)}\n#grin-cushion .gc-center{text-align:center}\n#grin-cushion .gc-center .gc-eyebrow{justify-content:center}\n#grin-cushion .gc-intro{\n max-width:590px;margin:0 auto 34px;\n font-size:14px;color:var(--muted)\n}\n#grin-cushion .gc-btn{\n display:inline-flex;justify-content:center;align-items:center;gap:10px;\n padding:14px 23px;border-radius:30px;border:1px solid var(--forest);\n font-size:12px;font-weight:750;transition:all .25s\n}\n#grin-cushion .gc-btn:hover{transform:translateY(-3px)}\n#grin-cushion .gc-primary{background:var(--forest);color:white}\n#grin-cushion .gc-primary:hover{background:var(--green)}\n#grin-cushion .gc-secondary{background:transparent;color:var(--forest)}\n#grin-cushion .gc-secondary:hover{background:var(--pale)}\n#grin-cushion .gc-arrow{transition:transform .25s}\n#grin-cushion .gc-btn:hover .gc-arrow{transform:translateX(4px)}\n\n\/* HERO *\/\n#grin-cushion .gc-hero{\n position:relative;isolation:isolate;overflow:hidden;\n padding:70px 20px 65px;\n background:\n radial-gradient(ellipse at 100% 0%,#dce9d8 0,transparent 40%),\n radial-gradient(ellipse at 0% 100%,#e8eedf 0,transparent 35%),\n var(--cream)\n}\n#grin-cushion .gc-hero:before,\n#grin-cushion .gc-hero:after{\n content:\"\";position:absolute;z-index:-1;pointer-events:none;\n width:125px;height:260px;border:1px solid #b6d0b1;\n border-radius:100%\n}\n#grin-cushion .gc-hero:before{\n top:-120px;right:-65px;transform:rotate(-30deg)\n}\n#grin-cushion .gc-hero:after{\n bottom:-175px;left:-75px;transform:rotate(35deg)\n}\n#grin-cushion .gc-hero-inner{max-width:760px;margin:auto}\n#grin-cushion .gc-hero h2{\n font-size:clamp(42px,7vw,68px);\n line-height:1.04;letter-spacing:-3px;margin:24px 0\n}\n#grin-cushion .gc-hero h2 em{font-style:normal;color:var(--green)}\n#grin-cushion .gc-hero-copy{\n max-width:570px;font-size:14px;line-height:1.9;\n color:#606c61;margin-bottom:27px\n}\n#grin-cushion .gc-actions{display:flex;gap:11px;flex-wrap:wrap}\n#grin-cushion .gc-hero-note{\n display:flex;align-items:center;gap:8px;\n margin-top:23px;font-size:11px;color:var(--muted)\n}\n#grin-cushion .gc-check{color:var(--green);font-weight:900}\n\n\/* BENEFITS STRIP *\/\n#grin-cushion .gc-strip{background:var(--forest);color:#fff;padding:19px 0}\n#grin-cushion .gc-strip-grid{\n display:grid;grid-template-columns:repeat(3,1fr);gap:12px\n}\n#grin-cushion .gc-strip-item{\n display:flex;justify-content:center;align-items:center;\n gap:9px;font-size:11px;font-weight:650\n}\n#grin-cushion .gc-strip-icon{font-size:18px;color:#b8d9ad}\n\n\/* BENEFITS *\/\n#grin-cushion .gc-benefits{\n display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px\n}\n#grin-cushion .gc-card{\n padding:24px 21px;border:1px solid #e8eee4;\n background:linear-gradient(145deg,#f4f7ef,#edf3e9);\n border-radius:13px;transition:transform .3s,box-shadow .3s,border-color .3s\n}\n#grin-cushion .gc-card:hover{\n transform:translateY(-5px);border-color:#b6d0b1;\n box-shadow:0 15px 35px #163b2110\n}\n#grin-cushion .gc-icon{\n width:49px;height:49px;display:grid;place-items:center;\n background:#d5e6d0;border-radius:50%;\n color:var(--forest);font-size:23px;margin-bottom:19px;\n transition:transform .3s\n}\n#grin-cushion .gc-card:hover .gc-icon{transform:rotate(-8deg) scale(1.07)}\n#grin-cushion .gc-card h3{font-size:15px;color:var(--forest);margin-bottom:9px}\n#grin-cushion .gc-card p{font-size:12px;color:var(--muted);margin:0}\n#grin-cushion .gc-card-number{\n display:block;font-size:10px;color:#819582;\n letter-spacing:1px;margin-bottom:17px\n}\n\n\/* LIFESTYLE *\/\n#grin-cushion .gc-lifestyle{background:var(--cream)}\n#grin-cushion .gc-lifestyle-grid{\n display:grid;grid-template-columns:1fr 1fr;gap:45px;align-items:center\n}\n#grin-cushion .gc-lifestyle-copy p{\n color:var(--muted);font-size:13px;line-height:1.9\n}\n#grin-cushion .gc-places{\n display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:25px\n}\n#grin-cushion .gc-place{text-align:center;font-size:10px;color:var(--forest)}\n#grin-cushion .gc-place-icon{\n width:45px;height:45px;border-radius:50%;background:#e0ecdc;\n display:grid;place-items:center;margin:0 auto 8px;font-size:20px;\n transition:transform .25s\n}\n#grin-cushion .gc-place:hover .gc-place-icon{transform:translateY(-4px)}\n#grin-cushion .gc-lifestyle-panel{\n min-height:300px;padding:28px;border-radius:15px;\n background:\n radial-gradient(ellipse at 100% 0%,#d5e6d0 0,transparent 45%),\n linear-gradient(140deg,#f3f1e7,#e0ebdc);\n display:flex;flex-direction:column;justify-content:space-between;\n position:relative;overflow:hidden\n}\n#grin-cushion .gc-orbit{\n position:absolute;width:225px;height:225px;\n border:1px solid #a7c7a2;border-radius:50%;\n top:50%;left:50%;transform:translate(-50%,-50%)\n}\n#grin-cushion .gc-orbit:before{\n content:\"\";position:absolute;inset:19px;\n border:1px solid #b7d0b2;border-radius:50%\n}\n#grin-cushion .gc-panel-content{position:relative;z-index:1}\n#grin-cushion .gc-panel-quote{\n align-self:flex-end;position:relative;z-index:1;\n padding:13px 17px;border-radius:25px;background:#fffdf1e8;\n color:var(--forest);font-size:11px;font-weight:700;\n box-shadow:0 8px 25px #163b2108\n}\n#grin-cushion .gc-panel-quote span{\n display:block;font-size:10px;color:var(--muted);font-weight:400\n}\n\n\/* BRAND CALLOUT *\/\n#grin-cushion .gc-callout{\n background:var(--forest);color:white;border-radius:15px;\n padding:31px;display:flex;align-items:center;\n justify-content:space-between;gap:25px\n}\n#grin-cushion .gc-callout h3{\n font-size:clamp(21px,3vw,29px);line-height:1.2;\n margin-bottom:8px;color:white\n}\n#grin-cushion .gc-callout p{\n font-size:12px;line-height:1.8;color:#d1e0d0;margin:0;max-width:530px\n}\n#grin-cushion .gc-callout .gc-btn{\n flex-shrink:0;background:#dce9d8;border-color:#dce9d8;color:var(--forest)\n}\n#grin-cushion .gc-callout .gc-btn:hover{background:#fff}\n\n\/* FAQ *\/\n#grin-cushion .gc-faq{max-width:740px;margin:auto}\n#grin-cushion .gc-faq-item{border-bottom:1px solid #e4e9e0}\n#grin-cushion .gc-question{\n width:100%;display:flex;align-items:center;justify-content:space-between;\n gap:15px;padding:20px 0;border:0;background:transparent;\n text-align:left;color:var(--forest);font-size:13px;font-weight:750\n}\n#grin-cushion .gc-plus{\n color:var(--green);font-size:23px;font-weight:400;\n transition:transform .25s\n}\n#grin-cushion .gc-question[aria-expanded=\"true\"] .gc-plus{transform:rotate(45deg)}\n#grin-cushion .gc-answer{\n padding:0 30px 19px 0;color:var(--muted);font-size:12px;line-height:1.8\n}\n#grin-cushion .gc-answer[hidden]{display:none}\n\n\/* FOOTER *\/\n#grin-cushion .gc-footer{\n padding:32px 20px;text-align:center;background:var(--cream)\n}\n#grin-cushion .gc-brand{\n font-size:22px;font-weight:900;letter-spacing:-1px;color:var(--forest)\n}\n#grin-cushion .gc-footer p{font-size:11px;color:var(--muted);margin:6px 0 0}\n\n\/* SCROLL ANIMATIONS *\/\n#grin-cushion .gc-reveal{\n opacity:0;transform:translateY(18px);\n transition:opacity .65s ease,transform .65s ease\n}\n#grin-cushion .gc-reveal.gc-visible{opacity:1;transform:translateY(0)}\n#grin-cushion .gc-card:nth-child(2){transition-delay:.08s}\n#grin-cushion .gc-card:nth-child(3){transition-delay:.16s}\n\n@media(prefers-reduced-motion:reduce){\n #grin-cushion *,#grin-cushion *:before,#grin-cushion *:after{\n  animation:none!important;transition:none!important\n }\n #grin-cushion .gc-reveal{opacity:1;transform:none}\n}\n@media(max-width:650px){\n #grin-cushion .gc-container{padding:0 19px}\n #grin-cushion .gc-section{padding:49px 0}\n #grin-cushion .gc-hero{padding:51px 20px 45px}\n #grin-cushion .gc-hero h2{font-size:clamp(39px,10.5vw,55px);letter-spacing:-2.4px}\n #grin-cushion .gc-hero-copy{font-size:13px}\n #grin-cushion .gc-strip-grid{grid-template-columns:1fr;gap:12px}\n #grin-cushion .gc-strip-item{justify-content:flex-start}\n #grin-cushion .gc-benefits{grid-template-columns:1fr;gap:11px}\n #grin-cushion .gc-card{padding:21px}\n #grin-cushion .gc-lifestyle-grid{grid-template-columns:1fr;gap:27px}\n #grin-cushion .gc-lifestyle-panel{min-height:245px}\n #grin-cushion .gc-callout{align-items:flex-start;flex-direction:column;padding:24px}\n #grin-cushion .gc-callout .gc-btn{width:100%}\n}\n\u003c\/style\u003e\n\n\u003c!-- HERO --\u003e\n\u003csection class=\"gc-hero\"\u003e\n \u003cdiv class=\"gc-hero-inner gc-reveal\"\u003e\n  \u003cdiv class=\"gc-eyebrow\"\u003e\n\u003cspan class=\"gc-dot\"\u003e\u003c\/span\u003e GRIN GOODS™ · HOME \u0026amp; LIFESTYLE\u003c\/div\u003e\n  \u003ch2\u003eMeet your new\u003cbr\u003ecuddle bud.\u003cbr\u003e\u003cem\u003eNo appointment needed.\u003c\/em\u003e\n\u003c\/h2\u003e\n  \u003cp class=\"gc-hero-copy\"\u003e\n   A tooth you'll actually want to keep on your couch.\n   This Grin Goods™ tooth-shaped cushion brings a little\n   cheeky charm to your space, turning an everyday corner\n   into something worth smiling about.\n  \u003c\/p\u003e\n  \u003cdiv class=\"gc-actions\"\u003e\n   \u003ca href=\"#gc-benefits\" class=\"gc-btn gc-primary\"\u003eAdd a little grin \u003cspan class=\"gc-arrow\"\u003e→\u003c\/span\u003e\u003c\/a\u003e\n   \u003ca href=\"#gc-lifestyle\" class=\"gc-btn gc-secondary\"\u003eFind its happy place\u003c\/a\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"gc-hero-note\"\u003e\n\u003cspan class=\"gc-check\"\u003e✓\u003c\/span\u003e All the toothy charm. None of the flossing.\u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- BRAND STRIP --\u003e\n\u003cdiv class=\"gc-strip\"\u003e\n \u003cdiv class=\"gc-container gc-strip-grid\"\u003e\n  \u003cdiv class=\"gc-strip-item\"\u003e\n\u003cspan class=\"gc-strip-icon\"\u003e♡\u003c\/span\u003e Playful home décor\u003c\/div\u003e\n  \u003cdiv class=\"gc-strip-item\"\u003e\n\u003cspan class=\"gc-strip-icon\"\u003e☺\u003c\/span\u003e Made for cosy moments\u003c\/div\u003e\n  \u003cdiv class=\"gc-strip-item\"\u003e\n\u003cspan class=\"gc-strip-icon\"\u003e✳\u003c\/span\u003e A gift with personality\u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- BENEFITS --\u003e\n\u003csection class=\"gc-section\" id=\"gc-benefits\"\u003e\n \u003cdiv class=\"gc-container\"\u003e\n  \u003cdiv class=\"gc-center gc-reveal\"\u003e\n   \u003cdiv class=\"gc-eyebrow\"\u003e\n\u003cspan class=\"gc-dot\"\u003e\u003c\/span\u003e THE LITTLE DETAILS\u003c\/div\u003e\n   \u003ch2\u003eA little tooth.\u003cbr\u003e\u003cspan class=\"gc-accent\"\u003eA lot of personality.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp class=\"gc-intro\"\u003e\n    Give your favourite spaces a playful finishing touch.\n    It's a cosy companion, a conversation starter and a\n    little reminder not to take life too seriously.\n   \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gc-benefits\"\u003e\n   \u003carticle class=\"gc-card gc-reveal\"\u003e\n    \u003cspan class=\"gc-card-number\"\u003e01 \/ 03\u003c\/span\u003e\n    \u003cdiv class=\"gc-icon\"\u003e♡\u003c\/div\u003e\n    \u003ch3\u003eGive your space a grin\u003c\/h3\u003e\n    \u003cp\u003eAdd a playful finishing touch to your sofa, favourite chair or bedroom. Make an ordinary corner feel a little more you.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gc-card gc-reveal\"\u003e\n    \u003cspan class=\"gc-card-number\"\u003e02 \/ 03\u003c\/span\u003e\n    \u003cdiv class=\"gc-icon\"\u003e☺\u003c\/div\u003e\n    \u003ch3\u003eMake downtime cuter\u003c\/h3\u003e\n    \u003cp\u003eKeep your tooth-shaped companion nearby for reading breaks, movie nights and those wonderfully lazy afternoons.\u003c\/p\u003e\n   \u003c\/article\u003e\n   \u003carticle class=\"gc-card gc-reveal\"\u003e\n    \u003cspan class=\"gc-card-number\"\u003e03 \/ 03\u003c\/span\u003e\n    \u003cdiv class=\"gc-icon\"\u003e♧\u003c\/div\u003e\n    \u003ch3\u003eGift a little dental humour\u003c\/h3\u003e\n    \u003cp\u003eA fun, unexpected present for dental students, dental professionals or anyone who appreciates a quirky cushion.\u003c\/p\u003e\n   \u003c\/article\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- LIFESTYLE --\u003e\n\u003csection class=\"gc-section gc-lifestyle\" id=\"gc-lifestyle\"\u003e\n \u003cdiv class=\"gc-container gc-lifestyle-grid\"\u003e\n  \u003cdiv class=\"gc-lifestyle-copy gc-reveal\"\u003e\n   \u003cdiv class=\"gc-eyebrow\"\u003e\n\u003cspan class=\"gc-dot\"\u003e\u003c\/span\u003e WHERE IT BELONGS\u003c\/div\u003e\n   \u003ch2\u003eRight at home,\u003cbr\u003e\u003cspan class=\"gc-accent\"\u003ewherever you unwind.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp\u003e\n    Pop it on your couch for movie night, style it in a cosy\n    reading nook or let it bring some personality to your\n    home office. Wherever it lands, it's a little reminder\n    to make room for things that make you smile.\n   \u003c\/p\u003e\n\n   \u003cdiv class=\"gc-places\"\u003e\n    \u003cdiv class=\"gc-place\"\u003e\n\u003cdiv class=\"gc-place-icon\"\u003e⌂\u003c\/div\u003eLiving room\u003c\/div\u003e\n    \u003cdiv class=\"gc-place\"\u003e\n\u003cdiv class=\"gc-place-icon\"\u003e▤\u003c\/div\u003eReading nook\u003c\/div\u003e\n    \u003cdiv class=\"gc-place\"\u003e\n\u003cdiv class=\"gc-place-icon\"\u003e⌘\u003c\/div\u003eHome office\u003c\/div\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Decorative design panel; not a product photo --\u003e\n  \u003cdiv class=\"gc-lifestyle-panel gc-reveal\"\u003e\n   \u003cdiv class=\"gc-panel-content\"\u003e\n    \u003cdiv class=\"gc-eyebrow\"\u003e\n\u003cspan class=\"gc-dot\"\u003e\u003c\/span\u003e YOUR COSY CORNER\u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"gc-orbit\"\u003e\u003c\/div\u003e\n   \u003cdiv class=\"gc-panel-quote\"\u003e\n    ☺   All the toothy charm.\n    \u003cspan\u003eNone of the flossing.\u003c\/span\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- GIFTING --\u003e\n\u003csection class=\"gc-section\"\u003e\n \u003cdiv class=\"gc-container\"\u003e\n  \u003cdiv class=\"gc-callout gc-reveal\"\u003e\n   \u003cdiv\u003e\n    \u003ch3\u003eSmall cushion. Big personality.\u003c\/h3\u003e\n    \u003cp\u003e\n     Looking for something a little different?\n     Bring a smile to a dental student's desk, surprise\n     your favourite dental professional or add a playful\n     touch to your own space.\n    \u003c\/p\u003e\n   \u003c\/div\u003e\n   \u003ca href=\"#gc-faq\" class=\"gc-btn\"\u003eA little more info \u003cspan class=\"gc-arrow\"\u003e→\u003c\/span\u003e\u003c\/a\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- INTERACTIVE FAQ --\u003e\n\u003csection class=\"gc-section\" id=\"gc-faq\"\u003e\n \u003cdiv class=\"gc-container\"\u003e\n  \u003cdiv class=\"gc-center gc-reveal\"\u003e\n   \u003cdiv class=\"gc-eyebrow\"\u003e\n\u003cspan class=\"gc-dot\"\u003e\u003c\/span\u003e GOOD TO KNOW\u003c\/div\u003e\n   \u003ch2\u003eA few little \u003cspan class=\"gc-accent\"\u003edetails.\u003c\/span\u003e\n\u003c\/h2\u003e\n   \u003cp class=\"gc-intro\"\u003e\n    Have a question about your new cuddle bud?\n    Here's what you should know.\n   \u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"gc-faq gc-reveal\"\u003e\n   \u003cdiv class=\"gc-faq-item\"\u003e\n    \u003cbutton class=\"gc-question\" type=\"button\" aria-expanded=\"false\"\u003e\n     Where can I style my tooth cushion?\n     \u003cspan class=\"gc-plus\"\u003e+\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"gc-answer\" hidden\u003e\n     Style it on a sofa, favourite chair, bed, reading nook or\n     home office. It's a playful accent for spaces where you\n     want to add a little personality.\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n\n   \u003cdiv class=\"gc-faq-item\"\u003e\n    \u003cbutton class=\"gc-question\" type=\"button\" aria-expanded=\"false\"\u003e\n     Is it a good gift for someone in dentistry?\n     \u003cspan class=\"gc-plus\"\u003e+\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"gc-answer\" hidden\u003e\n     Its tooth-shaped design makes it a fun gift idea for dental\n     students, dental professionals and anyone who enjoys\n     quirky, smile-inspired décor.\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n\n   \u003cdiv class=\"gc-faq-item\"\u003e\n    \u003cbutton class=\"gc-question\" type=\"button\" aria-expanded=\"false\"\u003e\n     Is this cushion for decoration or cuddling?\n     \u003cspan class=\"gc-plus\"\u003e+\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"gc-answer\" hidden\u003e\n     It's designed to add a playful touch to your space and\n     accompany your downtime. Check the product specifications\n     for its dimensions, materials and intended use.\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n\n   \u003cdiv class=\"gc-faq-item\"\u003e\n    \u003cbutton class=\"gc-question\" type=\"button\" aria-expanded=\"false\"\u003e\n     How should I clean the cushion?\n     \u003cspan class=\"gc-plus\"\u003e+\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"gc-answer\" hidden\u003e\n     Cleaning methods depend on the cushion's fabric and filling.\n     Follow the care instructions supplied with your product\n     to help keep it in good condition.\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n\n   \u003cdiv class=\"gc-faq-item\"\u003e\n    \u003cbutton class=\"gc-question\" type=\"button\" aria-expanded=\"false\"\u003e\n     What size is the cushion?\n     \u003cspan class=\"gc-plus\"\u003e+\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"gc-answer\" hidden\u003e\n     Please refer to the product specifications on this listing\n     for the confirmed dimensions, materials and available options.\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003c!-- FOOTER --\u003e\n\u003cfooter class=\"gc-footer\"\u003e\n \u003cdiv class=\"gc-brand\"\u003egrin goods™\u003c\/div\u003e\n \u003cp\u003eSmall things. A bigger smile.\u003c\/p\u003e\n\u003c\/footer\u003e\n\n\u003cscript\u003e\n(function(){\n const root=document.getElementById('grin-cushion');\n if(!root)return;\n\n \/\/ Reveal sections as customers scroll.\n const elements=root.querySelectorAll('.gc-reveal');\n\n if('IntersectionObserver' in window){\n  const observer=new IntersectionObserver(entries=\u003e{\n   entries.forEach(entry=\u003e{\n    if(entry.isIntersecting){\n     entry.target.classList.add('gc-visible');\n     observer.unobserve(entry.target);\n    }\n   });\n  },{threshold:.12});\n\n  elements.forEach(element=\u003eobserver.observe(element));\n }else{\n  elements.forEach(element=\u003eelement.classList.add('gc-visible'));\n }\n\n \/\/ Interactive FAQ accordion.\n root.querySelectorAll('.gc-question').forEach(button=\u003e{\n  button.addEventListener('click',()=\u003e{\n   const answer=button.nextElementSibling;\n   const open=button.getAttribute('aria-expanded')!=='true';\n\n   root.querySelectorAll('.gc-question').forEach(other=\u003e{\n    other.setAttribute('aria-expanded','false');\n    other.nextElementSibling.hidden=true;\n   });\n\n   button.setAttribute('aria-expanded',String(open));\n   answer.hidden=!open;\n  });\n });\n\n \/\/ Smooth scrolling for links inside the product description.\n root.querySelectorAll('a[href^=\"#\"]').forEach(link=\u003e{\n  link.addEventListener('click',event=\u003e{\n   const target=root.querySelector(link.getAttribute('href'));\n   if(target){\n    event.preventDefault();\n    target.scrollIntoView({behavior:'smooth',block:'start'});\n   }\n  });\n });\n})();\n\u003c\/script\u003e\n\u003c\/div\u003e\n","brand":"Grin Goods™","offers":[{"title":"Default Title","offer_id":46264294375559,"sku":null,"price":149.0,"currency_code":"ZAR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0776\/0088\/2823\/files\/tooth-cushion-on-a-white-background-with-the-grin-goods-logo-behind-it.png?v=1792616352"}],"url":"https:\/\/gringoods.co.za\/collections\/frontpage.oembed","provider":"Grin Goods™","version":"1.0","type":"link"}