{"product_id":"5-oat-oil-gentle-makeup-sunscreen-cleansing-balm","title":"5% Oat Oil Gentle Makeup \u0026 Sunscreen Cleansing Balm","description":"\u003cstyle\u003e\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Oswald:wght@500;600;700\u0026family=Inter:wght@400;500;600\u0026display=swap');\n\n.bwc-page{background:transparent;font-family:'Inter',Arial,Helvetica,sans-serif;color:#3a2a2c;padding:0;margin:0;-webkit-font-smoothing:antialiased}\n.bwc-page *{box-sizing:border-box}\n.bwc-page .bwc-container{max-width:100%;width:100%;margin:0;padding:0}\n.bwc-page .bwc-card{background:transparent;border:none;padding:0;overflow:hidden}\n\n.bwc-page .bwc-teeth{display:block!important;height:16px!important;width:100%!important;background:\n  linear-gradient(135deg,#c97b93 25%,transparent 25%) 0 0\/16px 16px,\n  linear-gradient(225deg,#c97b93 25%,transparent 25%) 0 0\/16px 16px,\n  transparent!important;}\n.bwc-page .bwc-teeth.inv{background:\n  linear-gradient(135deg,#fff 25%,transparent 25%) 0 0\/16px 16px,\n  linear-gradient(225deg,#fff 25%,transparent 25%) 0 0\/16px 16px,\n  #c97b93!important;}\n\n.bwc-page .bwc-top{padding:26px 26px 0}\n.bwc-page .bwc-eyebrow{font-family:'Oswald',sans-serif;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:#a97286;text-align:center;margin:0 0 8px}\n.bwc-page .bwc-h1{font-family:'Oswald',sans-serif;font-weight:700;font-size:32px;text-align:center;color:#3a2a2c;margin:0 0 18px;line-height:1.14;letter-spacing:-.2px;text-transform:uppercase}\n\n.bwc-page .bwc-hero{background:#c97b93;color:#fff;padding:28px 24px;margin:0;position:relative}\n.bwc-page .bwc-hero p{margin:0;opacity:.92;line-height:1.7;font-size:15px;color:#fff!important}\n\n.bwc-page .bwc-img-wrap{width:100%;margin:0;overflow:hidden;background:transparent}\n.bwc-page .bwc-img-wrap img{width:100%;height:auto;display:block;margin:0}\n\n.bwc-page .bwc-body{padding:0 26px}\n\n.bwc-page .bwc-section-title{font-family:'Oswald',sans-serif;font-weight:700;font-size:22px;text-transform:uppercase;letter-spacing:.02em;color:#3a2a2c;margin:38px 0 6px;padding-bottom:12px;border-bottom:3px solid #c97b93;line-height:1.2}\n.bwc-page .bwc-lead{font-size:15px;line-height:1.75;color:#5a4448;margin:0 0 18px}\n\n.bwc-page .bwc-carousel{position:relative;margin:22px 0 30px}\n.bwc-page .bwc-carousel-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding:4px 4px 14px;scrollbar-width:none;-ms-overflow-style:none}\n.bwc-page .bwc-carousel-track::-webkit-scrollbar{display:none}\n.bwc-page .bwc-carousel-slide{flex:0 0 100%;max-width:100%;scroll-snap-align:start;background:transparent;display:flex;flex-direction:column}\n.bwc-page .bwc-carousel-imgs{display:flex}\n.bwc-page .bwc-carousel-imgs img{flex:1 1 0;width:100%;height:auto;display:block;aspect-ratio:1\/1;object-fit:cover;min-width:0}\n.bwc-page .bwc-carousel-text{padding:18px;flex:1;background:transparent}\n.bwc-page .bwc-carousel-num{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:#c97b93;color:#fff;font-family:'Oswald',sans-serif;font-size:12px;font-weight:600;margin-bottom:10px}\n.bwc-page .bwc-carousel-text h3{margin:0 0 6px;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.01em;font-size:15px;color:#3a2a2c;font-weight:600;line-height:1.3}\n.bwc-page .bwc-carousel-text p{margin:0;color:#5a4448;font-size:13px;line-height:1.6}\n.bwc-page .bwc-carousel-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:12px}\n.bwc-page .bwc-carousel-arrow{width:36px;height:36px;border:2px solid #c97b93;background:transparent;color:#c97b93;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:17px;flex-shrink:0;padding:0;line-height:1}\n.bwc-page .bwc-carousel-arrow:hover{background:#c97b93;color:#fff}\n.bwc-page .bwc-carousel-dots{display:flex;gap:8px}\n.bwc-page .bwc-carousel-dot{width:8px;height:8px;border-radius:50%;background:#f0d6de;cursor:pointer;transition:background .2s;padding:0;border:0}\n.bwc-page .bwc-carousel-dot.active{background:#c97b93}\n\n.bwc-page .bwc-review-title{font-family:'Oswald',sans-serif;font-size:14.5px;font-weight:600;text-transform:uppercase;letter-spacing:.01em;color:#3a2a2c;margin:0 0 6px}\n.bwc-page .bwc-review-quote{font-size:13px;line-height:1.6;color:#5a4448;margin:0 0 8px;font-style:italic}\n.bwc-page .bwc-review-name{font-family:'Oswald',sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#3a2a2c;font-weight:600}\n\n.bwc-page .bwc-review-carousel-slide{flex:0 0 100%;max-width:100%;scroll-snap-align:start}\n.bwc-page .bwc-review-mini{padding:12px 14px;background:transparent}\n.bwc-page .bwc-review-mini .bwc-review-title{font-size:13px;margin-bottom:6px}\n.bwc-page .bwc-review-mini .bwc-review-quote{font-size:13px;line-height:1.6;margin-bottom:0}\n\n.bwc-page .bwc-media-block{margin:22px 0 6px;overflow:hidden;background:transparent}\n.bwc-page .bwc-media-block img,.bwc-page .bwc-media-block video{width:100%;height:auto;display:block}\n\n.bwc-page .bwc-spec{margin-top:36px;background:#c97b93;padding:0}\n.bwc-page .bwc-spec h2{color:#fff;margin:0;padding:20px 24px;font-size:19px;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid #d894a8}\n.bwc-page .bwc-table{width:100%;border-collapse:collapse;background:transparent}\n.bwc-page .bwc-table tr:nth-child(odd) td{background:#fef6f7}\n.bwc-page .bwc-table tr:nth-child(even) td{background:#ffffff}\n.bwc-page .bwc-table td{padding:14px 20px;border-bottom:1px solid #f3e2e6;vertical-align:top;line-height:1.5;font-size:14.5px;color:#3a2a2c}\n.bwc-page .bwc-table tr:last-child td{border-bottom:0}\n.bwc-page .bwc-table td:first-child{font-family:'Oswald',sans-serif;font-weight:600;text-transform:uppercase;letter-spacing:.02em;color:#a97286;width:34%;font-size:12.5px}\n\n.bwc-page .bwc-faq{margin-top:36px}\n.bwc-page .bwc-faq-item{border-bottom:1px solid #f3e2e6;padding:16px 2px}\n.bwc-page .bwc-faq-item:first-child{padding-top:0}\n.bwc-page .bwc-faq-q{font-family:'Oswald',sans-serif;font-size:14.5px;text-transform:uppercase;letter-spacing:.01em;color:#3a2a2c;font-weight:600;margin:0;display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;padding:0;cursor:pointer;text-align:left}\n.bwc-page .bwc-faq-q .qmark{flex:0 0 auto;width:22px;height:22px;border-radius:50%;background:#c97b93;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-family:'Oswald',sans-serif}\n.bwc-page .bwc-faq-q .qtext{flex:1}\n.bwc-page .bwc-faq-q .bwc-faq-toggle{flex:0 0 auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;color:#c97b93;transition:transform .2s}\n.bwc-page .bwc-faq-item.open .bwc-faq-q .bwc-faq-toggle{transform:rotate(45deg)}\n.bwc-page .bwc-faq-a{font-size:14px;line-height:1.65;color:#5a4448;margin:8px 0 0;padding-left:32px;display:none}\n.bwc-page .bwc-faq-item.open .bwc-faq-a{display:block}\n\n.bwc-page .bwc-cta{margin-top:36px;background:#c97b93;color:#fff;padding:40px 24px;text-align:center}\n.bwc-page .bwc-cta h2{margin:0 0 12px;font-size:24px;line-height:1.25;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.02em;font-weight:700;color:#fff!important}\n.bwc-page .bwc-cta p{margin:0 auto 22px;line-height:1.65;max-width:560px;opacity:.92;font-size:14.5px;color:#fff!important}\n.bwc-page .bwc-btn{display:inline-block;background:#fff;color:#c97b93!important;padding:15px 40px;font-family:'Oswald',sans-serif;font-size:15px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;border:2px solid #fff;cursor:pointer}\n.bwc-page .bwc-cta-form{margin:0;display:inline-block}\n\n.bwc-page .bwc-bottom-pad{height:26px}\n\n@media(max-width:768px){\n.bwc-page .bwc-container{padding:0}\n.bwc-page .bwc-top{padding:20px 16px 0}\n.bwc-page .bwc-body{padding:0 16px}\n.bwc-page .bwc-h1{font-size:24px}\n.bwc-page .bwc-hero{padding:20px 16px}\n.bwc-page .bwc-section-title{font-size:19px;margin-top:30px}\n.bwc-page .bwc-carousel-slide{flex:0 0 100%;max-width:100%}\n.bwc-page .bwc-carousel-track{gap:0}\n.bwc-page .bwc-table td{display:block;width:100%;padding:10px 16px}\n.bwc-page .bwc-table td:first-child{width:100%;border-bottom:0;padding-bottom:2px}\n.bwc-page .bwc-faq-a{padding-left:0;margin-top:6px}\n.bwc-page .bwc-btn{display:block;width:100%;text-align:center}\n}\n\u003c\/style\u003e\n\n\u003cdiv class=\"bwc-page\"\u003e\n\u003cdiv class=\"bwc-container\"\u003e\n\u003cdiv class=\"bwc-card\"\u003e\n\n\u003c!-- ① 标题区 --\u003e\n\u003cdiv class=\"bwc-top\"\u003e\n\u003cp class=\"bwc-eyebrow\"\u003eCleansing Balm\u003c\/p\u003e\n\u003ch1 class=\"bwc-h1\"\u003eMelt Away Makeup. Leave Skin Comfortably Soft.\u003c\/h1\u003e\n\u003c\/div\u003e\n\n\u003c!-- ② Hero 横幅 --\u003e\n\u003cdiv class=\"bwc-hero\"\u003e\n\u003cp\u003eA nourishing cleansing balm designed to effortlessly dissolve makeup, sunscreen, and daily buildup without leaving skin feeling tight or stripped. The silky balm melts into a lightweight oil upon application, then transforms into a milky emulsion when rinsed with water.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-teeth\"\u003e\u003c\/div\u003e\n\n\u003c!-- ③ 主图：请替换为你自己的产品图 --\u003e\n\u003cdiv class=\"bwc-img-wrap\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/1_9.webp?v=1786434525\" alt=\"Oat kernel oil cleansing balm main photo\"\u003e\n\u003c\/div\u003e\n\n\u003c!-- ⑤ 功能特性：轮播（3 个核心卖点，自动播放 5 秒） --\u003e\n\u003ch2 class=\"bwc-section-title\" style=\"margin-left:26px;margin-right:26px\"\u003eWhy You'll Love It\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\" style=\"margin-left:26px;margin-right:26px\"\u003eThree reasons it's the smarter way to cleanse your skin.\u003c\/p\u003e\n\n\u003cdiv class=\"bwc-carousel\" data-carousel data-autoplay=\"5000\"\u003e\n\u003cdiv class=\"bwc-carousel-track\" data-track\u003e\n\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-imgs\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/2_9.webp?v=1786434525\" alt=\"5% oat kernel oil\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e1\u003c\/span\u003e\n\u003ch3\u003e5% Oat Kernel Oil\u003c\/h3\u003e\n\u003cp\u003eCleansing doesn't have to leave your skin feeling dry or uncomfortable. With 5% oat kernel oil, this balm helps deliver a nourishing layer of moisture while cleansing away makeup, sunscreen, and everyday impurities. The result is skin that feels soft, balanced, and comfortably clean.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-imgs\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/3_9.webp?v=1786434525\" alt=\"Makeup and sunscreen melting power\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e2\u003c\/span\u003e\n\u003ch3\u003eMakeup \u0026amp; Sunscreen Melting Power\u003c\/h3\u003e\n\u003cp\u003eFrom long-wear foundation to sunscreen and daily buildup, the balm melts smoothly across the skin to loosen stubborn products without aggressive rubbing. Massage for around 30 seconds, add water to emulsify, then rinse for a fresh, comfortable finish.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-carousel-imgs\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/4_9.webp?v=1786434525\" alt=\"Silky balm-to-milk texture\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-carousel-text\"\u003e\n\u003cspan class=\"bwc-carousel-num\"\u003e3\u003c\/span\u003e\n\u003ch3\u003eSilky Balm-To-Milk Texture\u003c\/h3\u003e\n\u003cp\u003eThe buttery balm melts into a smooth oil as you massage it over dry skin, then transforms into a lightweight milky texture when mixed with water. This easy rinse-off formula makes cleansing feel more like a comforting skincare ritual than a harsh daily step.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-nav\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-prev aria-label=\"Previous slide\"\u003e‹\u003c\/button\u003e\n\u003cdiv class=\"bwc-carousel-dots\" data-dots\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-next aria-label=\"Next slide\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-teeth\" style=\"margin-top:8px\"\u003e\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-body\"\u003e\n\u003c!-- Perfect For --\u003e\n\u003ch2 class=\"bwc-section-title\"\u003ePerfect For\u003c\/h2\u003e\n\u003cp class=\"bwc-lead\"\u003ePerfect for morning and evening cleansing, removing makeup after a long day, taking off sunscreen after outdoor activities, or as the first step of a double-cleansing routine. It's especially suited to dry, sensitive, dehydrated, or easily uncomfortable-feeling skin, while the nourishing balm texture makes it a beautiful addition to a relaxing nighttime skincare ritual. For an extra comforting treatment, apply a thin layer for around 10 minutes before gently massaging and rinsing.\u003c\/p\u003e\n\n\u003c!-- 使用场景配图区域 --\u003e\n\u003cdiv class=\"bwc-media-block\"\u003e\n\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/8_11_1.gif?v=1786434891\"\u003e\n\u003c\/div\u003e\n\n\u003c!-- 规格参数表：淡粉色和白色交替 --\u003e\n\u003cdiv class=\"bwc-spec\"\u003e\n\u003ch2\u003eProduct Specifications\u003c\/h2\u003e\n\u003ctable class=\"bwc-table\"\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eProduct Type\u003c\/td\u003e\n\u003ctd\u003eCleansing Balm\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eKey Ingredients\u003c\/td\u003e\n\u003ctd\u003e5% Oat Kernel Oil, Sea Buckthorn Oil\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eTexture\u003c\/td\u003e\n\u003ctd\u003eSilky Balm-to-Oil-to-Milk\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003ePrimary Use\u003c\/td\u003e\n\u003ctd\u003eMakeup, Sunscreen \u0026amp; Daily Impurity Removal\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSkin Feel\u003c\/td\u003e\n\u003ctd\u003eSoft, Nourished \u0026amp; Comfortable\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSkin Types\u003c\/td\u003e\n\u003ctd\u003eSuitable for All Skin Types, Including Dry and Sensitive-Feeling Skin\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCleansing Method\u003c\/td\u003e\n\u003ctd\u003eMassage onto Dry Skin, Add Water to Emulsify, Then Rinse\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRecommended Use\u003c\/td\u003e\n\u003ctd\u003eMorning and Evening\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDouble Cleansing\u003c\/td\u003e\n\u003ctd\u003eSuitable as the First Cleansing Step\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOptional Mask Use\u003c\/td\u003e\n\u003ctd\u003eCan be left on for approximately 10 minutes before rinsing\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFinish\u003c\/td\u003e\n\u003ctd\u003eClean, Soft \u0026amp; Non-Stripped Feeling\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eCare Instructions\u003c\/td\u003e\n\u003ctd\u003eKeep container tightly closed and store in a cool, dry place away from direct sunlight.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\n\u003c\/div\u003e\n\n\u003c!-- Customer Reviews：一页展示一条评论，不带图片，手动切换 --\u003e\n\u003ch2 class=\"bwc-section-title\"\u003eCustomer Reviews\u003c\/h2\u003e\n\u003cdiv class=\"bwc-carousel\" data-carousel data-autoplay=\"0\"\u003e\n\u003cdiv class=\"bwc-carousel-track\" data-track\u003e\n\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eEmily R.\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e\"I've tried quite a few cleansing balms, but this one has such a lovely texture. It melts almost immediately when I massage it in and takes off my foundation and sunscreen without all the rubbing.\"\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eSarah M.\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e\"Really gentle and easy to rinse off. My skin feels clean but comfortable.\"\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eOlivia T.\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e\"I've been using this as the first step in my nighttime routine and absolutely love how effortlessly it removes makeup. My face feels moisturized and fresh rather than dry after cleansing.\"\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-slide bwc-review-carousel-slide\"\u003e\n\u003cdiv class=\"bwc-review-mini\"\u003e\n\u003cp class=\"bwc-review-title\"\u003eRachel K.\u003c\/p\u003e\n\u003cp class=\"bwc-review-quote\"\u003e\"Lovely texture and perfect for removing sunscreen at the end of the day.\"\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-carousel-nav\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-prev aria-label=\"Previous slide\"\u003e‹\u003c\/button\u003e\n\u003cdiv class=\"bwc-carousel-dots\" data-dots\u003e\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"bwc-carousel-arrow\" data-next aria-label=\"Next slide\"\u003e›\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c!-- FAQ：点击问题展开\/收起答案 --\u003e\n\u003cdiv class=\"bwc-faq\" data-accordion\u003e\n\u003ch2 class=\"bwc-section-title\"\u003eFrequently Asked Questions\u003c\/h2\u003e\n\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e\u003cspan class=\"qtext\"\u003eWhat does this cleansing balm remove?\u003c\/span\u003e\u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eIt is designed to dissolve everyday makeup, sunscreen, long-wear cosmetic products, excess oil, and daily surface impurities.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e\u003cspan class=\"qtext\"\u003eHow do I use the cleansing balm?\u003c\/span\u003e\u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eApply a small amount to dry skin and massage gently for around 30 seconds. Add a little water to emulsify the balm into a milky texture, then rinse thoroughly with water.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e\u003cspan class=\"qtext\"\u003eCan I use it on sensitive skin?\u003c\/span\u003e\u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eThe formula is designed to provide a gentle, comfortable cleansing experience and is suitable for sensitive-feeling, dry, dehydrated, and easily uncomfortable skin.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e\u003cspan class=\"qtext\"\u003eCan I use it as part of double cleansing?\u003c\/span\u003e\u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eYes. It works well as the first step of a double-cleansing routine, especially when removing sunscreen or makeup before following with a water-based cleanser.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003cdiv class=\"bwc-faq-item\"\u003e\n\u003cbutton type=\"button\" class=\"bwc-faq-q\" aria-expanded=\"false\"\u003e\u003cspan class=\"qmark\"\u003eQ\u003c\/span\u003e\u003cspan class=\"qtext\"\u003eCan I use it as a cleansing mask?\u003c\/span\u003e\u003cspan class=\"bwc-faq-toggle\"\u003e+\u003c\/span\u003e\u003c\/button\u003e\n\u003cp class=\"bwc-faq-a\"\u003eYes. For a more nourishing cleansing ritual, apply a thin layer to the face and leave it on for approximately 10 minutes before gently massaging with water and rinsing.\u003c\/p\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003cdiv class=\"bwc-teeth inv\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"bwc-bottom-pad\"\u003e\u003c\/div\u003e\n\n\u003c!-- ⑩ CTA --\u003e\n\u003cdiv class=\"bwc-cta\"\u003e\n\u003ch2\u003eTurn Cleansing Into A Comforting Ritual.\u003c\/h2\u003e\n\u003cp\u003eMelt away makeup, sunscreen, and daily buildup while giving your skin a more nourishing cleansing experience with 5% oat kernel oil and a silky balm-to-milk texture.\u003c\/p\u003e\n\u003c!-- 这个按钮不再绑定固定的 VARIANT_ID：点击时会去读页面上真正的商品选购表单（客户选好的颜色\/尺寸\/规格），\n     取出当前选中的那个变体 id，再用 Shopify 的 \/cart\/add.js 接口把“客户选的那个变体”加入购物车。\n     data-fallback-variant 是兜底用的，如果在页面上找不到选购表单，就退回用这个固定ID（记得替换成你商品的默认变体ID）。 --\u003e\n\u003cbutton type=\"button\" class=\"bwc-btn bwc-add-to-cart\" data-fallback-variant=\"VARIANT_ID\"\u003eMake It Your First Step To Softer, Happier-Looking Skin\u003c\/button\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n  \/\/ Initialize every carousel on the page independently (feature carousel + reviews carousel)\n  var carousels = document.querySelectorAll('[data-carousel]');\n  carousels.forEach(function(carousel){\n    \/\/ Guard against this script block accidentally running twice on the same\n    \/\/ carousel (e.g. if pasted in twice) — that would create two independent\n    \/\/ timers, and stopping one would never actually stop the autoplay.\n    if (carousel.getAttribute('data-bwc-init') === '1') return;\n    carousel.setAttribute('data-bwc-init', '1');\n\n    var track = carousel.querySelector('[data-track]');\n    var slides = track.querySelectorAll('.bwc-carousel-slide');\n    var dotsWrap = carousel.querySelector('[data-dots]');\n    var prevBtn = carousel.querySelector('[data-prev]');\n    var nextBtn = carousel.querySelector('[data-next]');\n    var activeIndex = 0;\n    var AUTOPLAY_DELAY = parseInt(carousel.getAttribute('data-autoplay'), 10) || 0;\n    var autoplayEnabled = AUTOPLAY_DELAY \u003e 0; \/\/ data-autoplay=\"0\" (or omitted) means manual-only, no autoplay\n    var carouselInView = false; \/\/ becomes true only once the carousel scrolls into view\n    var paused = false; \/\/ true while the user is hovering, touching, or has just interacted\n    var autoplayTimer = null;\n    var resumeTimer = null;\n\n    slides.forEach(function(slide, i){\n      var dot = document.createElement('button');\n      dot.type = 'button';\n      dot.className = 'bwc-carousel-dot' + (i === 0 ? ' active' : '');\n      dot.setAttribute('aria-label', 'Go to slide ' + (i + 1));\n      dot.addEventListener('click', function(){\n        goToSlide(i);\n        pauseThenResume();\n      });\n      dotsWrap.appendChild(dot);\n    });\n    var dots = dotsWrap.querySelectorAll('.bwc-carousel-dot');\n\n    \/\/ Scroll the track itself (horizontal only). Never use scrollIntoView here —\n    \/\/ it can also scroll the whole page vertically to \"reveal\" the slide, which\n    \/\/ yanks the page back up to this section if the user has scrolled past it.\n    function goToSlide(i){\n      var slide = slides[i];\n      track.scrollTo({ left: slide.offsetLeft, behavior: 'smooth' });\n    }\n\n    function updateActive(){\n      var trackRect = track.getBoundingClientRect();\n      var closest = 0, closestDist = Infinity;\n      slides.forEach(function(slide, i){\n        var dist = Math.abs(slide.getBoundingClientRect().left - trackRect.left);\n        if (dist \u003c closestDist) { closestDist = dist; closest = i; }\n      });\n      activeIndex = closest;\n      dots.forEach(function(d, i){ d.classList.toggle('active', i === closest); });\n    }\n\n    var scrollTimer;\n    track.addEventListener('scroll', function(){\n      clearTimeout(scrollTimer);\n      scrollTimer = setTimeout(updateActive, 80);\n    });\n\n    function stepWidth(){\n      if (slides.length \u003e 1) {\n        return slides[1].offsetLeft - slides[0].offsetLeft;\n      }\n      return slides[0].getBoundingClientRect().width;\n    }\n\n    prevBtn.addEventListener('click', function(){\n      track.scrollBy({left: -stepWidth(), behavior:'smooth'});\n      pauseThenResume();\n    });\n    nextBtn.addEventListener('click', function(){\n      track.scrollBy({left: stepWidth(), behavior:'smooth'});\n      pauseThenResume();\n    });\n\n    function nextSlide(){\n      var next = (activeIndex + 1) % slides.length;\n      goToSlide(next);\n    }\n\n    \/\/ A single persistent interval per carousel — it just checks the 'paused'\n    \/\/ and 'carouselInView' flags on every tick rather than being torn down and\n    \/\/ rebuilt on every interaction.\n    function startAutoplay(){\n      if (!autoplayEnabled || autoplayTimer) return;\n      autoplayTimer = setInterval(function(){\n        if (!paused \u0026\u0026 carouselInView) nextSlide();\n      }, AUTOPLAY_DELAY);\n    }\n\n    \/\/ Pause immediately on any interaction (hover, press, or touch).\n    function pauseNow(){\n      paused = true;\n      clearTimeout(resumeTimer);\n    }\n    \/\/ Resume right away (used when the mouse actually leaves the carousel).\n    function resumeNow(){\n      clearTimeout(resumeTimer);\n      paused = false;\n    }\n    \/\/ Pause immediately, and schedule an automatic resume a few seconds later —\n    \/\/ this is the fallback for touch devices, which have no \"mouse left\" event.\n    function pauseThenResume(){\n      pauseNow();\n      resumeTimer = setTimeout(resumeNow, 3000);\n    }\n\n    carousel.addEventListener('mouseenter', pauseNow);\n    carousel.addEventListener('mouseleave', resumeNow);\n    carousel.addEventListener('pointerdown', pauseThenResume);\n    carousel.addEventListener('touchstart', pauseThenResume, {passive:true});\n\n    \/\/ Only autoplay while the carousel is actually on screen — the countdown\n    \/\/ only starts once the user has scrolled to this section, not on page load.\n    if (autoplayEnabled \u0026\u0026 'IntersectionObserver' in window) {\n      var io = new IntersectionObserver(function(entries){\n        entries.forEach(function(entry){\n          carouselInView = entry.isIntersecting;\n        });\n      }, { threshold: 0.4 });\n      io.observe(carousel);\n    } else {\n      carouselInView = true;\n    }\n\n    startAutoplay();\n    updateActive();\n  });\n})();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n(function(){\n  var accordion = document.querySelector('[data-accordion]');\n  if(!accordion) return;\n  var buttons = accordion.querySelectorAll('.bwc-faq-q');\n  buttons.forEach(function(btn){\n    btn.addEventListener('click', function(){\n      var item = btn.closest('.bwc-faq-item');\n      var isOpen = item.classList.contains('open');\n      item.classList.toggle('open', !isOpen);\n      btn.setAttribute('aria-expanded', String(!isOpen));\n    });\n  });\n})();\n\u003c\/script\u003e\n\n\u003cscript\u003e\n(function(){\n  \/\/ Elements matching these are almost always \"related \/ recommended \/ upsell\"\n  \/\/ product widgets elsewhere on the page — never treat a button\/form inside\n  \/\/ one of these as this landing page's own add-to-cart control.\n  var EXCLUDE_SELECTOR = [\n    '[class*=\"related\"]','[id*=\"related\"]',\n    '[class*=\"recommend\"]','[id*=\"recommend\"]',\n    '[class*=\"upsell\"]','[id*=\"upsell\"]',\n    '[class*=\"cross-sell\"]','[id*=\"cross-sell\"]',\n    '[class*=\"also-like\"]','[id*=\"also-like\"]',\n    '[class*=\"complementary\"]','[id*=\"complementary\"]',\n    '[class*=\"bundle\"]','[id*=\"bundle\"]',\n    '[class*=\"quick-add\"]','[id*=\"quick-add\"]',\n    '[class*=\"quick-buy\"]','[id*=\"quick-buy\"]',\n    '[class*=\"product-card\"]','[class*=\"product-grid-item\"]',\n    '[class*=\"trending\"]','[class*=\"carousel-card\"]'\n  ].join(',');\n\n  function isInsideExcludedWidget(el){\n    return !!el.closest(EXCLUDE_SELECTOR);\n  }\n\n  function findRealAddToCartButton(){\n    \/\/ 1) Most specific \u0026 reliable: the standard Shopify add-to-cart control,\n    \/\/ name=\"add\", that isn't sitting inside a recommendations\/upsell widget.\n    var named = document.querySelectorAll('button[name=\"add\"], input[name=\"add\"]');\n    for (var i = 0; i \u003c named.length; i++) {\n      if (!isInsideExcludedWidget(named[i]) \u0026\u0026 !named[i].classList.contains('bwc-add-to-cart')) {\n        return named[i];\n      }\n    }\n\n    \/\/ 2) A real cart\/add form, again skipping anything inside an excluded widget.\n    var forms = document.querySelectorAll('form[action*=\"\/cart\/add\"]');\n    for (var f = 0; f \u003c forms.length; f++) {\n      if (isInsideExcludedWidget(forms[f])) continue;\n      var btn = forms[f].querySelector('button[name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]');\n      if (btn) return btn;\n    }\n\n    \/\/ 3) Last resort: visible text match, still excluding recommendation widgets.\n    var all = document.querySelectorAll('button, input[type=\"submit\"]');\n    for (var j = 0; j \u003c all.length; j++) {\n      var txt = (all[j].textContent || all[j].value || '').trim().toLowerCase();\n      if (txt.indexOf('add to cart') !== -1 \u0026\u0026 !all[j].classList.contains('bwc-add-to-cart') \u0026\u0026 !isInsideExcludedWidget(all[j])) {\n        return all[j];\n      }\n    }\n    return null;\n  }\n\n  function bwcAddToCart(btn){\n    var realBtn = findRealAddToCartButton();\n    if (realBtn) {\n      realBtn.click();\n      return;\n    }\n    var fallbackId = btn.getAttribute('data-fallback-variant');\n    if (!fallbackId || fallbackId === 'VARIANT_ID') {\n      alert('Could not find the add-to-cart form on this page.');\n      return;\n    }\n    fetch('\/cart\/add.js', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application\/json' },\n      body: JSON.stringify({ id: fallbackId, quantity: 1 })\n    }).then(function(){ window.location.href=\"\/es\/cart\"; });\n  }\n\n  document.addEventListener('click', function(e){\n    var btn = e.target.closest('.bwc-add-to-cart');\n    if (!btn) return;\n    e.preventDefault();\n    bwcAddToCart(btn);\n  });\n})();\n\u003c\/script\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"wzh","offers":[{"title":"Default Title","offer_id":47844005871747,"sku":"PL0112260811746-燕麦卸妆膏","price":21.98,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0727\/3952\/0643\/files\/6130TM1PZXL._SL1500.jpg?v=1786431550","url":"https:\/\/craftivon.com\/es\/products\/5-oat-oil-gentle-makeup-sunscreen-cleansing-balm","provider":"Craftivon","version":"1.0","type":"link"}