1<!doctype html> 2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]--> 5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]--> 6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]--> 7<head>
7<script>(function(w,i,g){w[g]=w[g]||[];if(typeof w[g].push=='function')w[g].push(i)}) 8(window,'GTM-P98DSTCT','google_tags_first_party');</script>
8<script>(function(w,d,s,l){w[l]=w[l]||[];(function(){w[l].push(arguments);})('set', 'developer_id.dYzg1YT', true); 9 w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s);j.async=true;j.src='/ngca/'; 11 f.parentNode.insertBefore(j,f); 12 })(window,document,'script','dataLayer');</script>
12 13 14 <!-- Basic page needs ================================================== --> 15 <meta charset="utf-8"> 16 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 17 18 19 <link rel="icon" href="https://cdn.store-assets.com/s/262348/f/14023851.png" /> 20 21 22 <!-- Title and description ================================================== --> 23 <title> 24 ç»å ¥ – çå ¸Lip Intimate Careåæ·¨ç§å¯ä¿é¤ | 女æ§ç§å¯èä¿é¤ã»ç§å¯æ¸ æ½ã»å¤©ç¶ç§å¯è·çåç 25 </title> 26 27 28 29 <!-- Social meta ================================================== --> 30 31 32 <meta property="og:type" content="website"> 33 <meta property="og:title" content="ç»å ¥"> 34 <meta property="og:url" content="https://www.lipintimatecare.tw/account/login"> 35 36 <meta property="og:image" content="https://cdn.store-assets.com/s/262348/f/14023879.png"> 37 <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/262348/f/14023879.png"> 38 39 40 41<meta property="og:description" content="æ¿è¥²çå ¸å³çµ±ï¼æåå°ç¾éºè天ç¶çäºç©ä¿æç±æ ï¼ä¹è¡·æ¼åµé å®è·ç§å¯èç天ç¶ç¢åãæåç¨å¿ç¡åå好æ¯ä¸ç¶ç§å¯èæ¸ æ½è·çæ²¹ï¼ä½¿ç¨æé«çç´çåæä»¥å親èæåã使ç¨å¤©ç¶ææ©é æ¹, æ¯æåæåçæ ¸å¿å¹å¼ã"> 42<meta property="og:site_name" content="çå ¸Lip Intimate Careåæ·¨ç§å¯ä¿é¤ | 女æ§ç§å¯èä¿é¤ã»ç§å¯æ¸ æ½ã»å¤©ç¶ç§å¯è·çåç"> 43 44 45 46 <meta name="twitter:card" content="summary"> 47 48 49 50 <meta name="twitter:site" content="@"> 51 52 53 54 55 56 <!-- Helpers ================================================== --> 57 <link rel="canonical" href="https://www.lipintimatecare.tw/account/login"> 58 <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"> 59 <meta name="theme-color" content="#333333"> 60 61
61<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
61 62 63 <!-- Header hook for plugins ================================================== --> 64 65<!-- ScriptTags -->
66<script>window.__st={p: "customers",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
66<script src='/assets/events.js'></script>
66<script>(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src='https://connect.facebook.net/zh_TW/sdk/xfbml.customerchat.js#xfbml=1&version=v6.0&autoLogAppEvents=1';fjs.parentNode.insertBefore(js,fjs);}(document,'script','facebook-jssdk'));</script>
66<script>(function(){function asyncLoad(){var urls=['/assets/facebook-pixel.js?v=1.2.1788954298','/assets/traffic.js?v=1','https://apps.easystore.co/facebook-login/script.js?shop=lipintimate.easy.co&t=1708502358','https://apps.easystore.co/mobile-messaging-share/script.js?shop=lipintimate.easy.co','https://apps.easystore.co/google-tag-manager/script.js?shop=lipintimate.easy.co&t=1720420217','https://apps.easystore.co/google-analytics-4/script.js?shop=lipintimate.easy.co','https://solines.tw/assets/es_track.js','https://smartarget.online/loader.js?type=int&u=57837daec7390e3ab667ebc7ce8ac486a6a2dda9&source=easystore_popup','https://smartarget.online/loader.js?type=int&u=f650e9844ee932a5f068c77d51f715d1f8f33861&source=easystore_popup','https://apps.easystore.co/hotjar/script.js?shop=lipintimate.easy.co&t=1739214725','https://embed.tagnology.co/script/easystore.js'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
66 67<!-- /ScriptTags --> 68 69 70 71
71<script src="https://store-themes.easystore.co/262348/themes/328977/assets/global.js?t=1790820012" defer="defer"></script>
71 72 73 74 75
75<script src="/assets/shop_common.js" type="text/javascript" ></script>
75 76
76<script src="/assets/customer_area.js" type="text/javascript" ></script>
76 77 78
78<script> 79 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 80 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 81 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 82 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 83 84 ga('create', '', 'auto','myTracker'); 85 ga('myTracker.send', 'pageview'); 86 87 </script>
87 88 89
89<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
89 90 91 92 <!-- CSS ================================================== --> 93 <style> 94 @font-face { 95 font-family: 'Noto Sans TC'; 96 font-style: normal; 97 font-weight: regular; 98 src: local('Noto Sans TC regular'), local('Noto Sans TC-regular'), url(https://fonts.gstatic.com/s/notosanstc/v20/-nF7OG829Oofr2wohFbTp9iFOSsLA_ZJ1g.otf) format('truetype'); 99 } 100 101 @font-face { 102 font-family: 'Karla'; 103 font-style: normal; 104 font-weight: regular; 105 src: local('Karla regular'), local('Karla-regular'), url(https://fonts.gstatic.com/s/karla/v15/qkBIXvYC6trAT55ZBi1ueQVIjQTD-JqqFENLR7fHGw.ttf) format('truetype'); 106 } 107 108 :root { 109 --font-body-family: 'Noto Sans TC', sans-serif; 110 --font-body-style: normal; 111 --font-body-weight: 400; 112 113 --font-heading-family: 'Karla', sans-serif; 114 --font-heading-style: normal; 115 --font-heading-weight: 500; 116 117 --color-heading-text: 0,0,0; 118 --color-base-text: 0,0,0; 119 --color-base-background-1: 255,255,255; 120 --color-base-background-2: 255,255,255; 121 122 --color-base-solid-button-labels: 255,253,246; 123 --color-base-outline-button-labels: 51,51,51; 124 125 --color-base-accent-1: 51,51,51; 126 --color-base-accent-2: 51,51,51; 127 --payment-terms-background-color: 255,255,255; 128 129 --gradient-base-background-1: 255,255,255; 130 --gradient-base-background-2: 255,255,255; 131 --gradient-base-accent-1: 51,51,51; 132 --gradient-base-accent-2: 51,51,51; 133 134 --page-width: 160rem; 135 } 136 137 *, 138 *::before, 139 *::after { 140 box-sizing: inherit; 141 } 142 143 html { 144 box-sizing: border-box; 145 font-size: 62.5%; 146 height: 100%; 147 } 148 149 body { 150 display: grid; 151 grid-template-rows: auto auto 1fr auto; 152 grid-template-columns: 100%; 153 min-height: 100%; 154 margin: 0; 155 font-size: 1.5rem; 156 letter-spacing: 0.06rem; 157 line-height: 1.8; 158 font-family: var(--font-body-family); 159 font-style: var(--font-body-style); 160 font-weight: var(--font-body-weight); 161 162 } 163 164 @media screen and (min-width: 750px) { 165 body { 166 font-size: 1.6rem; 167 } 168 } 169 </style> 170 171 <link href="https://store-themes.easystore.co/262348/themes/328977/assets/base.css?t=1790820012" rel="stylesheet" type="text/css" media="screen" /> 172 173 174 175<!-- Snippet:global/head: Google Search Console --> 176<meta name="google-site-verification" content="d7zH8kg4tytzrpLYkiMeI0FKsjTuvkWQRK__DurknHE" /> 177<!-- /Snippet --> 178 179<!-- Snippet:global/head: Product Star Rating ååè©å¹ --> 180 181
181<script src="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.js"></script>
181 182
182<script src="https://apps.easystore.co/assets/js/star-rating/main.js"></script>
182 183 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@8/swiper-bundle.min.css"> 184 <link rel="stylesheet" href="https://apps.easystore.co/assets/css/star-rating/main.css?v1.4.3"> 185<!-- /Snippet --> 186 187<!-- Snippet:global/head: Product Property é²éè¦æ ¼é¸é --> 188 189
189<script src="https://apps.easystore.co/assets/js/product-property/properties.js?v2.08"></script>
189 190 <link type="text/css" rel="stylesheet" href="https://apps.easystore.co/assets/css/product-property/main.css?v2.03"> 191 192<!-- /Snippet --> 193 194<!-- Snippet:global/head: OnVoard Back In Stock -->
195<script> 196 (function() { 197 window.OnVoard = window.OnVoard || function() { 198 (window.OnVoard.q = window.OnVoard.q || []).push(arguments); 199 }; 200 var script = document.createElement("script"); 201 var parent = document.getElementsByTagName("script")[0].parentNode; 202 script.async = 1; 203 204 205 script.src = "https://scripts.onvoard.com/apps/loader.js"; 206 207 parent.appendChild(script); 208 })(); 209</script>
209 210 211
212<script> 213 214var ovData = {}; 215ovData["ecommerce_platform"] = "easystore"; 216ovData["account_id"] = "acct_g2napvq2ostwbvu"; 217 218 219 ovData["template"] = "customers"; 220 ovData["cart"] = {"item_count":0,"total_price":0,"announcements":[]}; 221 ovData["product"] = ""; 222 ovData["shop"] = {}; 223 ovData["customer"] = {}; 224 225 226 ovData["shop"] = { 227 "currency": "TWD", 228 "domain": "www.lipintimatecare.tw", 229 "url": "https://www.lipintimatecare.tw", 230 "money_format": "<span class=money data-ori-price='{{amount}}'>NT$ {{amount}} </span>", 231 }; 232 233 234 235 236 window.OnVoardData = ovData; 237</script>
237 238 239<!-- /Snippet --> 240 241 242
242<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
242 243</head> 244 245<body id="------" class="template-customers" > 246 247 248<!-- Snippet:global/body_start: Announcement Bar --> 249<link rel="stylesheet" href="https://apps.easystore.co/assets/css/annoucement-bar/slider.css?v1.01"> 250 251<input type="hidden" id="total_announcement_left" name="total_announcement_left" value="4"> 252<input type="hidden" id="locale" name="locale" value="zh_TW"> 253 254<slider-announcement-bar-app id="announcement-bar" name="announcement-bar" style=" 255 border: unset; 256 padding: 4px 0px; 257 margin: 0px; 258 z-index:2999; 259 background:rgb(39, 5, 5); 260 color:rgb(255, 255, 255); 261 262"> 263 264 <div style=" 265 display: flex; 266 justify-content: space-between; 267 align-items: center; 268 padding: 0px 0px; 269 border-top: 0px; 270 border-bottom: 0px; 271 border-color: transparent; 272 "> 273 <div style="height: 24px;"> 274 <a id="previous-announcement-bar-button" class="announcement-bar-direction-button" type="button" name="previous" style="height: 24px;"> 275 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-left" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="white" fill="none" stroke-linecap="round" stroke-linejoin="round"> 276 <path stroke="none" d="M0 0h24v24H0z" fill="none" /> 277 <polyline points="15 6 9 12 15 18" /> 278 </svg> 279 </a> 280 </div> 281 282 <ul style="flex-grow: 2; margin: 0px;"> 283 <li id="announcement_bar_0" style=" 284 display: flex; 285 justify-content: center; 286 align-items: center; 287 flex-wrap: wrap; 288 margin: 0px; 289 width: 100%; 290 word-wrap: break-word; 291 "> 292 å ¨é¤¨æ¶è²»æ»¿é¡ç¾æð° 293 <div id='announcementBar_countdown_0' class="announcementBar_timer style_2" style="color: rgba(232, 167, 150, 0.93); background: rgb(255, 255, 255); display: none;"> 294 </div> 295 <input type="hidden" id="expired_at_0" name="expired_at_0" value="2026-10-27 10:00"> 296 </li> 297 <li id="announcement_bar_1" style=" 298 display: flex; 299 justify-content: center; 300 align-items: center; 301 flex-wrap: wrap; 302 margin: 0px; 303 width: 100%; 304 word-wrap: break-word; 305 "> 306 å ¨é¤¨åå9æåªæ 307 <a class="announcement-bar-button" href="https://www.lipintimatecare.tw/collections/ææ°æ´»å" style="color: rgba(232, 167, 150, 0.93); background: rgb(255, 255, 255);">çµå¸³æ»¿é¡å¥½ç¦®ä¸ééð</a> 308 <input type="hidden" id="expired_at_1" name="expired_at_1" value="2026-10-02 00:00"> 309 </li> 310 <li id="announcement_bar_2" style=" 311 display: flex; 312 justify-content: center; 313 align-items: center; 314 flex-wrap: wrap; 315 margin: 0px; 316 width: 100%; 317 word-wrap: break-word; 318 "> 319 æ°åä¸å¸ð¹å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹ 320 <a class="announcement-bar-button" href="https://www.lipintimatecare.tw/collections/å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹" style="color: rgba(232, 167, 150, 0.93); background: rgb(255, 255, 255);">å°çºæ´å¹´èèè¨è¨</a> 321 <input type="hidden" id="expired_at_2" name="expired_at_2" value="2026-10-02 00:00"> 322 </li> 323 <li id="announcement_bar_3" style=" 324 display: flex; 325 justify-content: center; 326 align-items: center; 327 flex-wrap: wrap; 328 margin: 0px; 329 width: 100%; 330 word-wrap: break-word; 331 "> 332 çµå¸³é¡è´ 8é±å¹´éå®å®å®å¡ðï¸ 333 <a class="announcement-bar-button" href="https://www.lipintimatecare.tw/collections/ææ°æ´»å" style="color: rgba(232, 167, 150, 0.93); background: rgb(255, 255, 255);">人人æçï¼ä¸çç100%</a> 334 <input type="hidden" id="expired_at_3" name="expired_at_3" value="2026-10-02 00:00"> 335 </li> 336 </ul> 337 338 <div style="display: flex;"> 339 <a id="next-announcement-bar-button" class="announcement-bar-direction-button" type="button" name="next" style="height: 24px;"> 340 <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-right" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="white" fill="none" stroke-linecap="round" stroke-linejoin="round"> 341 <path stroke="none" d="M0 0h24v24H0z" fill="none" /> 342 <polyline points="9 6 15 12 9 18" /> 343 </svg> 344 </a> 345 </div> 346 </div> 347 348 349</slider-announcement-bar-app> 350
351<script> 352 $(function() { 353 var is_top_enabled = 0; 354 355 const loadScript = function(url, callback) { 356 const script = document.createElement("script"); 357 script.type = "text/javascript"; 358 // If the browser is Internet Explorer. 359 if (script.readyState) { 360 script.onreadystatechange = function() { 361 if (script.readyState == "loaded" || script.readyState == "complete") { 362 script.onreadystatechange = null; 363 callback(); 364 } 365 }; 366 // For any other browser. 367 } else { 368 script.onload = function() { 369 callback(); 370 }; 371 } 372 script.src = url; 373 document.getElementsByTagName("head")[0].appendChild(script); 374 }; 375 376 const announcementBarAppJS = function($) { 377 378 $('#announcement-close-button').on('click', function() { 379 $('#announcement-bar, #announcement-bar-top').hide(); 380 $('#easystore-section-header, .sticky-topbar').css('top', ''); 381 }); 382 } 383 384 if (typeof jQuery === 'undefined') { 385 loadScript('//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function() { 386 jQuery = jQuery.noConflict(true); 387 announcementBarAppJS(jQuery); 388 }); 389 } else { 390 announcementBarAppJS(jQuery); 391 } 392 393 394 395 if(is_top_enabled){ 396 // Prevent announcement bar block header 397 setTimeout(()=>{ 398 $('#easystore-section-header, .sticky-topbar').css('top', $('#announcement-bar').height()+'px'); 399 }, 2000); 400 } 401 }); 402 403 setInterval(function() { 404 const total_announcement = "4" 405 var total_announcement_left = $("#total_announcement_left").val(); 406 407 for (let i = 0; i <= total_announcement; i++) { 408 const startDate = new Date(); 409 const endDateStr = $("#expired_at_" + i).val(); 410 const endDate = endDateStr == undefined ? new Date() : new Date(endDateStr.replace(/-/g, "/")); 411 const seconds = (endDate.getTime() - startDate.getTime()) / 1000; 412 413 const days = parseInt(seconds / 86400); 414 const hours = parseInt((seconds % 86400) / 3600); 415 const mins = parseInt((seconds % 86400 % 3600) / 60); 416 const secs = parseInt((seconds % 86400 % 3600) % 60); 417 418 // use to translate countdown unit 419 // (translate based on the preferred language when save announcement bar setting) 420 String.prototype.translate = function() { 421 try { 422 if ($("#locale").val() == "zh_TW") { 423 if (this.toString() === 'day') { 424 return "天"; 425 } 426 if (this.toString() === 'hour') { 427 return "å°æ"; 428 } 429 if (this.toString() === 'min') { 430 return "åé"; 431 } 432 if (this.toString() === 'sec') { 433 return "ç§"; 434 } 435 } else { 436 if (this.toString() === 'day') { 437 if (days > 0) { 438 return "Days"; 439 } else { 440 return "Day"; 441 } 442 } else if (this.toString() === 'hour') { 443 if (hours > 0) { 444 return "Hours"; 445 } else { 446 return "Hour"; 447 } 448 } else if (this.toString() === 'min') { 449 if (mins > 0) { 450 return "Mins"; 451 } else { 452 return "Min"; 453 } 454 } else if (this.toString() === 'sec') { 455 if (secs > 0) { 456 return "Secs"; 457 } else { 458 return "Sec"; 459 } 460 } 461 } 462 } catch (error) { 463 console.log("Some errors heres", error); 464 } 465 }; 466 467 const announcementBar_countdown = document.getElementById("announcementBar_countdown_" + i); 468 if (announcementBar_countdown && seconds > 0) { 469 470 $(announcementBar_countdown).show() 471 announcementBar_countdown.innerHTML = ` 472 <div> 473 ${days} <small>${'day'.translate()}</small> 474 </div> 475 <div> 476 ${hours} <small>${'hour'.translate()}</small> 477 </div> 478 <div> 479 ${mins} <small>${'min'.translate()}</small> 480 </div> 481 <div> 482 ${secs} <small>${'sec'.translate()}</small> 483 </div> 484 `; 485 486 487 } else if (announcementBar_countdown && seconds <= 0) { 488 $("#announcement_bar_" + i).remove(); 489 total_announcement_left = total_announcement_left - 1; 490 $("#total_announcement_left").val(total_announcement_left); 491 } 492 } 493 494 showOrHide(total_announcement_left); 495 }, 1000); 496 497 498 function showOrHide(total_announcement_left) { 499 if (total_announcement_left <= 1) { 500 $("#previous-announcement-bar-button,#next-announcement-bar-button").hide(); 501 } else { 502 $("#previous-announcement-bar-button,#next-announcement-bar-button").show(); 503 } 504 505 if (total_announcement_left == 0) { 506 $("#announcement-close-button").hide(); 507 $("#announcement-bar").hide(); 508 $('#announcement-bar-top').hide(); 509 $('#easystore-section-header, .sticky-topbar').css('top', ''); 510 } 511 }; 512 513 let annoucementBarAutoMoveInterval = ''; 514 class AnnouncementBarAppSlider extends HTMLElement { 515 constructor() { 516 super(); 517 this.slider = this.querySelector('ul'); 518 this.sliderItems = this.querySelectorAll('li'); 519 this.prevButton = this.querySelector('a[name="previous"]'); 520 this.nextButton = this.querySelector('a[name="next"]'); 521 522 if (!this.slider || !this.nextButton) return; 523 524 const resizeObserver = new ResizeObserver(entries => this.initPages()); 525 resizeObserver.observe(this.slider); 526 527 this.slider.addEventListener('scroll', this.update.bind(this)); 528 this.prevButton.addEventListener('click', this.onButtonClick.bind(this)); 529 this.nextButton.addEventListener('click', this.onButtonClick.bind(this)); 530 531 532 } 533 534 initPages() { 535 const sliderItemsToShow = Array.from(this.sliderItems).filter(element => element.clientWidth > 0); 536 this.sliderLastItem = sliderItemsToShow[sliderItemsToShow.length - 1]; 537 if (sliderItemsToShow.length === 0) return; 538 this.slidesPerPage = Math.floor(this.slider.clientWidth / sliderItemsToShow[0].clientWidth); 539 this.totalPages = sliderItemsToShow.length - this.slidesPerPage + 1; 540 this.update(); 541 let self = this 542 var total_announcement_left = $("#total_announcement_left").val(); 543 annoucementBarAutoMoveInterval = setInterval(function() { 544 if (total_announcement_left > 1) { 545 self.moveSlide('next') 546 } 547 }, 5000) 548 } 549 550 update() { 551 this.currentPage = Math.round(this.slider.scrollLeft / this.sliderLastItem.clientWidth) + 1; 552 } 553 554 onButtonClick(event) { 555 event.preventDefault(); 556 let self = this; 557 self.moveSlide(event.currentTarget.name); 558 } 559 560 561 moveSlide(move_to) { 562 563 clearInterval(annoucementBarAutoMoveInterval); 564 let self = this; 565 annoucementBarAutoMoveInterval = setInterval(function() { 566 self.moveSlide('next'); 567 }, 5000) 568 569 if (move_to === 'previous' && this.currentPage === 1) { 570 this.slider.scrollTo({ 571 left: this.sliderLastItem.clientWidth * (this.totalPages - 1) 572 }); 573 } else if (move_to === 'next' && this.currentPage === this.totalPages) { 574 this.slider.scrollTo({ 575 left: 0 576 }); 577 } else { 578 const slideScrollPosition = move_to === 'next' ? this.slider.scrollLeft + this.sliderLastItem 579 .clientWidth : this.slider.scrollLeft - this.sliderLastItem.clientWidth; 580 this.slider.scrollTo({ 581 left: slideScrollPosition 582 }); 583 } 584 } 585 586 } 587 588 customElements.define('slider-announcement-bar-app', AnnouncementBarAppSlider); 589</script>
589 590 591<!-- /Snippet --> 592 593<!-- Snippet:global/body_start: Console Extension --> 594<div id='es_console' style='display: none;'>262348</div> 595<!-- /Snippet --> 596 597 598 <style> 599 header { 600 --logo-width: 65px; 601 } 602 .header-wrapper, 603 .header-wrapper .list-menu--disclosure, 604 .header-wrapper .search-modal{ 605 background-color: rgba(255, 215, 199, 1); 606 } 607 .header-wrapper .search-modal .field__input{ 608 background-color: rgb(var(--color-background)); 609 } 610 .header-wrapper summary .icon-caret, 611 .header-wrapper .header__menu-item a, 612 .header-wrapper .list-menu__item, 613 .header-wrapper .link--text{ 614 color: #333333; 615 } 616 .header__logo_secondary{ 617 display: none; 618 } 619 620 .search-modal__form{ 621 position: relative; 622 } 623 624 .dropdown { 625 display: none; 626 position: absolute; 627 top: 100%; 628 left: 0; 629 width: 100%; 630 padding: 5px 0; 631 background-color: #fff; 632 color:#000; 633 z-index: 1000; 634 border-bottom-left-radius: 15px; 635 border-bottom-right-radius: 15px; 636 border: 1px solid rgba(var(--color-foreground), 1); 637 border-top: none; 638 overflow-x: hidden; 639 overflow-y: auto; 640 max-height: 350px; 641 } 642 643 .dropdown-item { 644 padding: 0.4rem 2rem; 645 cursor: pointer; 646 line-height: 1.4; 647 overflow: hidden; 648 text-overflow: ellipsis; 649 white-space: nowrap; 650 } 651 652 .dropdown-item:hover{ 653 background-color: #f3f3f3; 654 } 655 656 .search__input.is-focus{ 657 border-radius: 15px; 658 border-bottom-left-radius: 0; 659 border-bottom-right-radius: 0; 660 border: 1px solid rgba(var(--color-foreground), 1); 661 border-bottom: none; 662 box-shadow: none; 663 } 664 665 .clear-all { 666 text-align: right; 667 padding: 0 2rem 0.2rem; 668 line-height: 1; 669 font-size: 70%; 670 margin-bottom: -2px; 671 } 672 673 .clear-all:hover{ 674 background-color: #fff; 675 } 676 677 .search-input-focus .easystore-section-header-hidden{ 678 transform: none; 679 } 680 .referral-notification { 681 position: absolute; 682 top: 100%; 683 right: 0; 684 background: white; 685 border: 1px solid #e0e0e0; 686 border-radius: 8px; 687 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 688 width: 280px; 689 z-index: 1000; 690 padding: 16px; 691 margin-top: 8px; 692 font-size: 14px; 693 line-height: 1.4; 694 } 695 696 .referral-notification::before { 697 content: ''; 698 position: absolute; 699 top: -8px; 700 right: 20px; 701 width: 0; 702 height: 0; 703 border-left: 8px solid transparent; 704 border-right: 8px solid transparent; 705 border-bottom: 8px solid white; 706 } 707 708 .referral-notification::after { 709 content: ''; 710 position: absolute; 711 top: -9px; 712 right: 20px; 713 width: 0; 714 height: 0; 715 border-left: 8px solid transparent; 716 border-right: 8px solid transparent; 717 border-bottom: 8px solid #e0e0e0; 718 } 719 720 .referral-notification h4 { 721 margin: 0 0 8px 0; 722 color: #2196F3; 723 font-size: 16px; 724 font-weight: 600; 725 } 726 727 .referral-notification p { 728 margin: 0 0 12px 0; 729 color: #666; 730 } 731 732 .referral-notification .referral-code { 733 background: #f5f5f5; 734 padding: 8px; 735 border-radius: 4px; 736 font-family: monospace; 737 font-size: 13px; 738 text-align: center; 739 margin: 8px 0; 740 border: 1px solid #ddd; 741 } 742 743 .referral-notification .close-btn { 744 position: absolute; 745 top: 8px; 746 right: 8px; 747 background: none; 748 border: none; 749 font-size: 18px; 750 color: #999; 751 cursor: pointer; 752 padding: 0; 753 width: 20px; 754 height: 20px; 755 line-height: 1; 756 } 757 758 .referral-notification .close-btn:hover { 759 color: #333; 760 } 761 762 .referral-notification .action-btn { 763 background: #2196F3; 764 color: white; 765 border: none; 766 padding: 8px 16px; 767 border-radius: 4px; 768 cursor: pointer; 769 font-size: 12px; 770 margin-right: 8px; 771 margin-top: 8px; 772 } 773 774 .referral-notification .action-btn:hover { 775 background: #1976D2; 776 } 777 778 .referral-notification .dismiss-btn { 779 background: transparent; 780 color: #666; 781 border: 1px solid #ddd; 782 padding: 8px 16px; 783 border-radius: 4px; 784 cursor: pointer; 785 font-size: 12px; 786 margin-top: 8px; 787 } 788 789 .referral-notification .dismiss-btn:hover { 790 background: #f5f5f5; 791 } 792 .referral-modal__dialog { 793 transform: translate(-50%, 0); 794 transition: transform var(--duration-default) ease, visibility 0s; 795 z-index: 10000; 796 position: fixed; 797 top: 20vh; 798 left: 50%; 799 width: 100%; 800 max-width: 350px; 801 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 802 border-radius: 12px; 803 background-color: #fff; 804 color: #000; 805 padding: 20px; 806 text-align: center; 807 } 808 809 .modal-overlay.referral-modal-overlay { 810 position: fixed; 811 top: 0; 812 left: 0; 813 width: 100%; 814 height: 100%; 815 background-color: rgba(0, 0, 0, 0.7); 816 z-index: 2001; 817 display: block; 818 opacity: 1; 819 transition: opacity var(--duration-default) ease, visibility 0s; 820 } 821</style> 822 823 824 825<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/section-header.css?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 826<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/component-list-menu.css?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 827<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/component-menu-drawer.css?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 828<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/component-cart-notification.css?v1.1?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 829
830<script src="https://store-themes.easystore.co/262348/themes/328977/assets/cart-notification.js?t=1790820012" defer="defer"></script>
vendor: 1 bytes, line 830
830
831<script src="https://store-themes.easystore.co/262348/themes/328977/assets/details-modal.js?t=1790820012" defer="defer"></script>
831 832 833<svg xmlns="http://www.w3.org/2000/svg" class="hidden"> 834 <symbol id="icon-search" viewbox="0 0 18 19" fill="none"> 835 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/> 836 </symbol> 837 838 <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17"> 839 <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor"> 840 </symbol> 841</svg> 842 843 844<div id="easystore-section-header"> 845 <sticky-header class="header-wrapper header-wrapper--border-bottom"> 846 <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization"> 847 <div class="header__left-icon header__icons large-up-hide"> 848 <header-drawer data-breakpoint="tablet"> 849 <details class="menu-drawer-container menu-opening"> 850 <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer"> 851 <span> 852 853 854 855 <svg class="icon icon-hamburger " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M32.5,65h535a25,25,0,0,0,0-50H32.5a25,25,0,0,0,0,50Z" fill="currentColor"/><path d="M567.5,275H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/><path d="M567.5,535H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/></svg> 856 857 858 859 860 861 862 <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg> 863 864 865 866 </span> 867 </summary> 868 <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1"> 869 <div class="menu-drawer__inner-container"> 870 <div class="menu-drawer__navigation-container"> 871 <nav class="menu-drawer__navigation"> 872 <ul class="menu-drawer__menu list-menu" role="list"> 873 874 875 876 <li> 877 <a href="/" class="menu-drawer__menu-item list-menu__item link link--text focus-inset"> 878 HOME 879 </a> 880 </li> 881 882 883 884 885 886 <li> 887 <details> 888 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 889 <a href="/collections/ææ°æ´»å" class="link--text list-menu__item menu-drawer__menu-item"> 890 ææ°æ´»å 891 </a> 892 893 894 895 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 896 897 898 899 900 901 902 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 903 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 904 </svg> 905 906 907 908 </summary> 909 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 910 <div class="menu-drawer__inner-submenu"> 911 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 912 913 914 915 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 916 917 918 919 ææ°æ´»å 920 </button> 921 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 922 923 924 925 <li> 926 <a href="/collections/æ¬æåªæ " class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 927 æ¬æåªæ 928 </a> 929 </li> 930 931 932 933 934 <li> 935 <a href="/pages/lip-intimate-care-8é±å¹´å®å®æ¨-æ´»å辦æ³" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 936 ã8é±å¹´å®å®æ¨ãæ´»åè¾¦æ³ 937 </a> 938 </li> 939 940 941 942 943 <li> 944 <a href="/pages/9æé宿½çæ´»å" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 945 9æé宿½çæ´»å 946 </a> 947 </li> 948 949 950 951 </ul> 952 </div> 953 </div> 954 </details> 955 </li> 956 957 958 959 960 961 <li> 962 <details> 963 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 964 <a href="/collections/æ°åä¸å¸" class="link--text list-menu__item menu-drawer__menu-item"> 965 æ°åä¸å¸ 966 </a> 967 968 969 970 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 971 972 973 974 975 976 977 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 978 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 979 </svg> 980 981 982 983 </summary> 984 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 985 <div class="menu-drawer__inner-submenu"> 986 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 987 988 989 990 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 991 992 993 994 æ°åä¸å¸ 995 </button> 996 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 997 998 999 1000 <li> 1001 <a href="/collections/å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1002 å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹ 1003 </a> 1004 </li> 1005 1006 1007 1008 </ul> 1009 </div> 1010 </div> 1011 </details> 1012 </li> 1013 1014 1015 1016 1017 1018 <li> 1019 <details> 1020 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1021 <a href="/collections/lip-intimate-care" class="link--text list-menu__item menu-drawer__menu-item"> 1022 Shop | åè³¼ç© 1023 </a> 1024 1025 1026 1027 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1028 1029 1030 1031 1032 1033 1034 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1035 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1036 </svg> 1037 1038 1039 1040 </summary> 1041 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1042 <div class="menu-drawer__inner-submenu"> 1043 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1044 1045 1046 1047 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1048 1049 1050 1051 Shop | åè³¼ç© 1052 </button> 1053 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1054 1055 1056 1057 <li> 1058 <a href="/collections/çµååªæ " class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1059 çµååªæ 1060 </a> 1061 </li> 1062 1063 1064 1065 1066 <li> 1067 <a href="/collections/æ¸ æ½ä¿é¤" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1068 æ¸ æ½ä¿é¤ 1069 </a> 1070 </li> 1071 1072 1073 1074 1075 <li> 1076 <a href="/collections/餿¯ä¿é¤" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1077 餿¯ä¿é¤ 1078 </a> 1079 </li> 1080 1081 1082 1083 1084 <li> 1085 <a href="/collections/ç§å¯æ½¤æ»" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1086 ç§å¯æ½¤æ» 1087 </a> 1088 </li> 1089 1090 1091 1092 1093 <li> 1094 <a href="/collections/æ´å¹´æä¿é¤" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1095 綻齡ä¿é¤ 1096 </a> 1097 </li> 1098 1099 1100 1101 1102 <li> 1103 <a href="/collections/åæä¿é¤" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1104 åæä¿é¤ 1105 </a> 1106 </li> 1107 1108 1109 1110 1111 <li> 1112 <a href="/collections/ç·å£«æ¸ æ½" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1113 ç·å£«æ¸ æ½ 1114 </a> 1115 </li> 1116 1117 1118 1119 1120 <li> 1121
1121 <a href="/collections/å£è æ¸ æ½" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1122 å£è æ¸ æ½ 1123 </a> 1124 </li> 1125 1126 1127 1128 1129 <li> 1130 <a href="/collections/天ç¶é«é¦" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1131 天ç¶é«é¦ 1132 </a> 1133 </li> 1134 1135 1136 1137 1138 <li> 1139 <a href="/collections/èå¿å¥½ç " class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1140 èå¿å¥½ç 1141 </a> 1142 </li> 1143 1144 1145 1146 1147 <li> 1148 <a href="/pages/é¸è³¼æå" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1149 é¸è³¼æå 1150 </a> 1151 </li> 1152 1153 1154 1155 </ul> 1156 </div> 1157 </div> 1158 </details> 1159 </li> 1160 1161 1162 1163 1164 1165 <li> 1166 <details> 1167 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1168 <a href="/pages/testimonial-忍è¦" class="link--text list-menu__item menu-drawer__menu-item"> 1169 Testimonial | åæ¨è¦ 1170 </a> 1171 1172 1173 1174 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1175 1176 1177 1178 1179 1180 1181 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1182 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1183 </svg> 1184 1185 1186 1187 </summary> 1188 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1189 <div class="menu-drawer__inner-submenu"> 1190 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1191 1192 1193 1194 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1195 1196 1197 1198 Testimonial | åæ¨è¦ 1199 </button> 1200 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1201 1202 1203 1204 <li> 1205 <a href="/collections/sandyæç¨" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1206 Sandyæç¨ 1207 </a> 1208 </li> 1209 1210 1211 1212 1213 <li> 1214 <a href="/pages/ç±é話é¡" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1215 ç±éè©±é¡ 1216 </a> 1217 </li> 1218 1219 1220 1221 1222 <li> 1223 <a href="/blogs/recommend-忍è¦" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1224 好è©å¿å¾ 1225 </a> 1226 </li> 1227 1228 1229 1230 1231 <li> 1232 <a href="/pages/media-ååªé«" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1233 åªé«æ¨è¦ 1234 </a> 1235 </li> 1236 1237 1238 1239 1240 <li> 1241 <a href="/pages/çç« èªè" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1242 çç« èªè 1243 </a> 1244 </li> 1245 1246 1247 1248 </ul> 1249 </div> 1250 </div> 1251 </details> 1252 </li> 1253 1254 1255 1256 1257 1258 <li> 1259 <details> 1260 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1261 <a href="/pages/conceptï½åç念" class="link--text list-menu__item menu-drawer__menu-item"> 1262 Conceptï½åç念 1263 </a> 1264 1265 1266 1267 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1268 1269 1270 1271 1272 1273 1274 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1275 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1276 </svg> 1277 1278 1279 1280 </summary> 1281 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1282 <div class="menu-drawer__inner-submenu"> 1283 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1284 1285 1286 1287 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1288 1289 1290 1291 Conceptï½åç念 1292 </button> 1293 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1294 1295 1296 1297 <li> 1298 <a href="/pages/story" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1299 åçæ äº 1300 </a> 1301 </li> 1302 1303 1304 1305 1306 <li> 1307 <a href="/pages/å質檢é©" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1308 å質檢測 1309 </a> 1310 </li> 1311 1312 1313 1314 </ul> 1315 </div> 1316 </div> 1317 </details> 1318 </li> 1319 1320 1321 1322 1323 <li> 1324 <a href="/blogs/blog" class="menu-drawer__menu-item list-menu__item link link--text focus-inset"> 1325 Talk | åèè 1326 </a> 1327 </li> 1328 1329 1330 1331 1332 1333 <li> 1334 <details> 1335 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1336 <a href="/pages/membershipï½åæå¡" class="link--text list-menu__item menu-drawer__menu-item"> 1337 Membershipï½åæå¡ 1338 </a> 1339 1340 1341 1342 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1343 1344 1345 1346 1347 1348 1349 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1350 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1351 </svg> 1352 1353 1354 1355 </summary> 1356 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1357 <div class="menu-drawer__inner-submenu"> 1358 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1359 1360 1361 1362 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1363 1364 1365 1366 Membershipï½åæå¡ 1367 </button> 1368 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1369 1370 1371 1372 <li> 1373 <a href="/pages/æå¡å¶åº¦" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1374 æå¡å¶åº¦ 1375 </a> 1376 </li> 1377 1378 1379 1380 </ul> 1381 </div> 1382 </div> 1383 </details> 1384 </li> 1385 1386 1387 1388 1389 1390 <li> 1391 <details> 1392 <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags"> 1393 <a href="/collections/featured-brands-åä½åç" class="link--text list-menu__item menu-drawer__menu-item"> 1394 Featured Brands | ç²¾é¸åç 1395 </a> 1396 1397 1398 1399 <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1400 1401 1402 1403 1404 1405 1406 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1407 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1408 </svg> 1409 1410 1411 1412 </summary> 1413 <div class="menu-drawer__submenu motion-reduce" tabindex="-1"> 1414 <div class="menu-drawer__inner-submenu"> 1415 <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true"> 1416 1417 1418 1419 <svg class="icon icon-arrow " data-name="Layer
1419 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg> 1420 1421 1422 1423 Featured Brands | ç²¾é¸åç 1424 </button> 1425 <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1"> 1426 1427 1428 1429 <li> 1430 <a href="/collections/çµååªæ -1" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1431 çµååªæ 1432 </a> 1433 </li> 1434 1435 1436 1437 1438 <li> 1439 <a href="/collections/峿è¯å" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1440 峿è¯å 1441 </a> 1442 </li> 1443 1444 1445 1446 1447 <li> 1448 <a href="/collections/å¾®çè¯å" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1449 å¾®çè¯å 1450 </a> 1451 </li> 1452 1453 1454 1455 1456 <li> 1457 <a href="/collections/shine-blanc-åçä»ç´¹" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1458 SHINE BLANC | éå天ç¶å£è è·ç 1459 </a> 1460 </li> 1461 1462 1463 1464 1465 <li> 1466 <a href="/collections/noosa-basics" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1467 NOOSA BASICSï½æ¾³æ´²å¤©ç¶é«é¦ 1468 </a> 1469 </li> 1470 1471 1472 1473 1474 <li> 1475 <a href="/collections/my-mag-essentials" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1476 My Mag Essentialsï½æ¾³æ´²èå¿å¥½ç éä¹³é 1477 </a> 1478 </li> 1479 1480 1481 1482 1483 <li> 1484 <a href="/collections/hetkinenè¬è森æé¦æ°" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1485 Hetkinenï½è¬è森æé¦æ° 1486 </a> 1487 </li> 1488 1489 1490 1491 1492 <li> 1493 <a href="/collections/to-fromï½è¥¿ççè¶£å³è ç" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1494 to:fromï½è¥¿ççè¶£å³è ç 1495 </a> 1496 </li> 1497 1498 1499 1500 1501 <li> 1502 <a href="/collections/kai-miness" class="menu-drawer__menu-item link link--text list-menu__item focus-inset"> 1503 KAI minessï½æ¥æ¬äººæ°£ç¾é«å 1504 </a> 1505 </li> 1506 1507 1508 1509 </ul> 1510 </div> 1511 </div> 1512 </details> 1513 </li> 1514 1515 1516 </ul> 1517 </nav> 1518 1519 <div class="menu-drawer__utility-links"> 1520 1521 1522 1523 1524 1525 1526 1527 1528 <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5"> 1529 1530 1531 1532 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19"> 1533 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.
15331-3.67-1.35-6.17-1.35z" fill="currentColor"></path> 1534 </svg> 1535 1536 1537 1538 1539 ç»å ¥ 1540 </a> 1541 1542 <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5"> 1543 1544 1545 1546 1547 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10"> 1548 <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path> 1549 </svg> 1550 1551 1552 1553 註å 1554 </a> 1555 1556 1557 1558 </div> 1559 </div> 1560 </div> 1561 </div> 1562 </details> 1563 </header-drawer> 1564 <details-modal class="header__search">
1565 <details> 1566 <summary class="header__icon header__icon--search header__icon--summary link link--text focus-inset modal__toggle" aria-haspopup="dialog" aria-label="æå°"> 1567 <span> 1568 <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 1569 <use href="#icon-search"> 1570 </svg> 1571 <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 1572 <use href="#icon-close"> 1573 </svg> 1574 </span> 1575 </summary> 1576 <div class="search-modal modal__content" role="dialog" aria-modal="true" aria-label="æå°"> 1577 <div class="modal-overlay"></div> 1578 <div class="search-modal__content" tabindex="-1"> 1579 <form action="/search" method="get" role="search" class="search search-modal__form"> 1580 <div class="field"> 1581 <input class="search__input field__input" 1582 id="Search-In-Modal" 1583 type="search" 1584 name="q" 1585 value="" 1586 placeholder="æå°" 1587 autocomplete="off" 1588 > 1589 <label class="field__label" for="Search-In-Modal">æå°</label> 1590 <div class="dropdown" id="searchDropdown"></div> 1591 <input type="hidden" name="search_history" class="hidden_search_history"> 1592 <input type="hidden" name="options[prefix]" value="last"> 1593 <button class="search__button field__button" aria-label="æå°"> 1594 <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 1595 <use href="#icon-search"> 1596 </svg> 1597 </button> 1598 </div> 1599 </form> 1600 <button type="button" class="search-modal__close-button modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 1601 <svg class="icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 1602 <use href="#icon-close"> 1603 </svg> 1604 </button> 1605 </div> 1606 </div> 1607 </details> 1608</details-modal> 1609 </div> 1610 1611 1612 <a href="/" class="header__heading-link link link--text focus-inset" itemprop="url"> 1613 1614 <img src="https://cdn.store-assets.com/s/262348/f/14020287.png" class="header__heading-logo" alt="çå ¸Lip Intimate Careåæ·¨ç§å¯ä¿é¤ | 女æ§ç§å¯èä¿é¤ã»ç§å¯æ¸ æ½ã»å¤©ç¶ç§å¯è·çåç" loading="lazy" itemprop="logo"> 1615 </a> 1616 1617 <nav class="header__inline-menu"> 1618 <ul class="list-menu list-menu--inline" role="list"> 1619 1620 1621 1622 <li> 1623 <a href="/" class="header__menu-item header__menu-item list-menu__item link link--text focus-inset"> 1624 HOME 1625 </a> 1626 </li> 1627 1628 1629 1630 1631 1632 <li> 1633 <details-disclosure> 1634 <details> 1635 <summary class="header__menu-item list-menu__item link focus-inset"> 1636 <a href="/collections/ææ°æ´»å" >ææ°æ´»å</a> 1637 1638 1639 1640 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1641 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1642 </svg> 1643 1644 1645 1646 </summary> 1647 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1648 1649 1650 1651 1652 1653 <li> 1654 <a href="/collections/æ¬æåªæ " class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1655 æ¬æåªæ 1656 </a> 1657 </li> 1658 1659 1660 1661 1662 1663 <li> 1664 <a href="/pages/lip-intimate-care-8é±å¹´å®å®æ¨-æ´»å辦æ³" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1665 ã8é±å¹´å®å®æ¨ãæ´»åè¾¦æ³ 1666 </a> 1667 </li> 1668 1669 1670 1671 1672 1673 <li> 1674 <a href="/pages/9æé宿½çæ´»å" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1675 9æé宿½çæ´»å 1676 </a> 1677 </li> 1678 1679 1680 </ul> 1681 </details> 1682 </details-disclosure> 1683 </li> 1684 1685 1686 1687 1688 1689 <li> 1690 <details-disclosure> 1691 <details> 1692 <summary class="header__menu-item list-menu__item link focus-inset"> 1693 <a href="/collections/æ°åä¸å¸" >æ°åä¸å¸</a> 1694 1695 1696 1697 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1698 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1699 </svg> 1700 1701 1702 1703 </summary> 1704 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1705 1706 1707 1708 1709 1710 <li> 1711 <a href="/collections/å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1712 å¤å¨å¤·æç¶»é½¡ç§å¯è·çæ²¹ 1713 </a> 1714 </li> 1715 1716 1717 </ul> 1718 </details> 1719 </details-disclosure> 1720 </li> 1721 1722 1723 1724 1725 1726 <li> 1727 <details-disclosure> 1728 <details> 1729 <summary class="header__menu-item list-menu__item link focus-inset"> 1730 <a href="/collections/lip-intimate-care" >Shop | åè³¼ç©</a> 1731 1732 1733 1734 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1735 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1736 </svg> 1737 1738 1739 1740 </summary> 1741 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1742 1743 1744 1745 1746 1747 <li> 1748 <a href="/collections/çµååªæ " class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1749 çµååªæ 1750 </a> 1751 </li> 1752 1753 1754 1755 1756 1757 <li> 1758 <a href="/collections/æ¸ æ½ä¿é¤" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1759 æ¸ æ½ä¿é¤ 1760 </a> 1761 </li> 1762 1763 1764 1765 1766 1767 <li> 1768 <a href="/collections/餿¯ä¿é¤" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1769 餿¯ä¿é¤ 1770 </a> 1771 </li> 1772 1773 1774 1775 1776 1777 <li> 1778 <a href="/collections/ç§å¯æ½¤æ»" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1779 ç§å¯æ½¤æ» 1780 </a> 1781 </li> 1782 1783 1784 1785 1786 1787 <li> 1788 <a href="/collections/æ´å¹´æä¿é¤" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1789 綻齡ä¿é¤ 1790 </a> 1791 </li> 1792 1793 1794 1795 1796 1797 <li> 1798 <a href="/collections/åæä¿é¤" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1799 åæä¿é¤ 1800 </a> 1801 </li> 1802 1803 1804 1805 1806 1807 <li> 1808 <a href="/collections/ç·å£«æ¸ æ½" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1809 ç·å£«æ¸ æ½ 1810 </a> 1811 </li> 1812 1813 1814 1815 1816 1817 <li> 1818 <a href="/collections/å£è æ¸ æ½" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1819 å£è æ¸ æ½ 1820 </a> 1821 </li> 1822 1823 1824 1825 1826 1827 <li> 1828 <a href="/collections/天ç¶é«é¦" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1829 天ç¶é«é¦ 1830 </a> 1831 </li> 1832 1833 1834 1835 1836 1837 <li> 1838 <a href="/collections/èå¿å¥½ç " class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1839 èå¿å¥½ç 1840 </a> 1841 </li> 1842 1843 1844 1845 1846 1847 <li> 1848 <a href="/pages/é¸è³¼æå" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1849 é¸è³¼æå 1850 </a> 1851 </li> 1852 1853 1854 </ul> 1855 </details> 1856 </details-disclosure> 1857 </li> 1858 1859 1860 1861 1862 1863 <li> 1864 <details-disclosure> 1865 <details> 1866 <summary class="header__menu-item list-menu__item link focus-inset"> 1867 <a href="/pages/testimonial-忍è¦" >Testimonial | 忍è¦</a> 1868 1869 1870 1871 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1872 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 1873 </svg> 1874 1875 1876 1877 </summary> 1878 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1879 1880 1881 1882 1883 1884 <li> 1885 <a href="/collections/sandyæç¨" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1886 Sandyæç¨ 1887 </a> 1888 </li> 1889 1890 1891 1892 1893 1894 <li> 1895 <a href="/pages/ç±é話é¡" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1896 ç±éè©±é¡ 1897 </a> 1898 </li> 1899 1900 1901 1902 1903 1904 <li> 1905 <a href="/blogs/recommend-忍è¦" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1906 好è©å¿å¾ 1907 </a> 1908 </li> 1909 1910 1911 1912 1913 1914 <li> 1915 <a href="/pages/media-ååªé«" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1916 åªé«æ¨è¦ 1917 </a> 1918 </li> 1919 1920 1921 1922 1923 1924 <li> 1925 <a href="/pages/çç« èªè" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1926 çç« èªè 1927 </a> 1928 </li> 1929 1930 1931 </ul> 1932 </details> 1933 </details-disclosure> 1934 </li> 1935 1936 1937 1938 1939 1940 <li> 1941 <details-disclosure> 1942 <details> 1943 <summary class="header__menu-item list-menu__item link focus-inset"> 1944 <a href="/pages/conceptï½åç念" >Conceptï½åç念</a> 1945 1946 1947 1948 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 1949 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"><
1949/path> 1950 </svg> 1951 1952 1953 1954 </summary> 1955 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 1956 1957 1958 1959 1960 1961 <li> 1962 <a href="/pages/story" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1963 åçæ äº 1964 </a> 1965 </li> 1966 1967 1968 1969 1970 1971 <li> 1972 <a href="/pages/å質檢é©" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 1973 å質檢測 1974 </a> 1975 </li> 1976 1977 1978 </ul> 1979 </details> 1980 </details-disclosure> 1981 </li> 1982 1983 1984 1985 1986 <li> 1987 <a href="/blogs/blog" class="header__menu-item header__menu-item list-menu__item link link--text focus-inset"> 1988 Talk | åèè 1989 </a> 1990 </li> 1991 1992 1993 1994 1995 1996 <li> 1997 <details-disclosure> 1998 <details> 1999 <summary class="header__menu-item list-menu__item link focus-inset"> 2000 <a href="/pages/membershipï½åæå¡" >Membershipï½åæå¡</a> 2001 2002 2003 2004 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 2005 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 2006 </svg> 2007 2008 2009 2010 </summary> 2011 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 2012 2013 2014 2015 2016 2017 <li> 2018 <a href="/pages/æå¡å¶åº¦" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2019 æå¡å¶åº¦ 2020 </a> 2021 </li> 2022 2023 2024 </ul> 2025 </details> 2026 </details-disclosure> 2027 </li> 2028 2029 2030 2031 2032 2033 <li> 2034 <details-disclosure> 2035 <details> 2036 <summary class="header__menu-item list-menu__item link focus-inset"> 2037 <a href="/collections/featured-brands-åä½åç" >Featured Brands | ç²¾é¸åç</a> 2038 2039 2040 2041 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6"> 2042 <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path> 2043 </svg> 2044 2045 2046 2047 </summary> 2048 <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1"> 2049 2050 2051 2052 2053 2054 <li> 2055 <a href="/collections/çµååªæ -1" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2056 çµååªæ 2057 </a> 2058 </li> 2059 2060 2061 2062 2063 2064 <li> 2065 <a href="/collections/峿è¯å" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2066 峿è¯å 2067 </a> 2068 </li> 2069 2070 2071 2072 2073 2074 <li> 2075 <a href="/collections/å¾®çè¯å" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2076 å¾®çè¯å 2077 </a> 2078 </li> 2079 2080 2081 2082 2083 2084 <li> 2085 <a href="/collections/shine-blanc-åçä»ç´¹" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2086 SHINE BLANC | éå天ç¶å£è è·ç 2087 </a> 2088 </li> 2089 2090 2091 2092 2093 2094 <li> 2095 <a href="/collections/noosa-basics" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2096 NOOSA BASICSï½æ¾³æ´²å¤©ç¶é«é¦ 2097 </a> 2098 </li> 2099 2100 2101 2102 2103 2104 <li> 2105 <a href="/collections/my-mag-essentials" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2106 My Mag Essentialsï½æ¾³æ´²èå¿å¥½ç éä¹³é 2107 </a> 2108 </li> 2109 2110 2111 2112 2113 2114 <li> 2115 <a href="/collections/hetkinenè¬è森æé¦æ°" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2116 Hetkinenï½è¬è森æé¦æ° 2117 </a> 2118 </li> 2119 2120 2121 2122 2123 2124 <li> 2125 <a href="/collections/to-fromï½è¥¿ççè¶£å³è ç" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2126 to:fromï½è¥¿ççè¶£å³è ç 2127 </a> 2128 </li> 2129 2130 2131 2132 2133 2134 <li> 2135 <a href="/collections/kai-miness" class="header__menu-item list-menu__item link link--text focus-inset caption-large"> 2136 KAI minessï½æ¥æ¬äººæ°£ç¾é«å 2137 </a> 2138 </li> 2139 2140 2141 </ul> 2142 </details> 2143 </details-disclosure> 2144 </li> 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 </ul> 2158 </nav> 2159 <div class="header__icons"> 2160 <div class="medium-hide small-hide"> 2161 <details-modal class="header__search"> 2162 <details> 2163 <summary class="header__icon header__icon--search header__icon--summary link link--text focus-inset modal__toggle" aria-haspopup="dialog" aria-label="æå°">
2164 <span> 2165 <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 2166 <use href="#icon-search"> 2167 </svg> 2168 <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 2169 <use href="#icon-close"> 2170 </svg> 2171 </span> 2172 </summary> 2173 <div class="search-modal modal__content" role="dialog" aria-modal="true" aria-label="æå°"> 2174 <div class="modal-overlay"></div> 2175 <div class="search-modal__content" tabindex="-1"> 2176 <form action="/search" method="get" role="search" class="search search-modal__form"> 2177 <div class="field"> 2178 <input class="search__input field__input" 2179 id="Search-In-Modal" 2180 type="search" 2181 name="q" 2182 value="" 2183 placeholder="æå°" 2184 autocomplete="off" 2185 > 2186 <label class="field__label" for="Search-In-Modal">æå°</label> 2187 <div class="dropdown" id="searchDropdown"></div> 2188 <input type="hidden" name="search_history" class="hidden_search_history"> 2189 <input type="hidden" name="options[prefix]" value="last"> 2190 <button class="search__button field__button" aria-label="æå°"> 2191 <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation"> 2192 <use href="#icon-search"> 2193 </svg> 2194 </button> 2195 </div> 2196 </form> 2197 <button type="button" class="search-modal__close-button modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 2198 <svg class="icon icon-close" aria-hidden="true" focusable="false" role="presentation"> 2199 <use href="#icon-close"> 2200 </svg> 2201 </button> 2202 </div> 2203 </div> 2204 </details> 2205</details-modal> 2206 </div> 2207 2208 2209 2210 <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide" style="position: relative;"> 2211 <a href="/account/login" class="header__icon link link--text focus-inset p-2"> 2212 2213 2214 2215 <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-account " fill="none" viewBox="0 0 18 19"> 2216 <path fill-rule="evenodd" clip-rule="evenodd" d="M6 4.5a3 3 0 116 0 3 3 0 01-6 0zm3-4a4 4 0 100 8 4 4 0 000-8zm5.58 12.15c1.12.82 1.83 2.24 1.91 4.85H1.51c.08-2.6.79-4.03 1.9-4.85C4.66 11.75 6.5 11.5 9 11.5s4.35.26 5.58 1.15zM9 10.5c-2.5 0-4.65.24-6.17 1.35C1.27 12.98.5 14.93.5 18v.5h17V18c0-3.07-.77-5.02-2.33-6.15-1.52-1.1-3.67-1.35-6.17-1.35z" fill="currentColor"></path> 2217 </svg> 2218 2219 2220 2221 </a> 2222 2223 <!-- Referral Notification Popup for Desktop --> 2224 <div id="referralNotification" class="referral-notification" style="display: none;"> 2225 <button class="close-btn" onclick="dismissReferralNotification()">×</button> 2226 <div style="text-align: center; margin-bottom: 16px;"> 2227 <div style="width: 100px; height: 100px; margin: 0 auto;"> 2228 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg"> 2229 </div> 2230 </div> 2231 <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;"> 2232 æ¨ç好å鿍 åé¥éï¼ç«å³è¨»åé åã 2233 </p> 2234 <div style="text-align: center;"> 2235 <button class="btn" onclick="goToSignupPage()" style="width: 100%;"> 2236 註å 2237 </button> 2238 </div> 2239 </div> 2240 </div> 2241 2242 2243 2244 <a href="/cart" class="header__icon header__icon--cart link link--text focus-inset" id="cart-icon-bubble"> 2245 2246 2247 2248 <svg class="icon icon-cart-empty " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none"> 2249 <path d="m15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.78-11.61zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1 -9.5 0zm8.5 0h-7.5v.63a3.7
22495 3.75 0 1 0 7.5 0z" fill="currentColor" fill-rule="evenodd"></path> 2250 </svg> 2251 2252 2253 2254 <div class="cart-count-bubble hidden"> 2255 <span aria-hidden="true" class="js-content-cart-count">0</span> 2256 </div> 2257 </a> 2258 2259 2260 2261 <!-- Referral Notification Modal for Mobile --> 2262 <details-modal class="referral-modal" id="referralMobileModal"> 2263 <details> 2264 <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;"> 2265 </summary> 2266 <div class="modal-overlay referral-modal-overlay"></div> 2267 <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification"> 2268 <div class="referral-modal__content"> 2269 <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;"> 2270 × 2271 </button> 2272 2273 <div style="margin-bottom: 24px;"> 2274 <div style="width: 120px; height: 120px; margin: 0 auto 20px;"> 2275 <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;"> 2276 </div> 2277 </div> 2278 2279 <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;"> 2280 æ¨ç好å鿍 åé¥éï¼ç«å³è¨»åé åã 2281 </p> 2282 2283 <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%;"> 2284 註å 2285 </button> 2286 </div> 2287 </div> 2288 </details> 2289 </details-modal> 2290 2291 2292 </div> 2293 </header> 2294 </sticky-header> 2295 2296<cart-notification> 2297 <div class="cart-notification-wrapper page-width color-background-1"> 2298 <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="å·²å å ¥è³¼ç©è»" role="dialog" tabindex="-1"> 2299 <div class="cart-notification__header"> 2300 <h2 class="cart-notification__heading caption-large"> 2301 2302 2303 <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none"> 2304 <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path> 2305 </svg> 2306 2307 2308 å·²å å ¥è³¼ç©è»</h2> 2309 <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close"> 2310 2311 2312 2313 <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg> 2314 2315 2316 2317 </button> 2318 </div> 2319 <div id="cart-notification-product" class="cart-notification-product"></div> 2320 <div class="cart-notification__links"> 2321 <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">æ¥çè³¼ç©è» (<span class="js-content-cart-count">0</span>)</a> 2322 <form action="/cart" method="post" id="cart-notification-form"> 2323 <input type="hidden" name="_token" value="MUtB8y4oemX0oNQCefI9BGkssEmJ5UtH627e4lgM"> 2324 <input type="hidden" name="current_currency" value=""> 2325 <button class="button button--primary button--full-width" name="checkout" value="true">çµå¸³</button> 2326 </form> 2327 <a href="/collections/all" class="link button-label">ç¹¼çºè³¼ç©</a> 2328 </div> 2329 </div> 2330 </div> 2331</cart-notification> 2332<style> 2333 .cart-notification { 2334 display: none; 2335 } 2336</style>
2337<script> 2338document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{ 2339 if(event.submitter) event.submitter.classList.add('loading'); 2340}) 2341 2342</script>
2342 2343 2344</div> 2345 2346
2347<script> 2348 2349 class StickyHeader extends HTMLElement { 2350 constructor() { 2351 super(); 2352 } 2353 2354 connectedCallback() { 2355 this.header = document.getElementById('easystore-section-header'); 2356 this.headerBounds = {}; 2357 this.currentScrollTop = 0; 2358 this.preventReveal = false; 2359 2360 this.onScrollHandler = this.onScroll.bind(this); 2361 this.hideHeaderOnScrollUp = () => this.preventReveal = true; 2362 2363 this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp); 2364 window.addEventListener('scroll', this.onScrollHandler, false); 2365 2366 this.createObserver(); 2367 } 2368 2369 disconnectedCallback() { 2370 this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp); 2371 window.removeEventListener('scroll', this.onScrollHandler); 2372 } 2373 2374 createObserver() { 2375 let observer = new IntersectionObserver((entries, observer) => { 2376 this.headerBounds = entries[0].intersectionRect; 2377 observer.disconnect(); 2378 }); 2379 2380 observer.observe(this.header); 2381 } 2382 2383 onScroll() { 2384 const scrollTop = window.pageYOffset || document.documentElement.scrollTop; 2385 2386 if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) { 2387 requestAnimationFrame(this.sticky.bind(this)); 2388 } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) { 2389 if (!this.preventReveal) { 2390 requestAnimationFrame(this.reveal.bind(this)); 2391 } else { 2392 window.clearTimeout(this.isScrolling); 2393 2394 this.isScrolling = setTimeout(() => { 2395 this.preventReveal = false; 2396 }, 66); 2397 2398 requestAnimationFrame(this.sticky.bind(this)); 2399 } 2400 } else if (scrollTop <= this.headerBounds.top) { 2401 requestAnimationFrame(this.reset.bind(this)); 2402 } 2403 2404 2405 this.currentScrollTop = scrollTop; 2406 } 2407 2408 sticky() { 2409 this.header.classList.add('easystore-section-header-sticky'); 2410 this.closeMenuDisclosure(); 2411 this.closeSearchModal(); 2412 } 2413 2414 reveal() { 2415 this.header.classList.add('easystore-section-header-sticky'); 2416 } 2417 2418 reset() { 2419 this.header.classList.remove('easystore-section-header-sticky', 'animate'); 2420 } 2421 2422 closeMenuDisclosure() { 2423 this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure'); 2424 this.disclosures.forEach(disclosure => disclosure.close()); 2425 } 2426 2427 closeSearchModal() { 2428 this.searchModal = this.searchModal || this.header.querySelector('details-modal'); 2429 this.searchModal.close(false); 2430 } 2431 } 2432 2433 customElements.define('sticky-header', StickyHeader); 2434 2435 2436 class DetailsDisclosure extends HTMLElement{ 2437 constructor() { 2438 super(); 2439 this.mainDetailsToggle = this.querySelector('details'); 2440 // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this)); 2441 this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this)); 2442 this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this)); 2443 } 2444 2445 onFocusOut() { 2446 setTimeout(() => { 2447 if (!this.contains(document.activeElement)) this.close(); 2448 }) 2449 } 2450 2451 open() { 2452 this.mainDetailsToggle.setAttribute('open',1) 2453 } 2454 2455 close() { 2456 this.mainDetailsToggle.removeAttribute('open') 2457 } 2458 } 2459 2460 customElements.define('details-disclosure', DetailsDisclosure); 2461 2462 function clearAll() { 2463 localStorage.removeItem('searchHistory'); 2464 2465 var customer = ""; 2466 if(customer) { 2467 // Your logic to clear all data or call an endpoint 2468 fetch('/account/search_histories', { 2469 method: 'DELETE', 2470 headers: { 2471 "Content-Type": "application/json", 2472 "X-Requested-With": "XMLHttpRequest" 2473 }, 2474 body: JSON.stringify({ 2475 _token: "MUtB8y4oemX0oNQCefI9BGkssEmJ5UtH627e4lgM" 2476 }), 2477 }) 2478 .then(response => response.json()) 2479 } 2480 } 2481 // End - delete search history from local storage 2482 2483 // search history dropdown 2484 var searchInputs = document.querySelectorAll('.search__input'); 2485 2486 if(searchInputs.length > 0) { 2487
2488 searchInputs.forEach((searchInput)=> { 2489 2490 searchInput.addEventListener('focus', function() { 2491 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2492 searchDropdown.innerHTML = ''; // Clear existing items 2493 2494 // retrieve data from local storage 2495 var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || []; 2496 2497 // Convert JSON to string 2498 var search_history_json = JSON.stringify(searchHistoryData); 2499 2500 // Set the value of the hidden input 2501 searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json; 2502 2503 // create dropdown items 2504 var clearAllItem = document.createElement('div'); 2505 clearAllItem.className = 'dropdown-item clear-all'; 2506 clearAllItem.textContent = 'Clear'; 2507 clearAllItem.addEventListener('click', function() { 2508 clearAll(); 2509 searchDropdown.style.display = 'none'; 2510 searchInput.classList.remove('is-focus'); 2511 }); 2512 searchDropdown.appendChild(clearAllItem); 2513 2514 // create dropdown items 2515 searchHistoryData.forEach(function(item) { 2516 var dropdownItem = document.createElement('div'); 2517 dropdownItem.className = 'dropdown-item'; 2518 dropdownItem.textContent = item.term; 2519 dropdownItem.addEventListener('click', function() { 2520 searchInput.value = item.term; 2521 searchInput.closest('form').submit(); 2522 searchDropdown.style.display = 'none'; 2523 }); 2524 searchDropdown.appendChild(dropdownItem); 2525 }); 2526 2527 if(searchHistoryData.length > 0){ 2528 // display the dropdown 2529 searchInput.classList.add('is-focus'); 2530 document.body.classList.add('search-input-focus'); 2531 searchDropdown.style.display = 'block'; 2532 } 2533 }); 2534 2535 searchInput.addEventListener("focusout", (event) => { 2536 var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown'); 2537 searchInput.classList.remove('is-focus'); 2538 searchDropdown.classList.add('transparent'); 2539 setTimeout(()=>{ 2540 searchDropdown.style.display = 'none'; 2541 searchDropdown.classList.remove('transparent'); 2542 document.body.classList.remove('search-input-focus'); 2543 }, 400); 2544 }); 2545 }) 2546 } 2547 // End - search history dropdown 2548 2549 // referral notification popup 2550 const referralMessageTemplate = 'æ¨ç好å鿍 __CURRENCY_CODE__ __CREDIT_AMOUNT__ åé¥éï¼ç«å³è¨»åé åã'; 2551 const shopCurrency = 'NT$'; 2552 2553 function getCookie(name) { 2554 const value = `; ${document.cookie}`; 2555 const parts = value.split(`; ${name}=`); 2556 if (parts.length === 2) return parts.pop().split(';').shift(); 2557 return null; 2558 } 2559 2560 function removeCookie(name) { 2561 document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`; 2562 } 2563 2564 function showReferralNotification() { 2565 const referralCode = getCookie('customer_referral_code'); 2566 2567 2568 const customerReferralCode = null; 2569 2570 2571 const activeReferralCode = referralCode || customerReferralCode; 2572 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2573 2574 if (referralData.timestamp && referralData.expirationDays) { 2575 const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000); 2576 if (Date.now() > expirationTime) { 2577 localStorage.removeItem('referral_notification_data'); 2578 return; 2579 } 2580 } 2581 2582 if (referralData.dismissed) return; 2583 2584 if (activeReferralCode) { 2585 if (referralData.creditAmount) { 2586 displayReferralNotification(referralData.creditAmount); 2587 } else { 2588 fetchReferralCampaignData(activeReferralCode); 2589 } 2590 } 2591 } 2592 2593 function fetchReferralCampaignData(referralCode) { 2594 fetch(`/customer/referral_program/campaigns/${referralCode}`) 2595 .then(response => { 2596 if (!response.ok) { 2597 throw new Error('Network response was not ok'); 2598 } 2599 return response.json(); 2600 }) 2601 .then(data => { 2602 let refereeCreditAmount = null; 2603 if (data.data.campaign && data.data.campaign.referral_rules) { 2604 const refereeRule = data.data.campaign.referral_rules.find(rule => 2605 rule.target_type === 'referee' && 2606 rule.event_name === 'customer/create' && 2607 rule.entitlement && 2608 rule.entitlement.type === 'credit' 2609 ); 2610 2611 if (refereeRule) { 2612 refereeCreditAmount = refereeRule.entitlement.amount; 2613 } 2614 } 2615 2616 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2617 referralData.creditAmount = refereeCreditAmount; 2618 referralData.dismissed = referralData.dismissed || false; 2619 referralData.timestamp = Date.now(); 2620 referralData.expirationDays = 3; 2621 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2622 2623 displayReferralNotification(refereeCreditAmount); 2624 }) 2625 .catch(error => { 2626 removeCookie('customer_referral_code'); 2627 }); 2628 } 2629 2630 function displayReferralNotification(creditAmount = null) { 2631 const isMobile = innerWidth <= 749; 2632 2633 if (isMobile) { 2634 const mobileModal = document.querySelector('#referralMobileModal details'); 2635 const mobileMessageElement = document.getElementById('referralSignupMessageMobile'); 2636 2637 if (mobileModal && mobileMessageElement) { 2638 if (creditAmount) {
2639 const finalMessage = referralMessageTemplate 2640 .replace('__CREDIT_AMOUNT__', creditAmount) 2641 .replace('__CURRENCY_CODE__', shopCurrency); 2642 2643 mobileMessageElement.textContent = finalMessage; 2644 } 2645 2646 mobileModal.setAttribute('open', ''); 2647 } 2648 } else { 2649 const notification = document.getElementById('referralNotification'); 2650 2651 if (notification) { 2652 if (creditAmount) { 2653 const messageElement = document.getElementById('referralSignupMessage'); 2654 if (messageElement) { 2655 const finalMessage = referralMessageTemplate 2656 .replace('__CREDIT_AMOUNT__', creditAmount) 2657 .replace('__CURRENCY_CODE__', shopCurrency); 2658 2659 messageElement.textContent = finalMessage; 2660 } 2661 } 2662 2663 notification.style.display = 'block'; 2664 } 2665 } 2666 } 2667 2668 showReferralNotification(); 2669 2670 addEventListener('beforeunload', function() { 2671 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2672 2673 if (referralData.creditAmount !== undefined) { 2674 referralData.creditAmount = null; 2675 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2676 } 2677 }); 2678 2679 function closeReferralNotification() { 2680 const notification = document.getElementById('referralNotification'); 2681 if (notification) { 2682 notification.style.display = 'none'; 2683 } 2684 } 2685 2686 function dismissReferralNotification() { 2687 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2688 2689 referralData.dismissed = true; 2690 referralData.timestamp = referralData.timestamp || Date.now(); 2691 referralData.expirationDays = referralData.expirationDays || 3; 2692 2693 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2694 2695 closeReferralNotification(); 2696 } 2697 2698 function goToSignupPage() { 2699 location.href = '/account/register'; 2700 dismissReferralNotification(); 2701 } 2702 2703 function closeMobileReferralModal() { 2704 const mobileModal = document.querySelector('#referralMobileModal details'); 2705 if (mobileModal) { 2706 mobileModal.removeAttribute('open'); 2707 } 2708 2709 const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {}; 2710 referralData.dismissed = true; 2711 referralData.timestamp = referralData.timestamp || Date.now(); 2712 referralData.expirationDays = referralData.expirationDays || 3; 2713 localStorage.setItem('referral_notification_data', JSON.stringify(referralData)); 2714 } 2715 2716 function goToSignupPageFromMobile() { 2717 location.href = '/account/register'; 2718 closeMobileReferralModal(); 2719 } 2720 // End - referral notification popup 2721</script>
2721 2722 2723 2724 <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
vendor: 81 bytes, lines 2724-2727
2724 2725 2726 2727<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=
27276LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF
vendor: 12 bytes, line 2727
2727"></script>
2728<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/customer.css?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 2729<style> 2730 main.main-content .field > label{ 2731 display: none; 2732 } 2733 .h3{ 2734 font-size: 18px; 2735 } 2736 .button--full-width{ 2737 width: 100%; 2738 } 2739 .tab-wrapper{ 2740 display: inline-flex; 2741 justify-content: center; 2742 align-items: center; 2743 margin: 10px auto 20px; 2744 background-color: #eaeaea; 2745 border-radius: 200px; 2746 padding: 5px; 2747 gap: 10px; 2748 } 2749 .tab-wrapper .tab-label { 2750 display: inline-block; 2751 min-width: 130px; 2752 padding: 8px 15px; 2753 border-radius: 100px; 2754 cursor: pointer; 2755 font-size: 17px; 2756 line-height: 1.1; 2757 user-select: none; 2758 margin: 0; 2759 color: #000; 2760 } 2761 #register-tos a { 2762 display: inline; 2763 } 2764 @media screen and (max-width: 400px){ 2765 .tab-wrapper .tab-label { 2766 min-width: 110px; 2767 } 2768 } 2769 .tab-wrapper input[type='radio']:checked + .tab-label { 2770 background-color: #fff; 2771 box-shadow: 2px 2px 25px -10px #333; 2772 } 2773 2774 @media screen and (min-width: 500px){ 2775 .large--five-twelfths{ 2776 min-width: 420px; 2777 } 2778 } 2779</style> 2780 2781 2782 2783 2784<div class="customer login section-width-control small-width large--five-twelfths text-center wrapper"> 2785 <div class="card"> 2786 <h1 id="login" tabindex="-1" class="mb-0"> 2787 æ¡è¿ 2788 </h1> 2789 <p class="h3 mt-0"> 2790 2791 註åæç»å ¥ä»¥ç¹¼çº 2792 2793 </p> 2794 <div> 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 <div class="tab-wrapper"> 2813 <div> 2814 <input type="radio" name="type" id="tab-register" class="hide hidden" checked> 2815 <label for="tab-register" class="tab-label"> 2816 註å帳è 2817 </label> 2818 </div> 2819 <div> 2820 <input type="radio" name="type" id="tab-login" class="hide hidden"> 2821 <label for="tab-login" class="tab-label"> 2822 ç»å ¥ 2823 </label> 2824 </div> 2825 </div> 2826 2827 2828 <form id="form-login" action="/account/auth" method="post" class="mt-2"> 2829 <input type="hidden" name="_token" value="MUtB8y4oemX0oNQCefI9BGkssEmJ5UtH627e4lgM"> 2830 <input type="hidden" name="location_id" value=""> 2831 <input type="hidden" name="staff_id" value=""> 2832 <input type="hidden" id="recaptchaResponse" name="g-recaptcha-response"> 2833 2834 2835 <div id="error-content"></div> 2836 2837 <div class="field"> 2838 <input 2839 type="text" 2840 name="customer[email_or_phone]" 2841 id="CustomerDetail" 2842 autocorrect="off" 2843 autocapitalize="off" 2844 placeholder="é»åéµä»¶å°å" 2845 required 2846 > 2847 <label for="CustomerDetail"> 2848 é»åéµä»¶å°å 2849 </label> 2850 </div> 2851 2852 <button 2853 type="submit" 2854 form="form-login" 2855 class="btn button--full-width g-recaptcha"> 2856 ç¹¼çº 2857 </button> 2858 2859 <div class="button-snippet"> 2860 2861<!-- Snippet:login/button: Facebook Login --> 2862 <style> 2863 #fb-login-btn.btn{ 2864 background-color: #fff; 2865 color: #000; 2866 padding: 0; 2867 overflow: hidden; 2868 display: flex; 2869 justify-content: center; 2870 align-items: center; 2871 width: 100%; 2872 margin: 15px auto; 2873 font-size: 14px; 2874 border: 1px solid currentColor; 2875 box-shadow: none; 2876 } 2877 #fb-login-btn.btn:hover{ 2878 background-color: #fff; 2879 } 2880 #fb-login-btn.btn svg{ 2881 width: 45px; 2882 vertical-align: middle; 2883 padding: 5px; 2884 } 2885 #fb-login-btn.btn .fb-login-text{ 2886 padding: 13px 75px 13px 30px; 2887 display: inline-block; 2888 width: calc(100% - 52px); 2889 } 2890 2891 #fb-login-btn.btn--loading{ 2892 color: transparent !important; 2893 pointer-events: none; 2894 background: #fff !important; 2895 border-color: #000; 2896 } 2897 2898 #fb-login-btn.btn--loading:after { 2899 animation: loading 500ms infinite linear; 2900 border: 0.3em solid rgba(0, 0, 0, 0.4); 2901 border-left: 0.3em solid rgb(0, 0, 0); 2902 border-radius: 100%; 2903 box-sizing: content-box; 2904 content: ''; 2905 display: block; 2906 height: 1em; 2907 position: absolute; 2908 width: 1em; 2909 } 2910 2911 @keyframes loading { 2912 0% { 2913 transform: rotate(0deg); 2914 } 2915 100% { 2916 transform: rotate(360deg); 2917 } 2918 } 2919 @media screen and (max-width: 500px) { 2920 #fb-login-btn.btn .fb-login-text{ 2921 padding: 13px 25px 13px 8px; 2922 font-size: 13px; 2923 } 2924 } 2925 </style> 2926 <button id="fb-login-btn" type="button" class="btn" onclick="fb_login()" style="background-color: #fff; color: #000; font-weight: normal;"> 2927 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 700 700"><g><path d="M650,350C650,184.32,515.68,50,350,50S50,184.32,50,350c0,140.69,96.86,258.74,227.53,291.17V441.68H215.66V350h61.87V310.5c0-102.11,46.2-149.44,146.4-149.44,19,0,51.81,3.72,65.22,7.45V251.6c-7.08-.74-19.38-1.12-34.65-1.12-49.2,0-68.2,18.64-68.2,67.08V350h98.1l-16.8,91.68H386.35V647.8C534.88,629.86,650,503.38,650,350Z" fill="#0866ff"/><path d="M467.5,441.68,484.4,350h-98V317.6c0-48.44,19-67.08,68.19-67.08,15.28,0,27.6.37,34.66,1.12V168.51c-13.42-3.73-46.21-7.45-65.22-7.45-100.25,0-146.4,47.33-146.4,149.44V350H2
292715.66v91.68h61.87V641.17a301.61,301.61,0,0,0,108.82,6.63V441.68Z" fill="#fff"/></g></svg> 2928 <span class="fb-login-text">以 Facebook 帳èç¹¼çº</span> 2929 </button> 2930 2931
2931<script> 2932 function fb_login(){ 2933 location.href = 'https://apps.easystore.co/facebook-login/run?domain='+window.location.protocol+'//'+window.location.hostname+'&shop=lipintimate.easy.co'; 2934 } 2935 document.querySelector('#fb-login-btn').addEventListener('click',()=>{ 2936 document.querySelector('#fb-login-btn').classList.add('btn--loading') 2937 }) 2938 </script>
2938 2939<!-- /Snippet --> 2940 2941 </div> 2942 2943 2944 2945 <div id="register-tos"> 2946 䏿¦é»æè¨»åï¼å³è¡¨ç¤ºä½ åæçå ¸Lip Intimate Careåæ·¨ç§å¯ä¿é¤ | 女æ§ç§å¯èä¿é¤ã»ç§å¯æ¸ æ½ã»å¤©ç¶ç§å¯è·çåçç <a target="_blank" href="/legal/æåèæ¢æ¬¾">æåæ¢æ¬¾èé±ç§æ¬æ¿ç</a>, <a target="_blank" href="/pages/å®ååéè¡ä»½æéå ¬å¸ï½çµ±ç·¨24838470">å®ååéè¡ä»½æéå ¬å¸ï½çµ±ç·¨24838470</a> å <a target="_blank" href="/legal/æ¡å叿¡åå幸ç¦è·¯206è3æ¨ï½03-3588278">æ¡å叿¡åå幸ç¦è·¯206è3æ¨ï½03-3016339</a>ã 2947 </div> 2948 2949 </form> 2950 </div> 2951 </div> 2952 2953</div> 2954 2955 2956
2957<script> 2958 const register_tab = document.querySelector('#tab-register'); 2959 const login_tab = document.querySelector('#tab-login'); 2960 const register_tos = document.querySelector('#register-tos'); 2961 const isRegistrationEnabled = "1"; 2962 2963 if (register_tab) { 2964 register_tab.addEventListener('click', function() { 2965 if (register_tos) { 2966 register_tos.style.display = 'block'; 2967 } 2968 }); 2969 } 2970 if (login_tab) { 2971 login_tab.addEventListener('click', function() { 2972 if (register_tos) { 2973 register_tos.style.display = 'none'; 2974 } 2975 }); 2976 } 2977 2978 const methodSwitchBtn = document.getElementById('phone-login-btn'); 2979 if (methodSwitchBtn) { 2980 methodSwitchBtn.onclick = function () { 2981 var type = (register_tab && register_tab.checked) ? 'register' : 'login'; 2982 window.location.href = '/account/login?method=phone&type=' + type; 2983 }; 2984 } 2985 2986 let lastPathSegment = window.location.pathname.split('/').filter(segment => segment.length > 0).pop(); 2987 2988 // Redirect to login if trying to access register when self registration is disabled 2989 if (!isRegistrationEnabled) { 2990 if (lastPathSegment === 'register') { 2991 window.location.href = '/account/login'; 2992 } else if (lastPathSegment === 'login' || lastPathSegment === 'auth') { 2993 if (register_tos) { 2994 register_tos.style.display = 'none'; 2995 } 2996 } 2997 } else { 2998 // Only proceed with tab logic if not redirecting 2999 if(lastPathSegment === 'login') { 3000 if (login_tab) { 3001 login_tab.checked = true; 3002 } 3003 if (register_tos) { 3004 register_tos.style.display = 'none'; 3005 } 3006 } else { 3007 if (register_tos) { 3008 register_tos.style.display = 'block'; 3009 } 3010 } 3011 } 3012 3013 const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; 3014 const phonePattern = /^(?:\+?\d{1,3}[\s-]?)?(?:\d{1,14}[\s-]?){1,5}$/; 3015 3016 let form = document.querySelector('#form-login'), 3017 input = document.querySelector('#CustomerDetail'), 3018 error_content = document.querySelector('#error-content'); 3019 3020 3021 // One attempt at a time: the reCAPTCHA wait below is async, so without 3022 // this a double-click starts two continuations and posts the form twice. 3023 var submitting = false; 3024 3025 form.addEventListener('submit', async function (event) { 3026 // preventDefault FIRST: a re-entrant submit must still be cancelled, or the 3027 // browser performs a native post with no captcha token. 3028 event.preventDefault(); 3029 if (submitting) return; 3030 3031 let input_value = input.value 3032 error_content.innerHTML = ''; 3033 if (!input_value.match(emailPattern) && !input_value.match(phonePattern)) { 3034 error_content.innerHTML = `<div class="errors note">Invalid Email or Phone</div>`; 3035 return false; 3036 } 3037 3038 submitting = true; 3039 document.querySelector('#form-login .btn').classList.add('btn--loading','loading'); 3040 3041 // reCAPTCHA is unreachable from some regions (google.com is blocked in 3042 // mainland China). Fail open the same way checkout and forgot-password do: 3043 // submit without a token rather than leave the button spinning forever. 3044 try { 3045 if (window.grecaptcha && typeof window.grecaptcha.enterprise === 'object') { 3046 // The loader defines a stub {ready} synchronously and fetches the real 3047 // implementation asynchronously, so execute() may not exist yet. 3048 // ready() queues until it does; the timeout stops a bundle that never 3049 // arrives from hanging the button. 3050 await new Promise(function (resolve) { 3051 setTimeout(resolve, 3000); 3052 try { grecaptcha.enterprise.ready(resolve); } catch (e) { resolve(); } 3053 }); 3054 3055 const token = await grecaptcha.enterprise.execute('6LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF', { action: 'LOGIN' }); 3056 document.getElementById('recaptchaResponse').value = token; 3057 } 3058 } catch (e) { /* fail open */ } 3059 3060 document.getElementById('form-login').submit(); 3061 }); 3062 3063 3064</script>
3064 3065 3066 3067 </main> 3068 3069
3069<script> 3070 const targetElement = document.querySelector( 3071 'div[id="slider-1782460654941"]' 3072 ); 3073 targetElement.insertAdjacentHTML( 3074 "beforeend", 3075 `<div class="embed-tagnology" style="max-width:1350px;margin:0 auto;" data-src="https://embed.tagnology.co/display?folderId=1xh7q37uabtm99kcpox" id="1xh7q37uabtm99kcpox" data-width="100%" data-frameborder="0" data-scrolling="no"></div>` 3076 ); 3077 </script>
3077 3078 3079 <style> 3080 .footer{ 3081 background-color: #FFD7C7; 3082 color: #333333; 3083 --color-foreground: 51,51,51; 3084 } 3085 .footer .link--text, 3086 .footer .list-menu__item--link, 3087 .footer .footer-block__details-content .list-menu__item--link{ 3088 color: #333333; 3089 } 3090 .footer-block__heading{ 3091 color: #333333; 3092 } 3093 .rounded{ 3094 border-radius: 10px; 3095 } 3096 .shopping-app-border{ 3097 border: 1px #ECECEC solid; 3098 margin-right: 3px; 3099 } 3100 .app-download-badge{ 3101 display: inline-block; 3102 margin-right: 3px; 3103 } 3104</style> 3105 3106<link rel="preload" href="https://store-themes.easystore.co/262348/themes/328977/assets/section-footer.css?t=1790820012" as="style" onload="this.onload=null;this.rel='stylesheet'"> 3107 3108<footer class="footer color-background-1"> 3109 <div class="footer__content-top page-width"> 3110 <div class="grid grid--1-col grid--4-col-tablet "> 3111 3112 3113 3114 <div class="grid__item"> 3115 3116 <a href="https://www.lipintimatecare.tw/legal/%E5%93%81%E8%B3%AA%E6%AA%A2%E9%A9%97"> 3117 <img 3118 src="https://cdn.store-assets.com/s/262348/f/14025061.png" 3119 style="max-width: min(100%, 250px);" 3120 loading="lazy" 3121 > 3122 </a> 3123 3124 </div> 3125 3126 3127 3128 <div class="grid__item"> 3129 3130 <h2 class="footer-block__heading">éæ³¨æå</h2> 3131 <ul class="footer__list-social list-unstyled list-social footer-block__details-content" role="list"> 3132 3133 3134 <li class="list-social__item"> 3135 <a href="https://www.facebook.com/lipintimatecaretw" class="link link--text list-social__link"> 3136 3137 3138 3139 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook " 3140 viewBox="0 0 18 18"> 3141 <path fill="currentColor" 3142 d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z"> 3143 </path> 3144 </svg> 3145 3146 3147 3148 </a> 3149 </li> 3150 3151 3152 <li class="list-social__item"> 3153 <a href="https://www.instagram.com/lipintimatecaretw/" class="link link--text list-social__link"> 3154 3155 3156 3157 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram " 3158 viewBox="0 0 18 18"> 3159 <path fill="currentColor" 3160 d="M8.77 1.58c2.34 0 2.62.01 3.54.05.86.04 1.32.18 1.63.3.41.17.7.35 1.01.66.3.3.5.6.65 1 .12.32.27.78.3 1.64.05.92.06 1.2.06 3.54s-.01 2.62-.05 3.54a4.79 4.79 0 01-.3 1.63c-.17.41-.35.7-.66 1.01-.3.3-.6.5-1.01.66-.31.12-.77.26-1.63.3-.92.04-1.2.05-3.54.05s-2.62 0-3.55-.05a4.79 4.79 0 01-1.62-.3c-.42-.16-.7-.35-1.01-.66-.31-.3-.5-.6-.66-1a4.87 4.87 0 01-.3-1.64c-.04-.92-.05-1.2-.05-3.54s0-2.62.05-3.54c.04-.86.18-1.32.3-1.63.16-.41.35-.7.66-1.01.3-.3.6-.5 1-.65.32-.12.78-.27 1.63-.3.93-.05 1.2-.06 3.55-.06zm0-1.58C6.39 0 6.09.01 5.15.05c-.93.04-1.57.2-2.13.4-.57.23-1.06.54-1.55 1.02C1 1.96.7 2.45.46 3.02c-.22.56-.37 1.2-.4 2.13C0 6.1 0 6.4 0 8.77s.01 2.68.05 3.61c.04.94.2 1.57.4 2.13.23.58.54 1.07 1.02 1.56.49.48.98.78 1.55 1.01.56.22 1.2.37 2.13.4.94.05 1.24.06 3.62.06 2.39 0 2.68-.01 3.62-.05.93-.04 1.57-.2 2.13-.41a4.27 4.27 0 001.55-1.01c.49-.49.79-.98 1.01-1.56.22-.55.37-1.19.41-2.13.04-.93.05-1.23.05-3.61 0-2.39 0-2.68-.05-3.62a6.47 6.47 0 00-.4-2.13 4.27 4.27 0 00-1.02-1.55A4.35 4.35 0 0014.52.46a6.43 6.43 0 00-2.13-.41A69 69 0 008.77 0z"> 3161 </path> 3162 <path fill="currentColor" 3163 d="M8.8 4a4.5 4.5 0 100 9 4.5 4.5 0 000-9zm0 7.43a2.92 2.92 0 110-5.85 2.92 2.92 0 010 5.85zM13.43 5a1.05 1.05 0 100-2.1 1.05 1.05 0 000 2.1z"> 3164 </path> 3165 </svg> 3166 3167 3168 3169 </a> 3170 </li> 3171 3172 3173 3174 3175 <li class="list-social__item"> 3176 <a href="https://page.line.me/lipintimatecare_tw" class="link link--text list-social__link"> 3177 3178 3179 3180 <svg class="icon icon-line-footer " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M375,.5C168.17.5.5,168.17.5,375S168.17,749.5,375,749.5,749.5,581.83,749.5,375,581.83.5,375,.5ZM570.75,476.9
31801C518.48,537.06,401.6,610.33,375,621.53s-22.66-7.13-21.57-13.42c.63-3.76,3.55-21.33,3.55-21.33.83-6.36,1.66-16.23-.83-22.52-2.81-7-13.83-10.54-21.95-12.29C214.51,536.14,125.9,452.45,125.9,352.53,125.9,241,237.64,150.38,375,150.38s249.1,90.68,249.1,202.15h0C624.14,397.14,606.85,437.32,570.75,476.91Z"/><polygon points="324.38 298.65 324.38 298.65 324.38 298.65 324.38 298.65"/><path d="M324.38,298.65H306.91a4.86,4.86,0,0,0-4.86,4.85V412a4.86,4.86,0,0,0,4.86,4.85h17.47a4.86,4.86,0,0,0,4.85-4.85V303.5A4.86,4.86,0,0,0,324.38,298.65Z"/><path d="M444.67,298.65h-17.5a4.85,4.85,0,0,0-4.85,4.85V368l-49.73-67.17a4.57,4.57,0,0,0-.38-.49,2.76,2.76,0,0,0-.29-.3l-.09-.09a2.65,2.65,0,0,0-.26-.21l-.12-.1-.25-.18-.15-.08-.26-.14-.15-.08-.28-.12-.16,0-.28-.1-.18,0-.27-.06H351.08a4.85,4.85,0,0,0-4.85,4.84V412a4.85,4.85,0,0,0,4.85,4.85h17.48a4.85,4.85,0,0,0,4.85-4.85V347.54l49.81,67.26a5.15,5.15,0,0,0,1.22,1.2h.06l.29.18.14.07.24.12.23.1.15,0,.32.11H426a4.69,4.69,0,0,0,1.24.16h17.48a4.85,4.85,0,0,0,4.86-4.84h0V303.5A4.87,4.87,0,0,0,444.67,298.65Z"/><path d="M282.26,389.67h0l0,0H234.79V303.5a4.85,4.85,0,0,0-4.83-4.85H212.47a4.84,4.84,0,0,0-4.85,4.84h0V412a4.74,4.74,0,0,0,1.35,3.32.27.27,0,0,0,.07.08l.07.07a4.81,4.81,0,0,0,3.33,1.35h69.81a4.84,4.84,0,0,0,4.84-4.84h0V394.52A4.84,4.84,0,0,0,282.26,389.67Z"/><path d="M541.16,371.34a4.85,4.85,0,0,0,4.85-4.85h0V349a4.85,4.85,0,0,0-4.84-4.85H493.72V325.84l47.42,0A4.83,4.83,0,0,0,546,321V303.5a4.85,4.85,0,0,0-4.84-4.86H471.34A4.81,4.81,0,0,0,468,300l-.05.05-.08.09a4.82,4.82,0,0,0-1.34,3.33V412a4.77,4.77,0,0,0,1.35,3.33l.07.07.07.07a4.8,4.8,0,0,0,3.32,1.36h69.81A4.85,4.85,0,0,0,546,412h0V394.5a4.85,4.85,0,0,0-4.84-4.85H493.72V371.34Z"/></svg> 3181 3182 3183 3184 </a> 3185 </li> 3186 3187 3188 3189 <li class="list-social__item"> 3190 <a href="https://www.youtube.com/channel/UCxxzn4ZEhUaNqQFHR3IVM3w" class="link link--text list-social__link"> 3191 3192 3193 3194 <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-youtube " 3195 viewBox="0 0 100 70"> 3196 <path 3197 d="M98 11c2 7.7 2 24 2 24s0 16.3-2 24a12.5 12.5 0 01-9 9c-7.7 2-39 2-39 2s-31.3 0-39-2a12.5 12.5 0 01-9-9c-2-7.7-2-24-2-24s0-16.3 2-24c1.2-4.4 4.6-7.8 9-9 7.7-2 39-2 39-2s31.3 0 39 2c4.4 1.2 7.8 4.6 9 9zM40 50l26-15-26-15v30z" 3198 fill="currentColor"> 3199 </path> 3200 </svg> 3201 3202 3203 3204 </a> 3205 </li> 3206 3207 3208 </ul> 3209 3210 </div> 3211 3212 3213 3214 <div class="grid__item"> 3215 3216 <h2 class="footer-block__heading"> 3217 è¨è³¼åé¡ 3218 </h2> 3219 <ul class="footer-block__details-content list-unstyled"> 3220 3221 <li> 3222 <a href="https://www.lipintimatecare.tw/collections/lip-intimate-care" class="link link--text list-menu__item list-menu__item--link"> 3223 購買åå 3224 </a> 3225 </li> 3226 3227 <li> 3228 <a href="/pages/仿¬¾é é" class="link link--text list-menu__item list-menu__item--link"> 3229 仿¬¾æ¹å¼ 3230 </a> 3231 </li> 3232 3233 <li> 3234 <a href="/pages/é éæ¹å¼" class="link link--text list-menu__item list-menu__item--link"> 3235 é éæ¹å¼ 3236 </a> 3237 </li> 3238 3239 <li> 3240 <a href="/pages/éè²¨éæ¬¾" class="link link--text list-menu__item list-menu__item--link"> 3241 éè²¨éæ¬¾ 3242 </a> 3243 </li> 3244 3245 <li> 3246 <a href="/pages/è¯çµ¡æå" class="link link--text list-menu__item list-menu__item--link"> 3247 è¯çµ¡æå 3248 </a> 3249 </li> 3250 3251 <li> 3252 <a href="/pages/é·å®æé»" class="link link--text list-menu__item list-menu__item--link"> 3253 é·å®æé» 3254 </a> 3255 </li> 3256 3257 <li> 3258 <a href="/pages/intimate-care-faq" class="link link--text list-menu__item list-menu__item--link"> 3259 ç¢å常è¦FAQ 3260 </a> 3261 </li> 3262 3263 3264 </ul> 3265 3266 </div> 3267 3268 3269 3270 <div class="grid__item"> 3271 3272 <h2 class="footer-block__heading">æ¯ä»æ¹å¼</h2> 3273 <div class="footer-block__details-content footer__payment"> 3274 <ul class="list list-payment" role="list"> 3275 3276 <li class="list-payment__item"> 3277 3278 3279 3280 <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" 3281 width="38" height="24" aria-labelledby="pi-visa"> 3282 <path opacity=".07" 3283 d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path> 3284 <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"> 3285 </path> 3286 <path 3287 d="M28.3 10.1H28c-.4 1-.7 1.5-1 3h1.9c-.3-1.5-.3-2.2-.6-3zm2.9 5.9h-1.7c-.1 0-.1 0-.2-.1l-.2-.9-.1-.2h-2.4c-.1 0-.2
32870-.2.2l-.3.9c0 .1-.1.1-.1.1h-2.1l.2-.5L27 8.7c0-.5.3-.7.8-.7h1.5c.1 0 .2 0 .2.2l1.4 6.5c.1.4.2.7.2 1.1.1.1.1.1.1.2zm-13.4-.3l.4-1.8c.1 0 .2.1.2.1.7.3 1.4.5 2.1.4.2 0 .5-.1.7-.2.5-.2.5-.7.1-1.1-.2-.2-.5-.3-.8-.5-.4-.2-.8-.4-1.1-.7-1.2-1-.8-2.4-.1-3.1.6-.4.9-.8 1.7-.8 1.2 0 2.5 0 3.1.2h.1c-.1.6-.2 1.1-.4 1.7-.5-.2-1-.4-1.5-.4-.3 0-.6 0-.9.1-.2 0-.3.1-.4.2-.2.2-.2.5 0 .7l.5.4c.4.2.8.4 1.1.6.5.3 1 .8 1.1 1.4.2.9-.1 1.7-.9 2.3-.5.4-.7.6-1.4.6-1.4 0-2.5.1-3.4-.2-.1.2-.1.2-.2.1zm-3.5.3c.1-.7.1-.7.2-1 .5-2.2 1-4.5 1.4-6.7.1-.2.1-.3.3-.3H18c-.2 1.2-.4 2.1-.7 3.2-.3 1.5-.6 3-1 4.5 0 .2-.1.2-.3.2M5 8.2c0-.1.2-.2.3-.2h3.4c.5 0 .9.3 1 .8l.9 4.4c0 .1 0 .1.1.2 0-.1.1-.1.1-.1l2.1-5.1c-.1-.1 0-.2.1-.2h2.1c0 .1 0 .1-.1.2l-3.1 7.3c-.1.2-.1.3-.2.4-.1.1-.3 0-.5 0H9.7c-.1 0-.2 0-.2-.2L7.9 9.5c-.2-.2-.5-.5-.9-.6-.6-.3-1.7-.5-1.9-.5L5 8.2z" 3288 fill="#142688"></path> 3289 </svg> 3290 3291 3292 3293 </li> 3294 3295 3296 <li class="list-payment__item"> 3297 3298 3299 3300 <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" role="img" 3301 width="38" height="24" aria-labelledby="pi-master"> 3302 <path opacity=".07" 3303 d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path> 3304 <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"> 3305 </path> 3306 <circle fill="#EB001B" cx="15" cy="12" r="7"></circle> 3307 <circle fill="#F79E1B" cx="23" cy="12" r="7"></circle> 3308 <path fill="#FF5F00" 3309 d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"></path> 3310 </svg> 3311 3312 3313 3314 </li> 3315 3316 3317 3318 3319 3320 3321 3322 <li class="list-payment__item"> 3323 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_linepay.svg" alt="payment_linepay" loading="lazy" width="85px"> 3324 </li> 3325 3326 <li class="list-payment__item"> 3327 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_sinopac.svg" alt="payment_sinopac" loading="lazy" width="85px"> 3328 </li> 3329 3330 <li class="list-payment__item"> 3331 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_paypal.svg" alt="payment_paypal" loading="lazy" width="85px"> 3332 </li> 3333 3334 <li class="list-payment__item"> 3335 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_jkopay.svg" alt="payment_jkopay" loading="lazy" width="85px"> 3336 </li> 3337 3338 <li class="list-payment__item"> 3339 <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_aftee.svg" alt="payment_aftee" loading="lazy" width="85px"> 3340 </li> 3341 3342 3343 </div> 3344 <br> 3345 3346 </div> 3347 3348 </div> 3349 </div> 3350 <div class="footer__content-bottom"> 3351 <div class="footer__content-bottom-wrapper page-width"> 3352 <div class="footer__column footer__column--info"> 3353 3354 3355 3356 3357 3358 <div class="footer__copyright caption"> 3359 <div class="copyright__content">çæ¬ææ Â© 2019 çå ¸Lip Intimate Careåæ·¨ç§å¯ä¿é¤</div> 3360 </div> 3361 3362 <div class="footer__copyright caption"> 3363 3364 <div> 3365 3366 3367 3368 <a href="/legal/æåèæ¢æ¬¾">æåæ¢æ¬¾èé±ç§æ¬æ¿ç</a> 3369 3370 3371 3372 3373 | <a href="/pages/å®ååéè¡ä»½æéå ¬å¸ï½çµ±ç·¨24838470">å®ååéè¡ä»½æéå ¬å¸ï½çµ±ç·¨24838470</a> 3374 3375 3376 3377 3378 | <a href="/legal/æ¡å叿¡åå幸ç¦è·¯206è3æ¨ï½03-3588278">æ¡å叿¡åå幸ç¦è·¯206è3æ¨ï½03-3016339</a> 3379 3380 3381 3382 </div> 3383 3384 </div> 3385 3386 </div> 3387 </div> 3388 </div> 3389</footer> 3390 3391 3392 3393 3394 3395 3396
3396<script> 3397 EasyStore.Currencies.init([{"name":"New Taiwan Dollar","code":"TWD","rate":"1.0","format_prefix":"NT$","format_suffix":null,"format_decimals":0,"thousand_separator":",","is_primary":true}], 1) 3398</script>
3398 3399 3400 3401 3402
3402<script> 3403 let page_template = 'customers'; 3404 3405 if(document.querySelector('.currency-picker')) { 3406 EasyStore.Currencies.change(document.querySelector('.currency-picker').value) 3407 EasyStore.Currencies.convertAll() 3408 } 3409 3410 document.querySelectorAll('.currency-picker').forEach((el)=>{ 3411 el.addEventListener('change',(event)=>{ 3412 EasyStore.Currencies.change(event.target.value) 3413 3414 3415 if (page_template == 'cart') { 3416 const params = new URLSearchParams(window.location.search); 3417 params.set('delete_cache', 1); 3418 window.location.search = params; 3419 } else { 3420 window.location.reload(); 3421 } 3422 3423 return 3424 3425 3426 document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{ 3427 el.value = event.target.value 3428 }) 3429 3430 if(page_template == 'cart') location.reload(); 3431 }) 3432 }) 3433 </script>
3433 3434 3435 3436 3437 3438
3438<script> 3439 3440 window.variantStrings = { 3441 addToCart: `å å ¥è³¼ç©è»`, 3442 soldOut: `<span style='font-size:14px;'>å®å®</span>`, 3443 unavailable: `æ«ç¡ä¾æ`, 3444 } 3445 3446 window.accessibilityStrings = { 3447 shareSuccess: `éæ¥å·²å¾©è£½å°åªè²¼æ¿`, 3448 } 3449 </script>
3449 3450 3451 3452 3453 3454<!-- Snippet:global/body_end: Product Label --> 3455<link href='https://apps.easystore.co/assets/css/product-label/main.css?v2.3' rel='stylesheet' type='text/css' media='screen' />
3455<script src='https://apps.easystore.co/product-labels/productlabelv2.js?shop=lipintimate.easy.co' type='text/javascript'></script>
3455 3456<!-- /Snippet --> 3457 3458<!-- Snippet:global/body_end: Product Description Tabs --> 3459<style> 3460 .product-description-tabs{ 3461 color: #000000; 3462 } 3463 .prod-desc-tab-container { 3464 padding: 15px; 3465 margin-right: auto; 3466 margin-left: auto; 3467 background-color: #ffffff; 3468 } 3469 /* Style the list */ 3470 .prod-desc-tab { 3471 list-style-type: none; 3472 margin: 0; 3473 padding: 0; 3474 border-bottom: solid 1px #ddd; 3475 /*overflow: hidden; 3476 border: 1px solid #e6e6e6; 3477 background-color: #fefefe; 3478 border-bottom: 1px solid #ddd;*/ 3479 } 3480 3481 /* Float the list items side by side */ 3482 li.tablinks { 3483 display: inline-block; 3484 border-top: 3px solid transparent; 3485 border-left: 1px solid transparent; 3486 border-right: 1px solid transparent; 3487 margin-bottom: -1px; 3488 margin-right: 3px; 3489 border-radius: 4px 4px 0 0; 3490 background-color: rgba(212,212,212,0.3); 3491 } 3492 3493 /* Style the links inside the list items */ 3494 li.tablinks a { 3495 color: #000000; 3496 cursor: pointer; 3497 margin-right: 2px; 3498 line-height: 1.42857143; 3499 display: block; 3500 padding: 10px 15px; 3501 } 3502 3503 /* Change background color of links on hover */ 3504 li.tablinks:hover { 3505 background-color: #ffffff; 3506 border-bottom-color: transparent; 3507 border-top: 3px solid #ddd; 3508 border-left: 1px solid #ddd; 3509 border-right: 1px solid #ddd; 3510 } /*rgba(212,212,212,0.3)*/ 3511 3512 /* Create an active/current tablink class */ 3513 li.tablinks a:focus, li.tablinks.active{ 3514 border-top: 3px solid #ddd; 3515 border-left: 1px solid #ddd; 3516 border-right: 1px solid #ddd; 3517 background-color: #ffffff; 3518 } 3519 3520 /* Style the tab content */ 3521 .prod-desc-tab-content { 3522 display: none; 3523 padding: 15px 15px; 3524 /*border: 1px solid #ccc;*/ 3525 border-top: none; 3526 clear: both; 3527 -webkit-animation: fadeEffect 1s; 3528 animation: fadeEffect 1s; /* Fading effect takes 1 second */ 3529 } 3530 .prod-desc-tab-content ul{ 3531 list-style-type: disc; 3532 } 3533 3534 /* if user select is_show_title is true, the title will be displayed; if not, hide the title*/ 3535 .prod-desc-tab-content > h2{ 3536 display:none; 3537 } 3538 3539 @-webkit-keyframes fadeEffect { 3540 from {opacity: 0;} 3541 to {opacity: 1;} 3542 } 3543 3544 @keyframes fadeEffect { 3545 from {opacity: 0;} 3546 to {opacity: 1;} 3547 } 3548 3549 .tab_drawer_heading { display: none; } 3550 3551 @media screen and (max-width: 480px) { 3552 .prod-desc-tab { 3553 display: none; 3554 } 3555 .tab_drawer_heading { 3556 background-color: transparent; 3557 color: #000000; 3558 border-bottom: 1px solid #ddd; 3559 margin: 0; 3560 padding: 6px 12px; 3561 display: block; 3562 cursor: pointer; 3563 -webkit-touch-callout: none; 3564 -webkit-user-select: none; 3565 -khtml-user-select: none; 3566 -moz-user-select: none; 3567 -ms-user-select: none; 3568 user-select: none; 3569 position: relative; 3570 } 3571 .tab_drawer_heading:after { 3572 content: ''; 3573 top: 50%; 3574 right: 40px; 3575 position: absolute; 3576 border: solid black; 3577 border-width: 0 3px 3px 0; 3578 display: inline-block; 3579 width: 10px; 3580 height: 10px; 3581 margin-top: -5px; 3582 transform: rotate(45deg); 3583 -webkit-transform: rotate(45deg); 3584 -webkit-transition: all 200ms linear; 3585 -moz-transition: all 200ms linear; 3586 -ms-transition: all 200ms linear; 3587 -o-transition: all 200ms linear; 3588 transition: all 200ms linear; 3589 } 3590 .d_active { 3591 background-color: rgba(212,212,212,0.3); 3592 } 3593 .d_active.tab_drawer_heading:after{ 3594 margin-top: -3px; 3595 transform: rotate(-135deg); 3596 -webkit-transform: rotate(-135deg); 3597 } 3598 } 3599</style> 3600
3601<script type="text/javascript"> 3602 // If the page has no jquery 3603 // if(typeof jQuery == 'undefined'){ 3604 // console.log(456); 3605 // var script = document.createElement('script'); 3606 // script.type = "text/javascript"; 3607 // script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"; 3608 // console.log(script); 3609 // document.getElementsByTagName('head')[0].appendChild(script); 3610 // } 3611 3612 /* if in tab mode */ 3613 $("body").on("click", ".tablinks", function(){ 3614 var id = $(this).data("prod-desc-id"); 3615 3616 // Get all elements with class="prod-desc-tab-content" and hide them 3617 $(".prod-desc-tab-content").hide(); 3618 3619 // Get all elements with class="tablinks" and remove the class "active" 3620 $(".tablinks").removeClass("active"); 3621 3622 // Show the current tab, and add an "active" class to the link that opened the tab 3623 $("#"+id+"_desc_tab_content").show(); 3624 $(this).addClass("active"); 3625 3626 // make mobile view(drawer mode) also in same tab 3627 $(".tab_drawer_heading").removeClass("d_active"); 3628 $(".tab_drawer_heading[data-prod-desc-id='"+id+"']").addClass("d_active"); 3629 3630 }); 3631 3632 /* if in drawer mode */ 3633 $("body").on("click", ".tab_drawer_heading", function() { 3634 var id = $(this).data("prod-desc-id") 3635 var active = $(this).hasClass("d_active") 3636 3637 $(".prod-desc-tab-content").hide(); 3638 $(".tab_drawer_heading").removeClass("d_active"); 3639 3640 if(!active){ 3641 $("#"+id+"_desc_tab_content").show(); 3642 $(this).addClass("d_active"); 3643 window.scroll({ 3644 top: $(this).offset().top - 120, 3645 left: 0, 3646 behavior: 'smooth' 3647 }); 3648 } 3649 3650 $(".tablinks").removeClass("active"); 3651 $(".tablinks[data-prod-desc-id='"+id+"']").addClass("active"); 3652 }); 3653 3654 $(function(){ 3655 var x = $(".product-description").find("h1, h2, h3, h4, h5, h6"); 3656 var title = null; 3657 var body = null; 3658 3659 if(x.length > 1){ 3660 $(".product-description").after("<link href='/assets/css/froala_style.min.css' rel='stylesheet' type='text/css'/><div class='product-description-tabs fr-view rte'><ul class='prod-desc-tab' style='margin: auto;'></ul><div class='prod-desc-tab-container'></div></div>"); 3661 $(x).each(function(k, v){ 3662 title = $(v).text(); 3663 3664 if(k == 0){ 3665 body = $(x[0]).nextUntil(x[1]).clone(); 3666 $(".prod-desc-tab").append('<li class="tablinks active" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>'); 3667 $(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading d_active" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:block"><h2>'+title+'</h2></div>'); 3668 $("#"+k+"_desc_tab_content h2").after(body); 3669 } 3670 else if(k == x.length){ 3671 body = $(x[k]).nextAll().clone(); 3672 $(".prod-desc-tab").append('<li class="tablinks" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>'); 3673 $(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:none"><h2>'+title+'</h2></div>'); 3674 $("#"+k+"_desc_tab_content h2").after(body); 3675 } 3676 else{ 3677 body = $(x[k]).nextUntil(x[k+1]).clone(); 3678 $(".prod-desc-tab").append('<li class="tablinks" data-prod-desc-id="'+k+'"><a>'+title+'</a></li>'); 3679 $(".prod-desc-tab-container").append('<h3 class="tab_drawer_heading" data-prod-desc-id="'+k+'">'+title+'</h3><div id="'+k+'_desc_tab_content" class="prod-desc-tab-content" style="display:none"><h2>'+title+'</h2></div>'); 3680 $("#"+k+"_desc_tab_content h2").after(body); 3681 } 3682 }); 3683 $(".product-description").hide(); 3684 } 3685 3686 }); 3687</script>
3687 3688<!-- /Snippet --> 3689 3690<!-- Snippet:global/body_end: Affiliates.One è¯çç¶² --> 3691
3691<script type="text/javascript"> 3692 (function () { 3693 var VARemoteLoadOptions = { 3694 whiteLabel: { id: 8, siteId: 2792, domain: 't.adotone.com' }, 3695 locale: "en-US", mkt: true, platform: "easystore" 3696 }; 3697 (function (c, o, n, v, e, r, l, y) { 3698 c['VARemoteLoadOptions'] = e; r = o.createElement(n), l = o.getElementsByTagName(n)[0]; 3699 r.async = 1; r.src = v; l.parentNode.insertBefore(r, l); 3700 })(window, document, 'script', 'https://cdn.adotone.com/javascripts/va.js', VARemoteLoadOptions); 3701 })(); 3702 </script>
3702 3703 3704<!-- /Snippet --> 3705 3706<!-- Snippet:global/body_end: OnVoard Back In Stock --> 3707<div 3708 class="ov-app ov-app-back-in-stock" 3709 data-app="back-in-stock" 3710 data-app-id="bis_a3nd1jrabaf2o3j" 3711></div> 3712 3713<!-- /Snippet -->
3714<script> 3715 3716 /* 3717 3718 ------ 3719 Events 3720 ------ 3721 3722 pages/viewed 3723 3724 customers/signup 3725 3726 customers/login 3727 3728 products/searched 3729 3730 collections/viewed 3731 3732 products/viewed 3733 3734 products/shared 3735 3736 wishlists/item_added 3737 3738 carts/items_added 3739 3740 carts/viewed 3741 3742 carts/item_removed 3743 3744 checkouts/initiated 3745 3746 checkouts/shipping_info_added 3747 3748 checkouts/payment_info_added 3749 3750 checkouts/completed 3751 3752 orders/placed 3753 3754 orders/purchased 3755 3756 payments/captured 3757 3758 payments/failed 3759 3760 */ 3761 3762 window.__latest_cart = window.__latest_cart || null; 3763 3764 const _selector = document.querySelector.bind(document), 3765 _selectorAll = document.querySelectorAll.bind(document) 3766 3767 document.addEventListener('DOMContentLoaded', (event) => { 3768 3769 const default_currency = getCookie("currency") 3770 const customer_id = window.__st.cid 3771 const template = window.__st.p 3772 3773 onPageView() 3774 3775 //-----------------------// 3776 // Configs // 3777 //-----------------------// 3778 3779 window.dataLayer = window.dataLayer || [] 3780 3781 Array.prototype.last = Array.prototype.last || function() { 3782 return this[this.length - 1] || null 3783 } 3784 3785 Array.prototype.first = Array.prototype.first || function() { 3786 return this[0] || null 3787 } 3788 3789 //----------------------// 3790 // Triggers // 3791 //----------------------// 3792 3793 const XHR = window.XMLHttpRequest 3794 3795 function xhr() { 3796 3797 const xhr = new XHR() 3798 3799 xhr.addEventListener("readystatechange", function() { 3800 3801 if(xhr.readyState != 4) return 3802 3803 try { 3804 3805 const response_url = xhr.responseURL 3806 3807 if (response_url.includes("cart/add")) { 3808 3809 window.__latest_cart = JSON.parse(xhr.response) 3810 3811 onCartItemsAdded() // ok 3812 3813 } 3814 3815 if (response_url.includes("cart/remove_item_quantity")) { 3816 3817 window.__latest_cart = JSON.parse(xhr.response) 3818 3819 onCartItemRemoved() // ok 3820 3821 } 3822 3823 if (response_url.includes("new_cart?retrieve=true")) { 3824 3825 result = JSON.parse(xhr.response) 3826 3827 if (result.cart) { 3828 window.__latest_cart = result.cart 3829 } 3830 3831 } 3832 3833 } catch(e) { 3834 3835 console.error(e) 3836 3837 } 3838 3839 }, false); 3840 3841 return xhr 3842 3843 } 3844 3845 window.XMLHttpRequest = xhr 3846 3847 switch(template) { 3848 3849 case 'cart': onCartView() // ok 3850 break 3851 case 'product': onProductView() // ok 3852 break 3853 case 'collection': onCollectionView() // ok 3854 break 3855 case 'blog': onBlogView() 3856 break 3857 case 'article': onArticleView() 3858 break 3859 case 'payment_completed': onOrderPlace() 3860 break 3861 case 'payment_fail': onPaymentFail() 3862 break 3863 3864 } 3865 3866 // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]'))) 3867 if (_selector('form[action="/checkout/detail"]')) _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))}) // ok 3868 if (_selector('form[action="/checkout/shipping"]')) _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))}) // ok 3869 if (_selector('form[action="/account/register"]')) _selector('form[action="/account/register"]').addEventListener("submit", onSignUp) // ok 3870 if (_selector('form[action="/account/login"]')) _selector('form[action="/account/login"]').addEventListener("submit", onLogin) // ok 3871 if (_selector('form[action="/search"]')) _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok 3872 if (_selector('#line-login-btn')) _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok 3873 if (_selector('#PlaceOrder')) _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))}); // ok 3874 if (_selector('#add_wishlist')) _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok 3875 if (_selectorAll('a[href="/account/logout"]')) _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok 3876 if (_selector('.CartDrawerTrigger.cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok 3877 if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link')) _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok 3878 if (_selectorAll('a[class^="share-"]')) _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok 3879 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3880 3881 // For append elements 3882 const bodyMutationObserver = new MutationObserver(() => { 3883 if (_selector('#form__spc #PlaceOrder')) _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok 3884 if (_selectorAll('[name$="checkout"]')) _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate)) 3885 }); 3886 bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true}); 3887 3888 //------------------------------// 3889 // Event handlers // 3890 //------------------------------// 3891 3892 function onPageView() { 3893 3894 EasyStore.Event.dispatch('pages/viewed', { 3895 page: { 3896 type: template, 3897 title: document.title, 3898 description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null, 3899 url: location.href, 3900 } 3901 }) 3902 3903 } 3904 3905 function onSignUp() { 3906 3907 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3908 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3909 3910 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3911 3912 let data = {} 3913 3914 if (email_regex.test(email_or_phone)) { 3915 data.method = 'email' 3916 data.email = email_or_phone 3917 } 3918 3919 if (phone_regex.test(email_or_phone)) { 3920 data.method = "phone" 3921 data.phone = email_or_phone 3922 } 3923 3924 if (!data.method) return 3925 3926 EasyStore.Event.dispatch('customers/signup', data) 3927 3928 } 3929 3930 function onLogin() { 3931 3932 const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/) 3933 const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/) 3934 3935 const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "") 3936 3937 let data = {} 3938 3939 if (email_regex.test(email_or_phone)) { 3940 data.method = 'email' 3941 data.email = email_or_phone 3942 } 3943 3944 if (phone_regex.test(email_or_phone)) { 3945 data.method = "phone" 3946 data.phone = email_or_phone 3947 } 3948 3949 if (!data.method) return 3950 3951 EasyStore.Event.dispatch('customers/login', data) 3952 3953 } 3954 3955 function onLineLogin() { 3956 3957 EasyStore.Event.dispatch('customers/login', { method: 'line' }) 3958 3959 } 3960 3961 function onLogout() { 3962 3963 EasyStore.Event.dispatch('customers/logout', { customer_id }) 3964 3965 } 3966 3967 function onBlogView() { 3968 3969 const blog = "" 3970 3971 EasyStore.Event.dispatch('blogs/viewed', { blog }) 3972 3973 } 3974 3975 function onArticleView() { 3976 3977 const article = "" 3978 3979 EasyStore.Event.dispatch('articles/viewed', { article }) 3980 3981 } 3982 3983 function onProductSearch() { 3984 3985 const query = _selector('input[name=q]').value 3986 3987 if (!query) return 3988 3989 EasyStore.Event.dispatch('products/searched', { query }) 3990 3991 } 3992 3993 function onCollectionView() { 3994 3995 const collection = "" 3996 3997 EasyStore.Event.dispatch('collections/viewed', { collection }) 3998 3999 } 4000 4001 function onProductView() { 4002 4003 const product = "" 4004 4005 EasyStore.Event.dispatch("products/viewed", { product }) 4006 4007 } 4008 4009 function onProductShare(el) { 4010 4011 const product = "" 4012 4013 const channel = el.getAttribute("class").split("-").last() 4014 4015 EasyStore.Event.dispatch('products/shared', { product, channel }) 4016 4017 } 4018 4019 function onWishlistItemAdded() { 4020 4021 let product = "" 4022 const quantity = _selector("#Quantity").value 4023 4024 EasyStore.Event.dispatch('wishlists/item_added', { product }) 4025 4026 } 4027 4028 async function onCartItemsAdded() { 4029 4030 const cart = await getCart() 4031 4032 if(cart && cart.items != undefined && cart.items.length > 0) { 4033 4034 EasyStore.Event.dispatch('carts/item_added', { cart }) 4035 4036 } 4037 4038 } 4039 4040 async function onCartView() { 4041 4042 const cart = await getCart() 4043 4044 EasyStore.Event.dispatch('carts/viewed', { cart }) 4045 4046 } 4047 4048 async function onCartItemRemoved() { 4049 4050 const cart = await getCart() 4051 4052 cart.items = [] 4053 4054 if(cart) { 4055 4056 EasyStore.Event.dispatch('carts/item_removed', { cart }) 4057 4058 } 4059 4060 } 4061 4062 async function onCheckoutInitiate() { 4063 4064 const cart = await getCart() 4065 4066 EasyStore.Event.dispatch('checkouts/initiated', { cart }) 4067 4068 } 4069 4070 async function onShippingInfoAdded(form) { 4071 let checkout = getCheckout() 4072 4073 let form_data = {} 4074 new FormData(form).forEach((value, key) => form_data[key] = value) 4075 4076 let shipping_tier = null 4077 4078 if (form_data.type && form_data.type.startsWith("r_pickup")) { 4079 shipping_tier = `Pickup - ${form_data.pick_location}` 4080 } 4081 4082 if (form_data.s_id) {
4083 shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name") 4084 } 4085 4086 if (!shipping_tier) return 4087 4088 EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier }) 4089 4090 } 4091 4092 async function onPaymentInfoAdded(form) { 4093 4094 let checkout = getCheckout() 4095 4096 let payment_type = new FormData(form).get('payment_method') 4097 4098 EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type }) 4099 4100 } 4101 4102 async function onOrderPlace() { 4103 4104 let cart_token = getCookie("cart_js") 4105 let previous_cart_token = getCookie("previous_cart_ga4_js") 4106 4107 if (previous_cart_token && previous_cart_token == cart_token) { 4108 // Prevent duplicate purchase tracking 4109 return 4110 } 4111 4112 let order = getOrder() 4113 4114 EasyStore.Event.dispatch('orders/placed', { order }) 4115 4116 if(order.is_manual_payment) { 4117 4118 EasyStore.Event.dispatch('orders/purchased', { order }) 4119 4120 } 4121 4122 const last_transaction = order.transactions.last() 4123 4124 if (last_transaction.status) { 4125 4126 EasyStore.Event.dispatch('orders/purchased', { order }) 4127 EasyStore.Event.dispatch('payments/captured', { order }) 4128 4129 } 4130 4131 } 4132 4133 async function onPaymentFail() { 4134 4135 const order = getOrder() 4136 4137 EasyStore.Event.dispatch('payments/failed', { order }) 4138 4139 } 4140 4141 async function onCheckoutComplete(form) { 4142 4143 onPaymentInfoAdded(form) 4144 4145 const checkout = getCheckout() 4146 4147 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 4148 4149 } 4150 4151 async function onSinglePageCheckout() { 4152 4153 // let checkout = $("[data-app-checkout]").data("app-checkout") 4154 4155 let checkout = getCheckout() 4156 4157 // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text() 4158 const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML 4159 4160 const shipping_method = _selector("#delivery_method").value 4161 4162 let shipping_tier = null 4163 let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content') 4164 if (shipping_method == "shipping") { 4165 shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML 4166 } 4167 4168 if (shipping_method == "pickup") { 4169 shipping_tier = app_spc_customer_info_label[0].innerHTML 4170 } 4171 4172 if (shipping_tier) { 4173 4174 EasyStore.Event.dispatch('checkouts/shipping_info_added', { 4175 checkout, 4176 shipping_tier, 4177 }) 4178 4179 } 4180 4181 if (payment_type) { 4182 4183 EasyStore.Event.dispatch('checkouts/payment_info_added', { 4184 checkout, 4185 payment_type, 4186 }) 4187 4188 } 4189 4190 EasyStore.Event.dispatch('checkouts/completed', { checkout }) 4191 4192 } 4193 4194 }) 4195 4196 4197 //-----------------------// 4198 // Functions // 4199 //-----------------------// 4200 4201 function getCookie(name) { 4202 4203 name += "=" 4204 4205 decodedCookie = decodeURIComponent(document.cookie) 4206 4207 ca = decodedCookie.split(";") 4208 4209 for(i = 0; i < ca.length; i++) { 4210 c = ca[i] 4211 while (c.charAt(0) == " ") { 4212 c = c.substring(1) 4213 } 4214 if (c.indexOf(name) == 0) { 4215 return c.substring(name.length, c.length) 4216 } 4217 } 4218 4219 return "" 4220 4221 } 4222 4223 const parsePrice = price => { 4224 if(typeof price === 'string') { 4225 return parseFloat(price.split(',').join('')) 4226 } 4227 4228 return price 4229 } 4230 4231 const requestCart = async (method, data) => { 4232 4233 let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}}) 4234 result = await response.json() 4235 4236 return result.cart 4237 4238 } 4239 const getCart = async (latest = false) => { 4240 4241 let cart = window.__latest_cart 4242 4243 const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length) 4244 4245 if(latest || cart_invalid) { 4246 cart = await requestCart() 4247 } 4248 4249 cart.items = cart.items || [] 4250 4251 return mapCart(cart) 4252 4253 } 4254 4255 const getCheckout = async () => { 4256 mapCheckout(window.__latest_cart || await requestCart()) 4257 } 4258 4259 const getOrder = async () => { 4260 mapOrder(window.__latest_cart || await requestCart()) 4261 } 4262 4263 //-----------------------// 4264 // Mappers // 4265 //-----------------------// 4266 4267 const fallbackAttribute = (object, attribute) => { 4268 4269 if(!Array.isArray(attribute)) { 4270 attribute = [attribute] 4271 } 4272 4273 let final_value = null 4274 4275 do { 4276 4277 final_value = object[attribute.shift()] 4278 4279 } while(!final_value && attribute.length) 4280 4281 return final_value 4282 4283 } 4284 4285 const map = (object, mapper) => { 4286 4287 const newObject = {} 4288 4289 for(const key in mapper) { 4290 4291 // Handle different keys between new and old format
4292 newObject[key] = fallbackAttribute(object, mapper[key]) 4293 4294 // Cast price to float 4295 if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) { 4296 newObject[key] = parsePrice(newObject[key]) 4297 } 4298 4299 if(newObject[key] === undefined) { 4300 delete newObject[key] 4301 } 4302 4303 } 4304 4305 return newObject 4306 4307 } 4308 4309 const mapCart = cart => { 4310 4311 const oldCart = cart 4312 4313 const mapper = { 4314 id: 'id', 4315 currency: 'currency', 4316 item_count: 'item_count', 4317 items: 'items', 4318 total_price: 'total_price', 4319 latest_items: 'latest_items' 4320 } 4321 4322 cart = map(cart, mapper) 4323 4324 const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || [])) 4325 4326 cart.discount_applications = discounts.map(discount => ({ 4327 title: discount.voucher_code || null, 4328 value: parsePrice(discount.amount), 4329 })) 4330 4331 cart.original_total_price = cart.items.length 4332 ? cart.items 4333 .map(item => item.original_price) 4334 .reduce((sum, price) => sum + price) 4335 : 0 4336 4337 cart.total_discount = cart.discount_applications.length 4338 ? cart.discount_applications 4339 .map(discount => parsePrice(discount.value)) 4340 .reduce((sum, value) => sum + value) 4341 : 0 4342 4343 cart.items = cart.items.map(item => mapLineItem(item)) 4344 4345 return cart 4346 4347 } 4348 4349 const mapCheckout = checkout => { 4350 4351 const mapper = { 4352 note: 'note', 4353 attributes: 'note_attributes', 4354 billing_address: 'billing_address', 4355 currency: 'currency', 4356 customer_id: 'customer_id', 4357 discounts_amount: 'total_discount', 4358 id: 'id', 4359 line_items: 'order_item', 4360 order_number: 'order_number', 4361 shipping_address: 'shipping_address', 4362 shipping_price: 'shipping_tax', 4363 shipping_method: 'shipping_method_name', 4364 tax_price: 'total_tax', 4365 } 4366 4367 checkout = map(checkout, mapper) 4368 4369 checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required) 4370 4371 checkout.line_items = checkout.line_items.map(item => mapLineItem(item)) 4372 4373 return checkout 4374 4375 } 4376 4377 const mapOrder = order => { 4378 4379 const mapper = { 4380 attributes: 'note_attributes', 4381 billing_address: 'billing_address', 4382 cancelled: 'is_cancelled', 4383 cancelled_at: 'cancelled_at', 4384 created_at: 'created_at', 4385 customer_id: 'customer_id', 4386 // discount_applications: 'discount_applications', 4387 email: 'email', 4388 financial_status: 'financial_status', 4389 fulfillment_status: 'fulfillment_status', 4390 line_items: 'order_item', 4391 note: 'note', 4392 order_number: 'order_number', 4393 phone: 'phone', 4394 shipping_address: 'shipping_address', 4395 shipping_methods: 'shipping_methods', 4396 shipping_price: 'total_shipping', 4397 subtotal_price: 'subtotal_price', 4398 // tax_lines: 'tax_lines', 4399 tax_price: 'total_tax', 4400 total_discounts: 'total_discount', 4401 total_net_amount: 'total_amount_include_transaction', 4402 total_price: 'total_price', 4403 transactions: 'transaction_records', 4404 is_manual_payment: 'is_manual_payment', 4405 } 4406 4407 order.email = order.billing_address.email 4408 order.phone = order.billing_address.phone 4409 order.shipping_method = order.shipping_method_name 4410 4411 order = map(order, mapper) 4412 4413 order.line_items = order.line_items.map(item => mapLineItem(item)) 4414 order.transactions = order.transactions.map(transaction => mapTransaction(transaction)) 4415 4416 return order 4417 4418 } 4419 4420 const mapLineItem = line_item => { 4421 4422 const old_line_item = line_item 4423 4424 const mapper = { 4425 final_price: 'price', 4426 image: 'img_url', 4427 message: 'message', 4428 original_line_price: 'original_line_price', 4429 original_price: 'original_price', 4430 properties: 'properties', 4431 quantity: 'quantity', 4432 requires_shipping: 'shipping_required', 4433 sku: 'sku', 4434 taxable: 'taxable', 4435 title: 'product_name', 4436 product_name: 'product_name', 4437 url: 'url', 4438 product_id: 'product_id', 4439 variant_id: 'variant_id', 4440 id: ['id', 'i_id'], 4441 } 4442 4443 line_item = map(line_item, mapper) 4444 4445 line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null 4446 line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null 4447 line_item.image = line_item.image || (old_line_item.image && old_line_item.image.url) || null 4448 4449 return line_item 4450 4451 } 4452 4453 const mapTransaction = transaction => { 4454 4455 const mapper = { 4456 amount: 'amount', 4457 created_at: 'created_at', 4458 gateway: 'gateway_type', 4459 id: 'id', 4460 status: 'status', 4461 } 4462 4463 transaction = map(transaction, mapper) 4464 4465 return transaction 4466 4467 } 4468 4469 4470</script>
4470 4471 4472 4473 4474
4474<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8f94e15e2ac4439b9fb8c17bbb7deb0f","r":1,"spa":2}' crossorigin="anonymous"></script>
4474 4475</body> 4476</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.