CINXE.COM

免费建站 全网唯一_100%免费_无隐藏费用_轻松搭建网站-Shoptop

<!DOCTYPE html> <html lang="en_US"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="x-dns-prefetch-control" content="on" /> <title>免费建站 全网唯一_100%免费_无隐藏费用_轻松搭建网站-Shoptop</title> <meta name="keywords" content="独立站,免费建站,免费SEO,免费代建站,跨境SaaS独立站,跨境电商独立站-外贸独立站-跨境电商"> <meta name="description" content="Shoptop全球跨境电商SaaS建站平台,免订阅费,免费代建站,免费全站SEO服务,全网唯一. 15分钟建站,精准转化,拥有14年海外广告投放经验,为中国跨境电商卖家提供一站式全方位解决方案,做独立站就选Shoptop"> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://static.staticxt.com"> <link rel="canonical" href="http://www.shoptop.cn/"> <link rel="shortcut icon" href="https://cdn-shoptop-com.oss-accelerate.aliyuncs.com/1692074916201984001.png"> <meta name="format-detection" content="telephone=no, email=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta property="og:site_name" content="Shoptop>"> <meta property="og:url" content="http://www.shoptop.cn/"> <meta property="og:title" content="免费建站 全网唯一_100%免费_无隐藏费用_轻松搭建网站-Shoptop"> <meta property="og:type" content="website"> <meta property="og:description" content="Shoptop全球跨境电商SaaS建站平台,免订阅费,免费代建站,免费全站SEO服务,全网唯一. 15分钟建站,精准转化,拥有14年海外广告投放经验,为中国跨境电商卖家提供一站式全方位解决方案,做独立站就选Shoptop"> <meta name="twitter:site" content=""> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="免费建站 全网唯一_100%免费_无隐藏费用_轻松搭建网站-Shoptop"> <meta name="twitter:description" content="Shoptop全球跨境电商SaaS建站平台,免订阅费,免费代建站,免费全站SEO服务,全网唯一. 15分钟建站,精准转化,拥有14年海外广告投放经验,为中国跨境电商卖家提供一站式全方位解决方案,做独立站就选Shoptop"> <style type="text/css">:root{--general-bg-color:#FFFFFF;--general-text-color:#000000;--general-link-color:#1274FF;--color-menu-bg:#FFFFFF;--color-menu-text:#0E1C3F;--color-menu-text-6:rgba(14,28,63,0.6);--color-announcement-bg:#D9F1FF;--color-announcement-text:#0E1C3F;--color-footer-bg:#EBF5FE;--color-footer-text:#0E1C3F;--color-footer-border:rgba(14,28,63,0.3);--color-primary-btn-bg:#1274FF;--color-primary-btn-text:#FFFFFF;--color-secondary-btn-bg:#FFFFFF;--color-secondary-btn-border:#1274FF;--color-secondary-btn-text:#1274FF;--color-link-btn:#1274FF;--color-primary-light:#7AB2FF;--color-primary-lighter:rgba(18,116,255,undefined);--color-option-border:rgba(0,0,0,0.25);--color-select-border:rgba(0,0,0,0.15);--color-general-text-color-7:rgba(0,0,0,0.7);--color-general-text-color-8:rgba(0,0,0,0.8);--type-title-font-size:48px;--type-title-line-height:1.4em;--type-sub-title-font-size:24px;--type-sub-title-line-height:1.4em;--type-text-font-size:16px;--type-text-line-height:1.6em;--type-nav-font-size:16px;--type-nav-line-height:1.4em;--global-border-radius:10px;--global-rounded-small:3px;--global-rounded-divided-2:5px;--global-rounded-divided-5:2px;--btn-border-radius:30px;--color-warning:#F05C5D;--color-placeholder:#7A8086;--color-article-date:#666666}body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-weight:400;font-style:normal;}.nav-font-size{font-size:var(--type-nav-font-size);line-height:var(--type-nav-line-height);}h1,h2,h3,h4,h5,h6,.title,.large-title,.giant-title,.massive-title,.biggest-title,.standard-title,.small-title{line-height:var(--type-title-line-height);font-size:var(--type-title-font-size);font-weight:600;word-break:break-word;}.sub-title{line-height:var( --type-sub-title-line-height);font-size:var( --type-sub-title-font-size);font-weight:500;word-break:break-word;}@media only screen and (max-width:767.98px){.sub-title{font-size:calc(var( --type-sub-title-font-size) * 0.7692);}.title{font-size:calc(var( --type-title-font-size) * 0.5294);}body{font-size:calc(var( --type-text-font-size) * 0.8888);}button.standard-link,.standard-link{min-width:174px !important;}}button.header-standard-link,.header-standard-link{color:#1274FF;font-size:1rem;text-decoration:underline;-webkit-text-decoration-skip:ink;text-decoration-skip:ink;}button.standard-link,.standard-link{height:58px;line-height:58px;color:var(--color-link-btn);text-decoration:none;display:inline-block;font-weight:500;font-size:18px;position:relative;cursor:pointer;border-bottom:1px var(--color-link-btn) solid;padding-right:24px;min-width:336px;text-align:left;}button.standard-link.standard-link--inherit-color,.standard-link.standard-link--inherit-color{color:inherit;}.standard-link::after{content:'>';position:absolute;right:10px;top:0;bottom:0;margin:auto;width:20px;line-height:20px;height:20px;transition:right 0.3s;}.standard-link:hover::after{right:0;}button.standard-link.standard-link--inherit-color,.standard-link.standard-link--inherit-color{color:inherit;}button.btn--secondary,button.btn--quicklook,input[type='submit'].btn--secondary,input[type='submit'].btn--quicklook,.btn.btn--secondary,.btn.btn--quicklook{border:1px solid var(--color-secondary-btn-border);}</style> <script src="https://static.staticxt.com//npm/jquery@2.2.3/jquery.js"></script> <script src="https://static.staticxt.com//npm/swiper@8.4.6/swiper-bundle.min.js"></script> <link rel="stylesheet" href="https://static.staticxt.com/theme/home/index.css?t=2023040401" /> <script> window.breakpoint = 768; window.STORE_PARAMS = { shopId: '195157', symbolLeft: '$', symbolRight: '', symbol: '$', shopName: 'Shoptop', shopCurrency: 'USD', defaultImage: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==', imageDomain: 'https://img.staticxt.com', cdnDomain: 'https://static.staticxt.com', templateType: '1', templateName: 'index' } window.theme = {} </script> <script>window.SHOPTOP={ saSdkUrl:"https://static.staticxt.com", saServerUrl:"https://r.shoptop.com", asstetsUrl:"https://assets.staticxt.com", theme: {"name":"home","id":"2"},locale:"en_US",}</script><script>(function () { function asyncLoad() { var urls = ["cart_active-1d42d7e5.js","xt-shipping-time-97a8d7e7.js"]; for (var i = 0; i < urls.length; i++) { var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = STORE_PARAMS.cdnDomain + "/apps/" + urls[i]; var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); } }; if (window.attachEvent) { window.attachEvent('onload', asyncLoad); } else { window.addEventListener('load', asyncLoad, false); } })();</script><script>(function() {var _53code = document.createElement("script");_53code.src = "https://tb.53kf.com/code/code/c5b4cbf24b1e0fcb80efad55a7db92560/1";var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(_53code, s);})();</script><meta name="baidu-site-verification" content="codeva-yRO0T0UUI7" /> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-P4J5LJK6');</script> <script type="text/javascript"> (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "jvx0bcavho"); </script><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?929ab0364d77460b98e2aae956d770c1"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script><script type="text/javascript"> window._agl = window._agl || []; (function () { _agl.push( ['production', '_f7L2XwGXjyszb4d1e2oxPybgD'] ); (function () { var agl = document.createElement('script'); agl.type = 'text/javascript'; agl.async = true; agl.src = 'https://fxgate.baidu.com/angelia/fcagl.js?production=_f7L2XwGXjyszb4d1e2oxPybgD'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(agl, s); })(); })(); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-KW8T2EZRDQ"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-KW8T2EZRDQ'); </script><script>window.AD_TRACK_GA_PIXEL_ID="trackGA"</script><script>!function(){"use strict";function n(n,t){var e,r=Object.keys(n);return Object.getOwnPropertySymbols&&(e=Object.getOwnPropertySymbols(n),t&&(e=e.filter(function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})),r.push.apply(r,e)),r}function e(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach(function(t){var n,e;n=r,e=o[t=t],t in n?Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}):n[t]=e}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach(function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(o,t))})}return r}function _(){_=function(){return a};var a={},t=Object.prototype,s=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",e=n.asyncIterator||"@@asyncIterator",o=n.toStringTag||"@@toStringTag";function i(t,n,e){return Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{i({},"")}catch(a){i=function(t,n,e){return t[n]=e}}function c(t,n,e,r){var o,i,a,c,n=n&&n.prototype instanceof p?n:p,n=Object.create(n.prototype),r=new b(r||[]);return n._invoke=(o=t,i=e,a=r,c="suspendedStart",function(t,n){if("executing"===c)throw new Error("Generator is already running");if("completed"===c){if("throw"===t)throw n;return O()}for(a.method=t,a.arg=n;;){var e=a.delegate;if(e){e=function t(n,e){var r=n.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(n.iterator.return&&(e.method="return",e.arg=void 0,t(n,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}r=u(r,n.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,l;r=r.arg;return r?r.done?(e[n.resultName]=r.value,e.next=n.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):r:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}(e,a);if(e){if(e===l)continue;return e}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===c)throw c="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c="executing";e=u(o,i,a);if("normal"===e.type){if(c=a.done?"completed":"suspendedYield",e.arg===l)continue;return{value:e.arg,done:a.done}}"throw"===e.type&&(c="completed",a.method="throw",a.arg=e.arg)}}),n}function u(t,n,e){try{return{type:"normal",arg:t.call(n,e)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var l={};function p(){}function f(){}function h(){}var n={},d=(i(n,r,function(){return this}),Object.getPrototypeOf),d=d&&d(d(x([]))),g=(d&&d!==t&&s.call(d,r)&&(n=d),h.prototype=p.prototype=Object.create(n));function y(t){["next","throw","return"].forEach(function(n){i(t,n,function(t){return this._invoke(n,t)})})}function m(a,c){var n;this._invoke=function(e,r){function t(){return new c(function(t,n){!function n(t,e,r,o){var i,t=u(a[t],a,e);if("throw"!==t.type)return(e=(i=t.arg).value)&&"object"==typeof e&&s.call(e,"__await")?c.resolve(e.__await).then(function(t){n("next",t,r,o)},function(t){n("throw",t,r,o)}):c.resolve(e).then(function(t){i.value=t,r(i)},function(t){return n("throw",t,r,o)});o(t.arg)}(e,r,t,n)})}return n=n?n.then(t,t):t()}}function v(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function w(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function b(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(v,this),this.reset(!0)}function x(n){if(n){var e,t=n[r];if(t)return t.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length))return e=-1,(t=function t(){for(;++e<n.length;)if(s.call(n,e))return t.value=n[e],t.done=!1,t;return t.value=void 0,t.done=!0,t}).next=t}return{next:O}}function O(){return{value:void 0,done:!0}}return i(g,"constructor",f.prototype=h),i(h,"constructor",f),f.displayName=i(h,o,"GeneratorFunction"),a.isGeneratorFunction=function(t){t="function"==typeof t&&t.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,h):(t.__proto__=h,i(t,o,"GeneratorFunction")),t.prototype=Object.create(g),t},a.awrap=function(t){return{__await:t}},y(m.prototype),i(m.prototype,e,function(){return this}),a.AsyncIterator=m,a.async=function(t,n,e,r,o){void 0===o&&(o=Promise);var i=new m(c(t,n,e,r),o);return a.isGeneratorFunction(n)?i:i.next().then(function(t){return t.done?t.value:i.next()})},y(g),i(g,o,"Generator"),i(g,r,function(){return this}),i(g,"toString",function(){return"[object Generator]"}),a.keys=function(e){var t,r=[];for(t in e)r.push(t);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},a.values=x,b.prototype={constructor:b,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(w),!t)for(var n in this)"t"===n.charAt(0)&&s.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function t(t,n){return i.type="throw",i.arg=e,r.next=t,n&&(r.method="next",r.arg=void 0),!!n}for(var n=this.tryEntries.length-1;0<=n;--n){var o=this.tryEntries[n],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=s.call(o,"catchLoc"),c=s.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(t,n){for(var e=this.tryEntries.length-1;0<=e;--e){var r=this.tryEntries[e];if(r.tryLoc<=this.prev&&s.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}var i=(o=o&&("break"===t||"continue"===t)&&o.tryLoc<=n&&n<=o.finallyLoc?null:o)?o.completion:{};return i.type=t,i.arg=n,o?(this.method="next",this.next=o.finallyLoc,l):this.complete(i)},complete:function(t,n){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&n&&(this.next=n),l},finish:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var e=this.tryEntries[n];if(e.finallyLoc===t)return this.complete(e.completion,e.afterLoc),w(e),l}},catch:function(t){for(var n=this.tryEntries.length-1;0<=n;--n){var e,r,o=this.tryEntries[n];if(o.tryLoc===t)return"throw"===(e=o.completion).type&&(r=e.arg,w(o)),r}throw new Error("illegal catch attempt")},delegateYield:function(t,n,e){return this.delegate={iterator:x(t),resultName:n,nextLoc:e},"next"===this.method&&(this.arg=void 0),l}},a}function s(t,n,e,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return e(t)}c.done?n(s):Promise.resolve(s).then(r,o)}function r(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function o(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function t(t,n,e){n&&o(t.prototype,n),e&&o(t,e),Object.defineProperty(t,"prototype",{writable:!1})}function i(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(n&&n.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),n&&c(t,n)}function a(t){return(a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,n){return(c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,n){return t.__proto__=n,t})(t,n)}function u(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}function l(t,n,e){return(l=u()?Reflect.construct.bind():function(t,n,e){var r=[null],n=(r.push.apply(r,n),new(Function.bind.apply(t,r)));return e&&c(n,e.prototype),n}).apply(null,arguments)}function p(t){var e="function"==typeof Map?new Map:void 0;return(p=function(t){if(null===t||-1===Function.toString.call(t).indexOf("[native code]"))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return l(t,arguments,a(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),c(n,t)})(t)}function f(e){var r=u();return function(){var t,n=a(e),n=(t=r?(t=a(this).constructor,Reflect.construct(n,arguments,t)):n.apply(this,arguments),this);if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");if(void 0===(t=n))throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}}window.Shoptop||(window.Shoptop={});var h={hub:Object.create(null),emit:function(t,n){(this.hub[t]||[]).forEach(function(t){return t(n)})},on:function(t,n){this.hub[t]||(this.hub[t]=[]),this.hub[t].push(n)}};function d(){var t;document.querySelector(".j-plugin-wrappers")||(t=(t=document.querySelector(".product-info__header_price-wrapper"))?t:document.querySelector(".product-info__variants-wrap")).insertAdjacentHTML("afterend",'<div class="j-plugin-wrappers"></div>')}window.Shoptop.event=h,window._XT_=function(t,n){this[t]=n},h.on("shoptop:product:change",function(t){window._XT_["xt.product"]=t}),window.Shoptop.APPS_EVENT={getProduct:function(){return"hope"===SHOPTOP.theme.name?$(document).data("xtproduct"):window._XT_["xt.product"]||""},globalFinance:function(t,n){return n=n||"amount",STORE_PARAMS.symbol+(t=parseFloat(t)/100,e="\\d(?=(\\d{"+((n={amount:{n:2,x:3,s:",",c:"."},amount_no_decimals:{n:0,x:3,s:",",c:""},amount_with_comma_separator:{n:2,x:3,s:".",c:","},amount_no_decimals_with_comma_separator:{n:0,x:3,s:".",c:""},amount_with_apostrophe_separator:{n:2,x:3,s:"'",c:"."}}[n]||"amount").x||3)+"})+"+(0<n.n?"\\D":"$")+")",t=0===n.n?t.toFixed(0):t.toFixed(n.n+1).slice(0,-1),(n.c?t.replace(".",n.c):t).replace(new RegExp(e,"g"),"$&"+(n.s||",")));var e},toast:{defaultOptions:{content:"Success",type:"info",timeOut:2500,scrollHide:!1},show:function(t){t=e(e({},this.defaultOptions),t);t=document.createRange().createContextualFragment('<shoptop-global-toast type="'.concat(t.type,'" scrollHide="').concat(t.scrollHide,'" timeOut="').concat(t.timeOut,'">').concat(t.content,"</shoptop-global-toast>"));document.body.appendChild(t)},success:function(t){this.show({type:"success",content:t})},error:function(t){this.show({type:"error",content:t})},warning:function(t){this.show({type:"warning",content:t})},info:function(t){this.show({type:"info",content:t})}},loading:{state:0,show:function(){var t;return 0===this.state&&(t=document.createRange().createContextualFragment("<shoptop-global-loading></shoptop-global-loading>"),document.body.appendChild(t),this.state=1),this},hide:function(){return 1===this.state&&(document.querySelector("shoptop-global-loading").remove(),this.state=0),this},getState:function(){return this.state}},cookie:{get:function(t){return"; ".concat(document.cookie).split("; ".concat(t,"=")).pop().split(";").shift()}},date:{format:function(t){var n,e;return t=t,n="YYYY-MM-DD"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"YYYY-MM-DD")?{year:"numeric",month:"long",day:"numeric"}:{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"},e=(e=document.documentElement.lang||"en-US").replace(/_/g,"-"),t=new Date(t).getTime()-288e5,t=new Date(t),new Intl.DateTimeFormat(e,n).format(t)},ISO:function(t){t=new Date(t).getTime()-288e5;return new Date(t).toISOString()}}},window.Shoptop.APPS_PLUGINS={plugins:[],validate:function(){var o=this,c=_().mark(function t(){var n,e,r;return _().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:n=[],e=o,t.t0=_().keys(e.plugins);case 3:if((t.t1=t.t0()).done){t.next=11;break}return r=t.t1.value,t.next=7,e.plugins[r].plugin.validate();case 7:r=t.sent,n.push(r),t.next=3;break;case 11:return t.abrupt("return",n);case 12:case"end":return t.stop()}},t)});return function(){var t=this,a=arguments;return new Promise(function(n,e){var r=c.apply(t,a);function o(t){s(r,n,e,o,i,"next",t)}function i(t){s(r,n,e,o,i,"throw",t)}o(void 0)})}()},add:function(t,n){this.plugins.push({name:t,plugin:n})},remove:function(t){delete this.plugins[t]}},window.addEventListener("DOMContentLoaded",function(){"product"===STORE_PARAMS.templateName&&d(),document.addEventListener("shoptop:section:load",function(){"product"===STORE_PARAMS.templateName&&d()})});i(y,p(HTMLElement)),g=f(y),t(y,[{key:"hide",value:function(){var t=this;setTimeout(function(){t.remove()},750)}},{key:"getIcons",value:function(t){return{info:"",warning:'<div class="toast-svg" warning>\n <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path></svg>\n </div>',success:'<div class="toast-svg" success>\n <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path></svg>\n </div>',error:'<div class="toast-svg" error>\n <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg>\n </div>'}[t]}},{key:"getTemplate",value:function(){var t=this.getIcons(this.type);return'\n <style>\n .fade-in-top {\n -webkit-animation: fade-in-top 0.6s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\n animation: fade-in-top 0.6s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;\n }\n @-webkit-keyframes fade-in-top {\n 0% {\n -webkit-transform: translateY(-50px);\n transform: translateY(-50px);\n opacity: 0;\n }\n 100% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n }\n @keyframes fade-in-top {\n 0% {\n -webkit-transform: translateY(-50px);\n transform: translateY(-50px);\n opacity: 0;\n }\n 100% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n }\n .fade-out-top {\n -webkit-animation: fade-out-top 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;\n animation: fade-out-top 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;\n }\n @-webkit-keyframes fade-out-top {\n 0% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n 100% {\n -webkit-transform: translateY(-50px);\n transform: translateY(-50px);\n opacity: 0;\n }\n }\n @keyframes fade-out-top {\n 0% {\n -webkit-transform: translateY(0);\n transform: translateY(0);\n opacity: 1;\n }\n 100% {\n -webkit-transform: translateY(-50px);\n transform: translateY(-50px);\n opacity: 0;\n }\n }\n .toast {\n position: fixed;\n top: 30px;\n right: 0;\n left: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1050;\n }\n .toast-wrap {\n display: flex;\n align-items: center;\n padding: 16px;\n margin-bottom: 16px;\n width: 100%;\n max-width: 388px;\n color: rgb(107, 114, 128);\n background: #fff;\n box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n border-radius: 8px;\n }\n .toast-svg {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 8px;\n margin-right: 12px;\n }\n .toast-svg[warning] {\n color: rgb(249, 115, 22);\n background: rgb(255, 237, 213);\n }\n .toast-svg[success] {\n color: rgb(34, 197, 94);\n background: rgb(220, 252, 231);\n }\n .toast-svg[error] {\n color: rgb(239, 68, 68);\n background: rgb(254, 226, 226);\n }\n .toast-svg svg {\n width: 20px;\n height: 20px;\n }\n .toast-content {\n font-size: 14px;\n line-height: 20px;\n font-weight: 400;\n }\n </style>\n <div class="toast fade-in-top">\n <div class="toast-wrap">\n '.concat(t,'\n <div class="toast-content"><slot></slot></div>\n </div>\n </div>')}}]);var g,h=y;function y(){r(this,y),(t=g.call(this))._root=t.attachShadow({mode:"open"}),t.type=t.getAttribute("type")||"info",t.timeOut=t.getAttribute("timeOut")||2500;var t,n=t.getTemplate();return t._root.innerHTML=n,setTimeout(function(){t._root.querySelector(".toast").classList.add("fade-out-top"),t.hide()},t.timeOut),t}customElements.define("shoptop-global-toast",h);i(v,p(HTMLElement)),m=f(v),t(v,[{key:"getTemplate",value:function(){return'<style>\n .loading-wrap {\n position: fixed;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n background: rgba(0, 0, 0, 0.3);\n z-index: 1070;\n }\n .loading {\n width: 20px;\n height: 20px;\n border: 2px solid #fff;\n border-top-color: transparent;\n border-radius: 100%;\n animation: circle infinite 0.75s linear;\n }\n\n @keyframes circle {\n 0% {\n transform: rotate(0);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n </style>\n <div class="loading-wrap">\n <div>\n <div class="loading"></div>\n </div>\n </div>'}}]);var m,h=v;function v(){r(this,v),(t=m.call(this))._root=t.attachShadow({mode:"open"});var t,n=t.getTemplate();return t._root.innerHTML=n,t}customElements.define("shoptop-global-loading",h)}(); </script><script>!function(){"use strict";function T(){T=function(){return c};var c={},t=Object.prototype,s=t.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},r=e.iterator||"@@iterator",n=e.asyncIterator||"@@asyncIterator",i=e.toStringTag||"@@toStringTag";function o(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{o({},"")}catch(c){o=function(t,e,n){return t[e]=n}}function a(t,e,n,r){var i,o,c,a,e=e&&e.prototype instanceof p?e:p,e=Object.create(e.prototype),r=new I(r||[]);return e._invoke=(i=t,o=n,c=r,a="suspendedStart",function(t,e){if("executing"===a)throw new Error("Generator is already running");if("completed"===a){if("throw"===t)throw e;return w()}for(c.method=t,c.arg=e;;){var n=c.delegate;if(n){n=function t(e,n){var r=e.iterator[n.method];if(void 0===r){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=void 0,t(e,n),"throw"===n.method))return d;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}r=u(r,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,d;r=r.arg;return r?r.done?(n[e.resultName]=r.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,d):r:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,d)}(n,c);if(n){if(n===d)continue;return n}}if("next"===c.method)c.sent=c._sent=c.arg;else if("throw"===c.method){if("suspendedStart"===a)throw a="completed",c.arg;c.dispatchException(c.arg)}else"return"===c.method&&c.abrupt("return",c.arg);a="executing";n=u(i,o,c);if("normal"===n.type){if(a=c.done?"completed":"suspendedYield",n.arg===d)continue;return{value:n.arg,done:c.done}}"throw"===n.type&&(a="completed",c.method="throw",c.arg=n.arg)}}),e}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}c.wrap=a;var d={};function p(){}function l(){}function h(){}var e={},f=(o(e,r,function(){return this}),Object.getPrototypeOf),f=f&&f(f(k([]))),_=(f&&f!==t&&s.call(f,r)&&(e=f),h.prototype=p.prototype=Object.create(e));function m(t){["next","throw","return"].forEach(function(e){o(t,e,function(t){return this._invoke(e,t)})})}function y(c,a){var e;this._invoke=function(n,r){function t(){return new a(function(t,e){!function e(t,n,r,i){var o,t=u(c[t],c,n);if("throw"!==t.type)return(n=(o=t.arg).value)&&"object"==typeof n&&s.call(n,"__await")?a.resolve(n.__await).then(function(t){e("next",t,r,i)},function(t){e("throw",t,r,i)}):a.resolve(n).then(function(t){o.value=t,r(o)},function(t){return e("throw",t,r,i)});i(t.arg)}(n,r,t,e)})}return e=e?e.then(t,t):t()}}function v(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function g(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function I(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(v,this),this.reset(!0)}function k(e){if(e){var n,t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return n=-1,(t=function t(){for(;++n<e.length;)if(s.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t}).next=t}return{next:w}}function w(){return{value:void 0,done:!0}}return o(_,"constructor",l.prototype=h),o(h,"constructor",l),l.displayName=o(h,i,"GeneratorFunction"),c.isGeneratorFunction=function(t){t="function"==typeof t&&t.constructor;return!!t&&(t===l||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,h):(t.__proto__=h,o(t,i,"GeneratorFunction")),t.prototype=Object.create(_),t},c.awrap=function(t){return{__await:t}},m(y.prototype),o(y.prototype,n,function(){return this}),c.AsyncIterator=y,c.async=function(t,e,n,r,i){void 0===i&&(i=Promise);var o=new y(a(t,e,n,r),i);return c.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},m(_),o(_,i,"Generator"),o(_,r,function(){return this}),o(_,"toString",function(){return"[object Generator]"}),c.keys=function(n){var t,r=[];for(t in n)r.push(t);return r.reverse(),function t(){for(;r.length;){var e=r.pop();if(e in n)return t.value=e,t.done=!1,t}return t.done=!0,t}},c.values=k,I.prototype={constructor:I,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(g),!t)for(var e in this)"t"===e.charAt(0)&&s.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var r=this;function t(t,e){return o.type="throw",o.arg=n,r.next=t,e&&(r.method="next",r.arg=void 0),!!e}for(var e=this.tryEntries.length-1;0<=e;--e){var i=this.tryEntries[e],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var c=s.call(i,"catchLoc"),a=s.call(i,"finallyLoc");if(c&&a){if(this.prev<i.catchLoc)return t(i.catchLoc,!0);if(this.prev<i.finallyLoc)return t(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return t(i.catchLoc,!0)}else{if(!a)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return t(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;0<=n;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&s.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}var o=(i=i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc?null:i)?i.completion:{};return o.type=t,o.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(o)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),g(n),d}},catch:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var n,r,i=this.tryEntries[e];if(i.tryLoc===t)return"throw"===(n=i.completion).type&&(r=n.arg,g(i)),r}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:k(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},c}function s(t,e,n,r,i,o,c){try{var a=t[o](c),s=a.value}catch(t){return n(t)}a.done?e(s):Promise.resolve(s).then(r,i)}function r(a){return function(){var t=this,c=arguments;return new Promise(function(e,n){var r=a.apply(t,c);function i(t){s(r,e,n,i,o,"next",t)}function o(t){s(r,e,n,i,o,"throw",t)}i(void 0)})}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function e(t,e,n){e&&o(t.prototype,e),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1})}function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function c(t){for(var e=document.cookie.split(";"),n=0;n<e.length;n++){var r=e[n].split("="),i=decodeURIComponent(r[0].trim()),r=1<r.length?r[1]:"";if(i==t)return decodeURIComponent(r)}return""}function u(t,e,n){t=encodeURIComponent(t)+"="+encodeURIComponent(e);(n=(n=n instanceof Date?{expires:n}:n)||{}).expires&&((e=new Date).setDate(e.getDate()+n.expires),t+="; expires="+e.toUTCString()),n.path?t+="; path="+n.path:t+="; path=/",n.domain&&(t+="; domain="+n.domain.toString()),n.secure&&(t+="; secure"),document.cookie=t}function d(t,e){window.Shoptop.event.on(t,function(t){e(t)})}var p="dataTrack:productView",l="dataTrack:search",h="dataTrack:addToCart",f="dataTrack:initiateCheckout",_="dataTrack:checkoutStepPayment",m="dataTrack:purchase",y="dataTrack:signUp";function v(t){return{namespace:t.split(":")[1],timeStamp:(new Date).getTime()}}e(x,[{key:"init",value:(K=r(T().mark(function t(){var i,n,r;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:r=function(e,n,r){i.forEach(function(t){r?fbq("trackSingle",t,e,n,r):fbq("trackSingle",t,e,n)})},i=window.AD_TRACK_FP_MULTI_PIXEL_ID,n=this.shopCurrency,d(p,function(t){var e=v(p),t={content_type:"product",content_ids:[t.selected.skuId||t.skus[0].skuId],value:(t.selected||t).price/100,content_name:t.goodsTitle,currency:n,content_category:""};r("ViewContent",t,{eventID:e.namespace+e.timeStamp})}),d(l,function(t){var e=v(l);r("Search",{search_string:t.searchString},{eventID:e.namespace+e.timeStamp})}),d(h,function(t){var e=v(h),t={content_ids:t.skuId,content_type:"product",content_name:t.goodsTitle,content_category:"",currency:n,value:t.price*t.quantity/100,num_items:t.quantity};r("AddToCart",t,{eventID:e.namespace+e.timeStamp})}),d(f,function(t){var e=v(f),t={content_ids:t.items.map(function(t){return t.variantId}),content_type:"product_group",currency:n,value:t.total/100,num_items:t.items.length};r("InitiateCheckout",t,{eventID:e.namespace+e.timeStamp})}),d(_,function(t){var e=v(_),t={currency:n,value:t.total/100};r("AddPaymentInfo",t,{eventID:e.namespace+e.timeStamp})}),d(m,function(t){var e=v(m),t={shoptop_order_token:t.id,value:t.orderInfo.total/100,currency:n,content_type:"product",content_name:"",content_ids:t.lineItems.map(function(t){return t.variantId}),num_items:t.lineItems.length};r("Purchase",t,{eventID:e.namespace+e.timeStamp})}),d(y,function(){var t=v(y);r("CompleteRegistration",{value:0,currency:n,content_name:"",status:"register"},{eventID:t.namespace+t.timeStamp})});case 10:case"end":return t.stop()}},t,this)})),function(){return K.apply(this,arguments)})}]);var n,g,F,j,U,G,W,M,B,X,$,K,H=x,V=(e(A,[{key:"loadEvent",value:function(){var t,e;this.isLoaded||(t=STORE_PARAMS.customer&&STORE_PARAMS.customer.email||window.ORDER&&window.ORDER.orderEmail||"",e=window.AD_PINTEREST_PIXEL_ID,pintrk("load",e,{em:t}),this.isLoaded=!0)}},{key:"init",value:($=r(T().mark(function t(){var i,o=this;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:n=e=void 0,window.pintrk||(window.pintrk=function(){window.pintrk.queue.push(Array.prototype.slice.call(arguments))},(e=window.pintrk).queue=[],e.version="3.0",(e=document.createElement("script")).async=!0,e.src="https://s.pinimg.com/ct/core.js",(n=document.getElementsByTagName("script")[0]).parentNode.insertBefore(e,n)),window.addEventListener("load",function(){o.loadEvent(),pintrk("page"),0!=(window.location.pathname||"").indexOf("/products/")&&pintrk("track","pagevisit"),0==(window.location.pathname||"").indexOf("/collections/")&&pintrk("track","viewcategory")},!1),i=this.shopCurrency,d(p,function(t){var e=t.product,t=t.selected,t=t&&t.skuId?t:e.skus[0],e={currency:i,product_ids:[e.spuId],line_items:[{product_category:"",product_id:t.spuId,product_variant_id:t.skuId,product_name:e.goodsTitle,product_price:t.price/100}]};o.loadEvent(),pintrk("track","pagevisit",e)}),d(l,function(t){o.loadEvent(),pintrk("track","search",{search_query:t.searchString})}),d(h,function(t){t={value:parseFloat(t.price*t.quantity/100).toFixed(2),currency:i,line_items:[{product_category:"",product_id:t.skuId,product_name:t.goodsTitle,product_price:Number(t.price),product_quantity:Number(t.quantity||1)}],product_ids:[t.skuId]};o.loadEvent(),pintrk("track","addtocart",t)}),d(m,function(t){var e=0,n=[],r=t.lineItems.map(function(t){return e+=t.quantity,n.push(t.variantId),{product_name:t.variantTitle,product_id:t.variantId,product_quantity:Number(t.quantity),product_price:Number(t.price),product_category:""}}),t={order_id:t.orderInfo.id,value:t.orderInfo.total/100,order_quantity:Number(e),currency:i,line_items:r,product_ids:n};o.loadEvent(),pintrk("track","checkout",t)});case 7:case"end":return t.stop()}var e,n},t,this)})),function(){return $.apply(this,arguments)})}]),A),Y=(e(P,[{key:"init",value:(X=r(T().mark(function t(){var i,e;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e=function(t){var e=0;return t.items.forEach(function(t){e+=t.quantity}),{price:Number(t.total)/100,currency:i,item_ids:t.items.map(function(t){return t.variantId}),item_category:"",number_items:e,payment_info_available:0}},i=this.shopCurrency,d(p,function(t){var e=t.product,t=t.selected,t=t&&t.skuId?t:e.skus[0],e={price:t.price/100,item_ids:[t.skuId],item_category:"products",currency:i,number_items:1};snaptr("track","VIEW_CONTENT",e)}),d(l,function(t){snaptr("track","SEARCH",{search_string:t.searchString})}),d(h,function(t){t={price:parseFloat(t.price*t.quantity/100).toFixed(2),currency:i,item_ids:[t.skuId],number_items:t.quantity,item_category:""};snaptr("track","ADD_CART",t)}),d(f,function(t){t=e(t);snaptr("track","START_CHECKOUT",t)}),d(_,function(t){t=e(t);t.payment_info_available=1,snaptr("track","ADD_BILLING",t)}),d(m,function(t){var e=0,n=[],r=[],t=(t.lineItems.forEach(function(t){e+=t.quantity,r.push(t.variantId),n.push({variant_id:t.variantId,sku:t.sku,variant_title:t.variantTitle,quantity:t.quantity,price:t.price})}),{price:t.orderInfo.total/100,currency:i,item_ids:r,item_category:"",number_items:e,payment_info_available:1,transaction_id:t.orderInfo.id,description:JSON.stringify(n)});snaptr("track","PURCHASE",t)});case 8:case"end":return t.stop()}},t,this)})),function(){return X.apply(this,arguments)})}]),P),z=(e(E,[{key:"init",value:(B=r(T().mark(function t(){var n,r,e;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e=function(t){return{contents:t.items.map(function(t){return{content_id:t.productId,content_type:"product",content_name:t.productHandle,quantity:t.quantity,price:Number(t.price/100)}}),content_category:"",currency:r,value:Number(t.total)/100,query:""}},n=window.AD_TIKTOK_PIXEL_ID,r=this.shopCurrency,d(p,function(t){var e=t.product,t=t.selected,t=t&&t.skuId?t:e.skus[0],e={content_type:"product",content_id:t.spuId,content_category:e.type||"",content_name:e.goodsTitle,currency:r,value:t.price/100,quantity:1,price:t.price/100,query:""};ttq.instance(n).track("ViewContent",e)}),d(l,function(t){t={content_type:"product",content_id:"",content_category:"",content_name:"",currency:r,value:0,quantity:0,price:0,query:t.searchString};ttq.instance(n).track("Search",t)}),d(h,function(t){t={content_type:"product",content_id:t.spuId,content_category:"",content_name:t.goodsTitle,currency:r,value:t.price*t.quantity/100,quantity:t.quantity,price:t.price/100,query:""};ttq.instance(n).track("AddToCart",t)}),d(f,function(t){t=e(t);ttq.instance(n).track("Checkout",t)}),d(_,function(t){t=e(t);t.content_category="contact_information",ttq.instance(n).track("AddBilling",t)}),d(m,function(t){t={contents:t.lineItems.map(function(t,e){return{content_id:t.productId,content_type:"product",content_name:t.productTitle,quantity:t.quantity,price:Number(t.price/100)}}),content_category:"checkout_result",currency:r,value:t.orderInfo.total/100,query:""};ttq.instance(n).track("Purchase",t)}),d(y,function(){ttq.instance(n).track("Registration")});case 10:case"end":return t.stop()}},t,this)})),function(){return B.apply(this,arguments)})}]),E),J=(e(S,[{key:"init",value:(M=r(T().mark(function t(){var e,n,r,i,o,c=this;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:o=function(t){return t.map(function(t,e){return{id:t.productId,name:t.productTitle,brand:"",category:"",variant:t.variantId,list_position:e,price:Number(t.price/100),quantity:t.quantity,google_business_vertical:"retail"}})},e=window.location.pathname||"",n="/"==e||e.startsWith("/home")||e.startsWith("/index")?"index":e.startsWith("/products/")?"product":e.startsWith("/collections/")||e.startsWith("/products")?"product_group":e.startsWith("/promotions/")?"activity":e.startsWith("/search")?"search":e.startsWith("/checkout/")?"checkout":"other",r=this.shopCurrency,i=this.clientId-1!==["product_group","activity"].indexOf(n)&&gtag("event","view_item_list",{currency:r,user_id:i,items:[]}),d(p,function(t){var e=t.product,t=t.selected,t=t&&t.skuId?t:e.skus[0],e={currency:r,user_id:i,items:[{id:e.spuId,name:e.goodsTitle,list_name:"product",brand:"",category:"",variant:t.skuId,price:t.price/100,quantity:1,google_business_vertical:"retail"}]};gtag("event","view_item",e)}),d(l,function(t){gtag("event","search",{user_id:i,search_term:t.searchString})}),d(h,function(t){t={currency:r,user_id:i,items:[{id:t.spuId,name:t.goodsTitle,list_name:n,brand:"",category:"",variant:"",list_position:"",price:parseFloat(t.price*t.quantity/100).toFixed(2),quantity:t.quantity||1,google_business_vertical:"retail"}]};gtag("event","add_to_cart",t)}),d("dataTrack:removeFromCart",function(t){t=t.map(function(t){return{id:t.spuId,name:t.goodsTitle,list_name:n,brand:"",category:"",variant:"",list_position:"",price:t.price/100,quantity:t.quantity||1,google_business_vertical:"retail"}});gtag("event","remove_from_cart",{user_id:i,items:t})}),d(f,function(t){var e=o(t.items),t=a({coupon:t.discountCode,currency:r,user_id:i,items:e},"coupon","");gtag("event","begin_checkout",t)}),d("dataTrack:checkoutStepAddress",function(){gtag("event","set_checkout_option",{user_id:i,checkout_step:2,checkout_option:"content_address",value:""})}),d(_,function(t){var e=o(t.items),t=a({coupon:t.discountCode,currency:r,user_id:i,items:e},"coupon","");gtag("track","checkout_progress",t)}),d(m,function(t){var e=t.orderInfo,t=t.lineItems,t=o(t),e={transaction_id:e.id,affiliation:c.shopId,value:e.total/100,currency:r,user_id:i,tax:e.taxTotal,shipping:e.shippingTotal,coupon:e.discountCode,items:t};gtag("event","purchase",e)});case 13:case"end":return t.stop()}},t,this)})),function(){return M.apply(this,arguments)})}]),S),Q=(e(b,[{key:"init",value:(W=r(T().mark(function t(){var i;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:i=this.shopCurrency,d(p,function(t){var e=t.product,t=t.selected,t=t&&t.skuId?t:e.skus[0],t={content_id:[t.spuId],content_type:"product",value:t.price/100,content_name:e.goodsTitle,currency:i};twq("track","ViewContent",t)}),d(h,function(t){t={content_id:t.spuId,content_type:"product",value:t.price*t.quantity/100,content_name:t.goodsTitle,currency:i};twq("track","AddToCart",t)}),d(f,function(t){var e=0,n=[],r=[],t=(t.items.forEach(function(t){e+=t.quantity,n.push(t.productId),r.push(t.productTitle)}),{content_type:"product_group",content_id:n,currency:i,value:Number(t.total)/100,num_items:e,content_name:r});twq("track","InitiateCheckout",t)}),d(m,function(t){var e,n=[],t=(t.lineItems.forEach(function(t){n.push(t.productId),e+=t.quantity}),{currency:i,value:t.orderInfo.total/100,content_id:n,content_type:"product_group",num_items:e});twq("track","Purchase",t)});case 5:case"end":return t.stop()}},t,this)})),function(){return W.apply(this,arguments)})}]),b),Z=(e(w,[{key:"init",value:(G=r(T().mark(function t(){var r,i;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:r=window.AD_TABOOLA_PIXEL_ID,i=this.shopCurrency,d(p,function(t){var e=t.product,t=t.selected,t=(t&&t.skuId?t:e.skus[0]).price/100;_tfa.push({notify:"event",name:"view_content",id:r,revenue:t,currency:i,quantity:1})}),d(h,function(t){var e=t.price*t.quantity/100;_tfa.push({notify:"event",name:"add_to_cart",id:r,revenue:e,currency:i,quantity:t.quantity})}),d(f,function(t){var e=0,t=(t.items.forEach(function(t){e+=t.quantity}),Number(t.total)/100);_tfa.push({notify:"event",name:"start_checkout",id:r,revenue:t,currency:i,quantity:e})}),d(m,function(t){var e=0,n=(t.lineItems.forEach(function(t){e+=t.quantity}),t.orderInfo.total/100);_tfa.push({notify:"event",name:"make_purchase",id:r,revenue:n,currency:i,quantity:e,orderid:t.orderInfo.id})}),d(l,function(t){_tfa.push({notify:"event",name:"search",id:r})}),d(y,function(){_tfa.push({notify:"event",name:"complete_registration",id:r})});case 8:case"end":return t.stop()}},t,this)})),function(){return G.apply(this,arguments)})}]),w),tt=(e(k,[{key:"init",value:(U=r(T().mark(function t(){var e,r,i,n;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:n=window.AD_GOOGLE_ADS_MULTI_PIXEL_ID,e=["","page","home","addToCart","initiateCheckout","purchase","completeRegistration"],r={page:[],home:[],addToCart:[],initiateCheckout:[],purchase:[],completeRegistration:[]},n.forEach(function(t){r[e[t.trackType]].push(t)}),i=this.shopCurrency,r.page.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken)})}),"/"!==(n=window.location.pathname)&&"/index"!==n||r.home.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken)})}),d(h,function(t){var e=t.price*t.quantity/100;r.addToCart.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken),value:e,currency:i})})}),d(f,function(t){var e=Number(t.total)/100;r.initiateCheckout.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken),value:e,Currency:i})})}),d(m,function(e){var n=e.orderInfo.total/100;r.purchase.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken),value:n,Currency:i,transaction_id:e.orderInfo.id})})}),d(y,function(){r.completeRegistration.forEach(function(t){gtag("event","conversion",{send_to:"AW-".concat(t.pixelId,"/").concat(t.accessToken)})})});case 12:case"end":return t.stop()}},t,this)})),function(){return U.apply(this,arguments)})}]),k),et=(e(I,[{key:"init",value:(j=r(T().mark(function t(){var e;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.setSaEvent();case 2:return t.next=4,this.getLoginInfo();case 4:e=t.sent,this.login(e),this.initSaData(),window.AD_TRACK_FP_CONVERSION_API&&sa.registerPage({isOpen:1}),sa.quick("autoTrack"),this.setDomEvent(),this.loadOtherPixel();case 11:case"end":return t.stop()}},t,this)})),function(){return j.apply(this,arguments)})},{key:"loadOtherPixel",value:(F=r(T().mark(function t(){var e;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:e={shopId:this.shopId,clientId:this.clientId,currency:this.shopCurrency};try{window.AD_TRACK_FP_MULTI_PIXEL_ID&&new H(e),window.AD_PINTEREST_PIXEL_ID&&new V(e),window.AD_SNAPCHAT_PIXEL_ID&&new Y(e),window.AD_TIKTOK_PIXEL_ID&&new z(e),window.AD_TRACK_GA_PIXEL_ID&&new J(e),window.AD_TWITTER_PIXEL_ID&&new Q(e),window.AD_TABOOLA_PIXEL_ID&&new Z(e),window.AD_GOOGLE_ADS_MULTI_PIXEL_ID&&new tt(e)}catch(t){console.error("analysis error",t)}case 2:case"end":return t.stop()}},t,this)})),function(){return F.apply(this,arguments)})},{key:"getClientId",value:function(){var t=c("client_id");return t||u("client_id",t=(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString(),{expires:365,path:"/"}),t}},{key:"initSaData",value:function(){this.setOrderSource();var t=navigator.userAgent,e=document.referrer,n=c("shoptop_source"),n=n?JSON.parse(decodeURI(n)).$latest_referrer_host:"",e={shopId:this.shopId,client:/(Android|webOS|iPhone|iPod|tablet|BlackBerry|Mobile)/i.test(t)?"mobile":"pc",clientId:c("client_id"),$referrer:e,$referrer_host:e?e.split("/")[2]:"",$title:document.title,$url:location.href,$url_path:location.pathname,user_agent:t,language:"",order_source:n,$timezone_offset:(new Date).getTimezoneOffset(),event_id:(new Date).getTime().toString()+(400*Math.random().toFixed(2)+100).toString()};sa.registerPage(e)}},{key:"login",value:function(t){t?(sa.login(t),sa.registerPage({logined:1})):(sa.identify(this.clientId),sa.registerPage({logined:0}))}},{key:"getLoginInfo",value:(g=r(T().mark(function t(){return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(window.STORE_PARAMS.customer&&window.STORE_PARAMS.customer.userId)return t.abrupt("return",window.STORE_PARAMS.customer.userId);t.next=4;break;case 4:return t.abrupt("return",!1);case 5:case"end":return t.stop()}},t)})),function(){return g.apply(this,arguments)})},{key:"setDomEvent",value:function(){window.Shoptop.event.on("shoptop:product:skuChange",function(t){window.Shoptop.event.emit(p,t)})}},{key:"setSaEvent",value:(n=r(T().mark(function t(){var r,i=this;return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:r=this.shopCurrency,this.addListener(p,function(t){var e=v(p),n=t.product,t=t.selected,t=t&&t.skuId?t:n.skus[0],n={spuId:t.spuId,skuId:t.skuId,price:t.price/100,value:t.price/100,goodsTitle:n.goodsTitle,goodsHandle:n.handle,currency:r,content_category:"",event_id:e.namespace+e.timeStamp,TP_fbc:c("_fbc")||i.getAdFbc(),TP_fbp:c("_fbp"),TP_content_type:"product",TP_content_ids:t.skuId};sa.track("productView",n)}),this.addListener(l,function(t){var e=v(l),t={search_string:t.searchString,has_result:0<t.hasResult,event_id:e.namespace+e.timeStamp};sa.track("productSearch",t)}),this.addListener(h,function(t){var e=v(h),e={spuId:t.spuId,skuId:t.skuId,price:t.price/100,value:t.price*t.quantity/100,num_items:t.quantity,goodsTitle:t.goodsTitle,goodsHandle:t.handle,currency:r,event_id:e.namespace+e.timeStamp,TP_fbc:c("_fbc")||i.getAdFbc(),TP_fbp:c("_fbp"),TP_content_type:"product",TP_content_ids:[t.skuId]};sa.track("addToCart",e)}),this.addListener(f,function(t){var e=v(f),e={order_id:t.id,currency:r,num_items:t.items.length,value:t.total/100,event_id:e.namespace+e.timeStamp,TP_content_type:"product_group",TP_fbc:c("_fbc")||i.getAdFbc(),TP_fbp:c("_fbp"),TP_content_ids:t.items.map(function(t){return t.variantId})};sa.track("initiateCheckout",e)}),this.addListener(_,function(t){var e=v(_),t={order_id:t.id,currency:r,value:t.total,event_id:e.namespace+e.timeStamp,TP_fbc:c("_fbc")||i.getAdFbc(),TP_fbp:c("_fbp")};sa.track("checkoutStepPayment",t)}),this.addListener(m,function(t){var e=v(m),n=t.shippingAddress,e={order_id:t.orderInfo.id,currency:r,num_items:t.lineItems.length,value:t.orderInfo.total/100,event_id:e.namespace+e.timeStamp,TP_content_type:"product",TP_content_ids:t.lineItems.map(function(t){return t.variantId}),TP_em:n.email||"",TP_fn:n.firstName||"",TP_ln:n.lastName||"",TP_ph:n.phone||"",TP_ct:n.city||"",TP_st:n.provinceCode||"",TP_zp:n.zip||"",TP_cc:n.countryCode||"",TP_fbc:c("_fbc")||i.getAdFbc(),TP_fbp:c("_fbp")};sa.track("purchase",e)}),this.addListener(y,function(){var t=v(y),t={currency:r,event_id:t.namespace+t.timeStamp};sa.track("completeRegistration",t)}),this.addListener("dataTrack:logout",function(){sa.logout()});case 9:case"end":return t.stop()}},t,this)})),function(){return n.apply(this,arguments)})},{key:"addListener",value:function(t,n){var e;window.Shoptop.event.on(t,(e=r(T().mark(function t(e){return T().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:n(e);case 1:case"end":return t.stop()}},t)})),function(t){return e.apply(this,arguments)}))}},{key:"setOrderSource",value:function(){var e=document.referrer,n=location.href,r=navigator.userAgent,t=([["Facebook",/(facebook)|(fbclid=.+)/i,/fbclid=.+/,/FBAV|FBAN|FBIOS/i],["GoogleAds",/gclid=.+/i,/gclid=.+/i,0],["Google",/google/i,0,0],["Instagram",/instagram/i,0,/instagram/i],["Pinterest",/(pinterest)|(epik=.+)/i,/epik=.+/i,/pinterest/i],["Snapchat",/snapchat/i,0,/snapchat/i],["TikTok",/ads.tiktok/i,0,/tiktok/i],["Mailchimp",/mc_cid=.+/i,0,0],["Baidu",/baidu/i,0,0],["YouTube",/youtube/i,0,/youtube/i],["Twitter",/(twitter)|(t.co)/i,0,/twitter/i],["LinkedIn",/linkedin/i,0,/linkedin/i],["WhatsApp",/whatsapp/i,0,/whatsapp/i],["Reddit",/reddit/i,0,0],["Yahoo",/yahoo/i,0,0],["Bing",/bing/i,0,0],["Yandex",/yandex/i,0,0]].find(function(t){return t[1]&&t[1].test(e)||t[2]&&t[2].test(n)||t[3]&&t[3].test(r)})||[""])[0],i="shoptop_source",o=new Date((new Date).getTime()+6048e5);if(!c(i)){u(i,encodeURI(JSON.stringify({$first_visit_url:n,$latest_referrer_host:t,expire:o.getTime()})),{expires:7,path:"/"});try{localStorage[i]=c(i)}catch(e){}}if(c(i)||!localStorage[i]||!((t=JSON.parse(localStorage[i]))&&t.expire)<(new Date).getTime()&&u(i,localStorage[i],{expires:7,path:"/"}),c(i)&&!localStorage[i])try{localStorage[i]=c(i)}catch(e){}}},{key:"i",value:function(t,e,n){var r=new Date;return r.setTime(r.getTime()+31536e6),document.cookie=t+"="+encodeURIComponent(e)+";expires="+(n||r).toGMTString()+";domain="+location.host.split(".").map(function(t,e,n){return 0==e&&2<n.length?"":t}).join(".")+";path=/",!0}},{key:"getAdFbc",value:function(){var e=new RegExp("(^|&)fbclid=([^&]*)(&|$)"),e=window.location.search.substr(1).match(e);return null!=e&&t?(e="fb.1."+t+"."+e[2],this.i("fbclid",e),decodeURIComponent(e)):c("fbclid")||""}}]),I);function I(){i(this,I),window.log=function(){Array.prototype.slice.call(arguments)},this.shopCurrency=STORE_PARAMS.shopCurrency,this.shopId=STORE_PARAMS.shopId,this.clientId=this.getClientId(),this.timer=null,this.init()}function k(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,k),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function w(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,w),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function b(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,b),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function S(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,S),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function E(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,E),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function P(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,P),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}function A(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,A),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.isLoaded=!1,this.init()}function x(t){var e=t.currency,n=t.clientId,t=t.shopId;i(this,x),this.shopCurrency=e,this.shopId=t,this.clientId=n,this.init()}var q={sdk_url:"https://static.staticxt.com/oss/sensorsdata.min.js",name:"sa",server_url:"".concat(SHOPTOP.saServerUrl,"/api/mbr/statistics/collect/sa?project=production"),show_log:!1},nt=q.sdk_url,C=q.name,L=window,rt=document,D=null,O=null;if(void 0===L.sensorsDataAnalytic201505){L.sensorsDataAnalytic201505=C,L[C]=L[C]||function(t){return function(){(L[C]._q=L[C]._q||[]).push([t,arguments])}};for(var R=["track","quick","register","registerPage","registerOnce","trackSignup","trackAbtest","setProfile","setOnceProfile","appendProfile","incrementProfile","deleteProfile","unsetProfile","identify","login","logout","trackLink","clearAllRegister","getAppStatus"],N=0;N<R.length;N++)L[C][R[N]]=L[C].call(null,R[N]);L[C]._t||(D=rt.createElement("script"),O=rt.getElementsByTagName("script")[0],D.async=1,D.src=nt,D.setAttribute("charset","UTF-8"),L[C].para=q,O.parentNode.insertBefore(D,O))}new et}(); </script> <style>:root{--swiper-theme-color:#007aff}.swiper{list-style:none;margin-left:auto;margin-right:auto;overflow:hidden;padding:0;position:relative;z-index:1}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{box-sizing:content-box;display:flex;height:100%;position:relative;transition-property:transform;width:100%;z-index:1}.swiper-android .swiper-slide,.swiper-wrapper{transform:translateZ(0)}.swiper-pointer-events{touch-action:pan-y}.swiper-pointer-events.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;height:100%;position:relative;transition-property:transform;width:100%}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{backface-visibility:hidden;transform:translateZ(0)}.swiper-css-mode>.swiper-wrapper{-ms-overflow-style:none;overflow:auto;scrollbar-width:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-horizontal.swiper-css-mode>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-vertical.swiper-css-mode>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-centered>.swiper-wrapper:before{content:"";flex-shrink:0;order:9999}.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-start:var(--swiper-centered-offset-before);margin-inline-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-horizontal>.swiper-wrapper:before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{-webkit-margin-before:var(--swiper-centered-offset-before);margin-block-start:var(--swiper-centered-offset-before)}.swiper-centered.swiper-vertical>.swiper-wrapper:before{height:var(--swiper-centered-offset-after);min-width:1px;width:100%}.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper:after{content:"";left:0;pointer-events:none;position:absolute;top:0}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper:after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper:after{height:var(--swiper-virtual-size);width:1px}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{align-items:center;color:var(--swiper-navigation-color,var(--swiper-theme-color));cursor:pointer;display:flex;height:var(--swiper-navigation-size);justify-content:center;margin-top:calc(0px - var(--swiper-navigation-size)/2);position:absolute;top:50%;width:calc(var(--swiper-navigation-size)/44*27);z-index:10}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{cursor:auto;opacity:.35;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{cursor:auto;opacity:0;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);font-variant:normal;letter-spacing:0;line-height:1;text-transform:none!important}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:10px;right:auto}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:"prev"}.swiper-button-next,.swiper-rtl .swiper-button-prev{left:auto;right:10px}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:"next"}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transform:translateZ(0);transition:opacity .3s;z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{left:0;top:20px;width:100%}.swiper-pagination-bullets-dynamic{font-size:0;overflow:hidden}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{position:relative;transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active,.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{background:var(--swiper-pagination-bullet-inactive-color,#000);border-radius:50%;display:inline-block;height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));opacity:var(--swiper-pagination-bullet-inactive-opacity,.2);width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px))}button.swiper-pagination-bullet{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;margin:0;padding:0}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{background:var(--swiper-pagination-color,var(--swiper-theme-color));opacity:var(--swiper-pagination-bullet-opacity,1)}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:10px;top:50%;transform:translate3d(0,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{display:block;margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:transform .2s,top .2s}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,left .2s}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:transform .2s,right .2s}.swiper-pagination-progressbar{background:rgba(0,0,0,.25);position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));height:100%;left:0;position:absolute;top:0;transform:scale(0);transform-origin:left top;width:100%}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{height:4px;left:0;top:0;width:100%}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{height:100%;left:0;top:0;width:4px}.swiper-pagination-lock{display:none}.swiper-scrollbar{background:rgba(0,0,0,.1);border-radius:10px;position:relative;-ms-touch-action:none}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{bottom:3px;height:5px;left:1%;position:absolute;width:98%;z-index:50}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{height:98%;position:absolute;right:3px;top:1%;width:5px;z-index:50}.swiper-scrollbar-drag{background:rgba(0,0,0,.5);border-radius:10px;height:100%;left:0;position:relative;top:0;width:100%}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{align-items:center;display:flex;height:100%;justify-content:center;text-align:center;width:100%}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}.swiper-slide-zoomed{cursor:move}.swiper-lazy-preloader{border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top:4px solid transparent;box-sizing:border-box;height:42px;left:50%;margin-left:-21px;margin-top:-21px;position:absolute;top:50%;transform-origin:50%;width:42px;z-index:10}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s linear infinite}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.swiper .swiper-notification{left:0;opacity:0;pointer-events:none;position:absolute;top:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{margin:0 auto;transition-timing-function:ease-out}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-direction:column;flex-wrap:wrap}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{backface-visibility:hidden;height:100%;pointer-events:none;transform-origin:0 0;visibility:hidden;width:100%;z-index:1}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-next+.swiper-slide,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}.swiper-cube .swiper-cube-shadow{bottom:0;height:100%;left:0;opacity:.6;position:absolute;width:100%;z-index:0}.swiper-cube .swiper-cube-shadow:before{background:#000;bottom:0;content:"";filter:blur(50px);left:0;position:absolute;right:0;top:0}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{backface-visibility:hidden;pointer-events:none;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{backface-visibility:hidden;z-index:0}.swiper-creative .swiper-slide{backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{backface-visibility:hidden;overflow:hidden;transform-origin:center bottom}*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:}::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x:;--tw-pan-y:;--tw-pinch-zoom:;--tw-scroll-snap-strictness:proximity;--tw-ordinal:;--tw-slashed-zero:;--tw-numeric-figure:;--tw-numeric-spacing:;--tw-numeric-fraction:;--tw-ring-inset:;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur:;--tw-brightness:;--tw-contrast:;--tw-grayscale:;--tw-hue-rotate:;--tw-invert:;--tw-saturate:;--tw-sepia:;--tw-drop-shadow:;--tw-backdrop-blur:;--tw-backdrop-brightness:;--tw-backdrop-contrast:;--tw-backdrop-grayscale:;--tw-backdrop-hue-rotate:;--tw-backdrop-invert:;--tw-backdrop-opacity:;--tw-backdrop-saturate:;--tw-backdrop-sepia:}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\[60px\]{bottom:60px}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-1\/3{top:33.333333%}.top-3{top:.75rem}.top-\[21px\]{top:21px}.top-\[30px\]{top:30px}.top-\[50\%\]{top:50%}.z-0{z-index:0}.z-1{z-index:1}.z-10{z-index:10}.z-2{z-index:2}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-modal{z-index:1050}.z-tooltip{z-index:1070}.clear-both{clear:both}.m-0{margin:0}.m-\[15px\]{margin:15px}.m-auto{margin:auto}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-\[-15px\]{margin-left:-15px;margin-right:-15px}.mx-\[15px\]{margin-left:15px;margin-right:15px}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-2\.5{margin-bottom:.625rem;margin-top:.625rem}.my-3{margin-bottom:.75rem;margin-top:.75rem}.my-5{margin-bottom:1.25rem;margin-top:1.25rem}.my-\[15px\]{margin-bottom:15px;margin-top:15px}.my-\[30px\]{margin-bottom:30px;margin-top:30px}.my-\[3px\]{margin-bottom:3px;margin-top:3px}.my-\[5px\]{margin-bottom:5px;margin-top:5px}.-mt-10{margin-top:-2.5rem}.-mt-2{margin-top:-.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-7{margin-bottom:1.75rem}.mb-7\.5{margin-bottom:30px}.mb-9{margin-bottom:2.25rem}.mb-\[15px\]{margin-bottom:15px}.mb-\[26px\]{margin-bottom:26px}.mb-\[40px\]{margin-bottom:40px}.mb-\[70px\]{margin-bottom:70px}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-20{margin-left:5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-10{margin-right:2.5rem}.mr-12{margin-right:3rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-5{margin-right:1.25rem}.mr-8{margin-right:2rem}.mr-\[10px\]{margin-right:10px}.mr-\[5px\]{margin-right:5px}.mr-\[6px\]{margin-right:6px}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-2\.5{margin-top:.625rem}.mt-3{margin-top:.75rem}.mt-3\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-7\.5{margin-top:30px}.mt-8{margin-top:2rem}.mt-\[15px\]{margin-top:15px}.mt-\[18px\]{margin-top:18px}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table-cell{display:table-cell}.table-column{display:table-column}.grid{display:grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-10\.5{height:42px}.h-12{height:3rem}.h-14{height:3.5rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-6\.5{height:26px}.h-7{height:1.75rem}.h-7\.5{height:30px}.h-8{height:2rem}.h-\[14px\]{height:14px}.h-\[20px\]{height:20px}.h-\[46px\]{height:46px}.h-\[50px\]{height:50px}.h-\[54px\]{height:54px}.h-\[64px\]{height:64px}.h-\[73px\]{height:73px}.h-auto{height:auto}.h-full{height:100%}.max-h-full{max-height:100%}.min-h-\[240px\]{min-height:240px}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-1\/4{width:25%}.w-1\/5{width:20%}.w-10{width:2.5rem}.w-10\.5{width:42px}.w-12{width:3rem}.w-14{width:3.5rem}.w-15{width:3.75rem}.w-2\/5{width:40%}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-36{width:9rem}.w-4{width:1rem}.w-4\/5{width:80%}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-7\.5{width:30px}.w-8{width:2rem}.w-\[16px\]{width:16px}.w-\[20px\]{width:20px}.w-\[300px\]{width:300px}.w-\[480px\]{width:480px}.w-\[500px\]{width:500px}.w-\[50px\]{width:50px}.w-\[550px\]{width:550px}.w-\[64px\]{width:64px}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-\[388px\]{max-width:388px}.max-w-full{max-width:100%}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-7{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-7{--tw-translate-y:-1.75rem}.-translate-y-full{--tw-translate-y:-100%}.-translate-y-full,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.-rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-180{--tw-rotate:-180deg}.-rotate-90{--tw-rotate:-90deg}.-rotate-90,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-2{gap:.5rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-9{gap:2.25rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[20px\]{border-radius:20px}.rounded-full{border-radius:9999px}.rounded-global{border-radius:var(--global-border-radius)}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-blog-line{border-color:rgba(0,0,0,.1)}.border-line{border-color:hsla(0,0%,100%,.2)}.bg-\[\#f9fbfc\]{--tw-bg-opacity:1;background-color:rgb(249 251 252/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-desc-bg{--tw-bg-opacity:1;background-color:rgb(243 246 249/var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity))}.bg-header{background-color:var(--color-header-bg)}.bg-icon{background-color:rgba(18,116,255,.08)}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity))}.bg-primary{--tw-bg-opacity:1;background-color:rgb(18 116 255/var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\.2{background-color:hsla(0,0%,100%,.2)}.bg-opacity-30{--tw-bg-opacity:0.3}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-cover{background-size:cover}.bg-bottom{background-position:bottom}.bg-center{background-position:50%}.bg-left{background-position:0}.bg-left-bottom{background-position:0 100%}.bg-left-top{background-position:0 0}.bg-right{background-position:100%}.bg-right-bottom{background-position:100% 100%}.bg-right-top{background-position:100% 0}.bg-top{background-position:top}.bg-no-repeat{background-repeat:no-repeat}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-bottom{-o-object-position:bottom;object-position:bottom}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.object-left-bottom{-o-object-position:left bottom;object-position:left bottom}.object-left-top{-o-object-position:left top;object-position:left top}.object-right{-o-object-position:right;object-position:right}.object-right-bottom{-o-object-position:right bottom;object-position:right bottom}.object-right-top{-o-object-position:right top;object-position:right top}.object-top{-o-object-position:top;object-position:top}.p-16{padding:4rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-7{padding:1.75rem}.p-7\.5{padding:30px}.p-\[15px\]{padding:15px}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.px-7\.5{padding-left:30px;padding-right:30px}.px-9{padding-left:2.25rem;padding-right:2.25rem}.px-\[0\.8rem\]{padding-left:.8rem;padding-right:.8rem}.px-\[15px\]{padding-left:15px;padding-right:15px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[250px\]{padding-left:250px;padding-right:250px}.px-\[30px\]{padding-left:30px;padding-right:30px}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-11{padding-bottom:2.75rem;padding-top:2.75rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-\[15px\]{padding-bottom:15px;padding-top:15px}.py-\[30px\]{padding-bottom:30px;padding-top:30px}.py-\[50px\]{padding-bottom:50px;padding-top:50px}.py-\[64px\]{padding-bottom:64px;padding-top:64px}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-6{padding-bottom:1.5rem}.pb-9{padding-bottom:2.25rem}.pb-\[100\%\]{padding-bottom:100%}.pb-\[12px\]{padding-bottom:12px}.pb-\[140px\]{padding-bottom:140px}.pb-\[35px\]{padding-bottom:35px}.pb-\[50px\]{padding-bottom:50px}.pb-\[56\.25\%\]{padding-bottom:56.25%}.pl-10{padding-left:2.5rem}.pl-7{padding-left:1.75rem}.pl-7\.5{padding-left:30px}.pr-7{padding-right:1.75rem}.pr-7\.5{padding-right:30px}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-10{padding-top:2.5rem}.pt-12{padding-top:3rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-3{padding-top:.75rem}.pt-3\.5{padding-top:.875rem}.pt-5{padding-top:1.25rem}.pt-\[100px\]{padding-top:100px}.pt-\[200px\]{padding-top:200px}.pt-\[30px\]{padding-top:30px}.pt-\[40px\]{padding-top:40px}.pt-\[45px\]{padding-top:45px}.pt-\[50px\]{padding-top:50px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[32px\]{font-size:32px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-1\.4{line-height:1.4}.leading-7{line-height:1.75rem}.leading-\[140px\]{line-height:140px}.leading-\[26px\]{line-height:26px}.leading-\[46px\]{line-height:46px}.leading-loose{line-height:2}.leading-none{line-height:1}.leading-normal{line-height:1.5}.text-\[\#878da3\]{--tw-text-opacity:1;color:rgb(135 141 163/var(--tw-text-opacity))}.text-\[\#E2FC52\]{--tw-text-opacity:1;color:rgb(226 252 82/var(--tw-text-opacity))}.text-\[\#d1d1d1\]{--tw-text-opacity:1;color:rgb(209 209 209/var(--tw-text-opacity))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-current{color:currentColor}.text-desc{color:var(--color-general-text-color-8)}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity))}.text-header-color{color:var(--color-header-text)}.text-link-color{color:var(--general-link-color)}.text-menu-color{color:var(--color-menu-text)}.text-menu-color-6{color:var(--color-menu-text-6)}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity))}.text-primary{--tw-text-opacity:1;color:rgb(18 116 255/var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity))}.text-tag-color{--tw-text-opacity:1;color:rgb(51 51 51/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.btn,.btn--primary{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-primary-btn-bg);border-radius:var(--btn-border-radius);color:var(--color-primary-btn-text);display:inline-block;font-size:1rem;line-height:1.5rem;line-height:1.4em;padding:11px 22px;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.btn,.btn--primary,.button,input[type=submit]{text-transform:var(--type-button-uppercase)}.btn--primary:hover,.btn:hover,button:hover,input[type=submit]:hover{--tw-shadow:0 0 0 1px var(--color-secondary-btn-bg);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);background-color:var(--color-secondary-btn-bg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);color:var(--color-secondary-btn-text)}.btn--primary[disabled],.btn[disabled],button[disabled],input[type=submit][disabled]{opacity:.5}.btn.btn--quicklook,.btn.btn--secondary,button.btn--quicklook,button.btn--secondary,input[type=submit].btn--quicklook,input[type=submit].btn--secondary{background-color:var(--color-secondary-btn-bg);color:var(--color-secondary-btn-text)}.btn.btn--quicklook:hover,.btn.btn--secondary:hover,button.btn--quicklook:hover,button.btn--secondary:hover,input[type=submit].btn--quicklook:hover,input[type=submit].btn--secondary:hover{background-color:var(--color-primary-btn-bg);color:var(--color-primary-btn-text)}@media only screen and (max-width:767.98px){.btn{font-size:1rem}}.g-shadow{box-shadow:.1px .1px .9px #f3f3f3,.4px .4px 2.1px #f3f3f3,.9px .9px 4px #f3f3f3,1.9px 1.9px 7.1px #f3f3f3,3.9px 3.9px 13.4px #f3f3f3,10px 10px 32px #f3f3f3}.is-disabled{pointer-events:none}.is-hidden{display:none}.container{padding-left:30px;padding-right:30px;width:100%}.container,.page-width{margin-left:auto;margin-right:auto}.page-width{max-width:1400px}.reading-width{margin-left:auto;margin-right:auto;max-width:960px;padding-left:30px;padding-right:30px}@media (min-width:768.98px){.image-text-border{border-bottom:1px solid rgba(0,0,0,.3)}}.banner-title{font-weight:600}.banner-text{margin:16px 0}@media (min-width:768.98px){.banner-text{margin:30px 0}}.xt-mce-view p{margin:15px 0}.g-rounded,.global-border-radius{border-radius:var(--global-border-radius);overflow:hidden}.g-rounded-btn{border-radius:var(--btn-border-radius);overflow:hidden}@media only screen and (max-width:767.98px){.container{padding-left:20px;padding-right:20px}.m-no-container{padding-left:0;padding-right:0}.large-row{margin-bottom:20px;margin-top:20px}.reading-width{padding-left:20px;padding-right:20px}.reading-width--no-mobile-padding{padding-left:0;padding-right:0}}@media only screen and (max-width:479.98px){.container--no-mobile-padding{padding-left:0;padding-right:0}.g-mobile-no-rounded,.global-border-radius--not-extra-small{border-radius:0}}.one_line_text_truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.two_line_text_truncate{-webkit-line-clamp:2}.three_line_text_truncate,.two_line_text_truncate{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.three_line_text_truncate{-webkit-line-clamp:3}.xt-section{display:block}button.loading{color:transparent!important;cursor:default;pointer-events:none;position:relative}button.loading:before{animation:spin 1s linear infinite;background-color:#fff;bottom:0;content:"";height:20px;left:0;margin:auto;-webkit-mask:var(--ui-button-loading-img);mask:var(--ui-button-loading-img);-webkit-mask-size:100% 100%;mask-size:100% 100%;position:absolute;right:0;top:0;width:20px}.input_check{-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;background-color:#fff;border:1px solid #d9d9d9;border-radius:2px;cursor:pointer;height:18px;padding:0;position:relative;transition:all .1s ease-in-out;vertical-align:middle;width:18px}.input_check:after{background-image:url(//static.shoptop.com/admin/checkbox-tick.svg),none;content:"";display:block;height:8px;left:50%;margin-left:-5px;margin-top:-4px;opacity:0;position:absolute;top:50%;transform:scale(.2);transition:all .1s ease-in-out;width:10px}.input_check:disabled:before{background-color:#333;border:1px solid #333;box-sizing:border-box;content:"";display:block;height:1rem;position:absolute;width:1rem}.input_check:checked{background:#000;border-color:#000}.input_check:checked:after{opacity:1;transform:scale(1);transition-delay:.1s}:root{--ui-url-close:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='m594.698 511.995 186.788-186.808a37.693 37.693 0 0 0 0-53.35l-26.7-26.702c-14.7-14.75-38.6-14.75-53.351 0L514.637 431.933 327.839 245.13a37.755 37.755 0 0 0-53.402 0l-26.65 26.701a37.693 37.693 0 0 0 0 53.35L434.576 511.99 247.788 698.778a37.755 37.755 0 0 0 0 53.401l26.65 26.701a37.847 37.847 0 0 0 53.4 0l186.799-186.819L701.44 778.885c14.75 14.7 38.65 14.7 53.35 0l26.701-26.7a37.755 37.755 0 0 0 0-53.402L594.698 511.995z' fill='%23bbb'/%3E%3C/svg%3E");--ui-button-loading-img:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M512 1024q-104 0-199-40-92-39-163-110T40 711Q0 616 0 512q0-15 10.5-25.5T36 476t25.5 10.5T72 512q0 90 35 171 33 79 94 140t140 95q81 34 171 34t171-35q79-33 140-94t95-140q34-81 34-171t-35-171q-33-79-94-140t-140-95q-81-34-171-34-15 0-25.5-10.5T476 36t10.5-25.5T512 0q104 0 199 40 92 39 163 110t110 163q40 95 40 199t-40 199q-39 92-110 163T711 984q-95 40-199 40z' fill='%232a80eb'/%3E%3C/svg%3E") no-repeat}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes tinydown{0%,5%{opacity:0;transform:translateY(-10px)}10%{opacity:1;transform:translateY(-10px)}to{transform:translateY(0)}}[is=ui-dialog]{background-color:rgba(25,28,34,.7);border:0;color:var(--ui-dark,#4c5161);display:grid;font-size:var(--ui-font,14px);height:100%;left:0;overflow:auto;padding:0;place-items:center;position:fixed;top:0;width:100%;z-index:1000}[is=ui-dialog]:not([open]){display:none}.ui-dialog-animation{animation:fadeIn .2s both}.ui-dialog-confirm-modal>.ui-dialog{background-color:#fff}[is=ui-dialog]+[is=ui-dialog]{background-color:transparent;transition:background-color .2s}.ui-dialog{background-color:var(--general-bg-color);border-radius:var(--ui-radius,4px);display:flex;flex-direction:column;max-width:calc(100vw - 2rem);min-width:min(400px,calc(100vw - 2rem));outline:none;position:relative}.ui-dialog[style*=" width:"],.ui-dialog[style^="width:"]{min-width:auto}.order-dialog .ui-dialog-body{border-radius:0 0 6px 6px;bottom:0!important}.order-dialog .ui-dialog-footer{display:none}.ui-dialog-animation .ui-dialog{animation:tinydown .2s}.ui-dialog-title{background:var(--general-bg-color);border-bottom:1px solid #e1ebf0;border-radius:4px 4px 0;border-bottom-left-radius:0;color:var(--ui-dark,#4c5161);cursor:default;font-size:var(--ui-font,16px);font-weight:700;line-height:40px;margin:0;padding:10px 50px 10px 30px;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:99}.ui-dialog-close{background:none;border:0;cursor:pointer;font-size:0;height:40px;min-width:0;padding:0;position:absolute;right:7px;top:8px;width:40px;z-index:100}.ui-dialog-close:before{background-color:var(--ui-gray,#a2a9b6);content:"";height:inherit;left:0;-webkit-mask:var(--ui-url-close) no-repeat center /24px;mask:var(--ui-url-close) no-repeat center /24px;position:absolute;top:0;transition:background-color .2s;width:inherit}.ui-dialog-close:hover{background-color:initial;box-shadow:none;color:#4c5161}.ui-dialog-close:hover:before{background-color:var(--color-warning)}.ui-dialog-body{display:flow-root;min-height:60px;padding:10px 25px 20px}.ui-dialog-title:empty~.ui-dialog-body{min-height:40px;padding-top:30px}@supports not (display:flow-root){.ui-dialog-body:after{clear:both;content:"";display:table}}.ui-dialog-footer{background:var(--general-bg-color);border-radius:0 4px 4px;margin-top:auto;opacity:1;overflow:hidden;padding:14px 20px;text-align:right;transition:max-height .2s,opacity .2s}.ui-dialog-footer:empty{max-height:0;opacity:0}.ui-dialog-footer button{font-size:13px;height:2.35rem;margin-left:15px;min-width:80px;padding:10px 14px}.ui-dialog-footer button:first-child{margin-left:0}.ui-dialog-stretch{height:100%;max-height:550px}.ui-dialog-stretch .ui-dialog-footer{border-top:1px solid #e1ebf0;border-top-right-radius:0;bottom:0;left:0;position:absolute;right:0}.ui-dialog-stretch .ui-dialog-body{background:var(--general-bg-color);bottom:70px;left:0;overflow:auto;padding:20px;position:absolute;right:0;top:60px}.ui-dialog-alert,.ui-dialog-confirm{word-wrap:break-word;font-size:calc(var(--ui-font,14px) + 2px);max-width:min(340px,calc(100vw - 2rem));min-height:40px;overflow:hidden;position:relative}.ui-dialog-wrap>h6{font-size:calc(var(--ui-font,14px) + 1px);margin-bottom:5px;margin-top:0}.ui-dialog-wrap>h6~p{font-size:var(--ui-font,14px)}.ui-dialog-wrap>p{margin:0}.ui-dialog-danger,.ui-dialog-remind,.ui-dialog-success,.ui-dialog-warning{background-position:0 0;background-repeat:no-repeat;background-size:40px 40px;display:flex;flex-direction:column;justify-content:center}.ui-dialog-loading .ui-dialog-close,.ui-dialog-loading .ui-dialog-footer,.ui-dialog-loading .ui-dialog-title{visibility:hidden}@media (pointer:coarse){.ui-dialog-footer{display:flex;justify-content:flex-end}.ui-dialog-footer .ui-button{flex:1}}@media (prefers-reduced-motion:reduce){.ui-dialog-animation,.ui-dialog-animation .ui-dialog{animation:none}.ui-dialog-close:before,.ui-dialog-footer,[is=ui-dialog]+[is=ui-dialog]{transition:none}}@media only screen and (max-width:767.98px){.mobile-dialog{align-items:flex-end;display:flex}.mobile-dialog .ui-dialog{height:calc(100% - 150px);max-width:100%;width:100%!important}}.swiper-button-disabled{cursor:auto;opacity:.2;pointer-events:none}.rte{word-wrap:break-word;overflow-wrap:break-word}.rte h1{font-size:calc(var(--type-title-font-size)*1.413)}.rte h2{font-size:calc(var(--type-title-font-size)*1.18)}.rte h3{font-size:var(--type-title-font-size) px}.rte h4{font-size:calc(var(--type-title-font-size)*.825)}.rte h5{font-size:calc(var(--type-title-font-size)*.706)}.rte h6{font-size:calc(var(--type-title-font-size)*.6)}.rte h1,.rte h2,.rte h3,.rte h4,.rte h5,.rte h6{line-height:var(--type-title-line-height);margin:30px 0 15px}.rte img{height:auto}.rte table{table-layout:fixed}.rte blockquote{font-size:1.25rem}.rte ol,.rte ul{margin:15px 0 15px 30px;padding:0}.rte li,.rte ol,.rte ul{list-style:inherit}.rte ul{list-style:disc outside}.rte ul ul{list-style:circle outside}.rte ul ul ul{list-style:square outside}.rte cite{font-size:1rem}.rte input,.rte select,.rte textarea{margin:5px 5px 5px 0}.rte__video-wrap{border-radius:var(--global-border-radius);height:0;overflow:hidden;padding-bottom:56.25%;position:relative}.rte__video-wrap iframe{height:100%;left:0;position:absolute;top:0;width:100%}.rte__table-wrap{-webkit-overflow-scrolling:touch;max-width:100%;overflow:auto}@media only screen and (max-width:767.98px){.rte__video-wrap{border-radius:0;margin-left:-20px;margin-right:-20px}}@media only screen and (max-width:479.98px){.rte__video-wrap{border-radius:0}}.gm-style-cc,.gm-style-cc+div{visibility:hidden}.rimage-wrapper .rimage__image{height:100%;left:0;position:absolute;top:0;width:100%}@media (min-width:767.98px){main [data-section-type=slideshow]:first-of-type .container{margin-top:60px}}@media (max-width:767.98px){main [data-section-type=slideshow]:first-of-type .container{margin-top:0}}.fade-in-bottom{animation:fade-in-bottom .6s cubic-bezier(.39,.575,.565,1) both}@keyframes fade-in-bottom{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.last\:mr-0:last-child{margin-right:0}.hover\:text-body-color:hover{color:var(--general-text-color)}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.dark\:bg-green-800{--tw-bg-opacity:1;background-color:rgb(22 101 52/var(--tw-bg-opacity))}.dark\:bg-orange-700{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity))}.dark\:bg-red-800{--tw-bg-opacity:1;background-color:rgb(153 27 27/var(--tw-bg-opacity))}.dark\:bg-opacity-80{--tw-bg-opacity:0.8}.dark\:text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.dark\:text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity))}.dark\:text-orange-200{--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity))}.dark\:text-red-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity))}}@media (min-width:640px){.sm\:w-\[300px\]{width:300px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:relative{position:relative}.md\:top-\[11px\]{top:11px}.md\:top-\[23px\]{top:23px}.md\:my-6{margin-bottom:1.5rem;margin-top:1.5rem}.md\:my-8{margin-bottom:2rem;margin-top:2rem}.md\:mb-10{margin-bottom:2.5rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-\[15px\]{margin-bottom:15px}.md\:mb-\[40px\]{margin-bottom:40px}.md\:mb-\[60px\]{margin-bottom:60px}.md\:ml-0{margin-left:0}.md\:ml-14{margin-left:3.5rem}.md\:ml-4{margin-left:1rem}.md\:mr-0{margin-right:0}.md\:mr-14{margin-right:3.5rem}.md\:mr-2{margin-right:.5rem}.md\:mr-4{margin-right:1rem}.md\:mt-10{margin-top:2.5rem}.md\:mt-11{margin-top:2.75rem}.md\:mt-12{margin-top:3rem}.md\:mt-15{margin-top:3.75rem}.md\:mt-3{margin-top:.75rem}.md\:mt-3\.5{margin-top:.875rem}.md\:mt-4{margin-top:1rem}.md\:mt-5{margin-top:1.25rem}.md\:mt-6{margin-top:1.5rem}.md\:mt-7{margin-top:1.75rem}.md\:mt-7\.5{margin-top:30px}.md\:mt-8{margin-top:2rem}.md\:mt-\[50px\]{margin-top:50px}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:h-\[678px\]{height:678px}.md\:h-\[72px\]{height:72px}.md\:h-\[76px\]{height:76px}.md\:h-auto{height:auto}.md\:w-0{width:0}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-1\/4{width:25%}.md\:w-1\/5{width:20%}.md\:w-10\/12{width:83.333333%}.md\:w-2\/5{width:40%}.md\:w-\[320px\]{width:320px}.md\:w-\[40\%\]{width:40%}.md\:w-\[48\%\]{width:48%}.md\:max-w-\[720px\]{max-width:720px}.md\:flex-1{flex:1 1 0%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:items-end{align-items:flex-end}.md\:justify-start{justify-content:flex-start}.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-12{gap:3rem}.md\:gap-4{gap:1rem}.md\:gap-7{gap:1.75rem}.md\:gap-7\.5{gap:30px}.md\:overflow-hidden{overflow:hidden}.md\:p-15{padding:3.75rem}.md\:px-0{padding-left:0;padding-right:0}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-4{padding-left:1rem;padding-right:1rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[20px\]{padding-left:20px;padding-right:20px}.md\:px-\[30px\]{padding-left:30px;padding-right:30px}.md\:py-7{padding-bottom:1.75rem;padding-top:1.75rem}.md\:py-7\.5{padding-bottom:30px;padding-top:30px}.md\:py-\[18px\]{padding-bottom:18px;padding-top:18px}.md\:py-\[26px\]{padding-bottom:26px;padding-top:26px}.md\:py-\[50px\]{padding-bottom:50px;padding-top:50px}.md\:pb-12{padding-bottom:3rem}.md\:pb-15{padding-bottom:3.75rem}.md\:pb-20{padding-bottom:5rem}.md\:pb-5{padding-bottom:1.25rem}.md\:pb-\[100px\]{padding-bottom:100px}.md\:pb-\[45px\]{padding-bottom:45px}.md\:pb-\[84px\]{padding-bottom:84px}.md\:pb-\[90px\]{padding-bottom:90px}.md\:pl-\[11\%\]{padding-left:11%}.md\:pr-\[11\%\]{padding-right:11%}.md\:pt-11{padding-top:2.75rem}.md\:pt-15{padding-top:3.75rem}.md\:pt-16{padding-top:4rem}.md\:pt-20{padding-top:5rem}.md\:pt-24{padding-top:6rem}.md\:pt-\[64px\]{padding-top:64px}.md\:pt-\[90px\]{padding-top:90px}.md\:text-left{text-align:left}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-\[80px\]{font-size:80px}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem}.md\:leading-7,.md\:text-lg{line-height:1.75rem}.md\:leading-\[24px\]{line-height:24px}.md\:leading-\[34px\]{line-height:34px}.md\:leading-\[42px\]{line-height:42px}.md\:leading-tight{line-height:1.25}}@media (min-width:1024px){.lg\:absolute{position:absolute}.lg\:left-0{left:0}.lg\:right-0{right:0}.lg\:top-30{top:7.5rem}.lg\:my-0{margin-bottom:0;margin-top:0}.lg\:-mt-6{margin-top:-1.5rem}.lg\:mb-10{margin-bottom:2.5rem}.lg\:mb-\[116px\]{margin-bottom:116px}.lg\:ml-12{margin-left:3rem}.lg\:mr-2{margin-right:.5rem}.lg\:mr-2\.5{margin-right:.625rem}.lg\:mr-6{margin-right:1.5rem}.lg\:mt-0{margin-top:0}.lg\:mt-16{margin-top:4rem}.lg\:mt-2{margin-top:.5rem}.lg\:mt-2\.5{margin-top:.625rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-\[53\.3854\%\]{width:53.3854%}.lg\:w-full{width:100%}.lg\:max-w-\[920px\]{max-width:920px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:flex-col{flex-direction:column}.lg\:items-center{align-items:center}.lg\:gap-3{gap:.75rem}.lg\:px-5{padding-left:1.25rem;padding-right:1.25rem}.lg\:px-\[70px\]{padding-left:70px;padding-right:70px}.lg\:py-15{padding-bottom:3.75rem;padding-top:3.75rem}.lg\:py-\[15px\]{padding-bottom:15px;padding-top:15px}.lg\:pl-4{padding-left:1rem}.lg\:pt-80{padding-top:20rem}.lg\:text-left{text-align:left}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:hover\:opacity-80:hover{opacity:.8}}@media (min-width:1280px){.xl\:mr-8{margin-right:2rem}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}body,html{-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;background:var(--general-bg-color);color:var(--general-text-color);font-size:var(--type-text-font-size);font-size:1rem;touch-action:pan-y}body{letter-spacing:var(--type-text-letter-spacing);line-height:var(--type-text-line-height)}@media only screen and (max-width:767.98px){body{font-size:calc(var( --type-text-font-size)*.8888)}}.large-text{font-size:1.25rem}.large-text,.standard-text{line-height:var(--type-text-line-height)}.standard-text{font-size:1rem}.small-text,small,th{font-size:.875rem}.small-text,.tiny-text,small,th{line-height:var(--type-text-line-height)}.tiny-text{font-size:.75rem}.placeholder-svg{fill:#bfbfbf;background-color:#f2f3f4;display:block;height:100%;max-height:100%;max-width:100%;width:100%}.product-info__variants-swatch label{background:none;border:2px solid var(--color-select-border);border-radius:var(--color-card-style-radius);font-size:0;margin:10px 10px 0 0;min-width:0;padding:2px}.product-info__variants-swatch label span{background-position:50%;background-repeat:no-repeat;background-size:cover;border-radius:var(--color-card-style-radius);cursor:pointer;display:inline-block;overflow:hidden}.product-info__variants-swatch-modal label{border-width:1px;margin:10px 6px 0 0}.product-info__variants-swatch-modal[data-checked] label{border-color:var(--color-primary-btn-bg)}.product__variants-swatch-info{height:var(--color-card-detail-m-size);width:var(--color-card-detail-m-size)}.product__variants-swatch-list{height:var(--color-card-list-m-size);width:var(--color-card-list-m-size)}@media (min-width:768px){.product__variants-swatch-info{height:var(--color-card-detail-p-size);width:var(--color-card-detail-p-size)}.product__variants-swatch-list{height:var(--color-card-list-p-size);width:var(--color-card-list-p-size)}}.product-info__variants_radio:checked~.product-info__thumbnail,.product-info__variants_radio:checked~.product-info__variants_label{background-color:var(--color-primary-btn-bg);border-color:var(--color-primary-btn-bg);color:var(--color-primary-btn-text)}.product-info__thumbnail:hover,.product-info__variants-swatch_label:hover{background:rgba(0,0,0,.05);cursor:pointer}.product-info__variants_radio:checked~.product-info__variants-swatch_label{background:none;border-color:var(--general-text-color)}[data-qty-type=input] input,[data-qty-type=select] .select-icon,[data-qty-type=select] select{display:block}[data-qty-type=input] .select-icon,[data-qty-type=input] select,[data-qty-type=select] input{display:none}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.bounce1{animation:rotate .8s ease infinite;border:3px solid #fff;border-left:3px solid transparent!important;border-radius:50%;border-right:3px solid transparent!important;border-top:3px solid transparent!important}.bounce1,.bounce2{box-sizing:border-box;height:100%;position:absolute;top:0;width:100%}.bounce2{animation:rotate .8s linear infinite;border:3px dashed #fff;border-left:3px solid transparent!important;border-radius:50%;border-right:3px solid transparent!important;border-top:3px solid transparent!important;opacity:.2}p{margin:15px 0}@media only screen and (min-width:768px){.product-block .btn--quicklook{bottom:10px;left:50%;max-width:320px;min-width:auto;opacity:0;padding:11px 16px;position:absolute;transform:translateX(-50%);transition:opacity .25s;width:calc(100% - 20px)}.product-block .btn--quicklook:focus,.product-block:hover .btn--quicklook{opacity:1}}@media only screen and (max-width:768px){.product-block .btn--quicklook{display:none}}.overlay{padding:30px 30px 35px;pointer-events:none;position:absolute;width:calc(50% - 120px)}.overlay-bg{height:100%;left:0;position:absolute;top:0;width:100%}.overlay-text{margin:15px 0}.overlay-content{position:relative;z-index:1}.avoid-overlaps-item{left:0;position:absolute;top:0;transition:opacity .25s}.overlay a,.overlay button{pointer-events:auto}.overlay--wide{left:50%!important;margin-left:0!important;min-width:auto;transform:translateX(-50%);width:calc(100% - 120px)}.overlay--bottom-wide{bottom:30px}.overlay--bottom-wide,.overlay--low-wide{left:50%!important;min-width:auto;top:auto!important;transform:translateX(-50%);width:calc(100% - 120px)}.overlay--low-wide{bottom:90px;max-width:516px}@media only screen and (max-width:1080px){.overlay-standard{min-width:0;padding:20px 20px 24px;width:calc(50% - 40px)}.overlay-standard.overlay--bottom-wide,.overlay-standard.overlay--wide{min-width:0;width:calc(100% - 40px)}.split-image-section .overlay{width:calc(100% - 40px)}}@media only screen and (max-width:767.98px){.overlay-standard{max-width:calc(100% - 40px);width:auto}.overlay-standard .extra-large-text{font-size:1rem}.mobile-overlay-under .overlay-bg{opacity:1!important}.overlay-standard.mobile-overlay-under{bottom:30px;left:50%!important;margin:0!important;min-width:auto;padding:45px 30px;position:relative;top:auto!important;transform:translateX(-50%);width:calc(100% - 40px)}.split-image-section .overlay,.standout-collection-section .overlay{padding:45px 30px}}.image-product-tag-title{max-width:200px}.avoid-overlaps-item[data-visible=true]{display:none}.icon svg{height:24px;width:24px}.collection-detail_sort-by li .radio+label{align-items:flex-start;cursor:pointer;display:inline-flex;font-size:1em;line-height:1.5em;margin:0;position:relative;vertical-align:top}.collection-detail_sort-by li .radio+label:before{border:1px solid var(--color-option-border);border-radius:50%;content:"";display:block;height:18px;margin-right:10px;margin-top:calc(.75em - 9px);width:18px}.collection-detail_sort-by li .radio:checked+label:after{background-color:var(--general-text-color);border-radius:50%;content:"";height:10px;left:9px;position:absolute;top:.75em;transform:translate(-50%,-50%);width:10px}.collection-filters__items .checkbox+label:before{border:1px solid var(--color-option-border);border-radius:4px;content:"";display:block;height:18px;margin-right:10px;margin-top:calc(.75em - 9px);width:18px}.collection-filters__items .checkbox:checked+label:after{background-color:var(--general-text-color);-o-border-image:initial;border-image:initial;border-style:solid;border-width:0 2px 2px 0;content:"";height:12px;left:9px;position:absolute;top:calc(.75em - 1px);transform:translate(-50%,-50%) rotate(45deg);width:6px}.collection-filters__items .checkbox:checked+label:before{background-color:var(--general-text-color);border-color:var(--general-text-color)}.btn-paypal{animation:paypalAnimation 1s linear 0s infinite normal;background:linear-gradient(90deg,#aaa,#666 50%,#aaa);background-size:200% 100%;border:none;border-radius:4px;height:44px;position:relative;width:100%;z-index:2}.btn-paypal.paypal-loading-success{animation:none;background:transparent}.swiper-slide-thumb-active:after{background-color:var(--general-text-color);bottom:0;content:"";height:3px;opacity:1;position:absolute;transition:opacity .25s;width:100%}.zoom-image-swiper-wrap img{max-width:100%}@media (min-width:767.98px){.zoom-image-swiper-wrap img{max-width:80%}}.section-main-blog .single-column-layout .one-half{max-width:calc(100% - 60px);width:960px}@media only screen and (max-width:767.98px){.section-main-blog .single-column-layout .one-half{max-width:100%}}.article-page .one-half{width:50%}.article-page .article__content-no-image{width:100%}.article-page .article-overlay{bottom:30px;left:50%!important;margin:0!important;min-width:auto;padding:45px 30px;position:relative;top:auto!important;transform:translateX(-50%);width:calc(100% - 40px)}.article-page .single-column-layout.with-image{flex-wrap:wrap}.article-page .single-column-layout.with-image .article-overlay{bottom:30px;display:block;left:50%!important;min-width:auto;padding:45px 30px 0;position:relative;top:auto!important;transform:translateX(-50%);width:calc(100% - 60px)}.article-page .single-column-layout.with-image .article__title{display:none}.article-page .single-column-layout .one-half{width:100%}.article-page .split-column-layout .article__container{padding-left:60px;padding-right:60px;padding-top:30px}@media only screen and (max-width:767.98px){.article__content-no-image .article__container{margin-top:-40px!important}.article__content-no-image .article-page .article-overlay{bottom:0}.article-page .article__title{display:none}.article-page .small-down--one-whole{width:100%}.article-page .single-column-layout .article__container{margin-top:-20px;padding-left:20px;padding-right:20px;padding-top:0}.article-page .split-column-layout.with-image .article__title{display:none}.article-page .split-column-layout .article__container{margin-top:-40px;padding-left:20px;padding-right:20px;padding-top:0}}@keyframes bg-pan-left{0%{background-position:100% 50%}to{background-position:0 50%}}.home-banner--input__wrap{background:#fff;border-radius:999px;height:64px;width:500px}.home-banner--input__wrap-w{width:650px}.home-banner--input__wrap input{border:none;color:#000;flex:1;height:100%;outline:none;padding-left:30px;width:100%}.home-banner--input__wrap input:focus{outline:none}.home-banner--input__btn{background:#1274ff;border-radius:40px;color:#fff;height:54px;width:176px}.home-banner--input__btn:hover{animation:bg-pan-left .5s;background-image:linear-gradient(270deg,#1274ff 50%,#207cff 70%,#4ab9ff)!important;background-size:200% 200%;box-shadow:none;color:#fff}@media screen and (max-width:1024px){.home-banner--input__wrap{background:transparent;border-radius:0;flex-direction:column;height:auto;margin:0 16px;max-width:600px;width:100%}.home-banner--input__wrap input{background:rgba(0,0,0,.3);border-radius:24px;color:#fff;flex:auto;height:48px;width:100%}.home-banner--input__btn{border-radius:24px;height:48px;margin-right:0;margin-top:16px;width:100%}}.grid--uniform .w-1\/3:nth-child(3n+1),.grid--uniform .w-1\/4:nth-child(4n+1){clear:both}.navigation__container{align-items:center;display:flex;justify-content:space-between}.nav__link{display:block;text-decoration:none;transition:color .25s}.header-navigation{background-color:var(--color-menu-bg);padding-top:12px;position:relative;z-index:3}.header-content{z-index:102}.site-nav{letter-spacing:0;margin:0 0 0 -15px;overflow-x:hidden;padding:0;text-transform:none;white-space:nowrap;width:calc(100% + 15px)}.site-nav .site-nav__item{line-height:1.5em;text-align:left}.site-nav>.site-nav__item{display:inline-block;font-size:16px}.site-nav .site-nav__link{display:block;text-decoration:none}.site-nav>.site-nav__item>.site-nav__link{color:var(--color-menu-text);padding:0 15px 12px;position:relative}.site-nav>.site-nav__item>.site-nav__link:hover{color:var(--color-menu-text)}.site-nav .site-nav__invisible{right:0}.site-nav--center{margin-left:0;text-align:center}.site-nav>.site-nav__item>.site-nav__link:after{background-color:var(--color-menu-text);bottom:0;content:"";height:3px;left:0;position:absolute;transform:scaleY(0);transform-origin:bottom;transition:transform .25s;width:100%}.site-nav .site-nav__link:focus:after,.site-nav__item.site-nav--active .site-nav__link:after,.site-nav__item:hover .site-nav__link:after{transform:scaleY(1)}.site-nav__icon{display:inline-block;height:1em;margin-left:.1em;width:18px}.site-nav__dropdown{border-bottom:3px solid var(--color-header-text);box-shadow:0 2px 2px 0 rgba(0,0,0,.15);color:var(--color-header-text);display:none;font-size:14px;position:absolute;top:100%;white-space:normal;width:240px;z-index:6}.site-nav__dropdown--with-promo{width:480px}.site-nav__item--has-dropdown.open>.site-nav__dropdown{display:block}.site-nav .site-nav__dropdown-heading,.site-nav .site-nav__dropdown-link[href="#"]{color:var(--color-header-text);font-size:16px;margin:0 0 .25em}.site-nav .site-nav__dropdown-heading:hover,.site-nav .site-nav__dropdown-link[href="#"]:hover{color:var(--color-header-text)}.mega-dropdown__subitem:not(:first-child) .site-nav__dropdown-link[href="#"],.site-nav__promo .site-nav__dropdown-heading,.small-dropdown__item:not(:first-child) .site-nav__dropdown-link[href="#"]{margin-top:.5em}.site-nav__dropdown-link{color:var(--color-header-text-7);margin:.25em 0}.site-nav__dropdown-link:hover{color:var(--color-header-text)}.small-dropdown{max-height:80vh;overflow-y:auto;padding:15px}.small-dropdown .small-dropdown__item:not(:first-child) .site-nav__dropdown-heading{margin-top:15px}.small-dropdown .small-dropdown__item:not(:last-child) .site-nav__submenu{margin-bottom:15px}.mega-dropdown{left:0;padding-top:15px;width:100%}.mega-dropdown,.mega-dropdown__item{padding-bottom:15px}.site-nav__more-links>.site-nav__dropdown>.small-dropdown__container>.site-nav__item>.site-nav__link{color:var(--color-header-text-7);margin:.25em 0}.site-nav__more-links>.site-nav__dropdown>.small-dropdown__container>.site-nav__item>.site-nav__link:hover{color:var(--color-header-text)}.site-nav__invisible{opacity:0!important;pointer-events:none!important;position:absolute!important}.more-links--with-dropdown>.site-nav__dropdown{left:0;padding:15px 30px;width:100%}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container{width:25%}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item{border-bottom:1px solid var(--color-header-text-3)}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item>.site-nav__link{color:var(--color-header-text);font-size:16px;margin:0;padding:15px 33px 15px 0;position:relative}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item>.site-nav__link>.site-nav__icon{margin-top:-9px;position:absolute;right:10px;top:50%;transform:rotate(-90deg)}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item:last-child{border-bottom:none}.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item.open>.site-nav__dropdown,.more-links--with-dropdown>.site-nav__dropdown>.page-width>.small-dropdown__container>.site-nav__item:hover>.site-nav__dropdown{display:none}.more-links__dropdown-container{left:25%;padding-left:30px;padding-top:15px;position:absolute;right:30px;top:0}.more-links__dropdown-container .site-nav__dropdown{background:transparent;border:none;box-shadow:none;display:block!important;padding:0;position:static}.more-links__dropdown-container .site-nav__link:after{display:none}.more-links__dropdown-container .page-width{max-width:none}.more-links__parent--inactive>.site-nav__link{opacity:.5}.small-nav__item:not(:last-child) .small-nav__link:after{background-color:rgba(9,35,49,.3);content:"";height:100%;position:absolute;right:7.5px;top:0;width:1px}.mobile-site-nav{display:none}@media only screen and (max-width:767.98px){.mobile-site-nav{display:block}.site-nav{display:none}.header-navigation{display:block;padding:0;pointer-events:none;position:static}.header-navigation .navigation__container{display:block;height:100vh;left:0;opacity:0;overflow-y:scroll;position:fixed;top:0;transition:all .15s cubic-bezier(.46,.03,0,1);width:100vw;z-index:999}.header-navigation .navigation__container .site-nav__item:first-child .site-nav__link{padding-left:20px}.header-navigation .mobile-menu-search-bar,.header-navigation .mobile-site-nav{opacity:0;transform:translate3d(0,-10px,0);transition:all .35s cubic-bezier(.46,.03,0,1)}.header-navigation .mobile-menu-search-bar{position:relative;transition-delay:.2s}.header-navigation .mobile-site-nav{transition-delay:.3s}.header-navigation .mobile-menu-search-bar .mobile-menu-search{pointer-events:none}.header-navigation--open{pointer-events:auto}.header-navigation--open .navigation__container{opacity:1}.header-navigation--open .mobile-menu-search-bar,.header-navigation--open .mobile-site-nav{opacity:1;transform:translateZ(0)}.header-navigation--open .search-bar{opacity:1;pointer-events:auto}.header-navigation--open .mobile-menu-search-bar .mobile-menu-search{pointer-events:auto}}.mobile-menu-search-bar{display:none;height:100%;margin:0;width:100%}.mobile-menu-search-bar input{top:50%;transform:translateY(-50%)}@media only screen and (max-width:767.98px){.mobile-menu-search-bar{display:flex}.search-bar-open .hide-for-search-mobile{opacity:0;pointer-events:none}header .store-logo{width:auto!important}}.focus-tint{background:rgba(0,0,0,.3);content:" ";height:100%;left:0;opacity:0;pointer-events:none;position:fixed;top:0;transition:opacity .25s,visibility .25s;visibility:hidden;width:100%;z-index:100}.search-focus-in .focus-tint{opacity:1;pointer-events:auto;visibility:initial}.header-search-loading .bounce1,.header-search-loading .bounce2{border-color:#333}.header-search-product:hover{background-color:rgba(33,43,54,.05)}.store-logo img{display:block;height:auto;margin-left:auto;margin-right:auto;width:100%}.page-header{align-items:center;display:flex;justify-content:space-between;padding:15px 0;position:relative}.action-icon{cursor:pointer;margin:5px;width:30px}@media only screen and (max-width:767.98px){.header-container-center{flex-grow:1;margin-left:10px;margin-right:auto;padding:0;text-align:left}.mobile-header--lock .mobile-fixed-header-inner{box-shadow:0 -2px 10px rgba(0,0,0,.75);left:0;position:fixed;top:0;width:100%;z-index:101}}.expand-menu{border-left:1px solid var(--color-menu-border)}.expand-menu svg{transition:transform .3s}.expand-menu:hover{background-color:transparent;box-shadow:none;color:var(--color-menu-link)}.mobile-header-left-logo .store-logo{margin:0 auto;padding-top:20px;text-align:center}@media only screen and (min-width:767.98px){.header--lock .fixed-header-container-inner{box-shadow:0 -2px 10px rgba(0,0,0,.75);left:0;position:fixed;top:0;width:100%;z-index:101}.header--lock .fixed-header__account{display:flex}.header--lock .fixed-header__centered-search{display:block}}.header-layout__left .search-bar{opacity:1;pointer-events:auto}.header-layout__left .store-logo{margin-right:30px}.header-layout__centered .search-bar{opacity:1;pointer-events:auto}.header-centered-logo{padding:20px 20px 0}.header-centered-logo .store-logo{margin:0 auto;width:auto!important}.m-header-container__lock .m-header-container-inner{box-shadow:0 -2px 10px rgba(0,0,0,.75);left:0;padding-left:20px;padding-right:20px;position:fixed;top:0;width:100%}.show-logged{border-color:var(--color-header-text);top:calc(100% + 8px)}.float-layer-search{display:none;height:100%;left:0;position:absolute;top:0;width:100%;z-index:102}.float-layer-search-wrap{left:0;padding:0 15px;position:absolute;width:100%}@media only screen and (min-width:767.98px){.float-layer-search-wrap{left:15%;padding:0;width:70%}}.mobile-float-search{z-index:101}.mobile-float-search .float-layer-search{background:transparent;color:var(--color-mobile-search-text);display:block!important;position:inherit}.mobile-float-search .float-layer-search-wrap{height:auto;position:inherit}.mobile-float-search .close-mask{display:none}.search-bar__results{background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,.15);color:#000;display:none;left:-30px;padding:15px 0;position:absolute;top:100%;width:calc(100% + 60px)}@media (min-width:767.98px){.smd\:hidden{display:none}.smd\:flex{display:flex}.smd\:justify-center{justify-content:center}.smd\:flex-1{flex:1 1 0%}}.header-cart__count{bottom:.25rem;left:50%;transform:translateX(-50%)}.fade-in-top,details[open] .text-menu{animation:fade-in-top .45s cubic-bezier(.39,.575,.565,1) both}@keyframes fade-in-top{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}.banner-default .banner-text{max-width:500px}.banner-default-content{padding-bottom:50px;padding-top:50px}.banner-button-blue{background:#1274ff;border-radius:40px;color:#fff;padding:10px 48px}.banner-button-blue:hover{animation:bg-pan-left .5s;background-image:linear-gradient(270deg,#1274ff 50%,#207cff 70%,#4ab9ff)!important;background-size:200% 200%}@media (min-width:768.98px){.banner-default-content{padding-bottom:15px;padding-top:15px}.banner-button-blue{padding:13px 48px}}.banner-btc .banner-text{margin:16px 0 32px}.banner-btc-content{padding-bottom:50px;padding-top:50px}@media (min-width:768.98px){.banner-btc-content{padding-bottom:100px;padding-top:100px}.banner-btc .banner-text{margin:20px 0 74px}}.banner-b2b-content{position:relative}.banner-b2b-content p{max-width:500px}.banner-b2b-button{background:#000;border-radius:40px;color:#fff;cursor:pointer;padding:13px 48px}.banner-b2b-button:hover{opacity:.9}.banner-b2b-img-wrap{padding:40px 16px;width:100%}.banner-b2b-content-inner{padding-bottom:50px;padding-top:30px}@media (max-width:768.98px){.banner-b2b{display:flex;flex-direction:column-reverse}}@media (min-width:768.98px){.banner-b2b-content-inner{padding-top:8%}.banner-b2b-img-wrap{padding:70px 125px;width:52%}.banner-b2b-content{position:absolute}}.banner-data .banner-b2b-content{position:absolute}.image-list-content__item{padding-bottom:36.1445%}.image-list-content__item svg{height:100%;left:0;position:absolute;top:0;width:100%}</style> </head> <body class="min-h-screen text-font-family"> <script> /*! art-template@4.13.1 for browser | https://github.com/aui/art-template */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.template=t():e.template=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t,n){"use strict";var r=n(6),i=n(2),o=n(22),s=function(e,t){t.onerror(e,t);var n=function(){return"{Template Error}"};return n.mappings=[],n.sourcesContent=[],n},a=function u(e){var t=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};"string"!=typeof e?t=e:t.source=e,t=i.$extend(t),e=t.source,!0===t.debug&&(t.cache=!1,t.minimize=!1,t.compileDebug=!0),t.compileDebug&&(t.minimize=!1),t.filename&&(t.filename=t.resolveFilename(t.filename,t));var n=t.filename,a=t.cache,c=t.caches;if(a&&n){var l=c.get(n);if(l)return l}if(!e)try{e=t.loader(n,t),t.source=e}catch(m){var f=new o({name:"CompileError",path:n,message:"template not found: "+m.message,stack:m.stack});if(t.bail)throw f;return s(f,t)}var p=void 0,h=new r(t);try{p=h.build()}catch(f){if(f=new o(f),t.bail)throw f;return s(f,t)}var d=function(e,n){try{return p(e,n)}catch(f){if(!t.compileDebug)return t.cache=!1,t.compileDebug=!0,u(t)(e,n);if(f=new o(f),t.bail)throw f;return s(f,t)()}};return d.mappings=p.mappings,d.sourcesContent=p.sourcesContent,d.toString=function(){return p.toString()},a&&n&&c.set(n,d),d};a.Compiler=r,e.exports=a},function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t["default"]=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},function(e,t,n){"use strict";function r(){this.$extend=function(e){return e=e||{},o(e,e instanceof r?e:this)}}var i=n(10),o=n(12),s=n(13),a=n(14),u=n(15),c=n(16),l=n(17),f=n(18),p=n(19),h=n(21),d="undefined"==typeof window,m={source:null,filename:null,rules:[f,l],escape:!0,debug:!!d&&"production"!==process.env.NODE_ENV,bail:!0,cache:!0,minimize:!0,compileDebug:!1,resolveFilename:h,include:s,htmlMinifier:p,htmlMinifierOptions:{collapseWhitespace:!0,minifyCSS:!0,minifyJS:!0,ignoreCustomFragments:[]},onerror:a,loader:c,caches:u,root:"/",extname:".art",ignore:[],imports:i};r.prototype=m,e.exports=new r},function(e,t){},function(e,t,n){"use strict";var r=n(5),i=n(0),o=n(23),s=function(e,t){return t instanceof Object?r({filename:e},t):i({filename:e,source:t})};s.render=r,s.compile=i,s.defaults=o,e.exports=s},function(e,t,n){"use strict";var r=n(0),i=function(e,t,n){return r(e,n)(t)};e.exports=i},function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(7),u=n(9),c="$data",l="$imports",f="print",p="include",h="extend",d="block",m="$$out",v="$$line",g="$$blocks",y="$$slice",b="$$from",w="$$options",x=function(e,t){return Object.hasOwnProperty.call(e,t)},k=JSON.stringify,E=function(){function e(t){var n,s,a=this;o(this,e);var x=t.source,k=t.minimize,E=t.htmlMinifier;if(this.options=t,this.stacks=[],this.context=[],this.scripts=[],this.CONTEXT_MAP={},this.ignore=[c,l,w].concat(i(t.ignore)),this.internal=(n={},r(n,m,"''"),r(n,v,"[0,0]"),r(n,g,"arguments[1]||{}"),r(n,b,"null"),r(n,f,"function(){var s=''.concat.apply('',arguments);"+m+"+=s;return s}"),r(n,p,"function(src,data){var s="+w+".include(src,data||"+c+",arguments[2]||"+g+","+w+");"+m+"+=s;return s}"),r(n,h,"function(from){"+b+"=from}"),r(n,y,"function(c,p,s){p="+m+";"+m+"='';c();s="+m+";"+m+"=p+s;return s}"),r(n,d,"function(){var a=arguments,s;if(typeof a[0]==='function'){return "+y+"(a[0])}else if("+b+"){if(!"+g+"[a[0]]){"+g+"[a[0]]="+y+"(a[1])}else{"+m+"+="+g+"[a[0]]}}else{s="+g+"[a[0]];if(typeof s==='string'){"+m+"+=s}else{s="+y+"(a[1])}return s}}"),n),this.dependencies=(s={},r(s,f,[m]),r(s,p,[m,w,c,g]),r(s,h,[b,p]),r(s,d,[y,b,m,g]),s),this.importContext(m),t.compileDebug&&this.importContext(v),k)try{x=E(x,t)}catch(T){}this.source=x,this.getTplTokens(x,t.rules,this).forEach(function(e){e.type===u.TYPE_STRING?a.parseString(e):a.parseExpression(e)})}return s(e,[{key:"getTplTokens",value:function(){return u.apply(undefined,arguments)}},{key:"getEsTokens",value:function(e){return a(e)}},{key:"getVariables",value:function(e){var t=!1;return e.filter(function(e){return"whitespace"!==e.type&&"comment"!==e.type}).filter(function(e){return"name"===e.type&&!t||(t="punctuator"===e.type&&"."===e.value,!1)}).map(function(e){return e.value})}},{key:"importContext",value:function(e){var t=this,n="",r=this.internal,i=this.dependencies,o=this.ignore,s=this.context,a=this.options,u=a.imports,f=this.CONTEXT_MAP;x(f,e)||-1!==o.indexOf(e)||(x(r,e)?(n=r[e],x(i,e)&&i[e].forEach(function(e){return t.importContext(e)})):n="$escape"===e||"$each"===e||x(u,e)?l+"."+e:c+"."+e,f[e]=n,s.push({name:e,value:n}))}},{key:"parseString",value:function(e){var t=e.value;if(t){var n=m+"+="+k(t);this.scripts.push({source:t,tplToken:e,code:n})}}},{key:"parseExpression",value:function(e){var t=this,n=e.value,r=e.script,i=r.output,o=this.options.escape,s=r.code;i&&(s=!1===o||i===u.TYPE_RAW?m+"+="+r.code:m+"+=$escape("+r.code+")");var a=this.getEsTokens(s);this.getVariables(a).forEach(function(e){return t.importContext(e)}),this.scripts.push({source:n,tplToken:e,code:s})}},{key:"checkExpression",value:function(e){for(var t=[[/^\s*}[\w\W]*?{?[\s;]*$/,""],[/(^[\w\W]*?\([\w\W]*?(?:=>|\([\w\W]*?\))\s*{[\s;]*$)/,"$1})"],[/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/,"$1}"]],n=0;n<t.length;){if(t[n][0].test(e)){var r;e=(r=e).replace.apply(r,i(t[n]));break}n++}try{return new Function(e),!0}catch(o){return!1}}},{key:"build",value:function(){var e=this.options,t=this.context,n=this.scripts,r=this.stacks,i=this.source,o=e.filename,s=e.imports,a=[],f=x(this.CONTEXT_MAP,h),d=0,y=function(e,t){var n=t.line,i=t.start,o={generated:{line:r.length+d+1,column:1},original:{line:n+1,column:i+1}};return d+=e.split(/\n/).length-1,o},E=function(e){return e.replace(/^[\t ]+|[\t ]$/g,"")};r.push("function("+c+"){"),r.push("'use strict'"),r.push(c+"="+c+"||{}"),r.push("var "+t.map(function(e){return e.name+"="+e.value}).join(",")),e.compileDebug?(r.push("try{"),n.forEach(function(e){e.tplToken.type===u.TYPE_EXPRESSION&&r.push(v+"=["+[e.tplToken.line,e.tplToken.start].join(",")+"]"),a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),r.push("}catch(error){"),r.push("throw {"+["name:'RuntimeError'","path:"+k(o),"message:error.message","line:"+v+"[0]+1","column:"+v+"[1]+1","source:"+k(i),"stack:error.stack"].join(",")+"}"),r.push("}")):n.forEach(function(e){a.push(y(e.code,e.tplToken)),r.push(E(e.code))}),f&&(r.push(m+"=''"),r.push(p+"("+b+","+c+","+g+")")),r.push("return "+m),r.push("}");var T=r.join("\n");try{var O=new Function(l,w,"return "+T)(s,e);return O.mappings=a,O.sourcesContent=[i],O}catch(P){for(var $=0,j=0,_=0,S=void 0;$<n.length;){var C=n[$];if(!this.checkExpression(C.code)){j=C.tplToken.line,_=C.tplToken.start,S=C.code;break}$++}throw{name:"CompileError",path:o,message:P.message,line:j+1,column:_+1,source:i,generated:S,stack:P.stack}}}}]),e}();E.CONSTS={DATA:c,IMPORTS:l,PRINT:f,INCLUDE:p,EXTEND:h,BLOCK:d,OPTIONS:w,OUT:m,LINE:v,BLOCKS:g,SLICE:y,FROM:b,ESCAPE:"$escape",EACH:"$each"},e.exports=E},function(e,t,n){"use strict";var r=n(8),i=n(1)["default"],o=n(1).matchToToken,s=function(e){return e.match(i).map(function(e){return i.lastIndex=0,o(i.exec(e))}).map(function(e){return"name"===e.type&&r(e.value)&&(e.type="keyword"),e})};e.exports=s},function(e,t,n){"use strict";var r={"abstract":!0,await:!0,"boolean":!0,"break":!0,"byte":!0,"case":!0,"catch":!0,"char":!0,"class":!0,"const":!0,"continue":!0,"debugger":!0,"default":!0,"delete":!0,"do":!0,"double":!0,"else":!0,"enum":!0,"export":!0,"extends":!0,"false":!0,"final":!0,"finally":!0,"float":!0,"for":!0,"function":!0,"goto":!0,"if":!0,"implements":!0,"import":!0,"in":!0,"instanceof":!0,"int":!0,"interface":!0,"let":!0,"long":!0,"native":!0,"new":!0,"null":!0,"package":!0,"private":!0,"protected":!0,"public":!0,"return":!0,"short":!0,"static":!0,"super":!0,"switch":!0,"synchronized":!0,"this":!0,"throw":!0,"transient":!0,"true":!0,"try":!0,"typeof":!0,"var":!0,"void":!0,"volatile":!0,"while":!0,"with":!0,"yield":!0};e.exports=function(e){return r.hasOwnProperty(e)}},function(e,t,n){"use strict";function r(e){var t=new String(e.value);return t.line=e.line,t.start=e.start,t.end=e.end,t}function i(e,t,n){this.type=e,this.value=t,this.script=null,n?(this.line=n.line+n.value.split(/\n/).length-1,this.line===n.line?this.start=n.end:this.start=n.value.length-n.value.lastIndexOf("\n")-1):(this.line=0,this.start=0),this.end=this.start+this.value.length}var o=function(e,t){for(var n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{},o=[new i("string",e)],s=0;s<t.length;s++)for(var a=t[s],u=a.test.ignoreCase?"ig":"g",c=new RegExp(a.test.source,u),l=0;l<o.length;l++){var f=o[l],p=o[l-1];if("string"===f.type){for(var h=void 0,d=0,m=[],v=f.value;null!==(h=c.exec(v));)h.index>d&&(p=new i("string",v.slice(d,h.index),p),m.push(p)),p=new i("expression",h[0],p),h[0]=r(p),p.script=a.use.apply(n,h),m.push(p),d=h.index+h[0].length;d<v.length&&(p=new i("string",v.slice(d),p),m.push(p)),o.splice.apply(o,[l,1].concat(m)),l+=m.length-1}}return o};o.TYPE_STRING="string",o.TYPE_EXPRESSION="expression",o.TYPE_RAW="raw",o.TYPE_ESCAPE="escape",e.exports=o},function(e,t,n){"use strict";(function(t){function n(e){return"string"!=typeof e&&(e=e===undefined||null===e?"":"function"==typeof e?n(e.call(e)):JSON.stringify(e)),e}function r(e){var t=""+e,n=s.exec(t);if(!n)return e;var r="",i=void 0,o=void 0,a=void 0;for(i=n.index,o=0;i<t.length;i++){switch(t.charCodeAt(i)){case 34:a="&#34;";break;case 38:a="&#38;";break;case 39:a="&#39;";break;case 60:a="&#60;";break;case 62:a="&#62;";break;default:continue}o!==i&&(r+=t.substring(o,i)),o=i+1,r+=a}return o!==i?r+t.substring(o,i):r}/*! art-template@runtime | https://github.com/aui/art-template */ var i="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},o=Object.create(i),s=/["&'<>]/;o.$escape=function(e){return r(n(e))},o.$each=function(e,t){if(Array.isArray(e))for(var n=0,r=e.length;n<r;n++)t(e[n],n);else for(var i in e)t(e[i],i)},e.exports=o}).call(t,n(11))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=Object.prototype.toString,i=function(e){return null===e?"Null":r.call(e).slice(8,-1)},o=function s(e,t){var n=void 0,r=i(e);if("Object"===r?n=Object.create(t||{}):"Array"===r&&(n=[].concat(t||[])),n){for(var o in e)Object.hasOwnProperty.call(e,o)&&(n[o]=s(e[o],n[o]));return n}return e};e.exports=o},function(e,t,n){"use strict";var r=function(e,t,r,i){var o=n(0);return i=i.$extend({filename:i.resolveFilename(e,i),bail:!0,source:null}),o(i)(t,r)};e.exports=r},function(e,t,n){"use strict";var r=function(e){console.error(e.name,e.message)};e.exports=r},function(e,t,n){"use strict";var r={__data:Object.create(null),set:function(e,t){this.__data[e]=t},get:function(e){return this.__data[e]},reset:function(){this.__data={}}};e.exports=r},function(e,t,n){"use strict";var r="undefined"==typeof window,i=function(e){if(r){return n(3).readFileSync(e,"utf8")}var t=document.getElementById(e);return t.value||t.innerHTML};e.exports=i},function(e,t,n){"use strict";var r={test:/{{([@#]?)[ \t]*(\/?)([\w\W]*?)[ \t]*}}/,use:function(e,t,n,i){var o=this,s=o.options,a=o.getEsTokens(i),u=a.map(function(e){return e.value}),c={},l=void 0,f=!!t&&"raw",p=n+u.shift(),h=function(t,n){console.warn((s.filename||"anonymous")+":"+(e.line+1)+":"+(e.start+1)+"\nTemplate upgrade: {{"+t+"}} -> {{"+n+"}}")};switch("#"===t&&h("#value","@value"),p){case"set":i="var "+u.join("").trim();break;case"if":i="if("+u.join("").trim()+"){";break;case"else":var d=u.indexOf("if");~d?(u.splice(0,d+1),i="}else if("+u.join("").trim()+"){"):i="}else{";break;case"/if":i="}";break;case"each":l=r._split(a),l.shift(),"as"===l[1]&&(h("each object as value index","each object value index"),l.splice(1,1));i="$each("+(l[0]||"$data")+",function("+(l[1]||"$value")+","+(l[2]||"$index")+"){";break;case"/each":i="})";break;case"block":l=r._split(a),l.shift(),i="block("+l.join(",").trim()+",function(){";break;case"/block":i="})";break;case"echo":p="print",h("echo value","value");case"print":case"include":case"extend":if(0!==u.join("").trim().indexOf("(")){l=r._split(a),l.shift(),i=p+"("+l.join(",")+")";break}default:if(~u.indexOf("|")){var m=a.reduce(function(e,t){var n=t.value,r=t.type;return"|"===n?e.push([]):"whitespace"!==r&&"comment"!==r&&(e.length||e.push([]),":"===n&&1===e[e.length-1].length?h("value | filter: argv","value | filter argv"):e[e.length-1].push(t)),e},[]).map(function(e){return r._split(e)});i=m.reduce(function(e,t){var n=t.shift();return t.unshift(e),"$imports."+n+"("+t.join(",")+")"},m.shift().join(" ").trim())}f=f||"escape"}return c.code=i,c.output=f,c},_split:function(e){e=e.filter(function(e){var t=e.type;return"whitespace"!==t&&"comment"!==t});for(var t=0,n=e.shift(),r=/\]|\)/,i=[[n]];t<e.length;){var o=e[t];"punctuator"===o.type||"punctuator"===n.type&&!r.test(n.value)?i[i.length-1].push(o):i.push([o]),n=o,t++}return i.map(function(e){return e.map(function(e){return e.value}).join("")})}};e.exports=r},function(e,t,n){"use strict";var r={test:/<%(#?)((?:==|=#|[=-])?)[ \t]*([\w\W]*?)[ \t]*(-?)%>/,use:function(e,t,n,r){return n={"-":"raw","=":"escape","":!1,"==":"raw","=#":"raw"}[n],t&&(r="/*"+r+"*/",n=!1),{code:r,output:n}}};e.exports=r},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}var i="undefined"==typeof window,o=function(e,t){if(i){var o,s=n(20).minify,a=t.htmlMinifierOptions,u=t.rules.map(function(e){return e.test});(o=a.ignoreCustomFragments).push.apply(o,r(u)),e=s(e,a)}return e};e.exports=o},function(e,t){!function(e){e.noop=function(){}}("object"==typeof e&&"object"==typeof e.exports?e.exports:window)},function(e,t,n){"use strict";var r="undefined"==typeof window,i=/^\.+\//,o=function(e,t){if(r){var o=n(3),s=t.root,a=t.extname;if(i.test(e)){var u=t.filename,c=!u||e===u,l=c?s:o.dirname(u);e=o.resolve(l,e)}else e=o.resolve(s,e);o.extname(e)||(e+=a)}return e};e.exports=o},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){var t=e.name,n=e.source,r=e.path,i=e.line,o=e.column,s=e.generated,a=e.message;if(!n)return a;var u=n.split(/\n/),c=Math.max(i-3,0),l=Math.min(u.length,i+3),f=u.slice(c,l).map(function(e,t){var n=t+c+1;return(n===i?" >> ":" ")+n+"| "+e}).join("\n");return(r||"anonymous")+":"+i+":"+o+"\n"+f+"\n\n"+t+": "+a+(s?"\n generated: "+s:"")}var a=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e.message));return n.name="TemplateError",n.message=s(e),Error.captureStackTrace&&Error.captureStackTrace(n,n.constructor),n}return o(t,e),t}(Error);e.exports=a},function(e,t,n){"use strict";e.exports=n(2)}])}); var rule = template.defaults.rules[0]; rule.test = new RegExp(rule.test.source.replace('<%', '<\\\?').replace('%>', '\\\?>')); // 插件 window.template.defaults.imports.mathRound = function (num1,num2) { return Math.round((num1/num2)*100)/100 }; window.template.defaults.imports.formatProductUrl = function (handle) { return "/products/" + handle }; window.template.defaults.imports.formatArticleUrl = function (handle) { return "/blog/" + handle }; window.template.defaults.imports.formatFileImageUrl = function(image, size) { if (!image) { return '' } if (image.indexOf('mp4') < 0) { return `${STORE_PARAMS.imageDomain}/${image}?x-oss-process=style/${size}x` } else { let arr = image.split('?') return `${STORE_PARAMS.imageDomain}/${arr[0]}?x-oss-process=style/${size}x&${arr[1]}` } } window.template.defaults.imports.formatImageSrc = function (image,path,width) { var imagePath = '' if( typeof image === 'string' ) { imagePath = image }else { imagePath = path ? path : image.url ? 'url' : image.src ? 'src' : '' } var imageWidth = width ? width : '{width}' if (!imagePath || !image[imagePath]) return STORE_PARAMS.defaultImage if (image[imagePath].indexOf('svg') > 0) { return `${STORE_PARAMS.imageDomain}/${image[imagePath]}` } if (image[imagePath].indexOf('mp4') < 0) { // 图片数据 return `${STORE_PARAMS.imageDomain}/${image[imagePath]}?x-oss-process=style/${imageWidth}x` } else { // 新视频数据 let arr = image[imagePath].split('?') return `${STORE_PARAMS.imageDomain}/${arr[0]}?x-oss-process=style/${imageWidth}x&${arr[1]}` } }; window.template.defaults.imports.formatImgSrc = function(imagePath, width) { if (!imagePath) return STORE_PARAMS.defaultImage if( imagePath.indexOf("svg") > 0 ) { return imagePath } if (imagePath.indexOf('mp4') < 0) { // 图片数据 return `${imagePath}?x-oss-process=style/${width}x` } else { // 新视频数据 let arr = imagePath.split('?') return `${arr[0]}?x-oss-process=style/${width}x&${arr[1]}` } } window.template.defaults.imports.moneyWithSymbol = function (price, type) { return $.globalFinance(price) }; window.template.defaults.imports.financeMoneyWithShopSymbol= function (num, type) { type = type || 'amount' return STORE_PARAMS.symbol + window.template.defaults.imports.format(parseFloat(num) / 100, type) } window.template.defaults.imports.format = function (number, type) { var formatMap = { amount: { n: 2, x: 3, s: ',', c: '.' }, amount_no_decimals: { n: 0, x: 3, s: ',', c: '' }, amount_with_comma_separator: { n: 2, x: 3, s: '.', c: ',' }, amount_no_decimals_with_comma_separator: { n: 0, x: 3, s: '.', c: '' }, amount_with_apostrophe_separator: { n: 2, x: 3, s: "'", c: '.' } } var config = formatMap[type] || 'amount' var re = '\\d(?=(\\d{' + (config.x || 3) + '})+' + (config.n > 0 ? '\\D' : '$') + ')' var num if (config.n === 0) { num = number.toFixed(0) } else { num = number.toFixed(config.n + 1).slice(0, -1) } return (config.c ? num.replace('.', config.c) : num).replace(new RegExp(re, 'g'), '$&' + (config.s || ',')) }; window.template.defaults.imports.times = function(val1, val2) { return val1 * val2 } window.template.defaults.imports.floor = function(val) { return Math.floor(val) } window.template.defaults.imports.getSecondImage = function(product) { var secondImage = null if( product.images.length > 1 ) { secondImage = product.images[1].imageData if( secondImage.url.indexOf("video=") >= 0) { if(product.images.length >2 ) { secondImage = product.images[1].imageData }else { secondImage = null } } } return secondImage } window.template.defaults.imports.getImagePaddingBottom = function (width, height) { if (width === undefined || height === undefined) { return '100%' } else { return Math.round((height / width) * 10000) / 100 + '%' } } window.template.defaults.imports.JSON_Stringify = function (value) { if( value ) { return JSON.stringify(value) } return '' } window.template.defaults.imports.JSON_PARSE = function (value) { if( value ) { return JSON.parse(value) } return '' } window.template.defaults.imports.bgset = function(image,path){ var scope = [48, 180, 360, 540, 720, 900, 1024, 1280, 1366, 1440, 1536, 1600, 1920, 2056] var str = '' var imageUrl = window.template.defaults.imports.formatImageSrc(image,path) for (var i = 0; i < scope.length; i++) { var item = scope[i] str += `${imageUrl.replace('{width}', item)} ${item}w,` } return str } window.template.defaults.imports.getI18n = function (label, obj) { var keys = Object.keys(obj); for (var i in keys) { label = label.replace(keys[i], obj[keys[i]]); } return label; }; window.template.defaults.imports.t = function(keyStr, result) { try { var str = keyStr if (!result) return str return str.replace(/{{(.+?)}}/g, (_, g1) => { if (result[g1.trim()] == 0) { return result[g1.trim()] } else { return result[g1.trim()] || g1 } }) } catch (error) { return '' } } // 订单附件插件 window.template.defaults.imports.orderAttachment = function(list){ if(!list || !list.length) return var attachHtml = '' for (let i = 0; i < list.length; i++) { attachHtml += `<a href="${window.STORE_PARAMS.imageDomain}/${list[i]}" download target="_self"><div class="mt-2 overflow-hidden cursor-pointer hover:text-body-color text-ellipsis whitespace-nowrap" data-attachment="${list[i]}"> ${list[i]} </div></a>`; } return `<div class="border border-solid px-4 pt-2 pb-4 text-[#878da3] bg-[#f9fbfc]">${attachHtml}</div>` } </script> <script> /* eslint-disable */ window.lazySizesConfig = window.lazySizesConfig || {}; window.lazySizesConfig.rias = window.lazySizesConfig.rias || {}; window.lazySizesConfig.rias.widths = [48, 180, 540, 720, 900, 1024, 1280, 1366, 1440, 1536, 1600, 1920, 2056]; window.lazySizesConfig.rias.modifyOptions = function (data) { data.detail.width = data.detail.widths.filter(function (w) { return w > ((window.devicePixelRatio || 1) + 1) / 2 * Math.max(data.target.offsetWidth, parseInt(data.target.getAttribute("width")) || 0); })[0]; }; /*! lazysizes - v5.1.0 */ !function (a, b) { var c = b(a, a.document); a.lazySizes = c, "object" == typeof module && module.exports && (module.exports = c) }("undefined" != typeof window ? window : {}, function (a, b) { "use strict"; var c, d; if (function () { var b, c = { lazyClass: "lazyload", loadedClass: "lazyloaded", loadingClass: "lazyloading", preloadClass: "lazypreload", errorClass: "lazyerror", autosizesClass: "lazyautosizes", srcAttr: "data-src", srcsetAttr: "data-srcset", sizesAttr: "data-sizes", minSize: 40, customMedia: {}, init: !0, expFactor: 1.5, hFac: .8, loadMode: 2, loadHidden: !0, ricTimeout: 0, throttleDelay: 125 }; d = a.lazySizesConfig || a.lazysizesConfig || {}; for (b in c) b in d || (d[b] = c[b]) }(), !b || !b.getElementsByClassName) return { init: function () { }, cfg: d, noSupport: !0 }; var e = b.documentElement, f = a.Date, g = a.HTMLPictureElement, h = "addEventListener", i = "getAttribute", j = a[h], k = a.setTimeout, l = a.requestAnimationFrame || k, m = a.requestIdleCallback, n = /^picture$/i, o = ["load", "error", "lazyincluded", "_lazyloaded"], p = {}, q = Array.prototype.forEach, r = function (a, b) { return p[b] || (p[b] = new RegExp("(\\s|^)" + b + "(\\s|$)")), p[b].test(a[i]("class") || "") && p[b] }, s = function (a, b) { r(a, b) || a.setAttribute("class", (a[i]("class") || "").trim() + " " + b) }, t = function (a, b) { var c; (c = r(a, b)) && a.setAttribute("class", (a[i]("class") || "").replace(c, " ")) }, u = function (a, b, c) { var d = c ? h : "removeEventListener"; c && u(a, b), o.forEach(function (c) { a[d](c, b) }) }, v = function (a, d, e, f, g) { var h = b.createEvent("Event"); return e || (e = {}), e.instance = c, h.initEvent(d, !f, !g), h.detail = e, a.dispatchEvent(h), h }, w = function (b, c) { var e; !g && (e = a.picturefill || d.pf) ? (c && c.src && !b[i]("srcset") && b.setAttribute("srcset", c.src), e({ reevaluate: !0, elements: [b] })) : c && c.src && (b.src = c.src) }, x = function (a, b) { return (getComputedStyle(a, null) || {})[b] }, y = function (a, b, c) { for (c = c || a.offsetWidth; c < d.minSize && b && !a._lazysizesWidth;)c = b.offsetWidth, b = b.parentNode; return c }, z = function () { var a, c, d = [], e = [], f = d, g = function () { var b = f; for (f = d.length ? e : d, a = !0, c = !1; b.length;)b.shift()(); a = !1 }, h = function (d, e) { a && !e ? d.apply(this, arguments) : (f.push(d), c || (c = !0, (b.hidden ? k : l)(g))) }; return h._lsFlush = g, h }(), A = function (a, b) { return b ? function () { z(a) } : function () { var b = this, c = arguments; z(function () { a.apply(b, c) }) } }, B = function (a) { var b, c = 0, e = d.throttleDelay, g = d.ricTimeout, h = function () { b = !1, c = f.now(), a() }, i = m && g > 49 ? function () { m(h, { timeout: g }), g !== d.ricTimeout && (g = d.ricTimeout) } : A(function () { k(h) }, !0); return function (a) { var d; (a = !0 === a) && (g = 33), b || (b = !0, d = e - (f.now() - c), d < 0 && (d = 0), a || d < 9 ? i() : k(i, d)) } }, C = function (a) { var b, c, d = 99, e = function () { b = null, a() }, g = function () { var a = f.now() - c; a < d ? k(g, d - a) : (m || e)(e) }; return function () { c = f.now(), b || (b = k(g, d)) } }, D = function () { var g, l, m, o, p, y, D, F, G, H, I, J, K = /^img$/i, L = /^iframe$/i, M = "onscroll" in a && !/(gle|ing)bot/.test(navigator.userAgent), N = 0, O = 0, P = 0, Q = -1, R = function (a) { P--, (!a || P < 0 || !a.target) && (P = 0) }, S = function (a) { return null == J && (J = "hidden" == x(b.body, "visibility")), J || "hidden" != x(a.parentNode, "visibility") && "hidden" != x(a, "visibility") }, T = function (a, c) { var d, f = a, g = S(a); for (F -= c, I += c, G -= c, H += c; g && (f = f.offsetParent) && f != b.body && f != e;)(g = (x(f, "opacity") || 1) > 0) && "visible" != x(f, "overflow") && (d = f.getBoundingClientRect(), g = H > d.left && G < d.right && I > d.top - 1 && F < d.bottom + 1); return g }, U = function () { var a, f, h, j, k, m, n, p, q, r, s, t, u = c.elements; if ((o = d.loadMode) && P < 8 && (a = u.length)) { for (f = 0, Q++; f < a; f++)if (u[f] && !u[f]._lazyRace) if (!M || c.prematureUnveil && c.prematureUnveil(u[f])) aa(u[f]); else if ((p = u[f][i]("data-expand")) && (m = 1 * p) || (m = O), r || (r = !d.expand || d.expand < 1 ? e.clientHeight > 500 && e.clientWidth > 500 ? 500 : 370 : d.expand, c._defEx = r, s = r * d.expFactor, t = d.hFac, J = null, O < s && P < 1 && Q > 2 && o > 2 && !b.hidden ? (O = s, Q = 0) : O = o > 1 && Q > 1 && P < 6 ? r : N), q !== m && (y = innerWidth + m * t, D = innerHeight + m, n = -1 * m, q = m), h = u[f].getBoundingClientRect(), (I = h.bottom) >= n && (F = h.top) <= D && (H = h.right) >= n * t && (G = h.left) <= y && (I || H || G || F) && (d.loadHidden || S(u[f])) && (l && P < 3 && !p && (o < 3 || Q < 4) || T(u[f], m))) { if (aa(u[f]), k = !0, P > 9) break } else !k && l && !j && P < 4 && Q < 4 && o > 2 && (g[0] || d.preloadAfterLoad) && (g[0] || !p && (I || H || G || F || "auto" != u[f][i](d.sizesAttr))) && (j = g[0] || u[f]); j && !k && aa(j) } }, V = B(U), W = function (a) { var b = a.target; if (b._lazyCache) return void delete b._lazyCache; R(a), s(b, d.loadedClass), t(b, d.loadingClass), u(b, Y), v(b, "lazyloaded") }, X = A(W), Y = function (a) { X({ target: a.target }) }, Z = function (a, b) { try { a.contentWindow.location.replace(b) } catch (c) { a.src = b } }, $ = function (a) { var b, c = a[i](d.srcsetAttr); (b = d.customMedia[a[i]("data-media") || a[i]("media")]) && a.setAttribute("media", b), c && a.setAttribute("srcset", c) }, _ = A(function (a, b, c, e, f) { var g, h, j, l, o, p; (o = v(a, "lazybeforeunveil", b)).defaultPrevented || (e && (c ? s(a, d.autosizesClass) : a.setAttribute("sizes", e)), h = a[i](d.srcsetAttr), g = a[i](d.srcAttr), f && (j = a.parentNode, l = j && n.test(j.nodeName || "")), p = b.firesLoad || "src" in a && (h || g || l), o = { target: a }, s(a, d.loadingClass), p && (clearTimeout(m), m = k(R, 2500), u(a, Y, !0)), l && q.call(j.getElementsByTagName("source"), $), h ? a.setAttribute("srcset", h) : g && !l && (L.test(a.nodeName) ? Z(a, g) : a.src = g), f && (h || l) && w(a, { src: g })), a._lazyRace && delete a._lazyRace, t(a, d.lazyClass), z(function () { var b = a.complete && a.naturalWidth > 1; p && !b || (b && s(a, "ls-is-cached"), W(o), a._lazyCache = !0, k(function () { "_lazyCache" in a && delete a._lazyCache }, 9)), "lazy" == a.loading && P-- }, !0) }), aa = function (a) { if (!a._lazyRace) { var b, c = K.test(a.nodeName), e = c && (a[i](d.sizesAttr) || a[i]("sizes")), f = "auto" == e; (!f && l || !c || !a[i]("src") && !a.srcset || a.complete || r(a, d.errorClass) || !r(a, d.lazyClass)) && (b = v(a, "lazyunveilread").detail, f && E.updateElem(a, !0, a.offsetWidth), a._lazyRace = !0, P++, _(a, b, f, e, c)) } }, ba = C(function () { d.loadMode = 3, V() }), ca = function () { 3 == d.loadMode && (d.loadMode = 2), ba() }, da = function () { if (!l) { if (f.now() - p < 999) return void k(da, 999); l = !0, d.loadMode = 3, V(), j("scroll", ca, !0) } }; return { _: function () { p = f.now(), c.elements = b.getElementsByClassName(d.lazyClass), g = b.getElementsByClassName(d.lazyClass + " " + d.preloadClass), j("scroll", V, !0), j("resize", V, !0), a.MutationObserver ? new MutationObserver(V).observe(e, { childList: !0, subtree: !0, attributes: !0 }) : (e[h]("DOMNodeInserted", V, !0), e[h]("DOMAttrModified", V, !0), setInterval(V, 999)), j("hashchange", V, !0), ["focus", "mouseover", "click", "load", "transitionend", "animationend"].forEach(function (a) { b[h](a, V, !0) }), /d$|^c/.test(b.readyState) ? da() : (j("load", da), b[h]("DOMContentLoaded", V), k(da, 2e4)), c.elements.length ? (U(), z._lsFlush()) : V() }, checkElems: V, unveil: aa, _aLSL: ca } }(), E = function () { var a, c = A(function (a, b, c, d) { var e, f, g; if (a._lazysizesWidth = d, d += "px", a.setAttribute("sizes", d), n.test(b.nodeName || "")) for (e = b.getElementsByTagName("source"), f = 0, g = e.length; f < g; f++)e[f].setAttribute("sizes", d); c.detail.dataAttr || w(a, c.detail) }), e = function (a, b, d) { var e, f = a.parentNode; f && (d = y(a, f, d), e = v(a, "lazybeforesizes", { width: d, dataAttr: !!b }), e.defaultPrevented || (d = e.detail.width) && d !== a._lazysizesWidth && c(a, f, e, d)) }, f = function () { var b, c = a.length; if (c) for (b = 0; b < c; b++)e(a[b]) }, g = C(f); return { _: function () { a = b.getElementsByClassName(d.autosizesClass), j("resize", g) }, checkElems: g, updateElem: e } }(), F = function () { !F.i && b.getElementsByClassName && (F.i = !0, E._(), D._()) }; return k(function () { d.init && F() }), c = { cfg: d, autoSizer: E, loader: D, init: F, uP: w, aC: s, rC: t, hC: r, fire: v, gW: y, rAF: z } }); /*! lazysizes-rias - v5.1.0 */ !function (a, b) { var c = function () { b(a.lazySizes), a.removeEventListener("lazyunveilread", c, !0) }; b = b.bind(null, a, a.document), "object" == typeof module && module.exports ? b(require("lazysizes")) : a.lazySizes ? c() : a.addEventListener("lazyunveilread", c, !0) }(window, function (a, b, c) { "use strict"; function d(b, c) { var d, e, f, g, h = a.getComputedStyle(b); e = b.parentNode, g = { isPicture: !(!e || !n.test(e.nodeName || "")) }, f = function (a, c) { var d = b.getAttribute("data-" + a); if (!d) { var e = h.getPropertyValue("--ls-" + a); e && (d = e.trim()) } if (d) { if ("true" == d) d = !0; else if ("false" == d) d = !1; else if (m.test(d)) d = parseFloat(d); else if ("function" == typeof j[a]) d = j[a](b, d); else if (r.test(d)) try { d = JSON.parse(d) } catch (a) { } g[a] = d } else a in j && "function" != typeof j[a] ? g[a] = j[a] : c && "function" == typeof j[a] && (g[a] = j[a](b, d)) }; for (d in j) f(d); return c.replace(q, function (a, b) { b in g || f(b, !0) }), g } function e(a, b) { var c = [], d = function (a, c) { return l[typeof b[c]] ? b[c] : a }; return c.srcset = [], b.absUrl && (t.setAttribute("href", a), a = t.href), a = ((b.prefix || "") + a + (b.postfix || "")).replace(q, d), b.widths.forEach(function (d) { var e = b.widthmap[d] || d, f = b.aspectratio || b.ratio, g = !b.aspectratio && j.traditionalRatio, h = { u: a.replace(o, e).replace(p, f ? g ? Math.round(d * f) : Math.round(d / f) : ""), w: d }; c.push(h), c.srcset.push(h.c = h.u + " " + d + "w") }), c } function f(a, c, d) { var f = 0, g = 0, h = d; if (a) { if ("container" === c.ratio) { for (f = h.scrollWidth, g = h.scrollHeight; !(f && g || h === b);)h = h.parentNode, f = h.scrollWidth, g = h.scrollHeight; f && g && (c.ratio = g / f) } a = e(a, c), a.isPicture = c.isPicture, v && "IMG" == d.nodeName.toUpperCase() ? d.removeAttribute(i.srcsetAttr) : d.setAttribute(i.srcsetAttr, a.srcset.join(", ")), Object.defineProperty(d, "_lazyrias", { value: a, writable: !0 }) } } function g(a, b) { var e = d(a, b); return j.modifyOptions.call(a, { target: a, details: e, detail: e }), c.fire(a, "lazyriasmodifyoptions", e), e } function h(a) { return a.getAttribute(a.getAttribute("data-srcattr") || j.srcAttr) || a.getAttribute(i.srcsetAttr) || a.getAttribute(i.srcAttr) || a.getAttribute("data-pfsrcset") || "" } var i, j, k = c.cfg, l = { string: 1, number: 1 }, m = /^\-*\+*\d+\.*\d*$/, n = /^picture$/i, o = /\s*\{\s*width\s*\}\s*/i, p = /\s*\{\s*height\s*\}\s*/i, q = /\s*\{\s*([a-z0-9]+)\s*\}\s*/gi, r = /^\[.*\]|\{.*\}$/, s = /^(?:auto|\d+(px)?)$/, t = b.createElement("a"), u = b.createElement("img"), v = "srcset" in u && !("sizes" in u), w = !!a.HTMLPictureElement && !v; !function () { var a, b = function () { }, d = { prefix: "", postfix: "", srcAttr: "data-src", absUrl: !1, modifyOptions: b, widthmap: {}, ratio: !1, traditionalRatio: !1, aspectratio: !1 }; i = c && c.cfg, i.supportsType || (i.supportsType = function (a) { return !a }), i.rias || (i.rias = {}), "widths" in (j = i.rias) || (j.widths = [], function (a) { for (var b, c = 0; !b || b < 3e3;)c += 5, c > 30 && (c += 1), b = 36 * c, a.push(b) }(j.widths)); for (a in d) a in j || (j[a] = d[a]) }(), addEventListener("lazybeforesizes", function (a) { if (a.detail.instance == c) { var b, d, e, k, l, m, n, p, q, r, t, u, v; if (b = a.target, a.detail.dataAttr && !a.defaultPrevented && !j.disabled && (q = b.getAttribute(i.sizesAttr) || b.getAttribute("sizes")) && s.test(q)) { if (d = h(b), e = g(b, d), t = o.test(e.prefix) || o.test(e.postfix), e.isPicture && (k = b.parentNode)) for (l = k.getElementsByTagName("source"), m = 0, n = l.length; m < n; m++)(t || o.test(p = h(l[m]))) && (f(p, e, l[m]), u = !0); t || o.test(d) ? (f(d, e, b), u = !0) : u && (v = [], v.srcset = [], v.isPicture = !0, Object.defineProperty(b, "_lazyrias", { value: v, writable: !0 })), u && (w ? b.removeAttribute(i.srcAttr) : "auto" != q && (r = { width: parseInt(q, 10) }, x({ target: b, detail: r }))) } } }, !0); var x = function () { var d = function (a, b) { return a.w - b.w }, e = function (a) { var b, c, d = a.length, e = a[d - 1], f = 0; for (f; f < d; f++)if (e = a[f], e.d = e.w / a.w, e.d >= a.d) { !e.cached && (b = a[f - 1]) && b.d > a.d - .13 * Math.pow(a.d, 2.2) && (c = Math.pow(b.d - .6, 1.6), b.cached && (b.d += .15 * c), b.d + (e.d - a.d) * c > a.d && (e = b)); break } return e }, f = function (a, b) { var d; return !a._lazyrias && c.pWS && (d = c.pWS(a.getAttribute(i.srcsetAttr || ""))).length && (Object.defineProperty(a, "_lazyrias", { value: d, writable: !0 }), b && a.parentNode && (d.isPicture = "PICTURE" == a.parentNode.nodeName.toUpperCase())), a._lazyrias }, g = function (b) { var d = a.devicePixelRatio || 1, e = c.getX && c.getX(b); return Math.min(e || d, 2.4, d) }, h = function (b, c) { var h, i, j, k, l, m; if (l = b._lazyrias, l.isPicture && a.matchMedia) for (i = 0, h = b.parentNode.getElementsByTagName("source"), j = h.length; i < j; i++)if (f(h[i]) && !h[i].getAttribute("type") && (!(k = h[i].getAttribute("media")) || (matchMedia(k) || {}).matches)) { l = h[i]._lazyrias; break } return (!l.w || l.w < c) && (l.w = c, l.d = g(b), m = e(l.sort(d))), m }, j = function (d) { if (d.detail.instance == c) { var e, g = d.target; if (!v && (a.respimage || a.picturefill || k.pf)) return void b.removeEventListener("lazybeforesizes", j); ("_lazyrias" in g || d.detail.dataAttr && f(g, !0)) && (e = h(g, d.detail.width)) && e.u && g._lazyrias.cur != e.u && (g._lazyrias.cur = e.u, e.cached = !0, c.rAF(function () { g.setAttribute(i.srcAttr, e.u), g.setAttribute("src", e.u) })) } }; return w ? j = function () { } : addEventListener("lazybeforesizes", j), j }() }); /*! lazysizes-data-bgset - v5.1.0 */ !function (a, b) { var c = function () { b(a.lazySizes), a.removeEventListener("lazyunveilread", c, !0) }; b = b.bind(null, a, a.document), "object" == typeof module && module.exports ? b(require("lazysizes")) : a.lazySizes ? c() : a.addEventListener("lazyunveilread", c, !0) }(window, function (a, b, c) { "use strict"; if (a.addEventListener) { var d = c.cfg, e = /\s+/g, f = /\s*\|\s+|\s+\|\s*/g, g = /^(.+?)(?:\s+\[\s*(.+?)\s*\])(?:\s+\[\s*(.+?)\s*\])?$/, h = /^\s*\(*\s*type\s*:\s*(.+?)\s*\)*\s*$/, i = /\(|\)|'/, j = { contain: 1, cover: 1 }, k = function (a) { var b = c.gW(a, a.parentNode); return (!a._lazysizesWidth || b > a._lazysizesWidth) && (a._lazysizesWidth = b), a._lazysizesWidth }, l = function (a) { var b; return b = (getComputedStyle(a) || { getPropertyValue: function () { } }).getPropertyValue("background-size"), !j[b] && j[a.style.backgroundSize] && (b = a.style.backgroundSize), b }, m = function (a, b) { if (b) { var c = b.match(h); c && c[1] ? a.setAttribute("type", c[1]) : a.setAttribute("media", d.customMedia[b] || b) } }, n = function (a, c, h) { var i = b.createElement("picture"), j = c.getAttribute(d.sizesAttr), k = c.getAttribute("data-ratio"), l = c.getAttribute("data-optimumx"); c._lazybgset && c._lazybgset.parentNode == c && c.removeChild(c._lazybgset), Object.defineProperty(h, "_lazybgset", { value: c, writable: !0 }), Object.defineProperty(c, "_lazybgset", { value: i, writable: !0 }), a = a.replace(e, " ").split(f), i.style.display = "none", h.className = d.lazyClass, 1 != a.length || j || (j = "auto"), a.forEach(function (a) { var c, e = b.createElement("source"); j && "auto" != j && e.setAttribute("sizes", j), (c = a.match(g)) ? (e.setAttribute(d.srcsetAttr, c[1]), m(e, c[2]), m(e, c[3])) : e.setAttribute(d.srcsetAttr, a), i.appendChild(e) }), j && (h.setAttribute(d.sizesAttr, j), c.removeAttribute(d.sizesAttr), c.removeAttribute("sizes")), l && h.setAttribute("data-optimumx", l), k && h.setAttribute("data-ratio", k), i.appendChild(h), c.appendChild(i) }, o = function (a) { if (a.target._lazybgset) { var b = a.target, d = b._lazybgset, e = b.currentSrc || b.src; if (e) { var f = c.fire(d, "bgsetproxy", { src: e, useSrc: i.test(e) ? JSON.stringify(e) : e }); f.defaultPrevented || (d.style.backgroundImage = "url(" + f.detail.useSrc + ")") } b._lazybgsetLoading && (c.fire(d, "_lazyloaded", {}, !1, !0), delete b._lazybgsetLoading) } }; addEventListener("lazybeforeunveil", function (a) { var d, e, f; !a.defaultPrevented && (d = a.target.getAttribute("data-bgset")) && (f = a.target, e = b.createElement("img"), e.alt = "", e._lazybgsetLoading = !0, a.detail.firesLoad = !0, n(d, f, e), setTimeout(function () { c.loader.unveil(e), c.rAF(function () { c.fire(e, "_lazyloaded", {}, !0, !0), e.complete && o({ target: e }) }) })) }), b.addEventListener("load", o, !0), a.addEventListener("lazybeforesizes", function (a) { if (a.detail.instance == c && a.target._lazybgset && a.detail.dataAttr) { var b = a.target._lazybgset, d = l(b); j[d] && (a.target._lazysizesParentFit = d, c.rAF(function () { a.target.setAttribute("data-parent-fit", d), a.target._lazysizesParentFit && delete a.target._lazysizesParentFit })) } }, !0), b.documentElement.addEventListener("lazybeforesizes", function (a) { !a.defaultPrevented && a.target._lazybgset && a.detail.instance == c && (a.detail.width = k(a.target._lazybgset)) }) } }); /*! lazysizes data-srcs data-bgs plugin */ document.addEventListener('lazybeforesizes', function (e) { var attrVal = e.target.getAttribute('data-srcs'); var targetWidth = e.target.clientWidth; if (!attrVal) return; var srcs = attrVal.split(","); var widths = [48, 180, 540, 720, 900, 1024, 1280, 1366, 1440, 1536, 1600, 1920, 2056]; srcs = [srcs[0] || srcs[1], srcs[1] || srcs[0]]; var availableWidths = widths.filter(function (w) { return w <= Math.max(targetWidth, widths[0]) * window.devicePixelRatio; }); var srcset = availableWidths.map(function (w) { return srcs[window.innerWidth <= (window.breakpoint || 768) ? 0 : 1].replace('{width}', w) + " " + w + "w" }).join(", "); e.target.setAttribute("srcset", srcset); e.target.setAttribute("size", targetWidth + "px"); }); </script> <script> ;(function ($) { // 防止回退缓存 window.addEventListener('pageshow', function (event) { if (event.persisted) { window.location.reload() } }) const languageKey = 'store_locale' function getStoreLocal() { return localStorage.getItem(languageKey) } //判断是否为移动端 $.isMobile = function () { /* 判断机型与处理 */ var u = navigator.userAgent var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 // android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端 return isAndroid || isiOS } /* cookie 操作 */ $.getCookie = function (sName) { var oCrumbles = document.cookie.split(';') for (var i = 0; i < oCrumbles.length; i++) { var oPair = oCrumbles[i].split('=') var sKey = decodeURIComponent(oPair[0].trim()) var sValue = oPair.length > 1 ? oPair[1] : '' if (sKey == sName) { return decodeURIComponent(sValue) } } return '' } $.setCookie = function (sName, sValue, options) { var sCookie = encodeURIComponent(sName) + '=' + encodeURIComponent(sValue) if (options instanceof Date) { options = { expires: options } } options = options || {} if (options.expires) { sCookie += '; expires=' + options.expires } if (options.path) { sCookie += '; path=' + options.path } if (options.domain) { sCookie += '; domain=' + options.domain.toString() } if (options.secure) { sCookie += '; secure' } document.cookie = sCookie } $.delCookie = function (sName, options) { options = options || {} options.expires = new Date() $.setCookie(sName, '', options) } // jquery ajax 统一增加请求头 $.ajaxSettings.beforeSend = function (xhr) { $.getCookie('User-Agents') && xhr.setRequestHeader('Authorization', `Bearer ${$.getCookie('User-Agents')}`) let language = getStoreLocal() if (language) xhr.setRequestHeader('store-locale', language) } // jquery ajax 处理请求异常 $.ajaxError = function (response) { switch (response.errorCode) { case 401: window.safeHref = '/account/login?return_url=' + encodeURI(window.location.pathname) break default: $.toast.show({ content: response.msg, type: 'error' }) Promise.reject(`${response.errorCode} ${response.msg}`) } } $.globalFinance = function (price, finance, symbol) { return window.template.defaults.imports.financeMoneyWithShopSymbol(price) } /** * url query param to object * @param {string} url * @returns {object} query object */ $.params = function (url) { url = url || window.location.href var params = {} url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { params[key] = decodeURIComponent(value) } catch (e) { params[key] = value } }) return params } $.fn.lazy = function (callback) { if ($(this).hasClass('lazyloaded') || $(this).hasClass('lazyloading')) { callback() return } $(this).on('lazybeforeunveil', function (e) { if (e.target != this) return callback() }) } $.fn.getQueryVariable = variable => { var query = window.location.search.substring(1) var vars = query.split('&') for (var i = 0; i < vars.length; i++) { var pair = vars[i].split('=') if (pair[0] == variable) { return pair[1] } } return null } /* 节流防抖 */ $.throttle = function (func, wait, mustRun) { var timeout, startTime = new Date() return function () { var context = this, args = arguments, curTime = new Date() clearTimeout(timeout) // 如果达到了规定的触发时间间隔,触发 handler if (mustRun && curTime - startTime >= mustRun) { func.apply(context, args) startTime = curTime // 没达到触发间隔,重新设定定时器 } else { timeout = setTimeout(func, wait) } } } /** * @param fn {Function} 实际要执行的函数 * @param delay {Number} 延迟时间,单位是毫秒(ms) * @return {Function} 返回一个“防反跳”了的函数 */ $.debounce = function (fn, delay) { // 定时器,用来 setTimeout var timer // 返回一个函数,这个函数会在一个时间区间结束后的 delay 毫秒时执行 fn 函数 return function () { // 保存函数调用时的上下文和参数,传递给 fn var context = this var args = arguments // 每次这个返回的函数被调用,就清除定时器,以保证不执行 fn clearTimeout(timer) // 当返回的函数被最后一次调用后(也就是用户停止了某个连续的操作), // 再过 delay 毫秒就执行 fn timer = setTimeout(function () { fn.apply(context, args) }, delay) } } /** * object to query params * @param {object} obj * @returns {string} query params */ $.toQuery = function (obj) { var result = [] if (Object.keys(obj).length <= 0) return '' for (var k in obj) { result.push(encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])) } return result.join('&') } $.queryParams = function (url) { url = url || window.location.href var params = {} url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { params[key] = decodeURIComponent(value) } catch (e) { params[key] = value } }) return params } $.loadScript = function (url) { var script = document.createElement('script') script.type = 'text/javascript' script.src = url document.getElementsByTagName('head')[0].appendChild(script) } // 解决移动端a标签因为hover点击两次的问题 document.addEventListener('touchend', function () {}) $(function () { // 保证C端加载 const key = 'decoratorId' const params = $.params() const shop_env = params[key] if (!window.safeHref && !shop_env) { // if里面的代码针对C端,B端逻辑部分在owl中 $.sliceQuery = function (obj, path) { path += path.indexOf('?') === -1 ? '?' : '&' return path + $.toQuery(obj) } Object.defineProperty(window, 'safeHref', { get: function () { return location.href }, set: function (value) { location.href = value }, configurable: true }) } }) })(window.jQuery) </script> <script> theme.api = { addToCart: "/api/mbr/shopping/cart/add", preOrder: "/api/mbr/checkout/preOrder", search: "/api/mbr/goods/list", newsletters: "/api/mbr/user/newsletters", similarProducts: "/api/mbr/goods/similar", productDetail: "/api/mbr/goods", blogList: "/api/mbr/blog/articlePageByTopic" } // 加载 paypal 方法 theme.loadPaypalSdk = function(url) { var id = 'paypal-sdk' var paypalScript = document.getElementById(id) return new Promise((resolve, reject) => { if (paypalScript) { resolve(true) } else { //创建script标签 var script = document.createElement('script') script.type = 'text/javascript' script.src = url script.id = id //添加标签到body尾部 document.head.appendChild(script) script.onload = () => { resolve(true) } script.onerror = () => { reject(false) } } }) } theme.loadPaypal = function(paypalBtnId) { theme.loadPaypalSdk("").then(function(res) { window.paypal .Buttons({ style: { height: 44, layout: 'horizontal', size: 'responsive', shape: 'rect', color: 'gold', tagline: !1 }, onClick: async () => { // 预览模式下禁止下单 if (window.location.pathname.indexOf('/preview/') == 0) { this.$toast(this, 'order') return false } // TODO 购买是否需要登录校验 // if (!self.canBuy) { // self.$toast(self.language.product.product_detail.select_variant, 'fail') // return false // } if (false) { // TODO 获取 token 是否存在 if (true) { return true } else { window.safeHref = '/account/login' } } else { return true } }, createOrder: () => { return new Promise(function(resolve, reject) { var xtproduct = $(document).data("xtproduct"); if (!xtproduct.selected.skuId) { $.toast.show({ type: "error", content: "Please select a variant at least" }); return reject("options rejected"); } if (!xtproduct.product.available) { return reject("product not available"); } // 获取自定义参数 $.loading.show(); var formData = new FormData() var distribution_id = $.getCookie('_distribution') || '' formData.append('accountNo', "") formData.append('referInfo.payMethod', 'paypal') formData.append('referInfo.source', 'cart') formData.append('referInfo.device', $.isMobile() ? "mobile" : "pc") formData.append('distributorId', distribution_id) formData.append(`lineItems[${0}].goodsId`, xtproduct.selected.skuId) formData.append(`lineItems[${0}].productId`, xtproduct.selected.spuId) formData.append(`lineItems[${0}].goodsNum`, xtproduct.qty) formData.append(`lineItems[${0}].attachments`, "") $.post({ type: 'POST', url: theme.api.preOrder, data: formData, contentType: false, // 注意这里应设为false processData: false, success(res) { var data = res.readyState ? res.responseJSON : res; if (data.code === 0 && data.data) { $.loading.hide(); // TODO 立即购买事件上报 resolve(data.data.tradeId); } else { reject("create order failed 1" + data.data.msg) } }, error(error) { reject("create order failed 2" + error) } }) }) }, onApprove: data => { let params = { orderToken: self.orderToken, tradNo: data.orderID } self.getSyncShipping(params) }, onCancel: async data => { let tranId = JSON.parse(JSON.stringify(data)).orderID let [err, res] = await cancelPaypal({ tradeId: tranId }) if (err || res.code != 0) { return false } } }) .render("#" + paypalBtnId) .then(() => { // self.paypalLoading = false document.getElementById(paypalBtnId).classList.add("paypal-loading-success") }) .catch(() => { self.havePaypal = false }) }).catch(function(err) { }) } /** * loading: * $.loading.show({selector:".containerselector"}); * $.loading.hide(); * $.loading.getState(); // return 1/0 */ $.loading = { state: 0, $wrapper: $( '<div class="fixed inset-0 flex items-center justify-center bg-black bg-opacity-30 z-tooltip"><div class="relative w-10 h-10 mx-auto text-center spinner"><div class="bounce1"></div ><div class="bounce2"></div></div ></div>' ), $inner_wrapper: $(''), show: function(opt) { if (this.state === 0) { if (opt && opt.selector) { //添加可以选择某个容器进行loading,但是要重写样式进行覆盖 $(opt.selector).prepend(this.$inner_wrapper).css({ "pointer-events": "none" }); this.selector = opt.selector; this.$inner_wrapper.find(".bounce1, .bounce2").css("border-color", $(opt.selector).css("color")) } else { $(document.body).prepend(this.$wrapper) } this.state = 1; } return this; }, hide: function() { if (this.state === 1) { this.$wrapper.remove(); this.$inner_wrapper.remove(); this.selector && $(this.selector).css({ "pointer-events": "" }); this.state = 0 this.selector = 0; } return this; }, getState: function() { return this.state; } }; /** * toast * isScrollHide: 滑动隐藏 * $.toast.show({ content: 'this is content', type: 'normal', timeOut: 2000 }); * $.toast.show({ content: 'this is content', type: 'normal', isScrollHide: true }); * $.toast.hide(); */ $.toast = { defaultOptions: { content: 'Success', type: 'info', timeOut: 2500, scrollHide: false, }, state: 0, icons: { info: "", warning: `<div class="inline-flex items-center justify-center flex-shrink-0 w-8 h-8 mr-3 text-orange-500 bg-orange-100 rounded-lg dark:bg-orange-700 dark:text-orange-200"> <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path></svg> <span class="sr-only">Warning icon</span> </div>`, success: `<div class="inline-flex items-center justify-center flex-shrink-0 w-8 h-8 mr-3 text-green-500 bg-green-100 rounded-lg dark:bg-green-800 dark:text-green-200"> <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path></svg> <span class="sr-only">Check icon</span> </div>`, error: `<div class="inline-flex items-center justify-center flex-shrink-0 w-8 h-8 mr-3 text-red-500 bg-red-100 rounded-lg dark:bg-red-800 dark:text-red-200"> <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path></svg> <span class="sr-only">Error icon</span> </div>`, }, show: function(options) { options = $.extend({}, this.defaultOptions, options); this.options = options; // 本地show options if (this.state == 1) { this.hide(true); } $(`<div id="toast" class="fixed top-[30px] right-0 left-0 flex justify-center items-center z-modal opacity-0"> <div class="flex items-center p-4 mb-4 w-full max-w-[388px] text-gray-500 bg-white rounded-lg shadow dark:text-gray-400 dark:bg-gray-800 z-modal"> ${this.icons[options.type]}<div class="text-sm font-normal">${options.content}</div> </div> </div>`).appendTo(document.body); setTimeout(function() { $("#toast").animate({ 'opacity': 1 }, { duration: 300, easing: 'linear' }) }, 0); this.state = 1; var that = this; options.isScrollHide ? $(window).one("scroll.toast.hide", function() { that.hide(); }) : (this.timeout = setTimeout(function() { that.hide(); }, Number(options.timeOut))); }, getState: function() { return this.state; }, hide: function(dontAnimate) { var $toast = $("#toast"); dontAnimate ? $toast.remove() : $toast.animate({ 'opacity': 0 }, { duration: 300, easing: 'linear', complete: function() { $toast.remove(); } }); this.state = 0; $(window).off("scroll.toast.hide"); clearTimeout(this.timeout); }, success: function(content) { this.show({ type: "success", content: content }) }, error: function(content) { this.show({ type: "error", content: content }) }, warning: function(content) { this.show({ type: "warning", content: content }) }, info: function(content) { this.show({ type: "info", content: content }) } }; const Dialog = (() => { // 类名前缀 const DIALOG = 'dialog'; // 处理类名 const CL = { add: (...arg) => `ui-${DIALOG}-${arg.join('-')}`, toString: (value) => `ui-${value || DIALOG}` }; /** * 弹框实例方法 * @param {Object} options 纯对象,可选参数 */ class Component { constructor(options = {}) { // 最终参数 const objParams = { title: '', // 弹窗的class类名 class: '', // 不同类别的内容类型 content: '', // 弹框的宽度 width: 'auto', // 弹框高度 height: 'auto', // 不同类别的默认按钮 buttons: [], // 弹框显示、隐藏、移除的回调 onShow: function() {}, onHide: function() {}, onRemove: function() {}, ...options }; // 各个元素创建 // 容器-含半透明遮罩背景 const dialog = document.createElement(DIALOG); dialog.setAttribute('is', 'ui-dialog'); if (objParams.class) { dialog.setAttribute('class', objParams.class); } // MutationObserver是一个异步的过程,因此 // 元素样式的设置在'DOMContentLoaded'事件之后完成 dialog.addEventListener('DOMContentLoaded', () => { // 务必有传参 // 否则不会对初始元素进行处理 if (JSON.stringify(options) != '"{}"') { // 改变参数,会自动触发DOM元素内容的变化 dialog.setParams({ title: objParams.title, width: objParams.width, height: objParams.height, content: objParams.content, buttons: objParams.buttons }); // 回调处理 if (typeof options.onShow == 'function') { dialog.addEventListener('show', function(event) { options.onShow.call(dialog, event); }); } if (typeof options.onHide == 'function') { dialog.addEventListener('hide', function(event) { options.onHide.call(dialog, event); }); } if (typeof options.onRemove == 'function') { dialog.addEventListener('remove', function(event) { options.onRemove.call(dialog, event); }); } } // 显示 dialog.show(); }); // 插入的细节 // 1. 插在所有dialog的前面 // 2. 如果没有,则放在页面后面 const eleExistDialog = document.querySelector('body > ' + DIALOG); if (eleExistDialog) { eleExistDialog.insertAdjacentElement('beforebegin', dialog); } else { document.body.appendChild(dialog); } // 注册当前<dialog>元素 // 为了可以立即使用alert()、confirm()方法, // 在这里提前注册了 funDialogRegist(dialog); return dialog; } } // 对不支持<dialog>元素的浏览器进行polyfill // 仅polyfill部分主要功能 let DialogPolyfill = function(dialog) { this.element = { dialog: dialog }; // aria支持 if (!dialog.hasAttribute('role')) { dialog.setAttribute('role', 'dialog'); } // 内置方法 dialog.show = this.show.bind(this); dialog.showModal = this.showModal.bind(this); dialog.close = this.close.bind(this); // 自定义方法 dialog.zIndex = this.zIndex.bind(this); Object.defineProperty(dialog, 'open', { set: this.setOpen.bind(this), get: dialog.hasAttribute.bind(dialog, 'open') }); }; DialogPolyfill.prototype = { get dialog() { return this.element.dialog; }, show() { this.setOpen(true); // 层级最高 this.zIndex(); }, showModal() { this.setOpen(true); }, close() { this.setOpen(false); // 原生<dialog>就有close事件 this.dialog.dispatchEvent(new CustomEvent('close', { bubbles: false, cancelable: false })); }, setOpen(value) { if (value) { this.dialog.setAttribute('open', ''); } else { this.dialog.removeAttribute('open'); } }, /** * 弹框元素zIndex实时最大化 * 原生dialog无需此能力 * @return {[type]} [description] */ zIndex() { var dialog = this.dialog; // 返回eleTarget才是的样式计算对象 const objStyleTarget = window.getComputedStyle(dialog); // 此时元素的层级 const numZIndexTarget = objStyleTarget.zIndex; // 用来对比的层级,也是最小层级 let numZIndexNew = 19; // 只对<body>子元素进行层级最大化计算处理 document.body.childNodes.forEach(function(eleChild) { if (eleChild.nodeType !== 1) { return; } const objStyleChild = window.getComputedStyle(eleChild); const numZIndexChild = objStyleChild.zIndex * 1; if (numZIndexChild && (dialog !== eleChild && objStyleChild.display !== 'none')) { numZIndexNew = Math.max(numZIndexChild + 1, numZIndexNew); } }); if (numZIndexNew !== numZIndexTarget) { dialog.style.zIndex = numZIndexNew; } } }; // 对弹框元素进行方法注册 let funDialogRegist = function(dialog) { if (dialog.hide && dialog.button) { // 已经注册过 return; } if ('open' in document.createElement('dialog') == false) { new DialogPolyfill(dialog); } // 自定义的方法支持 // 全新的remove和show方法 // 新增hide, alert, confirm等方法 if (dialog.getAttribute('is') == 'ui-dialog') { Object.defineProperties(dialog, { setParams: { value: function(options) { Object.assign(this.params, options || {}); return this.params; } }, /** * 弹框按钮的处理 * @returns {Object} 返回当前<dialog>元素 */ button: { value: function() { const objParams = this.params; const objElement = this.element; // 清除之前的按钮内容和数据 objElement.footer.innerHTML = ''; // 元素数据清除 for (const keyElement in objElement) { if (/^button/.test(keyElement)) { delete objElement[keyElement]; } } // 按钮元素创建 objParams.buttons.forEach(function(objButton, numIndex) { // objButton可能是null等 objButton = objButton || {}; // 按钮类型和值的处理 let strType = objButton.type; let strValue = objButton.value; if (strType === 'remind' || (!strType && numIndex === 0)) { strType = 'primary'; } if (!strValue) { strValue = ['确定', '取消'][numIndex]; } let eleButton = document.createElement('button'); if (objButton['for']) { eleButton = document.createElement('label'); eleButton.setAttribute('for', objButton['for']); } else if (objButton.form) { eleButton.setAttribute('form', objButton.form); eleButton.type = 'submit'; } // 自定义的类名 if (objButton.className) { eleButton.className = objButton.className; } if (strType) { eleButton.setAttribute('data-type', strType); } // 按钮是否禁用 eleButton.disabled = Boolean(objButton.disabled); // 按钮内容 eleButton.innerHTML = strValue; // 放在底部元素中 objElement.footer.appendChild(eleButton); // 对外暴露 objElement['button' + numIndex] = eleButton; }); // 按钮事件 // 底部确定取消按钮 objParams.buttons.forEach((objButton, numIndex) => { // objButton可能是null等 objButton = objButton || {}; const eleButton = objElement['button' + numIndex]; if (!eleButton || objButton['for'] || objButton.form) { return; } let objEvents = objButton.events || { click: () => { this[this.closeMode](); } }; if (typeof objEvents === 'function') { objEvents = { click: objEvents }; } for (const strEventType in objEvents) { eleButton.addEventListener(strEventType, (event) => { // 把实例对象传入 event.dialog = this; // 事件执行 objEvents[strEventType](event); }); } // 额外的focus事件支持 eleButton.addEventListener('focus', function() { if (window.isKeyEvent) { this.style.outline = ''; } else { this.style.outline = 'none'; } }); }); return this; } }, /** * 固定结构元素的事件绑定 * @returns {Object} 返回当前<dialog>元素对象 */ events: { value: function() { const objElement = this.element; this.addEventListener('animationend', function(event) { if (event.target.tagName.toLowerCase() === DIALOG) { this.classList.remove(CL.add('animation')); } }); // 关闭弹框按钮 const eleClose = objElement.close; if (eleClose) { eleClose.addEventListener('click', () => { // 有其他可ESC元素存在时候,弹框不关闭 const eleActiveElement = document.activeElement; const attrActiveElement = eleActiveElement.getAttribute('data-target'); let eleTargetElement = null; if (attrActiveElement) { eleTargetElement = document.getElementById(attrActiveElement); } // 如果是其他元素的键盘访问 if (window.isKeyEvent && eleTargetElement && eleActiveElement !== eleClose && document .querySelector('a[data-target="' + attrActiveElement + '"],input[data-target="' + attrActiveElement + '"],button[data-target="' + attrActiveElement + '"]') && eleTargetElement.clientWidth > 0) { return; } // 关闭弹框 this[this.closeMode](); }); } this.dispatchEvent(new CustomEvent('DOMContentLoaded')); return this; } }, /** * alert类型的弹框,默认仅一个“确定”按钮 * @param {String} content 提示文字或者提示HTML片段 * @param {Object} options 提示可选参数 * @return {Object} 返回当前<dialog>元素对象 */ alert: { value: function(content, options) { if (!content) { return; } let strContent = content; // alert框的默认参数 const defaults = { title: '', // 类型, 'remind', 'success', 'warning', danger', 或者任意 'custom' type: 'remind', buttons: [{}] }; // 最终参数 const objParams = { ...defaults, ...options }; if (objParams.type === 'error' || objParams.type === 'fail') { objParams.type = 'danger'; } else if (objParams.type === 'primary') { objParams.type = 'remind'; } if (objParams.buttons.length && !objParams.buttons[0].type) { objParams.buttons[0].type = objParams.type; // 如果是自定义类型,则使用'primary'作为按钮类型 if (/^remind|success|warning|danger$/.test(objParams.type) === false) { objParams.buttons[0].type = defaults.type; } } let nodes = new DOMParser().parseFromString(strContent, 'text/html').body.childNodes; if (nodes.length == 1) { // 如果是纯文本 if (nodes[0].nodeType === 3) { strContent = '<p class="' + CL.add('wrap') + '">' + strContent + '</p>'; } } else { strContent = '<div class="' + CL.add('wrap') + '">' + strContent + '</div>'; } // 主体内容更新 strContent = '<div class="' + CL.add(objParams.type) + ' ' + CL.add('alert') + '">' + strContent + '</div>'; this.setParams({ width: 'auto', title: objParams.title, buttons: objParams.buttons, content: strContent }); this.type = 'alert'; this.show(); return this; } }, /** * confirm类型的弹框,默认有一个“确定”和一个“取消”按钮 * @param {String} content 提示文字或者提示HTML片段 * @param {Object} options 提示可选参数 * @return {Object} 返回当前<dialog>元素对象 */ confirm: { value: function(content, options) { if (!content) { return; } let strContent = content; // confirm框的默认参数 const defaults = { title: '', type: 'danger', buttons: [{}, {}] }; // 最终参数 const objParams = { ...defaults, ...options }; if (objParams.type === 'error' || objParams.type === 'fail') { objParams.type = 'danger'; } if (objParams.type === 'primary') { objParams.type = 'remind'; } // danger类型的按钮可缺省 if (objParams.buttons.length && !objParams.buttons[0].type) { objParams.buttons[0].type = objParams.type; // 如果是自定义类型,则使用'primary'作为按钮类型 if (/^remind|success|warning|danger$/.test(objParams.type) === false) { objParams.buttons[0].type = defaults.type; } } let nodes = new DOMParser().parseFromString(strContent, 'text/html').body.childNodes; if (nodes.length == 1) { // 如果是纯文本 if (nodes[0].nodeType === 3) { strContent = '<p class="' + CL.add('wrap') + '">' + strContent + '</p>'; } } else { strContent = '<div class="' + CL.add('wrap') + '">' + strContent + '</div>'; } // 主体内容设置 strContent = '<div class="' + CL.add(objParams.type) + ' ' + CL.add('confirm') + '">' + strContent + '</div>'; // confirm 增加样式 this.classList.add(CL.add('confirm-modal')); // 参数对外 this.setParams({ width: 'auto', class: objParams.class, title: objParams.title, buttons: objParams.buttons, content: strContent }); this.type = 'confirm'; this.show(); return this; } }, /** * loading弹框,通常用在ajax请求之前使用 * loading结束后可以直接调用弹框实例的open()方法显示 * @return {Object} 返回当前实例对象 */ loading: { value: function() { const objElement = this.element; this.params.content = '<ui-loading rows="10" size="3"></ui-loading>'; // 显示loading样式 objElement.dialog.classList.add(CL.add('loading')); this.show(); return this; } }, /** * 内容赋值 */ content: { get() { return this.params.content; }, set(content) { // 让直接设置content时候可以和params.content数据保持一致 if (content != this.params.content) { this.params.content = content; return; } let eleBody = this.element.body; let eleDialog = this.element.dialog; // 去除可能的loading类名 eleDialog.classList.remove(CL.add('loading')); // content可以是函数 if (typeof content == 'function') { content = content(); } else if (typeof content == 'string' && /^#?\w+(?:[-_]\w+)*$/i.test(content)) { // 如果是字符串 // 如果是选择器,仅支持ID选择器 let eleMatch = document.querySelector(content); if (eleMatch) { if (eleMatch.matches('textarea')) { content = eleMatch.value; } else if (eleMatch.matches('script')) { content = eleMatch.innerHTML; } else { content = eleMatch; } } } // 基于内容的数据类型,使用不同的默认的弹框关闭方式 this.closeMode = typeof content == 'string' ? 'remove' : 'hide'; // 是隐藏模式,则eleBody里面的内容保护出来 // 主要是使用content语法替换内容时候用到,这段代码一般不会执行到 if (this.closeMode == 'hide' && eleBody.innerHTML) { let eleProtect = document.createElement('div'); eleProtect.setAttribute('hidden', ''); // 遍历并转移 eleBody.childNodes.forEach(node => { eleProtect.appendChild(node); }); // 保护到页面中 document.body.appendChild(eleProtect); } // 清空主内容区域的内容 eleBody.innerHTML = ''; if (this.closeMode == 'remove') { eleBody.innerHTML = content; } else { let eleContentParent = content.parentElement; let isParentHidden = eleContentParent && eleContentParent.matches('div[hidden]'); // 弹框中显示 eleBody.appendChild(content); // 如果原父级是隐藏div,该div删除 if (isParentHidden && eleContentParent.innerHTML.trim() === '') { eleContentParent.remove(); } // 如果content是隐藏的则显示 if (content.nodeType === 1 && getComputedStyle(content).display == 'none') { content.removeAttribute('hidden'); content.style.display = ''; // 如果此时元素的display状态还是none,则设置为浏览器初始display值 if (getComputedStyle(content).display == 'none') { content.style.display = 'revert'; } } } } }, /** * 背景滚动锁定带来的 * @returns 当前<dialog>元素 */ scrollbar: { value: function() { const eleAllDialog = document.querySelectorAll('dialog[is="ui-dialog"]'); // 是否有显示的弹框 const isDisplayed = [].slice.call(eleAllDialog).some(function(eleDialog) { return window.getComputedStyle(eleDialog).display !== 'none'; }); document.documentElement.style.overflow = ''; document.body.style.borderRight = ''; let widthScrollbar = window.innerWidth - document.documentElement.clientWidth; // 因为去掉了滚动条,所以宽度需要偏移,保证页面内容没有晃动 if (isDisplayed) { // 所有PC浏览器都滚动锁定 document.documentElement.style.overflow = 'hidden'; document.body.style.borderRight = widthScrollbar + 'px solid transparent'; } return this; } }, /** * 键盘访问与聚焦的细节设置 * @returns 当前<dialog>元素 */ tabindex: { value: function() { var eleDialog = this.element.dialog; var eleLastActiveElement = this.lastActiveElement; if (this.open == true) { var eleActiveElement = document.activeElement; if (this.type == 'alert' || this.type == 'confirm' && this.element.button0) { if (this.element.button0 != eleActiveElement) { this.lastActiveElement = eleActiveElement; } this.element.button0.focus(); } else if (eleDialog) { if (eleDialog != eleActiveElement) { this.lastActiveElement = eleActiveElement; } // 键盘索引起始位置变为在弹框元素上 eleDialog.focus(); } } else if (eleLastActiveElement && eleLastActiveElement.tagName.toLowerCase() != 'body') { // 键盘焦点元素还原 eleLastActiveElement.focus(); eleLastActiveElement.blur(); this.lastActiveElement = null; } return this; } }, /** * 弹框显示 * @returns 当前<dialog>元素 */ show: { value: function() { if (this.open !== true) { this.classList.add(CL.add('animation')); } // 弹框显示 this.open = true; // 面板显示 if (this.zIndex) { this.zIndex(); } this.dispatchEvent(new CustomEvent('show', { detail: { type: 'ui-dialog' } })); return this; } }, /** * 弹框隐藏 * @returns 当前<dialog>元素 */ hide: { value: function() { this.close(); this.dispatchEvent(new CustomEvent('hide', { detail: { type: 'ui-dialog' } })); return this; } }, /** * 弹框移除 * @returns 当前<dialog>元素 */ remove: { value: function() { this.open = false; this.parentElement.removeChild(this); this.dispatchEvent(new CustomEvent('remove', { detail: { type: 'ui-dialog' } })); return this; } } }); // 暴露的参数 // 并观察参数变化 dialog.params = new Proxy(dialog.params || {}, { get(target, prop) { return target[prop]; }, set(target, prop, value) { if (!dialog.element) { return false; } // 赋值 target[prop] = value; // 拦截 if (prop == 'title' && dialog.element.title) { dialog.element.title.innerHTML = value; } else if (prop == 'content') { dialog.content = value; } else if (prop == 'buttons') { dialog.button(); } else if (dialog.element.dialog && (prop == 'width' || prop == 'height')) { let eleDialog = dialog.element.dialog; eleDialog.classList.remove(CL.add('stretch')); // 纯数值认为是px长度 if (value !== '' && Number(value) == value) { eleDialog.style[prop] = value + 'px'; } else if (prop == 'height' && value == 'stretch') { eleDialog.classList.add(CL.add(value)); } else { if (value == 'auto') { value = ''; } eleDialog.style[prop] = value; } } return true; } }); // 弹框主要元素的创建 // 1. 主体 const eleDialog = document.createElement('div'); eleDialog.classList.add(CL); // 使该元素也可以被focus eleDialog.setAttribute('tabindex', '-1'); // 2. 标题 const eleTitle = document.createElement('h4'); eleTitle.classList.add(CL.add('title')); eleTitle.innerHTML = dialog.title; dialog.removeAttribute('title'); // 3. 关闭按钮 // 随机id,ESC快捷键关闭弹框用到 const strIdClose = ('lulu_' + Math.random()).replace('0.', ''); // 关闭按钮元素创建 const eleClose = document.createElement('button'); eleClose.textContent = '关闭'; eleClose.classList.add(CL.add('close'), 'ESC'); eleClose.id = strIdClose; // 无障碍支持 eleClose.setAttribute('data-target', strIdClose); // 4. 主体内容元素 const eleBody = document.createElement('div'); eleBody.classList.add(CL.add('body')); // 5. 底部元素 const eleFooter = document.createElement('div'); eleFooter.classList.add(CL.add('footer')); // 暴露元素 dialog.element = Object.assign(dialog.element || {}, { dialog: eleDialog, close: eleClose, title: eleTitle, body: eleBody, footer: eleFooter }); // 下面是主体元素的创建 // 如果默认弹框里面就有内容 // 则内容认为是主体内容,记录下来 let nodesOriginDialog = [...dialog.childNodes]; // 原始节点放在eleBody主体内容元素中 if (nodesOriginDialog.length) { nodesOriginDialog.forEach(node => { eleBody.append(node); }); } // 元素插入 // 组装 eleDialog.append(eleClose, eleTitle, eleBody, eleFooter); dialog.append(eleDialog); // 观察open属性变化 var moDialogOpen = new MutationObserver(function(mutationsList) { mutationsList.forEach(mutation => { let eleDialog = mutation.target; if (mutation.type == 'attributes') { // 滚动条状态变化 eleDialog.scrollbar(); // 焦点变化 eleDialog.tabindex(); } }); }); moDialogOpen.observe(dialog, { attributes: true, attributeFilter: ['open'] }); // 默认模式是关闭 dialog.closeMode = 'hide'; // 事件 dialog.events(); } // 回调 dialog.dispatchEvent(new CustomEvent('connected', { detail: { type: 'ui-dialog' } })); // 设置定义完毕标志量 dialog.setAttribute('defined', ''); dialog.isConnectedCallback = true; }; // 弹框观察并注册 let funDialogInitAndWatching = function() { const elesDialog = document.querySelectorAll('dialog'); elesDialog.forEach(item => { funDialogRegist(item); }); // 观察Dialog元素载入页面 var observerTips = new MutationObserver(function(mutationsList) { // 此时不检测DOM变化 mutationsList.forEach(function(mutation) { mutation.addedNodes.forEach(function(eleAdd) { if (eleAdd.matches && eleAdd.matches('dialog')) { funDialogRegist(eleAdd); } else if (eleAdd.querySelector) { eleAdd.querySelectorAll('dialog').forEach(item => { funDialogRegist(item); }); } }); }); }); observerTips.observe(document.body, { childList: true, subtree: true }); }; // 如果浏览器不支持<dialog>,则对出现在页面上的<dialog>元素进行注册 if (document.readyState != 'loading') { funDialogInitAndWatching(); } else { window.addEventListener('DOMContentLoaded', funDialogInitAndWatching); } return Component; })(); // 为了直接使用 window.Dialog = Dialog; // Rich Text theme.rte = { wrapIframe: function(options) { var iframeWrapClass = typeof options.iframeWrapClass === "undefined" ? '' : options.iframeWrapClass; for (var i = 0; i < options.$iframes.length; i++) { var $iframe = options.$iframes[i] const wrapper = document.createElement("div"); wrapper.className = iframeWrapClass $iframe.parentNode.insertBefore(wrapper, $iframe); wrapper.appendChild($iframe); $iframe.src = $iframe.src } }, wrapVideo: function(options) { var videoWrapClass = typeof options.videoWrapClass === "undefined" ? '' : options.videoWrapClass; for (var i = 0; i < options.$videos.length; i++) { var $videos = options.$videos[i] const params = $.params($videos.getAttribute("data-src")) const videoSrc = `${STORE_PARAMS.imageDomain}/${params.videosrc}.${params.ext}` const poster = $videos.getAttribute("data-src") const html = `<video src="${videoSrc}" poster="${poster}" width="${params.width}" height="${params.height}" style="width: 100%;cursor: pointer;" muted autoplay loop x5-playsinline='true' playsinline='true' webkit-playsinline='true'></video>` const hNode = document.createRange().createContextualFragment(html) $videos.parentNode.replaceChild(hNode, $videos) } } }; (function($) { function setPosition(ele, isA) { let gap = 10 let topGap = isA ? 0 : 30 let parent = ele.parent() let xPercentage = ele.attr('horizontal') / 100 let yPercentage = ele.attr('vertical') / 100 ele.css({ top: 0, left: 0 }) ele.css({ left: xPercentage * (parent.innerWidth() - ele.outerWidth() - gap * 2) + gap + 'px', top: yPercentage * (parent.outerHeight() - topGap - ele.outerHeight() - gap * 2) + gap + 'px', opacity: 1, // display: 'flex' }) ele.attr("data-visible", 'false') } function checkOverlap(element1, element2) { let rect1 = element1[0].getBoundingClientRect() let rect2 = element2[0].getBoundingClientRect() return !(rect1.right < rect2.left - 10 || rect1.left > rect2.right + 10 || rect1.bottom < rect2.top - 10 || rect1.top > rect2.bottom + 10) } function adjustPosition(element, parent, referenceElement, bottomGap) { let gap = 10; function tryMove(axis, start, end, step) { for (let pos = start; (step > 0) ? pos <= end : pos >= end; pos += step) { let originalPos = element.css(axis); element.css(axis, pos + "px"); if (!checkOverlap(element, referenceElement)) { return true; } else { element.css(axis, originalPos); } } return false; } let maxX = parent.innerWidth() - element.outerWidth() - gap; let maxY = parent.innerHeight() - bottomGap - element.outerHeight() - gap; let moveRight = element.position().left > (referenceElement.position().left + referenceElement.outerWidth() / 2) let moveDown = element.position().top > (referenceElement.position().top + referenceElement.outerHeight() / 2) if (moveRight) { if (tryMove("left", parseFloat(element.css("left")) + gap, maxX, gap)) return; } else { if (tryMove("left", parseFloat(element.css("left")) - gap, gap, -gap)) return; } if (moveDown) { if (tryMove("top", parseFloat(element.css("top")) + gap, maxY, gap)) return; } else { if (tryMove("top", parseFloat(element.css("top")) - gap, gap, -gap)) return; } // If there is still no available position, hide the element // element.css("display", "none"); element.attr("data-visible", 'true') } $.fn.overlay = function(id) { var resizeId = 'resize.overlay' + id $(window).off(resizeId).on(resizeId, $.debounce(function() { //区分 pc端 和 移动端 var $section = $('[data-section-id=' + id + ']'); $section.find('.avoid-overlaps').each(function() { let $parent = $(this) let $mobileParent = $parent.find('.avoid-overlaps__mobile-container') let $overlay = $parent.find(".overlay") let obj = { avoidItem1: null, avoidItem2: null } const items = $mobileParent.find(".avoid-overlaps-item") items.each(function(index) { obj[`avoidItem${index+1}`] = $(this) }) let isMobile = $(window).width() < 765 $overlay && setPosition($overlay, true) let bottomGap = 0 if ($overlay && $overlay.hasClass("mobile-overlay-under") && isMobile) { $overlay = null bottomGap = 30 } obj.avoidItem1 && setPosition(obj.avoidItem1, $overlay) obj.avoidItem2 && setPosition(obj.avoidItem2, $overlay) let visibleElements = [$overlay, obj.avoidItem1, obj.avoidItem2].filter(el => el) for (let i = 0; i < visibleElements.length; i++) { for (let j = i + 1; j < visibleElements.length; j++) { if (checkOverlap(visibleElements[i], visibleElements[j])) { adjustPosition(visibleElements[j], isMobile ? $mobileParent : $parent, visibleElements[i], bottomGap) } // else { // visibleElements[j].css('display','flex') // } } } }) }, 200)).trigger(resizeId) } // Drawer const Default = { placement: 'left', bodyScrolling: false, backdrop: true, edge: false, edgeOffset: 'bottom-[60px]', backdropClasses: 'bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-30', onShow: () => {}, onHide: () => {}, onToggle: () => {} } class Drawer { constructor(targetEl = null, options) { this._targetEl = targetEl this._options = { ...Default, ...options } this._visible = false this._init() } _init() { // set initial accessibility attributes if (this._targetEl) { this._targetEl.setAttribute('aria-hidden', 'true') this._targetEl.classList.add('transition-transform') } // set base placement classes this._getPlacementClasses(this._options.placement).base.map(c => { this._targetEl.classList.add(c) }) // hide by default this.hide() } isVisible() { return this._visible } hide() { // based on the edge option show placement classes if (this._options.edge) { this._getPlacementClasses(this._options.placement + '-edge').active.map(c => { this._targetEl.classList.remove(c) }) this._getPlacementClasses(this._options.placement + '-edge').inactive.map(c => { this._targetEl.classList.add(c) }) } else { this._getPlacementClasses(this._options.placement).active.map(c => { this._targetEl.classList.remove(c) }) this._getPlacementClasses(this._options.placement).inactive.map(c => { this._targetEl.classList.add(c) }) } // set accessibility attributes this._targetEl.setAttribute('aria-hidden', 'true') this._targetEl.removeAttribute('aria-modal') this._targetEl.removeAttribute('role') // enable body scroll if (!this._options.bodyScrolling) { document.body.classList.remove('overflow-hidden') } // destroy backdrop if (this._options.backdrop) { this._destroyBackdropEl() } this._visible = false // callback function this._options.onHide(this) } show() { if (this._options.edge) { this._getPlacementClasses(this._options.placement + '-edge').active.map(c => { this._targetEl.classList.add(c) }) this._getPlacementClasses(this._options.placement + '-edge').inactive.map(c => { this._targetEl.classList.remove(c) }) } else { this._getPlacementClasses(this._options.placement).active.map(c => { this._targetEl.classList.add(c) }) this._getPlacementClasses(this._options.placement).inactive.map(c => { this._targetEl.classList.remove(c) }) } // set accessibility attributes this._targetEl.setAttribute('aria-modal', 'true') this._targetEl.setAttribute('role', 'dialog') this._targetEl.removeAttribute('aria-hidden') // disable body scroll if (!this._options.bodyScrolling) { document.body.classList.add('overflow-hidden') } // show backdrop if (this._options.backdrop) { this._createBackdrop() } this._visible = true // callback function this._options.onShow(this) } toggle() { if (this.isVisible()) { this.hide() } else { this.show() } } _createBackdrop() { if (!this._visible) { const backdropEl = document.createElement('div'); backdropEl.setAttribute('drawer-backdrop', ''); backdropEl.classList.add(...this._options.backdropClasses.split(" ")); document.querySelector('body').append(backdropEl); backdropEl.addEventListener('click', () => { this.hide() }) } } _destroyBackdropEl() { if (this._visible) { document.querySelector('[drawer-backdrop]').remove(); } } _getPlacementClasses(placement) { switch (placement) { case 'top': return { base: ['top-0', 'left-0', 'right-0'], active: ['transform-none'], inactive: ['-translate-y-full'] } case 'right': return { base: ['right-0', 'top-0'], active: ['transform-none'], inactive: ['translate-x-full'] } case 'bottom': return { base: ['bottom-0', 'left-0', 'right-0'], active: ['transform-none'], inactive: ['translate-y-full'] } case 'left': return { base: ['left-0', 'top-0'], active: ['transform-none'], inactive: ['-translate-x-full'] } case 'bottom-edge': return { base: ['left-0', 'top-0'], active: ['transform-none'], inactive: ['translate-y-full', this._options.edgeOffset] } default: return { base: ['left-0', 'top-0'], active: ['transform-none'], inactive: ['-translate-x-full'] } } } } window.Drawer = Drawer; const getDrawerInstance = (id, instances) => { if (instances.some(drawerInstance => drawerInstance.id === id)) { return instances.find(drawerInstance => drawerInstance.id === id) } return false } function initDrawer() { let drawerInstances = [] document.querySelectorAll('[data-drawer-target]').forEach(triggerEl => { // mandatory const targetEl = document.getElementById(triggerEl.getAttribute('data-drawer-target')) const drawerId = targetEl.id // optional const placement = triggerEl.getAttribute('data-drawer-placement') const bodyScrolling = triggerEl.getAttribute('data-drawer-body-scrolling') const backdrop = triggerEl.getAttribute('data-drawer-backdrop') const edge = triggerEl.getAttribute('data-drawer-edge') const edgeOffset = triggerEl.getAttribute('data-drawer-edge-offset') let drawer = null if (getDrawerInstance(drawerId, drawerInstances)) { drawer = getDrawerInstance(drawerId, drawerInstances) drawer = drawer.object } else { drawer = new Drawer(targetEl, { placement: placement ? placement : Default.placement, bodyScrolling: bodyScrolling ? bodyScrolling === 'true' ? true : false : Default.bodyScrolling, backdrop: backdrop ? backdrop === 'true' ? true : false : Default.backdrop, edge: edge ? edge === 'true' ? true : false : Default.edge, edgeOffset: edgeOffset ? edgeOffset : Default.edgeOffset }) drawerInstances.push({ id: drawerId, object: drawer }) } }) document.querySelectorAll('[data-drawer-toggle]').forEach(triggerEl => { const targetEl = document.getElementById(triggerEl.getAttribute('data-drawer-toggle')) const drawerId = targetEl.id const drawer = getDrawerInstance(drawerId, drawerInstances) triggerEl.addEventListener('click', () => { if (drawer.object.isVisible()) { drawer.object.hide() } else { drawer.object.show() } }) }) document.querySelectorAll('[data-drawer-dismiss]').forEach(triggerEl => { const targetEl = document.getElementById(triggerEl.getAttribute('data-drawer-dismiss')) const drawerId = targetEl.id const drawer = getDrawerInstance(drawerId, drawerInstances) triggerEl.addEventListener('click', () => { drawer.object.hide() }) }) document.querySelectorAll('[data-drawer-show]').forEach(triggerEl => { const targetEl = document.getElementById(triggerEl.getAttribute('data-drawer-show')) const drawerId = targetEl.id const drawer = getDrawerInstance(drawerId, drawerInstances) triggerEl.addEventListener('click', () => { drawer.object.show() }) }) } // 分页 const PaginationDefault = { total: 10, limit: 10, current: 1, change: () => {} } // total 数据总数 // limit 每页数量 // current 当前页面数 class SPagination { constructor(targetEl, options) { this._targetEl = targetEl this._options = { ...Default, ...options } this._init() } update(options) { options && options.total && (this._options.total = options.total) options && options.limit && (this._options.limit = options.limit) options && options.current && (this._options.current = options.current) this._renderNode() } _init() { this._renderNode() this._bindEvent() } _renderNode() { var params = this.getBtnList() if (params.showPageBtn.length == 1) { this._targetEl.html("") } else { var html = window.template("pagination_art_tpl", params) this._targetEl.html(html) } } _bindEvent() { var _this = this $(".pagination-wrap").on("click", ".pagination-prev", function() { if (!_this._options.prePage) { return } else { _this._options.current = Number(_this._options.current) - 1 || 1 _this._options.change(_this._options.current) _this.update() } }) $(".pagination-wrap").on("click", ".pagination-next", function() { if (!_this._options.nextPage) { return } else { _this._options.current = Number(_this._options.current) + 1 _this._options.change(_this._options.current) _this.update() } }) $(".pagination-wrap").on("click", ".pagination-page", function() { var dataIndex = $(this).attr("data-index") _this._options.current = dataIndex _this._options.change(_this._options.current) _this.update() }) } getBtnList() { var current = Number(this._options.current) var limit = Number(this._options.limit) var total = Number(this._options.total) var offset = (current - 1) * limit //上一页是否可用 var prePage = offset !== 0 //下一页是否可用 var nextPage = (offset + limit) < total var totalPage = Math.ceil(total / limit) var currentPage = Math.ceil(offset / limit) + 1 this._options.prePage = prePage this._options.nextPage = nextPage function getShowBtn() { var pageNum = totalPage var index = currentPage if (pageNum <= 5) return [...new Array(pageNum)].map((v, i) => i + 1) if (index <= 2) return [1, 2, 3, 0, pageNum] if (index >= pageNum - 1) return [1, 0, pageNum - 2, pageNum - 1, pageNum] if (index === 3) return [1, 2, 3, 4, 0, pageNum] if (index === pageNum - 2) return [1, 0, pageNum - 3, pageNum - 2, pageNum - 1, pageNum] return [1, 0, index - 1, index, index + 1, 0, pageNum] } return { prePage, nextPage, showPageBtn: getShowBtn(), current: current } } } window.SPagination = SPagination })(window.jQuery) // 背景色 theme.renderBgColor = function(dom) { var height = $(dom).attr('data-height') var bgColor = $(dom).attr('data-bgcolor') $(dom).css('position', 'relative') $(dom).css('z-index', 1) var bgBox = `<div style="height: ${height}%; background-image: ${bgColor}; z-index: -1; position: absolute; top: 0; left: 0; width: 100%"></div>` $(dom).prepend(bgBox) } $(function() { class HomeTemplateSwiper extends HTMLElement { constructor() { super() } connectedCallback() { const sectionId = this.getAttribute("data-section-id") this.mySwiper = new Swiper(`.template-swiper-${sectionId}`, { autoplay: true, loop: true, centeredSlides: true, slidesPerView: 1, spaceBetween: 10, breakpoints: { 768: { slidesPerView: 2.6, spaceBetween: 36, } }, navigation: { nextEl: `.template-swiper-next[data-section-id="${sectionId}"]`, prevEl: `.template-swiper-prev[data-section-id="${sectionId}"]`, } }) } } customElements.define('home-template-swiper', HomeTemplateSwiper); class HeConsultation extends HTMLElement { constructor() { super() this.mode = this.getAttribute("mode") this.$btn = this.querySelector("button") this.$input = this.querySelector("input") this.$btn.addEventListener("click", this.handleClick.bind(this)) } phoneRegExp = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ handleClick() { const phoneInput = this.$input.value if (!this.phoneRegExp.test(phoneInput)) { $.toast.error('请输入正确的手机号') return } if (this.mode === 'inquiry') { this.formInquiry() } else { if(window._locationHref) { window._locationHref(`https://accounts.shoptop.com/register?phone=${phoneInput}`) }else { window.location.href = `https://accounts.shoptop.com/register?phone=${phoneInput}` } } } // 获取cookie中utm_params参数 getUtmParams() { const cookies = document.cookie.split('; '); const utmCookies = cookies.filter(cookie => cookie.startsWith('utm_params')); if (utmCookies.length === 0) return null; if (utmCookies.length === 1) { // 只有一个utm_params,直接返回其value return decodeURIComponent(utmCookies[0].split('=')[1]); } // 如果有两个utm_params,解析日期部分并找到最新的那个 const latestUtmCookie = utmCookies.reduce((latest, current) => { const latestDate = latest.match(/\d{4}-\d{2}-\d{2}/); const currentDate = current.match(/\d{4}-\d{2}-\d{2}/); return currentDate > latestDate ? current : latest; }); // 返回最新utm_params的value return decodeURIComponent(latestUtmCookie.split('=')[1]); } // 解析utm_params字符串组装成一个对象 parseUTMParams(utmString) { const params = {}; const pairs = utmString.split('&'); pairs.forEach(pair => { const [key, value] = pair.split('='); const camelCaseKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase()); params[camelCaseKey] = decodeURIComponent(value); }); return params; } formInquiry() { const eamliRegExp = /^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/; const fetchEnv = location.host.includes('shoptop.cn') ? 'https://www.shoptop.com' : 'https://www.shop-sandbox.com' const fetchUrl = `${fetchEnv}/api/www/inquiry/notify` const value = this.$input.value const utm_params = this.getUtmParams() const utm_parse = utm_params ? this.parseUTMParams(utm_params) : null const utm_object = utm_parse ? Object.assign(utm_parse, { mobileNo: value, utmStr: utm_params, landingPageUrl: window.location.href }) : { mobileNo: value, utmId: '', utmMedium: '', utmSource: '', utmCampaign: '', utmContent: '', utmTerm: '', utmStr: '', landingPageUrl: window.location.href } if (this.phoneRegExp.test(value)) { fetch(fetchUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(utm_object) }).then(response => response.json()).then(res => { if (res.code == 0) { $.toast.success("提交信息成功!我们会尽快与您取得联系!") this.$input.value = '' } else { $.toast.error(res.msg) } }) } else { $.toast.error('请输入正确的手机号') } } } customElements.define('he-consultation', HeConsultation); class HomeShopDeclaration extends HTMLElement { constructor() { super() } connectedCallback() { var mySwiper = null this.sectionId = this.getAttribute("section-id") this.$swiper = this.querySelector('.swiper') this.$declarationBox = this.querySelector(".declaration-box") this.changeSlider() window.matchMedia('(max-width: 750px)').addEventListener('change', this.changeSlider.bind(this)); } changeSlider() { if (window.matchMedia("(max-width: 750px)").matches) { if (this.mySwiper) { this.mySwiper.enable() } else { this.mySwiper = new Swiper(`.shop-${this.sectionId } .swiper`, { slidesPerView: 'auto', autoplay: true, pagination: { el: `.shop-${this.sectionId } .swiper-pagination`, clickable: true, }, }) } } else { if (this.mySwiper) { this.mySwiper.disable() } } } } customElements.define('home-shop-declaration', HomeShopDeclaration); class HeLogoList extends HTMLElement { constructor() { super() this.sectionId = this.getAttribute("section-id") this.autoplay = this.getAttribute("autoplay") == 'true' } connectedCallback() { this.initSwiper() } initSwiper() { this.mySwiper = new Swiper(`.logo-${this.sectionId } .swiper`, { loop: true, autoplay: this.autoplay, slidesPerView: 2.5, spaceBetween: 10, breakpoints: { 768: { slidesPerView: 5, spaceBetween: 20, } }, navigation: { nextEl: `.logo-swiper-next-${this.sectionId}`, prevEl: `.logo-swiper-prev-${this.sectionId}`, }, pagination: { el: `.swiper-pagination-${this.sectionId}`, }, }) } } customElements.define("he-logo-list", HeLogoList) class HeHeaderPopup extends HTMLElement { constructor() { super() this.accordionNavs = this.querySelectorAll(".header-popup-left .accordion-item__title") this.accordionNavs.forEach(accordionNav => { if (accordionNav.getAttribute("nav-type") == 'none') return accordionNav.addEventListener("mouseenter", (event) => { this.accordionEnter(event) }) }) document.querySelector(".section-header").addEventListener("mouseleave", () => { this.parentElement.removeAttribute("open") }) } accordionEnter(event) { const navThype = event.target.getAttribute("nav-type") this.removeOpen() event.target.classList.add("open") this.querySelector(`.header-popup-right__block--${navThype}`).classList.remove("hidden") } removeOpen() { this.accordionNavs.forEach(accordionNav => { accordionNav.classList.remove("open") }) this.querySelectorAll(".header-popup-right__block").forEach($content => { $content.classList.add("hidden") }) } accordionLeave(event) {} } customElements.define("he-header-popup", HeHeaderPopup) class HeHeaderDrawer extends HTMLElement { constructor() { super() const $open = this.querySelector(".mobile-nav-btn") this.$drawer = this.querySelector(".header-nav") $open.addEventListener("click", (event) => { this.changeDrawerType(event) }) this.accordianButtons = this.querySelectorAll(".list-menu__accordian-button") this.accordianButtons.forEach($btn => { $btn.addEventListener("click", event => this.changeAccordianType(event)) }) } toggleModalStatus(status = true) { if (status) { document.body.classList.add('overflow-hidden'); } else { document.body.classList.remove('overflow-hidden'); } } changeDrawerType(event) { let $btn = event.target if (!event.target.classList.contains("mobile-nav-btn")) { $btn = event.target.parentElement } if ($btn.classList.contains("mobile-nav--open")) { $btn.classList.remove("mobile-nav--open") this.$drawer.classList.remove("header-nav--open") this.toggleModalStatus(false) } else { $btn.classList.add("mobile-nav--open") this.$drawer.classList.add("header-nav--open") this.toggleModalStatus() } } changeAccordianType(event) { const classList = event.target.classList let $btn = event.target if (classList.contains("accordion-item__title-icon")) { $btn = event.target.parentElement } const $nextSibling = $btn.nextElementSibling if ($btn.classList.contains('open')) { $btn.classList.remove("open") $nextSibling.classList.add('hidden') } else { $btn.classList.add("open") $nextSibling.classList.remove('hidden') } } } customElements.define("he-header-drawer", HeHeaderDrawer) class RadfPagination extends HTMLElement { constructor() { super(); this.init() } static get observedAttributes() { return ['current', 'total', 'limit']; } get current() { return this.getAttribute("current") } set current(value) { this.setAttribute('current', value) } get total() { return this.getAttribute("total") } set total(value) { this.setAttribute('total', value) } get limit() { return this.getAttribute("limit") } set limit(value) { this.setAttribute('limit', value) } init() { this.renderNode() this.bindEvent() } update(options) { options && options.total && (this.total = options.total) options && options.limit && (this.limit = options.limit) options && options.current && (this.current = options.current) this.renderNode() } renderNode() { var params = this.getBtnList() if (params.showPageBtn.length == 1) { this.innerHTML = '' } else { var html = window.template("pagination_art_tpl", params) this.innerHTML = html } } handleChange(value) { const customEvent = new CustomEvent("change", { bubbles: true, cancelable: true, detail: { current: value } }); this.dispatchEvent(customEvent); } bindEvent() { this.addEventListener("click", (event) => { const target = event.target if (target.matches(".pagination-prev") || target.closest(".pagination-prev")) { // 处理点击事件的逻辑 if (!this.prePage) return this.current = Number(this.current) - 1 || 1 this.handleChange(this.current) this.update() return } if (target.matches(".pagination-next") || target.closest(".pagination-next")) { if (!this.nextPage) return this.current = Number(this.current) + 1 this.handleChange(this.current) this.update() return } if (target.matches(".pagination-page") || target.closest(".pagination-page")) { const dataIndex = target.getAttribute("data-index") this.current = dataIndex this.handleChange(this.current) this.update() return } }) } getBtnList() { var current = Number(this.current) var limit = Number(this.limit) var total = Number(this.total) var offset = (current - 1) * limit //上一页是否可用 var prePage = offset !== 0 //下一页是否可用 var nextPage = (offset + limit) < total var totalPage = Math.ceil(total / limit) var currentPage = Math.ceil(offset / limit) + 1 this.prePage = prePage this.nextPage = nextPage function getShowBtn() { var pageNum = totalPage var index = currentPage if (pageNum <= 5) return [...new Array(pageNum)].map((v, i) => i + 1) if (index <= 2) return [1, 2, 3, 0, pageNum] if (index >= pageNum - 1) return [1, 0, pageNum - 2, pageNum - 1, pageNum] if (index === 3) return [1, 2, 3, 4, 0, pageNum] if (index === pageNum - 2) return [1, 0, pageNum - 3, pageNum - 2, pageNum - 1, pageNum] return [1, 0, index - 1, index, index + 1, 0, pageNum] } return { prePage, nextPage, showPageBtn: getShowBtn(), current: current } } } customElements.define("radf-pagination", RadfPagination) class HeBlogSearchPagination extends RadfPagination { constructor() { super() this.$container = document.querySelector(".blog-artocle-wrap") this.handle = this.getAttribute("handle") } handleChange(value) { super.handleChange() this.fetchData() } fetchData() { const formatter = new Intl.DateTimeFormat('zh-CN', { year: 'numeric', month: 'long', day: 'numeric' }); fetch("/api/mbr/blog/articlePageByTopic", { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ handle: this.handle, pageSize: 9, pageNo: Number(this.current), status: 1 }) }) .then(response => response.json()) .then(res => { if (res.code === 0 && res.data) { try { res.data.list.map(function(item) { item.utcTime = new Date(+new Date(item.releaseTime) + 8 * 3600 * 1000).toISOString(); item.releaseTime = formatter.format(new Date(item.releaseTime)) }) var html = window.template('blog-list-item-tpl', { list: res.data.list }); this.$container.innerHTML = html } catch (err) { console.log("err", err) } } else { } }) .catch(error => { // 处理错误 }) } } customElements.define("he-blog-search-pagination", HeBlogSearchPagination) class HeBlogNav extends HTMLElement { constructor() { super() } connectedCallback() { const $ul = this.querySelector("ul") this.querySelector("button").addEventListener('click', () => { if ($ul.classList.contains("hidden")) { $ul.classList.remove("hidden") } else { $ul.classList.add("hidden") } }) } } customElements.define("he-blog-nav", HeBlogNav) class HeCompanyAddress extends HTMLElement { constructor() { super() this.activeClass = "company-map-text-item__active" } connectedCallback() { this.$mapImages = this.querySelectorAll(".company-map-image-item") this.$mapTags = this.querySelectorAll(".company-map-text-item") this.$mapTags.forEach(($mapTag, index) => { $mapTag.addEventListener("click", event => this.mapTagClick(event, index)) }) } mapTagClick(event, index) { this.clearOtherActive() this.$mapTags[index].classList.add(this.activeClass) this.$mapImages[index].classList.remove("hidden") this.$mapTags[index].querySelector(".popup-arrow").style.left = `${10 + index * 20}%` } clearOtherActive() { this.$mapImages.forEach($mapTag => { $mapTag.classList.add("hidden") }) this.$mapTags.forEach($mapTag => { $mapTag.classList.remove(this.activeClass) }) } } customElements.define("he-company-address", HeCompanyAddress) }) </script> <script> /*! jQuery Validation Plugin - v1.19.5 - 7/1/2022 * https://jqueryvalidation.org/ * Copyright (c) 2022 Jörn Zaefferer; Licensed MIT */ ! function (a) { "function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof module && module.exports ? module.exports = a(require("jquery")) : a(jQuery) }(function (a) { a.extend(a.fn, { validate: function (b) { if (!this.length) return void(b && b.debug && window.console && console.warn( "Nothing selected, can't validate, returning nothing.")); var c = a.data(this[0], "validator"); return c ? c : (this.attr("novalidate", "novalidate"), c = new a.validator(b, this[0]), a.data(this[0], "validator", c), c.settings.onsubmit && (this.on("click.validate", ":submit", function (b) { c.submitButton = b.currentTarget, a(this).hasClass("cancel") && (c.cancelSubmit = !0), void 0 !== a(this).attr("formnovalidate") && (c.cancelSubmit = !0) }), this.on("submit.validate", function (b) { function d() { var d, e; return c.submitButton && (c.settings.submitHandler || c.formSubmitted) && (d = a( "<input type='hidden'/>").attr("name", c.submitButton.name).val(a(c.submitButton) .val()).appendTo(c.currentForm)), !(c.settings.submitHandler && !c.settings.debug) || ( e = c.settings.submitHandler.call(c, c.currentForm, b), d && d.remove(), void 0 !== e && e) } return c.settings.debug && b.preventDefault(), c.cancelSubmit ? (c.cancelSubmit = !1, d()) : c .form() ? c.pendingRequest ? (c.formSubmitted = !0, !1) : d() : (c.focusInvalid(), !1) })), c) }, valid: function () { var b, c, d; return a(this[0]).is("form") ? b = this.validate().form() : (d = [], b = !0, c = a(this[0].form) .validate(), this.each(function () { b = c.element(this) && b, b || (d = d.concat(c.errorList)) }), c.errorList = d), b }, rules: function (b, c) { var d, e, f, g, h, i, j = this[0], k = "undefined" != typeof this.attr("contenteditable") && "false" !== this.attr("contenteditable"); if (null != j && (!j.form && k && (j.form = this.closest("form")[0], j.name = this.attr("name")), null != j.form)) { if (b) switch (d = a.data(j.form, "validator").settings, e = d.rules, f = a.validator.staticRules(j), b) { case "add": a.extend(f, a.validator.normalizeRule(c)), delete f.messages, e[j.name] = f, c.messages && (d .messages[j.name] = a.extend(d.messages[j.name], c.messages)); break; case "remove": return c ? (i = {}, a.each(c.split(/\s/), function (a, b) { i[b] = f[b], delete f[b] }), i) : (delete e[j.name], f) } return g = a.validator.normalizeRules(a.extend({}, a.validator.classRules(j), a.validator .attributeRules(j), a.validator.dataRules(j), a.validator.staticRules(j)), j), g.required && (h = g.required, delete g.required, g = a.extend({ required: h }, g)), g.remote && (h = g.remote, delete g.remote, g = a.extend(g, { remote: h })), g } } }); var b = function (a) { return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") }; a.extend(a.expr.pseudos || a.expr[":"], { blank: function (c) { return !b("" + a(c).val()) }, filled: function (c) { var d = a(c).val(); return null !== d && !!b("" + d) }, unchecked: function (b) { return !a(b).prop("checked") } }), a.validator = function (b, c) { this.settings = a.extend(!0, {}, a.validator.defaults, b), this.currentForm = c, this.init() }, a.validator.format = function (b, c) { return 1 === arguments.length ? function () { var c = a.makeArray(arguments); return c.unshift(b), a.validator.format.apply(this, c) } : void 0 === c ? b : (arguments.length > 2 && c.constructor !== Array && (c = a.makeArray(arguments) .slice(1)), c.constructor !== Array && (c = [c]), a.each(c, function (a, c) { b = b.replace(new RegExp("\\{" + a + "\\}", "g"), function () { return c }) }), b) }, a.extend(a.validator, { defaults: { messages: {}, groups: {}, rules: {}, errorClass: "error", pendingClass: "pending", validClass: "valid", errorElement: "label", focusCleanup: !1, focusInvalid: !0, errorContainer: a([]), errorLabelContainer: a([]), onsubmit: !0, ignore: ":hidden", ignoreTitle: !1, onfocusin: function (a) { this.lastActive = a, this.settings.focusCleanup && (this.settings.unhighlight && this.settings .unhighlight.call(this, a, this.settings.errorClass, this.settings.validClass), this.hideThese( this.errorsFor(a))) }, onfocusout: function (a) { this.checkable(a) || !(a.name in this.submitted) && this.optional(a) || this.element(a) }, onkeyup: function (b, c) { var d = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225]; 9 === c.which && "" === this.elementValue(b) || a.inArray(c.keyCode, d) !== -1 || (b.name in this .submitted || b.name in this.invalid) && this.element(b) }, onclick: function (a) { a.name in this.submitted ? this.element(a) : a.parentNode.name in this.submitted && this.element(a .parentNode) }, highlight: function (b, c, d) { "radio" === b.type ? this.findByName(b.name).addClass(c).removeClass(d) : a(b).addClass(c) .removeClass(d) }, unhighlight: function (b, c, d) { "radio" === b.type ? this.findByName(b.name).removeClass(c).addClass(d) : a(b).removeClass(c) .addClass(d) } }, setDefaults: function (b) { a.extend(a.validator.defaults, b) }, messages: { required: "This field is required.", remote: "Please fix this field.", email: "Please enter a valid email address.", url: "Please enter a valid URL.", date: "Please enter a valid date.", dateISO: "Please enter a valid date (ISO).", number: "Please enter a valid number.", digits: "Please enter only digits.", equalTo: "Please enter the same value again.", maxlength: a.validator.format("Please enter no more than {0} characters."), minlength: a.validator.format("Please enter at least {0} characters."), rangelength: a.validator.format("Please enter a value between {0} and {1} characters long."), range: a.validator.format("Please enter a value between {0} and {1}."), max: a.validator.format("Please enter a value less than or equal to {0}."), min: a.validator.format("Please enter a value greater than or equal to {0}."), step: a.validator.format("Please enter a multiple of {0}.") }, autoCreateRanges: !1, prototype: { init: function () { function b(b) { var c = "undefined" != typeof a(this).attr("contenteditable") && "false" !== a(this).attr( "contenteditable"); if (!this.form && c && (this.form = a(this).closest("form")[0], this.name = a(this).attr("name")), d === this.form) { var e = a.data(this.form, "validator"), f = "on" + b.type.replace(/^validate/, ""), g = e.settings; g[f] && !a(this).is(g.ignore) && g[f].call(e, this, b) } } this.labelContainer = a(this.settings.errorLabelContainer), this.errorContext = this.labelContainer .length && this.labelContainer || a(this.currentForm), this.containers = a(this.settings .errorContainer).add(this.settings.errorLabelContainer), this.submitted = {}, this .valueCache = {}, this.pendingRequest = 0, this.pending = {}, this.invalid = {}, this.reset(); var c, d = this.currentForm, e = this.groups = {}; a.each(this.settings.groups, function (b, c) { "string" == typeof c && (c = c.split(/\s/)), a.each(c, function (a, c) { e[c] = b }) }), c = this.settings.rules, a.each(c, function (b, d) { c[b] = a.validator.normalizeRule(d) }), a(this.currentForm).on("focusin.validate focusout.validate keyup.validate", ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']", b).on("click.validate", "select, option, [type='radio'], [type='checkbox']", b), this.settings .invalidHandler && a(this.currentForm).on("invalid-form.validate", this.settings.invalidHandler) }, form: function () { return this.checkForm(), a.extend(this.submitted, this.errorMap), this.invalid = a.extend({}, this .errorMap), this.valid() || a(this.currentForm).triggerHandler("invalid-form", [this]), this .showErrors(), this.valid() }, checkForm: function () { this.prepareForm(); for (var a = 0, b = this.currentElements = this.elements(); b[a]; a++) this.check(b[a]); return this.valid() }, element: function (b) { var c, d, e = this.clean(b), f = this.validationTargetFor(e), g = this, h = !0; return void 0 === f ? delete this.invalid[e.name] : (this.prepareElement(f), this.currentElements = a( f), d = this.groups[f.name], d && a.each(this.groups, function (a, b) { b === d && a !== f.name && (e = g.validationTargetFor(g.clean(g.findByName(a))), e && e .name in g.invalid && (g.currentElements.push(e), h = g.check(e) && h)) }), c = this.check(f) !== !1, h = h && c, c ? this.invalid[f.name] = !1 : this.invalid[f.name] = ! 0, this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), a(b).attr("aria-invalid", !c)), h }, showErrors: function (b) { if (b) { var c = this; a.extend(this.errorMap, b), this.errorList = a.map(this.errorMap, function (a, b) { return { message: a, element: c.findByName(b)[0] } }), this.successList = a.grep(this.successList, function (a) { return !(a.name in b) }) } this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this .defaultShowErrors() }, resetForm: function () { a.fn.resetForm && a(this.currentForm).resetForm(), this.invalid = {}, this.submitted = {}, this .prepareForm(), this.hideErrors(); var b = this.elements().removeData("previousValue").removeAttr("aria-invalid"); this.resetElements(b) }, resetElements: function (a) { var b; if (this.settings.unhighlight) for (b = 0; a[b]; b++) this.settings.unhighlight.call(this, a[b], this.settings.errorClass, ""), this.findByName(a[b].name).removeClass(this.settings.validClass); else a.removeClass(this.settings.errorClass).removeClass(this.settings.validClass) }, numberOfInvalids: function () { return this.objectLength(this.invalid) }, objectLength: function (a) { var b, c = 0; for (b in a) void 0 !== a[b] && null !== a[b] && a[b] !== !1 && c++; return c }, hideErrors: function () { this.hideThese(this.toHide) }, hideThese: function (a) { a.not(this.containers).text(""), this.addWrapper(a).hide() }, valid: function () { return 0 === this.size() }, size: function () { return this.errorList.length }, focusInvalid: function () { if (this.settings.focusInvalid) try { a(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter( ":visible").trigger("focus").trigger("focusin") } catch (b) {} }, findLastActive: function () { var b = this.lastActive; return b && 1 === a.grep(this.errorList, function (a) { return a.element.name === b.name }).length && b }, elements: function () { var b = this, c = {}; return a(this.currentForm).find("input, select, textarea, [contenteditable]").not( ":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function () { var d = this.name || a(this).attr("name"), e = "undefined" != typeof a(this).attr("contenteditable") && "false" !== a(this).attr( "contenteditable"); return !d && b.settings.debug && window.console && console.error("%o has no name assigned", this), e && (this.form = a(this).closest("form")[0], this.name = d), this.form === b .currentForm && (!(d in c || !b.objectLength(a(this).rules())) && (c[d] = !0, !0)) }) }, clean: function (b) { return a(b)[0] }, errors: function () { var b = this.settings.errorClass.split(" ").join("."); return a(this.settings.errorElement + "." + b, this.errorContext) }, resetInternals: function () { this.successList = [], this.errorList = [], this.errorMap = {}, this.toShow = a([]), this.toHide = a( []) }, reset: function () { this.resetInternals(), this.currentElements = a([]) }, prepareForm: function () { this.reset(), this.toHide = this.errors().add(this.containers) }, prepareElement: function (a) { this.reset(), this.toHide = this.errorsFor(a) }, elementValue: function (b) { var c, d, e = a(b), f = b.type, g = "undefined" != typeof e.attr("contenteditable") && "false" !== e.attr("contenteditable"); return "radio" === f || "checkbox" === f ? this.findByName(b.name).filter(":checked").val() : "number" === f && "undefined" != typeof b.validity ? b.validity.badInput ? "NaN" : e.val() : (c = g ? e.text() : e.val(), "file" === f ? "C:\\fakepath\\" === c.substr(0, 12) ? c.substr(12) : (d = c.lastIndexOf("/"), d >= 0 ? c.substr(d + 1) : (d = c.lastIndexOf("\\"), d >= 0 ? c.substr(d + 1) : c)) : "string" == typeof c ? c.replace(/\r/g, "") : c) }, check: function (b) { b = this.validationTargetFor(this.clean(b)); var c, d, e, f, g = a(b).rules(), h = a.map(g, function (a, b) { return b }).length, i = !1, j = this.elementValue(b); "function" == typeof g.normalizer ? f = g.normalizer : "function" == typeof this.settings .normalizer && (f = this.settings.normalizer), f && (j = f.call(b, j), delete g.normalizer); for (d in g) { e = { method: d, parameters: g[d] }; try { if (c = a.validator.methods[d].call(this, j, b, e.parameters), "dependency-mismatch" === c && 1 === h) { i = !0; continue } if (i = !1, "pending" === c) return void(this.toHide = this.toHide.not(this.errorsFor(b))); if (!c) return this.formatAndAdd(b, e), !1 } catch (k) { throw this.settings.debug && window.console && console.log( "Exception occurred when checking element " + b.id + ", check the '" + e.method + "' method.", k), k instanceof TypeError && (k.message += ". Exception occurred when checking element " + b .id + ", check the '" + e.method + "' method."), k } } if (!i) return this.objectLength(g) && this.successList.push(b), !0 }, customDataMessage: function (b, c) { return a(b).data("msg" + c.charAt(0).toUpperCase() + c.substring(1).toLowerCase()) || a(b).data("msg") }, customMessage: function (a, b) { var c = this.settings.messages[a]; return c && (c.constructor === String ? c : c[b]) }, findDefined: function () { for (var a = 0; a < arguments.length; a++) if (void 0 !== arguments[a]) return arguments[a] }, defaultMessage: function (b, c) { "string" == typeof c && (c = { method: c }); var d = this.findDefined(this.customMessage(b.name, c.method), this.customDataMessage(b, c.method), ! this.settings.ignoreTitle && b.title || void 0, a.validator.messages[c.method], "<strong>Warning: No message defined for " + b.name + "</strong>"), e = /\$?\{(\d+)\}/g; return "function" == typeof d ? d = d.call(this, c.parameters, b) : e.test(d) && (d = a.validator .format(d.replace(e, "{$1}"), c.parameters)), d }, formatAndAdd: function (a, b) { var c = this.defaultMessage(a, b); this.errorList.push({ message: c, element: a, method: b.method }), this.errorMap[a.name] = c, this.submitted[a.name] = c }, addWrapper: function (a) { return this.settings.wrapper && (a = a.add(a.parent(this.settings.wrapper))), a }, defaultShowErrors: function () { var a, b, c; for (a = 0; this.errorList[a]; a++) c = this.errorList[a], this.settings.highlight && this.settings .highlight.call(this, c.element, this.settings.errorClass, this.settings.validClass), this .showLabel(c.element, c.message); if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success) for (a = 0; this.successList[a]; a++) this.showLabel(this.successList[a]); if (this.settings.unhighlight) for (a = 0, b = this.validElements(); b[a]; a++) this.settings.unhighlight.call(this, b[a], this .settings.errorClass, this.settings.validClass); this.toHide = this.toHide.not(this.toShow), this.hideErrors(), this.addWrapper(this.toShow).show() }, validElements: function () { return this.currentElements.not(this.invalidElements()) }, invalidElements: function () { return a(this.errorList).map(function () { return this.element }) }, showLabel: function (b, c) { var d, e, f, g, h = this.errorsFor(b), i = this.idOrName(b), j = a(b).attr("aria-describedby"); h.length ? (h.removeClass(this.settings.validClass).addClass(this.settings.errorClass), h.html(c)) : ( h = a("<" + this.settings.errorElement + ">").attr("id", i + "-error").addClass(this.settings .errorClass).html(c || ""), d = h, this.settings.wrapper && (d = h.hide().show().wrap("<" + this .settings.wrapper + "/>").parent()), this.labelContainer.length ? this.labelContainer.append( d) : this.settings.errorPlacement ? this.settings.errorPlacement.call(this, d, a(b)) : d .insertAfter(b), h.is("label") ? h.attr("for", i) : 0 === h.parents("label[for='" + this .escapeCssMeta(i) + "']").length && (f = h.attr("id"), j ? j.match(new RegExp("\\b" + this .escapeCssMeta(f) + "\\b")) || (j += " " + f) : j = f, a(b).attr("aria-describedby", j), e = this.groups[b.name], e && (g = this, a.each(g.groups, function (b, c) { c === e && a("[name='" + g.escapeCssMeta(b) + "']", g.currentForm).attr( "aria-describedby", h.attr("id")) })))), !c && this.settings.success && (h.text(""), "string" == typeof this.settings.success ? h .addClass(this.settings.success) : this.settings.success(h, b)), this.toShow = this.toShow.add(h) }, errorsFor: function (b) { var c = this.escapeCssMeta(this.idOrName(b)), d = a(b).attr("aria-describedby"), e = "label[for='" + c + "'], label[for='" + c + "'] *"; return d && (e = e + ", #" + this.escapeCssMeta(d).replace(/\s+/g, ", #")), this.errors().filter(e) }, escapeCssMeta: function (a) { return void 0 === a ? "" : a.replace(/([\\!"#$%&'()*+,./:;<=>?@\[\]^`{|}~])/g, "\\$1") }, idOrName: function (a) { return this.groups[a.name] || (this.checkable(a) ? a.name : a.id || a.name) }, validationTargetFor: function (b) { return this.checkable(b) && (b = this.findByName(b.name)), a(b).not(this.settings.ignore)[0] }, checkable: function (a) { return /radio|checkbox/i.test(a.type) }, findByName: function (b) { return a(this.currentForm).find("[name='" + this.escapeCssMeta(b) + "']") }, getLength: function (b, c) { switch (c.nodeName.toLowerCase()) { case "select": return a("option:selected", c).length; case "input": if (this.checkable(c)) return this.findByName(c.name).filter(":checked").length } return b.length }, depend: function (a, b) { return !this.dependTypes[typeof a] || this.dependTypes[typeof a](a, b) }, dependTypes: { "boolean": function (a) { return a }, string: function (b, c) { return !!a(b, c.form).length }, "function": function (a, b) { return a(b) } }, optional: function (b) { var c = this.elementValue(b); return !a.validator.methods.required.call(this, c, b) && "dependency-mismatch" }, startRequest: function (b) { this.pending[b.name] || (this.pendingRequest++, a(b).addClass(this.settings.pendingClass), this .pending[b.name] = !0) }, stopRequest: function (b, c) { this.pendingRequest--, this.pendingRequest < 0 && (this.pendingRequest = 0), delete this.pending[b .name], a(b).removeClass(this.settings.pendingClass), c && 0 === this.pendingRequest && this .formSubmitted && this.form() && 0 === this.pendingRequest ? (a(this.currentForm).trigger("submit"), this.submitButton && a("input:hidden[name='" + this.submitButton.name + "']", this.currentForm) .remove(), this.formSubmitted = !1) : !c && 0 === this.pendingRequest && this.formSubmitted && (a( this.currentForm).triggerHandler("invalid-form", [this]), this.formSubmitted = !1) }, previousValue: function (b, c) { return c = "string" == typeof c && c || "remote", a.data(b, "previousValue") || a.data(b, "previousValue", { old: null, valid: !0, message: this.defaultMessage(b, { method: c }) }) }, destroy: function () { this.resetForm(), a(this.currentForm).off(".validate").removeData("validator").find( ".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find( ".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find( ".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass( "validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off( ".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find( ".validate-greaterThan-blur").off(".validate-greaterThan").removeClass( "validate-greaterThan-blur") } }, classRuleSettings: { required: { required: !0 }, email: { email: !0 }, url: { url: !0 }, date: { date: !0 }, dateISO: { dateISO: !0 }, number: { number: !0 }, digits: { digits: !0 }, creditcard: { creditcard: !0 } }, addClassRules: function (b, c) { b.constructor === String ? this.classRuleSettings[b] = c : a.extend(this.classRuleSettings, b) }, classRules: function (b) { var c = {}, d = a(b).attr("class"); return d && a.each(d.split(" "), function () { this in a.validator.classRuleSettings && a.extend(c, a.validator.classRuleSettings[this]) }), c }, normalizeAttributeRule: function (a, b, c, d) { /min|max|step/.test(c) && (null === b || /number|range|text/.test(b)) && (d = Number(d), isNaN(d) && ( d = void 0)), d || 0 === d ? a[c] = d : b === c && "range" !== b && (a["date" === b ? "dateISO" : c] = !0) }, attributeRules: function (b) { var c, d, e = {}, f = a(b), g = b.getAttribute("type"); for (c in a.validator.methods) "required" === c ? (d = b.getAttribute(c), "" === d && (d = !0), d = !! d) : d = f.attr(c), this.normalizeAttributeRule(e, g, c, d); return e.maxlength && /-1|2147483647|524288/.test(e.maxlength) && delete e.maxlength, e }, dataRules: function (b) { var c, d, e = {}, f = a(b), g = b.getAttribute("type"); for (c in a.validator.methods) d = f.data("rule" + c.charAt(0).toUpperCase() + c.substring(1) .toLowerCase()), "" === d && (d = !0), this.normalizeAttributeRule(e, g, c, d); return e }, staticRules: function (b) { var c = {}, d = a.data(b.form, "validator"); return d.settings.rules && (c = a.validator.normalizeRule(d.settings.rules[b.name]) || {}), c }, normalizeRules: function (b, c) { return a.each(b, function (d, e) { if (e === !1) return void delete b[d]; if (e.param || e.depends) { var f = !0; switch (typeof e.depends) { case "string": f = !!a(e.depends, c.form).length; break; case "function": f = e.depends.call(c, c) } f ? b[d] = void 0 === e.param || e.param : (a.data(c.form, "validator").resetElements(a(c)), delete b[d]) } }), a.each(b, function (a, d) { b[a] = "function" == typeof d && "normalizer" !== a ? d(c) : d }), a.each(["minlength", "maxlength"], function () { b[this] && (b[this] = Number(b[this])) }), a.each(["rangelength", "range"], function () { var a; b[this] && (Array.isArray(b[this]) ? b[this] = [Number(b[this][0]), Number(b[this][1])] : "string" == typeof b[this] && (a = b[this].replace(/[\[\]]/g, "").split(/[\s,]+/), b[this] = [ Number(a[0]), Number(a[1]) ])) }), a.validator.autoCreateRanges && (null != b.min && null != b.max && (b.range = [b.min, b.max], delete b.min, delete b.max), null != b.minlength && null != b.maxlength && (b.rangelength = [b .minlength, b.maxlength ], delete b.minlength, delete b.maxlength)), b }, normalizeRule: function (b) { if ("string" == typeof b) { var c = {}; a.each(b.split(/\s/), function () { c[this] = !0 }), b = c } return b }, addMethod: function (b, c, d) { a.validator.methods[b] = c, a.validator.messages[b] = void 0 !== d ? d : a.validator.messages[b], c .length < 3 && a.validator.addClassRules(b, a.validator.normalizeRule(b)) }, methods: { required: function (b, c, d) { if (!this.depend(d, c)) return "dependency-mismatch"; if ("select" === c.nodeName.toLowerCase()) { var e = a(c).val(); return e && e.length > 0 } return this.checkable(c) ? this.getLength(b, c) > 0 : void 0 !== b && null !== b && b.length > 0 }, email: function (a, b) { return this.optional(b) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ .test(a) }, url: function (a, b) { return this.optional(b) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\]\[?\/<~#`!@$^&*()+=}|:";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i .test(a) }, date: function () { var a = !1; return function (b, c) { return a || (a = !0, this.settings.debug && window.console && console.warn( "The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`." )), this.optional(c) || !/Invalid|NaN/.test(new Date(b).toString()) } }(), dateISO: function (a, b) { return this.optional(b) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(a) }, number: function (a, b) { return this.optional(b) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a) }, digits: function (a, b) { return this.optional(b) || /^\d+$/.test(a) }, minlength: function (a, b, c) { var d = Array.isArray(a) ? a.length : this.getLength(a, b); return this.optional(b) || d >= c }, maxlength: function (a, b, c) { var d = Array.isArray(a) ? a.length : this.getLength(a, b); return this.optional(b) || d <= c }, rangelength: function (a, b, c) { var d = Array.isArray(a) ? a.length : this.getLength(a, b); return this.optional(b) || d >= c[0] && d <= c[1] }, min: function (a, b, c) { return this.optional(b) || a >= c }, max: function (a, b, c) { return this.optional(b) || a <= c }, range: function (a, b, c) { return this.optional(b) || a >= c[0] && a <= c[1] }, step: function (b, c, d) { var e, f = a(c).attr("type"), g = "Step attribute on input type " + f + " is not supported.", h = ["text", "number", "range"], i = new RegExp("\\b" + f + "\\b"), j = f && !i.test(h.join()), k = function (a) { var b = ("" + a).match(/(?:\.(\d+))?$/); return b && b[1] ? b[1].length : 0 }, l = function (a) { return Math.round(a * Math.pow(10, e)) }, m = !0; if (j) throw new Error(g); return e = k(d), (k(b) > e || l(b) % l(d) !== 0) && (m = !1), this.optional(c) || m }, equalTo: function (b, c, d) { var e = a(d); return this.settings.onfocusout && e.not(".validate-equalTo-blur").length && e.addClass( "validate-equalTo-blur").on("blur.validate-equalTo", function () { a(c).valid() }), b === e.val() }, remote: function (b, c, d, e) { if (this.optional(c)) return "dependency-mismatch"; e = "string" == typeof e && e || "remote"; var f, g, h, i = this.previousValue(c, e); return this.settings.messages[c.name] || (this.settings.messages[c.name] = {}), i.originalMessage = i .originalMessage || this.settings.messages[c.name][e], this.settings.messages[c.name][e] = i .message, d = "string" == typeof d && { url: d } || d, h = a.param(a.extend({ data: b }, d.data)), i.old === h ? i.valid : (i.old = h, f = this, this.startRequest(c), g = {}, g[c.name] = b, a.ajax(a.extend(!0, { mode: "abort", port: "validate" + c.name, dataType: "json", data: g, context: f.currentForm, success: function (a) { var d, g, h, j = a === !0 || "true" === a; f.settings.messages[c.name][e] = i.originalMessage, j ? (h = f.formSubmitted, f .resetInternals(), f.toHide = f.errorsFor(c), f.formSubmitted = h, f.successList .push(c), f.invalid[c.name] = !1, f.showErrors()) : (d = {}, g = a || f .defaultMessage(c, { method: e, parameters: b }), d[c.name] = i.message = g, f.invalid[c.name] = !0, f.showErrors(d)), i.valid = j, f.stopRequest(c, j) } }, d)), "pending") } } }); var c, d = {}; return a.ajaxPrefilter ? a.ajaxPrefilter(function (a, b, c) { var e = a.port; "abort" === a.mode && (d[e] && d[e].abort(), d[e] = c) }) : (c = a.ajax, a.ajax = function (b) { var e = ("mode" in b ? b : a.ajaxSettings).mode, f = ("port" in b ? b : a.ajaxSettings).port; return "abort" === e ? (d[f] && d[f].abort(), d[f] = c.apply(this, arguments), d[f]) : c.apply(this, arguments) }), a }); /** 自定义验证邮箱格式 */ window.$.validator.addMethod('specialChar', function (value, element, param) { var reg = /[~!@#$%^&*()_+<>?:"{}/;[\]\s]/ return !reg.test(value) }) window.$.validator.addMethod('stEmail', (value, element, param) => { if (!value) return true var reg = /^[a-zA-Z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/g; return reg.test(value); }) window.$.validator.addMethod('stZip', (value, element, param) => { var reg = /^\s*[1-9a-zA-Z][0-9a-zA-Z]*([-\s]+[0-9a-zA-Z]+)*\s*$|^\s*0[0-9a-zA-Z]+([-\s]+[0-9a-zA-Z]+)*\s*$|^\s*0[0-9a-zA-Z]*([-\s]+[0-9a-zA-Z]+)+\s*$/ return reg.test(value) }) window.$.validator.addMethod('stSpace', function (value, element, param) { var reg = /[~!@#$%^&*()_+<>?:"{}/;[\]]|^0$/ return !reg.test(value) }) window.$.validator.addMethod('stPhone', function (value, element, param) { var reg = /^1[3456789]\d{9}$/ return reg.test(value) }) </script> <div class="hidden" id="error_svg"><svg width="28" height="28" xmlns="http://www.w3.org/2000/svg"> <path d="M14 0c7.732 0 14 6.268 14 14s-6.268 14-14 14S0 21.732 0 14 6.268 0 14 0zm0 2.074C7.413 2.074 2.074 7.414 2.074 14c0 6.587 5.34 11.926 11.926 11.926 6.587 0 11.926-5.34 11.926-11.926 0-6.587-5.34-11.926-11.926-11.926zM14 18a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm0-10a1 1 0 0 1 .993.883L15 9v6a1 1 0 0 1-1.993.117L13 15V9a1 1 0 0 1 1-1z" fill="currentColor" /> </svg> </div> <div class="xt-section section-header" data-section-type="header" data-section-id="header"> <style>[data-section-id="header"]{position:relative;z-index:30;}.header_box{background-color:var(--color-menu-bg);color:var(--color-menu-text);}.header_announcement_box{background:var(--color-announcement-bg);color:var(--color-announcement-text);text-align:center;}.header_announcement_close{margin:auto 0;right:31px;}@media screen and (max-width:768px){.header_announcement_box{text-align:left;}.header_announcement{padding:12px 0;}.header_announcement_close{right:20px;}.header_announcement{font-weight:400;font-size:12px;min-height:44px;line-height:20px;padding-right:30px;}.header_announcement a{font-weight:500;font-size:12px;}}.header-contaner__inner{box-shadow:0px 0px 6px rgba(64,92,121,0.12);}.header-contaner__inner{position:fixed;top:0;right:0;left:0;}.header-contaner__box{padding-left:20px;padding-right:20px;}.header-popup{position:absolute;top:100%;left:0;right:0;fill:#FFF;background:#fff;box-shadow:0px 4px 8px rgba(0,0,0,0.07);padding:30px 0 60px 0;}.header-popup-left{width:375px;height:338px;background:#F4F5F6;}.header-popup-left li{margin-top:22px;}.header-popup-left li:first-child{margin-top:0;}.header-popup-left li:last-child{padding-top:22px;border-top:1px solid #D9D9D9;}.header-popup-right__header{width:350px;padding-bottom:30px;border-bottom:1px solid #D9D9D9;}.header-popup-right__header i{background:rgba(18,116,255,0.08);}.accordion-item__title-icon::before,.accordion-item__title-icon::after{content:"";position:absolute;top:calc(50% - 1px);right:0;height:2px;width:12px;background-color:currentColor;transition:0.3s ease;transition-property:transform,opacity;}.accordion-item__title.open .accordion-item__title-icon::before{transform:rotate(90deg);opacity:0;}.accordion-item__title.open{color:#1274FF;}.accordion-item__title.open .accordion-item__title-icon::after{transform:rotate(180deg);}.accordion-item__title-icon::before{transform:rotate(-90deg);}.header-popup-right__content li a:hover{color:#1274FF;}.nav__container{position:fixed;transition:all 150ms cubic-bezier(0.46,0.03,0,1);display:block;left:0;top:0;bottom:0;width:100%;background:#fff;color:#000000;z-index:20;top:54px;border-top:1px solid #ccc;}.header-nav{display:none;}.header-nav--open{display:block;}.header-nav__top{border-bottom:1px solid #ccc;}.list-menu__accordian-content{background:#F4F5F6;}.header-drawer-footer{box-shadow:0px -4px 8px rgba(0,0,0,0.07);}.mobile-nav-btn .mobile-nav-btn__close{display:none;}.mobile-nav--open .mobile-nav-btn__close{display:block;}.mobile-nav--open .mobile-nav-btn__open{display:none;}.logo-image{max-width:88px;}@media screen and (min-width:768px){.logo-image{max-width:120px;}}.down-arrow{display:inline-block;position:relative;width:12px;height:7px;font-size:0;line-height:0;margin-left:8px;}.down-arrow::before,.down-arrow::after{content:'';display:inline-block;transform-origin:center;transition:all 0.35s cubic-bezier(0.4,0,0.2,1);background-color:#000;border-bottom-width:8px;border-color:#000;border-radius:4px;width:2px;height:8px;}.down-arrow::before{transform:translate(-3px,0) rotate(135deg);}.down-arrow::after{transform:rotate(-135deg);}details[open] .down-arrow::before{transform:translate(-3px,0) rotate(45deg);}details[open] .down-arrow::after{transform:rotate(-45deg);}</style> <div class="relative header-wrapper"> <div class="top-0 left-0 w-full header_box" data-is_top='true'> <div class="header-container h-[54px] md:h-[72px]"> <div class="header-contaner__inner h-[54px] md:h-[72px] bg-white"> <div class="flex items-center justify-between h-full page-width header-contaner__box"> <div class="logo-image"> <a href="/"> <img alt="" class="ls-is-cached lazyloaded" src="https://cdn.shoptop.com/1849034712552800258.png" data-src="https://cdn.shoptop.com/1849034712552800258.png"> </a> </div> <div class="flex-1 hidden ml-4 lg:ml-12 md:block header-market-nav"> <ul class="flex items-center text-base text-menu-color"> <li class="py-3 mr-0 md:mr-4 lg:mr-6 xl:mr-8 last:mr-0"> <details id="Details-menu-drawer-menu-item-0"> <summary class="flex items-center text-base font-semibold cursor-pointer list-menu__item"> <span>解决方案</span> <span class="down-arrow"></span> </summary> <he-header-popup> <div class="header-popup"> <div class="flex page-width text-menu"> <div class="header-popup-left p-7.5"> <ul class="text-lg"> <li class="accordion-item__title flex items-center cursor-pointer font-semibold open" nav-type="store-mode"> 店铺模式<span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"></span> </li> <li class="accordion-item__title flex items-center cursor-pointer font-semibold " nav-type="store-marking"> 店铺营销<span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"></span> </li> <li class="accordion-item__title flex items-center cursor-pointer font-semibold " nav-type="store-manage"> 店铺管理<span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"></span> </li> <li class="accordion-item__title flex items-center cursor-pointer font-semibold " nav-type="none"> <a href="/pages/pattern">合作模式</a> </li> </ul> </div> <div class="flex-1 ml-20 header-popup-right"> <div class=" header-popup-right__block header-popup-right__block--store-mode"> <div class="flex header-popup-right__header"> <i class="w-[50px] h-[50px] rounded-md flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"> <mask id="header-store" width="28" height="28" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"> <path fill="#D9D9D9" d="M0 0h28v28H0z" /> </mask> <g mask="url(#header-store)"> <path fill="#000" d="M26.188 9.875V8a.746.746 0 0 0-.09-.33l-1.982-3.675a2.328 2.328 0 0 0-.901-.91 2.591 2.591 0 0 0-1.285-.335H6.07a2.59 2.59 0 0 0-1.285.335c-.386.22-.698.535-.9.91L1.901 7.662a.746.746 0 0 0-.09.338v1.875c.001.555.15 1.1.434 1.59.283.489.692.906 1.192 1.215v11.07h-.813a.848.848 0 0 0-.575.22.722.722 0 0 0-.237.53c0 .199.085.39.237.53.153.141.36.22.575.22h22.75a.848.848 0 0 0 .575-.22.722.722 0 0 0 .238-.53.722.722 0 0 0-.238-.53.848.848 0 0 0-.575-.22h-.813V12.68c.5-.309.91-.726 1.192-1.215.284-.49.433-1.035.433-1.59Zm-1.625 0c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.437.549 2.12 2.12 0 0 1-1.436-.55 1.805 1.805 0 0 1-.595-1.325V8.75h4.063v1.125Zm-21.125 0V8.75H7.5v1.125c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.436.549 2.12 2.12 0 0 1-1.437-.55 1.805 1.805 0 0 1-.595-1.325ZM9.125 8.75h4.063v1.125c0 .497-.215.974-.595 1.326a2.12 2.12 0 0 1-1.437.549 2.12 2.12 0 0 1-1.436-.55 1.805 1.805 0 0 1-.595-1.325V8.75Zm5.688 0h4.062v1.125c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.436.549 2.12 2.12 0 0 1-1.437-.55 1.805 1.805 0 0 1-.595-1.325V8.75ZM5.338 4.662a.777.777 0 0 1 .302-.302.864.864 0 0 1 .429-.11h15.86c.151-.001.3.037.43.11.128.073.233.178.301.302L24.06 7.25H3.94L5.34 4.662ZM16.437 23.75h-4.875v-4.5c0-.199.086-.39.239-.53a.848.848 0 0 1 .574-.22h3.25c.216 0 .422.079.575.22.152.14.238.331.238.53v4.5Zm6.5 0h-4.875v-4.5c0-.597-.256-1.169-.713-1.591A2.545 2.545 0 0 0 15.625 17h-3.25c-.646 0-1.267.237-1.724.659a2.166 2.166 0 0 0-.713 1.591v4.5H5.061v-10.5c.135.02.27.032.407.037a3.909 3.909 0 0 0 1.58-.345 3.615 3.615 0 0 0 1.263-.944c.343.391.776.707 1.269.924.492.217 1.03.33 1.575.33.545 0 1.084-.113 1.576-.33A3.626 3.626 0 0 0 14 11.997c.343.392.776.708 1.268.925.492.217 1.03.33 1.576.33.545 0 1.083-.113 1.575-.33a3.626 3.626 0 0 0 1.268-.925c.343.392.777.707 1.269.924.492.217 1.03.33 1.575.329.136.007.271.007.407 0v10.5Z" /> <path fill="#fff" d="M23.968 11.2c.38-.35.595-.828.595-1.325V8.75H20.5v1.125c0 .497.214.974.595 1.326.38.351.898.549 1.436.549a2.12 2.12 0 0 0 1.437-.55ZM3.438 8.75v1.125c0 .497.214.974.594 1.326.381.351.898.549 1.437.549a2.12 2.12 0 0 0 1.436-.55c.381-.35.595-.828.595-1.325V8.75H3.437ZM13.188 8.75H9.125v1.125c0 .497.214.974.595 1.326.38.351.897.549 1.436.549a2.12 2.12 0 0 0 1.437-.55c.38-.35.595-.828.595-1.325V8.75ZM18.875 8.75h-4.063v1.125c0 .497.215.974.595 1.326.381.351.898.549 1.437.549a2.12 2.12 0 0 0 1.436-.55c.381-.35.595-.828.595-1.325V8.75Z" /> <path fill="#1274FF" fill-opacity=".6" d="M11.563 23.75h4.874v-4.5a.722.722 0 0 0-.238-.53.848.848 0 0 0-.574-.22h-3.25a.848.848 0 0 0-.575.22.722.722 0 0 0-.238.53v4.5Z" /> </g> </svg> </i> <div class="ml-3"> <div class="text-base font-semibold">店铺模式</div> <div class="mt-2 text-sm text-menu-color-6">灵活经营模式,满足不同需求。</div> </div> </div> <div class="header-popup-right__content"> <ul class="flex flex-wrap"> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/b2b">B2B解决方案</a> </div> <div class="mt-2 text-sm text-menu-color-6">助力企业拓展市场、提高效率</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/direct-to-consumer-intro">DTC</a> </div> <div class="mt-2 text-sm text-menu-color-6">直达消费者,创造品牌新机遇</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/dropshipping">一件代发</a> </div> <div class="mt-2 text-sm text-menu-color-6">零库存,轻松扩大销售</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/cod">COD货到付款</a> </div> <div class="mt-2 text-sm text-menu-color-6">便捷支付,安心购物体验</div> </li> </ul> </div> </div> <div class="hidden header-popup-right__block header-popup-right__block--store-marking"> <div class="flex header-popup-right__header"> <i class="w-[50px] h-[50px] rounded-md flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"> <mask id="header-store-marking" width="28" height="28" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"> <path fill="#D9D9D9" d="M0 0h28v28H0z" /> </mask> <g mask="url(#header-store-marking)"> <path fill="#000" d="m17.573 11.678-1.25-1.25-.95.933a2.2 2.2 0 0 0-2.94 3.257l.934.932a.443.443 0 0 1-.144.721.442.442 0 0 1-.481-.096l-2.49-2.49-1.25 1.24 1.408 1.409-.933.933 1.24 1.25.951-.951a2.2 2.2 0 0 0 2.94-3.256l-.934-.933a.449.449 0 0 1 0-.625.439.439 0 0 1 .625 0l2.49 2.5 1.25-1.25-1.399-1.39.933-.934Z" /> <path fill="#000" d="M26.32 1.681a3.168 3.168 0 0 0-4.4 0l-2.2 2.2-.906-.932a.88.88 0 0 0-.695-.256l-3.432.317a.88.88 0 0 0-.537.256L.348 17.058a.88.88 0 0 0 0 1.241l9.355 9.355a.88.88 0 0 0 1.24 0l13.793-13.802a.88.88 0 0 0 .255-.537l.317-3.432a.881.881 0 0 0-.255-.704l-.95-.941 2.217-2.156a3.097 3.097 0 0 0 0-4.4ZM10.32 25.788l-8.105-8.105 1.25-1.214 8.069 8.07-1.214 1.25ZM23.266 12.84 12.819 23.29l-8.105-8.106L15.162 4.735l2.701-.246.634.625-.616.616a2.64 2.64 0 0 0 0 3.73l1.073 1.066 1.206-1.241-1.03-1.065a.878.878 0 0 1 0-1.25l.608-.607 3.775 3.776-.247 2.701Z" /> <path fill="#fff" d="m20.987 5.113 1.866 1.849 2.2-2.174a1.31 1.31 0 0 0 0-1.866 1.355 1.355 0 0 0-1.875 0l-2.19 2.191Z" /> <path fill="#1274FF" fill-opacity=".5" d="m2.214 17.683 8.105 8.105 1.214-1.25-8.07-8.07-1.25 1.215Z" /> </g> </svg> </i> <div class="ml-3"> <div class="text-base font-semibold">店铺营销</div> <div class="mt-2 text-sm text-menu-color-6">吸引客流,提升销售业绩。</div> </div> </div> <div class="header-popup-right__content"> <ul class="flex flex-wrap"> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/google">谷歌营销</a> </div> <div class="mt-2 text-sm text-menu-color-6">利用谷歌平台推广业务</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/facebook-instagram">Facebook营销</a> </div> <div class="mt-2 text-sm text-menu-color-6">借助Facebook推广品牌与产品</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/social-media">社交媒体</a> </div> <div class="mt-2 text-sm text-menu-color-6">建立品牌影响力,吸引目标客户</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/email-marketing">邮件营销</a> </div> <div class="mt-2 text-sm text-menu-color-6">个性化营销,提升客户互动</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/distribution">分销联盟</a> </div> <div class="mt-2 text-sm text-menu-color-6">拓展销售渠道,合作共赢</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/seo">SEO</a> </div> <div class="mt-2 text-sm text-menu-color-6">优化网站排名,提高曝光率</div> </li> </ul> </div> </div> <div class="hidden header-popup-right__block header-popup-right__block--store-manage"> <div class="flex header-popup-right__header"> <i class="w-[50px] h-[50px] rounded-md flex items-center justify-center"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"> <mask id="store-admin" width="28" height="28" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:alpha"> <path fill="#D9D9D9" d="M0 0h28v28H0z" /> </mask> <g mask="url(#store-admin)"> <path fill="#fff" d="M22.968 11.2c.38-.35.595-.828.595-1.325V8.75H19.5v1.125c0 .497.214.974.595 1.326.38.351.898.549 1.436.549a2.12 2.12 0 0 0 1.437-.55ZM2.438 8.75v1.125c0 .497.214.974.594 1.326.381.351.898.549 1.437.549a2.12 2.12 0 0 0 1.436-.55c.381-.35.595-.828.595-1.325V8.75H2.437ZM12.188 8.75H8.125v1.125c0 .497.214.974.595 1.326.38.351.898.549 1.436.549a2.12 2.12 0 0 0 1.437-.55c.38-.35.595-.828.595-1.325V8.75ZM17.875 8.75h-4.063v1.125c0 .497.215.974.595 1.326.381.351.898.549 1.437.549a2.12 2.12 0 0 0 1.436-.55c.381-.35.595-.828.595-1.325V8.75Z" /> <path fill="#000" fill-rule="evenodd" d="M25.188 9.875V8a.746.746 0 0 0-.09-.33l-1.982-3.675a2.328 2.328 0 0 0-.901-.91 2.591 2.591 0 0 0-1.285-.335H5.07a2.59 2.59 0 0 0-1.285.335c-.386.22-.698.535-.9.91L.901 7.662A.746.746 0 0 0 .812 8v1.875c.001.555.15 1.1.434 1.59.283.489.692.906 1.192 1.215v11.07h-.813a.848.848 0 0 0-.575.22.722.722 0 0 0-.238.53c0 .199.086.39.238.53.153.141.36.22.575.22H17.19a6.479 6.479 0 0 1-.79-1.5h-1.337v-4.5c0-.597-.257-1.169-.714-1.591A2.545 2.545 0 0 0 12.625 17h-3.25c-.646 0-1.266.237-1.724.659a2.166 2.166 0 0 0-.713 1.591v4.5H4.063v-10.5c.134.02.27.032.406.037a3.909 3.909 0 0 0 1.58-.345 3.615 3.615 0 0 0 1.263-.944c.343.391.776.707 1.269.924.492.217 1.03.33 1.575.33.545 0 1.084-.113 1.576-.33A3.626 3.626 0 0 0 13 11.997c.343.392.776.708 1.268.925.492.217 1.03.33 1.576.33.545 0 1.083-.113 1.575-.33a3.626 3.626 0 0 0 1.268-.925c.343.392.777.707 1.269.924.492.217 1.03.33 1.575.329.136.007.271.007.407 0v1.774a6.582 6.582 0 0 1 1.625.062V12.68c.499-.309.908-.726 1.192-1.215.283-.49.432-1.035.433-1.59Zm-1.625 0c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.437.549 2.12 2.12 0 0 1-1.436-.55 1.805 1.805 0 0 1-.595-1.325V8.75h4.063v1.125Zm-21.125 0V8.75H6.5v1.125c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.436.549 2.12 2.12 0 0 1-1.437-.55 1.805 1.805 0 0 1-.595-1.325ZM8.125 8.75h4.063v1.125c0 .497-.215.974-.595 1.326a2.12 2.12 0 0 1-1.437.549 2.12 2.12 0 0 1-1.436-.55 1.805 1.805 0 0 1-.595-1.325V8.75Zm5.688 0h4.062v1.125c0 .497-.214.974-.595 1.326a2.12 2.12 0 0 1-1.436.549 2.12 2.12 0 0 1-1.437-.55 1.805 1.805 0 0 1-.595-1.325V8.75ZM4.338 4.662a.777.777 0 0 1 .302-.302.864.864 0 0 1 .429-.11h15.86c.151-.001.3.037.43.11.128.073.233.178.301.302L23.06 7.25H2.94L4.34 4.662Zm9.098 19.088H8.564v-4.5c0-.199.085-.39.237-.53a.848.848 0 0 1 .575-.22h3.25c.216 0 .422.079.575.22.152.14.238.331.238.53v4.5Z" clip-rule="evenodd" /> <path fill="#000" fill-rule="evenodd" d="M23.62 26.24h-1.8l-.09-1.32a1.852 1.852 0 0 1-.674-.254 3.022 3.022 0 0 1-.556-.436l-1.26.42-.84-1.44.9-.72c-.1-.28-.15-.57-.15-.87 0-.3.05-.59.15-.87l-.9-.72.84-1.44 1.26.42a3.1 3.1 0 0 1 1.23-.69l.09-1.32h1.8l.09 1.32c.22.06.438.152.655.275a3.1 3.1 0 0 1 .575.415l1.26-.42.84 1.44-.9.72c.1.28.15.57.15.87 0 .3-.05.59-.15.87l.9.72-.84 1.44-1.26-.42a3.022 3.022 0 0 1-.556.436c-.21.13-.434.214-.674.254l-.09 1.32Zm-2.385-3.131c.41.407.906.611 1.489.611.582 0 1.077-.205 1.485-.615.407-.41.611-.906.611-1.488 0-.583-.205-1.078-.615-1.486a2.034 2.034 0 0 0-1.488-.61c-.583 0-1.078.204-1.485.614-.408.41-.612.906-.612 1.489 0 .582.205 1.077.615 1.485Z" clip-rule="evenodd" /> <path fill="#1274FF" fill-opacity=".5" d="M21.235 23.11c.41.407.906.61 1.489.61.582 0 1.077-.204 1.485-.614.407-.41.611-.907.611-1.489 0-.582-.205-1.077-.615-1.485a2.033 2.033 0 0 0-1.488-.612c-.583 0-1.078.206-1.485.616-.408.41-.612.906-.612 1.488s.205 1.078.615 1.485Z" /> </g> </svg> </i> <div class="ml-3"> <div class="text-base font-semibold">店铺管理</div> <div class="mt-2 text-sm text-menu-color-6">效管理店铺运营与数据。</div> </div> </div> <div class="header-popup-right__content"> <ul class="flex flex-wrap"> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/manage-product">商品管理</a> </div> <div class="mt-2 text-sm text-menu-color-6">高效管理库存与产品信息</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/crm">客户管理</a> </div> <div class="mt-2 text-sm text-menu-color-6">维护客户关系,提供个性化服务</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/manage-order">订单管理</a> </div> <div class="mt-2 text-sm text-menu-color-6">轻松追踪与处理订单流程</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/payment">支付安全</a> </div> <div class="mt-2 text-sm text-menu-color-6">保障交易安全与信息保密</div> </li> <li class="w-1/2 mt-7.5"> <div class="text-base font-semibold"> <a href="/pages/data-analysis">数据分析</a> </div> <div class="mt-2 text-sm text-menu-color-6">深入洞察业务数据,优化决策</div> </li> </ul> </div> </div> </div> </div> </div> </he-header-popup> </details> </li> <li class="py-3 mr-0 md:mr-4 lg:mr-6 xl:mr-8 last:mr-0"> <a class="text-base font-semibold" href="/pages/pricing"> 免费建站 </a> </li> <li class="py-3 mr-0 md:mr-4 lg:mr-6 xl:mr-8 last:mr-0"> <a class="text-base font-semibold" href="/blogs/market-trends"> 动态资讯 </a> </li> <li class="py-3 mr-0 md:mr-4 lg:mr-6 xl:mr-8 last:mr-0"> <a class="text-base font-semibold" href="/pages/partner"> 合作伙伴 </a> </li> <li class="py-3 mr-0 md:mr-4 lg:mr-6 xl:mr-8 last:mr-0"> <a class="text-base font-semibold" href="/pages/contact-us"> 联系我们 </a> </li> </ul> </div> <div class="hidden h-[46px] md:flex"> <div class="items-center flex-1 mr-12 site-nav__link hidden lg:flex" style="color: #1274FF;"> <div class="h-5 w-5 mr-[6px] hidden lg:block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-5 h-5"> <path fill-rule="evenodd" d="M1.5 4.5a3 3 0 013-3h1.372c.86 0 1.61.586 1.819 1.42l1.105 4.423a1.875 1.875 0 01-.694 1.955l-1.293.97c-.135.101-.164.249-.126.352a11.285 11.285 0 006.697 6.697c.103.038.25.009.352-.126l.97-1.293a1.875 1.875 0 011.955-.694l4.423 1.105c.834.209 1.42.959 1.42 1.82V19.5a3 3 0 01-3 3h-2.25C8.552 22.5 1.5 15.448 1.5 6.75V4.5z" clip-rule="evenodd" /> </svg> </div> <span class="hidden font-semibold lg:block">400-888-1739</span> </div> <a class="leading-[46px] .header_nav_btn mr-8" href="https://accounts.shoptop.com/login">登录</a> <a style="display:flex;align-items:center ;line-height: initial;font-size: var(--type-nav-font-size);" class="btn header_nav_btn btn btn--small btn--primary " href="https://accounts.shoptop.com/register">免费开店</a> </div> <he-header-drawer> <div class="mobile-nav lg:hidden"> <div class="flex items-center justify-end w-6 h-6 cursor-pointer mobile-nav-btn"> <svg class="w-6 h-6 pointer-events-none mobile-nav-btn__open" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" /> </svg> <svg class="w-6 h-6 pointer-events-none mobile-nav-btn__close" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="#000000"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" /> </svg> </div> <section class="header-nav"> <nav class="nav-font-family nav__container"> <div class="flex flex-col h-full"> <ul class="header-nav__content text-base py-[15px] flex-1 overflow-y-auto duration-200 transition-transform"> <li class="mb-2.5"> <div class="list-menu__accordian-button flex items-center justify-between font-semibold cursor-pointer py-4 px-7.5 accordion-item__title"> 解决方案 <span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"> </div> <div class="hidden list-menu__accordian-content"> <ul class="py-1.5"> <li> <div class="list-menu__accordian-button flex items-center justify-between font-semibold text-base cursor-pointer py-2.5 px-7.5 accordion-item__title"> 独立站模式 <span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"> </div> <div class="list-menu__accordian-content pl-10 pr-7.5 hidden"> <ul class="font-semibold"> <li class="py-2.5"> <a href="/pages/b2b">B2B</a> </li> <li class="py-2.5"> <a href="/pages/direct-to-consumer-intro">DTC</a> </li> <li class="py-2.5"> <a href="/pages/dropshipping">一件代发</a> </li> <li class="py-2.5"> <a href="/pages/cod">COD货到付款</a> </li> </ul> </div> </li> <li> <div class="list-menu__accordian-button flex items-center justify-between font-semibold text-base cursor-pointer py-2.5 px-7.5 accordion-item__title"> 营销 <span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"> </div> <div class="list-menu__accordian-content pl-10 pr-7.5 hidden"> <ul class="font-semibold"> <li class="py-2.5"> <a href="/pages/google">谷歌营销</a> </li> <li class="py-2.5"> <a href="/pages/facebook-instagram">Facebook营销</a> </li> <li class="py-2.5"> <a href="/pages/social-media">社交媒体</a> </li> <li class="py-2.5"> <a href="/pages/email-marketing">邮件营销</a> </li> <li class="py-2.5"> <a href="/pages/distribution">分销联盟</a> </li> <li class="py-2.5"> <a href="/pages/seo">SEO</a> </li> </ul> </div> </li> <li> <div class="list-menu__accordian-button flex items-center justify-between font-semibold text-base cursor-pointer py-2.5 px-7.5 accordion-item__title"> 管理 <span class="accordion-item__title-icon inline-block relative w-3 ml-1.5"> </div> <div class="list-menu__accordian-content pl-10 pr-7.5 hidden"> <ul class="font-semibold"> <li class="py-2.5"> <a href="/pages/manage-product">商品管理</a> </li> <li class="py-2.5"> <a href="/pages/crm">客户管理</a> </li> <li class="py-2.5"> <a href="/pages/manage-order">订单管理</a> </li> <li class="py-2.5"> <a href="/pages/payment">支付安全</a> </li> <li class="py-2.5"> <a href="/pages/data-analysis">数据分析</a> </li> </ul> </div> </li> <li class="mb-2.5"> <a href="/pages/pattern" class="inline-block py-2.5 px-7.5 font-semibold text-base">合作模式</a> </li> </ul> </div> </li> <li class="mb-2.5"> <a href="/pages/pricing" class="inline-block py-4 px-7.5 font-semibold">免费建站</a> </li> <li class="mb-2.5"> <a href="/blogs/market-trends" class="inline-block py-4 px-7.5 font-semibold">动态资讯</a> </li> <li class="mb-2.5"> <a href="/pages/partner" class="inline-block py-4 px-7.5 font-semibold">合作伙伴</a> </li> <li class="mb-2.5"> <a href="/pages/contact-us" class="inline-block py-4 px-7.5 font-semibold">联系我们</a> </li> </ul> <div class="py-5 px-7.5 header-drawer-footer flex flex-col text-sm"> <a href="https://accounts.shoptop.com" class="w-full py-3 text-center text-white rounded-full bg-primary">免费开店</a> <a href="https://accounts.shoptop.com/register" class="bg-primary text-white mt-2.5 w-full py-3 rounded-full text-center">登录</a> </div> </div> </nav> </section> </div> </he-header-drawer> </div> </div> </div> </div> </div> </div> <main id="main-content" class="relative z-31"> <div class="xt-section section-1690524801884136" data-section-type="home_banner" data-section-id="1690524801884136"> <style>.home-banner-wrap{padding-bottom:40px;background:#325CC8;position:relative;}.home-banner--bg{position:absolute;width:1575px;height:1364px;top:0;left:0;pointer-events:none;}.home-banner--content h2{font-size:32px;line-height:1.4;}.home-banner--info{max-width:80%;}.home-banner--media{margin-top:40px;display:none;}.home-banner--mobile-media{display:flex;}@media screen and (min-width:768px){.home-banner--content h2{font-size:60px;}.home-banner-wrap{padding-bottom:110px;}}@media screen and (min-width:1024px){.home-banner--media{display:flex;}.home-banner--mobile-media{display:none;}.home-banner--content h2{font-size:80px;}}@media screen and (min-width:1300px){.h2-br{display:none;}.home-banner--content h2{max-width:100%;}}.home-banner-border{border:1px solid #fff;background:rgba(255,255,255,.2);}.home-banner--primary{width:770px;height:520px;border-radius:10px;padding:16px;}.home-banner--primary_top{height:30px;}.home-banner--intersperse__cart{width:58px;height:58px;border-radius:4px;top:-14px;left:-90px;}.home-banner--interspersr__checkout{width:174px;height:230px;right:-220px;top:30px;}.small-text text{line-height:1;vertical-align:middle;}.home-banner--icon{width:262px;height:50px;top:115px;left:-200px;border-radius:30px;border:1px solid #fff;border-radius:30px;background:linear-gradient(90deg,#718DDB 0%,#728EDC 71.46%,#7387D5 75.73%,#8A9EDD 79.27%,rgba(188,208,231,0.80) 83.27%,rgba(106,163,198,0.80) 89.40%,#6CA4C7 100%);}.home-banner--mobile{width:173px;height:308px;left:-218px;top:235px;}.home-banner--mobile .add-to-cart{border-radius:22px;background:#B6FEF2;line-height:26px;font-weight:400;color:#302E2A;}.home-banner--sales{width:260px;bottom:34px;right:-305px;}@media screen and (min-width:500px){.home-banner-br{display:none;}}.typed-cursor{font-size:80px;line-height:1.4;font-weight:400;vertical-align:text-bottom;display:inline-block;color:#E2FC52;}.home-banner-text{font-weight:500;}</style> <div class="home-banner-wrap overflow-hidden"> <div class="home-banner--bg"> <svg xmlns="http://www.w3.org/2000/svg" class="h-full" viewBox="0 0 1635 1174" fill="none"> <g filter="url(#filter0_f_2319_1579)"> <path d="M76 1238.5L-40 552V260.5L399 1238.5H76Z" fill="white" fill-opacity="0.05" /> <path d="M611 1233.5L-19 176.5V-120.5L1017 1233.5H611Z" fill="white" fill-opacity="0.05" /> <path d="M1212 1233.5L76 -125.5H144L1535 1233.5H1212Z" fill="white" fill-opacity="0.05" /> </g> <defs> <filter id="filter0_f_2319_1579" x="-140" y="-225.5" width="1775" height="1564" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> <feFlood flood-opacity="0" result="BackgroundImageFix" /> <feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape" /> <feGaussianBlur stdDeviation="50" result="effect1_foregroundBlur_2319_1579" /> </filter> </defs> </svg> </div> <div class="home-banner--content text-white text-center relative z-1"> <h2 class="mt-8 lg:mt-16 text-[32px] md:text-[80px] leading-1.4 mx-auto fade-in-bottom font-semibold"> <strong class="text-[#E2FC52]" id="typed3">免订阅费 免费代建站 <br class="h2-br" />免费全站<b class="home-banner-text">SEO</b></strong> <br /> 全网唯一 </h2> <p class="home-banner--info mx-auto text-base md:text-lg leading-1.4 fade-in-bottom m-0 mt-2.5 md:mt-5">10W+跨境电商/外贸/工厂建站的首选; 15年经验,专业谷歌/FB/TikTok等广告咨询服务,免费!</p> <he-consultation> <div class="home-banner--input flex justify-center items-center mt-[15px] md:mt-7.5"> <div class="home-banner--input__wrap flex overflow-hidden items-center"> <input type="text" placeholder="输入您的手机号"> <button class="home-banner--input__btn mr-[5px] text-xl">免费开店</button> </div> </div> </he-consultation> <p class="text-sm md:text-base leading-1.4 m-0 mt-2 md:mt-4">*无隐藏费用,全部功能免费开放,无限使用时间</p> </div> <div class="home-banner--media flex justify-center"> <div class="home-banner--primary home-banner-border relative"> <div class="home-banner--primary_top flex items-start justify-center relative"> <div class="absolute left-0"> <span class="w-3.5 h-3.5 rounded-full border inline-block" style="background:rgba(255, 118, 118, 1);"></span> <span class="w-3.5 h-3.5 rounded-full border inline-block" style="background:rgba(255, 187, 75, 1);"></span> <span class="w-3.5 h-3.5 rounded-full border inline-block" style="background:rgba(160, 243, 217, 1);"></span> </div> <div class="flex items-center text-white"> <span class="mr-2"> <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none"> <path fill="#fff" d="M2.75 11a.722.722 0 0 1-.53-.22.722.722 0 0 1-.22-.53V4.825c0-.206.073-.383.22-.53a.722.722 0 0 1 .53-.22h.875v-1.2c0-.657.232-1.217.695-1.68A2.29 2.29 0 0 1 6.001.5c.658 0 1.218.232 1.68.695a2.29 2.29 0 0 1 .694 1.68v1.2h.875c.206 0 .383.073.53.22.147.147.22.324.22.53v5.425a.722.722 0 0 1-.22.53.722.722 0 0 1-.53.22h-6.5Zm1.625-6.925h3.25v-1.2c0-.451-.158-.835-.474-1.151a1.565 1.565 0 0 0-1.15-.474 1.57 1.57 0 0 0-1.151.474c-.317.316-.475.7-.475 1.151v1.2Z" /> </svg> </span> <span class="text-xs">https://shoptop.com</span> </div> </div> <div class="homm-banner--primary_img"> <img class="object-cover" src="https://cdn.shoptop.com/1679326943214919682.webp" alt=""> </div> <div class="home-banner--intersperse"> <div class="home-banner--intersperse__cart home-banner-border absolute flex justify-center items-center"> <svg xmlns="http://www.w3.org/2000/svg" width="38" height="38" fill="none"> <path fill="#fff" fill-rule="evenodd" d="M5.696 3.667a1 1 0 0 1 .906.576l1.195 2.551h23.635c.415 0 .716.17.95.58.227.4.227.765-.002 1.166l-5.344 9.62a3.034 3.034 0 0 1-.97 1.036c-.382.25-.794.373-1.247.373H12.526l-2.755 5.117h19.085a.687.687 0 1 1 0 1.375H10.965c-.989 0-1.606-.321-1.978-.884-.365-.553-.39-1.182.042-1.98l2.654-4.893-6.26-13.262H3.206a.687.687 0 1 1 0-1.375h2.49ZM30.85 8.169H8.506l4.836 10.025h12.01L30.85 8.17Z" clip-rule="evenodd" /> <path fill="#fff" d="M11.352 34.294a2.226 2.226 0 0 1-1.655-.691 2.267 2.267 0 0 1-.687-1.667c0-.653.227-1.195.692-1.655a2.268 2.268 0 0 1 1.667-.687c.652 0 1.194.226 1.655.691.462.467.687 1.014.687 1.668 0 .652-.227 1.194-.692 1.655a2.267 2.267 0 0 1-1.667.686ZM27.185 34.294a2.226 2.226 0 0 1-1.655-.691 2.267 2.267 0 0 1-.686-1.667c0-.653.226-1.195.691-1.655a2.267 2.267 0 0 1 1.667-.687c.652 0 1.195.226 1.655.691.462.467.687 1.014.687 1.668 0 .652-.227 1.194-.692 1.655a2.267 2.267 0 0 1-1.667.686Z" /> </svg> </div> <div class="home-banner--interspersr__checkout home-banner-border absolute rounded-lg p-4 text-white"> <div class="flex border-line border-b pt-1.5 pb-2.5"> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="15" fill="none" class="mr-1"> <rect width="26" height="15" fill="#fff" rx="1" /> <path fill="#182A7F" fill-rule="evenodd" d="M15.478 4.55c.483 0 .934.082 1.35.245l-.209 1.26-.136-.073a2.554 2.554 0 0 0-1.123-.218c-.278 0-.491.05-.64.15-.148.1-.222.216-.222.35 0 .126.067.241.2.344.133.103.347.23.643.38.846.411 1.27.937 1.27 1.578-.013.604-.256 1.087-.73 1.45-.475.362-1.105.54-1.89.535-.671 0-1.23-.103-1.677-.309l.208-1.304.2.1c.423.198.894.298 1.414.298.235 0 .444-.049.625-.145.182-.097.272-.235.272-.417a.482.482 0 0 0-.172-.353c-.115-.109-.317-.233-.607-.372-.882-.435-1.32-.96-1.314-1.577.006-.567.245-1.03.716-1.386.472-.357 1.079-.535 1.822-.535ZM6.985 7.815 6.46 5.14c-.067-.326-.293-.49-.68-.49H3.35l-.017.119c1.879.477 3.097 1.492 3.652 3.045Zm.155.806-.155-.806a3.295 3.295 0 0 0-.77-1.174 3.511 3.511 0 0 0-1.187-.802L6.25 10.46h1.587l2.365-5.81H8.608L7.14 8.62Zm2.728 1.85h1.504l.943-5.82H10.81l-.942 5.82ZM20.68 4.65h-1.16c-.393 0-.656.164-.789.49l-2.23 5.33h1.578l.317-.87h1.921c.03.132.091.422.182.87h1.396L20.68 4.65Zm-.607 3.753h-1.25c.084-.224.284-.764.598-1.622l.028-.082.09-.235c.037-.097.064-.175.082-.236l.109.499.343 1.676Z" clip-rule="evenodd" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="15" fill="none" class="mr-1"> <rect width="26" height="15" fill="#fff" rx="1" /> <path fill="#EA001B" d="M6 7.5a4.5 4.5 0 1 0 9 0 4.5 4.5 0 0 0-9 0Z" /> <path fill="#F79F1A" d="M11.692 7.5a4.5 4.5 0 1 0 9.002 0 4.5 4.5 0 0 0-9.002 0Z" /> <path fill="#FF5F01" d="M11.7 7.509c0 1.4.64 2.652 1.644 3.477a4.49 4.49 0 0 0 1.665-3.494c0-1.401-.64-2.652-1.644-3.477a4.49 4.49 0 0 0-1.664 3.494Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="15" fill="none" class="mr-1"> <rect width="26" height="15" fill="#fff" rx="1" /> <path fill="#086CB4" d="M11.333 3.5v6c0 1.205-.096 2-2 2H8V8.665c.6.168 1.36.168 1.36.168 1.27 0 1.64-.493 1.64-1.102V6.166H9.86v1.565c0 .38-.255.665-.715.665-.39 0-.775-.116-1.145-.3V5.5c0-1.671.635-2 2-2h1.333Z" /> <path fill="#E90037" d="M15 3.5v6c0 1.48-.365 2-2 2h-1.333l-.001-3.157c.327.321.928.53 1.95.484 0 0 .51-.02 1.05-.153v-.56a2.602 2.602 0 0 1-1.01.292c-.727.054-1.161-.292-1.161-.906 0-.614.434-.96 1.161-.906.414.03.743.153 1.01.287v-.555c-.54-.133-1.05-.153-1.05-.153-1.022-.046-1.623.163-1.95.484V5.5c0-1.671.557-2 2-2H15Z" /> <path fill="#69A547" d="M16.866 7.25a.321.321 0 0 0 .267-.33.327.327 0 0 0-.267-.334c-.016 0-.05-.006-.076-.006h-.702v.675h.722l.021-.001a.158.158 0 0 0 .035-.005Zm-.779 1.15h.773l.046-.004.045-.007a.345.345 0 0 0 .27-.313l.003-.042-.002-.042a.35.35 0 0 0-.362-.325h-.773V8.4Z" /> <path fill="#69A547" d="M17.36 3.5c-1.849 0-2 .712-2 2v.666h1.966l.035.001c.036.002.073.005.096.005.429.02.747.25.747.648 0 .292-.194.546-.547.622l-.064.011v.016l.06.006c.386.047.678.272.705.61l.002.053-.002.052c-.027.376-.351.621-.79.642l-.06.001H15.36V11.5h1.333c1.776 0 2-.74 2-2v-6H17.36Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="15" fill="none" class="mr-1"> <rect width="26" height="15" fill="#fff" rx="1" /> <path fill="#000" fill-opacity=".3" d="M9.966 9.1c-.308 0-.546-.089-.714-.266C9.084 8.647 9 8.386 9 8.05c0-.308.089-.56.266-.756a.899.899 0 0 1 .7-.294c.308 0 .546.093.714.28.168.177.252.434.252.77 0 .308-.089.56-.266.756a.899.899 0 0 1-.7.294ZM13.152 9.1c-.308 0-.546-.089-.714-.266-.168-.187-.253-.448-.253-.784 0-.308.09-.56.266-.756a.9.9 0 0 1 .7-.294c.309 0 .546.093.715.28.168.177.252.434.252.77 0 .308-.09.56-.267.756a.899.899 0 0 1-.7.294ZM16.337 9.1c-.308 0-.546-.089-.714-.266-.168-.187-.252-.448-.252-.784 0-.308.089-.56.266-.756a.899.899 0 0 1 .7-.294c.308 0 .546.093.714.28.168.177.252.434.252.77 0 .308-.089.56-.266.756a.899.899 0 0 1-.7.294Z" /> </svg> </div> <div class="text-xs pt-2.5 pb-3 border-line border-b"> <span> <svg width="70" height="9.14" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="8" y="7.14">Your order</text> </svg> </span> <div class="flex justify-between mt-1.5"> <img class="w-7.5 h-7.5 rounded-sm" src="https://cdn.shoptop.com/1679374126765281281.png" alt=""> <div> <span> <svg width="60" height="7.52" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="6" y="5.52">Casilaya Skirt Sets</text> </svg> </span> <span class="mt-1 inline-block"> <svg width="60" height="7.52" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="6" y="5.52">S</text> </svg> </span> </div> <div> <svg width="28" height="9.14" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="8" y="7.14">$45.00</text> </svg> </div> </div> </div> <div class="pt-3"> <span> <svg width="62" height="9.14" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="8" y="7.14">Order summary</text> </svg> </span> <div class="flex justify-between mt-2.5"> <span class="w-8 h-1 rounded bg-white.2 inline-block"></span> <span class="w-8 h-1 rounded bg-white.2 inline-block"></span> </div> <div class="flex justify-between my-2.5"> <span class="w-12 h-1 rounded bg-white.2 inline-block"></span> <span class="w-8 h-1 rounded bg-white.2 inline-block"></span> </div> <div class="flex justify-between"> <span class="w-8 h-1 rounded bg-white.2 inline-block"></span> <span class="w-8 h-1 rounded bg-white.2 inline-block"></span> </div> <div class="flex justify-between mt-4"> <svg width="40" height="9.14" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="8" y="7.14">Total</text> </svg> <svg width="26" height="9.14" fill="#fff" class="small-text"> <text dominant-baseline="baseline" font-size="8" y="7.14">$45.00</text> </svg> </div> </div> </div> <div class="home-banner--icon absolute flex justify-between items-center px-9"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"> <path fill="#fff" fill-opacity=".25" stroke="#fff" stroke-width=".8" d="M26.778 14C26.778 6.775 20.925.922 13.7.922 6.476.922.622 6.775.622 14c0 6.527 4.783 11.938 11.035 12.92v-9.14H8.334V14h3.323v-2.881c0-3.278 1.95-5.088 4.94-5.088 1.43 0 2.927.255 2.927.255v3.217h-1.65c-1.624 0-2.13 1.008-2.13 2.042V14h3.627l-.58 3.78h-3.047v9.14c6.252-.982 11.034-6.393 11.034-12.92Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" fill="none"> <path fill="#fff" fill-opacity=".25" stroke="#fff" stroke-width=".8" d="M19.946 20.24c1.513-1.395 2.37-3.43 2.37-5.821 0-.554-.048-1.09-.142-1.609l-.059-.329h-7.814v3.71h3.925a3.058 3.058 0 0 1-1.204 1.539c-.6.402-1.38.65-2.322.65-1.769 0-3.283-1.199-3.825-2.826a4.122 4.122 0 0 1-.216-1.304c0-.451.078-.89.216-1.304.542-1.627 2.056-2.826 3.828-2.826 1.006 0 1.896.342 2.596 1.012l.283.27.277-.276 2.155-2.158.293-.293-.304-.282C18.628 7.114 16.83 6.327 14.7 6.327a7.911 7.911 0 0 0-7.073 4.364 7.92 7.92 0 0 0 0 7.117v.001a7.914 7.914 0 0 0 7.073 4.36c2.121 0 3.92-.707 5.246-1.928ZM1.2 14.25C1.2 6.878 7.178.9 14.55.9S27.9 6.878 27.9 14.25 21.922 27.6 14.55 27.6 1.2 21.622 1.2 14.25Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="none"> <path fill="#fff" fill-opacity=".25" stroke="#fff" stroke-width=".8" d="M25.6 2.339v21.323A1.939 1.939 0 0 1 23.66 25.6H2.338A1.938 1.938 0 0 1 .4 23.662V2.339A1.938 1.938 0 0 1 2.338.4h21.323A1.938 1.938 0 0 1 25.6 2.34ZM8.154 10.093H4.277v11.63h3.877v-11.63Zm.242-3.877a2.181 2.181 0 1 0-2.18 2.132 2.122 2.122 0 0 0 2.18-2.132Zm13.327 8.296c0-3.537-2.22-4.749-4.332-4.749a4.322 4.322 0 0 0-3.664 1.987v-1.657h-3.635v11.63h3.877v-6.329a2.19 2.19 0 0 1 2.142-2.49c1.066 0 1.735.571 1.735 2.442v6.378h3.877v-7.212Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" fill="none"> <path fill="#fff" fill-opacity=".25" fill-rule="evenodd" d="M28.2 14c0 7.456-6.044 13.5-13.5 13.5S1.2 21.456 1.2 14 7.244.5 14.7.5 28.2 6.544 28.2 14Zm-12.524-.489-1.466-3.419 7.816 2.442v3.908l-8.793 5.374-3.908-2.443V6.184l3.908 1.466v9.28l4.854-2.41-2.411-1.008Z" clip-rule="evenodd" /> <path fill="#fff" d="m14.21 10.092.12-.382-.83-.259.342.799.368-.158Zm1.466 3.42-.368.157.064.149.15.063.154-.37Zm6.35-.978h.4v-.294l-.28-.087-.12.381Zm0 3.908.209.342.191-.117v-.225h-.4Zm-8.793 5.374-.212.339.21.131.21-.129-.208-.341Zm-3.908-2.443h-.4v.222l.188.117.212-.339Zm0-13.189.14-.374-.54-.203v.577h.4Zm3.908 1.466h.4v-.278l-.26-.097-.14.375Zm0 9.28h-.4v.646l.578-.287-.178-.358Zm4.854-2.41.178.358.784-.39-.808-.337-.154.369ZM14.7 27.9c7.677 0 13.9-6.223 13.9-13.9h-.8c0 7.235-5.865 13.1-13.1 13.1v.8ZM.8 14c0 7.677 6.223 13.9 13.9 13.9v-.8C7.465 27.1 1.6 21.235 1.6 14H.8ZM14.7.1C7.023.1.8 6.323.8 14h.8C1.6 6.765 7.465.9 14.7.9V.1ZM28.6 14C28.6 6.323 22.377.1 14.7.1v.8C21.935.9 27.8 6.765 27.8 14h.8Zm-14.758-3.75 1.466 3.42.735-.316-1.465-3.42-.736.316Zm8.303 1.903L14.33 9.71l-.238.764 7.816 2.442.238-.763Zm.281 4.29v-3.909h-.8v3.908h.8Zm-8.984 5.714 8.793-5.373-.418-.683-8.792 5.373.417.683Zm-4.329-2.445 3.908 2.443.424-.678-3.908-2.443-.424.678ZM8.925 6.184v13.19h.8V6.183h-.8Zm4.449 1.091L9.466 5.81l-.281.749 3.908 1.465.28-.749Zm.26 9.656V7.65h-.8v9.28h.8Zm4.275-2.77-4.854 2.412.356.716 4.854-2.411-.356-.716Zm-2.388-.28 2.412 1.008.308-.738-2.411-1.008-.309.737Z" /> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="29" height="28" fill="none"> <mask id="a" fill="#fff"> <path fill-rule="evenodd" d="M28.3 14.25C28.3 21.844 22.144 28 14.55 28S.8 21.844.8 14.25 6.956.5 14.55.5 28.3 6.656 28.3 14.25Zm-14.377 3.938c.516.358.957.664 1.737.724 3.836.297 5.978-3.828 5.455-7.636-.465-3.374-3.831-5.093-7.419-4.691-2.836.317-5.664 2.613-5.782 5.891-.073 2.003.495 3.505 2.4 3.927.542-.957.259-1.424-.049-1.93-.16-.266-.329-.543-.387-.906-.7-4.323 4.987-7.275 7.963-4.255 2.06 2.092.704 8.523-2.617 7.855-1.658-.333-1.165-1.883-.672-3.433.453-1.425.906-2.85-.31-3.33-2.064-.818-3.16 2.498-2.182 4.145-.151.746-.348 1.48-.548 2.223-.557 2.077-1.13 4.214-.76 6.831 1.621-1.177 2.169-3.43 2.617-5.781.203.123.382.248.554.366Z" clip-rule="evenodd" /> </mask> <path fill="#fff" fill-opacity=".25" fill-rule="evenodd" d="M28.3 14.25C28.3 21.844 22.144 28 14.55 28S.8 21.844.8 14.25 6.956.5 14.55.5 28.3 6.656 28.3 14.25Zm-14.377 3.938c.516.358.957.664 1.737.724 3.836.297 5.978-3.828 5.455-7.636-.465-3.374-3.831-5.093-7.419-4.691-2.836.317-5.664 2.613-5.782 5.891-.073 2.003.495 3.505 2.4 3.927.542-.957.259-1.424-.049-1.93-.16-.266-.329-.543-.387-.906-.7-4.323 4.987-7.275 7.963-4.255 2.06 2.092.704 8.523-2.617 7.855-1.658-.333-1.165-1.883-.672-3.433.453-1.425.906-2.85-.31-3.33-2.064-.818-3.16 2.498-2.182 4.145-.151.746-.348 1.48-.548 2.223-.557 2.077-1.13 4.214-.76 6.831 1.621-1.177 2.169-3.43 2.617-5.781.203.123.382.248.554.366Z" clip-rule="evenodd" /> <path fill="#fff" d="m15.66 18.912-.062.798.062-.798Zm-1.737-.724.456-.657-.456.657Zm7.192-6.912.793-.109-.793.11Zm-7.419-4.691-.089-.795.09.795Zm-5.782 5.891.8.03v-.001l-.8-.029Zm2.4 3.927-.173.781.578.128.291-.515-.696-.394Zm-.049-1.93.684-.415-.684.415Zm-.387-.906.79-.127-.79.127Zm7.963-4.255.57-.561-.57.561Zm-2.617 7.855.158-.784-.158.784Zm-.672-3.433.762.242-.762-.242Zm-.31-3.33-.295.743.295-.744Zm-2.182 4.145.784.159.061-.303-.157-.265-.688.409Zm-.548 2.223.773.207-.773-.207Zm-.76 6.831-.793.112.186 1.317 1.076-.781-.47-.648Zm2.617-5.781.415-.684-.985-.598-.216 1.132.786.15ZM14.55 28.8c8.036 0 14.55-6.514 14.55-14.55h-1.6c0 7.152-5.798 12.95-12.95 12.95v1.6ZM0 14.25C0 22.286 6.515 28.8 14.55 28.8v-1.6C7.398 27.2 1.6 21.402 1.6 14.25H0ZM14.55-.3C6.515-.3 0 6.214 0 14.25h1.6C1.6 7.098 7.398 1.3 14.55 1.3V-.3ZM29.1 14.25C29.1 6.214 22.586-.3 14.55-.3v1.6c7.152 0 12.95 5.798 12.95 12.95h1.6Zm-13.378 3.865c-.55-.043-.837-.233-1.343-.584l-.912 1.315c.525.364 1.12.786 2.131.864l.124-1.595Zm4.6-6.73c.239 1.734-.137 3.521-.972 4.814-.822 1.272-2.056 2.037-3.628 1.916l-.123 1.595c2.263.175 4.017-.974 5.095-2.643 1.064-1.646 1.498-3.826 1.214-5.9l-1.586.218ZM13.785 7.38c3.353-.375 6.156 1.233 6.538 4.005l1.584-.218c-.547-3.976-4.478-5.805-8.3-5.377l.178 1.59Zm-5.071 5.125c.1-2.797 2.538-4.841 5.071-5.125l-.178-1.59c-3.139.351-6.357 2.898-6.492 6.657l1.599.058Zm1.773 3.117c-.748-.166-1.162-.515-1.412-.973-.272-.498-.395-1.207-.361-2.144l-1.6-.058c-.038 1.066.087 2.11.557 2.97.491.899 1.313 1.51 2.47 1.767l.346-1.562Zm-.906-.734c.167.274.22.38.235.49.01.077.015.256-.198.63l1.392.79c.33-.582.463-1.116.39-1.639-.067-.489-.31-.87-.45-1.101l-1.369.83Zm-.493-1.194c.087.538.338.938.493 1.194l1.368-.83c-.167-.276-.25-.429-.281-.618l-1.58.254Zm9.323-4.943c-1.796-1.823-4.368-1.794-6.303-.773-1.938 1.024-3.436 3.143-3.02 5.717l1.58-.256c-.283-1.749.713-3.267 2.187-4.046 1.478-.78 3.237-.716 4.416.48l1.14-1.122Zm-3.345 9.2c1.128.227 2.093-.166 2.813-.86.696-.67 1.17-1.621 1.442-2.602a8.005 8.005 0 0 0 .241-3.072c-.123-.986-.468-1.973-1.15-2.666l-1.14 1.123c.346.352.604.953.703 1.741a6.41 6.41 0 0 1-.195 2.445c-.224.805-.584 1.467-1.011 1.88-.405.39-.854.55-1.387.443l-.316 1.569Zm-1.277-4.46c-.23.726-.536 1.652-.507 2.445.015.425.126.89.452 1.282.328.396.793.625 1.332.733l.316-1.568c-.29-.058-.385-.148-.416-.185-.032-.04-.078-.123-.085-.32-.017-.453.171-1.077.433-1.902l-1.525-.484Zm.158-2.344c.151.06.195.122.217.161.031.057.066.17.06.383-.015.458-.197 1.052-.435 1.8l1.525.486c.215-.676.486-1.508.508-2.238.012-.382-.04-.805-.252-1.195-.222-.407-.577-.704-1.034-.885l-.589 1.488Zm-1.2 2.993c-.324-.547-.34-1.505-.005-2.266.161-.366.366-.598.555-.71.158-.092.355-.134.65-.017l.589-1.488c-.737-.291-1.45-.225-2.049.126-.566.332-.96.878-1.21 1.445-.484 1.104-.558 2.627.095 3.727l1.376-.817Zm-.462 2.84c.198-.74.402-1.498.56-2.272l-1.569-.318a36.116 36.116 0 0 1-.536 2.175l1.545.414Zm-.742 6.511c-.343-2.437.183-4.429.742-6.512l-1.545-.414c-.556 2.07-1.176 4.353-.781 7.15l1.584-.224Zm1.04-5.82c-.224 1.175-.462 2.26-.827 3.188-.364.923-.83 1.63-1.475 2.097l.94 1.295c.978-.71 1.596-1.72 2.023-2.805.426-1.08.686-2.297.91-3.475l-1.571-.3Zm1.796-.14c-.17-.118-.368-.255-.595-.393l-.83 1.367c.179.11.34.22.513.34l.912-1.314Z" mask="url(#a)" /> </svg> </div> <div class="home-banner--mobile absolute home-banner-border rounded-lg p-2.5 text-white flex flex-col"> <img class="rounded-sm" src="https://cdn.shoptop.com/1679392436399464450.png" alt="" width="172" height="172"> <span class="inline-block text-sm mt-2.5">Casilaya Skirt Sets</span> <span class="inline-block mt-1.5"><svg class="small-text" width="40" height="10.52" fill="#fff"><text dominant-baseline="baseline" font-size="9" y="8.52">LEKINS</text></svg></span> <span class="inline-block text-sm mt-2.5">$45.00</span> <span class="inline-block w-full h-6.5 mt-3 add-to-cart text-center text-sm">Add to Cart</span> </div> <div class="home-banner--sales absolute home-banner-border rounded-lg text-white p-5"> <div class="flex justify-between pb-6 border-line border-b"> <div> <span class="text-xs">TOTAL SALES</span> <span class="inline-block text-3xl mt-4">$1,500</span> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" width="102" height="79" viewBox="0 0 102 79" fill="none"> <path opacity="0.234" d="M15.2857 61.0792C10.524 62.5121 5.76167 67.2973 1 64.7612L0.999986 78.551H101V1L98.6188 7.49065C96.2383 13.9813 91.476 26.9626 86.7143 29.2232C81.9526 31.4845 77.1902 23.0251 72.4286 27.3365C67.6669 31.6479 62.9045 48.7294 58.1429 56.1862C53.3812 63.6424 48.6188 61.4738 43.8571 61.0856C39.0955 60.6982 34.3331 62.091 29.5714 61.8285C24.8098 61.5659 20.0474 59.6464 15.2857 61.0792Z" fill="url(#paint0_linear_2319_1707)" /> <path d="M1 64.7612C5.76167 67.2973 10.524 62.5121 15.2857 61.0792C20.0474 59.6464 24.8098 61.5659 29.5714 61.8285C34.3331 62.091 39.0955 60.6982 43.8571 61.0856C48.6188 61.4738 53.3812 63.6424 58.1429 56.1862C62.9045 48.7294 67.6669 31.6479 72.4286 27.3365C77.1902 23.0251 81.9526 31.4845 86.7143 29.2232C91.4759 26.9626 96.2383 13.9813 98.6188 7.49065L101 1" stroke="white" stroke-width="1.144" stroke-linecap="round" /> <defs> <linearGradient id="paint0_linear_2319_1707" x1="54.6801" y1="36.005" x2="54.6801" y2="78.551" gradientUnits="userSpaceOnUse"> <stop offset="0.208" stop-color="white" /> <stop offset="1" stop-color="white" stop-opacity="0.01" /> </linearGradient> </defs> </svg> </div> </div> <div class="flex mt-4 items-center"> <svg class="mr-1" xmlns="http://www.w3.org/2000/svg" width="6" height="4" viewBox="0 0 6 4" fill="none"> <path fill-rule="evenodd" clip-rule="evenodd" d="M2.97893 0L5.95836 3.01H0L2.97893 0Z" fill="white" /> </svg> <span><svg width="36" height="11.52" class="small-text"><text dominant-baseline="baseline" font-size="10" y="9.52" fill="#fff">5.6%</text></svg></span> <span><svg width="130" height="11.52" class="small-text"><text dominant-baseline="baseline" font-size="10" y="9.52" fill="#fff">Up from last week</text></svg></span> </div> </div> </div> </div> </div> <div class="home-banner--mobile-media justify-center mt-[18px] mx-auto" style="width: 90%;"> <div class="relative w-full" style="padding-bottom: 114.7016%;"> <img class="absolute top-0 left-0 w-full object-cover" width="687" height="788" src="https://cdn.shoptop.com/1680851508290215937.webp" alt="Shoptop"> </div> </div> </div> </div> <div class="xt-section section-1690263968295392" data-section-type="shop_declaration" data-section-id="1690263968295392"> <style>[data-section-id="1690263968295392"] .shop-1690263968295392{padding:20px 0;margin:60px auto 40px;}[data-section-id="1690263968295392"] .declaration-item{background:#fff;box-shadow:0px 0px 20px rgba(0,0,0,0);padding:48px;}.declaration-box{width:calc(100% - (4-1)*24px);grid-template-columns:repeat(4,calc(25% - 18px));gap:0;}@media only screen and (max-width:767.98px){[data-section-id="1690263968295392"] .declaration-item{padding:16px;margin-left:20px;}[data-section-id="1690263968295392"] .shop-1690263968295392{padding:50px 0 0;margin:0px 0 50px;}[data-section-id="1690263968295392"] .swiper{--swiper-pagination-color:#D9D9D9;padding-bottom:50px;}[data-section-id="1690263968295392"] .swiper-pagination{position:relative;width:100%;top:10px;}[data-section-id="1690263968295392"] .swiper-pagination-bullet-active{position:relative;}[data-section-id="1690263968295392"] .swiper-pagination-bullet-active::before{position:absolute;content:'';top:0;left:0;width:15px;height:15px;border:1px solid #D9D9D9;border-radius:50%;transform:translate(-3.5px,-3.5px);}}</style> <div class="shop-1690263968295392 relative"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="md:container shop-1690263968295392-container page-width relative"> <h2 class="text-center title max-w-3xl mx-auto px-5 md:px-0">零成本获取旗舰版建站服务,为您每年节省上千美金</h2> <p class="text-center m-0 max-w-3xl mx-auto mt-[15px] md:mt-7.5 px-5 md:px-0">*市面常见建站平台旗舰版年订阅费平均为1000+美金</p> <div class="declaration-box m-auto hidden md:grid"> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M15.031 44c-2.8027 0-5.17517-1.0822-7.1175-3.2465C5.97117 38.5892 5 35.9456 5 32.8226c0-1.3111.20067-2.5853.602-3.8226.40133-1.2372.97633-2.3585 1.725-3.364l7.0615-10.5773-3.2425-7.24135C10.5536 6.49423 11.5217 5 12.9714 5h22.0572c1.4497 0 2.4178 1.49422 1.8254 2.81735l-3.2425 7.24135L40.673 25.636c.7487 1.0055 1.3237 2.1268 1.725 3.364.4013 1.2373.602 2.5115.602 3.8226 0 3.123-.9763 5.7666-2.929 7.9309C38.1187 42.9178 35.7513 44 32.969 44H15.031Zm2.1035-30.3643h13.75l2.0509-4.58883c.1478-.33075-.0942-.70401-.4565-.70401H15.5237c-.363 0-.605.37448-.4559.70537l2.0667 4.58747ZM15.031 40.6571h17.938c1.9643 0 3.6272-.7621 4.9885-2.2865C39.3192 36.8463 40 34.9969 40 32.8226c0-.92-.1417-1.812-.425-2.676-.2833-.8643-.6878-1.645-1.2135-2.3422l-7.254-10.8258h-14.165l-7.285 10.7913c-.52567.6971-.93333 1.4836-1.223 2.3595C8.14483 31.0048 8 31.9026 8 32.8226c0 2.1743.684 4.0237 2.052 5.548 1.368 1.5244 3.0277 2.2865 4.979 2.2865Z" /> <path fill="#1274FF" fill-rule="evenodd" clip-rule="evenodd" d="M22.5467 18.5352h3.0117v1.7671c.7086.1401 1.3653.456 1.9654.9371.7315.5867 1.2689 1.3013 1.5987 2.1407l.1995.5079-2.719 1.093-.2197-.4736c-.2038-.4394-.4919-.8001-.8677-1.089-.3257-.2505-.7849-.4015-1.4281-.4015-.7871 0-1.3294.1862-1.695.4913-.3656.3052-.5441.6855-.5441 1.1878 0 .5064.1746.8516.5075 1.1054.4029.3071 1.2995.7185 2.7763 1.2228l.0091.0031c1.7051.6157 2.9594 1.3402 3.6366 2.2232.654.8531.9805 1.8386.9805 2.9355 0 1.4868-.4891 2.6824-1.5379 3.4788-.8252.6268-1.7377 1.0445-2.7321 1.2498v1.7823h-3.0117v-1.8923c-.9199-.2704-1.7157-.6982-2.3745-1.2916-.7606-.6854-1.3271-1.5955-1.714-2.7041l-.1721-.4934 2.7832-1.1339.196.5353c.3066.8371.7304 1.4338 1.2508 1.8302.5252.4001 1.1128.5981 1.7814.5981.7005 0 1.3132-.1733 1.8536-.5123.443-.2779.6925-.7199.6925-1.4469 0-.5726-.2032-.9923-.6093-1.3154-.4691-.3733-1.4104-.8379-2.8943-1.3823-1.4693-.5277-2.5962-1.1403-3.3174-1.8656-.7566-.7607-1.1159-1.7552-1.1159-2.9267 0-1.0464.3754-1.9926 1.0943-2.8224.6512-.7516 1.5354-1.2544 2.6157-1.5325v-1.8059Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">免订阅费</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">无需订阅,无任何隐藏费用,真正的免费建站</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" fill-rule="evenodd" clip-rule="evenodd" d="M4.79855 4.80078H14.2945V14.3163H11.5295V8.81572C9.7625 10.9039 8.35616 13.1907 7.30989 15.6764C6.19739 18.3194 5.64105 21.0968 5.64105 24.0103C5.64105 26.9237 6.19739 29.6979 7.30982 32.3345C8.3561 34.8144 9.76247 37.0924 11.5295 39.1691V33.7048H14.2945V43.2008H4.79855V40.4353H8.91276C7.06172 38.1581 5.60571 35.663 4.54528 32.9506C3.43203 30.104 2.87555 27.1234 2.87555 24.0103C2.87555 20.8975 3.43204 17.9202 4.54534 15.0798C5.60607 12.3727 7.06255 9.87439 8.91416 7.58528H4.79855V4.80078ZM20.1014 13.0976C19.6872 12.8951 19.2474 12.8819 18.7962 13.0487C18.3478 13.2144 18.0159 13.5032 17.8149 13.9139C17.6124 14.3276 17.5989 14.7675 17.7647 15.2194L23.3335 30.4612L19.0384 30.8786C18.4373 30.932 17.8877 31.1266 17.3947 31.4618C16.902 31.7966 16.5131 32.2359 16.229 32.7768L15.394 34.5631L28.4415 40.6304L28.4434 40.6313C29.1371 40.9711 29.8622 41.1504 30.617 41.1677C31.3668 41.1849 32.0983 41.069 32.8105 40.8201L32.8128 40.8193L40.1823 38.1428C42.2075 37.4061 43.6689 36.0803 44.555 34.171C45.4407 32.2613 45.5091 30.2902 44.7632 28.27L42.0133 20.7704C41.8481 20.3203 41.5584 19.9903 41.1449 19.7966C40.7308 19.6028 40.2918 19.5936 39.8411 19.759C39.391 19.9243 39.061 20.214 38.8674 20.6275C38.6735 21.0416 38.6644 21.4805 38.8298 21.9311L41.5791 29.4293C41.9792 30.554 41.9288 31.6535 41.4266 32.7377C40.9248 33.821 40.1167 34.5584 38.993 34.9584L38.9918 34.9588L31.6243 37.6352C31.3544 37.7306 31.0642 37.7688 30.7529 37.7473C30.4373 37.7257 30.1496 37.6566 29.8884 37.5415L29.8868 37.5408L22.2993 34.0235L28.0532 33.5595L20.967 14.0784L20.9666 14.0773C20.8008 13.6296 20.512 13.2982 20.1014 13.0976ZM33.0165 17.9994C33.4662 17.8354 33.9043 17.8452 34.3178 18.0386C34.7313 18.2322 35.0211 18.5622 35.1863 19.0124L37.3049 24.8199L34.1019 25.992L31.9838 20.1542C31.8182 19.7027 31.8312 19.2643 32.0344 18.8544C32.2361 18.4483 32.5687 18.1631 33.0165 17.9994ZM28.1548 18.1435C27.7409 17.9411 27.3013 17.9279 26.8502 18.0947C26.4018 18.2604 26.07 18.5491 25.869 18.9597C25.6661 19.3735 25.6524 19.8134 25.8182 20.2653L28.6057 28.0041L31.8396 26.8119L29.0208 19.1244C28.855 18.6762 28.5658 18.3441 28.1548 18.1435Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">简易建站</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">模块自由拖拽式体验,用户体验升级</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M11 36c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V7c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h12.25l3 3H43c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v23c0 .8-.3 1.5-.9 2.1-.6.6-1.3.9-2.1.9H11Zm0-3h32V10H25l-3-3H11v26Zm29.5 9H5c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V10h3v29h35.5v3ZM16.7 27.45h20.6l-6.6-8.8-5.5 7.3-3.95-4.3-4.55 5.8Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">海量空间</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">商品和图片库不设数量,海量存储空间</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="m21.8 30.65 11.4-11.4-2.1-2.05-9.15 9.15-5.05-5.05-2.2 2.2 7.1 7.15Zm2.2 13.3c-4.667-1.167-8.5-3.875-11.5-8.125S8 26.917 8 21.85V9.95l16-6 16 6v11.9c0 5.067-1.5 9.725-4.5 13.975S28.667 42.783 24 43.95Zm0-3.1c3.833-1.267 6.958-3.658 9.375-7.175C35.792 30.16 37 26.217 37 21.85v-9.8l-13-4.9-13 4.9v9.8c0 4.367 1.208 8.308 3.625 11.825 2.417 3.517 5.542 5.909 9.375 7.175Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">网络安全</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">PCI技术,SSL证书保障网络支付和域名安全</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="m44.35 19.65-1.15-2.5L40.7 16l2.5-1.15 1.15-2.5 1.15 2.5L48 16l-2.5 1.15-1.15 2.5ZM38 10.9l-1.75-3.7-3.7-1.75 3.7-1.75L38 0l1.75 3.7 3.7 1.75-3.7 1.75L38 10.9ZM18 44c-1.133 0-2.092-.392-2.875-1.175-.783-.783-1.175-1.742-1.175-2.875h8.1c0 1.133-.392 2.092-1.175 2.875C20.092 43.608 19.133 44 18 44Zm-8.1-7.15v-3h16.2v3H9.9Zm.25-6.05c-2.2-1.433-3.942-3.225-5.225-5.375C3.642 23.275 3 20.85 3 18.15c0-4.067 1.483-7.583 4.45-10.55C10.417 4.633 13.933 3.15 18 3.15c4.067 0 7.583 1.483 10.55 4.45C31.517 10.567 33 14.083 33 18.15c0 2.7-.633 5.125-1.9 7.275-1.267 2.15-3.017 3.942-5.25 5.375h-15.7Zm1.1-3H24.8a11.652 11.652 0 0 0 3.8-4.15c.933-1.7 1.4-3.533 1.4-5.5 0-3.3-1.175-6.125-3.525-8.475C24.125 7.325 21.3 6.15 18 6.15s-6.125 1.175-8.475 3.525C7.175 12.025 6 14.85 6 18.15c0 1.967.467 3.8 1.4 5.5a11.494 11.494 0 0 0 3.85 4.15Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">海量插件</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">随意扩展您的业务,注重商家体验,定期插件迭代优化</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M16.1155 35C15.1052 35 14.25 34.65 13.55 33.95C12.85 33.25 12.5 32.3948 12.5 31.3845V27.8845H15.5V31.3845C15.5 31.5385 15.5642 31.6795 15.6925 31.8075C15.8205 31.9358 15.9615 32 16.1155 32H38.8845C39.0385 32 39.1795 31.9358 39.3075 31.8075C39.4358 31.6795 39.5 31.5385 39.5 31.3845V12H15.5V16.1155H12.5V8.6155C12.5 7.60517 12.85 6.75 13.55 6.05C14.25 5.35 15.1052 5 16.1155 5H38.8845C39.8948 5 40.75 5.35 41.45 6.05C42.15 6.75 42.5 7.60517 42.5 8.6155V31.3845C42.5 32.3948 42.15 33.25 41.45 33.95C40.75 34.65 39.8948 35 38.8845 35H16.1155ZM9.1155 42C8.10517 42 7.25 41.65 6.55 40.95C5.85 40.25 5.5 39.3948 5.5 38.3845V12.6155H8.5V38.3845C8.5 38.5385 8.56417 38.6795 8.6925 38.8075C8.8205 38.9358 8.9615 39 9.1155 39H34.8845V42H9.1155ZM25.423 29.673L23.3345 27.5845L27.35 23.5H12.5V20.5H27.35L23.3345 16.4155L25.423 14.327L33.096 22L25.423 29.673Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">快速切换</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">提供多平台数据迁移服务,一键搭建完整店铺</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M42 22.05V39c0 .8-.3 1.5-.9 2.1-.6.6-1.3.9-2.1.9H8.95c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V22.05A5.663 5.663 0 0 1 4.1 19.1a6.257 6.257 0 0 1 .1-3.5l2.15-6.75c.267-.9.733-1.6 1.4-2.1.667-.5 1.433-.75 2.3-.75H37.7c.933 0 1.75.258 2.45.775.7.517 1.183 1.208 1.45 2.075l2.2 6.75a6.109 6.109 0 0 1 .075 3.5A5.814 5.814 0 0 1 42 22.05ZM28.5 20.5c.967 0 1.783-.317 2.45-.95.667-.633.933-1.4.8-2.3L30.5 9h-5v8.25c0 .867.283 1.625.85 2.275.567.65 1.283.975 2.15.975Zm-9.35 0c.933 0 1.725-.317 2.375-.95.65-.633.975-1.4.975-2.3V9h-5l-1.25 8.25c-.133.867.1 1.625.7 2.275.6.65 1.333.975 2.2.975Zm-9.1 0c.8 0 1.492-.275 2.075-.825a3.258 3.258 0 0 0 1.025-2.025L14.45 9h-5l-2.3 7.3c-.333 1.033-.2 1.992.4 2.875.6.883 1.433 1.325 2.5 1.325Zm27.85 0c1.067 0 1.908-.433 2.525-1.3s.758-1.833.425-2.9L38.55 9h-5l1.3 8.65c.1.8.442 1.475 1.025 2.025.583.55 1.258.825 2.025.825ZM8.95 39H39V23.45c.033.033-.075.05-.325.05H37.9a5.55 5.55 0 0 1-2.375-.525c-.75-.35-1.492-.892-2.225-1.625a5.646 5.646 0 0 1-2 1.575c-.8.383-1.683.575-2.65.575-1 0-1.858-.142-2.575-.425-.717-.283-1.408-.758-2.075-1.425-.5.6-1.133 1.058-1.9 1.375-.767.317-1.633.475-2.6.475-1.033 0-1.95-.183-2.75-.55-.8-.367-1.483-.9-2.05-1.6-.8.7-1.583 1.233-2.35 1.6-.767.367-1.533.55-2.3.55h-.675c-.217 0-.358-.017-.425-.05V39Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">免费代建站</h3> <span class="break-all" style="color: #333333">提供⼀次性基础建站服务,助力客户快速上线</span> </div> <div class="flex flex-col declaration-item g-rounded items-center"> <div class="h-[64px] w-[64px] rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-12 h-12" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" fill-rule="evenodd" d="M7.599 28.038C10.607 32.821 15.932 36 21.999 36c3.9 0 7.492-1.313 10.36-3.52l10.662 10.662a1 1 0 0 0 1.414 0l.707-.707a1 1 0 0 0 0-1.414L34.568 30.447A16.938 16.938 0 0 0 39 19c0-9.389-7.611-17-17-17S5 9.611 5 19c0 2.195.416 4.293 1.173 6.22l-1.665 1.662a.982.982 0 0 0-.184 1.147c.148.285.285.536.41.754.058.098.12.201.187.308.326.522 1.054.575 1.489.14l1.189-1.193Zm2.186-2.192C12.183 30.116 16.755 33 22 33c7.732 0 14-6.268 14-14S29.732 5 22 5 8 11.268 8 19c0 1.339.188 2.633.539 3.86l3.942-3.935a1 1 0 0 1 1.347-.06l5.299 4.416L27.369 15h-4.892a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h9.038a1 1 0 0 1 1 1v9.038a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-4.93l-9.62 9.62a1 1 0 0 1-1.347.06l-5.298-4.415-3.465 3.473Z" clip-rule="evenodd" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">SEO友好</h3> <span class="break-all" style="color: #333333">丰富的SEO插件,确保网站在搜索引擎中脱颖而出</span> </div> </div> <home-shop-declaration section-id="1690263968295392"> <div class="swiper block md:hidden"> <div class="swiper-wrapper pt-3"> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M15.031 44c-2.8027 0-5.17517-1.0822-7.1175-3.2465C5.97117 38.5892 5 35.9456 5 32.8226c0-1.3111.20067-2.5853.602-3.8226.40133-1.2372.97633-2.3585 1.725-3.364l7.0615-10.5773-3.2425-7.24135C10.5536 6.49423 11.5217 5 12.9714 5h22.0572c1.4497 0 2.4178 1.49422 1.8254 2.81735l-3.2425 7.24135L40.673 25.636c.7487 1.0055 1.3237 2.1268 1.725 3.364.4013 1.2373.602 2.5115.602 3.8226 0 3.123-.9763 5.7666-2.929 7.9309C38.1187 42.9178 35.7513 44 32.969 44H15.031Zm2.1035-30.3643h13.75l2.0509-4.58883c.1478-.33075-.0942-.70401-.4565-.70401H15.5237c-.363 0-.605.37448-.4559.70537l2.0667 4.58747ZM15.031 40.6571h17.938c1.9643 0 3.6272-.7621 4.9885-2.2865C39.3192 36.8463 40 34.9969 40 32.8226c0-.92-.1417-1.812-.425-2.676-.2833-.8643-.6878-1.645-1.2135-2.3422l-7.254-10.8258h-14.165l-7.285 10.7913c-.52567.6971-.93333 1.4836-1.223 2.3595C8.14483 31.0048 8 31.9026 8 32.8226c0 2.1743.684 4.0237 2.052 5.548 1.368 1.5244 3.0277 2.2865 4.979 2.2865Z" /> <path fill="#1274FF" fill-rule="evenodd" clip-rule="evenodd" d="M22.5467 18.5352h3.0117v1.7671c.7086.1401 1.3653.456 1.9654.9371.7315.5867 1.2689 1.3013 1.5987 2.1407l.1995.5079-2.719 1.093-.2197-.4736c-.2038-.4394-.4919-.8001-.8677-1.089-.3257-.2505-.7849-.4015-1.4281-.4015-.7871 0-1.3294.1862-1.695.4913-.3656.3052-.5441.6855-.5441 1.1878 0 .5064.1746.8516.5075 1.1054.4029.3071 1.2995.7185 2.7763 1.2228l.0091.0031c1.7051.6157 2.9594 1.3402 3.6366 2.2232.654.8531.9805 1.8386.9805 2.9355 0 1.4868-.4891 2.6824-1.5379 3.4788-.8252.6268-1.7377 1.0445-2.7321 1.2498v1.7823h-3.0117v-1.8923c-.9199-.2704-1.7157-.6982-2.3745-1.2916-.7606-.6854-1.3271-1.5955-1.714-2.7041l-.1721-.4934 2.7832-1.1339.196.5353c.3066.8371.7304 1.4338 1.2508 1.8302.5252.4001 1.1128.5981 1.7814.5981.7005 0 1.3132-.1733 1.8536-.5123.443-.2779.6925-.7199.6925-1.4469 0-.5726-.2032-.9923-.6093-1.3154-.4691-.3733-1.4104-.8379-2.8943-1.3823-1.4693-.5277-2.5962-1.1403-3.3174-1.8656-.7566-.7607-1.1159-1.7552-1.1159-2.9267 0-1.0464.3754-1.9926 1.0943-2.8224.6512-.7516 1.5354-1.2544 2.6157-1.5325v-1.8059Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">免订阅费</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">无需订阅,无任何隐藏费用,真正的免费建站</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" fill-rule="evenodd" clip-rule="evenodd" d="M4.79855 4.80078H14.2945V14.3163H11.5295V8.81572C9.7625 10.9039 8.35616 13.1907 7.30989 15.6764C6.19739 18.3194 5.64105 21.0968 5.64105 24.0103C5.64105 26.9237 6.19739 29.6979 7.30982 32.3345C8.3561 34.8144 9.76247 37.0924 11.5295 39.1691V33.7048H14.2945V43.2008H4.79855V40.4353H8.91276C7.06172 38.1581 5.60571 35.663 4.54528 32.9506C3.43203 30.104 2.87555 27.1234 2.87555 24.0103C2.87555 20.8975 3.43204 17.9202 4.54534 15.0798C5.60607 12.3727 7.06255 9.87439 8.91416 7.58528H4.79855V4.80078ZM20.1014 13.0976C19.6872 12.8951 19.2474 12.8819 18.7962 13.0487C18.3478 13.2144 18.0159 13.5032 17.8149 13.9139C17.6124 14.3276 17.5989 14.7675 17.7647 15.2194L23.3335 30.4612L19.0384 30.8786C18.4373 30.932 17.8877 31.1266 17.3947 31.4618C16.902 31.7966 16.5131 32.2359 16.229 32.7768L15.394 34.5631L28.4415 40.6304L28.4434 40.6313C29.1371 40.9711 29.8622 41.1504 30.617 41.1677C31.3668 41.1849 32.0983 41.069 32.8105 40.8201L32.8128 40.8193L40.1823 38.1428C42.2075 37.4061 43.6689 36.0803 44.555 34.171C45.4407 32.2613 45.5091 30.2902 44.7632 28.27L42.0133 20.7704C41.8481 20.3203 41.5584 19.9903 41.1449 19.7966C40.7308 19.6028 40.2918 19.5936 39.8411 19.759C39.391 19.9243 39.061 20.214 38.8674 20.6275C38.6735 21.0416 38.6644 21.4805 38.8298 21.9311L41.5791 29.4293C41.9792 30.554 41.9288 31.6535 41.4266 32.7377C40.9248 33.821 40.1167 34.5584 38.993 34.9584L38.9918 34.9588L31.6243 37.6352C31.3544 37.7306 31.0642 37.7688 30.7529 37.7473C30.4373 37.7257 30.1496 37.6566 29.8884 37.5415L29.8868 37.5408L22.2993 34.0235L28.0532 33.5595L20.967 14.0784L20.9666 14.0773C20.8008 13.6296 20.512 13.2982 20.1014 13.0976ZM33.0165 17.9994C33.4662 17.8354 33.9043 17.8452 34.3178 18.0386C34.7313 18.2322 35.0211 18.5622 35.1863 19.0124L37.3049 24.8199L34.1019 25.992L31.9838 20.1542C31.8182 19.7027 31.8312 19.2643 32.0344 18.8544C32.2361 18.4483 32.5687 18.1631 33.0165 17.9994ZM28.1548 18.1435C27.7409 17.9411 27.3013 17.9279 26.8502 18.0947C26.4018 18.2604 26.07 18.5491 25.869 18.9597C25.6661 19.3735 25.6524 19.8134 25.8182 20.2653L28.6057 28.0041L31.8396 26.8119L29.0208 19.1244C28.855 18.6762 28.5658 18.3441 28.1548 18.1435Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">简易建站</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">模块自由拖拽式体验,用户体验升级</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M11 36c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V7c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h12.25l3 3H43c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v23c0 .8-.3 1.5-.9 2.1-.6.6-1.3.9-2.1.9H11Zm0-3h32V10H25l-3-3H11v26Zm29.5 9H5c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V10h3v29h35.5v3ZM16.7 27.45h20.6l-6.6-8.8-5.5 7.3-3.95-4.3-4.55 5.8Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">海量空间</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">商品和图片库不设数量,海量存储空间</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="m21.8 30.65 11.4-11.4-2.1-2.05-9.15 9.15-5.05-5.05-2.2 2.2 7.1 7.15Zm2.2 13.3c-4.667-1.167-8.5-3.875-11.5-8.125S8 26.917 8 21.85V9.95l16-6 16 6v11.9c0 5.067-1.5 9.725-4.5 13.975S28.667 42.783 24 43.95Zm0-3.1c3.833-1.267 6.958-3.658 9.375-7.175C35.792 30.16 37 26.217 37 21.85v-9.8l-13-4.9-13 4.9v9.8c0 4.367 1.208 8.308 3.625 11.825 2.417 3.517 5.542 5.909 9.375 7.175Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">网络安全</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">PCI技术,SSL证书保障网络支付和域名安全</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="m44.35 19.65-1.15-2.5L40.7 16l2.5-1.15 1.15-2.5 1.15 2.5L48 16l-2.5 1.15-1.15 2.5ZM38 10.9l-1.75-3.7-3.7-1.75 3.7-1.75L38 0l1.75 3.7 3.7 1.75-3.7 1.75L38 10.9ZM18 44c-1.133 0-2.092-.392-2.875-1.175-.783-.783-1.175-1.742-1.175-2.875h8.1c0 1.133-.392 2.092-1.175 2.875C20.092 43.608 19.133 44 18 44Zm-8.1-7.15v-3h16.2v3H9.9Zm.25-6.05c-2.2-1.433-3.942-3.225-5.225-5.375C3.642 23.275 3 20.85 3 18.15c0-4.067 1.483-7.583 4.45-10.55C10.417 4.633 13.933 3.15 18 3.15c4.067 0 7.583 1.483 10.55 4.45C31.517 10.567 33 14.083 33 18.15c0 2.7-.633 5.125-1.9 7.275-1.267 2.15-3.017 3.942-5.25 5.375h-15.7Zm1.1-3H24.8a11.652 11.652 0 0 0 3.8-4.15c.933-1.7 1.4-3.533 1.4-5.5 0-3.3-1.175-6.125-3.525-8.475C24.125 7.325 21.3 6.15 18 6.15s-6.125 1.175-8.475 3.525C7.175 12.025 6 14.85 6 18.15c0 1.967.467 3.8 1.4 5.5a11.494 11.494 0 0 0 3.85 4.15Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">海量插件</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">随意扩展您的业务,注重商家体验,定期插件迭代优化</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M16.1155 35C15.1052 35 14.25 34.65 13.55 33.95C12.85 33.25 12.5 32.3948 12.5 31.3845V27.8845H15.5V31.3845C15.5 31.5385 15.5642 31.6795 15.6925 31.8075C15.8205 31.9358 15.9615 32 16.1155 32H38.8845C39.0385 32 39.1795 31.9358 39.3075 31.8075C39.4358 31.6795 39.5 31.5385 39.5 31.3845V12H15.5V16.1155H12.5V8.6155C12.5 7.60517 12.85 6.75 13.55 6.05C14.25 5.35 15.1052 5 16.1155 5H38.8845C39.8948 5 40.75 5.35 41.45 6.05C42.15 6.75 42.5 7.60517 42.5 8.6155V31.3845C42.5 32.3948 42.15 33.25 41.45 33.95C40.75 34.65 39.8948 35 38.8845 35H16.1155ZM9.1155 42C8.10517 42 7.25 41.65 6.55 40.95C5.85 40.25 5.5 39.3948 5.5 38.3845V12.6155H8.5V38.3845C8.5 38.5385 8.56417 38.6795 8.6925 38.8075C8.8205 38.9358 8.9615 39 9.1155 39H34.8845V42H9.1155ZM25.423 29.673L23.3345 27.5845L27.35 23.5H12.5V20.5H27.35L23.3345 16.4155L25.423 14.327L33.096 22L25.423 29.673Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">快速切换</h3> <span class="break-all" style="color: rgba(0,0,0,0.8)">提供多平台数据迁移服务,一键搭建完整店铺</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" d="M42 22.05V39c0 .8-.3 1.5-.9 2.1-.6.6-1.3.9-2.1.9H8.95c-.8 0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1V22.05A5.663 5.663 0 0 1 4.1 19.1a6.257 6.257 0 0 1 .1-3.5l2.15-6.75c.267-.9.733-1.6 1.4-2.1.667-.5 1.433-.75 2.3-.75H37.7c.933 0 1.75.258 2.45.775.7.517 1.183 1.208 1.45 2.075l2.2 6.75a6.109 6.109 0 0 1 .075 3.5A5.814 5.814 0 0 1 42 22.05ZM28.5 20.5c.967 0 1.783-.317 2.45-.95.667-.633.933-1.4.8-2.3L30.5 9h-5v8.25c0 .867.283 1.625.85 2.275.567.65 1.283.975 2.15.975Zm-9.35 0c.933 0 1.725-.317 2.375-.95.65-.633.975-1.4.975-2.3V9h-5l-1.25 8.25c-.133.867.1 1.625.7 2.275.6.65 1.333.975 2.2.975Zm-9.1 0c.8 0 1.492-.275 2.075-.825a3.258 3.258 0 0 0 1.025-2.025L14.45 9h-5l-2.3 7.3c-.333 1.033-.2 1.992.4 2.875.6.883 1.433 1.325 2.5 1.325Zm27.85 0c1.067 0 1.908-.433 2.525-1.3s.758-1.833.425-2.9L38.55 9h-5l1.3 8.65c.1.8.442 1.475 1.025 2.025.583.55 1.258.825 2.025.825ZM8.95 39H39V23.45c.033.033-.075.05-.325.05H37.9a5.55 5.55 0 0 1-2.375-.525c-.75-.35-1.492-.892-2.225-1.625a5.646 5.646 0 0 1-2 1.575c-.8.383-1.683.575-2.65.575-1 0-1.858-.142-2.575-.425-.717-.283-1.408-.758-2.075-1.425-.5.6-1.133 1.058-1.9 1.375-.767.317-1.633.475-2.6.475-1.033 0-1.95-.183-2.75-.55-.8-.367-1.483-.9-2.05-1.6-.8.7-1.583 1.233-2.35 1.6-.767.367-1.533.55-2.3.55h-.675c-.217 0-.358-.017-.425-.05V39Z" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">免费代建站</h3> <span class="break-all" style="color: #333333">提供⼀次性基础建站服务,助力客户快速上线</span> </div> <div class="flex flex-col declaration-item g-rounded items-center swiper-slide w-[300px]"> <div class="h-14 w-14 rounded-md overflow-hidden flex justify-center items-center bg-icon"> <i> <svg xmlns="http://www.w3.org/2000/svg" class="w-10.5 h-10.5" viewBox="0 0 48 48" fill="none"> <path fill="#1274FF" fill-rule="evenodd" d="M7.599 28.038C10.607 32.821 15.932 36 21.999 36c3.9 0 7.492-1.313 10.36-3.52l10.662 10.662a1 1 0 0 0 1.414 0l.707-.707a1 1 0 0 0 0-1.414L34.568 30.447A16.938 16.938 0 0 0 39 19c0-9.389-7.611-17-17-17S5 9.611 5 19c0 2.195.416 4.293 1.173 6.22l-1.665 1.662a.982.982 0 0 0-.184 1.147c.148.285.285.536.41.754.058.098.12.201.187.308.326.522 1.054.575 1.489.14l1.189-1.193Zm2.186-2.192C12.183 30.116 16.755 33 22 33c7.732 0 14-6.268 14-14S29.732 5 22 5 8 11.268 8 19c0 1.339.188 2.633.539 3.86l3.942-3.935a1 1 0 0 1 1.347-.06l5.299 4.416L27.369 15h-4.892a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h9.038a1 1 0 0 1 1 1v9.038a1 1 0 0 1-1 1h-1a1 1 0 0 1-1-1v-4.93l-9.62 9.62a1 1 0 0 1-1.347.06l-5.298-4.415-3.465 3.473Z" clip-rule="evenodd" /> </svg> </i> </div> <h3 class="mt-6 mb-3 sub-title" style="color: #000">SEO友好</h3> <span class="break-all" style="color: #333333">丰富的SEO插件,确保网站在搜索引擎中脱颖而出</span> </div> </div> <div class="swiper-pagination"></div> </div> </home-shop-declaration> <div class="flex items-center justify-center"> <a class="banner-button-blue inline-block" href="/pages/pricing">了解更多</a> </div> </div> </div> </div> <div class="xt-section section-1691047852565136" data-section-type="home_swiper" data-section-id="1691047852565136"> <style>.template-swiper-prev[data-section-id="1691047852565136"]{bottom:0;}.template-swiper-next[data-section-id="1691047852565136"]{bottom:0;right:0;}@media screen and (min-width:768px){.template-swiper-prev[data-section-id="1691047852565136"]{left:-46px;top:40%;}.template-swiper-next[data-section-id="1691047852565136"]{right:-46px;top:40%;bottom:inherit;}}.home_swiper-link:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;}</style> <div class="home-template-list text-white bg-black text-center overflow-hidden py-[50px] md:pt-[90px] md:pb-[100px] px-5"> <h2 class="text-2xl md:text-5xl md:leading-tight font-semibold">100+主题模版全部免费</h2> <p class="text-sm md:text-base mt-[15px] md:mt-7.5 max-w-3xl mx-auto">Shoptop为每个行业进行战略研究和量身定制所精心设计的模版,帮助您在建站旅程中抢占先机。主题模版支持高度自定义,也可以从空白页开始构建</p> <home-template-swiper data-section-id="1691047852565136"> <div class="template-swiper-wrap mx-auto relative w-full md:w-10/12 xl:w-7/10"> <div class="swiper swiper-pointer-events template-swiper-1691047852565136 mt-7.5 md:mt-15"> <div class="swiper-wrapper text-center md:text-left"> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.74%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1848265495381508097.jpg alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">ECOSWEEP</div> <a href="https://ecosweep.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.8%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1822930523460308994.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">LUMASHINE</div> <a href="https://lumashine.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.8%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1822930523468840961.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">PETCHARM</div> <a href="https://petcharm.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.74%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1813499313780801538.jpg alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">ELYSIAN</div> <a href="https://elysian.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.71%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1813500159599951873.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">VIRTULYNX</div> <a href="https://virtulynx.ishoptop.com/ " target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.74%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1810941508972560386.jpg alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">MECHHUB</div> <a href="https://mechhub.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.66%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1710905387274944514.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">HOMELY</div> <a href="https://homely.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.74%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1798990400914157569.jpg alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">SPORTFAST</div> <a href="https://sport-fast.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518064239673345.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">WARDROBE</div> <a href="https://wardrobe.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.66%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1797454457728118785.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">DIGITRON</div> <a href="https://digitron.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063979798530.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">BAZAAR</div> <a href="https://bazaar.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063958654978.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">PUSOKE</div> <a href="https://pusoke.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063967043585.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">CURSOR</div> <a href="https://cursor.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063983820801.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">HYPERION</div> <a href="https://hyperion.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063967043586.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">CASTLE</div> <a href="https://castle.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063983992833.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">AINSLEY</div> <a href="https://ainsley.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.66%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1710905443935797249.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">SUNNY-GRID</div> <a href="https://sunny-grid.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.6%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1697518063962849282.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">ETERNAL</div> <a href="https://eternal.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.7%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1714248879841689601.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">AUTOBLITZ</div> <a href="https://autoblitz.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.66%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1732710658255069186.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">POWERPEAK</div> <a href="https://powerpeak.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> <div class="swiper-slide relative"> <div class="home-template-list__item-image relative" style="padding-bottom:62.72%"> <img class="absolute w-full lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src=https://img.staticxt.com/1848267497846951938.png alt=""> </div> <div class="mt-[15px] md:mt-8 text-sm text-center">FIXMATE</div> <a href="https://fixmate.ishoptop.com/" target="_blank" class="home_swiper-link"></a> </div> </div> </div> <div class="template-swiper-navigation absolute top-0 w-full h-full"> <div class="template-swiper-prev absolute z-1" data-section-id="1691047852565136"> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="currentColor" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z" /> </svg> </div> <div class="template-swiper-next absolute z-1 top-1/3 rotate-180" data-section-id="1691047852565136"> <svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="currentColor" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z" /> </svg> </div> </div> </div> </home-template-swiper> </div> </div> <div class="xt-section section-1691116701853344" data-section-type="img-text-four" data-section-id="1691116701853344"> <style>[data-section-id="1691116701853344"] .img-text-four-box{margin:px 0 px;}@media (min-width:767.98px){[data-section-id="1691116701853344"] .img-text-four-box{margin:10px auto 0px;}}</style> <div class="relative img-text-four-box"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="container page-width relative pt-[50px] md:pt-16"> <h2 class="mg-text-four__title title text-center">轻松建站</h2> <div class="img-text-four-wrap mt-7.5 md:mt-15 md:pb-20 flex items-center flex-col md:flex-row-reverse"> <div class="img-text-four__text w-full md:w-[48%] md:ml-14"> <div class="img-text-four__item md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">模版</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">拥有丰富的免费模版资源库,响应式网页设计,轻松打造您的品牌专属独立站!</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">编辑器</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">快速、简单、惊艳!拖拽式建站,创造属于你的独立站!</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">商品一键迁移</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">提供多平台的数据迁移功能,助力提高数据管理效率</p> </div> </div> </div> <div class="img-text-four__image w-full md:w-[48%]"> <div class="img-text-four__image-wrap relative w-full" style="padding-bottom:68.21%"> <img alt="Shoptop" class="absolute lazyload w-full max-h-full left-0 top-0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1697527749927796737.png?x-oss-process=format,webp"> </div> </div> </div> </div> </div> </div> <div class="xt-section section-1691458808360172" data-section-type="img-text-four" data-section-id="1691458808360172"> <style>[data-section-id="1691458808360172"] .img-text-four-box{margin:px 0 px;}@media (min-width:767.98px){[data-section-id="1691458808360172"] .img-text-four-box{margin:0px auto 0px;}}</style> <div class="relative img-text-four-box"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="container page-width relative pt-[50px] md:pt-16"> <h2 class="mg-text-four__title title text-center">广告投放</h2> <div class="img-text-four-wrap mt-7.5 md:mt-15 md:pb-20 flex items-center flex-col md:flex-row"> <div class="img-text-four__text w-full md:w-[48%] md:mr-14"> <div class="img-text-four__item md:pr-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">全媒体流量生态,覆盖海外优质资源</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">Shoptop连接了Google、Bing、Facebook、LinkedIn、 Snapchat、Pinterest、Vk、Twitter、Yahoo、Yandex等十多家海外热门媒体,可以为商家提供差异化广告投放策略,针对性提高广告投放精准度!</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pr-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">专业广告投放,轻松拓展全球市场</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">Shoptop拥有一支高素质的专业广告投放团队,以提高客户的ROI为导向,提供“大数据分析+广告投放+账户管理+整合营销策划”的综合推广服务!</p> </div> </div> </div> <div class="img-text-four__image w-full md:w-[48%]"> <div class="img-text-four__image-wrap relative w-full" style="padding-bottom:76.43%"> <img alt="Shoptop" class="absolute lazyload w-full max-h-full left-0 top-0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1697528523554586626.png?x-oss-process=format,webp"> </div> </div> </div> </div> </div> </div> <div class="xt-section section-1691458820103492" data-section-type="img-text-four" data-section-id="1691458820103492"> <style>[data-section-id="1691458820103492"] .img-text-four-box{margin:px 0 px;}@media (min-width:767.98px){[data-section-id="1691458820103492"] .img-text-four-box{margin:0px auto 0px;}}</style> <div class="relative img-text-four-box"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="container page-width relative pt-[50px] md:pt-16"> <h2 class="mg-text-four__title title text-center">营销推广</h2> <div class="img-text-four-wrap mt-7.5 md:mt-15 md:pb-20 flex items-center flex-col md:flex-row-reverse"> <div class="img-text-four__text w-full md:w-[48%] md:ml-14"> <div class="img-text-four__item md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">多元化营销玩法,促进店铺流量转化</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">满减活动、限时促销、优惠码、弹窗公告、捆绑销售、浮窗通知等多种营销功能,吸引消费者增加购买力,提升转化及复购率!</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">广告营销</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">Shoptop与Google、Bing、Facebook、LinkedIn、 Snapchat、Pinterest、Vk、Twitter、Yahoo、Yandex等10+海外主流媒体关联,打造全媒体品牌营销矩阵。</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pl-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">邮件营销</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">Shoptop后台集成了Mailchimp、Omnisend、域名邮箱等多种应用,增强客户粘性并提高复购率。</p> </div> </div> </div> <div class="img-text-four__image w-full md:w-[48%]"> <div class="img-text-four__image-wrap relative w-full" style="padding-bottom:67.14%"> <img alt="Shoptop" class="absolute lazyload w-full max-h-full left-0 top-0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1697527750250930178.png?x-oss-process=format,webp"> </div> </div> </div> </div> </div> </div> <div class="xt-section section-1691458814803204" data-section-type="img-text-four" data-section-id="1691458814803204"> <style>[data-section-id="1691458814803204"] .img-text-four-box{margin:px 0 px;}@media (min-width:767.98px){[data-section-id="1691458814803204"] .img-text-four-box{margin:0px auto 0px;}}</style> <div class="relative img-text-four-box"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="container page-width relative pt-[50px] md:pt-16"> <h2 class="mg-text-four__title title text-center">支付多元化</h2> <div class="img-text-four-wrap mt-7.5 md:mt-15 md:pb-20 flex items-center flex-col md:flex-row"> <div class="img-text-four__text w-full md:w-[48%] md:mr-14"> <div class="img-text-four__item md:pr-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">支付方式多元化</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">Shoptop同时支持Paypal、国际信用卡、本地支付、先享后付和货到付款等多种支付方式,全面覆盖海外高频支付场景,提升成单率。</p> </div> </div> <div class="img-text-four__item md:mt-12 md:pr-[11%]"> <div class="img-text-four__item-text image-text-border"> <div class="sub-title font-semibold" style="color: #000;">最高级别的数据安全标准</div> <p class="mt-3 md:mt-3.5 mb-7.5 md:mb-10" style="color:#333333;">PCI DSS安全认证是全球最严格且级别最高的数据安全标准。通过此认证,意味着平台能为用户提供最高水平的数据保护能力,从而实现主流支付通道的直连支付,确保店铺的数据安全和消费者个人信息安全。</p> </div> </div> </div> <div class="img-text-four__image w-full md:w-[48%]"> <div class="img-text-four__image-wrap relative w-full" style="padding-bottom:82.5%"> <img alt="Shoptop" class="absolute lazyload w-full max-h-full left-0 top-0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1688780767134609410.png?x-oss-process=format,webp"> </div> </div> </div> </div> </div> </div> <div class="xt-section section-1687167946514408" data-section-type="logo_list" data-section-id="1687167946514408"> <style>.logo-1687167946514408{padding:64px 0 80px;margin:0px auto 0px;}[data-section-type="logo_list"] .swiper{margin:0 40px 30px 40px;}[data-section-type="logo_list"] .swiper-pagination-bullet{width:6px;height:6px;border-radius:50%;background:#D9D9D9;}[data-section-type="logo_list"] .swiper-pagination-bullet-active{width:12px;height:12px;border-radius:50%;background:#D9D9D9;}@media only screen and (max-width:767.98px){.logo-1687167946514408{padding:50px 0;margin:0px 0 0px;}[data-section-type="logo_list"] .swiper{margin:0 20px 30px 20px;}}</style> <he-logo-list section-id="1687167946514408" autoplay="true"> <div class="logo-1687167946514408 relative"> <div class="absolute top-0 left-0 w-full h-full" style="background:;height:100%"></div> <div class="md:container page-width relative"> <h2 class="text-center mb-5 title">合作伙伴</h2> <div class="relative"> <div class="swiper"> <div class="swiper-wrapper"> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036726140931.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036751306753.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036721946626.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036726140930.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036764061697.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036717752321.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036722118657.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036721946627.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> <div class="swiper-slide w-2/5 md:w-1/5"> <a class="logo-list__item flex flex-col" href="javascript:;"> <div class="logo-list__image mx-auto w-full h-full flex items-center"> <div class="w-full"> <div class="relative lazyload bg-cover" style="padding-bottom:100%" data-sizes="auto" data-bgset=" https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/48x 48w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/180x 180w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/360x 360w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/540x 540w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/720x 720w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/900x 900w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1024x 1024w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1280x 1280w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1366x 1366w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1440x 1440w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1536x 1536w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1600x 1600w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/1920x 1920w,https://img.staticxt.com/1697521036722118658.webp?x-oss-process=style/2056x 2056w,"> </div> </div> </div> </a> </div> </div> </div> <div class="flex justify-center md:justify-between md:absolute top-[50%] -translate-y-7 w-full"> <div class="logo-swiper-prev-1687167946514408 mr-3 md:mr-0"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="26" viewBox="0 0 28 26" fill="none"> <path d="M5.82842 12.1924H26V14.1924H5.82842L12.6066 20.9706L11.1924 22.3848L1.99999 13.1924L11.1924 4L12.6066 5.41421L5.82842 12.1924Z" fill="black" fill-opacity="0.3"/> </svg> </div> <div class="logo-swiper-next-1687167946514408 -rotate-180 ml-3 md:ml-0"> <svg xmlns="http://www.w3.org/2000/svg" width="28" height="26" viewBox="0 0 28 26" fill="none"> <path d="M5.82842 12.1924H26V14.1924H5.82842L12.6066 20.9706L11.1924 22.3848L1.99999 13.1924L11.1924 4L12.6066 5.41421L5.82842 12.1924Z" fill="black" fill-opacity="0.3"/> </svg> </div> </div> <div class="swiper-pagination-1687167946514408 justify-center items-center hidden md:flex"></div> </div> </div> </div> </he-logo-list> </div> <div class="xt-section section-1687168164194424" data-section-type="consultation" data-section-id="1687168164194424"> <style>[data-section-id="1687168164194424"] .consultation_box{box-sizing:border-box;width:100%;margin:0px 0 0px;position:relative;}@media screen and (max-width:768px){[data-section-id="1687168164194424"] .consultation_box{margin:0px 0 0px;}}</style> <div class="consultation_box bg-no-repeat container shop-1687168164194424"> <div class="absolute top-0 left-0 w-full h-full" style="background:linear-gradient(90deg, rgba(57,96,205,1) 0%, rgba(57,96,205,1) 100%);;height:100%"></div> <div class="consultation relative page-width py-[50px] md:pt-20 md:pb-[90px] overflow-hidden text-center"> <div class="title" style="color:#FFFFFF">免订阅费,零成本开启您的跨境生意</div> <div class="consultation_text mt-3 mb-7.5 md:mt-6 md:mb-10 clear-both" style="color:#FFFFFF">Shoptop强大的SaaS企业级架构,24小时程序监控,为您的网站保驾护航。</div> <he-consultation mode="link"> <div class="home-banner--input flex justify-center items-center md:mt-10"> <div class="home-banner--input__wrap home-banner--input__wrap-w flex overflow-hidden items-center"> <input type="text" placeholder="输入您的手机号"> <button class="home-banner--input__btn mr-[5px] text-xl">免费开店</button> </div> </div> </he-consultation> </div> </div> </div> </main> <div class="xt-section section-footer" data-section-type="footer" data-section-id="footer"> <style>.home_footer_box{background-color:var(--color-footer-bg);color:var(--color-footer-text);padding:50px 50px 0 50px;}.home_footer_box_pic img{width:100%;height:auto;margin:0 auto;}.home_footer_box .home_footer_title{width:100%;font-weight:600;font-size:16px;color:var(--color-footer-text);}.nav_item_box.home_footer_QRcode_box{margin-bottom:0;}.qrcode_img_box{max-width:105px;}.qrcode_img_box img{width:100%;}@media screen and (max-width:768px){.home_footer_box{padding:37px 37px 0 37px;flex-direction:column;}.home_footer_title{text-align:left;}.home_footer_nav_box{column-gap:2rem;flex-wrap:wrap;flex-direction:column;max-height:1024px;}.home_footer_box_pic,.home_footer_QRcode_box{flex-wrap:wrap;box-sizing:border-box;padding-right:0;}.home_footer_box_pic{margin-top:0;}.home_footer_QRcode_box{margin-top:0;flex-direction:column;}}.footer-image-title p{margin:0;}</style> <div class="home_footer_box"> <div class="page-width flex gap-6 md:gap-12 pb-12 flex-col md:flex-row"> <div class="w-full sm:w-[300px] mx-auto"> <div class="relative overflow-hidden" style="padding-bottom:61.80%;"> <img class="lazyload absolute top-0 left-0 w-full object-cover" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://static.shoptop.com/home/img/Shoptop.gif" alt="一站式独立站Saas建站出海解决方案"> </div> </div> <div class="home_footer_nav_box md:flex-1 md:w-0 grid grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6 md:gap-12"> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">店铺模式</div><ul class="nav"> <li class="nav_item"><a href="/pages/b2b" class="nav-link text-sm">B2B解决方案</a></li><li class="nav_item"><a href="/pages/direct-to-consumer-intro" class="nav-link text-sm">DTC</a></li><li class="nav_item"><a href="/pages/dropshipping" class="nav-link text-sm">一件代发</a></li><li class="nav_item"><a href="/pages/cod" class="nav-link text-sm">COD货到付款</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">店铺营销</div><ul class="nav"> <li class="nav_item"><a href="/pages/google" class="nav-link text-sm">谷歌营销</a></li><li class="nav_item"><a href="/pages/facebook-instagram" class="nav-link text-sm">Facebook营销</a></li><li class="nav_item"><a href="/pages/social-media" class="nav-link text-sm">社交媒体</a></li><li class="nav_item"><a href="/pages/email-marketing" class="nav-link text-sm">邮件营销</a></li><li class="nav_item"><a href="/pages/distribution" class="nav-link text-sm">分销联盟</a></li><li class="nav_item"><a href="/pages/seo" class="nav-link text-sm">SEO</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">店铺管理</div><ul class="nav"> <li class="nav_item"><a href="/pages/manage-product" class="nav-link text-sm">商品管理</a></li><li class="nav_item"><a href="/pages/crm" class="nav-link text-sm">客户管理</a></li><li class="nav_item"><a href="/pages/manage-order" class="nav-link text-sm">订单管理</a></li><li class="nav_item"><a href="/pages/payment" class="nav-link text-sm">支付安全</a></li><li class="nav_item"><a href="/pages/data-analysis" class="nav-link text-sm">数据分析</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">动态资讯</div><ul class="nav"> <li class="nav_item"><a href="/blogs/market-trends" class="nav-link text-sm">市场趋势</a></li><li class="nav_item"><a href="/blogs/tips-on-website-building" class="nav-link text-sm">建站干货</a></li><li class="nav_item"><a href="/blogs/SNS-advertising" class="nav-link text-sm">海外广告</a></li><li class="nav_item"><a href="/blogs/crossborder-ecommerce-tips" class="nav-link text-sm">出海干货</a></li><li class="nav_item"><a href="/blogs/marketing-strategies" class="nav-link text-sm">营销引流</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">关于我们</div><ul class="nav"> <li class="nav_item"><a href="/pages/about-us" class="nav-link text-sm">关于我们</a></li><li class="nav_item"><a href="/pages/contact-us" class="nav-link text-sm">联系我们</a></li><li class="nav_item"><a href="/pages/partner" class="nav-link text-sm">合作伙伴</a></li><li class="nav_item"><a href="https://helpcenter.shoptop.com/hc/zh-cn" class="nav-link text-sm">帮助中心</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">政策条款</div><ul class="nav"> <li class="nav_item"><a href="/pages/policy" class="nav-link text-sm">使用协议</a></li><li class="nav_item"><a href="/pages/terms" class="nav-link text-sm">服务条款</a></li><li class="nav_item"><a href="/pages/privacy" class="nav-link text-sm">隐私政策</a></li> </ul> </div> <div class="nav_item_box"><div class="md-[26px] md:mb-[15px] home_footer_title mb-2 md:mb-4 mb-2 md:mb-4">友情链接</div><ul class="nav"> <li class="nav_item"><a href="https://www.shoptop.com/" class="nav-link text-sm">Saas建站</a></li><li class="nav_item"><a href="https://www.10100.com/" class="nav-link text-sm">大数跨境</a></li><li class="nav_item"><a href="https://www.lovead.com/" class="nav-link text-sm">广告投放</a></li><li class="nav_item"><a href="https://www.m123.com/" class="nav-link text-sm">跨境导航</a></li> </ul> </div> <div class="nav_item_box home_footer_QRcode_box"> <div class="home_footer_title mb-2 md:mb-4">关注我们</div> <div class="flex flex-col sm:flex-row gap-2 md:gap-4"> <div class="qrcode_img_box overflow-hidden"> <div class="h-0 relative" style="padding-bottom: 100%;"> <img class="absolute top-0 left-0 max-h-full lazyload" alt="Shoptop公众号" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1689143337746034690.png?x-oss-process=style/720x"> </div> <div class="text-xs footer-image-title mt-2 text-center"> <p>扫码关注公众号</p> <p>&nbsp;领取跨境报告</p> </div> </div> <div class="qrcode_img_box overflow-hidden"> <div class="h-0 relative" style="padding-bottom: 100%;"> <img class="absolute top-0 left-0 max-h-full lazyload" alt="Shoptop视频号" class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAABlBMVEXx8fH///8wmV1OAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNgAAAAAgAB9HFkpgAAAABJRU5ErkJggg==" data-src="https://img.staticxt.com/1689143337750228994.png?x-oss-process=style/720x"> </div> <div class="text-xs footer-image-title mt-2 text-center"> <p>扫码关注视频号</p> <p>&nbsp;了解跨境动态</p> </div> </div> </div> </div> </div> </div> <div class="page-width text-xs flex flex-col items-center py-3 leading-loose border-t border-solid"> <div class="flex flex-col text-center md:block"><span>© 2024 上海晓拓网络科技有限公司版权所有</span><a class="md:ml-4" href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank" rel="noopener noreferrer">沪ICP备2021006273号-1</a></div> <a class="flex items-center" target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31010402009100"> <img src="//static.shoptop.com//home/img/beian.png"> 沪公网安备 31010402009100号</a> </div> </div> </div> <div class="focus-tint" aria-hidden="true"></div> <script> (function () { let xt_source = localStorage.getItem('xt_source') if (xt_source && JSON.parse(xt_source).UTM_PARMAS_EXPIRES > new Date().getTime()) { } else { let parmas = { UTM_PARMA: window.location.search, UTM_PARMAS_EXPIRES: new Date().getTime() + 1000 * 60 * 60 * 24 * 30 // UTM_PARMAS_EXPIRES: new Date().getTime() + 60 * 1000 //1分钟 } localStorage.setItem('xt_source', JSON.stringify(parmas)) } setLandingPage() // 存储落地页地址 function setLandingPage() { if (!sessionStorage.getItem('c_url')) { const href = window.location.href sessionStorage.setItem('c_url', href) } $.setCookie('c_url', sessionStorage.getItem('c_url')) } })(); </script> <script> // 处理 id 参数 地址栏携带id参数 ;(function () { const urlKeys = ['id'] const href = window.location.href const query = $.queryParams(href) const redirectParams = {} setHistoryUrlkey() // 设置当前的 铺盖历史 setUrlKey() setUtmParams() // 兼容老逻辑 window.utmKey = $.toQuery(redirectParams) document.addEventListener('click', function (event) { var target = event.target while (target && target.nodeName !== 'BODY' && target.nodeName !== 'A') { target = target.parentNode } if (!target) return var href = target.getAttribute('href') if (href && !/^javascript:/.test(href.trim())) { event.preventDefault() window._locationHref(href, target.getAttribute('target')) } }) window._locationHref = function (href, type) { const nowParams = $.queryParams(href) const newParams = Object.assign({}, nowParams, JSON.parse(JSON.stringify(redirectParams))) if (href.indexOf('/login') > -1 || href.indexOf('/register') > -1) { setSourceParams(newParams) setUtmRedirectQuery(newParams) setLandingPageKey(newParams) } const queryStr = $.toQuery(newParams) if (queryStr) { href = href.split('?')[0] + '?' + queryStr } if (type === '_blank') { window.open(href) } else { window.location.href = href } } // 设置落地页地址 function setLandingPageKey(params) { const cUrl = sessionStorage.getItem('c_url') if (cUrl) { params['c_url'] = encodeURI(cUrl) } } function setUrlKey() { try { urlKeys.forEach(key => { if (query[key]) { redirectParams[key] = query[key] } if (key === 'id' && redirectParams[key]) { $.setCookie('invite_code', redirectParams[key], { expires: 1 }) } }) } catch (err) {} } function setHistoryUrlkey() { try { // 设置历史参数 const xtSource = localStorage.getItem('xt_source') if (xtSource) { const utmParams = JSON.parse(xtSource).UTM_PARMA const historyQuery = $.queryParams(utmParams) urlKeys.forEach(key => { if (query[key]) { redirectParams[key] = query[key] } }) } } catch (err) {} } function setUtmParams() { try { const utmQueryArr = [] Object.keys(query).forEach(key => { // 判断key是否以 utm_ 开头 if (key.indexOf('utm_') === 0) { localStorage.setItem(key, query[key]) utmQueryArr.push(`${key}=${query[key]}`) } }) if (utmQueryArr.length > 0) { const utmParamsKey = `utm_params${getDays()}` $.setCookie(utmParamsKey, utmQueryArr.join('&'), { expires: 1 }) } } catch (error) {} } function setUtmRedirectQuery(params) { try { const nowDay = `utm_params${getDays()}` const lastDay = `utm_params${getDays('prev')}` const nowUtmParams = $.getCookie(nowDay) const lastUtmParams = $.getCookie(lastDay) if (nowUtmParams) { params[nowDay] = encodeURIComponent(nowUtmParams) } if (lastUtmParams) { params[lastDay] = encodeURIComponent(lastUtmParams) } } catch (error) {} } function setSourceParams(params) { try { const sSource = $.getCookie('shoptop_source') if (sSource) { const source = JSON.parse(decodeURI(sSource)) const first_visit_url = source.$first_visit_url params['first_visit_url'] = encodeURI(first_visit_url) || encodeURI(location.href) source.$latest_referrer_host && (params['latest_referrer_host'] = source.$latest_referrer_host) } } catch (e) { params['first_visit_url'] = encodeURI(location.href) } } function getDays(type) { let now = '' if (type === 'prev') { now = new Date(new Date().getTime() - 24 * 60 * 60 * 1000) } else { now = new Date() } const year = now.getFullYear() const month = padStartStr(now.getMonth() + 1) const day = padStartStr(now.getDate()) return `${year}-${month}-${day}` } function padStartStr(str) { return str.toString().length === 1 ? '0' + str : str } })() </script> <script> (function () { function onElementReady(selector, callback) { function checkElement() { const element = document.querySelector(selector); if (element) { callback(element); } else { requestAnimationFrame(checkElement); } } requestAnimationFrame(checkElement); } const pathName = window.location.pathname; const prefixPath = pathName.split('/')[1]; const paths = ['blog', 'blogs', '404', 'pages', ''] if (paths.includes(prefixPath)) { onElementReady('#mini-btn', (element) => { element.setAttribute('data-agl-cvt', 1); }); onElementReady('#iconDivMain1', (element) => { element.setAttribute('data-agl-cvt', 1); }) } })(); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10