{"product_id":"silicone-travel-bottles-tsa-approved-travel-size-for-toiletry-2oz-ergonomic-grip-leak-proof-refillable-compact-and-portable-sets-with-labels-suitable-for-toiletries-kidney-shaped","title":"Silicone Travel Bottles, TSA Approved Travel Size for Toiletry 2oz | Ergonomic Grip, Leak-Proof, Refillable, Compact and Portable, Sets with Labels, Suitable for Toiletries, Kidney-Shaped","description":"\u003cdiv id=\"aplus\" class=\"a-section a-spacing-large bucket\"\u003e \u003chr noshade size=\"1\" class=\"bucketDivider\"\u003e\n                                  \u003cstyle\u003e\n    .aplus-v2 .aplus-content-wrapper {\n        position: relative;\n        overflow: hidden;\n    }\n\n    .aplus-v2 .container-with-background-image {\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-size: cover;\n    }\n\u003c\/style\u003e\n  \u003cscript type=\"application\/javascript\"\u003e\n    function logShoppableMetrics(moduleName, showsAddToCart) {\n        if (window.ue \u0026amp;\u0026amp; window.ue.count) {\n            window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n        }\n    }\n\u003c\/script\u003e\n\n                                                 \u003ch2\u003eFrom the brand\u003c\/h2\u003e   \u003cdiv lang=\"en_US\"\u003e\n    \u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\u003e\n            \u003cdiv class=\"aplus-content-wrapper\"\u003e\n                                                        \u003cstyle\u003e\n    .aplus-v2 .apm-brand-story-carousel-container {\n        position: relative;\n    }\n\n    .aplus-v2 .apm-brand-story-carousel-hero-container,\n    .aplus-v2 .apm-brand-story-carousel-hero-container \u0026gt; div {\n        position: absolute;\n        width: 100%;\n    }\n\u003c\/style\u003e\n\n    \u003cstyle\u003e\n        \/*\n          Ensuring the carousel takes only the space it needs.\n          The sizes need to be set again on the absolutely positioned elements so they can take up space.\n        *\/\n        .aplus-v2 .apm-brand-story-carousel-container,\n        .aplus-v2 .apm-brand-story-carousel-hero-container {\n            height: 625px;\n            width: 100%;\n            max-width: 1464px;\n            margin-left: auto;\n            margin-right: auto;\n            overflow: hidden;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel-hero-container,\n        .aplus-v2 .apm-brand-story-carousel-hero-container \u0026gt; div {\n            height: 625px;\n        }\n    \u003c\/style\u003e\n   \u003cstyle\u003e\n        .aplus-v2 .apm-brand-story-carousel.a-carousel-container {\n            padding: 0px;\n        }\n\n        \/*\n          This centers the carousel vertically on top of the hero image container and after the logo area (125px).\n          Margin-top = (heroHeight - cardHeight - logoAreaHeight) \/ 2 + logoAreaHeight\n        *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-row-inner {\n            margin-top: 149px;\n        }\n\n        \/*\n          Cards need to have a width set, otherwise they default to 50px or so.\n          All cards must have the same width. The carousel will resize itself so all cards take the width of the largest card.\n          The left margin is for leaving a space between each card.\n        *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-card {\n            width: 362px;\n            margin-left: 30px !important;\n        }\n\n        \/* styling the navigation buttons so they are taller, flush with the sides, and have a clean white background *\/\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right {\n            padding: 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image {\n            border: none;\n            margin: 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner,\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {\n            background: #fff;\n            padding: 20px 6px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-left .a-button-image .a-button-inner {\n            border-radius: 0px 4px 4px 0px;\n        }\n\n        .aplus-v2 .apm-brand-story-carousel .a-carousel-col.a-carousel-right .a-button-image .a-button-inner {\n            border-radius: 4px 0px 0px 4px;\n        }\n    \u003c\/style\u003e\n  \u003cdiv\u003e\n        \u003cdiv class=\"apm-brand-story-carousel-container\"\u003e\n                 \u003cdiv class=\"apm-brand-story-carousel-hero-container\"\u003e\n                             \u003cdiv class=\"celwidget aplus-module brand-story-hero-1-image-logo aplus-brand-story-hero\" cel_widget_id=\"aplus-brand-story-hero-1-image-logo\"\u003e\n             \u003cdiv class=\"apm-brand-story-hero\"\u003e\n    \u003cdiv class=\"apm-brand-story-background-image\"\u003e\n                                              \u003cimg alt=\"US品牌故事背景图-PC\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/6cb5df10-7dbe-4ec2-b0e2-06c6b55ada00.__CR0,339,5000,2135_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e\n\n     \u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n                 \u003c\/div\u003e\n\n                    \u003cdiv id=\"apm-brand-story-carousel\" data-a-carousel-options='{\"minimum_gutter_width\":10,\"show_partial_next\":true,\"name\":\"brand-story-carousel\",\"single_page_align\":\"left\",\"circular\":false}' aria-label=\"Featured content carousel\" aria-roledescription=\"carousel\" role=\"region\" class=\"a-begin a-carousel-container a-carousel-static a-carousel-display-stretchyGoodness a-carousel-transition-slide apm-brand-story-carousel size-cards a-carousel-container\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\u003col class=\"a-carousel\" role=\"list\"\u003e  \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-0\"\u003e   \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-1\"\u003e           \u003cdiv class=\"celwidget aplus-module brand-story-card-3-about aplus-brand-story-card\" cel_widget_id=\"aplus-brand-story-card-3-about\"\u003e\n             \u003cdiv class=\"apm-brand-story-card\"\u003e\n    \u003cdiv class=\"apm-brand-story-logo-image\"\u003e\n                                              \u003cimg alt=\"\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/3f112536-9156-4769-b02b-399d04a2ff4c.__CR0,0,4955,2281_PT0_SX315_V1___.jpg\"\u003e  \u003c\/div\u003e\n    \u003cdiv class=\"apm-brand-story-slogan-text\"\u003e\n                                                \u003ch3\u003e Meet Cryslora \u003c\/h3\u003e                                      \u003cp\u003e We’re a small startup team full of innovation and passion. The Brand name Cryslora comes from founder Cristina's pursuit of \"crystalline beauty\" - \"Crys\" for crystal clarity, \"lora\" from the Latin \"to bloom\". This isn't just a brand name, but Cristina's aesthetic manifesto. \u003c\/p\u003e     \u003cp\u003e This is Cryslora's promise: No gimmicks, just honest quality. As Cristina believes: “Real innovation isn't about adding features, but solving overlooked fundamentals.” \u003c\/p\u003e    \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/li\u003e    \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-2\"\u003e           \u003cdiv class=\"celwidget aplus-module brand-story-card-1-four-asin aplus-brand-story-card\" cel_widget_id=\"aplus-brand-story-card-1-four-asin\"\u003e\n                  \u003cdiv class=\"apm-brand-story-card\"\u003e\n    \u003cdiv class=\"apm-brand-story-image-grid\" role=\"list\"\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003c\/div\u003e\n\n      \u003cdiv class=\"apm-brand-story-text apm-brand-story-text-single\"\u003e\n                                                     \u003ch3\u003e Refillable Container Products \u003c\/h3\u003e      \u003c\/div\u003e\n     \u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/li\u003e    \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-3\"\u003e           \u003cdiv class=\"celwidget aplus-module brand-story-card-1-four-asin aplus-brand-story-card\" cel_widget_id=\"aplus-brand-story-card-1-four-asin\"\u003e\n                  \u003cdiv class=\"apm-brand-story-card\"\u003e\n    \u003cdiv class=\"apm-brand-story-image-grid\" role=\"list\"\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003cdiv class=\"apm-brand-story-image-grid-item\" role=\"listitem\"\u003e\n                 \u003c\/div\u003e\n         \u003c\/div\u003e\n\n      \u003cdiv class=\"apm-brand-story-text apm-brand-story-text-single\"\u003e\n                                                     \u003ch3\u003e Refillable Container Sets \u003c\/h3\u003e      \u003c\/div\u003e\n     \u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/li\u003e    \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-4\"\u003e           \u003cdiv class=\"celwidget aplus-module brand-story-card-4-questions aplus-brand-story-card\" cel_widget_id=\"aplus-brand-story-card-4-questions\"\u003e\n            \u003cdiv class=\"apm-brand-story-card\"\u003e\n    \u003cdiv class=\"apm-brand-story-faq\"\u003e\n       \u003cdiv class=\"apm-brand-story-faq-block\"\u003e\n                                                        \u003ch4\u003e Our Mission \u003c\/h4\u003e                                      \u003cp\u003e Glow smarter, not harder. We make crystal-clear beauty tools for your real-life hustle. \u003c\/p\u003e    \u003c\/div\u003e\n            \u003cdiv class=\"apm-brand-story-faq-block\"\u003e\n                                                        \u003ch4\u003e Why We Love What We Do \u003c\/h4\u003e                                      \u003cp\u003e We believe beauty tools should spark joy, not frustration. We pour our passion into every product—so your routine feels effortless, your results speak for themselves, and your confidence shines as bright as you deserve. \u003c\/p\u003e    \u003c\/div\u003e\n            \u003cdiv class=\"apm-brand-story-faq-block\"\u003e\n                                                        \u003ch4\u003e Tools That Love You Back \u003c\/h4\u003e                                      \u003cp\u003e Because beauty shouldn't be a battle. Every Cryslora product is designed to care for you as much as you care for your look—gentle on your skin, kind to your routine, and faithful to your beauty vision. \u003c\/p\u003e    \u003c\/div\u003e\n          \u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/li\u003e    \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card apm-brand-story-carousel-card-5\"\u003e           \u003cdiv class=\"celwidget aplus-module brand-story-card-2-media-asset aplus-brand-story-card\" cel_widget_id=\"aplus-brand-story-card-2-media-asset\"\u003e\n             \u003cdiv class=\"apm-brand-story-card\"\u003e\n    \u003cdiv class=\"apm-brand-story-background-image\"\u003e\n                                              \u003cimg alt=\"\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/4e291fd5-3f80-4f28-8b4d-ef1857de260f.__CR0,373,3000,3754_PT0_SX362_V1___.jpg\"\u003e  \u003c\/div\u003e\n\n     \u003cdiv class=\"apm-brand-story-text-bottom\"\u003e\n                                                    \u003ch3\u003e We Look Forward to Your Voice \u003c\/h3\u003e                                      \u003cp\u003e At Cryslora, we don't just listen—we evolve. Your feedback matters. \u003c\/p\u003e    \u003c\/div\u003e\n     \u003c\/div\u003e\n\u003cdiv style=\"clear:both\"\u003e\u003c\/div\u003e\n   \u003c\/div\u003e\n \u003c\/li\u003e   \u003c\/ol\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e \u003c\/div\u003e\n        \u003cdiv class=\"aplus-brandstory-pagination\"\u003e\n             \u003c\/div\u003e\n    \u003c\/div\u003e\n \u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e    \u003c\/div\u003e                               \u003cdiv id=\"aplus\" class=\"a-section a-spacing-large bucket\"\u003e \u003chr noshade size=\"1\" class=\"bucketDivider\"\u003e\n                                  \u003cstyle\u003e\n    .aplus-v2 .aplus-content-wrapper {\n        position: relative;\n        overflow: hidden;\n    }\n\n    .aplus-v2 .container-with-background-image {\n        width: 100%;\n        height: 100%;\n        background-repeat: no-repeat;\n        background-size: cover;\n    }\n\u003c\/style\u003e\n  \u003cscript type=\"application\/javascript\"\u003e\n    function logShoppableMetrics(moduleName, showsAddToCart) {\n        if (window.ue \u0026amp;\u0026amp; window.ue.count) {\n            window.ue.count(\"aplus:shoppable:\" + moduleName + \":addToCart\", showsAddToCart ? 1 : 0);\n        }\n    }\n\u003c\/script\u003e\n\n                                               \u003ch2\u003eProduct description\u003c\/h2\u003e   \u003cdiv lang=\"en_US\"\u003e\n    \u003cdiv class=\"aplus-v2 desktop celwidget\" cel_widget_id=\"aplus\"\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 \u0026amp;\u0026amp; event.keyCode === ENTER_KEY_CODE;\n        const isSpace = isKeydown \u0026amp;\u0026amp; event.keyCode === SPACE_KEY_CODE;\n        const isEsc = isKeydown \u0026amp;\u0026amp; 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      \u003cdiv class=\"aplus-content-wrapper\"\u003e\n                            \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                     \u003cimg alt=\"Elevate your travel routine\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/82958f22-5f37-4a75-bbcd-6ac2c02dff23.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n\n         \u003cdiv class=\"celwidget aplus-module premium-module-13-carousel aplus-premium\" cel_widget_id=\"aplus-premium-module-13-carousel\"\u003e\n                                                                    \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-13\"\u003e                                     \u003cdiv class=\"a-section a-spacing-none aplus-carousel-container\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-id\" data-a-carousel-options='{\"peek_percentage\":0,\"minimum_gutter_width\":0,\"show_partial_next\":false,\"name\":\"premium-aplus-13-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\"\u003e\n\u003cinput autocomplete=\"on\" type=\"hidden\" class=\"a-carousel-firstvisibleitem\"\u003e  \u003cdiv class=\"a-row a-carousel-controls a-carousel-row a-carousel-has-buttons a-carousel-overlay-buttons a-carousel-rounded-buttons\"\u003e\u003cdiv class=\"a-carousel-row-inner\"\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-left\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-center\"\u003e\u003cdiv class=\"a-carousel-viewport\" aria-roledescription=\"slide\"\u003e\u003col class=\"a-carousel\" role=\"list\"\u003e     \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-0\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                         \u003cimg alt=\"throw it in your bag\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/d756af1a-a3ba-47f6-a1d2-ea0a4baa788b.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e      \u003cli aria-roledescription=\"slide\" class=\"a-carousel-card aplus-carousel-element\" aria-setsize=\"2\"\u003e \u003cdiv id=\"premium-aplus-13-carousel-1-slide-1\"\u003e\n                                         \u003cdiv class=\"a-section a-spacing-none aplus-card-image\"\u003e                                         \u003cimg alt=\"effortless squeeze\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/691b50cd-5766-4d1b-8ff1-7d92c7aa3660.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e    \u003c\/div\u003e   \u003c\/div\u003e\n                            \u003c\/li\u003e                   \u003c\/ol\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv class=\"a-carousel-col a-carousel-right\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e \u003cspan class=\"a-end aok-hidden\"\u003e\u003c\/span\u003e\n\u003c\/div\u003e \u003cdiv class=\"a-section a-spacing-none aplus-pagination-wrapper\"\u003e      \u003cscript\u003e\n\nP.now(\"premium-aplus-13-carousel-1\").execute(\"init-pagination-carousel\", function(init) {\n    if (init) {\n        return;\n    }\n    P.register(\"premium-aplus-13-carousel-1\", function() {\n        return function() {\n            P.when(\"A\", \"jQuery\", \"a-carousel-framework\", \"ready\").execute(\"paginate-carousel\", function (A, $, framework) {\n                const ENTER_KEY_CODE = 13;\n                const ESCAPE_KEY_CODE = 27;\n                const LEFT_ARROW_KEY = 37;\n                const RIGHT_ARROW_KEY = 39;\n                const HOME_KEY = 36;\n                const END_KEY = 35;\n\n                var moduleId = \"1\";\n                var carouselName = \"premium-aplus-13-carousel-1\";\n                var paginationAction = \"aplus-pagination-dot-action-\" + moduleId + \"-\" + carouselName;\n                var paginationGroup = \"#aplus-pagination-group-\" + moduleId + \"-\" + carouselName;\n\n                \/* If the carousel goes to a new page *\/\n                A.on(\"a:carousel:\"+carouselName+\":change:pageNumber\", function (data) {\n                    A.$(paginationGroup+\" .carousel-slider-circle\").removeClass(\"aplus-carousel-active\").attr('aria-selected', 'false').attr('tabindex', -1)\n                                    .eq(data.newValue - 1).addClass(\"aplus-carousel-active\").attr('aria-selected', 'true').attr('tabindex', 0);\n                });\n\n                function syncPaginationDotsWithCarouselPages(numPages) {\n                    const parentElement = document.querySelector(paginationGroup);\n                    if (parentElement \u0026amp;\u0026amp; parentElement.children) {\n                        const children = parentElement.children;\n                        for (let i = 0; i \u0026lt; children.length; i++) {\n                            if (i \u0026gt;= numPages) {\n                                \/\/ If number of dots \u0026gt; num of pages, we should hide other dots\n                                children[i].classList.add('aplus-pagination-dot--display-none');\n                            } else if (children[i].classList.contains('aplus-pagination-dot--display-none')) {\n                                \/\/ Reset display of dots if it was hidden before\n                                children[i].classList.remove('aplus-pagination-dot--display-none');\n                            }\n                        }\n                    }\n                }\n\n                framework.onInit(carouselName, function (carousel) {\n                    try {\n                        var totalPages = carousel.getAttr('totalPages');\n                        syncPaginationDotsWithCarouselPages(totalPages);\n                        \/* Resize event handler to re-calculate the pagination dots count based on orientation *\/\n                        window.addEventListener('resize', function() {\n                            carousel.resize();\n                            totalPages = carousel.getAttr('totalPages');\n                            syncPaginationDotsWithCarouselPages(totalPages);\n                        });\n\n                        A.declarative(paginationAction, 'click keydown', function(event){\n                            var isClick = event.type === 'click';\n                            var isKeydown = event.type === 'keydown';\n                            var isEnter = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ENTER_KEY_CODE;\n                            var isEsc = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === ESCAPE_KEY_CODE;\n                            var isLeftArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === LEFT_ARROW_KEY;\n                            var isRightArrow = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === RIGHT_ARROW_KEY;\n                            var isHome = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === HOME_KEY;\n                            var isEnd = isKeydown \u0026amp;\u0026amp; event.$event.keyCode === END_KEY;\n\n                            if (isClick || isEnter) {\n                                var data = event.data;\n                                carousel.gotoPage(data.page);\n                            } else if (isEsc) {\n                                event.$target.blur();\n                            } else if (isLeftArrow || isRightArrow || isHome || isEnd) {\n                                event.$event.preventDefault();\n                                const dots = A.$(paginationGroup + \" .carousel-slider-circle\");\n                                const currentIndex = dots.index(event.$target);\n                                let nextIndex;\n\n                                if (isLeftArrow) {\n                                    nextIndex = currentIndex \u0026gt; 0 ? currentIndex - 1 : dots.length - 1;\n                                } else if (isRightArrow) {\n                                    nextIndex = currentIndex \u0026lt; dots.length - 1 ? currentIndex + 1 : 0;\n                                } else if (isHome) {\n                                    nextIndex = 0;\n                                } else if (isEnd) {\n                                    nextIndex = dots.length - 1;\n                                }\n\n                                dots.eq(nextIndex).focus();\n                                carousel.gotoPage(nextIndex + 1);\n                            }\n                        });\n                    } catch (e) {\n                        P.log('Failed to init ' + carouselName + '. Error: ' + e.message, 'FATAL', 'AplusModuleResources');\n                    }\n                });\n            });\n        }\n    });\n});\n\u003c\/script\u003e\n     \u003cdiv class=\"aplus-mantle aplus-module\"\u003e\n        \u003cdiv class=\"aplus-carousel-nav\"\u003e\n            \u003cul id=\"aplus-pagination-group-1-premium-aplus-13-carousel-1\" class=\"aplus-pagination-dots\" aria-label=\"tablist-section\" role=\"tablist\"\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block aplus-carousel-active\" aria-selected=\"true\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 1}' aria-label=\"slide-1\" aria-controls=\"premium-aplus-13-carousel-1-slide-0\" tabindex=\"0\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                  \u003cli class=\"aplus-pagination-dot\"\u003e\n                        \u003cspan class=\"a-declarative carousel-slider-circle aplus-display-inline-block \" aria-selected=\"false\" data-action=\"aplus-pagination-dot-action-1-premium-aplus-13-carousel-1\" data-aplus-pagination-dot-action-1-premium-aplus-13-carousel-1='{\"page\": 2}' aria-label=\"slide-2\" aria-controls=\"premium-aplus-13-carousel-1-slide-1\" tabindex=\"-1\" role=\"tab\"\u003e\u003c\/span\u003e\n                    \u003c\/li\u003e\n                 \u003c\/ul\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n \u003c\/div\u003e \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n\n         \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                     \u003cimg alt=\"clear and clean\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e56285f5-ed94-4ad6-90a3-6b2b064057e0.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n\n         \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                     \u003cimg alt=\"the cashew curve\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/e032e5d0-a573-48a2-ac6a-f41115185e53.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n\n         \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                     \u003cimg alt=\"travel smarter,pack better\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/046ac619-04be-4329-8bad-6355aba62b56.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n\n         \u003cdiv class=\"celwidget aplus-module premium-module-2-fullbackground-image aplus-premium\" cel_widget_id=\"aplus-premium-module-2-fullbackground-image\"\u003e\n                             \u003cdiv class=\"a-section a-spacing-none premium-aplus premium-aplus-module-2\"\u003e                                   \u003cdiv class=\"a-section a-spacing-none premium-background-wrapper\"\u003e  \u003cdiv class=\"a-section a-spacing-none background-image\"\u003e                                     \u003cimg alt=\"4-pack 4-color\" src=\"https:\/\/m.media-amazon.com\/images\/S\/aplus-media-library-service-media\/07071de2-6175-43e7-a072-cb8f4eef6f92.__CR0,0,2928,1200_PT0_SX1464_V1___.jpg\"\u003e  \u003c\/div\u003e   \u003c\/div\u003e \u003cdiv class=\"a-section a-text-center\"\u003e                                  \u003c\/div\u003e \u003c\/div\u003e      \u003c\/div\u003e\n\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 \u003cdiv data-faq-block=\"6\" class=\"a-section a-spacing-none aplus-container-2 faqs-container 6\"\u003e  \u003cul class=\"faq-list\"\u003e\n                    \u003cli id=\"faq-qa-pair-0\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-0\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Are these approved for carry-on, and how do I organize them for airport security? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Yes. Each bottle is 60ml (2oz), meeting TSA 3-1-1 rules. The 4-piece set fits in the included clear pouch for fast airport screening. Agents see contents instantly without opening your bag. Suitable for carry-on on all flights worldwide. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-1\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-1\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Do they leak during travel or with pressure changes? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e No. The secure screw-on cap with tight seal withstands cabin pressure and rough baggage handling. Fill to 90% capacity to allow for expansion. The included clear pouch provides extra protection against any unlikely drips, keeping your luggage clean. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-2\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-2\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Can I use them for thick liquids like conditioner or hair masks? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Absolutely. The squeezable plastic body dispenses thick formulas like conditioner and hair masks. Simply fill directly from your home-size bottles. Rinse with warm soapy water when switching products; the smooth interior resists residue buildup. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-3\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-3\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e How do I label or identify different products? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e The set includes color-coded bottles in pastel shades for instant visual recognition. Plus, adhesive label stickers let you clearly mark each bottle with contents like \"Shampoo\". No more guessing which product is which during your morning routine. \u003c\/p\u003e    \u003c\/li\u003e\n                         \u003cli id=\"faq-qa-pair-4\" class=\"faq-block\"\u003e\n                            \u003ch3\u003e\n                                \u003cspan data-faq-question=\"\" role=\"button\" tabindex=\"0\" aria-controls=\"faq-4\" aria-expanded=\"false\"\u003e\n                                                                      \u003cp class=\"aplus-question aplus-p1\"\u003e Are they easy to fill and clean? \u003c\/p\u003e    \u003cspan class=\"faq-arrow\" aria-label=\"\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e  \n                            \u003c\/h3\u003e\n                                                              \u003cp class=\"aplus-answer aplus-p2\"\u003e Yes. Fill directly from standard-size toiletry bottles with minimal mess. The lightweight plastic is easy to handle and rinse clean with warm water. The smooth interior has no trapped corners. Hand washing is recommended to preserve label stickers. \u003c\/p\u003e    \u003c\/li\u003e\n                      \u003c\/ul\u003e\n        \u003c\/div\u003e \u003c\/div\u003e  \u003c\/div\u003e\n\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e    \u003c\/div\u003e                               ","brand":"我的商店","offers":[{"title":"Default Title","offer_id":52073930391873,"sku":null,"price":5.99,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0998\/1883\/2193\/files\/51or5vhBSbL._AC_SL1000.jpg?v=1786433292","url":"https:\/\/www.calverella.com\/products\/silicone-travel-bottles-tsa-approved-travel-size-for-toiletry-2oz-ergonomic-grip-leak-proof-refillable-compact-and-portable-sets-with-labels-suitable-for-toiletries-kidney-shaped","provider":"Nuvella Travel","version":"1.0","type":"link"}