{"title":"All Products","description":"","products":[{"product_id":"11zbx0201004","title":"Original Relaxound","description":"\u003cdiv style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 16px; line-height: 1.6;\"\u003e\n  \u003ch3 style=\"margin-bottom: 1.5em;\"\u003e\n    Brighten your mood with the Original Relaxound, a motion-activated soundbox crafted by sound engineers to recreate the refreshing sounds of a morning forest. The timber finish adds a natural touch, making it a chic and eco-friendly addition to your home.\n  \u003c\/h3\u003e\n\n  \u003cdiv class=\"audio-widget\" data-audio-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Zwitscherbox_soundfile_20sec.mp3?v=1753073121\"\u003e\n    \u003cbutton class=\"audio-play-button\" aria-label=\"Play audio\"\u003e\n      \u003cdiv class=\"audio-icon\"\u003e\n        \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"loading-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath opacity=\".25\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\u003e\u003c\/path\u003e\n          \u003cpath d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\u003e\n            \u003canimatetransform attributename=\"transform\" dur=\"0.75s\" repeatcount=\"indefinite\" type=\"rotate\" values=\"0 12 12;360 12 12\"\u003e\u003c\/animatetransform\u003e\n          \u003c\/path\u003e\n        \u003c\/svg\u003e\n      \u003c\/div\u003e\n      \u003cspan class=\"audio-button-text\"\u003ePlay Sound\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"audio-progress\"\u003e\n      \u003cdiv class=\"audio-progress-bar\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"audio-error-message\" role=\"alert\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .audio-widget {\n    display: inline-block;\n    margin: 20px 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n    width: 100%;\n    text-align: center;\n  }\n  @media (min-width: 768px) {\n    .audio-widget {\n      width: auto;\n      text-align: left;\n    }\n  }\n  .audio-play-button {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 16px 24px;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    border: none;\n    border-radius: 50px;\n    color: white;\n    font-size: 16px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n    min-width: 140px;\n    justify-content: center;\n  }\n  .audio-play-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);\n    background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%);\n  }\n  .audio-icon {\n    width: 20px;\n    height: 20px;\n    position: relative;\n  }\n  .audio-icon svg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    transition: opacity 0.3s ease;\n  }\n  .play-icon { opacity: 1; }\n  .pause-icon { opacity: 0; }\n  .loading-icon { opacity: 0; }\n  .audio-widget.playing .play-icon { opacity: 0; }\n  .audio-widget.playing .pause-icon { opacity: 1; }\n  .audio-widget.loading .play-icon,\n  .audio-widget.loading .pause-icon { opacity: 0; }\n  .audio-widget.loading .loading-icon { opacity: 1; }\n  .audio-button-text {\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n  }\n  .audio-progress {\n    width: 100%;\n    height: 4px;\n    background-color: rgba(102, 126, 234, 0.2);\n    border-radius: 2px;\n    margin-top: 12px;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n  .audio-widget.playing .audio-progress,\n  .audio-widget.loading .audio-progress { opacity: 1; }\n  .audio-progress-bar {\n    height: 100%;\n    background: linear-gradient(90deg, #667eea, #764ba2);\n    border-radius: 2px;\n    width: 0%;\n    transition: width 0.3s ease;\n  }\n  .audio-error-message {\n    margin-top: 8px;\n    padding: 8px 12px;\n    background-color: #fee;\n    color: #c53030;\n    border-radius: 6px;\n    font-size: 12px;\n    display: none;\n    border: 1px solid #feb2b2;\n  }\n  .audio-widget.error .audio-error-message { display: block; }\n  .audio-widget.error .audio-play-button {\n    background: linear-gradient(135deg, #fc8181 0%, #e53e3e 100%);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.querySelectorAll('.audio-widget').forEach(widget =\u003e {\n    const audioSrc = widget.getAttribute('data-audio-src');\n    const playButton = widget.querySelector('.audio-play-button');\n    const progressBar = widget.querySelector('.audio-progress-bar');\n    const errorMessage = widget.querySelector('.audio-error-message');\n    const audio = new Audio(audioSrc);\n    let isPlaying = false;\n\n    audio.addEventListener('timeupdate', () =\u003e {\n      const percent = (audio.currentTime \/ audio.duration) * 100;\n      progressBar.style.width = percent + '%';\n    });\n\n    audio.addEventListener('ended', () =\u003e {\n      widget.classList.remove('playing');\n      isPlaying = false;\n    });\n\n    playButton.addEventListener('click', () =\u003e {\n      if (isPlaying) {\n        audio.pause();\n        widget.classList.remove('playing');\n        isPlaying = false;\n      } else {\n        widget.classList.add('loading');\n        audio.play().then(() =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('playing');\n          isPlaying = true;\n        }).catch(err =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('error');\n          errorMessage.textContent = 'Audio failed to load. Please try again.';\n        });\n      }\n    });\n  });\n\u003c\/script\u003e","brand":"Relaxound","offers":[{"title":"Oak","offer_id":46520535187681,"sku":"11ZBX0201004","price":109.95,"currency_code":"AUD","in_stock":true},{"title":"Walnut","offer_id":46520535220449,"sku":"11ZBX0202007","price":109.95,"currency_code":"AUD","in_stock":true},{"title":"Bamboo","offer_id":46520535253217,"sku":"11ZBX0200002","price":109.95,"currency_code":"AUD","in_stock":true},{"title":"Cherry","offer_id":46520535285985,"sku":"11ZBX0201006","price":109.95,"currency_code":"AUD","in_stock":true},{"title":"Gloss White","offer_id":46520541118689,"sku":"11ZBX0101001","price":109.95,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Zwitscherbox_oak_front.jpg?v=1753352516"},{"product_id":"11lsb0201001","title":"Lakesidebox","description":"\u003cdiv style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 16px; line-height: 1.6;\"\u003e\n  \u003ch3 style=\"margin-bottom: 1.5em;\"\u003e\n   Immerse yourself in lakeside serenity with the Lakesidebox. Created by expert sound engineers, this motion-activated soundbox brings the gentle sounds of water and birds into your home. The timber finish complements any décor, making it a stylish choice for relaxation.\n  \u003c\/h3\u003e\n\n  \u003cdiv class=\"audio-widget\" data-audio-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Lakesidebox_soundfile_20sec.mp3?v=1753074363\"\u003e\n    \u003cbutton class=\"audio-play-button\" aria-label=\"Play audio\"\u003e\n      \u003cdiv class=\"audio-icon\"\u003e\n        \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"loading-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath opacity=\".25\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\u003e\u003c\/path\u003e\n          \u003cpath d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\u003e\n            \u003canimatetransform attributename=\"transform\" dur=\"0.75s\" repeatcount=\"indefinite\" type=\"rotate\" values=\"0 12 12;360 12 12\"\u003e\u003c\/animatetransform\u003e\n          \u003c\/path\u003e\n        \u003c\/svg\u003e\n      \u003c\/div\u003e\n      \u003cspan class=\"audio-button-text\"\u003ePlay Sound\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"audio-progress\"\u003e\n      \u003cdiv class=\"audio-progress-bar\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"audio-error-message\" role=\"alert\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .audio-widget {\n    display: inline-block;\n    margin: 20px 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n    width: 100%;\n    text-align: center;\n  }\n  @media (min-width: 768px) {\n    .audio-widget {\n      width: auto;\n      text-align: left;\n    }\n  }\n  .audio-play-button {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 16px 24px;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    border: none;\n    border-radius: 50px;\n    color: white;\n    font-size: 16px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n    min-width: 140px;\n    justify-content: center;\n  }\n  .audio-play-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);\n    background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%);\n  }\n  .audio-icon {\n    width: 20px;\n    height: 20px;\n    position: relative;\n  }\n  .audio-icon svg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    transition: opacity 0.3s ease;\n  }\n  .play-icon { opacity: 1; }\n  .pause-icon { opacity: 0; }\n  .loading-icon { opacity: 0; }\n  .audio-widget.playing .play-icon { opacity: 0; }\n  .audio-widget.playing .pause-icon { opacity: 1; }\n  .audio-widget.loading .play-icon,\n  .audio-widget.loading .pause-icon { opacity: 0; }\n  .audio-widget.loading .loading-icon { opacity: 1; }\n  .audio-button-text {\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n  }\n  .audio-progress {\n    width: 100%;\n    height: 4px;\n    background-color: rgba(102, 126, 234, 0.2);\n    border-radius: 2px;\n    margin-top: 12px;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n  .audio-widget.playing .audio-progress,\n  .audio-widget.loading .audio-progress { opacity: 1; }\n  .audio-progress-bar {\n    height: 100%;\n    background: linear-gradient(90deg, #667eea, #764ba2);\n    border-radius: 2px;\n    width: 0%;\n    transition: width 0.3s ease;\n  }\n  .audio-error-message {\n    margin-top: 8px;\n    padding: 8px 12px;\n    background-color: #fee;\n    color: #c53030;\n    border-radius: 6px;\n    font-size: 12px;\n    display: none;\n    border: 1px solid #feb2b2;\n  }\n  .audio-widget.error .audio-error-message { display: block; }\n  .audio-widget.error .audio-play-button {\n    background: linear-gradient(135deg, #fc8181 0%, #e53e3e 100%);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.querySelectorAll('.audio-widget').forEach(widget =\u003e {\n    const audioSrc = widget.getAttribute('data-audio-src');\n    const playButton = widget.querySelector('.audio-play-button');\n    const progressBar = widget.querySelector('.audio-progress-bar');\n    const errorMessage = widget.querySelector('.audio-error-message');\n    const audio = new Audio(audioSrc);\n    let isPlaying = false;\n\n    audio.addEventListener('timeupdate', () =\u003e {\n      const percent = (audio.currentTime \/ audio.duration) * 100;\n      progressBar.style.width = percent + '%';\n    });\n\n    audio.addEventListener('ended', () =\u003e {\n      widget.classList.remove('playing');\n      isPlaying = false;\n    });\n\n    playButton.addEventListener('click', () =\u003e {\n      if (isPlaying) {\n        audio.pause();\n        widget.classList.remove('playing');\n        isPlaying = false;\n      } else {\n        widget.classList.add('loading');\n        audio.play().then(() =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('playing');\n          isPlaying = true;\n        }).catch(err =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('error');\n          errorMessage.textContent = 'Audio failed to load. Please try again.';\n        });\n      }\n    });\n  });\n\u003c\/script\u003e","brand":"Relaxound","offers":[{"title":"Oak","offer_id":46520494424289,"sku":"11LSB0201001","price":109.95,"currency_code":"AUD","in_stock":true},{"title":"Birch","offer_id":46520494457057,"sku":"11LSB0201009","price":109.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Lakesidebox_birch_front_shadow.jpg?v=1753346139"},{"product_id":"11obx0101001","title":"Oceanbox","description":"\u003cdiv style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 16px; line-height: 1.6;\"\u003e\n  \u003ch3 style=\"margin-bottom: 1.5em;\"\u003e\n   Let the Oceanbox transport you to a tranquil seaside retreat. Designed by sound engineers, this motion-activated soundbox fills your space with the rhythmic sounds of the ocean. Its sleek design is a stunning addition to any room, bringing peace and elegance together.\n  \u003c\/h3\u003e\n\n  \u003cdiv class=\"audio-widget\" data-audio-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Oceanbox_soundfile_20sec.mp3?v=1753073577\"\u003e\n    \u003cbutton class=\"audio-play-button\" aria-label=\"Play audio\"\u003e\n      \u003cdiv class=\"audio-icon\"\u003e\n        \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"loading-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath opacity=\".25\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\u003e\u003c\/path\u003e\n          \u003cpath d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\u003e\n            \u003canimatetransform attributename=\"transform\" dur=\"0.75s\" repeatcount=\"indefinite\" type=\"rotate\" values=\"0 12 12;360 12 12\"\u003e\u003c\/animatetransform\u003e\n          \u003c\/path\u003e\n        \u003c\/svg\u003e\n      \u003c\/div\u003e\n      \u003cspan class=\"audio-button-text\"\u003ePlay Sound\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"audio-progress\"\u003e\n      \u003cdiv class=\"audio-progress-bar\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"audio-error-message\" role=\"alert\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .audio-widget {\n    display: inline-block;\n    margin: 20px 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n    width: 100%;\n    text-align: center;\n  }\n  @media (min-width: 768px) {\n    .audio-widget {\n      width: auto;\n      text-align: left;\n    }\n  }\n  .audio-play-button {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 16px 24px;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    border: none;\n    border-radius: 50px;\n    color: white;\n    font-size: 16px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n    min-width: 140px;\n    justify-content: center;\n  }\n  .audio-play-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);\n    background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%);\n  }\n  .audio-icon {\n    width: 20px;\n    height: 20px;\n    position: relative;\n  }\n  .audio-icon svg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    transition: opacity 0.3s ease;\n  }\n  .play-icon { opacity: 1; }\n  .pause-icon { opacity: 0; }\n  .loading-icon { opacity: 0; }\n  .audio-widget.playing .play-icon { opacity: 0; }\n  .audio-widget.playing .pause-icon { opacity: 1; }\n  .audio-widget.loading .play-icon,\n  .audio-widget.loading .pause-icon { opacity: 0; }\n  .audio-widget.loading .loading-icon { opacity: 1; }\n  .audio-button-text {\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n  }\n  .audio-progress {\n    width: 100%;\n    height: 4px;\n    background-color: rgba(102, 126, 234, 0.2);\n    border-radius: 2px;\n    margin-top: 12px;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n  .audio-widget.playing .audio-progress,\n  .audio-widget.loading .audio-progress { opacity: 1; }\n  .audio-progress-bar {\n    height: 100%;\n    background: linear-gradient(90deg, #667eea, #764ba2);\n    border-radius: 2px;\n    width: 0%;\n    transition: width 0.3s ease;\n  }\n  .audio-error-message {\n    margin-top: 8px;\n    padding: 8px 12px;\n    background-color: #fee;\n    color: #c53030;\n    border-radius: 6px;\n    font-size: 12px;\n    display: none;\n    border: 1px solid #feb2b2;\n  }\n  .audio-widget.error .audio-error-message { display: block; }\n  .audio-widget.error .audio-play-button {\n    background: linear-gradient(135deg, #fc8181 0%, #e53e3e 100%);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.querySelectorAll('.audio-widget').forEach(widget =\u003e {\n    const audioSrc = widget.getAttribute('data-audio-src');\n    const playButton = widget.querySelector('.audio-play-button');\n    const progressBar = widget.querySelector('.audio-progress-bar');\n    const errorMessage = widget.querySelector('.audio-error-message');\n    const audio = new Audio(audioSrc);\n    let isPlaying = false;\n\n    audio.addEventListener('timeupdate', () =\u003e {\n      const percent = (audio.currentTime \/ audio.duration) * 100;\n      progressBar.style.width = percent + '%';\n    });\n\n    audio.addEventListener('ended', () =\u003e {\n      widget.classList.remove('playing');\n      isPlaying = false;\n    });\n\n    playButton.addEventListener('click', () =\u003e {\n      if (isPlaying) {\n        audio.pause();\n        widget.classList.remove('playing');\n        isPlaying = false;\n      } else {\n        widget.classList.add('loading');\n        audio.play().then(() =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('playing');\n          isPlaying = true;\n        }).catch(err =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('error');\n          errorMessage.textContent = 'Audio failed to load. Please try again.';\n        });\n      }\n    });\n  });\n\u003c\/script\u003e","brand":"Relaxound","offers":[{"title":"White","offer_id":47964447441121,"sku":"11OBX0101002","price":109.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Relaxound_OceanBox_Weiss_FrontLow_01.jpg?v=1770856036"},{"product_id":"11bbx0401002","title":"Birdybox","description":"\u003cdiv style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 16px; line-height: 1.6;\"\u003e\n  \u003ch3 style=\"margin-bottom: 1.5em;\"\u003e\n    Bring a little calm to your day with the Birdybox. Designed by sound engineers, this elegant motion-activated soundbox fills your space with the soothing melodies of nature. Its elegant finish adds a touch of sophistication, making it the perfect blend of style and serenity.\n  \u003c\/h3\u003e\n  \u003cdiv class=\"audio-widget\" data-audio-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Zwitscherbox_soundfile_20sec.mp3?v=1753073121\"\u003e\n    \u003cbutton class=\"audio-play-button\" aria-label=\"Play audio\"\u003e\n      \u003cdiv class=\"audio-icon\"\u003e\n        \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"loading-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath opacity=\".25\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\u003e\u003c\/path\u003e\n          \u003cpath d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\u003e\n            \u003canimatetransform attributename=\"transform\" dur=\"0.75s\" repeatcount=\"indefinite\" type=\"rotate\" values=\"0 12 12;360 12 12\"\u003e\u003c\/animatetransform\u003e\n          \u003c\/path\u003e\n        \u003c\/svg\u003e\n      \u003c\/div\u003e\n      \u003cspan class=\"audio-button-text\"\u003ePlay Sound\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"audio-progress\"\u003e\n      \u003cdiv class=\"audio-progress-bar\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"audio-error-message\" role=\"alert\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .audio-widget {\n    display: inline-block;\n    margin: 20px 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n    width: 100%;\n    text-align: center;\n  }\n  @media (min-width: 768px) {\n    .audio-widget {\n      width: auto;\n      text-align: left;\n    }\n  }\n  .audio-play-button {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 16px 24px;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    border: none;\n    border-radius: 50px;\n    color: white;\n    font-size: 16px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n    min-width: 140px;\n    justify-content: center;\n  }\n  .audio-play-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);\n    background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%);\n  }\n  .audio-icon {\n    width: 20px;\n    height: 20px;\n    position: relative;\n  }\n  .audio-icon svg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    transition: opacity 0.3s ease;\n  }\n  .play-icon { opacity: 1; }\n  .pause-icon { opacity: 0; }\n  .loading-icon { opacity: 0; }\n  .audio-widget.playing .play-icon { opacity: 0; }\n  .audio-widget.playing .pause-icon { opacity: 1; }\n  .audio-widget.loading .play-icon,\n  .audio-widget.loading .pause-icon { opacity: 0; }\n  .audio-widget.loading .loading-icon { opacity: 1; }\n  .audio-button-text {\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n  }\n  .audio-progress {\n    width: 100%;\n    height: 4px;\n    background-color: rgba(102, 126, 234, 0.2);\n    border-radius: 2px;\n    margin-top: 12px;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n  .audio-widget.playing .audio-progress,\n  .audio-widget.loading .audio-progress { opacity: 1; }\n  .audio-progress-bar {\n    height: 100%;\n    background: linear-gradient(90deg, #667eea, #764ba2);\n    border-radius: 2px;\n    width: 0%;\n    transition: width 0.3s ease;\n  }\n  .audio-error-message {\n    margin-top: 8px;\n    padding: 8px 12px;\n    background-color: #fee;\n    color: #c53030;\n    border-radius: 6px;\n    font-size: 12px;\n    display: none;\n    border: 1px solid #feb2b2;\n  }\n  .audio-widget.error .audio-error-message { display: block; }\n  .audio-widget.error .audio-play-button {\n    background: linear-gradient(135deg, #fc8181 0%, #e53e3e 100%);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.querySelectorAll('.audio-widget').forEach(widget =\u003e {\n    const audioSrc = widget.getAttribute('data-audio-src');\n    const playButton = widget.querySelector('.audio-play-button');\n    const progressBar = widget.querySelector('.audio-progress-bar');\n    const errorMessage = widget.querySelector('.audio-error-message');\n    const audio = new Audio(audioSrc);\n    let isPlaying = false;\n\n    audio.addEventListener('timeupdate', () =\u003e {\n      const percent = (audio.currentTime \/ audio.duration) * 100;\n      progressBar.style.width = percent + '%';\n    });\n\n    audio.addEventListener('ended', () =\u003e {\n      widget.classList.remove('playing');\n      isPlaying = false;\n    });\n\n    playButton.addEventListener('click', () =\u003e {\n      if (isPlaying) {\n        audio.pause();\n        widget.classList.remove('playing');\n        isPlaying = false;\n      } else {\n        widget.classList.add('loading');\n        audio.play().then(() =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('playing');\n          isPlaying = true;\n        }).catch(err =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('error');\n          errorMessage.textContent = 'Audio failed to load. Please try again.';\n        });\n      }\n    });\n  });\n\u003c\/script\u003e","brand":"Relaxound","offers":[{"title":"Steamed Oak","offer_id":46520504484065,"sku":"11BBX0201003","price":119.95,"currency_code":"AUD","in_stock":true},{"title":"Golden Brass","offer_id":46520504516833,"sku":"11BBX0401002","price":119.95,"currency_code":"AUD","in_stock":false},{"title":"Copper","offer_id":46520504549601,"sku":"11BBX0401003","price":119.95,"currency_code":"AUD","in_stock":false},{"title":"Toffee Terrazzo","offer_id":46520504582369,"sku":"11BBX0801002","price":119.95,"currency_code":"AUD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Birdybox_oak_frontlow-2.jpg?v=1753346095"},{"product_id":"junglebox-2","title":"Junglebox","description":"\u003cdiv style=\"font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 16px; line-height: 1.6;\"\u003e\n  \u003ch3 style=\"margin-bottom: 1.5em;\"\u003e\n    The Junglebox transforms your home into a lush rainforest escape. Crafted by sound engineers for perfect authenticity, this motion-activated box fills your space with the calming sounds of the jungle. The timber finish adds a warm, natural aesthetic to your wellness routine.\n  \u003c\/h3\u003e\n\n  \u003cdiv class=\"audio-widget\" data-audio-src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/Junglebox_Soundfile_Asien_Teaser_30s.mp3?v=1753074636\"\u003e\n    \u003cbutton class=\"audio-play-button\" aria-label=\"Play audio\"\u003e\n      \u003cdiv class=\"audio-icon\"\u003e\n        \u003csvg class=\"play-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M8 5v14l11-7z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"pause-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath d=\"M6 19h4V5H6v14zm8-14v14h4V5h-4z\"\u003e\u003c\/path\u003e\n        \u003c\/svg\u003e\n        \u003csvg class=\"loading-icon\" viewbox=\"0 0 24 24\" fill=\"currentColor\"\u003e\n          \u003cpath opacity=\".25\" d=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\u003e\u003c\/path\u003e\n          \u003cpath d=\"M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z\"\u003e\n            \u003canimatetransform attributename=\"transform\" dur=\"0.75s\" repeatcount=\"indefinite\" type=\"rotate\" values=\"0 12 12;360 12 12\"\u003e\u003c\/animatetransform\u003e\n          \u003c\/path\u003e\n        \u003c\/svg\u003e\n      \u003c\/div\u003e\n      \u003cspan class=\"audio-button-text\"\u003ePlay Sound\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cdiv class=\"audio-progress\"\u003e\n      \u003cdiv class=\"audio-progress-bar\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"audio-error-message\" role=\"alert\"\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .audio-widget {\n    display: inline-block;\n    margin: 20px 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n    width: 100%;\n    text-align: center;\n  }\n  @media (min-width: 768px) {\n    .audio-widget {\n      width: auto;\n      text-align: left;\n    }\n  }\n  .audio-play-button {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    padding: 16px 24px;\n    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n    border: none;\n    border-radius: 50px;\n    color: white;\n    font-size: 16px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3);\n    min-width: 140px;\n    justify-content: center;\n  }\n  .audio-play-button:hover {\n    transform: translateY(-2px);\n    box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);\n    background: linear-gradient(135deg, #5a6fd8 0%, #6a4190 100%);\n  }\n  .audio-icon {\n    width: 20px;\n    height: 20px;\n    position: relative;\n  }\n  .audio-icon svg {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    transition: opacity 0.3s ease;\n  }\n  .play-icon { opacity: 1; }\n  .pause-icon { opacity: 0; }\n  .loading-icon { opacity: 0; }\n  .audio-widget.playing .play-icon { opacity: 0; }\n  .audio-widget.playing .pause-icon { opacity: 1; }\n  .audio-widget.loading .play-icon,\n  .audio-widget.loading .pause-icon { opacity: 0; }\n  .audio-widget.loading .loading-icon { opacity: 1; }\n  .audio-button-text {\n    font-size: 14px;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n  }\n  .audio-progress {\n    width: 100%;\n    height: 4px;\n    background-color: rgba(102, 126, 234, 0.2);\n    border-radius: 2px;\n    margin-top: 12px;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n  .audio-widget.playing .audio-progress,\n  .audio-widget.loading .audio-progress { opacity: 1; }\n  .audio-progress-bar {\n    height: 100%;\n    background: linear-gradient(90deg, #667eea, #764ba2);\n    border-radius: 2px;\n    width: 0%;\n    transition: width 0.3s ease;\n  }\n  .audio-error-message {\n    margin-top: 8px;\n    padding: 8px 12px;\n    background-color: #fee;\n    color: #c53030;\n    border-radius: 6px;\n    font-size: 12px;\n    display: none;\n    border: 1px solid #feb2b2;\n  }\n  .audio-widget.error .audio-error-message { display: block; }\n  .audio-widget.error .audio-play-button {\n    background: linear-gradient(135deg, #fc8181 0%, #e53e3e 100%);\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  document.querySelectorAll('.audio-widget').forEach(widget =\u003e {\n    const audioSrc = widget.getAttribute('data-audio-src');\n    const playButton = widget.querySelector('.audio-play-button');\n    const progressBar = widget.querySelector('.audio-progress-bar');\n    const errorMessage = widget.querySelector('.audio-error-message');\n    const audio = new Audio(audioSrc);\n    let isPlaying = false;\n\n    audio.addEventListener('timeupdate', () =\u003e {\n      const percent = (audio.currentTime \/ audio.duration) * 100;\n      progressBar.style.width = percent + '%';\n    });\n\n    audio.addEventListener('ended', () =\u003e {\n      widget.classList.remove('playing');\n      isPlaying = false;\n    });\n\n    playButton.addEventListener('click', () =\u003e {\n      if (isPlaying) {\n        audio.pause();\n        widget.classList.remove('playing');\n        isPlaying = false;\n      } else {\n        widget.classList.add('loading');\n        audio.play().then(() =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('playing');\n          isPlaying = true;\n        }).catch(err =\u003e {\n          widget.classList.remove('loading');\n          widget.classList.add('error');\n          errorMessage.textContent = 'Audio failed to load. Please try again.';\n        });\n      }\n    });\n  });\n\u003c\/script\u003e","brand":"Relaxound","offers":[{"title":"Oak","offer_id":46520677335265,"sku":"11JGL0201002","price":119.95,"currency_code":"AUD","in_stock":true},{"title":"Teak","offer_id":46520677368033,"sku":"11JGL0201001","price":119.95,"currency_code":"AUD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0729\/9612\/6945\/files\/JungleBox_Teak_01_f9a54b0b-145c-4ad2-b7db-a5391fcda33a.jpg?v=1753346073"}],"url":"https:\/\/casacalm.com.au\/collections\/all-products.oembed","provider":"Casa Calm","version":"1.0","type":"link"}