{"product_id":"irobot-roomba-plus-415-robot-vacuum-mop-combo-20-000pa-suction-power","title":"iRobot Roomba Plus 415 Robot Vacuum \u0026 Mop Combo, 20,000Pa Suction Power","description":"\u003cdiv\u003e\u003cdiv lang=\"en_GB\"\u003e\n \u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium-module 11: FAQs - Common Styles (All Devices)\n *\/\n\n.aplus-v2 .premium-aplus-module-11 {\n    background: #fff;\n    position: relative;\n}\n\n.aplus-v2 .premium-aplus-module-11.aplus-secondary-color {\n    background: #000;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-question,\n.aplus-v2 .premium-aplus-module-11 .aplus-answer {\n    display: block;\n    width: 100%;\n    margin: 0;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-answer {\n    visibility: hidden;\n    opacity: 0;\n    height: 0;\n    transition: display 0.1s linear, opacity 0.1s linear, height 0.1s linear;\n    transition-behavior: allow-discrete;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-active .aplus-answer {\n    visibility: visible;\n    opacity: 1;\n    height: auto;\n    height: calc-size(auto);\n    min-height: 40px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-list {\n    margin: 0;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-block {\n    position: relative;\n    list-style-type: none;\n    cursor: pointer;\n    border: 2px solid #E6E6E6;\n    background: #fff;\n    border-radius: 3px;\n    margin-bottom: 10px;\n}\n\n.aplus-v2 .premium-aplus-module-11.aplus-secondary-color .faq-block {\n    border: none;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-question::before,\n.aplus-v2 .premium-aplus-module-11 .aplus-answer::before {\n    text-align: center;\n    border-radius: 3px;\n    display: inline-block;\n    font-weight: 500;\n    position: absolute;\n    color: #fff;\n    top: 10px;\n    left: 10px;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-11 .aplus-question::before,\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-11 .aplus-answer::before {\n    right: 10px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-question::before {\n    content: \"Q\";\n    background: #505050;\n    transition: background 0.1s linear;\n    z-index: 2;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-answer::before {\n    content: \"A\";\n    background: #DF7600;\n    color: #000000;\n    z-index: 1;\n    transform: translateY(0px);\n    transition: transform 0.1s linear;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-block.aplus-active .aplus-question::before {\n    background: #404040;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-block.aplus-active .aplus-answer::before {\n    transform: translateY(40px);\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-arrow {\n    position: absolute;\n    top: 25px;\n    border: 10px solid transparent;\n    border-top-color: #505050;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-11 .faq-arrow {\n    right: auto;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-active .faq-arrow {\n    top: 15px;\n    border-top-color: transparent;\n    border-bottom-color: #404040;\n}\n\n\u003c\/style\u003e\n  \u003cscript type=\"application\/javascript\"\u003e\n\n    \/**\n     * Common event handler for click and keydown events.\n     * @param {Event} event - The event object.\n     * @param {Function} handleClickOrEnter - Function to handle click or Enter key events.\n     * @param {Function} handleEsc - Function to handle Esc key events.\n     *\/\n    \/\/ [TODO][AplusMantle-8064] Create common event handler util(key events, click events) in AplusModuleResources\n    function handleClickAndKeyEvents(event, handleClickOrEnterOrSpace) {\n        const ENTER_KEY_CODE = 13;\n        const ESCAPE_KEY_CODE = 27;\n        const SPACE_KEY_CODE = 32;\n        const isClick = event.type === 'click';\n        const isKeydown = event.type === 'keydown';\n        const isEnter = isKeydown \u0026\u0026 event.keyCode === ENTER_KEY_CODE;\n        const isSpace = isKeydown \u0026\u0026 event.keyCode === SPACE_KEY_CODE;\n        const isEsc = isKeydown \u0026\u0026 event.keyCode === ESCAPE_KEY_CODE;\n\n        if (isClick || isEnter || isSpace) {\n            handleClickOrEnterOrSpace();\n        } else if (isEsc) {\n            handleEsc(event);\n        }\n    }\n\n    \/**\n    * Function to handle esc key event.\n    * @param {Event} event - The event object.\n    *\/\n    function handleEsc(event) {\n        event.target.blur()  \/\/ force remove focus\n    }\n\n\u003c\/script\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium modules global styles\n *\/\n.aplus-v2.desktop {\n  max-width: 1464px;\n  min-width: 800px;\n  margin-left: auto;\n  margin-right: auto;\n  word-wrap: break-word;\n  overflow-wrap: break-word;\n  word-break: break-word;\n}\n\/* Undo this for tech-specs because it breaks table layout *\/\n.aplus-v2.desktop .premium-aplus .aplus-tech-spec-table { word-break: initial; }\n\n.aplus-v2 .premium-aplus,\n.aplus-v2 .premium-aplus .aplus-h1,\n.aplus-v2 .premium-aplus .aplus-h2,\n.aplus-v2 .premium-aplus .aplus-p1,\n.aplus-v2 .premium-aplus .aplus-p2,\n.aplus-v2 .premium-aplus .aplus-p3,\n.aplus-v2 .premium-aplus .aplus-accent1,\n.aplus-v2 .premium-aplus .aplus-accent2\n{ font-family: Arial, sans-serif; }\n\n.aplus-v2 .premium-aplus,\n.aplus-v2 .premium-aplus .aplus-h1,\n.aplus-v2 .premium-aplus .aplus-h2,\n.aplus-v2 .premium-aplus .aplus-p1,\n.aplus-v2 .premium-aplus .aplus-p2,\n.aplus-v2 .premium-aplus .aplus-p3,\n.aplus-v2 .premium-aplus .aplus-accent1,\n.aplus-v2 .premium-aplus .aplus-accent2\n{ font-family: inherit; }\n\n\/* type *\/\n.aplus-v2 .premium-aplus .aplus-h1 { font-size: 32px; line-height: 1.2em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-h2 { font-size: 26px; line-height: 1.25em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-h3 { font-size: 18px; line-height: 1.25em; font-weight: 500; }\n.aplus-v2 .premium-aplus .aplus-p1 { font-size: 20px; line-height: 1.3em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-p2 { font-size: 16px; line-height: 1.4em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-p3 { font-size: 14px; line-height: 1.4em; font-weight: 300; }\n.aplus-v2 .premium-aplus .aplus-accent1 { font-size: 16px; line-height: 1.4em; font-weight: 600; }\n.aplus-v2 .premium-aplus .aplus-accent2 { font-size: 14px; line-height: 1.4em; font-weight: 600; }\n\n\/* spacing *\/\n.aplus-v2 .aplus-container-1 { padding: 40px; }\n.aplus-v2 .aplus-container-1-2 { padding: 40px 80px; }\n.aplus-v2 .aplus-container-2 { padding: 80px; }\n.aplus-v2 .aplus-container-3 { padding: 40px 0; }\n\n\/* Display *\/\n.aplus-v2 .premium-aplus .aplus-display-table { display: table; }\n.aplus-v2 .premium-aplus .aplus-display-table-cell { display: table-cell; }\n.aplus-v2 .premium-aplus .aplus-display-inline-block { display: inline-block; }\n\n\/* Aplus display table with min-width 1000px and fill remaining space inside parent *\/\n.aplus-v2.desktop .premium-aplus .aplus-display-table-width { min-width: 1000px; width: 100% }\n\n\/**\n* Padding and margin for element should be 10, 20, 40, or 80 px. Considering mini 10, small 20, medium 40, large 80.\n*\/\n\n\u003c\/style\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium-module 11: FAQs\n *\/\n\n.aplus-v2 .premium-aplus-module-11 .aplus-question {\n    line-height: 25px;\n    padding-bottom: 10px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-block {\n    padding: 10px 80px 15px 100px;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-11 .faq-block {\n    padding-left: 80px;\n    padding-right: 100px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-block.aplus-active {\n    padding-bottom: 35px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .aplus-question::before,\n.aplus-v2 .premium-aplus-module-11 .aplus-answer::before {\n    width: 80px;\n    line-height: 40px;\n    font-size: 25px;\n}\n\n.aplus-v2 .premium-aplus-module-11 .faq-arrow {\n    right: 40px;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-11 .faq-arrow {\n    left: 40px;\n}\n\n\u003c\/style\u003e\n  \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-11-faq').execute('init-premium-module-11-faq', function(init) {\n    if (init) {\n        return;\n    }\n    P.register('premium-module-11-faq', function() {\n        return function() {\n            P.when('A', 'jQuery', 'ready').execute('premium-11-faq', function(A, $){\n                function initFaq(module) {                   \n                    const MODULE_CLASS_NAME = 'premium-aplus-module-11';\n                    const FAQ_CONTAINER_CLASS_NAME = 'faqs-container';\n                    const FAQ_BLOCK_CLASS_NAME = 'faq-block';\n                    const moduleId = $(module).data('faq-block');\n                    const $faqBlocks = $('.aplus-v2 .' + MODULE_CLASS_NAME + ' .' + FAQ_CONTAINER_CLASS_NAME + '.' + moduleId + ' .' + FAQ_BLOCK_CLASS_NAME);\n\n                    \/**\n                    * Function to handle click or Enter or Space key events.\n                    * @param {Element} element - The this object from which the event is dispatched\n                    * @param {faqBlocks} faqBlocks - List of all the Question and Answer blocks.\n                    *\/\n                    function handleClickOrEnterOrSpace(element, faqBlocks) {\n                        const $element = $(element);\n                        const isActive = $element.hasClass('aplus-active');\n\n                        faqBlocks.removeClass('aplus-active');\n                        faqBlocks.find('[data-faq-question]').attr('aria-expanded', 'false');\n\n                        if (!isActive) {\n                            $element.addClass('aplus-active');\n                            $element.find('[data-faq-question]').attr('aria-expanded', 'true');\n                        }\n                    }\n\n                    \/* Using jQuery event namespace for preventing duplicate binding on twister refresh *\/\n                    $faqBlocks.unbind('click keydown.premiumAplusModule11ClickHandler').bind('click keydown.premiumAplusModule11ClickHandler', function(event) {\n                        handleClickAndKeyEvents(event, () =\u003e handleClickOrEnterOrSpace(this, $faqBlocks)); \n                    });\n                }\n                $(\".aplus-v2 .premium-aplus-module-11 .faqs-container\").each(function(index, module) {\n                    initFaq(module);\n                });\n            });\n        };\n    });\n});\n}));\u003c\/script\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium-module 12: Nav Carousel\n *\/\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-card {\n    position: relative;\n    width: 100%;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container {\n    position: relative;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-image-carousel-container {\n    \/* Match the aspect ratio of the desktop image uploaded via the editor (1464px x 600px) *\/\n    padding-top: calc(600 \/ 1464 * 100%); \/* ~40.983% *\/\n    height: 0;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-image-carousel-container \u003e div {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n}\n\n\/* Override AUI styles. It poorly attempts to measure the slide heights before waiting until images load. *\/\n.aplus-v2 .premium-aplus-module-12 .a-carousel-viewport {\n    height: 100% !important;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-card-image img {\n    width: 100%;\n    height: auto;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-card-details-wrapper {\n    position: absolute;\n    top: 0;\n    width: 50%;\n    height: 100%;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-card-detail {\n    display: table;\n    width: 100%;\n    height: 100%\n}\n\n.aplus-v2 .premium-aplus-module-12 .card-description {\n    text-align: left;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .card-description {\n    text-align: right;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-table-cell {\n    display: table-cell;\n    vertical-align: middle;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background {\n    padding: 20px;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color {\n    background: rgba(0, 0, 0, 0.5);\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color h1,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color h5,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ol,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ul,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ol .a-list-item,\n.aplus-v2 .premium-aplus-module-12 .aplus-text-background-color ul .a-list-item {\n    color: #fff;\n}\n\n.aplus-v2 .premium-aplus-module-12 .description {\n    margin-top: 20px;\n}\n\n\/* nav *\/\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions {\n    position: absolute;\n    top: 20px;\n    width: 100%;\n    text-align: center;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn {\n    display: inline-block;\n    margin: 7px 10px;\n    cursor: pointer;\n    border-radius: 30px;\n    border: 2px solid #000;\n    line-height: 2.5em;\n    min-width: 200px;\n    background-color: #fff;\n    white-space: nowrap;\n    color: #000;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-index {\n    display: none;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.aplus-active {\n    border-color: #fff;\n    background-color: #000;\n    color: #fff;\n}\n\n\/**\n * Regimen template specific css\n *\/\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen {\n    text-align: right;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions.regimen {\n    text-align: right;\n    top: 50%;\n    width: 250px;\n    right: 75px;\n    -webkit-transform: translateY(-50%);\n    -moz-transform: translateY(-50%);\n    -o-transform: translateY(-50%);\n    transform: translateY(-50%);\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions.regimen {\n    text-align: left;\n    top: 50%;\n    left: 75px;\n    right: auto;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen {\n    display: inline-block;\n    margin: 10px 10px;\n    cursor: pointer;\n    border-radius: 30px;\n    border: 2px solid #000;\n    width: 220px;\n    background-color: #fff;\n    padding: 2px 0 2px;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen.aplus-active {\n    border-color: #fff;\n    background-color: #000;\n    color: #fff;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen.aplus-active .aplus-carousel-index {\n    color: inherit;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-goto-btn.regimen.aplus-active .aplus-carousel-label {\n    color: inherit;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions .regimen .aplus-carousel-index {\n    display: inline-block;\n    width: 12px;\n    color: #000;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions .regimen .aplus-carousel-label {\n    color: #000;\n}\n\nhtml[dir=\"rtl\"] .aplus-v2 .premium-aplus-module-12 .aplus-carousel-actions .regimen .aplus-carousel-index {\n    margin-left: 0px;\n    margin-right: 6px;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-headline-top.regimen {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    background-color: #000;\n    opacity: 0.5;\n    text-align: center;\n}\n\n.aplus-v2 .premium-aplus-module-12 .aplus-headline-top.regimen .aplus-headline {\n    color: #fff;\n    line-height: 2em;\n}\n\n\/**\n * Navigation template specific css\n *\/\n\n.aplus-v2 .premium-aplus-module-12--top-nav .aplus-carousel-actions {\n    background-color: rgba(0, 0, 0, 0.8);\n    top: 0px;\n}\n\n.aplus-v2 .premium-aplus-module-12--top-nav .aplus-goto-btn {\n    padding: 8px;\n    color: #fff;\n    background-color: transparent;\n    border: none;\n}\n\n.aplus-v2 .premium-aplus-module-12--top-nav .aplus-goto-btn.aplus-active {\n    text-decoration: underline;\n    text-underline-offset: 0.8em;\n    text-decoration-thickness: 3px;\n    background-color: transparent;\n    border: none;\n}\n\u003c\/style\u003e\n  \u003cstyle type=\"text\/css\"\u003e\n\n\/**\n * Premium-module 8: Hero Video module\n *\/\n\n.aplus-v2 .premium-aplus-module-8 .premium-aplus-module-8-video {\n    position: relative;\n    width: 100%;\n}\n\n.aplus-v2 .premium-aplus-module-8 .video-placeholder {\n    padding-bottom: 40.984%; \/* Video or image required size 1464 : 600 = 40.9836 *\/\n}\n\n.aplus-v2 .premium-aplus-module-8 .video-container {\n    position: absolute;\n    top: 0;\n    width: 100%;\n    height: 100%;\n}\n\n\/*Override the default VSE video player size*\/\n.aplus-v2 .premium-aplus-module-8 .video-js.vjs-fluid {\n    padding: 0;\n}\n\n\u003c\/style\u003e\n  \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\nP.now('premium-module-12-nav-carousel').execute('init-premium-module-12-nav-carousel', function(init) {\n    if (init) {\n        return;\n    }\n    P.register('premium-module-12-nav-carousel', function(){\n        return function() {\n            P.when('A', 'jQuery', 'a-carousel-framework', 'ready').execute('premium-12-nav-carousel', function (A, $, framework) {\n                function initiateCarousel(module) {\n                    var MODULE_ID = $(module).data('module-id');\n                    \/**\n                    * Carousel button element classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_CLASS_NAME = \"aplus-goto-btn-\" + MODULE_ID;\n                    \/**\n                    * Carousel button element active classname\n                    * @const\n                    *\/\n                    var GOTO_BTN_ACTIVE_CLASS_NAME = \"aplus-active\";\n                    \/**\n                    * AUI name for aui carousel\n                    * @const\n                    *\/\n                    var CAROUSEL_NAME = \"premium-aplus-12-carousel-\" + MODULE_ID;\n                    \/**\n                    * Module class name\n                    * @const\n                    *\/\n                    var MODULE_CLASS_NAME = \".aplus-v2 .premium-aplus-module-12\";\n                    \/**\n                    * Carousel text container class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-carousel-text-container-\" + MODULE_ID;\n                    \/**\n                    * Carousel text hidden class name\n                    * @const\n                    *\/\n                    var TEXT_CONTAINER_HIDDEN = \"aplus-hidden\";\n                    \/**\n                    * Carousel horizontal scroll container class name\n                    * @const\n                    *\/\n                    var HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME = MODULE_CLASS_NAME + \" .aplus-horizontal-scroll-container-\" + MODULE_ID;\n\n                    function showCarouselText(oldIndex, newIndex) {\n                        var oldClass = TEXT_CONTAINER_CLASS_NAME + \"-\" + oldIndex;\n                        var newClass= TEXT_CONTAINER_CLASS_NAME + \"-\" + newIndex;\n                        $(oldClass).addClass(TEXT_CONTAINER_HIDDEN);\n                        $(newClass).removeClass(TEXT_CONTAINER_HIDDEN);\n                    }\n\n                    function scrollToCarouselButton(scrollLeft) {\n                        if ($(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).length) {\n                            $(HORIZONTAL_SCROLL_CONTAINER_CLASS_NAME).animate({scrollLeft}, 200);\n                        }\n                    }\n\n                    \/**\n                    * Creates a CarouselButton class for provided carousel instance\n                    * @param {object} carousel - AUI Carousel instance\n                    * @returns {Class} - CarouselButton Class\n                    *\/\n                    function CarouselButtonTemplate(carousel) {\n                        \/**\n                        * Button for controlling the active slide\n                        * @constructor\n                        * @param {number} index - slide index\n                        * @param {DOMElement} [elem] - optional DOM element to use as this objects DOM representation\n                        *\/\n                        function CarouselButton(index, elem) {\n                            var self = this;\n                            this.index = index;\n                            this.carousel = carousel;\n\n                            \/* create the button element *\/\n                            this.elem = this.getElem(elem);\n                            this.$elem = $(this.elem);  \/* store jquery version *\/\n                            this.elem.addEventListener('click', self.handleClick.bind(self));\n                            this.elem.setAttribute('role', 'tab');\n\n                            \/* add this object to the object manager *\/\n                            CarouselButton.objects.byId[index] = this;\n                            CarouselButton.objects.all.push(this);\n                        }\n\n                        \/**\n                        * Describe behavior for click events on this.elem\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.handleClick = function(e) {\n                            e.preventDefault();\n                            this.carousel.gotoPage(this.index);\n                        };\n\n                        \/**\n                        * Enter active state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.activate = function() {\n                            this.$elem.addClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'true');\n                        };\n\n                        \/**\n                        * Enter inactive state\n                        * @memberOf CarouselButton\n                        *\/\n                        CarouselButton.prototype.deactivate = function() {\n                            this.$elem.removeClass(GOTO_BTN_ACTIVE_CLASS_NAME).attr('aria-selected', 'false');\n                        };\n\n                        \/**\n                        * Returns an existing or creates a new bound element for this object\n                        * @memberOf CarouselButton\n                        * @param {DOMElement} [elem] - optionally provide an existing element in the DOM to use\n                        * @returns {DOMElement} - this objects DOM representation\n                        *\/\n                        CarouselButton.prototype.getElem = function(elem) {\n                            if (this.elem) return this.elem;\n                            if (elem) return elem;\n\n                            var createdElem = document.createElement('span');\n                            createdElem.className = GOTO_BTN_CLASS_NAME;\n\n                            return createdElem;\n                        };\n\n                        \/** @const Object manager *\/\n                        CarouselButton.objects = {\n                            byId: {},\n                            all: [],\n                        };\n\n                        return CarouselButton;\n                    }\n\n                    framework.onInit(CAROUSEL_NAME, function(carousel) {\n                        \/** @const {Class} *\/\n                        var CarouselButton = CarouselButtonTemplate(carousel);\n\n                        \/* create carousel controls *\/\n                        var $carouselBtns = $(safeClassSelector(GOTO_BTN_CLASS_NAME));\n                        var btns = $carouselBtns.map(function(i, btnElem) {\n                            return new CarouselButton(i + 1, btnElem);\n                        });\n\n                        \/* activate first one *\/\n                        CarouselButton.objects.byId[1].activate();\n\n                        \/* Listen to slide changes *\/\n                        A.on(\"a:carousel:\" + CAROUSEL_NAME + \":change:pageNumber\", function (data) {\n                            var newCarouselButton = CarouselButton.objects.byId[data.newValue];\n                            var marginLeft = parseInt(getComputedStyle(newCarouselButton.elem).getPropertyValue('margin-left'));\n                            var positionLeft = newCarouselButton.elem.offsetLeft - marginLeft;\n\n                            newCarouselButton.activate();\n                            CarouselButton.objects.byId[data.oldValue].deactivate();\n                            scrollToCarouselButton(positionLeft);\n                            showCarouselText(data.oldValue, data.newValue);\n                        });\n                    });\n\n                    \/**\n                    * @returns {string} - css classname prefixed with module selector\n                    *\/\n                    function safeClassSelector(className) {\n                        return '.' + MODULE_CLASS_NAME + ' .' + className;\n                    }\n                }\n\n                $('.aplus-v2 .premium-aplus-module-12 .aplus-carousel-container').each(function (index, module) {\n                    initiateCarousel(module);\n                });\n                framework.createAll();\n                framework.initializeAll();\n            });\n        }\n    })\n});\n}));\u003c\/script\u003e\n  \u003cdiv class=\"aplus-content-wrapper\"\u003e\n   \u003cdiv class=\"celwidget aplus-module premium-module-8-hero-video aplus-premium\" cel_widget_id=\"aplus-premium-module-8-hero-video\"\u003e\n    \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-8\"\u003e\n     \u003cdiv class=\"a-section a-spacing-none premium-aplus-module-8-video\"\u003e\n      \u003cdiv class=\"a-section a-spacing-none video-placeholder\"\u003e\u003c\/div\u003e\n      \u003cdiv class=\"a-section a-spacing-none video-container\"\u003e\n       \u003cstyle type=\"text\/css\"\u003e\n\n.aplus-v2 .vse-video-player-title,  .aplus-v2 .vse-lightPlayer-vendor{\n    display:none;\n}\n\n#aplus .vse-video-player-title,  #aplus .vse-lightPlayer-vendor{\n    display:none;\n}\n\n\n.aplus-video-player-container {\n    width: 100%;\n    height: 100%;\n    position: relative;\n    z-index: 0;\n}\n\n.aplus-video-player-container .inline-py {\n    border-radius: unset;\n}\n\n\u003c\/style\u003e\n       \u003cdiv id=\"d049b457-d7ea-4dc5-8fdc-649dee7bd146\" style=\"width:100%; height:100%;\"\u003e\n        \u003clink rel=\"stylesheet\" href=\"https:\/\/m.media-amazon.com\/images\/I\/01XyOJGuDTL.css?AUIClients\/VSEPlayer\"\u003e\n        \u003clink rel=\"stylesheet\" href=\"https:\/\/m.media-amazon.com\/images\/I\/51NP-5Gx4JL._RC|11s4jq82GaL.css_.css?AUIClients\/Brila\"\u003e\n        \u003cdiv data-csa-c-component=\"aplus-vse-video-widget\" data-csa-c-content-id=\"amzn1.vse.video.1882b6282e4c4482b2ae347289fb5485\" data-csa-c-cs-type=\"ive\" data-csa-c-painter=\"vse-player\" data-csa-c-slot-id=\"aplus-ive-player\" data-csa-c-type=\"widget\" data-csa-op-log-render=\"\" class=\"a-section vse-player-container\"\u003e\n         \u003cscript type=\"a-state\" data-a-state='{\"key\":\"aplus-74799-player-bbc686fb-4ac8-4c33-ae22-0970fbbf64ee-player-ps\"}'\u003e{\"parentAsin\":\"\",\"enableFullScreenByDefault\":false,\"clickstreamNexusMetricsConfig\":{\"producerId\":\"vsemetrics_playercards\",\"schemaId\":\"clickstream.CustomerEvent.4\",\"actionType\":\"DISCOVERY\",\"eventOwner\":\"vsemetrics_playercards\",\"eventType\":\"IVEVideoView\",\"productId\":\"B0HF599CX6\"},\"videoReferenceId\":\"0871a8e3-06ba-4f48-90a4-d49493ba6127_c4b391ce-e21e-470a-8772-7282ca4d8fce\",\"contentId\":\"B0HF599CX6\",\"ccvDisclosure\":\"\",\"closedCaptionsConfig\":{\"captionsOnTexts\":{\"de\":\"German (Automated)\",\"ja\":\"Japanese (Automated)\",\"en\":\"English (Automated)\",\"fr\":\"French (Automated)\",\"es\":\"Spanish (Automated)\"},\"captionsOffText\":\"Captions off\",\"languageToLabelTexts\":{\"English\":\"English\",\"French\":\"French\",\"German\":\"German\",\"Spanish\":\"Spanish\",\"Japanese\":\"Japanese\"}},\"mimeType\":\"application\/x-mpegURL\",\"videoHeight\":480,\"disableReportIllegalLink\":false,\"videoWidth\":854,\"useHotspotsNX\":false,\"eligibleToTriggerCCWeblab\":false,\"videoUrl\":\"https:\/\/m.media-amazon.com\/images\/S\/vse-vms-transcoding-artifact-eu-west-1-prod\/c0a2a501-f5f4-44a0-b1df-65c5666cbbed\/default.jobtemplate.hls.m3u8\",\"metricsEmissionMethod\":\"nexus\",\"imageUrl\":\"https:\/\/m.media-amazon.com\/images\/I\/91TCEQnSGRL.jpg\",\"needPlayerFactory\":false,\"isMobile\":false,\"showHotspots\":false,\"aciContentId\":\"amzn1.vse.video.1882b6282e4c4482b2ae347289fb5485\",\"altText\":\"415 Combo Black\",\"videoContentId\":\"1882b6282e4c4482b2ae347289fb5485\",\"clientPrefix\":\"aplus-74799\",\"hotSpotsV3Weblab\":\"\",\"productAsin\":\"B0HF599CX6\",\"labelDetails\":{\"labelName\":\"\",\"labelType\":\"\",\"labelWeblabName\":\"\",\"labelWeblabTreatment\":\"\",\"showLabel\":false,\"tooltipSelector\":\"\"},\"sushiMetricsConfig\":{\"eventSource\":\"Player\",\"endpoint\":\"https:\/\/unagi-eu.amazon.com\/1\/events\/com.amazon.eel.vse.metrics.prod.events.test\",\"requestId\":\"CK5C31H3NW19P85AECBJ\",\"sessionId\":\"525-7967386-7253500\",\"customerId\":\"0\",\"refMarkers\":\"aplus-74799_ref\",\"sessionType\":1,\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"marketplaceId\":\"A1RKKUPIHCS9HS\",\"weblabIds\":\"\",\"isInternal\":false,\"isRobot\":false,\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"pageAsin\":\"B0HF599CX6\"},\"reportUrl\":\"\",\"videoTitle\":\"415 Combo Black\",\"vendorName\":\"\",\"nexusMetricsConfig\":{\"eventSource\":\"Player\",\"isInternal\":false,\"playerTSMMetricsSchemaId\":\"vse.VSECardsPlayerEvents.9\",\"widgetMetricsSchemaId\":\"vse.VSECardsEvents.9\",\"producerId\":\"vsemetrics_playercards\",\"refMarkers\":\"aplus-74799_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"weblabIds\":\"\",\"clientId\":\"VSE-GB\",\"videoAsin\":\"1882b6282e4c4482b2ae347289fb5485\",\"videoAsinList\":\"\",\"pageAsin\":\"B0HF599CX6\"},\"awaConfig\":{\"useUpNextComponent\":false,\"clickstreamNexusMetricsConfig\":{\"producerId\":\"vsemetrics_playercards\",\"schemaId\":\"clickstream.CustomerEvent.4\",\"actionType\":\"DISCOVERY\",\"eventOwner\":\"vsemetrics_playercards\",\"eventType\":\"IVEVideoView\",\"productId\":\"B0HF599CX6\"},\"initialVideo\":\"1882b6282e4c4482b2ae347289fb5485\",\"shouldPreload\":true,\"enableClickBasedAttribution\":false,\"isChromelessPlayer\":false,\"closedCaptionsConfig\":{\"captionsOnTexts\":{\"de\":\"German (Automated)\",\"ja\":\"Japanese (Automated)\",\"en\":\"English (Automated)\",\"fr\":\"French (Automated)\",\"es\":\"Spanish (Automated)\"},\"captionsOffText\":\"Captions off\",\"languageToLabelTexts\":{\"English\":\"English\",\"French\":\"French\",\"German\":\"German\",\"Spanish\":\"Spanish\",\"Japanese\":\"Japanese\"}},\"enableDynamicBlur\":false,\"showPlayerPlayButton\":false,\"isVideoImmersivePlayer\":false,\"metricsEmissionMethod\":\"nexus\",\"skipInitialFocus\":false,\"playerSkin\":\"none\",\"disabledViewIds\":[\"replayHint\"],\"includeEarnsComissionDisclosure\":false,\"customerId\":\"0\",\"containerId\":\"aplus-74799-player-bbc686fb-4ac8-4c33-ae22-0970fbbf64ee\",\"allowCrossOrigin\":false,\"requestMetadata\":{\"clientId\":\"VSE-GB\",\"marketplaceId\":\"A1RKKUPIHCS9HS\",\"requestId\":\"CK5C31H3NW19P85AECBJ\",\"sessionId\":\"525-7967386-7253500\",\"method\":\"desktop_web.AplusWidget.aplusdp\",\"pageAsin\":\"\"},\"shouldLoop\":false,\"shouldDisableControls\":false,\"alwaysSetInitialVideo\":true,\"showPlayerCloseButton\":false,\"clientPrefix\":\"aplus-74799\",\"useAutoplayFallback\":false,\"sushiMetricsConfig\":{\"eventSource\":\"Player\",\"endpoint\":\"https:\/\/unagi-eu.amazon.com\/1\/events\/com.amazon.eel.vse.metrics.prod.events.test\",\"requestId\":\"CK5C31H3NW19P85AECBJ\",\"sessionId\":\"525-7967386-7253500\",\"customerId\":\"0\",\"refMarkers\":\"aplus-74799_ref\",\"sessionType\":1,\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"marketplaceId\":\"A1RKKUPIHCS9HS\",\"weblabIds\":\"\",\"isInternal\":false,\"isRobot\":false,\"clientId\":\"VSE-GB\",\"videoAsinList\":\"\",\"pageAsin\":\"B0HF599CX6\"},\"ospLinkCode\":\"vse\",\"showPosterImage\":true,\"languageCode\":\"en\",\"languageLocalization\":{\"play\":\"Play\",\"volumeLevel\":\"Volume Level\",\"subtitles\":\"Subtitles\",\"volumeSlider\":\"Volume Slider\",\"playVideo\":\"Click to play video\",\"fullscreen\":\"Fullscreen\",\"scrubberBar\":\"Scrubber bar\",\"mute\":\"Mute\",\"unmute\":\"Unmute\",\"pause\":\"Pause\",\"captions\":\"Captions\",\"nonfullscreen\":\"Non-Fullscreen\"},\"version\":\"\",\"isMoreVideosButtonEnabled\":false,\"nexusMetricsConfig\":{\"eventSource\":\"Player\",\"isInternal\":false,\"playerTSMMetricsSchemaId\":\"vse.VSECardsPlayerEvents.9\",\"widgetMetricsSchemaId\":\"vse.VSECardsEvents.9\",\"producerId\":\"vsemetrics_playercards\",\"refMarkers\":\"aplus-74799_ref\",\"placementContext\":\"desktop_web.AplusWidget.aplusdp\",\"weblabIds\":\"\",\"clientId\":\"VSE-GB\",\"videoAsin\":\"1882b6282e4c4482b2ae347289fb5485\",\"videoAsinList\":\"\",\"pageAsin\":\"B0HF599CX6\"},\"shouldStartMuted\":false,\"airyVersion\":\"VideoJS\",\"languagePreferenceStrings\":{},\"enableInactiveFocus\":true,\"showVideoInfo\":false,\"isReactFactory\":false,\"osaInstrumentationConfig\":{\"schemaId\":\"csa.VideoInteractions.2\",\"producerId\":\"vsemetrics_csa_instrumentation\"},\"enableDelphiAttribution\":false,\"includeReportWidget\":false,\"shouldAutoplay\":false},\"placement\":\"desktop_web.AplusWidget.aplusdp\"}\u003c\/script\u003e\n         \u003cdiv class=\"vse-airy-container vse-player-container none \"\u003e\n          \u003cdiv id=\"ive-aplus-74799-player-label-container\" data-element-id=\"ive-player-label-container\" class=\"a-section a-spacing-none ive-player-label-container\"\u003e\n           \u003cspan class=\"a-declarative\" data-action=\"a-popover\" data-a-popover='{\"name\":\"ive-aplus-74799-label-type-tooltip\",\"width\":\"300\",\"position\":\"triggerRight\",\"dataStrategy\":\"preload\"}'\u003e\u003ca href=\"javascript:void(0)\" role=\"button\" class=\"a-popover-trigger a-declarative ive-player-label-name aok-hidden\"\u003e\u003ci class=\"a-icon a-icon-popover\"\u003e\u003c\/i\u003e\u003c\/a\u003e\u003c\/span\u003e\n           \u003cdiv class=\"a-popover-preload\" id=\"a-popover-ive-aplus-74799-label-type-tooltip\"\u003e\n            \u003cspan class=\"ive-demo-label-tooltip ive-player-label-tooltip aok-hidden\"\u003eThe video showcases the product in use.\u003c\/span\u003e\u003cspan class=\"ive-assembly-label-tooltip ive-player-label-tooltip aok-hidden\"\u003eThe video guides you through product setup.\u003c\/span\u003e\u003cspan class=\"ive-comparison-label-tooltip ive-player-label-tooltip aok-hidden\"\u003eThe video compares multiple products.\u003c\/span\u003e\u003cspan class=\"ive-unboxing-label-tooltip ive-player-label-tooltip aok-hidden\"\u003eThe video shows the product being unpacked.\u003c\/span\u003e\n           \u003c\/div\u003e\n          \u003c\/div\u003e\n          \u003cdiv id=\"aplus-74799-player-bbc686fb-4ac8-4c33-ae22-0970fbbf64ee\" class=\"vse-player\" data-element-id=\"vse-player-container\"\u003e\u003c\/div\u003e\n         \u003c\/div\u003e\n         \u003ch1 class=\"vse-video-player-title\"\u003e415 Combo Black\u003c\/h1\u003e\n        \u003c\/div\u003e\n        \u003cscript\u003e\n  (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https:\/\/m.media-amazon.com\/images\/I\/61rtJ3+GOOL.js?AUIClients\/VSEPlayer');\n  (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https:\/\/m.media-amazon.com\/images\/I\/3175HHgX+OL._RC|11KFCxsEshL.js,11uNd0zHc-L.js,51ocjucRF0L.js,41tLmUCnr0L.js,91G7VmlBk7L.js,11cPgPsKKOL.js_.js?AUIClients\/Brila');\n\u003c\/script\u003e\n        \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"vse-ns-initVSEPlayerOnLoad\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when('VSEPlayer').execute(function(vsePlayer){vsePlayer.initPlayer('aplus-74799-player-bbc686fb-4ac8-4c33-ae22-0970fbbf64ee-player-ps');});\n    \/\/Please use below event to register FeedbackForm\n    P.when('A', 'VSEComponentAssets').execute('vse-ns-player-initialization', function(A, asset) {\n        A.trigger('vse:ns:player:aplus-74799:init', 'aplus-74799-player-bbc686fb-4ac8-4c33-ae22-0970fbbf64ee-player-ps');\n    });\n}));\u003c\/script\u003e\n       \u003c\/div\u003e\n      \u003c\/div\u003e\n     \u003c\/div\u003e\n     \u003cdiv class=\"a-section a-text-center\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"celwidget aplus-module premium-module-12-nav-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-12-nav-carousel\"\u003e\n    \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12 premium-aplus-module-12--top-nav\"\u003e\n     \u003cdiv data-module-id=\"1\" class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n      \u003cdiv id=\"premium-aplus-12-carousel-1-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-12-carousel-1\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\"\u003e\n       \u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n       \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n        \u003cdiv class=\"a-carousel-row-inner\"\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\n          \u003ca class=\"a-carousel-goto-prevpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-previous-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003ePrevious page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n         \u003c\/div\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n          \u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n           \u003col class=\"a-carousel\" role=\"list\"\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"aplus content image\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/1eef4498-1f5a-4474-a864-45e988cb30af.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"Text reads \u0026amp;#39;From pet for to fine dust, nothing gets left behind.\u0026amp;#39; Robotic vacuum device shown with dog and home interior photos, demonstrating cleaning coverage.\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/7da2075e-70ec-4b4a-bd86-dd1c7f9aa97e.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"aplus content image\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/0e8b5b16-5549-48f0-8992-710263849aed.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"aplus content image\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d8be46a5-b28d-4766-88c8-2d3dbe6cf80f.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n           \u003c\/ol\u003e\n          \u003c\/div\u003e\n         \u003c\/div\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\n          \u003ca class=\"a-carousel-goto-nextpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-next-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003eNext page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n       \u003c\/div\u003e\n       \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv id=\"aplus-carousel-actions-1\" aria-label=\"tablist section\" class=\"a-section aplus-carousel-actions\" role=\"tablist\"\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-1 aplus-active\" role=\"tab\" tabindex=\"0\" aria-selected=\"true\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e1\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003ePowerful Cleaning\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-1 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e2\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003ePet Hair \u0026amp; Deep Cleaning\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-1 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e3\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eAdvanced Mopping\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-1 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e4\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eEdge Cleaning Technology\u003c\/span\u003e\u003c\/button\u003e\n      \u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when('premium-module-12-nav-carousel').execute('invoke-premium-12-nav-carousel-desktop-top', function(init){\n        init();\n    });\n}));\u003c\/script\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"celwidget aplus-module premium-module-12-nav-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-12-nav-carousel\"\u003e\n    \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-12 premium-aplus-module-12--top-nav\"\u003e\n     \u003cdiv data-module-id=\"2\" class=\"a-section a-spacing-none aplus-carousel-container\"\u003e\n      \u003cdiv id=\"premium-aplus-12-carousel-2-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-12-carousel-2\"}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" data-a-display-strategy=\"single\" data-a-transition-strategy=\"slideCircular\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-single a-carousel-transition-slideCircular aplus-image-carousel-container\"\u003e\n       \u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e\n       \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\n        \u003cdiv class=\"a-carousel-row-inner\"\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\n          \u003ca class=\"a-carousel-goto-prevpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-previous-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003ePrevious page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n         \u003c\/div\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\n          \u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\n           \u003col class=\"a-carousel\" role=\"list\"\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"aplus content image\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d0eac2d5-f6f6-4405-b410-c2aa1c2e1bcb.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"Text reads \u0026amp;#39;Always-clean pads for a consistently fresh mop every time\u0026amp;#39; with additional text about cleaning instructions. Mop cleaning pad shown in circular container with blue and white materials.\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/a68717a8-0b55-4c62-bb9b-36f999503886.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"Text reads \u0026amp;#39;46% smaller design\u0026amp;#39; \u0026amp;#39;fits under more furniture.\u0026amp;#39; \u0026amp;#39;Reaches more of your floors.\u0026amp;#39; Comparison diagrams showing floor plan layouts with circular coverage areas demonstrating device footprint efficiency.\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/c8279c6c-cb1c-4c78-b066-27083ddac6aa.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n            \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-card\" aria-setsize=\"4\"\u003e\n             \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e\n              \u003cimg alt=\"Text reads \u0026amp;#34;No pre-clean pickup required—just press clean\u0026amp;#34;. Two-panel image showing cleaning product application: left panel shows product on car seat, right panel shows cleaned surface result.\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/b0296f91-500a-4248-a2e6-635a81b3d4e1.__CR0,0,1464,600_PT0_SX1464_V1___.jpg\"\u003e\n             \u003c\/div\u003e\n            \u003c\/li\u003e\n           \u003c\/ol\u003e\n          \u003c\/div\u003e\n         \u003c\/div\u003e\n         \u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\n          \u003ca class=\"a-carousel-goto-nextpage\" role=\"button\" href=\"#\"\u003e\u003ci class=\"a-icon a-icon-next-rounded\"\u003e\u003cspan class=\"a-icon-alt\"\u003eNext page\u003c\/span\u003e\u003c\/i\u003e\u003c\/a\u003e\n         \u003c\/div\u003e\n        \u003c\/div\u003e\n       \u003c\/div\u003e\n       \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cdiv id=\"aplus-carousel-actions-2\" aria-label=\"tablist section\" class=\"a-section aplus-carousel-actions\" role=\"tablist\"\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-2 aplus-active\" role=\"tab\" tabindex=\"0\" aria-selected=\"true\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e1\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eSelf-Cleaning Station\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-2 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e2\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eAlways Clean Mops\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-2 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e3\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eSlim Design, More Reach\u003c\/span\u003e\u003c\/button\u003e\n       \u003cbutton class=\"aplus-goto-btn aplus-goto-btn-2 \" role=\"tab\" tabindex=\"0\" aria-selected=\"false\"\u003e\u003cspan class=\"aplus-carousel-index\"\u003e4\u003c\/span\u003e \u003cspan class=\"aplus-accent2 aplus-carousel-label\"\u003eSmart Navigation\u003c\/span\u003e\u003c\/button\u003e\n      \u003c\/div\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when('premium-module-12-nav-carousel').execute('invoke-premium-12-nav-carousel-desktop-top', function(init){\n        init();\n    });\n}));\u003c\/script\u003e\n   \u003c\/div\u003e\n   \u003cdiv class=\"celwidget aplus-module premium-module-11-faq aplus-premium\" cel_widget_id=\"aplus-premium-module-11-faq\"\u003e\n    \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-11\"\u003e\n     \u003cdiv data-faq-block=\"3\" class=\"a-section a-spacing-none aplus-container-2 faqs-container 3\"\u003e\n      \u003cul class=\"faq-list\"\u003e\n       \u003cli id=\"faq-qa-pair-0\" class=\"faq-block\"\u003e\n        \u003ch3\u003e\u003cspan data-faq-question role=\"button\" tabindex=\"0\" aria-controls=\"faq-0\" aria-expanded=\"false\"\u003e \n          \u003cp class=\"aplus-question aplus-p1\"\u003eQ: How do I set up the robot?\u003c\/p\u003e \n          \u003cspan class=\"faq-arrow\" aria-label=\"Click to open or close the Question and Answer block\"\u003e\u003c\/span\u003e \n         \u003c\/span\u003e\u003c\/h3\u003e\n        \u003cp class=\"aplus-answer aplus-p2\"\u003eA: Setup is simple. Unbox your robot, place the dock on a hard floor with enough space for navigation and at least 4 feet away from stairs. Download the Roomba Home app, follow the prompts, and your robot will be ready to clean in minutes.\u003c\/p\u003e\n       \u003c\/li\u003e\n       \u003cli id=\"faq-qa-pair-1\" class=\"faq-block\"\u003e\n        \u003ch3\u003e\u003cspan data-faq-question role=\"button\" tabindex=\"0\" aria-controls=\"faq-1\" aria-expanded=\"false\"\u003e \n          \u003cp class=\"aplus-question aplus-p1\"\u003eQ. How well does it mop?\u003c\/p\u003e \n          \u003cspan class=\"faq-arrow\" aria-label=\"Click to open or close the Question and Answer block\"\u003e\u003c\/span\u003e \n         \u003c\/span\u003e\u003c\/h3\u003e\n        \u003cp class=\"aplus-answer aplus-p2\"\u003eA: DualClean mop pads spin at 200RPM to tackle tough messes. SmartScrub moves back and forth with downward pressure to remove stubborn stains. Roomba detects rugs and automatically lifts the mop pad to help keep carpets dry while vacuuming.\u003c\/p\u003e\n       \u003c\/li\u003e\n       \u003cli id=\"faq-qa-pair-2\" class=\"faq-block\"\u003e\n        \u003ch3\u003e\u003cspan data-faq-question role=\"button\" tabindex=\"0\" aria-controls=\"faq-2\" aria-expanded=\"false\"\u003e \n          \u003cp class=\"aplus-question aplus-p1\"\u003eQ: How well does it vacuum?\u003c\/p\u003e \n          \u003cspan class=\"faq-arrow\" aria-label=\"Click to open or close the Question and Answer block\"\u003e\u003c\/span\u003e \n         \u003c\/span\u003e\u003c\/h3\u003e\n        \u003cp class=\"aplus-answer aplus-p2\"\u003eA: Roomba delivers powerful cleaning with 2.8x more intense suction. Flexible rubber and edge-sweeping brushes capture pet hair and dirt along walls and corners, while Carpet Boost boosts power for carpets and hard floors.\u003c\/p\u003e\n       \u003c\/li\u003e\n       \u003cli id=\"faq-qa-pair-3\" class=\"faq-block\"\u003e\n        \u003ch3\u003e\u003cspan data-faq-question role=\"button\" tabindex=\"0\" aria-controls=\"faq-3\" aria-expanded=\"false\"\u003e \n          \u003cp class=\"aplus-question aplus-p1\"\u003eQ: How does the AutoWash Dock work?\u003c\/p\u003e \n          \u003cspan class=\"faq-arrow\" aria-label=\"Click to open or close the Question and Answer block\"\u003e\u003c\/span\u003e \n         \u003c\/span\u003e\u003c\/h3\u003e\n        \u003cp class=\"aplus-answer aplus-p2\"\u003eA: Your robot will return to its dock to auto-empty debris, auto-wash pads as needed during mopping, then washes and heat dries them when cleaning's complete. A self-cleaning cycle pumps water through the dock, washing away any accumulated debris.\u003c\/p\u003e\n       \u003c\/li\u003e\n       \u003cli id=\"faq-qa-pair-4\" class=\"faq-block\"\u003e\n        \u003ch3\u003e\u003cspan data-faq-question role=\"button\" tabindex=\"0\" aria-controls=\"faq-4\" aria-expanded=\"false\"\u003e \n          \u003cp class=\"aplus-question aplus-p1\"\u003eQ: How does the home mapping work?\u003c\/p\u003e \n          \u003cspan class=\"faq-arrow\" aria-label=\"Click to open or close the Question and Answer block\"\u003e\u003c\/span\u003e \n         \u003c\/span\u003e\u003c\/h3\u003e\n        \u003cp class=\"aplus-answer aplus-p2\"\u003eA: ClearView LiDAR scans your home to create up to 3 maps, even on different levels of your home that you can customize in the Roomba Home App. Mapping takes only 9 minutes, and then your robot is ready to navigate smoothly and avoid obstacles.\u003c\/p\u003e\n       \u003c\/li\u003e\n      \u003c\/ul\u003e\n     \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cscript type=\"text\/javascript\"\u003e(function(f) {var _np=(window.P._namespace(\"PremiumAplusModule\"));if(_np.guardFatal){_np.guardFatal(f)(_np);}else{f(_np);}}(function(P) {\n    P.when('premium-module-11-faq').execute('invoke-premium-11-faq', function(init){\n        init();\n    });\n}));\u003c\/script\u003e\n   \u003c\/div\u003e\n  \u003c\/div\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003cdiv\u003e\u003cdiv id=\"feature-bullets\" class=\"a-section a-spacing-medium a-spacing-top-small\"\u003e\n \u003cul class=\"a-unordered-list a-vertical a-spacing-mini\"\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Floors stay clean—because messes never get a chance to build up : Vacuum and mop in one run with DualClean Mop Pads and 20,000 Pa of intense suction—handling crumbs, dust, and spills daily before they turn into bigger messes. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Breaks down messes you’d normally have to scrub : SmartScrub applies extra pressure to tackle dried food, muddy paw prints, and kitchen splatter—so you don’t have to go back and scrub by hand. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Cleans more of your home, including where dirt collects : A 46% slimmer design* fits under more furniture than many robots, while extending brushes pull debris from edges and corners—so dust doesn’t get left behind. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Built for homes with constant pet hair : Tangle-free rubber brushes pull in pet fur without clogging—so you’re not constantly stopping to cut hair off the brush after every run. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Every clean starts with a fresh mop—not yesterday’s dirt : The AutoWash Dock washes and heat dries mop pads at 113°F after every run—helping prevent odor and buildup so floors aren’t cleaned with dirty pads. \u003c\/span\u003e\u003c\/li\u003e\n  \u003cli class=\"a-spacing-mini\"\u003e\u003cspan class=\"a-list-item\"\u003e Cleans hard floors and carpets in one run—without compromise : Automatically detects carpet and lifts mop pads 10mm before crossing rugs—so floors get mopped and carpets stay dry. \u003c\/span\u003e\u003c\/li\u003e\n \u003c\/ul\u003e\n \u003cdiv data-csa-c-content-id=\"voyager-product-details-jumplink\" data-csa-c-slot-id=\"voyager-product-details-jumplink\" data-csa-c-type=\"link\" class=\"a-section aok-hidden\"\u003e\n  \u003cspan class=\"caretnext\"\u003e›\u003c\/span\u003e \u003ca id=\"seeMoreDetailsLink\" class=\"a-link-normal\" href=\"#productDetails\"\u003e See more product details \u003c\/a\u003e\n \u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003cdiv\u003e\u003cdiv class=\"a-section a-spacing-small a-spacing-top-small\"\u003e\n \u003ctable class=\"a-normal a-spacing-micro\" role=\"list\"\u003e\n  \u003ctbody\u003e\n   \u003ctr class=\"a-spacing-small po-brand\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eBrand\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eiRobot\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-surface_recommendation\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eSurface recommendation\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eCarpet\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-special_feature\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eSpecial feature\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eAdvanced Custom Cleaning, Edge Cleaning, LiDAR Navigation, Self-Emptying, Smart Mapping\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-color\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eColour\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003eBlack\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n   \u003ctr class=\"a-spacing-small po-item_length_width_height\" role=\"listitem\"\u003e\n    \u003ctd class=\"a-span3\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base a-text-bold\"\u003eProduct dimensions\u003c\/span\u003e\u003c\/td\u003e\n    \u003ctd class=\"a-span9\" role=\"presentation\"\u003e\u003cspan class=\"a-size-base po-break-word\"\u003e33L x 34W x 48.5H centimetres\u003c\/span\u003e\u003c\/td\u003e\n   \u003c\/tr\u003e\n  \u003c\/tbody\u003e\n \u003c\/table\u003e\n\u003c\/div\u003e\u003c\/div\u003e","brand":"My Store","offers":[{"title":"Default Title","offer_id":58861221904767,"sku":null,"price":449.0,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1040\/9558\/0543\/files\/71U2OIw4X9L._AC_SL1500.jpg?v=1792323644","url":"https:\/\/sweepvia.myshopify.com\/products\/irobot-roomba-plus-415-robot-vacuum-mop-combo-20-000pa-suction-power","provider":"Sweepvia","version":"1.0","type":"link"}