3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
8/11
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
3-in-1 Makeup Brush Cleaning Mat
8/11

3-in-1 Makeup Brush Cleaning Mat

$25.99
$33.99
Save 24%
COLOR
Please select a color
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

Say goodbye to dirty makeup brushes with our 3-in-1 Makeup Brush Cleaning Mat! 💄🧼 This versatile mat is a game-changer for makeup lovers. Not only does it make cleaning a breeze, but it also doubles as a brush drying and storage solution. The high-quality silicone material ensures durability and easy maintenance.

With its unique texture designs, our cleaning mat effectively removes stubborn makeup dirt from all types of brushes. No more worries about residue or bacteria lingering on your beloved brushes!

But that's not all - our cleaning mat is also foldable and compact, making it perfect for travel and storage. It even comes with a convenient brush drying holder to keep your brushes organized and in top-notch condition.

Choose from a range of vibrant colors to match your style and add a touch of fun to your makeup routine!

Specifications:
🌟 Material: Silicone
🌟 Weight: 300g
🌟 Size: Approximately 14.5138cm/5.75.13.1in

Get your hands on our Makeup Brush Cleaning Mat today and experience the ultimate convenience and cleanliness for your makeup tools. Order now and enjoy a flawless makeup application every time! 💁‍♀️💅

Packing List:
✨ 1 x Makeup Brush Cleaning Mat