PageSourceSearch

https://www.labrume.com.tw/en

html labrume.com.tw collected 2026-10-07 21:52:54 UTC 249,888 bytes, 4,556 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en" style="height:100%;">
3  <head>
4      
4<script>
5        window.dataLayer = window.dataLayer || [];
6      </script>
6
7    
8      <!-- CYBERBIZ Google Tag Manager -->
9      
9<script>
vendor: 345 bytes, lines 9-13
9(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
10      new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
11      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
12      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
13      })(window,document,'script','cyb','
13GTM-TXD9LVJ
vendor: 3 bytes, line 13
13');
13</script>
13
14      <!-- End CYBERBIZ Google Tag Manager -->
15    
16    <meta charset="utf-8">
17<meta http-equiv="X-UA-Compatible" content="IE=edge">
18<meta name="viewport" content="width=device-width, initial-scale=1">
19<link rel="icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?convert=false&sha=9f6d9c1fb602ddee">
20<link rel="apple-touch-icon" href="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?convert=false&sha=9f6d9c1fb602ddee">
21
22<meta property="og:site_name" content="brumetaipei" />
23
24<!-- og tag -->
25
26  <meta name="keywords" content="" />
27  <meta name="description" content="" />
28  <meta property="og:title" content="brumetaipei " />
29  <meta property="og:description" content="" />
30  <meta property="og:url" content="https://www.labrume.com.tw" />
31  <meta property="og:type" content="website" />
32
33
34<!-- og image -->
35
36  
37  <meta property="og:image" content="https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" />
38  
39
40
41<title>
42  
43    brumetaipei 
44  
45</title>
46
47
48
49<script src='//cdn-general.cybassets.com/frontend/shop/useSettingsData-e958d46bfee2e69f.js' type='text/javascript'></script>
49
50
51
52
53  
53<script>
54    window.setSettingsData({"draggable_sections":{"404":[],"index":["_index_product_banner","1758546879927_1","1758548715483_1","_index_4_blocks","_main_slider_custom","1675175248497_3","_index_4_blocks_2"],"product":["product_info","product_description","board_comments","related_products"],"collection":[],"category":[],"blog":[],"article":[],"cart":[],"contact":[],"express_delivery":[],"search":[],"combo_product":["combo_product_info","combo_product_desc","board_comments"]},"sections":{"navbar":{"type":"navbar","visible":true,"settings":{"navbar_image_logo_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","navbar_image_logo_tablet_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","navbar_image_logo_mobile_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","main_nav":"main-menu","slider_primary_linklist":"main-menu","slider_primary_linklist_set_open":true,"nav_show_three_dimension":true,"search_enabled":true,"display_only_index":true,"dict_header_banner_image_url":"","dict_header_banner_image_tablet_url":"","dict_header_banner_image_mobile_url":"","dict_header_banner_link":"/collections/new-arrival","display_count_down":true,"navbar_display_style":"displayDefault","header_banner_start":"2026-08-01T14:30:00+08:00","header_banner_end":"2026-08-20T00:00:00+08:00","timer_text_color":"#eee1d2","timer_bg_color":"#2a0e05","menu_display_style":"three_dimension_menu","link_menu_enabled":false,"link_menu":"undefined","display_banner_type":"textBanner","header_banner_simple_text_size":"12","header_banner_simple_text_color":"#ffffff","header_banner_simple_bg":"#2a0c0c","logo_height":"","mobile_logo_position":"left","navbar_pc_title_font_size_scale":"90","navbar_pc_body_font_size_scale":"100","navbar_mobile_title_font_size_scale":"90","navbar_mobile_body_font_size_scale":"100","breadcrumb_referrer_enabled":false,"header_banner_simple_text":"💝 七夕限定|8/1–8/19 單筆消費滿 NT$7,700 現折 NT$520,優惠可累計折抵,以香氣獻給重要的人,也送給努力生活的自己。","link_open_in_new_tab":true},"custom_name":"導覽列"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d","display_instagram":true,"shop_instagram":"https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y=","display_line":true,"shop_line":"https://line.me/R/ti/p/@901hnpwy","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_link_list_2","default_contact_info","1675419928503_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"選單","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"聯絡資訊","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_title":"Informations","display_phone":false,"dict_phone_number":"09-87654321","display_fax_number":false,"dict_shop_fax_number":"02-22345678","display_shop_email":true,"dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"Waterloo, IN 46793, United States","display_office_time":true,"dict_shop_office_time":"10:30am - 6:30pm","dict_tax_id":""}},"default_link_list_2":{"type":"link_list_setting","custom_name":"選單","visible":true,"settings":{"dict_link_list_block_title":"Menu","footer_link":"footer"}},"1675419928503_2":{"type":"rich_text_editor_setting","custom_name":"自訂文字","visible":true,"settings":{"dict_rich_text_title":"","dict_rich_text_content":"\u003cp\u003e香澄國際有限公司\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eBRUME INTERNATIONAL CO.,LTD\u003c/p\u003e\n\u003cp\u003e統一編號:83118482\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003e松山門市:\u003c/p\u003e\n\u003cp\u003e台灣台北市松山區南京東路五段250å··2弄39號\u003c/p\u003e\n\u003cp\u003e聯絡信箱:[email protected]\u003c/p\u003e\n\u003cp\u003e客服時間:13:00-21:00\u003c/p\u003e\n"}}},"custom_name":"頁腳"},"_main_slider_custom":{"type":"_main_slider_custom","visible":false,"blocks":{"display_main_slider_item_1":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1.png","dict_tablet_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1_mobile.png","dict_mobile_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_1_mobile.png","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"素材"},"display_main_slider_item_2":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2.png","dict_tablet_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2_mobile.png","dict_mobile_image_url":"/theme_src/i18n_serenity/default_img/main_slider_item_2_mobile.png","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""},"custom_name":"素材"},"display_main_slider_item_3":{"type":"image","visible":true,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"素材"},"display_main_slider_item_4":{"type":"image","visible":false,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"素材"},"display_main_slider_item_5":{"type":"image","visible":false,"settings":{"dict_link":"","dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":""},"custom_name":"素材"}},"block_order":["display_main_slider_item_1","display_main_slider_item_2"],"settings":{"margin_x":"160","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24","swiper_delay":"3","image_number":"1","image_space":"12","mobile_image_number":"1","mobile_image_space":"8","transition_speed":"0.3"},"custom_name":"輪播素材"},"_index_product_banner":{"type":"_index_product_banner","visible":true,"settings":{"dict_link":"/collections/all","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"橫幅廣告"},"_index_8_blocks":{"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"New Arrivals","collection_handle":"居家生活飾品","limit":"4","margin_x":"0","margin_bottom":"48","mobile_margin_x":"","mobile_margin_bottom":"24","product_display":"displayAll"},"custom_name":"商品分類"},"_index_4_blogs":{"type":"_index_4_blogs","visible":true,"blocks":{"index_4_blogs_1":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_2":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_3":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}},"index_4_blogs_4":{"type":"blog","visible":true,"settings":{"blog_handle":"news"}}},"block_order":["index_4_blogs_1","index_4_blogs_2","index_4_blogs_3","index_4_blogs_4"],"settings":{"dict_title":"More Information"}},"_index_4_blocks":{"type":"_index_4_blocks","visible":true,"blocks":{"index_4_blocks_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"/collections/la-brume-daan-選單","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczMTMwXzQwQTAxQThDLUQ0NTktNEI3MS1BRkUyLTU3QUFFNENGQkM1MC5qcGcuanBlZyJdXQ.jpeg?sha=3c84613798f5136a","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZB
54Mi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c","block_propotion":"50","dict_image_description":""},"custom_name":"圖片"},"index_4_blocks_block_2":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTcxNDc0X0lNR18wNTU4LmpwZy5qcGVnIl1d.jpeg?sha=aea479433f20db3e","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c","dict_link":"/collections/scented-candle","block_propotion":"33","dict_image_description":"\u003cp\u003e\u003c/p\u003e\n","dict_image_title":""}},"index_4_blocks_block_3":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczNTAwX0ExQkNBMjYxLTNGNUEtNERCOC05N0I1LTkyQjhBRDU5RTdCQy0yLmpwZy5qcGVnIl1d.jpeg?sha=067399b4fe0d8568","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23","dict_link":"/collections/la-brume-選單","block_propotion":"33","dict_image_description":""}},"1675173266255_0":{"type":"image","custom_name":"圖片","visible":false,"settings":{"dict_image_url":"","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NTI2X0NCMEM0MUY1LTdBQzktNDNGQy05MTJDLTQ3ODM4NDhDMTMxQS5qcGcuanBlZyJdXQ.jpeg?sha=7968753eb59555e1","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NTI2X0NCMEM0MUY1LTdBQzktNDNGQy05MTJDLTQ3ODM4NDhDMTMxQS5qcGcuanBlZyJdXQ.jpeg?sha=7968753eb59555e1","dict_link":"","block_propotion":"25","dict_image_description":""}}},"block_order":["index_4_blocks_block_1","index_4_blocks_block_2","index_4_blocks_block_3","1675173266255_0"],"custom_name":"自訂排版設計","settings":{"margin_x":"0","margin_bottom":"48","mobile_margin_x":"0","mobile_margin_bottom":"24","mobile_columns":2,"margin_block":"10","mobile_margin_block":"10","mobile_align":"left"}},"_index_4_blocks_2":{"type":"_index_4_blocks","custom_name":"自訂排版設計","visible":false,"settings":{"margin_x":"160","margin_bottom":"48","mobile_margin_x":"16","mobile_margin_bottom":"24","mobile_columns":1,"margin_block":"10","mobile_margin_block":"10","mobile_align":"left"},"blocks":{"_index_4_blocks_2_block_1":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_1.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}},"_index_4_blocks_2_block_2":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_2.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}},"_index_4_blocks_2_block_3":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_2_block_3.png","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"","dict_image_description":""}}},"block_order":["_index_4_blocks_2_block_1","_index_4_blocks_2_block_2","_index_4_blocks_2_block_3"]},"express_delivery_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"express_delivery_display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"","dict_image_url":"/theme_src/i18n_serenity/default_img/index_4_blocks_1_block_1.png","dict_tablet_image_url":"","dict_mobile_image_url":""}}},"block_order":["express_delivery_display_index_4_block_1"]},"custom_text":{"type":"custom_text","visible":true,"settings":{}},"blog":{"type":"blog","visible":true,"settings":{"article_limit_in_blog_page":"6"}},"article":{"type":"article","visible":true,"settings":{"display_blog_menu":true,"dict_blog_tags_title":"Categories","blog_latest_post_limit":"2"}},"category":{"type":"category","visible":true,"settings":{"category_sidebar_set_open":false,"category_product_block_limit":"4","category_product_swiper_item_limit":"
546","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","og_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee","shop_title":"若水La brume","shop_description":"若水La brume誕生於2020年末,品牌名取自法文「薄霧」,靈感源自《老子》:「上善若水,水善利萬物而不爭。」我們希望每個喜愛香氛的你,在選擇並穿上心愛香水時,都能感受到那份純粹而浪漫的儀式感。  嚴選來自世界各地的小眾香氛品牌,每一瓶香水如同藝術品,透過香氣展現獨特品味,也為你的生活留下深刻且美好的記憶。","shop_keywords":"若水,若水La brume,香水,小眾香水,香氛,蠟燭","prevent_right_click":false},"custom_name":"全站設定"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#3f2e1e","button_text_color":"#bbb19e","accent_color":"#926f2f","heading_color":"#402f1f","text_color":"#bbb19e","price_color":"#402f1f","discount_price_color":"#924a23","theme_bg_color":"#FFFFFF","product_border_color":"#bbb19e","nav_logo_bg_color":"#402f1f","nav_menu_bg_color":"#FFFFFF","nav_menu_text_color":"#402f1f","nav_menu_icon_color":"#bbb19e","footer_bg_color":"#f4eee2","footer_text_color":"#402f1f","checkout_button_color":"#402f1f","checkout_accent_color":"#906e2f","tips_text_color":"#0C5460"},"custom_name":"顏色設定"},"popup":{"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","icon_size":"small","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTIwMDQ4X0Z1bGxTaXplUmVuZGVyX1ZTQ08tMi5qcGVnLmpwZWciXV0.jpeg?sha=93f1148cf7ef0e88","dict_link":"/collections/新春優惠任2件10off"},"custom_name":"圖片"},"1714638990991_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_icon_image_url":"","icon_size":"small","dict_link":"/collections/dorsay-parfums"}},"1730702544373_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","dict_icon_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzkwODY1OTAwX0xhX2JydW1lX2Fubml2ZXJzYXJ5X3NtYWxsLmpwZy5qcGVnIl1d.jpeg?sha=a36a8072a0abfed1","icon_size":"middle","dict_link":"/collections/all"}}},"block_order":["1730702544373_0"],"settings":{},"custom_name":"彈窗廣告"},"product_info":{"type":"product_info","visible":true,"settings":{"display_product_sku":true,"dict_vip_custom_price_text":"","dict_vip_custom_price_href":""},"custom_name":"基本設定"},"product_description":{"type":"product_description","visible":true,"custom_name":"商品介紹"},"board_comments":{"type":"board_comments","visible":true,"settings":{},"custom_name":"商品評論","thumbnail":"list","draggable":false},"related_products":{"type":"related_products","visible":true,"settings":{"display_related_cols":true,"use_custom_related_cols":true,"dict_group_related_cols_related_product":"Related Products","related_products_limit":"8"},"custom_name":"相關商品"},"contact":{"type":"contact","visible":true,"settings":{"show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e"}},"collection":{"type":"collection","visible":true,"settings":{"collection_sidebar":"main-menu","collection_sidebar_set_open":true,"collection_pagination_limit":"24","is_infinite_scroll":false},"custom_name":"商品分類設定"},"404":{"type":"404","visible":true,"settings":{"image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc2MTA1NjY4X0Q3NEY2RDE3LTNFNjMtNEUwQi05RjQwLTlCMDVEODlCNDg5NS5qcGcuanBlZyJdXQ.jpeg?sha=cdefa3462b943431","dict_404_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc2MTA1NjY4X0Q3NEY2RDE3LTNFNjMtNEUwQi05RjQwLTlCMDVEODlCNDg5NS5qcGcuanBlZyJdXQ.jpeg?sha=cdefa3462b943431","dict_title_text":"Sorry, this page does not exist or has been removed","dict_btn_text":"Back to Home"},"custom_name":"404頁"},"blogs_all":{"type":"blogs_all","visible":true,"settings":{}},"bundle_discounts":{"type":"bundle_discounts","visible":true,"settings":{}},"cart":{"type":"cart","visible":true,"settings":{}},"cart_empty":{"type":"cart_empty","visible":true,"settings":{}},"page":{"type":"page","visible":true,"settings":{}},"search":{"type":"search","visible":true,"settings":{"search_link_list":"main-menu"}},"customers/account":{"type":"customers/account","visible":true,"settings":{}},"customers/account_edit":{"type":"customers/account_edit","visible":true,"settings":{}},"customers/activate_account":{"type":"customers/activate_account","visible":true,"settings":{}},"customers/addresses":{"type":"customers/addresses","visible":true,"settings":{}},"customers/bonus_points":{"type":"customers/bonus_points","visible":true,"settings":{}},"customers/cancel":{"type":"customers/cancel","visible":true,"settings":{}},"customers/coupons":{"type":"customers/coupons","visible":true,"settings":{}},"customers/forgot_password":{"type":"customers/forgot_password","visible":true,"settings":{}},"customers/login":{"type":"customers/login","visible":true,"settings":{}},"customers/message":{"type":"customers/message","visible":true,"settings":{}},"customers/messages":{"type":"customers/messages","visible":true,"settings":{}},"customers/modify_password":{"type":"customers/modify_password","visible":true,"settings":{}},"customers/order":{"type":"customers/order","visible":true,"settings":{}},"customers/orders":{"type":"customers/orders","visible":true,"settings":{}},"customers/periodic_order":{"type":"customers/periodic_order","visible":true,"settings":{}},"customers/periodic_orders":{"type":"customers/periodic_orders","visible":true,"settings":{}},"customers/register":{"type":"customers/register","visible":true,"settings":{}},"customers/reset_password":{"type":"customers/reset_password","visible":true,"settings":{}},"customers/return":{"type":"customers/return","visible":true,"settings":{}},"customers/tracking_items":{"type":"customers/tracking_items","visible":true,"settings":{}},"express_delivery-navbar":{"type":"express_delivery-navbar","visible":true,"settings":{}},"express_delivery-content":{"type":"express_delivery-content","visible":true,"settings":{}},"1675175248497_3":{"type":"_index_4_blogs","custom_name":"分頁頁籤","visible":false,"settings":{"dict_title":"","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","article_c
54olumns":"4"},"blocks":{"1675175248500_0":{"type":"blog","custom_name":"部落格","visible":true,"settings":{"blog_handle":"news"}}},"block_order":["1675175248500_0"]},"combo_product_info":{"type":"combo_product_info","visible":true,"settings":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"customers/other_valid_orders":{"type":"customers/other_valid_orders","visible":true,"settings":{}},"1758546879927_1":{"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-選單","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[]},"1758548715483_1":{"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-選單","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[]},"announcement_bar":{"type":"announcement_bar","visible":true,"blocks":{"announcement_bar_block_1":{"type":"text","visible":true,"settings":{"display_only_index":true,"display_period":"limited","dict_link":"/collections/all","link_open_in_new_tab":true,"dict_image_url":"","dict_image_tablet_url":"","dict_image_mobile_url":"","image_alt":"","dict_content":"\u003cp\u003e|週年慶限定|單筆消費滿6,880即贈限定 銀曜石流蘇擴香掛鏈\u003c/p\u003e\n","text_size":"12","text_color":"#ffffff","bg_color":"#2a0c0c","timer_text_color":"#eee1d2","timer_bg_color":"#2a0e05","migrated_from_navbar":true},"custom_name":"文字"},"1788341130395_2":{"type":"countdown","custom_name":"倒數","visible":true,"settings":{"display_only_index":false,"display_period":"limited","dict_title_text":"","timer_text_color":"#f8e3be","timer_bg_color":"#3d0909"}},"1788341400320_2":{"type":"countdown","custom_name":"倒數","visible":true,"settings":{"display_only_index":false,"display_period":"limited","dict_title_text":"La brume daan 週年慶|全門市和官網任選 2 件香水/香氛商品享 95 折","timer_text_color":"#f8e0c2","timer_bg_color":"#430e0e"}}},"block_order":["announcement_bar_block_1","1788341400320_2"],"settings":{"display_mode":"vertical","carousel_interval":"3"},"custom_name":"置頂公告"}},"navbar_image_logo":true,"show_default_all_products":true,"one_dimension_limit":"6","two_dimension_limit":"10","header_banner_display":true,"header_banner_link":"/","display_main_slider":true,"display_phone":true,"phone_number":"0912345678","display_fax_number":true,"shop_fax_number":"0222345678","display_shop_email":true,"shop_email":"[email protected]","display_shop_address":true,"shop_address":"測試地址","display_office_time":true,"shop_office_time":"10:00-17:00","index_event_slider_display":true,"index_event_slider_item_1_display":true,"dict_index_event_slider_item_1_link":"#","index_event_slider_item_2_display":true,"dict_index_event_slider_item_2_title":"Autumn Shoes are now in store","dict_index_event_slider_item_2_link":"#","index_event_slider_item_3_display":true,"dict_index_event_slider_item_3_title":"Purchase any 3 items and get 20% off!","dict_index_event_slider_item_3_link":"#","index_event_slider_item_4_display":true,"dict_index_event_slider_item_4_title":"FINAL SALE/Summer shoes are now on clearance sale!","dict_index_event_slider_item_4_link":"#","index_event_slider_item_5_display":true,"dict_index_event_slider_item_5_title":"Sale ends soon","dict_index_event_slider_item_5_link":"#","index_event_slider_item_6_display":true,"dict_index_event_slider_item_6_title":"Register now and get $50 off","dict_index_event_slider_item_6_link":"#","index_event_slider_item_7_display":false,"dict_index_event_slider_item_7_title":"","dict_index_event_slider_item_7_link":"","
54index_event_slider_item_8_display":false,"dict_index_event_slider_item_8_title":"","dict_index_event_slider_item_8_link":"#","index_event_slider_item_9_display":false,"dict_index_event_slider_item_9_title":"","dict_index_event_slider_item_9_link":"#","index_event_slider_item_10_display":false,"dict_index_event_slider_item_10_title":"","dict_index_event_slider_item_10_link":"#","index_4_slider_display":true,"dict_index_4_slider_title":"Instagram","index_4_slider_item_1_display":true,"dict_index_4_slider_item_1_link":"#","index_4_slider_item_2_display":true,"dict_index_4_slider_item_2_link":"#","index_4_slider_item_3_display":true,"dict_index_4_slider_item_3_link":"#","index_4_slider_item_4_display":true,"dict_index_4_slider_item_4_link":"#","index_4_slider_item_5_display":true,"dict_index_4_slider_item_5_link":"#","index_4_slider_item_6_display":false,"dict_index_4_slider_item_6_link":"#","index_4_slider_item_7_display":false,"dict_index_4_slider_item_7_link":"#","index_4_slider_item_8_display":false,"dict_index_4_slider_item_8_link":"#","index_video_blocks_display":true,"dict_index_video_blocks_title":"Youtube","dict_index_video_blocks_video_link":"https://www.youtube.com/watch?v=3bI4IUIVjCk","collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24","product_slogan_display":false,"display_product_total_sold":false,"display_periodic_order_label":false,"cart_quantity_limit":"0","is_empty_clickable":true,"is_first_selected":false,"display_product_images_color":false,"discount_product_images_color_expand":false,"display_product_discounts_list":true,"display_discount_price_name":true,"discount_price_slogan_url":"","dict_discount_price_name":"","display_discount_price_suggestion_name":false,"dict_discount_price_suggestion_name":"","display_product_section_description":true,"dict_product_section_description":"Description","description_section_spec_setting":true,"dict_product_description_section_spec":"Brand Overview","description_section_shipping_setting":true,"dict_product_description_section_shipping":"Stores Available","vip_custom_price_visible":false,"display_global_event_1":false,"dict_show_global_event_1_link":"#","display_global_event_2":false,"dict_show_global_event_2_link":"#","display_global_event_3":false,"dict_show_global_event_3_link":"#","display_contact_address":true,"dict_contact_address":"Test Address","show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e","display_selected_blog":true,"selected_blog":"news","google_font":"{\"ja\":{\"value\":\"Noto Sans JP\"},\"zh-TW\":{\"value\":\"Abyssinica SIL\"},\"en\":{\"value\":\"Noto Sans TC\"},\"zh-CN\":{\"value\":\"Noto Sans TC\"}}","styled_shop_menu":"buttonType","product_scale":"default_scale","display_inventory_policy":false,"display_product_vendor":true,"product_video_display_location":"before","product_text_align":"center","product_labels":{"items":[{"id":"sale_label","kind":"system","title":"特價標籤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"large"},{"id":"out_of_stock_label","kind":"system","title":"缺貨標籤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"periodic_event_label","kind":"system","title":"定期定額標籤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"eff473ca-e065-4885-a4c9-37995bab1b13","kind":"custom","title":"自定義標籤 1","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"15a3c75c-cd6b-4b99-bdc3-2ac924638606","kind":"custom","title":"自定義標籤 2","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"64243541-4c17-4977-b03e-1d7606123624","kind":"custom","title":"自定義標籤 3","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"55d63c86-37a8-4d4d-8cc8-b73c7e551bbe","kind":"custom","title":"自定義標籤 4","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"460083df-a59c-42e5-93b5-c77d485cc7a8","kind":"custom","title":"自定義標籤 5","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"}]},"nav_icon_style":"icon_type_default","product_card_hover_effect":"button","product_image_border_radius":"0"});
55  </script>
55
56
57
58
59
60
61
62
63
64  
64<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","url":"https://www.labrume.com.tw","logo":"https://cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee"}</script>
64<script type="application/ld+json">{"@context":"https://schema.org/","@type":"WebSite","name":"brumetaipei","url":"https://www.labrume.com.tw","potentialAction":{"@type":"SearchAction","target":"www.labrume.com.tw/search?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
64
65
66
67
68    <!-- for vendor -->
69    <!-- cyb_snippet _bootstrap start -->
70
71<!-- cyb_snippet _bootstrap end -->
72    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vendor-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
73
74    <!-- common css rulesets -->
75    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/common-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
76
77    <!-- for navbar -->
78    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/navbar-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
79
80    <!-- for footer -->
81    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/footer-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
82
83    <!-- theme assets -->
84    <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/main-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
85
86    <!-- for vendor -->
87    
87<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/vendor-e958d46bfee2e69f.js' type='text/javascript'></script>
87
88
89            
89<script>
90          window.sci = "eyJzaG9wX2lkIjoyMzgwNiwic2hvcF9wbGFuIjoiYWR2YW5jZV9wbHVzIiwi\nZGltX2FmZmlsaWF0ZSI6bnVsbCwiY3VzdG9tZXJfaWQiOm51bGwsImN1c3Rv\nbWVyX25hbWUiOm51bGwsInNob3BfbmFtZSI6ImJydW1ldGFpcGVpIiwic2hh\ncmVfYXR0cmlidXRpb25fZW5hYmxlZCI6ZmFsc2V9\n";
91        </script>
91
92
93
94<meta name="csrf-param" content="authenticity_token" />
95<meta name="csrf-token" content="XNXgdZKrVBIx08dvE5CYDyGyEKIhLlkEgLzDMUiZwzq94F40zD1ZACc6Vu57tz4VjeMM6qNR-sLjxm2ulKlbYw" />
96<script>(function () {
97  window.gaConfigurations = {"useProductIdInProductEvents":false};
98})();
99</script>
vendor: 1 bytes, line 99
99
100<script>(function () {
101  window.CYBERBIZ_PageContext = {"page_type":"home"};
102})();
103</script>
103
104<link href="//cdn-general.cybassets.com/frontend/shop/quark-e958d46bfee2e69f.css" rel="stylesheet" type="text/css" media="all" />
105        
105<script>
106          window.shopScriptHelper = {
107            i18nLocale: "en",
108            i18nLocaleDefault: "zh-TW",
109            availableCurrencies: ["AUD","CAD","CHF","CNY","EUR","GBP","HKD","JPY","KRW","MYR","SGD","THB","TWD","USD","VND"],
110            defaultCurrency: "TWD",
111            currenciesInfo: [{"html_unit":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","name":"新台幣 (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"},{"html_unit":"\u0026#165;{{amount}}","email_unit":"¥{{amount}}","name":"人民幣 (CNY)","html":"\u0026#165;{{amount}}","unit":"RMB","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026#165;{{amount}}","code":"CNY","symbol":"¥","email":"¥{{amount}}"},{"html_unit":"${{amount}} USD","email_unit":"${{amount}} USD","name":"美元 (USD)","html":"${{amount}}","unit":"USD","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"${{amount}} USD","code":"USD","symbol":"$","email":"${{amount}}"},{"html_unit":"\u0026euro;{{amount}} EUR","email_unit":"€{{amount}} EUR","name":"歐元 (EUR)","html":"\u0026euro;{{amount}}","unit":"EUR","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026euro;{{amount}} EUR","code":"EUR","symbol":"€","email":"€{{amount}}"},{"html_unit":"HK${{amount}}","email_unit":"HK${{amount}}","name":"港元 (HKD)","html":"${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"HK${{amount}}","code":"HKD","symbol":"HK$","email":"${{amount}}"},{"html_unit":"\u0026#165;{{amount_no_decimals}}","email_unit":"¥{{amount_no_decimals}}","name":"日幣 (JPY)","html":"\u0026#165;{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"\u0026#165;{{amount_no_decimals}}","code":"JPY","symbol":"¥","email":"¥{{amount_no_decimals}}"},{"html_unit":"฿{{amount}}","email_unit":"฿{{amount}}","name":"泰銖 (THB)","html":"฿{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"฿{{amount}}","code":"THB","symbol":"฿","email":"฿{{amount}}"},{"html_unit":"{{amount_no_decimals}}₫","email_unit":"{{amount_no_decimals}}₫","name":"越南盾 (VND)","html":"{{amount_no_decimals}}₫","unit":"","trailing_zeros":false,"money_format":"%n%u","decimal_precision":0,"format":"{{amount_no_decimals}}₫","code":"VND","symbol":"₫","email":"{{amount_no_decimals}}₫"},{"html_unit":"RM {{amount}}","email_unit":"RM {{amount}}","name":"馬來西亞令吉 (MYR)","html":"RM {{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"RM {{amount}}","code":"MYR","symbol":"RM ","email":"RM {{amount}}"},{"html_unit":"S${{amount}}","email_unit":"S${{amount}}","name":"新加坡元 (SGD)","html":"S${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"S${{amount}}","code":"SGD","symbol":"S$","email":"S${{amount}}"},{"html_unit":"₩{{amount_no_decimals}}","email_unit":"₩{{amount_no_decimals}}","name":"韓圓 (KRW)","html":"₩{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"₩{{amount_no_decimals}}","code":"KRW","symbol":"₩","email":"₩{{amount_no_decimals}}"},{"html_unit":"A${{amount}}","email_unit":"A${{amount}}","name":"澳洲元 (AUD)","html":"A${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"A${{amount}}","code":"AUD","symbol":"A$","email":"A${{amount}}"},{"html_unit":"£{{amount}}","email_unit":"£{{amount}}","name":"英鎊 (GBP)","html":"£{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"£{{amount}}","code":"GBP","symbol":"£","email":"£{{amount}}"},{"html_unit":"CA${{amount}}","email_unit":"CA${{amount}}","name":"加拿大元 (CAD)","html":"CA${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"CA${{amount}}","code":"CAD","symbol":"CA$","email":"CA${{amount}}"},{"html_unit":"CHF {{amount}}","email_unit":"CHF {{amount}}","name":"瑞士法郎 (CHF)","html":"CHF {{amount}}","unit":"","trailing_zeros":false,"money_format":"%u %n","decimal_precision":2,"format":"CHF {{amount}}","code":"CHF","symbol":"CHF","email":"CHF {{amount}}"}],
112            vueOverrideTranslations: {"en":{"vue":{}}},
113            hasI18nInContextEditing: false,
114            shopMultipleCurrenciesCheckout: false,
115            hasLocalizedShopPriceFormat: true,
116          }
117        </script>
117
118
119        
120        
120<script
121          src="//cdn-general.cybassets.com/frontend/shop/tolgeeIntegration-e958d46bfee2e69f.js">
122        </script>
122
123        
123<script defer>
124          /*
125          * Enable in-context translation for Liquid part on the page.
126          * This must be executed last to prevent conflicts with other Vue apps.
127          * So put it to `onload`, which will be executed after DOM ready's app mount
128          */
129          window.onload = function() {
130            if (
131              window.shopScriptHelper &&
132              window.shopScriptHelper.hasI18nInContextEditing
133            ) {
134              window.initTolgeeForLiquid()
135            }
136          }
137        </script>
137
138
139<script> var google_con_event_labels = []</script>
vendor: 1 bytes, line 139
139
140<script src="//cdn-general.cybassets.com/frontend/shop/pageEventHandler-e958d46bfee2e69f.js"></script>
vendor: 1 bytes, line 140
140
141<script src="//cdn-general.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
141
142        
142<script>
143          window.c12t = {"customer_id":null};
144        </script>
144
145
146        <meta name="request-id" content="D916AB4A022C5F324F69FC3927EC340A"/>
147
148<link rel="canonical" href="https://www.labrume.com.tw/en/">
149<link rel="alternate" hreflang="zh-TW" href="https://www.labrume.com.tw/zh-TW/">
150<link rel="alternate" hreflang="zh-CN" href="https://www.labrume.com.tw/zh-CN/">
151<link rel="alternate" hreflang="en" href="https://www.labrume.com.tw/en/">
152<link rel="alternate" hreflang="x-default" href="https://www.labrume.com.tw/zh-TW/">
153<script src="//cdn-general.cybassets.com/frontend/shop/carousel-e958d46bfee2e69f.js"></script>
153
154          
154<script>
155            window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*');
156          </script>
156
157
158<script src="//cdn-general.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 158
158
159<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctRjM3SjBNWTI4\nTiwgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJDaGF0IEJveCIs\nImFwcF9pZCI6ImM5ZDgzZjA5OTYxNzRmYmJhODZlYmEwNDFhZTg5OGEyIiwi\nc2V0dGluZ3MiOnsid2lkZ2V0X2tleSI6IjZidEs0NEpOb1JPUVVDSzAifX0s\neyJ2ZW5kb3JfdHlwZSI6IkRpZ2l0YWwgSW50ZWxsaWdlbmNlIFRyYWNrZXIi\nLCJhcHBfaWQiOiIxYjUwYTg2ZGMyZDE0MTgzODhmZGVkZjdhMGQ0MzlhZSIs\nInNldHRpbmdzIjp7fX1d\n"}
160</script>
vendor: 1 bytes, line 160
160
161<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 161
161
162<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/8766542902afa60f4adda3c555c06025d2c27771ea85a6fc657a91cddbe5c59f.js"></script>
vendor: 1 bytes, line 162
162
163<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 163
163
164<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 164
164
165<script src="//cdn-general.cybassets.com/frontend/shop/setAffliateCookie-e958d46bfee2e69f.js"></script>
165
166
167
168
169
170
171
172
173
174
175
176    <style id="color_settings">
177  :root {
178    
179      --button: #3f2e1e;
180    
181
182    
183      --button_text: #bbb19e;
184    
185
186    
187      --accent: #926f2f;
188    
189
190    
191      --heading: #402f1f;
192    
193
194    
195      --text: #bbb19e;
196    
197
198    
199      --price: #402f1f;
200    
201
202    
203      --discount_price: #924a23;
204    
205
206    
207      --theme_bg: #FFFFFF;
208    
209
210    
211      --nav_logo_bg: #402f1f;
212    
213
214    
215      --nav_menu_bg: #FFFFFF;
216    
217
218    
219      --nav_menu_text: #402f1f;
220    
221
222    
223      --nav_menu_icon: #bbb19e;
224    
225
226    
227      --footer_bg: #f4eee2;
228    
229
230    
231      --footer_text: #402f1f;
232    
233
234    
235      --checkout_button: #402f1f;
236    
237
238    
239      --checkout_accent: #906e2f;
240    
241
242    
243      --product_border: #bbb19e;
244    
245
246    
247      --tips_text: #0C5460;
248    
249
250    
251
252    
253  }
254</style>
255
256
257
258    
259        <style>
260        .copyright {
261    
262        display: none;
263        }
264    </style>
265
266  
267        <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 267-268
267
268          <script async src="https://www.googletagmanager.com/gtag/js?id=
268G-F37J0MY28N
vendor: 22 bytes, lines 268-269
268"></script>
269          
269<script>
270            window.dataLayer = window.dataLayer || [];
271            function gtag(){dataLayer.push(arguments);}
272            gtag('js', new Date());
273            
274            
275      </script>
275
276      
276<script>
277        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
278        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
279        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
280        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
281
282        ga('create', '', 'auto', {'name': 'cyberbiz'});
283        ga('cyberbiz.require', 'displayfeatures');
284        ga('cyberbiz.set', 'dimension1', '23806');
285        ga('cyberbiz.require', 'ec');
286        ga('cyberbiz.send', 'pageview');
287      </script>
287
288    </head>
289
290  <body style="display: flex; flex-direction: column;">
vendor: 74 bytes, lines 290-292
290
291      <noscript><iframe
292      src="//www.googletagmanager.com/ns.html?id=
292GTM-TXD9LVJ
vendor: 117 bytes, lines 292-298
292"
293      height="0"
294      width="0"
295      style="display:none;visibility:hidden">
296      </iframe></noscript>
297    
298    
298<!-- Navigation -->
299    <!-- cyb_snippet liquid_helper start -->
300<script>
301	function getDiscountPriceName() {
302		return "true" === "true" ? "" : "";
303	}
304
305	function getDiscountPriceSuggestionName() {
306		return "false" === "true" ? "" : "";
307	}
308
309  document.addEventListener('DOMContentLoaded', function() {
310    const languageHandle = Cookies.get("language");
311    const defaultLanguage = {"handle":"zh-TW","currency_code":"TWD","title":"繁體中文"};
312    const languages = [{"handle":"zh-TW","currency_code":"TWD","title":"繁體中文"},{"handle":"zh-CN","currency_code":"CNY","title":"简体中文"},{"handle":"en","currency_code":"USD","title":"English"}];
313    const currency = window.shopScriptHelper.defaultCurrency;
314    const currencies = window.shopScriptHelper.currenciesInfo;
315		window.liquidHelper = {
316			shopInternational: true,
317			defaultLanguage: defaultLanguage,
318			language: languages.find(function(l) {
319				return l.handle === languageHandle;
320			}) || defaultLanguage,
321      shopMultipleCurrenciesCheckout: false,
322			shopMultipleCurrencies: true,
323			defaultCurrencyFormat: "NT${{amount_no_decimals}}",
324			defaultCurrency: currency,
325			getCurrency: function() {
326        const currencyValue = Cookies.get("currencyValue") || currency;
327        return currencies.find(function(c) { return c.code === currencyValue; }
328      )},
329      getDefaultCurrency: function() { return currencies.find(function(c) {
330				return c.code === currency;
331			})},
332      getAvailableCurrencies: function() { return currencies.map(c => c.code) },
333      getCurrencyFormatInfo: function(currency) {
334        const currencyInfo = currencies.find(c => c.code === currency)
335        return _.pick(currencyInfo, [
336          'decimal_precision',
337          'symbol',
338          'money_format',
339          'unit',
340          'trailing_zeros',
341          'html_unit',
342          'code',
343        ]);
344      },
345			cartQuantityLimit: (function() {
346        const limit = Number("0" || undefined);
347        return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit;
348      })(),
349			isFirstVariantSelected:  false ,
350			isImageColorsUsed:  false ,
351			isEmptyClickable:  true ,
352			hasAddBuyProduct: '' !== "" ? true : false,
353			hasPriceWithDiscountPlugin: 'true' ? true : false,
354      conversionBonus: 1,
355      hasLocalizedShopPriceFormat: true,
356      hasCustomerCartPlugin: true,
357      isCartEnabled: true,
358      cdnHost: '//cdn-general.cybassets.com',
359      hasShopCustomPasswordRulePlugin: false,
360      hasDisableProductQuantityValidation: false,
361      hasBreadcrumbReferrerEnabled: false,
362		};
363	});
364</script>
364
365
366<!-- cyb_snippet liquid_helper end -->
367
368<script src='//cdn-general.cybassets.com/frontend/shop/navbarSection-e958d46bfee2e69f.js' type='text/javascript'></script>
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385<style>
386  
387    #navbar {
388      --navbar-pc-title-scale: 0.9;
389      --navbar-pc-body-scale: 1.0;
390      --navbar-mobile-title-scale: 0.9;
391      --navbar-mobile-body-scale: 1.0;
392    }
393  
394
395  
396
397  
398</style>
399
400
401  <span id="navbar" class="drawer drawer--left font-size-setting-enabled">
402    <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0">
403      
404
405      
406        <div id="announcement-bar"></div>
407      
408
409      
410      
411        <div class="computer_nav qk-hidden--mobile ">
412          <div class="header_logo qk-bg--nav_logo_bg">
413            <div class="qk-pos--rel">
414              <div class="qk-text--center">
415                <!-- logo start -->
416                
417                  <nav class="logo qk-display--il_bk">
418                    <a href="/" class="qk-w--100">
419                      <img
420                        src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee"
421                        class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile"
422                        style="width: auto; height: 52px;"
423                        alt=""
424                        height="52"
425                        width="auto"
426                      >
427                    </a>
428                  </nav>
429                
430                <!-- logo end -->
431                <!-- tool-nav start -->
432                
433                  <!-- cyb_snippet tool_nav start -->
434
435
436
437
438
439
440<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex">
441  <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0">
442    
443    
444      
445      <li class="i18n-selector qk-fs--body qk-text--nav_menu_icon qk-bd--nav_menu_icon qk-btn"></li>
446    
447    <!-- member -->
448    
449      <li class="customer_account qk-pos--rel qk-pd--05">
450        <div class="dropdown qk-pos--static">
451          <div class="qk-cursor--pointer" data-toggle="dropdown">
452            <div data-icon-type="custom_icon_type_account"></div>
453            <span class="text"></span>
454          </div>
455          <div class="member qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu">
456            <ul id="customer-logined-menu" style="display: none">
457              <li>
458                <div class="qk-fs--body qk-text--heading">
459                  <p class="customer-name qk-whitespace-break-spaces"></p>
460                  <p>Welcome!</p>
461                </div>
462              </li>
463            </ul>
464            <ul id="customer-not-login-menu">
465              <li class="button qk-text--center">
466                <a href="/en/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">Log in</a>
467              </li>
468              <li class="button qk-text--center">
469                <a href="/en/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">Sign up</a>
470              </li>
471            </ul>
472            <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span>
473            <ul class="member-menu qk-bd_t--default qk-bd--product_border">
474              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
475                <a href="/en/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Account</a>
476              </li>
477              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
478                <a href="/en/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Order(s)</a>
479              </li>
480              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
481                <a href="/en/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Coupon(s)</a>
482              </li>
483              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg">
484                <a href="/en/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">My Wishlist</a>
485              </li>
486              <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg customer-logout-li" style="display: none">
487                <a href="/en/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">Logout</a>
488              </li>
489            </ul>
490          </div>
491        </div>
492      </li>
493    
494    <!-- for money symbol -->
495    <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div>
496    <!-- cart -->
497    
498      <li class="cart qk-pos--rel qk-pd--05">
499        <!--電腦版的購物車選單-->
500        <div class="dropdown qk-pos--static">
501          <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" >
502            <div data-icon-type="custom_icon_type_cart"></div>
503            <span class="global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-vert--mid qk-pos--abs qk-bd" style="display: none;">0</span>
504            <span class="global-cart-loading"></span>
505          </div>
506          <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu">
507            <div class="cart_list global-cart-item-list custom-scrollbar qk-of_x--hidden qk-of_y--scroll qk-of_y--overlay qk-display--flex qk-flex--column qk-justify--between default_scale"></div>
508            <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">There are no items in your cart.</p>
509            <ul>
510              <li class="button qk-text--center">
511                <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/en/cart" style="display: none">BUY NOW</a>
512                <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent" href="/en/account/tracking_items">Go to Wishlist</a>
513              </li>
514            </ul>
515          </div>
516        </div>
517      </li>
518    
519    <!-- search -->
520    
521      <li class="search qk-pos--rel qk-pd--05" id="search-icon">
522        <div class="dropdown qk-pos--static">
523          <div class="qk-cursor--pointer" data-toggle="dropdown">
524            <div data-icon-type="custom_icon_type_search"></div>
525          </div>
526          <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu">
527            <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid">
528              <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1">
529                <input class="search-input form-control qk-inputbox qk-inputbox--lg qk-flex--1 qk-w--100 qk-bg--transparent qk-text--heading" type="search" placeholder="Search" aria-label="Search" name="q" value="" />
530                <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">Search</button>
531              </form>
532            </div>
533          </div>
534        </div>
535      </li>
536    
537    <!-- express delivery -->
538    
539  </ul>
540</nav>
541
542<!-- cyb_snippet tool_nav end -->
543                
544                <!-- tool-nav end -->
545              </div>
546            </div>
547          </div>
548          
549            <div class="header_nav qk-bg--nav_menu_bg">
550              <div class="qk-pd_x--15">
551                <div class="qk-pos--relative center">
552                  <!-- main-nav start -->
553                  <nav class="main_nav qk-display--init">
554                    <!-- cyb_snippet _main_nav_skeleton start --><ul
555    class="main_nav_skeleton link_shelf_top qk-display--flex qk-flex--row qk-flex--wrap qk-justify--center qk-align--center qk-body"
556    style="justify-content: center; visibility: hidden;"
557    aria-hidden="true"
558  ><span>
559        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/new-arrival" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">New Arrivals 新品上市</a></li>
560      </span><span>
561        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/all" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Boutique 商店</a></li>
562      </span><span>
563        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/la-brume-選單" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Brands 松山選品</a></li>
564      </span><span>
565        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/la-brume-daan-選單" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Daan brands 大安選品</a></li>
566      </span><span>
567        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/collections/discovery-set" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">Discovery Sets 探索體驗</a></li>
568      </span><span>
569        <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/about-us" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">About 關於我們</a></li>
570      </span></ul><!-- cyb_snippet _main_nav_skeleton end -->
571                  </nav>
572                  <!-- main-nav end -->
573                </div>
574              </div>
575            </div>
576          
577        </div>
578      
579      <div class="qk-hidden--pc  ">
580        <!-- mobile-nav start -->
581        <nav class="mobile-nav qk-bg--nav_logo_bg">
582          <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0">
583            <!-- menu -->
584            
585              <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center">
586                <div data-icon-type="custom_icon_type_menu"></div>
587              </li>
588            
589            <!-- logo -->
590            
591              <li class="logo qk-mg_r--auto qk-pd_x--05 qk-pd_y--0">
592                
593                  <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone">
594                    <img
595                      src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee"
596                      height="25"
597                      width="auto"
598                      alt=""
599                    >
600                  </a>
601                
602                
603                  <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet">
604                    <img
605                      src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee"
606                      height="25"
607                      width="auto"
608                      alt=""
609                    >
610                  </a>
611                
612              </li>
613            
614            
615              <!-- search -->
616              
617                <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center ">
618                  <div class="dropdown qk-pos--static qk-text--center">
619                    <div class="qk-cursor--pointer" data-toggle="dropdown">
620                      <div data-icon-type="custom_icon_type_search"></div>
621                    </div>
622                    <div
623                      class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0"
624                      role="menu"
625                    >
626                      <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100">
627                        <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1">
628                          <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1">
629                            <input
630                              class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--transparent qk-text--heading"
631                              type="search"
632                              placeholder="Search"
633                              aria-label="Search"
634                              name="q"
635                              value=""
636                            >
637                            <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">
638                              Search
639                            </button>
640                          </div>
641                        </form>
642                      </div>
643                    </div>
644                  </div>
645                </li>
646              
647              <!-- express delivery -->
648              
649            
650          </ul>
651        </nav>
652        <!-- mobile-nav end -->
653      </div>
654      
655    </header>
655<script>
656      (function () {
657        var isNavbarTransparent = false;
658
659        function measureHeaderOffset() {
660          var header = document.getElementById('header');
661          if (!header) return null;
662
663          var headerHeight = header.getBoundingClientRect().height;
664
665          if (isNavbarTransparent && window.matchMedia('(min-width: 992px)').matches) {
666            var computerNav = document.querySelector('.computer_nav');
667            if (computerNav) {
668              headerHeight -= computerNav.getBoundingClientRect().height;
669            }
670          }
671
672          var floatFilter = document.getElementById('float-filter');
673          var floatFilterHeight = floatFilter
674            ? floatFilter.getBoundingClientRect().height
675            : 0;
676
677          return headerHeight - floatFilterHeight;
678        }
679
680        window.measureHeaderOffset = measureHeaderOffset;
681
682        var offset = measureHeaderOffset();
683        if (offset !== null) {
684          document.body.style.paddingTop = offset + 'px';
685        }
686      })();
687    </script>
687
688    
689      <!-- Sidebar -->
690      <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation">
691        <div class="drawer-menu">
692          <!-- cyb_snippet side_menu start -->
693
694
695<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1">
696  
697    <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05">
698      <a href="/" class="qk-pd--0">
699        <img src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee" height="32" width="auto" alt="logo">
700      </a>
701      <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button>
702    </li>
703  
704  
705    
706
707    
708      <!-- cyb_snippet components/side_menu/menu start -->
709
710  <li class="category_title qk-fs--breadcrumb qk-bd--nav_menu_text qk-text--nav_menu_text qk-bd_b--default qk-fw--500">主選單</li>
711
712
713  
714  
715  
716    <li class="qk-pos--rel qk-pd--0">
717      
718        <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/new-arrival">New Arrivals 新品上市</a>
719      
720    </li>
721  
722
723  
724  
725  
726    <li class="qk-pos--rel qk-pd--0">
727      <button class="linklist bt-toggle qk-fw--bold  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_2" aria-expanded=" true ">
728        
729          <a class="qk-text--nav_menu_text" href="/collections/all"> Boutique 商店 </a>
730        
731      </button>
732      <ul id="index_sidebar_shelf_second_2" class="collapse_index_sidebar_2 collapse shelf_second  show  qk-pd--0">
733        
734          
735          
736          
737            <li class="qk-pos--rel qk-pd--0">
738              
739                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/new-arrival">
740                  New Arrivals 新品上市
741                </a>
742              
743            </li>
744          
745        
746          
747          
748          
749            <li class="qk-pos--rel qk-pd--0">
750              
751                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/eau-de-toilette">
752                  Eau de Toilette 淡香水
753                </a>
754              
755            </li>
756          
757        
758          
759          
760          
761            <li class="qk-pos--rel qk-pd--0">
762              
763                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/eau-de-parfum">
764                  Eau de Parfum 淡香精
765                </a>
766              
767            </li>
768          
769        
770          
771          
772          
773            <li class="qk-pos--rel qk-pd--0">
774              
775                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/extrait-de-parfum">
776                  Extrait de Parfum 香精
777                </a>
778              
779            </li>
780          
781        
782          
783          
784          
785            <li class="qk-pos--rel qk-pd--0">
786              
787                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/travel-editions">
788                  Travel Editions 旅行香水
789                </a>
790              
791            </li>
792          
793        
794          
795          
796          
797            <li class="qk-pos--rel qk-pd--0">
798              
799                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/discovery-set">
800                  Discovery Sets 探索試香
801                </a>
802              
803            </li>
804          
805        
806          
807          
808          
809            <li class="qk-pos--rel qk-pd--0">
810              
811                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/home-fragrance">
812                  Home Fragrance 空間香氛
813                </a>
814              
815            </li>
816          
817        
818          
819          
820          
821            <li class="qk-pos--rel qk-pd--0">
822              
823                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/scented-candle">
824                  Scented Candle 香氛蠟燭
825                </a>
826              
827            </li>
828          
829        
830          
831          
832          
833            <li class="qk-pos--rel qk-pd--0">
834              
835                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/scented-objects-香氛物件">
836                  Scented Objects 香氛物件
837                </a>
838              
839            </li>
840          
841        
842          
843          
844          
845            <li class="qk-pos--rel qk-pd--0">
846              
847                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/incense-paper">
848                  Incense & Scent Papers 線香&香紙
849                </a>
850              
851            </li>
852          
853        
854          
855          
856          
857            <li class="qk-pos--rel qk-pd--0">
858              
859                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/body-care">
860                  Body Care 身體保養
861                </a>
862              
863            </li>
864          
865        
866          
867          
868          
869            <li class="qk-pos--rel qk-pd--0">
870              
871                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/all">
872                  All Products 所有商品
873                </a>
874              
875            </li>
876          
877        
878      </ul>
879    </li>
880  
881
882  
883  
884  
885    <li class="qk-pos--rel qk-pd--0">
886      <button class="linklist bt-toggle qk-fw--bold  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_3" aria-expanded=" true ">
887        
888          <a class="qk-text--nav_menu_text" href="/collections/la-brume-選單"> Brands 松山選品 </a>
889        
890      </button>
891      <ul id="index_sidebar_shelf_second_3" class="collapse_index_sidebar_3 collapse shelf_second  show  qk-pd--0">
892        
893          
894          
895          
896            <li class="qk-pos--rel qk-pd--0">
897              
898                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/bontemps">
899                  BONTEMPS PARIS
900                </a>
901              
902            </li>
903          
904        
905          
906          
907          
908            <li class="qk-pos--rel qk-pd--0">
909              
910                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/浮世誌-earthly-records-day-pass-incense-paper">
911                  Earthly Records
912                </a>
913              
914            </li>
915          
916        
917          
918          
919          
920            <li class="qk-pos--rel qk-pd--0">
921              
922                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/headspace">
923                  HEADSPACE
924                </a>
925              
926            </li>
927          
928        
929          
930          
931          
932            <li class="qk-pos--rel qk-pd--0">
933              
934                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/liis">
935                  Liis
936                </a>
937              
938            </li>
939          
940        
941          
942          
943          
944            <li class="qk-pos--rel qk-pd--0">
945              
946                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/marie-jeanne">
947                  MARIE JEANNE
948                </a>
949              
950            </li>
951          
952        
953          
954          
955          
956            <li class="qk-pos--rel qk-pd--0">
957              
958                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/neandertal">
959                  NEANDERTAL
960                </a>
961              
962            </li>
963          
964        
965          
966          
967          
968            <li class="qk-pos--rel qk-pd--0">
969              
970                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/notes-de-bas-de-paje">
971                  NOTES DE BAS DE PAJE
972                </a>
973              
974            </li>
975          
976        
977          
978          
979          
980            <li class="qk-pos--rel qk-pd--0">
981              
982                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/oddity-fragrance">
983                  Oddity fragrance
984                </a>
985              
986            </li>
987          
988        
989          
990          
991          
992            <li class="qk-pos--rel qk-pd--0">
993              
994                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/racyne-perfumes">
995                  Racyne
996                </a>
997              
998            </li>
999          
1000        
1001          
1002          
1003          
1004            <li class="qk-pos--rel qk-pd--0">
1005              
1006                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sora-dora">
1007                  SORA DORA
1008                </a>
1009              
1010            </li>
1011          
1012        
1013          
1014          
1015          
1016            <li class="qk-pos--rel qk-pd--0">
1017              
1018                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sonavojago-fragrance">
1019                  Sona Vojaĝo
1020                </a>
1021              
1022            </li>
1023          
1024        
1025          
1026          
1027          
1028            <li class="qk-pos--rel qk-pd--0">
1029              
1030                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/venue">
1031                  VENUE
1032                </a>
1033              
1034            </li>
1035          
1036        
1037      </ul>
1038    </li>
1039  
1040
1041  
1042  
1043  
1044    <li class="qk-pos--rel qk-pd--0">
1045      <button class="linklist bt-toggle qk-fw--bold  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_4" aria-expanded=" true ">
1046        
1047          <a class="qk-text--nav_menu_text" href="/collections/la-brume-daan-選單"> Daan brands 大安選品 </a>
1048        
1049      </button>
1050      <ul id="index_sidebar_shelf_second_4" class="collapse_index_sidebar_4 collapse shelf_second  show  qk-pd--0">
1051        
1052          
1053          
1054          
1055            <li class="qk-pos--rel qk-pd--0">
1056              
1057                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/agar-archive">
1058                  Agar Archive
1059                </a>
1060              
1061            </li>
1062          
1063        
1064          
1065          
1066          
1067            <li class="qk-pos--rel qk-pd--0">
1068              
1069                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/almost-fever">
1070                  almost fever
1071                </a>
1072              
1073            </li>
1074          
1075        
1076          
1077          
1078          
1079            <li class="qk-pos--rel qk-pd--0">
1080              
1081                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/dinshare-黑地">
1082                  DINshare
1083                </a>
1084              
1085            </li>
1086          
1087        
1088          
1089          
1090          
1091            <li class="qk-pos--rel qk-pd--0">
1092              
1093                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/kintsugi-perfumes">
1094                  KINTSUGI PERFUMES
1095                </a>
1096              
1097            </li>
1098          
1099        
1100          
1101          
1102          
1103            <li class="qk-pos--rel qk-pd--0">
1104              
1105                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/liis">
1106                  Liis
1107                </a>
1108              
1109            </li>
1110          
1111        
1112          
1113          
1114          
1115            <li class="qk-pos--rel qk-pd--0">
1116              
1117                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/nown-unown">
1118                  nown unown
1119                </a>
1120              
1121            </li>
1122          
1123        
1124          
1125          
1126          
1127            <li class="qk-pos--rel qk-pd--0">
1128              
1129                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/oddity-fragrance">
1130                  Oddity fragrance
1131                </a>
1132              
1133            </li>
1134          
1135        
1136          
1137          
1138          
1139            <li class="qk-pos--rel qk-pd--0">
1140              
1141                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/odeaur">
1142                  Ōdeaur
1143                </a>
1144              
1145            </li>
1146          
1147        
1148          
1149          
1150          
1151            <li class="qk-pos--rel qk-pd--0">
1152              
1153                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/olfactif">
1154                  Olfactif
1155                </a>
1156              
1157            </li>
1158          
1159        
1160          
1161          
1162          
1163            <li class="qk-pos--rel qk-pd--0">
1164              
1165                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/racyne-perfumes">
1166                  Racyne
1167                </a>
1168              
1169            </li>
1170          
1171        
1172          
1173          
1174          
1175            <li class="qk-pos--rel qk-pd--0">
1176              
1177                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sora-dora">
1178                  SORA DORA
1179                </a>
1180              
1181            </li>
1182          
1183        
1184          
1185          
1186          
1187            <li class="qk-pos--rel qk-pd--0">
1188              
1189                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/venue">
1190                  VENUE
1191                </a>
1192              
1193            </li>
1194          
1195        
1196      </ul>
1197    </li>
1198  
1199
1200  
1201  
1202  
1203    <li class="qk-pos--rel qk-pd--0">
1204      
1205        <a class="qk-fw--bold qk-dis
1205play--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/discovery-set">Discovery Sets 探索體驗</a>
1206      
1207    </li>
1208  
1209
1210  
1211  
1212  
1213    <li class="qk-pos--rel qk-pd--0">
1214      <button class="linklist bt-toggle qk-fw--bold  qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_6" aria-expanded=" true ">
1215        
1216          <a class="qk-text--nav_menu_text" href="/pages/about-us"> About 關於我們 </a>
1217        
1218      </button>
1219      <ul id="index_sidebar_shelf_second_6" class="collapse_index_sidebar_6 collapse shelf_second  show  qk-pd--0">
1220        
1221          
1222          
1223          
1224            <li class="qk-pos--rel qk-pd--0">
1225              
1226                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/our-journey-stories-歷程與故事">
1227                  Our Journey 歷程故事
1228                </a>
1229              
1230            </li>
1231          
1232        
1233          
1234          
1235          
1236            <li class="qk-pos--rel qk-pd--0">
1237              
1238                <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/會員制度&升級辦法-20250616155817">
1239                  Member Benefits 會員制度
1240                </a>
1241              
1242            </li>
1243          
1244        
1245      </ul>
1246    </li>
1247  
1248
1249
1250<script>
1251  $('button a').on('click', function(e) {e.stopPropagation()});
1252</script>
1252
1253
1254<!-- cyb_snippet components/side_menu/menu end -->
1255    
1256  
1257  
1258    
1259      <li class="category_account-title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">Account</li>
1260      <li class="qk-pos--rel qk-pd--0">
1261        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1262          <a href="/en/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Account</a>
1263        </div>
1264      </li>
1265      <li class="qk-pos--rel qk-pd--0">
1266        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1267          <a href="/en/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">My Order(s)</a>
1268        </div>
1269      </li>
1270      <li class="qk-pos--rel qk-pd--0">
1271        <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none">
1272          <a href="/en/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">Logout</a>
1273        </div>
1274      </li>
1275      <li class="qk-pos--rel qk-pd--0">
1276        <a href="/en/account/login">
1277          <div class="customer-not-login-menu qk-bd--nav_menu_text qk-bg--nav_menu_text customer-not-login-menu_login qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center ">
1278            <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body">
1279              Log in
1280            </span>
1281          </div>
1282        </a>
1283      </li>
1284      <li class="qk-pos--rel qk-pd--0">
1285        <a href="/en/account/signup">
1286          <div class="customer-not-login-menu qk-bd--nav_menu_text customer-not-login-menu_signup qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center qk-bd--nav_menu_text qk-bd--default">
1287            <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500">
1288              Sign up
1289            </span>
1290          </div>
1291        </a>
1292      </li>
1293    
1294    
1295    
1296    
1297      <li class="category_title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">
1298        
1299          Language
1300        
1301        
1302          |
1303        
1304        
1305          Currency
1306        
1307      </li>
1308      <li id="side-menu-modal__button" class="qk-text--nav_menu_text qk-fw--bold language_button qk-fs--body qk-text--nav_menu_text">
1309      </li>
1310    
1311  
1312</ul>
1313
1314<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/sidebar-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
1315
1316<script>
1317  $(document).ready(function(){
1318    // 側邊選單
1319    if ($('.drawer').length){
1320      $('.drawer').drawer();
1321      $('.bt-toggle').click(function(){
1322        setTimeout(function(){
1323          $('.drawer')[0].iScroll.refresh()
1324        },500)
1325      })
1326    }
1327  });
1328</script>
1328
1329
1330<script>
1331  $(document).ready(function(){
1332    const languageSize = 3
1333    const currencySize = 15
1334
1335    const initLanguageAndCurrency = ({language,code})=> {
1336      const contentSelector = $("#side-menu-modal__button");
1337      let content = ''
1338      const isMutipleCurrencies = true
1339      const isMultiLanguages = true
1340      if ( isMultiLanguages && languageSize > 1 ) content = language || (liquidHelper.language && liquidHelper.language.title)
1341      if ( isMutipleCurrencies && (code && content === '')) content = code
1342      else if (isMutipleCurrencies && (code && content !=='')) content = `${content}|${code}`
1343      contentSelector.text(content)
1344    }
1345
1346    let code = ''
1347    let language = ''
1348    if (liquidHelper.language) language  = liquidHelper.language
1349    if (liquidHelper.getCurrency()) code = liquidHelper.getCurrency().code
1350
1351    initLanguageAndCurrency({ language:language.title, code })
1352
1353    $("#side-menu-modal__button").click(function() {
1354      const clickable = languageSize > 1 || currencySize > 1
1355      if (clickable) {
1356        $('.drawer').drawer('close');
1357        const event = new CustomEvent("i18n_selector_clicked");
1358        document.dispatchEvent(event);
1359      }
1360    });
1361
1362    document.addEventListener('i18n_modal_confirmed', (e) => {
1363      const { languageTitle, currency } = e.detail;
1364      initLanguageAndCurrency({ language: languageTitle, code: currency });
1365    });
1366  });
1367
1368</script>
1368
1369
1370
1371<!-- cyb_snippet side_menu end -->
1372
1373        </div>
1374      </nav>
1375      <!-- Bottombar -->
1376      
1377        <div
1378          id="mobile-bottom-bar"
1379          class="qk-display--flex qk-justify--around qk-bg--nav_logo_bg qk-w--100vw qk-pos--fixed qk-b--0 qk-hidden--pc"
1380        >
1381          <!-- home -->
1382          <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1383            <a id="home-nav-icon" href="/">
1384              <div data-icon-type="custom_icon_type_home"></div>
1385            </a>
1386          </div>
1387          <!-- tracking items -->
1388          <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1389            <a href="/en/account/tracking_items">
1390              <div data-icon-type="custom_icon_type_tracking_items" c></div>
1391            </a>
1392          </div>
1393          <!-- cart -->
1394          
1395            <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1396              <a
1397                href="/en/cart"
1398                class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel"
1399              >
1400                <div data-icon-type="custom_icon_type_cart"></div>
1401                <span
1402                  class="number global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-text--center qk-vert--mid qk-pos--abs"
1403                  style="display: none;"
1404                  >0</span
1405                >
1406              </a>
1407            </div>
1408          
1409          <!-- member -->
1410          
1411            <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1">
1412              <a id="customer-phone-nav-icon" href="/en/account/login">
1413                <div data-icon-type="custom_icon_type_account"></div>
1414              </a>
1415            </div>
1416          
1417        </div>
1418      
1419    
1420  </span>
1421
1422<div id="index-popular-tags"></div>
1423
1424<style id="timer_color">
1425  :root {
1426    
1427      --timer_text: #eee1d2;
1428    
1429
1430    
1431      --timer_bg: #2a0e05;
1432    
1433  }
1434</style>
1435
1436<script>
1437  window.language = {"account_name":"Bank Account Name","add_cart_error_try_again":"Network error, please try again.","add_to_cart":"ADD TO CART","addcart_rate_limit_desc":"seconds until you can try again. We recommend staying on this page.","address1":"Return Address","all_filters":"All Filters","apply_fail":"Application Failed","apply_return":"Return Application","apply_return_success":"Refund Request Sent","apply_success":"Successful Application","arrive_soon":"Arriving Soon","articles_total":"Total of {{ totalArticleCounts }} articles","bank_account":"Bank Account","bank_branch_name":"Name of Branch","bonus_redemption":"Exchange Credit Point(s)","cancel":"Cancel","cart_price_total":"Total","check_order":"My Order(s)","choose_branch_bank":"Select Bank Branch","choose_return_reason":"Select Return Reason","city":"City","common_price":"Retail Price","comply_group_number":"Comply {{comply_group_number}} group(s) of discount, ","confirm":"Confirm","confirm_return":"Apply Refund","confirm_submit":"Submit","congratulations_for_verify_mobile_success":"Congratulations, you've successfully verified your phone!","contact_form":"Contact Form","continue_reading":"Continue Reading","country_placeholder":"Select country","coupon_free_shipping":"Free Shipping Coupon","coupon_items":"Coupon Discount Item","date_error":"Date error","default_sort":"Store Recommendations","deliver_error":"Delivery Error","discount_detail":"Discount Details","email":"Email Address","email_placeholder":"Enter your email, e.g.: [email protected]","enter_account_name":"Enter bank account name","enter_bank_account":"Enter bank account number","enter_return_reason":"Please specify the return reason...","error_message":"An error has occurred when sending a verification message; please try again later.","fail_operation":"Something went wrong; please try again later!","filter_button":"Filter","filter_no_result":"Sorry, no results","free":"Free","gift_price":"Discount Price","gift_purchase":"Gift with purchase","go_check_email":"Please check your mailbox; we've just sent you an email.","group_percent_discount":"{{percent_discount}} % off item(s) in the group.","has_stock":"In Stock","include_discount_and_shipping_fee":"Including discount and shipping fee","invalid_email":"Invalid Email","invalid_name":"Name required","invalid_phone_number":"Phone number required","invalid_question_content":"Please enter your message","keep_shopping":"Keep Shopping","keyin_address1":"Please enter the address we should collect the returning goods","keyin_city":"Please enter city name","keyin_zip":"Please enter postal code","less_then_one":"Quantity must be greater than 0; please select the amount to purchase.","line_item_quantity":"Quantity: {{ lineItemQuantity }}","literal_points":"point(s)","login_btn":"Log in","mail_send_fail":"Failed to send mail.","message_confirmation_token_error":"Error in verification code.","messenger_error_please_try_again":"An error has occurred when sending the message; please try again later.","mobile_number_error":"Mobile phone number in error.","name":"Name","name_placeholder":"Enter your name","new_password_is_sent":"New password is sent.","new_product_defect":"Defect on New Product","nn_collection_save_more_money_title":"for {{price}}","no_stock":"Out of Stock","notification_enabled":"Notification enabled","notify_me_when_stock_arrives":"Sold out! Notify me when the product is available.","onsale":"On Sale","order_date":"Order Date","order_number":"Order Number","order_retrun_confirm":"Are you sure you want to request a refund?","ori_price":"Original Price","others":"Others","over_cart_limit":"Quantity exceeds shopping cart limit; please remove some items and place the order again.","over_product_quantity":"Quantity exceeds the purchase limit; please reduce the quantity selected.","over_stock_count":"Quantity exceeds inventory stock. Remaining {{ count }}","over_stock_quantity":"The quantity entered exceeds the stock quantity. Please decrease your order.","phone_number":"Phone Number","phone_number_placeholder":"Enter your phone number","piece":"{{quantity}} item(s)","please_choose_bank":"Select Bank","please_choose_product":"Please select specifications.","please_choose_variant":"Please select product specifications.","please_enter_number":"Please enter a number.","please_reselect":"Try removing some filters to 
1437see more items","please_send_and_confirm_verify_code":"Please send and confirm the verification code.","pre_order":"Pre-order Goods","price_asc":"Price Low To High","price_desc":"Price High To Low","price_filter":"Price","price_includes_tax":"(includes consumption tax of {{ tax }})","product_content_defect":"Wrong Product or Incomplete Product","product_defect":"Defective Product","product_limit_buy":"Limited purchase of this product {{ count }} items","product_rate_limit_btn":"Re-enter product page","product_rate_limit_desc":"seconds until you can re-enter the product page. We recommend staying on this page.","product_rate_limit_title":"High demand right now, please wait","product_rate_limit_warn":"Leaving this page may increase your wait time.","product_sold":"Sold {{ productSold }} products","products_total":"Total of {{ totalProductCounts }} products","quantity":"Quantity","quantity_over_product_stock":"The quantity entered exceeds available product stock. Please decrease your order.","question_content":"Message","question_content_placeholder":"Please enter your message","question_submit_fail":"Something went wrong; please try again later!","question_submit_success":"The question has been sent successfully. We will contact you as soon as possible!","question_type":"Question Type","reached_favorable":"Promotion Reached","recent_days_sold_desc":"Best Seller","reenter_password_still_error":"Error: Password does not match.","refund":"Refund Amount","refund_account":"Refund Account","refund_info":"Refund Information","refund_invoice_check":"I agree to the cancellation of the invoice or the \"Tax Payment Certificate\", and give consent to {{company_name}} to be handled at discretion in order to expedite the refund process.","resend_verify_code":"Resend verification code.","reset_all_filters":"Reset All Filters","reset_filter_button":"Reset Filter","return":"Return","return_address":"Return Address","return_email_notification":"A copy of the refund details have been sent to your email","return_info":"Return Information","return_instruction":"Return Information","return_msg_Australia":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible.\u003cbr\u003e 2. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 3. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 4. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e 5. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e","return_msg_Japan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Japan_to_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will c
1437ontact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_SEA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_msg_Taiwan":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter to \" My Account\", find your order and click \"My Order(s)\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. If you have any return questions, you can click \"Message Shop\" on the \"My Order(s)\" page. Please do not send back the goods by yourself.\u003cbr\u003e 4. Please print this application form and send it with the goods.\u003cbr\u003e 5. Once your returned item is received and reviewed, a refund will be made to your original payment method; it would take up to 5 to 10 days until it shows on your bank statement.\u003cbr\u003e","return_msg_USA":"1. If any defects or breakages are found upon receiving the goods, and you need to apply for an exchange or refund, please enter \"My Account\", find your order and click \"View Status\", then click on \"Apply Refund\" as soon as possible. Please refer to the shop's return policy for detailed information and guidance.\u003cbr\u003e 2. When returning or exchanging goods, please keep the original package intact (including purchased goods, accessories, gifts, etc.).\u003cbr\u003e 3. After receiving the refund application, we will contact you to retrieve the goods. \u003cbr\u003e 4. If you have any return questions, you can leave a message to the shop on the \"Order(s)\" page. Please do not send back the goods before confirming with the shop.\u003cbr\u003e 5. Once your returned item is received and inspected, an exchange or a refund will be made according to the shop's return policy.\u003cbr\u003e","return_product":"Product Return Request","return_reason":"Return Reason","save_more_money_discount":"to enjoy {{percent_discount}}% off.","save_more_money_dollar":"Get {{dollar}} discount","search_article_label":"Article results ({{ totalArticleCounts }})","search_no_result":"Sorry, no results found by searching: {{ queryString }}. Please try a different word.","search_product_label":"Product results ({{ totalProductCounts }})","search_total":"Search: {{ queryString }} / {{ totalSearchCount }} item(s) found","select_sort_by":"Sort By","sell_from_asc":"Store Essentials","sell_from_desc":"New Arrivals","send_too_many_times_try_again_later":"Sent too many times, please try again later.","sending_msg_few_minutes_get":"SMS sending… You'll receive a verification code in a few minutes.","shipping_fee":"Shipping Fee","sold_out":"Sold Out","state_placeholder":"Select state / province","submit":"Submit","subtotal":"Subtotal","success_operation":"Message Sent!","successfully_copy_tracking_number":"Tracking number copied successfully","system_busy_try_again":"System busy; please try again later.","tax":"Tax","thanks_for_advise":"Thanks for your feedback.","thanks_you_have_signed_up":"Thanks for registering!","total_bonus_redemption":"Total Credit Point(s) Redemption","tw_city_placeholder":"County / City","tw_district_placeholder":"District","unreach_favorable":"Promotion Unreached","verification_error_please_correct":"Error during verification, please try again.","verify_success":"Verification code confirmed.","view_product":"View Product","vip_shipping_free":"Free Shipping For Members","zip":"ZIP / Postcode","suggested_range":"Suggested Range","periodic_order_label":"Subscription","check_account_length":"Bank Account Length Validation"}
1438  $(document).ready(function(){
1439    if(window.location.pathname != '' && window.location.pathname != '/' ){
1440      document.getElementById('index-popular-tags').style.display = 'none'
1441    }
1442    // 倒數計時
1443    
1444      var leftDay = $('.left_day');
1445      var leftHour = $('.left_hour');
1446      var leftMin = $('.left_min');
1447      var leftSec = $('.left_sec');
1448      var nowTime = '' * 1;
1449      var startTime = '' ? '' * 1 : nowTime;
1450      var endTime = '' * 1;
1451
1452      function paddedFormat(num) {
1453        return num < 10 ? "0" + num : num;
1454      };
1455
1456      function startCountDown(duration) {
1457        var left_day, left_hour, left_min, left_sec = 0;
1458        var countInterval = setInterval(function () {
1459          leftDay.html(paddedFormat(parseInt(duration / 3600 / 24)));
1460          leftHour.html(paddedFormat(parseInt(duration / 3600) % 24));
1461          leftMin.html(paddedFormat(parseInt(duration / 60) % 60));
1462          leftSec.html(paddedFormat(parseInt(duration) % 60));
1463          duration = duration - 1;
1464          if (duration < 0) {
1465            clearInterval(countInterval);
1466          };
1467        }, 1000);
1468      };
1469
1470      if (startTime <= nowTime && endTime > nowTime) {
1471        startTime = nowTime;
1472        startCountDown(endTime - startTime);
1473      }
1474    
1475
1476    function adjustContentTop() {
1477      const offset = window.measureHeaderOffset();
1478      if (offset === null) return;
1479      $("body").css({ "padding-top": offset + "px" });
1480    }
1481
1482    window.adjustContentTop = adjustContentTop;
1483
1484    // navbar設定透明
1485    
1486
1487    // Call it first once DOM is ready to prevent CLS
1488    adjustContentTop();
1489
1490    // 延遲初始化,等待 app banner 初始化完成
1491    $(window).on("resize", adjustContentTop);
1492
1493    // 使用 setTimeout 確保 banner 狀態已經確定
1494    $(window).on("load", function() {
1495      setTimeout(function() {
1496        adjustContentTop();
1497      }, 200); // 給 banner 足夠時間初始化
1498    });
1499
1500    $('img.header_banner').on('load', adjustContentTop);
1501
1502    window.renderNavbarSection('.main_nav', {
1503        navbarCollections: null,
1504        navbarItems: [{"id":1239740,"title":"New Arrivals 新品上市","url":"/collections/new-arrival","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769966,"title":"Boutique 商店","url":"/collections/all","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1769968,"title":"New Arrivals 新品上市","url":"/collections/new-arrival","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769973,"title":"Eau de Toilette 淡香水","url":"/collections/eau-de-toilette","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769974,"title":"Eau de Parfum 淡香精","url":"/collections/eau-de-parfum","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769975,"title":"Extrait de Parfum 香精","url":"/collections/extrait-de-parfum","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769976,"title":"Travel Editions 旅行香水","url":"/collections/travel-editions","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769984,"title":"Discovery Sets 探索試香","url":"/collections/discovery-set","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769977,"title":"Home Fragrance 空間香氛","url":"/collections/home-fragrance","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769978,"title":"Scented Candle 香氛蠟燭","url":"/collections/scented-candle","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1785718,"title":"Scented Objects 香氛物件","url":"/collections/scented-objects-香氛物件","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769979,"title":"Incense \u0026 Scent Papers 線香&香紙","url":"/collections/incense-paper","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769980,"title":"Body Care 身體保養","url":"/collections/body-care","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769981,"title":"All Products 所有商品","url":"/collections/all","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1793718,"title":"Brands 松山選品","url":"/collections/la-brume-選單","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":2149018,"title":"BONTEMPS PARIS","url":"/collections/bontemps","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793727,"title":"Earthly Records","url":"/collections/浮世誌-earthly-records-day-pass-incense-paper","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793731,"title":"HEADSPACE","url":"/collections/headspace","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2072281,"title":"Liis","url":"/collections/liis","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793734,"title":"MARIE JEANNE","url":"/collections/marie-jeanne","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793732,"title":"NEANDERTAL","url":"/collections/neandertal","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793728,"title":"NOTES DE BAS DE PAJE","url":"/collections/notes-de-bas-de-paje","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793742,"title":"Oddity fragrance","url":"/collections/oddity-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793743,"title":"Racyne","url":"/collections/racyne-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2072278,"title":"SORA DORA","url":"/collections/sora-dora","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793730,"title":"Sona Vojaĝo","url":"/collections/sonavojago-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}
1504,{"id":2072279,"title":"VENUE","url":"/collections/venue","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1793706,"title":"Daan brands 大安選品","url":"/collections/la-brume-daan-選單","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":[{"id":2153635,"title":"Agar Archive","url":"/collections/agar-archive","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793708,"title":"almost fever","url":"/collections/almost-fever","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793709,"title":"DINshare","url":"/collections/dinshare-黑地","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793710,"title":"KINTSUGI PERFUMES","url":"/collections/kintsugi-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793711,"title":"Liis","url":"/collections/liis","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":2005324,"title":"nown unown","url":"/collections/nown-unown","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793712,"title":"Oddity fragrance","url":"/collections/oddity-fragrance","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793713,"title":"Ōdeaur","url":"/collections/odeaur","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793714,"title":"Olfactif","url":"/collections/olfactif","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793715,"title":"Racyne","url":"/collections/racyne-perfumes","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1793716,"title":"SORA DORA","url":"/collections/sora-dora","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1943520,"title":"VENUE","url":"/collections/venue","item_type":"smart_collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":1769983,"title":"Discovery Sets 探索體驗","url":"/collections/discovery-set","item_type":"custom_collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769954,"title":"About 關於我們","url":"/pages/about-us","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":[{"id":1769960,"title":"Our Journey 歷程故事","url":"/pages/our-journey-stories-歷程與故事","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1769957,"title":"Member Benefits 會員制度","url":"/pages/會員制度&升級辦法-20250616155817","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}]}],
1505        settings: {
1506          menuDisplayStyle: "three_dimension_menu",
1507          pcLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee",
1508          mobileLogoImgUrl: "//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTYzMDk2X-iLpeawtGxvZ28ucG5nLnBuZyJdXQ.png?sha=9f6d9c1fb602ddee",
1509          navbarDisplayStyle: "displayDefault",
1510        }
1511      }
1512    );
1513
1514
1515    // for link menu
1516    const linkMenuElement = document.querySelector('.link-nav');
1517    const data = []
1518    data.forEach((item) => {
1519      const wrapper = document.createElement('a');
1520      const link = document.createElement('ul');
1521
1522      wrapper.href = item.url;
1523      link.textContent = item.title;
1524      link.classList.add('link-item');
1525
1526      wrapper.appendChild(link);
1527      linkMenuElement.appendChild(wrapper);
1528    });
1529
1530    // for safe-area space on iOS devices
1531    const userAgent = navigator.userAgent;
1532    const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream;
1533    const isLiff = /Line\/[\d.]+/i.test(userAgent);
1534    const $mobileBottomBar = $('#mobile-bottom-bar');
1535
1536    if ($mobileBottomBar.length && isIOS && isLiff) {
1537      $mobileBottomBar.addClass('is-ios-liff');
1538    }
1539  });
1540  document.addEventListener('DOMContentLoaded', function() {
1541    window.getCartAmount = function() {
1542      return parseInt($('.global-cart-count').html());
1543    };
1544  });
1545</script>
1545
1546
1547<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/navbar-e958d46bfee2e69f.js' type='text/javascript'></script>
vendor: 1 bytes, line 1547
1547
1548<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/currencies-e958d46bfee2e69f.js' type='text/javascript'></script>
1548
1549<!-- cyb_snippet i18n_modal start -->
1550
1551  
1551<script src='//cdn-general.cybassets.com/frontend/shop/i18nSetting-e958d46bfee2e69f.js' type='text/javascript'></script>
1551
1552  
1552<script type="text/javascript">
1553    $(document).ready(function() {
1554      const props = {
1555        isMultiLanguages: true,
1556        isMultiCurrencies: true,
1557      }
1558      
1559        props.languageOptions = [{"handle":"zh-TW","currency_code":"TWD","title":"繁體中文"},{"handle":"zh-CN","currency_code":"CNY","title":"简体中文"},{"handle":"en","currency_code":"USD","title":"English"}]
1560      
1561      
1562        props.currencyOptions = [{"html_unit":"A${{amount}}","email_unit":"A${{amount}}","name":"澳洲元 (AUD)","html":"A${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"A${{amount}}","code":"AUD","symbol":"A$","email":"A${{amount}}"},{"html_unit":"CA${{amount}}","email_unit":"CA${{amount}}","name":"加拿大元 (CAD)","html":"CA${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"CA${{amount}}","code":"CAD","symbol":"CA$","email":"CA${{amount}}"},{"html_unit":"CHF {{amount}}","email_unit":"CHF {{amount}}","name":"瑞士法郎 (CHF)","html":"CHF {{amount}}","unit":"","trailing_zeros":false,"money_format":"%u %n","decimal_precision":2,"format":"CHF {{amount}}","code":"CHF","symbol":"CHF","email":"CHF {{amount}}"},{"html_unit":"\u0026#165;{{amount}}","email_unit":"¥{{amount}}","name":"人民幣 (CNY)","html":"\u0026#165;{{amount}}","unit":"RMB","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026#165;{{amount}}","code":"CNY","symbol":"¥","email":"¥{{amount}}"},{"html_unit":"\u0026euro;{{amount}} EUR","email_unit":"€{{amount}} EUR","name":"歐元 (EUR)","html":"\u0026euro;{{amount}}","unit":"EUR","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"\u0026euro;{{amount}} EUR","code":"EUR","symbol":"€","email":"€{{amount}}"},{"html_unit":"£{{amount}}","email_unit":"£{{amount}}","name":"英鎊 (GBP)","html":"£{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"£{{amount}}","code":"GBP","symbol":"£","email":"£{{amount}}"},{"html_unit":"HK${{amount}}","email_unit":"HK${{amount}}","name":"港元 (HKD)","html":"${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"HK${{amount}}","code":"HKD","symbol":"HK$","email":"${{amount}}"},{"html_unit":"\u0026#165;{{amount_no_decimals}}","email_unit":"¥{{amount_no_decimals}}","name":"日幣 (JPY)","html":"\u0026#165;{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"\u0026#165;{{amount_no_decimals}}","code":"JPY","symbol":"¥","email":"¥{{amount_no_decimals}}"},{"html_unit":"₩{{amount_no_decimals}}","email_unit":"₩{{amount_no_decimals}}","name":"韓圓 (KRW)","html":"₩{{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"₩{{amount_no_decimals}}","code":"KRW","symbol":"₩","email":"₩{{amount_no_decimals}}"},{"html_unit":"RM {{amount}}","email_unit":"RM {{amount}}","name":"馬來西亞令吉 (MYR)","html":"RM {{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"RM {{amount}}","code":"MYR","symbol":"RM ","email":"RM {{amount}}"},{"html_unit":"S${{amount}}","email_unit":"S${{amount}}","name":"新加坡元 (SGD)","html":"S${{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"S${{amount}}","code":"SGD","symbol":"S$","email":"S${{amount}}"},{"html_unit":"฿{{amount}}","email_unit":"฿{{amount}}","name":"泰銖 (THB)","html":"฿{{amount}}","unit":"","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"฿{{amount}}","code":"THB","symbol":"฿","email":"฿{{amount}}"},{"html_unit":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","name":"新台幣 (TWD)","html":"NT${{amount_no_decimals}}","unit":"","trailing_zeros":false,"money_format":"%u%n","decimal_precision":0,"format":"NT${{amount_no_decimals}}","code":"TWD","symbol":"NT$","email":"NT${{amount_no_decimals}}"},{"html_unit":"${{amount}} USD","email_unit":"${{amount}} USD","name":"美元 (USD)","html":"${{amount}}","unit":"USD","trailing_zeros":true,"money_format":"%u%n","decimal_precision":2,"format":"${{amount}} USD","code":"USD","symbol":"$","email":"${{amount}}"},{"html_unit":"{{amount_no_decimals}}₫","email_unit":"{{amount_no_decimals}}₫","name":"越南盾 (VND)","html":"{{amount_no_decimals}}₫","unit":"","trailing_zeros":false,"money_format":"%n%u","decimal_precision":0,"format":"{{amount_no_decimals}}₫","code":"VND","symbol":"₫","email":"{{amount_no_decimals}}₫"}]
1563      
1564      window.renderI18nSetting('.i18n-selector', props)
1565    })
1566  </script>
1566
1567
1568
1569<!-- cyb_snippet i18n_modal end -->
1570<!-- cyb_snippet _load_fonts start -->
1571<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/load_fonts-e958d46bfee2e69f.js' type='text/javascript'></script>
vendor: 1 bytes, line 1571
1571
1572<script>
1573  document.addEventListener('DOMContentLoaded', function() {
1574    window.loadFontSetting("{\"ja\":{\"value\":\"Noto Sans JP\"},\"zh-TW\":{\"value\":\"Abyssinica SIL\"},\"en\":{\"value\":\"Noto Sans TC\"},\"zh-CN\":{\"value\":\"Noto Sans TC\"}}")
1575  })
1576</script>
1576
1577
1578<!-- cyb_snippet _load_fonts end -->
1579<!-- cyb_snippet _custom_icon start -->
1580<script src='//cdn-general.cybassets.com/frontend/shop/navIcon-e958d46bfee2e69f.js' type='text/javascript'></script>
1580
1581
1582<script>
1583  (function() {
1584    const iconUrlMap = new Map([
1585      ['custom_icon_type_home', null],
1586      ['custom_icon_type_tracking_items', null],
1587      ['custom_icon_type_account', null],
1588      ['custom_icon_type_cart', null],
1589      ['custom_icon_type_search', null],
1590      ['custom_icon_type_menu', null]
1591    ]);
1592    const elements = document.querySelectorAll('[data-icon-type]');
1593    elements.forEach((element, index) => {
1594      const iconAttributes = element.getAttribute('data-icon-type');
1595
1596      const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
1597      element.id = uniqueId;
1598      window.renderNavCustomIcon(`#${uniqueId}`, {
1599        navIconStyle: "icon_type_default",
1600        customIconUrl: iconUrlMap.get(iconAttributes) || '',
1601        iconAttributes: iconAttributes,
1602        currentTemplate: "index",
1603      });
1604    });
1605  })();
1606</script>
1606
1607
1608<!-- cyb_snippet _custom_icon end -->
1609
1610
1611
1612    
1613  
1614    
1614<script src='//cdn-general.cybassets.com/frontend/shop/announcementBar-e958d46bfee2e69f.js' type='text/javascript'></script>
1614
1615
1616    
1617
1618    
1619
1620    
1620<script>
1621      $(document).ready(function() {
1622        window.renderAnnouncementBar('#announcement-bar', {
1623          sectionId: "announcement_bar",
1624          isIndex: true,
1625        });
1626      });
1627    </script>
1627
1628  
1629
1630
1631
1632
1633
1634    <!-- template -->
1635    <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);">
1636      <div class="index">
1637
1638  
1639
1640
1641
1642
1643
1644
1645
1646
1647<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1647
1648
1649
1650<style>
1651  [id="_index_product_banner"] {
1652    margin: 0 0px 10px !important;
1653  }
1654  @media (max-width: 991px) {
1655    [id="_index_product_banner"] {
1656      margin: 0 0px 10px !important;
1657    }
1658  }
1659</style>
1660
1661<section id="_index_product_banner" class="index-product-banner qk-display--bk qk-pos--rel">
1662  <div id="index_product_banner-_index_product_banner"></div>
1663</section>
1664
1665<script>
1666  $(document).ready(function() {
1667    let isDynamicLoading = false;
1668    if (isDynamicLoading) {
1669      window.DynamicLoading.setupComponent({
1670          sectionId:'#index_product_banner-_index_product_banner',
1671          callbackData:{
1672            sectionId: "_index_product_banner",
1673            section: {"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"橫幅廣告","schedule":{"enabled_default":true,"schedule_lists":[]}},
1674            dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1675            dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1676            dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1677          },
1678          entryName:'renderProductBanner',
1679          source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js',
1680        });
1681    }else{
1682      window.renderProductBanner('#index_product_banner-_index_product_banner',
1683        {
1684          sectionId: "_index_product_banner",
1685          section: {"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0","cta_btn_display_style":"bottomPosition","cta_btn_text":"La brume boutique","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"Découvrez nos parfums","link_open_in_new_tab":false},"custom_name":"橫幅廣告","schedule":{"enabled_default":true,"schedule_lists":[]}},
1686          dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1687          dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1688          dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NjI0NDM4XzU0MTM5QUQwLTFBOEEtNDMwOS04RkM1LTg5OUM1RUUwNUI5Qy5qcGcuanBlZyJdXQ.jpeg?sha=bc56cc3ed83b95f0",
1689        });
1690    }
1691  });
1692</script>
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1704
1705
1706
1707<style>
1708  [id="1758546879927_1"] {
1709    margin: 0 0px 10px !important;
1710  }
1711  @media (max-width: 991px) {
1712    [id="1758546879927_1"] {
1713      margin: 0 0px 10px !important;
1714    }
1715  }
1716</style>
1717
1718<section id="1758546879927_1" class="index-product-banner qk-display--bk qk-pos--rel">
1719  <div id="index_product_banner-1758546879927_1"></div>
1720</section>
1721
1722<script>
1723  $(document).ready(function() {
1724    let isDynamicLoading = false;
1725    if (isDynamicLoading) {
1726      window.DynamicLoading.setupComponent({
1727          sectionId:'#index_product_banner-1758546879927_1',
1728          callbackData:{
1729            sectionId: "1758546879927_1",
1730            section: {"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-選單","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}},
1731            dictMobileImageUrl:"",
1732            dictTabletImageUrl:"",
1733            dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504",
1734          },
1735          entryName:'renderProductBanner',
1736          source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js',
1737        });
1738    }else{
1739      window.renderProductBanner('#index_product_banner-1758546879927_1',
1740        {
1741          sectionId: "1758546879927_1",
1742          section: {"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":"/collections/la-brume-選單","cta_btn_display_style":"bottomPosition","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10","display_cta_btn":true,"dict_cta_btn_text":"La brume songshan store"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}},
1743          dictMobileImageUrl:"",
1744          dictTabletImageUrl:"",
1745          dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NTM1X2RoYWxmIDIwMjUtMDktMjIgMjEzNTQ0LjI5Ni5qcGcuanBlZyJdXQ.jpeg?sha=38d85264591df504",
1746        });
1747    }
1748  });
1749</script>
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761<script src='//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js' type='text/javascript'></script>
1761
1762
1763
1764<style>
1765  [id="1758548715483_1"] {
1766    margin: 0 0px 10px !important;
1767  }
1768  @media (max-width: 991px) {
1769    [id="1758548715483_1"] {
1770      margin: 0 0px 10px !important;
1771    }
1772  }
1773</style>
1774
1775<section id="1758548715483_1" class="index-product-banner qk-display--bk qk-pos--rel">
1776  <div id="index_product_banner-1758548715483_1"></div>
1777</section>
1778
1779<script>
1780  $(document).ready(function() {
1781    let isDynamicLoading = false;
1782    if (isDynamicLoading) {
1783      window.DynamicLoading.setupComponent({
1784          sectionId:'#index_product_banner-1758548715483_1',
1785          callbackData:{
1786            sectionId: "1758548715483_1",
1787            section: {"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-選單","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}},
1788            dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074",
1789            dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074",
1790            dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56",
1791          },
1792          entryName:'renderProductBanner',
1793          source:'//cdn-general.cybassets.com/frontend/shop/productBanner-e958d46bfee2e69f.js',
1794        });
1795    }else{
1796      window.renderProductBanner('#index_product_banner-1758548715483_1',
1797        {
1798          sectionId: "1758548715483_1",
1799          section: {"type":"_index_product_banner","custom_name":"橫幅廣告","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074","dict_link":"/collections/la-brume-daan-選單","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","dict_cta_btn_text":"La brume daan store","cta_btn_bg_color":"#271f16","cta_btn_text_color":"#d6cebe","margin_x":"0","margin_bottom":"10","mobile_margin_x":"0","mobile_margin_bottom":"10"},"blocks":{},"block_order":[],"schedule":{"enabled_default":true,"schedule_lists":[]}},
1800          dictMobileImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074",
1801          dictTabletImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ5MTQ1X2RoYWxmIDIwMjUtMDktMjIgMjE1MDUyLjYxOS5qcGcuanBlZyJdXQ.jpeg?sha=edf11f92952f9074",
1802          dictImageUrl:"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzU4NTQ4NzYyX2RoYWxmIDIwMjUtMDktMjIgMjEzOTI2LjY2Mi5qcGcuanBlZyJdXQ.jpeg?sha=78a6cff17c812b56",
1803        });
1804    }
1805  });
1806</script>
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/_index_4_blocks-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
1821<script src='//cdn-general.cybassets.com/frontend/shop/productDisplay-e958d46bfee2e69f.js' type='text/javascript'></script>
1821
1822
1823<style>
1824  [id="_index_4_blocks"] {
1825    margin: 0 0px 48px !important;
1826  }
1827
1828  @media (min-width: 992px) {
1829    [id="_index_4_blocks"] .block:not(.last-row) {
1830      margin-bottom: 10px !important;
1831    }
1832    [id="_index_4_blocks"] .block-default-width-margin:not(:first-of-type),
1833    [id="_index_4_blocks"] .block-not-first-margin {
1834      margin-left: 10px !important;
1835    }
1836  }
1837
1838  @media (max-width: 991px) {
1839    [id="_index_4_blocks"] {
1840      margin: 0 0px 24px !important;
1841    }
1842    [id="_index_4_blocks"] > .qk-display--flex.qk-flex--wrap {
1843      gap: 10px;
1844      justify-content: flex-start;
1845    }
1846    [id="_index_4_blocks"] .block {
1847      flex: 0 0 calc((100% - (2 - 1) * 10px) / 2);
1848    }
1849  }
1850
1851  .video-block-loading {
1852    background-color: #eeee;
1853    position: absolute;
1854    top: 0;
1855    bottom: 0;
1856    left: 0;
1857    width: 100%;
1858    height: 100%;
1859  }
1860</style>
1861
1862<script>
1863
1864  $(document).ready(function() {
1865    let isDynamicLoading = false;
1866    if (isDynamicLoading) {
1867      window.DynamicLoading.setupComponent({
1868          sectionId:'_index_4_blocks',
1869          componentType:'liquid',
1870        });
1871    }
1872    
1873      
1874    
1875      
1876    
1877      
1878    
1879  })
1880</script>
1880
1881
1882<script>
1883  function buildYoutubeEmbedUrl(url, options) {
1884    const YT_REGEX = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=|shorts\/)([^#&?]*).*/;
1885    const match = (url || '').match(YT_REGEX);
1886    const videoId = match && match[2].length === 11 ? match[2] : '';
1887
1888    if (!videoId) {
1889      return '';
1890    }
1891
1892    const autoPlay = options && options.autoPlay;
1893    const hideControls = options && options.hideControls;
1894    const loop = options && options.loop;
1895
1896    const searchParams = new URLSearchParams();
1897
1898    searchParams.set('autoplay', autoPlay ? '1' : '0');
1899    // 若自動播放,預設靜音以符合瀏覽器限制
1900    searchParams.set('mute', autoPlay ? '1' : '0');
1901    searchParams.set('playsinline', '1');
1902
1903    searchParams.set('controls', hideControls ? '0' : '1');
1904    searchParams.set('rel', '0');
1905
1906    if (loop) {
1907      searchParams.set('loop', '1');
1908      searchParams.set('playlist', videoId);
1909    }
1910
1911    return 'https://www.youtube.com/embed/' + videoId + '?' + searchParams.toString();
1912  }
1913
1914  function parseYtUrlOnLoad(target, url, autoPlay, hideControls, loop) {
1915    const finalUrl = buildYoutubeEmbedUrl(url, {
1916      autoPlay: autoPlay,
1917      hideControls: hideControls,
1918      loop: loop,
1919    });
1920
1921    if (!finalUrl || target.src === finalUrl) {
1922      return;
1923    }
1924
1925    const handleVideoLoad = function () {
1926      try {
1927        const wrapper = $(target).closest('.embed-responsive')[0];
1928        if (wrapper) {
1929          // 關閉 loading skeleton
1930          const loading = wrapper.querySelector('.video-block-loading');
1931          if (loading) {
1932            loading.style.display = 'none';
1933          }
1934        }
1935      } catch (e) {
1936        console.error('iframe onload 處理失敗', e);
1937      } finally {
1938        target.removeEventListener('load', handleVideoLoad);
1939      }
1940    };
1941
1942    target.addEventListener('load', handleVideoLoad);
1943
1944    target.src = finalUrl;
1945    if (hideControls && autoPlay) {
1946      target.style.pointerEvents = 'none';
1947    }
1948
1949    // 判斷是不是 YouTube shorts,決定要不要加上 .short-youtube class
1950    try {
1951      const isShort = (url || '').indexOf('/shorts/') !== -1;
1952      if (isShort) {
1953        const wrapper = $(target).closest('.embed-responsive')[0];
1954        if (wrapper) {
1955          wrapper.classList.add('short-youtube');
1956        }
1957      }
1958    } catch (e) {
1959      console.error('isShort 判斷失敗', e);
1960    }
1961  }
1962
1963
1964  window.addEventListener('load', function () {
1965    const sectionEl = document.getElementById('_index_4_blocks');
1966    if (!sectionEl) return;
1967
1968    const options = {
1969      threshold: 0.25,
1970    };
1971
1972    
1973      
1974    
1975      
1976    
1977      
1978    
1979  });
1980</script>
1980
1981
1982<section id="_index_4_blocks" class="index-4-blocks">
1983  <div class="qk-display--flex qk-flex--wrap">
1984    
1985    
1986      
1987      
1988      <div class="block image mobile-2-col" style="width: calc(50% - 5.0px);">
1989        
1990            <div class="img-card" id="index_4_blocks_block_1">
1991              
1992              
1993                
1994                  <img
1995                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczMTMwXzQwQTAxQThDLUQ0NTktNEI3MS1BRkUyLTU3QUFFNENGQkM1MC5qcGcuanBlZyJdXQ.jpeg?sha=3c84613798f5136a"
1996                    class="qk-w--100 qk-hidden--mobile"
1997                    alt=""
1998                  >
1999                
2000              
2001              
2002                
2003                  <img
2004                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c"
2005                    class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc"
2006                    alt=""
2007                  >
2008                
2009              
2010              
2011                
2012                  <img
2013                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUxODQzXzgwNkQ1NjhELTU1MDctNEFCRS04NTU5LTdCQzRBQUIyNTZBMi5qcGcuanBlZyJdXQ.jpeg?sha=aff48e880ed5e92c"
2014                    class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet"
2015                    alt=""
2016                  >
2017                
2018              
2019              
2020              <div class="advance-rich-text-content-container">
2021                
2022              </div>
2023            </div>
2024          
2025      </div>
2026    
2027      
2028      
2029      <div class="block image mobile-2-col block-not-first-margin" style="width: calc(33% - 3.3px);">
2030        
2031            <div class="img-card" id="index_4_blocks_block_2">
2032              
2033              
2034                
2035                  <img
2036                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTcxNDc0X0lNR18wNTU4LmpwZy5qcGVnIl1d.jpeg?sha=aea479433f20db3e"
2037                    class="qk-w--100 qk-hidden--mobile"
2038                    alt=""
2039                  >
2040                
2041              
2042              
2043                
2044                  <img
2045                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c"
2046                    class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc"
2047                    alt=""
2048                  >
2049                
2050              
2051              
2052                
2053                  <img
2054                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MjUyNjE3X0VGMjAyNzA3LTVGOUQtNDdBRC1BRjI2LUMzNjY0QUM1NEMwNC5qcGcuanBlZyJdXQ.jpeg?sha=3b6ac491b319749c"
2055                    class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet"
2056                    alt=""
2057                  >
2058                
2059              
2060              
2061              <div class="advance-rich-text-content-container">
2062                <p></p>
2063
2064              </div>
2065            </div>
2066          
2067      </div>
2068    
2069      
2070      
2071      <div class="block image mobile-2-col last-row" style="width: calc(33% - 0.0px);">
2072        
2073            <div class="img-card" id="index_4_blocks_block_3">
2074              
2075              
2076                
2077                  <img
2078                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1MTczNTAwX0ExQkNBMjYxLTNGNUEtNERCOC05N0I1LTkyQjhBRDU5RTdCQy0yLmpwZy5qcGVnIl1d.jpeg?sha=067399b4fe0d8568"
2079                    class="qk-w--100 qk-hidden--mobile"
2080                    alt=""
2081                  >
2082                
2083              
2084              
2085                
2086                  <img
2087                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23"
2088                    class="qk-w--100 qk-display--bk qk-hidden--phone qk-hidden--pc"
2089                    alt=""
2090                  >
2091                
2092              
2093              
2094                
2095                  <img
2096                    src="//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNjc1NDE5NDM1XzA2RTBBNURDLUNBNTctNEFENS1CRkRBLUIwNjI5RTg5OTkzMC5KUEcuanBlZyJdXQ.jpeg?sha=8d10e98b496a9c23"
2097                    class="qk-w--100 qk-display--bk qk-hidden--pc qk-hidden--tablet"
2098                    alt=""
2099                  >
2100                
2101              
2102              
2103              <div class="advance-rich-text-content-container">
2104                
2105              </div>
2106            </div>
2107          
2108      </div>
2109    
2110  </div>
2111</section>
2112
2113
2114
2115
2116  <!-- 加入購物車 -->
2117  
2118    <!-- cyb_snippet new_addcart_modal start -->
2119<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
2120
2121<div id="new-addcart-modal" class="container">
2122  <transition name="modal">
2123    <product-modal
2124      v-if="showProductModal"
2125      :only-description="onlyDescription"
2126      :product-url="popProductUrl"
2127      :color="color"
2128      :is-collection="isCollection"
2129      :is-show-description="isShowDescription"
2130      :is-quick-buy="isQuickBuy"
2131      :selected-variant-id="selectedVariantId"
2132      :categories="categories"
2133      :call-back="checkoutAddToCartCallback"
2134      ref="productModal"
2135    >
2136    </product-modal>
2137  </transition>
2138</div>
2139
2140<!-- cyb_snippet components/product_modal/product_modal start -->
2141<script type="text/x-template" id="product-modal">
2142  <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal">
2143    <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop>
2144      <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-bg--theme_bg qk-text--heading qk-bd--product_border qk-bd--default" @click="closeModal"></button>
2145      <div class="modal-body custom-scrollbar qk-w--100">
2146        <div v-if="!isLoading">
2147          <div id="checkout-product" class="row">
2148            <div class="col-sm-6 col-xs-4">
2149              <photo-swiper
2150                :mediaItems="swiperItems"
2151                :current-image-index="currentImageIndex"
2152                :current-variant="currentVariant"
2153                :video-after-image="videoAfterImage"
2154              ></photo-swiper>
2155            </div>
2156            <div class="col-sm-6 col-xs-8">
2157              <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4>
2158              <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p>
2159              <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p>
2160              <div class="swiper_thumbnails" style="margin-bottom: 10px;">
2161                <swiper-thumbnails
2162                  :mediaItems="swiperItems"
2163                  :current-image-index="currentImageIndex"
2164                  :title="product.title"
2165                  @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }"
2166                ></swiper-thumbnails>
2167              </div>
2168              
2169              <div v-if="!hidePrice" style="margin-bottom: 10px;">
2170                
2171                <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span>
2172                
2173                <div>
2174                  <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span>
2175                  <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del>
2176                </div>
2177              </div>
2178              <div v-if="!onlyDescription" class="controls">
2179                <div class="variant-quantity qk-display--flex qk-flex--column">
2180                  <div v-if="hasVariant" class="product-variant-options">
2181                    <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}">
2182                      <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'">
2183                      
2184                        <label>${option.name}</label>
2185                        <svg height="20" width="20" viewBox="0 0 20 20" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"> </path></svg>
2186                        <select class="qk-bg--theme_bg" :class="{'select_placeholder-color': currentOption[`option${index + 1}`] === null}" v-show="!isMobileSize" :value="String(currentOption[`option${index + 1}`])" @change="setOption(`option${index + 1}`, $event.target.value, option.types )" @click="onClickSelectModal(option,`option${index + 1}`)">
2187                          <option value="null" class="select_option-hidden">Please select ${option.name}</option>
2188                          <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option>
2189                        </select>
2190                        <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">Please select ${option.name}</span>
2191                        <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span>
2192                      </div>
2193                      <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/>
2194                    </div>
2195                  </div>
2196                  <div class="product_discounts_list qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-pd--1 qk-mg_b--1" v-show="displayProductDiscountsList && ((displayPeriodicSalesPages && product.showableSalesPages.length > 0) || !!discountsList)">
2197                    <div class="list_block custom-scrollbar qk-of_x--hidden">
2198                      <h4 class="qk-text--heading qk-fs--body">Applicable Promotions
2199                      </h4>
2200                      <template v-if="displayPeriodicSalesPages">
2201                        <div v-for="salesPage in product.showableSalesPages" class="discount-list">
2202                          <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">Subscription
2203                          </span>
2204                          <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a>
2205                        </div>
2206                      </template>
2207                      <template v-for="discounts in discountsList">
2208                        <div v-for="discount in discounts" class="discount-list">
2209                          <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body">
2210                            ${ discount.title }
2211                          </a>
2212                          <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span>
2213                        </div>
2214                      </template>
2215                    </div>
2216                  </div>
2217                  <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize">
2218                    <div class="btn-group qk-w--100" role="group" aria-label="First group">
2219                      <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">-</button>
2220                      <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange">
2221                      <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">+</button>
2222                    </div>
2223                  </div>
2224                </div>
2225                <div v-if="showPurchaseControls" class="add-button-wrapper">
2226                  <!-- cyb_snippet _product_modal_button start -->
2227<button
2228  class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary"
2229  :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}"
2230  type="button"
2231  :disabled="isHideAddCartBtn"
2232  @click="addProduct"
2233>
2234  ${ addCartText }
2235</button>
2236
2237<!-- cyb_snippet _product_modal_button end -->
2238                </div>
2239                <div class="product-others qk-fs--body">
2240                  <span class="product-love">
2241                    <a class="btn-love qk-text--text qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-display--il_bk qk-text--center qk-cursor--pointer qk-tst qk-tst_timing--ease_io qk-tst_dur--15" @click="addWishList">
2242                      <svg
2243                        width="15"
2244                        height="15"
2245                        viewBox="0 0 24 24"
2246                        fill="none"
2247                        xmlns="http://www.w3.org/2000/svg">
2248                        <path
2249                          d="M21.3899 4.54287C20.8146 4.01265 20.1366 3.60344 19.3969 3.34002C18.6572 3.0766 17.8711 2.96444 17.0863 3.01034C16.5593 3.01219 16.0362 3.09923 15.5375 3.26802C15.0194 3.44412 14.5265 3.68572 14.071 3.98682C13.6676 4.25092 13.2787 4.53613 12.906 4.84124C12.5762 5.09996 12.2648 5.38092 11.974 5.6821C11.6833 5.38092 11.3719 5.09996 11.042 4.84124C10.6516 4.53452 10.2443 4.24928 9.82221 3.98682C9.3967 3.69278 8.93642 3.45138 8.45163 3.26802C7.93995 3.0948 7.40254 3.0077 6.86175 3.01034C6.07688 2.96365 5.2906 3.07544 4.55076 3.3389C3.81091 3.60236 3.13296 4.01199 2.55813 4.54287C2.02401 5.11052 1.61146 5.77922 1.3453 6.50873C1.07914 7.23825 0.964875 8.01351 1.00937 8.78786C1.01359 9.36893 1.11073 9.94569 1.29719 10.4967C1.45989 11.0166 1.68054 11.517 1.95507 11.9886C2.20373 12.4073 2.47838 12.8104 2.77742 13.1956C3.09266 13.5889 3.32566 13.8601 3.46271 14.0093C3.56921 14.1255 3.6837 14.2343 3.80536 14.3348L11.4395 21.7669C11.5066 21.8412 11.5891 21.9002 11.6813 21.94C11.7736 21.9798 11.8734 21.9994 11.974 21.9975C12.0836 22.0067 12.1938 21.9906 12.296 21.9506C12.3983 21.9106 12.4898 21.8477 12.5634 21.7669L20.1838 14.3484C21.8272 12.9359 22.8376 10.9363 22.9935 8.78786C23.0307 8.0097 22.9078 7.23217 22.6321 6.50246C22.3565 5.77274 21.9339 5.10606 21.3899 4.54287V4.54287Z"
2250                          stroke="currentColor"
2251                          stroke-width="2"
2252                          stroke-linecap="round"
2253                          stroke-linejoin="round" />
2254                      </svg>
2255                      Add to Wishlist
2256                    </a>
2257                  </span>
2258                  <span class="product_sold qk-text--text" v-if="false">
2259                    <span>Sold : 
2260                      ${ product.totalSold }
2261                      Item(s)
2262                    </span>
2263                  </span>
2264                  <span class="product_bonus qk-text--text" v-if="false">
2265                    Redeemable credit(s) per item
2266                    <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span>
2267                    <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span>
2268                    credit(s)
2269                    <span v-html="bonusToPrice"/>
2270                  </span>
2271                </div>
2272                <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0">
2273                  ${limitBuyText}
2274                </div>
2275              </div>
2276            </div>
2277          </div>
2278          <div v-if="isShowDescription" class="row">
2279            <div class="col-sm-12">
2280              
2281                <div v-if="product.bodyHtml">
2282                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2283                    Description
2284                  </h5>
2285                  <div class="ckeditor">
2286                    <div v-html="product.bodyHtml"></div>
2287                  </div>
2288                </div>
2289              
2290              
2291                <div v-if="otherDescriptions['product_description_section_spec']">
2292                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2293                    Brand Overview
2294                  </h5>
2295                  <div class="ckeditor">
2296                    <div v-html="otherDescriptions['product_description_section_spec']"></div>
2297                  </div>
2298                </div>
2299              
2300              
2301                <div v-if="otherDescriptions['product_description_section_shipping']">
2302                  <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading">
2303                    Stores Available
2304                  </h5>
2305                  <div class="ckeditor">
2306                    <div v-html="otherDescriptions['product_description_section_shipping']"></div>
2307                  </div>
2308                </div>
2309              
2310            </div>
2311          </div>
2312        </div>
2313        <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;">
2314          <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i>
2315        </div>
2316      </div>
2317        <!-- cyb_snippet _product_modal_button_mobile start -->
2318 <div
2319  v-if="showPurchaseControls"
2320  v-show="isMobileSize"
2321  class="mobile_footer"
2322  :class="{'mobile_footer-z': variantSize > 1 }">
2323        <div class="product-quantity">
2324          <div class="btn-group qk-w--100" role="group" aria-label="First group">
2325            <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">-</button>
2326            <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange">
2327            <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">+</button>
2328          </div>
2329        </div>
2330        <button
2331          v-if="!isLoading && !onlyDescription"
2332          class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg"
2333          :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}"
2334          type="button"
2335          :disabled="isHideAddCartBtn"
2336          @click="addProduct">
2337            ${ addCartText }
2338        </button>
2339</div>
2340<div
2341  class="mobile-modal"
2342  :class="{ 'modal-open': isModalSelectShow && isMobileSize }">
2343        <div class="mobile_modal-content">
2344          <div class="modal_close-button">
2345            <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100  qk-text--heading qk-bd--product_border qk-bd--default" @click="onChangeModalSelect(false,true)"></button>
2346          </div>
2347          
2348          <p>Please select ${modalOption.name}</p>
2349          <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100">
2350            <div class="options-container">
2351              <label :class="{'seleced-option': currentOption && currentOption[selectOption] === data.name, 'avoid-clicks':!data.isValid}" v-for="data in modalOption.types" @click="setOption(selectOption, data.name, modalOption.types)">${data.name}</label>
2352            </div>
2353          </div>
2354          <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex">
2355            <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">Cancel</button>
2356            <button type="button" class="qk-btn qk-btn--primary qk-btn--lg qk-fs--body qk-bd--button qk-test--button_text" @click="onChangeModalSelect(false,true)">Finish</button>
2357          </div>
2358        </div>
2359</div>
2360
2361<!-- cyb_snippet _product_modal_button_mobile end -->
2362    </div>
2363  </div>
2364</script>
2364
2365
2366<!-- cyb_snippet components/product_modal/color_image_option start -->
2367<script id="color-image-option" type="text/x-template">
2368  <div class="color-image qk-display--flex qk-flex--wrap qk-align--center">
2369    <div class="title">Color</div>
2370    <div
2371      v-for="(imageColor, index) in imageColors"
2372      :class="{
2373        'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index,
2374        'selected': currentOption[optionKey] === option.types[index].name,
2375        'disabled': !option.types[index].isValid
2376      }"
2377      class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel"
2378      @mouseleave="setCurrentImageIndex(index)"
2379      @mouseover="getOptionImageIndex(index)"
2380      @click="setOption(optionKey, index)"
2381    >
2382      <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image">
2383      <img v-else src="/assets/no-image-large.png" alt="image">
2384    </div>
2385  </div>
2386</script>
2386
2387
2388<script type="text/javascript">
2389  $(document).ready(function() {
2390    window.themeHelper.productModalComponents['color-image-option'] = {
2391      template: '#color-image-option',
2392      delimiters: ['${', '}'],
2393      props: {
2394        optionKey: String,
2395        option: Object,
2396        product: Object,
2397        imageColors: Array,
2398        isChoose: Boolean,
2399        currentImageIndex: Number,
2400        setCurrentImageIndex: Function,
2401        getOptionImageIndex: Function,
2402        currentOption: Object,
2403        toggleCurrentOption: Function,
2404      },
2405      methods: {
2406        setOption: function(optionKey, index) {
2407          const type = this.option.types[index];
2408          if(type.isValid){
2409            this.toggleCurrentOption(optionKey, type.name);
2410          }
2411        }
2412      }
2413    };
2414  });
2415</script>
2415
2416
2417<!-- cyb_snippet components/product_modal/color_image_option end -->
2418<!-- cyb_snippet components/product_modal/advance_option start -->
2419<script id="advance-option" type="text/x-template">
2420  <div class="advance">
2421    <div class="title qk-text--heading qk-fs--body">${option.name}</div>
2422    <div
2423      v-for="type in option.types"
2424      :class="{
2425        'selected': currentOption[optionKey] === type.name,
2426        'disabled': !type.isValid
2427      }"
2428      @click="setOption(optionKey, type)"
2429      class="option qk-btn  qk-bd--button qk-text--button qk-pd_x--1"
2430    >
2431      ${type.name}
2432    </div>
2433  </div>
2434</script>
2434
2435
2436<script type="text/javascript">
2437  $(document).ready(function() {
2438    window.themeHelper.productModalComponents['advance-option'] = {
2439      template: '#advance-option',
2440      delimiters: ['${', '}'],
2441      props: {
2442        optionKey: String,
2443        option: Object,
2444        product: Object,
2445        currentOption: Object,
2446        toggleCurrentOption: Function,
2447      },
2448      methods: {
2449        setOption: function(optionKey, type) {
2450          if(type.isValid){
2451            this.toggleCurrentOption(optionKey, type.name);
2452          }
2453        }
2454      }
2455    };
2456  });
2457</script>
2457
2458
2459<!-- cyb_snippet components/product_modal/advance_option end -->
2460
2461<!-- cyb_snippet components/product_modal/photo_swiper start -->
2462
2463
2464<script id="photo-swiper" type="text/x-template">
2465  <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container">
2466    <div class="swiper-wrapper">
2467      <template v-if="hasImage">
2468        <div v-for="(item, index) in mediaItems" :key="index" class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale">
2469          <video-player v-if="item.url" :video="item"
2470            :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn-general.cybassets.com/img_loading.svg' "
2471          >
2472          </video-player>
2473          <img v-else class="qk-center" :src="item.large" alt="image"/>
2474        </div>
2475      </template>
2476      <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top default_scale">
2477        <img src="//cdn-general.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" />
2478      </div>
2479    </div>
2480    <div v-show="showBtn" class="photo-prev qk-swiper_btn--prev  qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div>
2481    <div v-show="showBtn" class="photo-next qk-swiper_btn--next  qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div>
2482
2483    <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm">
2484        <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span>
2485        <span>${mediaItems.length}</span>
2486      </div>
2487  </div>
2488</script>
2488
2489
2490<script>
2491  $(document).ready(function () {
2492    window.themeHelper.productModalComponents['photo-swiper'] = {
2493      template: '#photo-swiper',
2494      delimiters: ['${', '}'],
2495      props: {
2496        mediaItems: Array,
2497        currentImageIndex: Number,
2498        currentVariant: Object,
2499        videoAfterImage: Boolean,
2500      },
2501      data: function () {
2502        return {
2503          swiper: {},
2504          swiperOption: {
2505            preventInteractionOnTransition: true,
2506            rewind: true,
2507            spaceBetween: 5,
2508            slidesPerView: 1,
2509            navigation: {
2510              nextEl: '.photo-next',
2511              prevEl: '.photo-prev'
2512            }
2513          },
2514          showBtn: true,
2515          isVariantReposition: false,
2516        }
2517      },
2518      mounted: function() {
2519        this.swiper = new Swiper('#photo_swiper', this.swiperOption);
2520        this.swiper.on('slideChange', this.slideOnChange);
2521      },
2522      watch: {
2523        currentImageIndex: function() {
2524          this.slideToIndex();
2525        },
2526        currentVariant: {
2527          immediate: true,
2528          handler: function() {
2529            this.showBtn = this.mediaItems.length > 1;
2530            this.isVariantReposition = true;
2531            this.$nextTick(() => {
2532              if (this.swiper) {
2533                this.swiper.update();
2534                this.swiper.slideToLoop(this.initialItemIndex)
2535                this.slideOnChange();
2536                this.isVariantReposition = false;
2537              }
2538            });
2539          },
2540        },
2541      },
2542      computed: {
2543        hasImage: function() {
2544          return this.mediaItems.length > 0;
2545        },
2546        hasVideo: function() {
2547          return this.mediaItems.findIndex(item => !!item.url) !== -1;
2548        },
2549        variantPhotos: function() {
2550          if (this.currentVariant?.photos?.length) {
2551            return this.currentVariant.photos;
2552          } else  {
2553            return null;
2554          }
2555        },
2556        initialItemIndex: function() {
2557          if (this.hasVideo && !this.videoAfterImage) {
2558            // Focus on photo if "variant with photos" selected, video otherwise
2559            return this.variantPhotos?.length ? 1 : 0;
2560          } else {
2561            // Focus on first photo
2562            return 0;
2563          }
2564        },
2565      },
2566      methods: {
2567        slideOnChange: function() {
2568          themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition);
2569        },
2570        slideToIndex: function() {
2571          if(this.swiper.realIndex != this.currentImageIndex) {
2572            this.swiper.slideToLoop(this.currentImageIndex);
2573            this.swiper.update();
2574          }
2575        },
2576      }
2577    };
2578  });
2579</script>
2579
2580
2581
2582<!-- cyb_snippet components/product_modal/video_player start -->
2583<script id="video-player" type="text/x-template">
2584  <div class="videoPlayer__wrapper" @click="handleVideoClick">
2585    <video 
2586      id='modal-video'
2587      class="videoPlayer__video qk-cursor--pointer qk-center" 
2588      :poster="videoPoster"
2589      loop defaultMuted muted playsinline webkit-playsinline autoplay
2590    >
2591      <source :src="videoUrl" type="video/mp4">
2592      <p>Your browser does not support HTML 5 video.</p>
2593    </video>
2594    <button id="modal-video-button" class="videoPlayer__pauseButton"></button>
2595  </div>
2596</script>
2596
2597
2598<script>
2599  $(document).ready(function () {
2600    window.themeHelper.productModalComponents['video-player'] = {
2601      template: '#video-player',
2602      delimiters: ['${', '}'],
2603      props: {
2604        video: Object,
2605        videoPoster: String,
2606      },
2607      data: function() {
2608        return {
2609          videoElement: null,
2610          buttonElement: null,
2611        };
2612      },
2613      mounted: function() {
2614        this.videoElement = $('#modal-video')[0];
2615        this.buttonElement = $('#modal-video-button');
2616        this.setVideoVolumeZero();
2617        this.videoElement.addEventListener('canplay', (event) => {
2618          this.sendGtag('play');
2619        }, { once: true });
2620      },
2621      computed: {
2622        videoUrl: function() {
2623          return this.video.url;
2624        }
2625      },
2626      methods: {
2627        sendGtag: function(action) {
2628          window.productVideoView && productVideoView(action);
2629        },
2630        setVideoVolumeZero: function() {
2631          this.videoElement.volume = 0;
2632        },
2633        handleVideoClick: function() {
2634          if (this.videoElement.paused){
2635            this.videoElement.play();
2636            this.sendGtag('play');
2637          } else {
2638            this.videoElement.pause();
2639            this.sendGtag('paused');
2640          }
2641          this.handleVideoButtonDisplay(this.buttonElement, this.videoElement);
2642        },
2643        handleVideoButtonDisplay: function(button, video) {
2644          button.toggleClass('videoPlayer__playButton', video.paused);
2645          button.toggleClass('videoPlayer__pauseButton', !video.paused);
2646        },
2647      }
2648    };
2649  });
2650</script>
2650
2651
2652<!-- cyb_snippet components/product_modal/video_player end -->
2653
2654<!-- cyb_snippet components/product_modal/photo_swiper end -->
2655<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2656<script id="swiper-thumbnails" type="text/x-template">
2657  <div
2658    v-for="(thumbnail, index) in allThumbnails"
2659    :key="index"
2660    class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent default_scale"
2661    :class="{ focus: index === currentImageIndex }"
2662    @mouseover="updateCurrentImageIndex(index)"
2663  >
2664    <template v-if="thumbnail.isVideo">
2665      <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video>
2666      <button class="videoPlayer__playButton"></button>
2667    </template>
2668    <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100">
2669  </div>
2670</script>
2670
2671
2672<script type="text/javascript">
2673  $(document).ready(function () {
2674    window.themeHelper.productModalComponents['swiper-thumbnails'] = {
2675      template: '#swiper-thumbnails',
2676      delimiters: ['${', '}'],
2677      props: {
2678        title: String,
2679        mediaItems: Array,
2680        currentImageIndex: Number,
2681      },
2682      emits: ['updateCurrentImageIndex'],
2683      methods: {
2684        updateCurrentImageIndex: function(thumbnailIndex) {
2685          if (thumbnailIndex !== this.currentImageIndex ) {
2686            this.$emit('updateCurrentImageIndex', thumbnailIndex);
2687          }
2688        },
2689      },
2690      mounted() {
2691        // can be removed after replacing video thumbnail with img
2692        const thumbnailVideo = $('.product-thumbnail video')[0];
2693        if (!!thumbnailVideo) {
2694          thumbnailVideo.volume = 0;
2695          const promise = thumbnailVideo.play();
2696          promise.then(() => {
2697            thumbnailVideo.pause();
2698          })
2699        }
2700      },
2701      computed: {
2702        allThumbnails: function() {
2703          return this.mediaItems.map(item => ({
2704            isVideo: !!item.url,
2705            url: item.url || item.medium
2706          }));
2707        },
2708      },
2709      watch: {
2710        allThumbnails: {
2711          handler(){
2712            this.updateCurrentImageIndex(this.currentImageIndex);
2713          }
2714        }
2715      }
2716    };
2717  });
2718</script>
2718
2719
2720<!-- cyb_snippet components/product_modal/swiper_thumbnails end -->
2721
2722
2723<!-- cyb_snippet _product_modal_js start -->
2724<script type="text/javascript">
2725  $(document).ready(function() {
2726    var categoryLevels = [];
2727    var productCategoryLevels = null;
2728    var pageMainProductId = null;
2729    window.themeHelper.productModalComponents['product-modal'] = {
2730      template: '#product-modal',
2731      delimiters: [
2732        '${', '}'
2733      ],
2734      props: {
2735        onlyDescription: Boolean,
2736        cartItems: Array,
2737        groupId: Number,
2738        productUrl: String,
2739        color: String, // unused
2740        collectionId: Number,
2741        categories: Array,
2742        // 判斷是否有色票展開
2743        isCollection: {
2744          type: Boolean,
2745          required: false,
2746          default: false,
2747        },
2748        // 判斷加入購物車的方法
2749        isNnCollection: Boolean,
2750        isNewNnCollection: Boolean,
2751        isBundleDiscount: Boolean,
2752
2753        // 判斷是否顯示商品描述
2754        isShowDescription: {
2755          type: Boolean,
2756          default: true
2757        },
2758
2759        // 判斷是否為立即購買
2760        isQuickBuy: {
2761          type: Boolean,
2762          default: false
2763        },
2764        selectedVariantId: Number,
2765        callBack: Function
2766      },
2767      data: function() {
2768        return {
2769          styledShopMenu: "buttonType",
2770          selectOption: '',
2771          selectCurrentStr:'',
2772          isModalSelectShow: false,
2773          modalOption: {},
2774          adding: false,
2775          currentImageIndex: 0,
2776          _navState: { variantId: null, photoIndex: 0 },
2777          currentOption: {
2778            option1: null,
2779            option2: null,
2780            option3: null
2781          },
2782          currentVariant: null,
2783          variantNotifications: null,
2784          currentVariantIndex: null,
2785          product: {},
2786          isChoose: false,
2787          isLoading: true,
2788          isEmptyClickable: liquidHelper.isEmptyClickable,
2789          quantity: 1,
2790          maxUsableBonus: 0,
2791          isDiscountPrice: false,
2792          displayProductDiscountsList: true,
2793          displayPeriodicSalesPages:false,
2794          discountsList: null,
2795          hasVideoPlugin: true,
2796          videoDisplayLocation: "before",
2797          hasStockNotificationPlugin: true,
2798          isDisplayPriceRange: null,
2799          hasVariantPriceRangePlugin: true,
2800          hasHideSingleVariantOptionsPlugin: false,
2801        }
2802      },
2803      mounted: function() {
2804        this.getProductDetail();
2805        $('.custom-scrollbar').addCustomScrollbar();
2806        themeHelper.EventBus.$on('photoOnChange', this.photoOnChange);
2807      },
2808      beforeUnmount: function() {
2809        themeHelper.EventBus.$off('photoOnChange', this.photoOnChange);
2810      },
2811      computed: {
2812        photoUrls: function() {
2813          return this.product.photoUrls.length > 0
2814            ? this.product.photoUrls
2815            : [this.featuredImage];
2816        },
2817        photoUrlsMap: function() {
2818          var map = {};
2819          var urls = this.product.photoUrls;
2820          this.product.photos.forEach(function(photo, index) {
2821            map[photo.photo.id] = urls[index];
2822          });
2823
2824          return map;
2825        },
2826        featuredImage: function() {
2827          return this.product.featuredImage;
2828        },
2829        swiperPhotos: function() {
2830          if (!this.photoUrls.length) {
2831            return [this.featuredImage];
2832          }
2833
2834          if (this.currentVariant && this.currentVariant.photos.length) {
2835            var map = this.photoUrlsMap;
2836            return this.currentVariant.photos.map(function(p) {
2837              return map[p.id];
2838            });
2839          }
2840
2841          return this.photoUrls;
2842        },
2843        productVideo: function() {
2844          return this.product.video;
2845        },
2846        videoAfterImage: function() {
2847          return this.videoDisplayLocation === 'after';
2848        },
2849        swiperItems: function() {
2850          const media = [...this.swiperPhotos];
2851          if (
2852            this.hasVideoPlugin && this.productVideo.url
2853          ) {
2854            this.videoAfterImage
2855              ? media.push(this.productVideo)
2856              : media.unshift(this.productVideo);
2857          }
2858          return media;
2859        },
2860        firstImageIndex: function() {
2861          return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage
2862            ? 1
2863            : 0
2864        },
2865        otherDescriptions: function() {
2866          var descriptions = {};
2867          this.product.otherDescriptions.forEach(function(od) {
2868            descriptions[od.settingName] = od.bodyHtml;
2869          })
2870          return descriptions
2871        },
2872        variantOptions: function() {
2873          return themeHelper.variantOptions(this.product);
2874        },
2875        firstValidVariant: function() {
2876          var self = this;
2877          var result = this.product.variants.find(function(variant) {
2878            // 增加 product modal 聯絡店家 property
2879            variant.imgUrl = "";
2880            variant.productTitle = "";
2881
2882            return variant.available;
2883          });
2884
2885          return result
2886            ? result
2887            : null;
2888        },
2889        selectedValidVariant: function() {
2890          var self = this;
2891          var result = this.variantOptions.find(function(variant) {
2892            return variant.id === self.selectedVariantId;
2893          });
2894
2895          return result
2896            ? result
2897            : null;
2898        },
2899        totalInventoryQuantity: function(product) {
2900          return themeHelper.totalInventoryQuantity(this.product)
2901        },
2902        addCartText: function() {
2903          var variants = parseInt("");
2904          let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id]
2905          if (this.isNnCollection || this.isBundleDiscount) {
2906            if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) {
2907              if (this.currentVariant.inventoryPolicy === 'continue') {
2908                if (this.isNnCollection) {
2909                  return this.isChoose && !this.isNewNnCollection
2910                    ? 'Ordered'
2911                    : 'Pre-order';
2912                }
2913              } else {
2914                return 'Sold out';
2915              }
2916            }
2917            if (this.totalInventoryQuantity === 0) {
2918              return 'Sold out';
2919            }
2920            return this.isChoose && !this.isNewNnCollection
2921              ? 'Selected'
2922              : 'Select';
2923          } else {
2924            if (this.isQuickBuy) {
2925              if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) {
2926                if (this.currentVariant.inventoryPolicy === 'continue'){
2927                  return 'Order Now'
2928                }
2929                return this.hasStockNotificationPlugin
2930                  ? (isRegisteredNotification
2931                    ? 'Notification enabled'
2932                    : 'Sold out! Notify me when the product is available.')
2933                  : 'Contact Shop'
2934              }
2935              return 'BUY NOW';
2936            } else {
2937              if (this.currentVariant) {
2938                if (!themeHelper.variantIsAvailable(this.currentVariant)) {
2939                  if (this.currentVariant.inventoryPolicy === 'continue'){
2940                    return 'Pre-order'
2941                  }
2942                  return this.hasStockNotificationPlugin
2943                    ? (isRegisteredNotification
2944                      ? 'Notification enabled'
2945                      : 'Sold out! Notify me when the product is available.')
2946                    : 'Contact Shop'
2947                }
2948              } else {
2949                if (this.totalInventoryQuantity === 0) {
2950                  return 'Sold out';
2951                }
2952              }
2953              return 'ADD TO CART';
2954            }
2955          }
2956        },
2957        cartItem: function() {
2958          if (!this.currentVariant) {
2959            return null
2960          }
2961          return {
2962            id: this.currentVariant.id,
2963            groupId: this.groupId,
2964            productId: this.product.id,
2965            title: this.product.title,
2966            photo: this.currentVariant.imgUrl || this.featuredImage.large,
2967            quantity: this.quantity,
2968            price: this.currentVariant.price,
2969            variant: this.currentVariant,
2970            product: this.product
2971          }
2972        },
2973        options: function() {
2974          return this.product.options;
2975        },
2976        optionTypes: function() {
2977
2978          // 先根據設定的variants來排序
2979          var self = this;
2980
2981          var option1 = [];
2982          var option2 = [];
2983          var option3 = [];
2984          this.product.variants.forEach(function(item) {
2985            if (item.option1 !== null) {
2986              option1.push(item.option1);
2987            }
2988            if (item.option2 !== null) {
2989              option2.push(item.option2);
2990            }
2991            if (item.option3 !== null) {
2992              option3.push(item.option3);
2993            }
2994          })
2995          var filteredOptionTypes = [];
2996          this.product.optionTypes.forEach(function(item, index) {
2997            filteredOptionTypes.push(self.getUniqueVariant(eval('option' + (
2998              index + 1
2999            ))).join(','));
3000          });
3001          return filteredOptionTypes;
3002        },
3003        optionInfo: function() {
3004          var self = this;
3005
3006          return self.options.map(function(option, index) {
3007            return {
3008              name: option,
3009              types: self.getOptions('option' + (
3010                index + 1
3011              ), self.optionTypes[index].split(','))
3012            }
3013          });
3014        },
3015        hasVariant: function() {
3016          return this.product.options.length > 0;
3017        },
3018        shouldHideSingleVariantOptions: function() {
3019          return this.hasHideSingleVariantOptionsPlugin &&
3020                 this.product.variants &&
3021                 this.product.variants.length <= 1;
3022        },
3023        variantSize: function() {
3024          if(this.product.options){
3025          return this.product.options.length;
3026          }
3027        },
3028        firstVariant: function() {
3029          return this.product.variants[0];
3030        },
3031        firstCheapestVariant: function() {
3032          return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice));
3033        },
3034        priceStats: function() {
3035          return this.product.variants.reduce(function(acc, variant) {
3036            return {
3037              minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice,
3038              maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice,
3039            };
3040          }, {
3041            minPrice: this.firstVariant.price,
3042            maxPrice: this.firstVariant.price,
3043          });
3044        },
3045        hidePrice: function() {
3046          return this.product && this.product.hidePrice === true;
3047        },
3048        salesModePurchasable: function() {
3049          return !(this.product && this.product.salesModePurchasable === false);
3050        },
3051         // - 任選折扣/紅配綠:「選擇」只是加進試算清單,不會直接下單,故只擋藏價商品
3052        // - 其他情境(商品頁、群組頁、多層級分類、搜尋、首頁商品區塊):不可購買(含藏價)就整組收掉
3053        showPurchaseControls: function() {
3054          if (this.isNnCollection || this.isBundleDiscount) {
3055            return !this.hidePrice;
3056          }
3057          return this.salesModePurchasable;
3058        },
3059        variantPrice: function() {
3060          if (this.hidePrice) {
3061            return '';
3062          }
3063          var from = liquidHelper.defaultCurrency;
3064          if (this.currentVariant) {
3065            return moneySymbol(this.currentVariant.price, from);
3066          }
3067          if (this.product.variants.length === 1) {
3068            return moneySymbol(this.firstVariant.price, from);
3069          }
3070
3071          var minPrice = this.priceStats.minPrice;
3072          var maxPrice = this.priceStats.maxPrice;
3073
3074          if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) {
3075            this.isDiscountPrice = false;
3076            return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from);
3077          } else {
3078            return moneySymbol(minPrice, from);
3079          }
3080        },
3081        marketPrice: function() {
3082          if (this.hidePrice) {
3083            this.isDiscountPrice = false;
3084            return;
3085          }
3086          var from = liquidHelper.defaultCurrency;
3087          if (this.currentVariant) {
3088            this.isDiscountPrice = false;
3089            if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) {
3090              this.isDiscountPrice = true;
3091              return moneySymbol(this.currentVariant.compareAtPrice, from);
3092            }
3093          } else {
3094            if (!_.includes(this.variantPrice, '~')) {
3095              const price =  Number(this.variantPrice.replace(/[^0-9.
3095-]/g, ""))
3096              // 未選擇款式也不顯示區間時,顯示第一個最便宜的款式的定價
3097              if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){
3098                this.isDiscountPrice = true;
3099                return moneySymbol(this.firstCheapestVariant.compareAtPrice, from);
3100              }
3101              // 未選擇款式時要改回一般價格顏色
3102              this.isDiscountPrice = false;
3103            }
3104          }
3105        },
3106        isShowDropdownList: function() {
3107          if (this.product.options.length > 0) {
3108            return true;
3109          }
3110          return this.product.variants.length > 1
3111        },
3112        priceTitleTag: function() {
3113          return this.marketPrice
3114            ? getDiscountPriceName()
3115            : getDiscountPriceSuggestionName();
3116        },
3117        isHideAddCartBtn: function() {
3118          if (this.addCartText === 'Sold out') {
3119            return true;
3120          }
3121          return false;
3122        },
3123        isSecondaryBtn: function() {
3124          if (this.addCartText === 'Contact Shop') {
3125            return true;
3126          }
3127          return false;
3128        },
3129        variantsMaxUsableBonus: function() {
3130          var variants = this.product.variants;
3131          var maxUsableBonusArray = variants.map(function(item) {
3132            return item.maxUsableBonus
3133          });
3134          return Math.max.apply(null, maxUsableBonusArray);
3135        },
3136        bonusToPrice: function() {
3137          const bonus = this.currentVariant
3138            ? this.currentVariant.maxUsableBonus
3139            : this.maxUsableBonus;
3140          const price = Math.floor(bonus / window.liquidHelper.conversionBonus);
3141          const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price);
3142          return "equivalent to value".replace('value', priceWithMoney);
3143        },
3144        isMobileSize: function() {
3145          return window.innerWidth <= 580
3146        },
3147        limitBuyText: function () {
3148          const minCount = this.product.minBuy;
3149          const maxCount = this.product.limitBuy;
3150          if (minCount > 0 && maxCount > 0) {
3151            return 'For this product, each order requires a minimum purchase of minCount units and allows a maximum purchase of maxCount units.'.replace('minCount', minCount).replace('maxCount', maxCount);
3152          }
3153          if (minCount > 0) {
3154            return 'This product requires a minimum order of minCount pieces per order'.replace('minCount', minCount);
3155          }
3156          if (maxCount > 0) {
3157            return 'For this product, each order allows a maximum purchase of maxCount units.'.replace('maxCount', maxCount);
3158          }
3159          return '';
3160        }
3161      },
3162      methods: {
3163        onClickSelectModal: function(objData, selectOptionStr) {
3164          this.isModalSelectShow = true;
3165          this.modalOption = objData;
3166          this.selectOption = selectOptionStr
3167          this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null)
3168        },
3169        onChangeModalSelect: function(flag, isSelect) {
3170          if(!isSelect){
3171            this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types)
3172          }
3173          this.isModalSelectShow = flag;
3174        },
3175        setOption: function(optionKey, type, dataArr) {
3176          let flag = true
3177          dataArr.forEach(item => {
3178            if (item.name === type) {
3179              flag = item.isValid
3180            }
3181          })
3182          if (flag) {
3183            this.toggleCurrentOption(optionKey, type)
3184          }
3185        },
3186        addToWishListEvent: function() {
3187          try {
3188            if (appMarketAddToWishListEvent) {
3189              var product = this.product;
3190              var currentVariant = this.currentVariant
3191              var element = $(`.btn[data-id=${product.id}]`);
3192              var index;
3193              var listName;
3194              if (element) {
3195                index = element.data('position')
3196                listName = element.data('list')
3197              }
3198              // sku_properties:選中款式的 option pairs(當前語系),類型名 zip 值
3199              var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3];
3200              var properties = [];
3201              (product.options || []).forEach(function(optionName, i) {
3202                if (optionName && optionValues[i]) {
3203                  properties.push({ name: optionName, value: optionValues[i] });
3204                }
3205              });
3206              var dataSet = {
3207                name: product.title,
3208                category: product.productType,
3209                categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)),
3210                sku: currentVariant.sku,
3211                price: currentVariant.price,
3212                compare_at_price: currentVariant.compareAtPrice,
3213                properties: properties,
3214                quantity: currentVariant.inventoryQuantity,
3215                variant: currentVariant.title,
3216                listName: listName || null,
3217                productId: product.id,
3218                variantId: currentVariant.id,
3219                index: Number(index) || 0,
3220              }
3221              appMarketAddToWishListEvent(dataSet)
3222            }
3223          } catch (e) {
3224            console.error(e)
3225          }
3226        },
3227        addWishList: function() {
3228          if (this.currentVariant === null) {
3229            window.msg('Please select product specifications', 'warning').show();
3230            return;
3231          }
3232          var productVariantId = this.currentVariant.id;
3233          var addToWishListEvent = this.addToWishListEvent
3234          $.ajax({
3235            method: 'POST',
3236            url: '/tracking_items',
3237            dataType: 'json',
3238            data: {
3239              product_variant_id: productVariantId
3240            },
3241            success: function(response) {
3242              if (response.message) {
3243                window.msg(response.message, 'success').show();
3244                addToWishListEvent()
3245              }
3246
3247              if (response.error) {
3248                window.msg(response.error, 'error').show();
3249
3250              }
3251              if (response.info) {
3252                window.msg(response.info, 'info').show();
3253              }
3254              if (response.success === false) {
3255                if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) {
3256                  window.location = "/" + window.liquidHelper.language.handle + "/account/login";
3257                } else {
3258                  window.location = "/account/login";
3259                }
3260              }
3261            }
3262          });
3263        },
3264        setChoose: function(currentVariant) {
3265          this.maxUsableBonus = 0;
3266          var quantity = 1;
3267          var cartItem = null;
3268          if (!this.isNnCollection && this.cartItems) {
3269            cartItem = this.normalGetChoosenItem(currentVariant);
3270          }
3271          if (this.isNnCollection) {
3272            cartItem = this.nnCollectionGetChoosenItem(currentVariant);
3273          }
3274          this.isChoose = !! cartItem;
3275          if (this.isNewNnCollection) {
3276            return
3277          }
3278          this.quantity = cartItem
3279            ? cartItem.quantity
3280            : this.quantity;
3281
3282          // product modal 聯絡店家情境
3283          if (currentVariant) {
3284            var photoIndex = 0;
3285            if (! currentVariant.imgUrl) {
3286              currentVariant.imgUrl = this.swiperPhotos.length > 0
3287                ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large)
3288                : this.featuredImage.large;
3289            }
3290            currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title;
3291          }
3292        },
3293        normalGetChoosenItem: function(currentVariant) {
3294          return this.cartItems.find(function(cartItem) {
3295            return currentVariant && cartItem.id === currentVariant.id;
3296          });
3297        },
3298        nnCollectionGetChoosenItem: function(currentVariant) {
3299          var isSelected = null;
3300          if (! currentVariant) {
3301            return isSelected;
3302          }
3303          if (this.isNewNnCollection) {
3304            var cart = store.get(`SpecialCollectionCart_${this.collectionId}`);
3305            isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null;
3306          } else {
3307            store.each(function(value, key) {
3308              var productId = _.includes(key, 'Pro' + currentVariant.productId);
3309              var variantID = _.includes(key, 'Var' + currentVariant.id);
3310              if (productId && variantID) {
3311                isSelected = store.get(key);
3312              }
3313            });
3314          }
3315
3316          return isSelected;
3317        },
3318        // get product detail
3319        getProductDetail: function() {
3320          var self = this;
3321
3322          $.ajax({
3323            url: self.productUrl + '.json',
3324            type: 'GET',
3325            timeout: 30000,
3326            beforeSend: function() {
3327              self.isLoading = true;
3328            },
3329            error: function(xhr) {
3330              self.closeModal();
3331              if (xhr.status === 429) {
3332                window.showAddCartRateLimitModal(5);
3333                return;
3334              }
3335              window.msg('Network error, please try again later', 'error').show();
3336            }
3337          }).done(function(data) {
3338            if (data.id) {
3339              var productData = [themeHelper.toCamelCase(data)];
3340              self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0];
3341              self.maxUsableBonus = self.variantsMaxUsableBonus;
3342              if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) {
3343                self.currentVariant = self.firstValidVariant;
3344                // 如果已經自選商品,則商品頁下滑加入購物車顯示自選商品
3345                if (self.selectedVariantId) {
3346                  self.currentVariant = self.selectedValidVariant;
3347                }
3348                if (self.currentVariant) {
3349                  self.setChoose(self.currentVariant);
3350                  self.setDefaultOption();
3351                }
3352              }
3353              if (self.displayProductDiscountsList) {
3354                self.setUpDiscountsTag(data);
3355              }
3356              self.isLoading = false;
3357              if (self.product && self.product.variants) {
3358                self.product.variants.forEach(function(discountedVariant) {
3359                  var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; });
3360                  if (rawVariant) { rawVariant.price = discountedVariant.price; }
3361                });
3362              }
3363              viewItem && viewItem(data, { collectionId: '', collectionName: null, categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) });
3364
3365              (function() {
3366                // Read login status from cacheable, skip GET /pv_notification if not login.
3367                if (window.store && window.store.get('customer')) {
3368                  var cacheableCustomer = window.store.get('customer');
3369                  if (cacheableCustomer.notLogin) {
3370                    return;
3371                  }
3372                }
3373                $.ajax({
3374                  url: '/pv_notification',
3375                  method: 'GET',
3376                  dataType: 'json',
3377                  data: {
3378                    product_id: parseInt(data.id)
3379                  },
3380                  success: function(response) {
3381                    self.variantNotifications = response.variants;
3382                  }
3383                })
3384              })();
3385            } else {
3386              window.msg('Network error, please try again later', 'error').show();
3387              self.closeModal()
3388            }
3389          })
3390        },
3391        // product image btn
3392        photoOnChange: function(photoIndex, isVariantReposition) {
3393          var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length)
3394            ? this.currentVariant.photos
3395            : this.product.photos.map(function(p) { return p.photo; });
3396          var result = themeHelper.buildNavigateItemImagePayload(this._navState, {
3397            product: this.product,
3398            currentVariant: this.currentVariant,
3399            visiblePhotos: visiblePhotos,
3400            slideIndex: photoIndex,
3401            videoOffset: this.firstImageIndex,
3402          });
3403          this._navState = result.nextState;
3404          if (result.payload && !isVariantReposition) {
3405            window.navigateItemImage(result.payload);
3406          }
3407          this.currentImageIndex = photoIndex;
3408        },
3409        toggleCurrentOption: function(key, value) {
3410          this.currentOption[key] =
3411            (this.currentOption[key] === value || value === 'null') ? null : value;
3412          var variantIndex = this.getVariantIndex();
3413          if (variantIndex !== -1) {
3414            this.currentVariant = this.product.variants[variantIndex];
3415          } else {
3416            this.currentVariant = null;
3417          }
3418          this.setChoose(this.product.variants[variantIndex]);
3419          if (this.currentOption[key] !== null) {
3420            var optionIndex = parseInt(key.replace('option', '')) - 1;
3421            appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant);
3422          }
3423        },
3424        toggleNotification: function() {
3425          var self = this;
3426          var variantId = this.currentVariant.id;
3427
3428          $.ajax({
3429            url: '/toggle_pv_notification',
3430            method: 'POST',
3431            dataType: 'json',
3432            data: {
3433              product_variant_id: variantId
3434            },
3435            success: function(response) {
3436              self.variantNotifications[variantId] = response.notice;
3437              window.msg(response.message, "success").show();
3438            },
3439            error: function(xhr) {
3440              var response = xhr.responseJSON;
3441              var msg = response && response.error || "Network error, please try again later";
3442              window.msg(msg, "error").show();
3443            }
3444          })
3445        },
3446        getOptionImageIndex: function(index) {
3447          this.currentImageIndex = index;
3448        },
3449        quantityDecrease: function() {
3450          if (this.cartItem) {
3451            themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false);
3452            this.quantity = this.cartItem.quantity
3453          } else {
3454            window.msg("Please select product specifications", 'warning').show();
3455          }
3456        },
3457        quantityIncrease: function() {
3458          if (this.cartItem) {
3459            themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false);
3460            this.quantity = this.cartItem.quantity
3461          } else {
3462            window.msg("Please select product specifications", 'warning').show();
3463          }
3464        },
3465        quantityChange: function(el) {
3466          if (this.cartItem) {
3467            themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false);
3468            this.quantity = this.cartItem.quantity;
3469            el.target.value = this.cartItem.quantity;
3470          } else {
3471            window.msg("Please select product specifications", 'warning').show();
3472          }
3473        },
3474        addProduct: function() {
3475          if (this.addCartText === 'Contact Shop') {
3476            $('#messagebuy-Modal').data('variant', this.currentVariant);
3477            $('#messagebuy-Modal').modal('show');
3478            $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)");
3479          } else if (
3480            this.addCartText === 'Notification enabled' ||
3481            this.addCartText === 'Sold out! Notify me when the product is available.'
3482          ) {
3483              this.toggleNotification();
3484          } else {
3485            if (this.cartItem) {
3486              try {
3487                if (this.isChoose) {
3488                  themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack)
3489                } else {
3490                  themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack)
3491                }
3492
3493                this.adding = true;
3494                this.closeModal();
3495              } catch (e) {
3496                window.msg("Unusual product specification; please select again.", 'error').show();
3497              }
3498            } else {
3499              window.msg("Please select product specifications", 'warning').show();
3500            }
3501          }
3502        },
3503        closeModal: function() {
3504          themeHelper.EventBus.$emit('closeProductModal');
3505        },
3506        setDefaultOption: function() {
3507          var self = this;
3508          Object.keys(self.currentOption).map(function(optionKey) {
3509            self.currentOption[optionKey] = self.currentVariant[optionKey];
3510          });
3511        },
3512        getVariantIndex: function() {
3513          var self = this;
3514          return self.product.variants.findIndex(function(variant, index) {
3515            var isVariant = true;
3516            Object.keys(self.currentOption).forEach(function(option) {
3517              if (variant[option] !== self.currentOption[option]) {
3518                isVariant = false;
3519              }
3520            });
3521            return isVariant;
3522          });
3523        },
3524
3525        // 篩選重複品項
3526        getUniqueVariant: function(variants) {
3527          return variants.filter(function(value, index, self) {
3528            return self.indexOf(value) === index;
3529          });
3530        },
3531        groupBy(xs, key) {
3532          return xs.reduce(function(rv, x) {
3533            (rv[x[key]] = rv[x[key]] || []).push(x);
3534            return rv;
3535          }, {});
3536        },
3537        setUpDiscountsTag(data) {
3538          var self = this;
3539          var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW');
3540          $.ajax({
3541            url: languagePrefix + self.productUrl + '/discounts_list',
3542            method: 'GET',
3543            success: function(result) {
3544              if (result.length > 0) {
3545                var discounts_list = self.groupBy(result, 'campaign_type');
3546                self.discountsList = discounts_list;
3547              } else {
3548                self.discountsList = null;
3549              }
3550            }
3551          });
3552        },
3553        getOptions: function(optionKey, optionTypes) {
3554          var self = this;
3555          return optionTypes.map(function(optionType, index) {
3556            var isValid = true;
3557
3558            // 選出包含目前type的variant
3559            var matchVariants = self.product.variants.filter(function(variant) {
3560              return variant[optionKey] === optionType;
3561            });
3562
3563            // 篩選已勾選type
3564            Object.keys(self.currentOption).forEach(function(currentOptionKey) {
3565              if (currentOptionKey !== optionKey) {
3566                matchVariants = matchVariants.filter(function(variant) {
3567                  if (self.currentOption[currentOptionKey]) {
3568                    return variant[currentOptionKey] === self.currentOption[currentOptionKey]
3569                  } else {
3570                    return true;
3571                  }
3572                });
3573              }
3574            });
3575            if (matchVariants.length === 0) {
3576              isValid = false;
3577            }
3578            if (! self.isEmptyClickable) {
3579              isValid = false;
3580              matchVariants.find(function(item) {
3581                if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') {
3582                  isValid = true;
3583                }
3584              });
3585            }
3586            return {name: optionType, isValid: isValid}
3587          });
3588        }
3589      }
3590    };
3591  });
3592</script>
3592
3593
3594<!-- cyb_snippet _product_modal_js end -->
3595
3596<!-- cyb_snippet components/product_modal/product_modal end -->
3597
3598<!-- cyb_snippet messagebuy_modal start -->
3599
3600
3601<!-- cyb_snippet messagebuy_modal end -->
3602<!-- cyb_snippet components/rate_limit_modal start -->
3603<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
3604
3605<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
3606  <div class="modal-dialog modal-dialog-centered" role="document">
3607    <div class="modal-content">
3608      <div class="modal-body">
3609        <div class="qk-text--default_dark rate-limit-text">
3610          <p id="rate-limit-title">High demand right now, please wait</p>
3611          <p class="qk-fs--body qk-fw--500 rate-limit-message">
3612            <span class="qk-text--error" id="rate-limit-countdown"></span>
3613            <span id="rate-limit-desc"></span>
3614          </p>
3615          <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">Leaving this page may increase your wait time.</p>
3616        </div>
3617        <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>Re-enter product page</button>
3618      </div>
3619    </div>
3620  </div>
3621</div>
3622
3623<script>
3624  window.showRateLimitModal = function(countdownSec) {
3625    var countdown = countdownSec || 5;
3626    var $modal = $('#rate-limit-modal');
3627    var $btn = $modal.find('#rate-limit-btn');
3628    var $countdownEl = $modal.find('#rate-limit-countdown');
3629
3630    $btn.show();
3631    $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]);
3632    $countdownEl.text(countdown);
3633    $btn.prop('disabled', true);
3634    $modal.modal('show');
3635
3636    var timer = setInterval(function() {
3637      countdown--;
3638      $countdownEl.text(countdown);
3639      if (countdown <= 0) {
3640        clearInterval(timer);
3641        $btn.prop('disabled', false);
3642      }
3643    }, 1000);
3644
3645    $btn.off('click').on('click', function() {
3646      location.reload();
3647    });
3648  }
3649
3650  window.showAddCartRateLimitModal = function(countdownSec) {
3651    var countdown = countdownSec || 5;
3652    var $modal = $('#rate-limit-modal');
3653    var $countdownEl = $modal.find('#rate-limit-countdown');
3654
3655    $modal.find('#rate-limit-btn').hide();
3656    $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]);
3657    $countdownEl.text(countdown);
3658    $modal.modal('show');
3659
3660    var timer = setInterval(function() {
3661      countdown--;
3662      $countdownEl.text(countdown);
3663      if (countdown <= 0) {
3664        clearInterval(timer);
3665        $modal.modal('hide');
3666      }
3667    }, 1000);
3668  }
3669</script>
3669
3670
3671<!-- cyb_snippet components/rate_limit_modal end -->
3672
3673<script>
3674  $(document).ready(function() {
3675    const shouldSkipQuantityCheck = false;
3676    const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({
3677      componentNames: Object.keys(window.themeHelper.productModalComponents),
3678      mountSelector: '#new-addcart-modal',
3679      autoMount: false,
3680    });
3681
3682    newAddCartModalApp.createApp({
3683      el: '#new-addcart-modal',
3684      delimiters: ['${', '}'],
3685      data() {
3686        return {
3687          collectionId: 0,
3688          categories: [],
3689          color: '', // unused
3690          isCollection: true,
3691          productQuantity: 0,
3692          onlyDescription: false,
3693          showProductModal: false,
3694          popProductUrl: '',
3695          loading: false,
3696        };
3697      },
3698      mounted: function() {
3699        themeHelper.EventBus.$on('closeProductModal',this.closeProductModal);
3700        themeHelper.EventBus.$on('updateStore', this.addProduct);
3701        themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease);
3702        themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease);
3703        themeHelper.EventBus.$on('quantityChange', this.quantityChange);
3704      },
3705      methods: {
3706        addProduct: function(actionType, productData, checkoutAddToCartCallback){
3707          var self = this;
3708          var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId;
3709          $.ajax({
3710            method: 'POST',
3711            url: '/cart/add',
3712            headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {},
3713            data: {
3714              id: productData.id,
3715              quantity: productData.quantity,
3716            },
3717            dataType: 'json',
3718            beforeSend: function() {
3719              self.loading = true;
3720              themeHelper.ajaxLoadingMsg('loading');
3721              $('.shopcart').dropdown('hide')
3722              $('.global-cart-count').hide();
3723              $('.global-cart-loading').show();
3724              $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>');
3725            },
3726            error: function(xhr) {
3727              $('.global-cart-loading').hide();
3728              $('.global-cart-count').show();
3729              self.loading = false;
3730              if (xhr.status === 429) {
3731                themeHelper.ajaxLoadingMsg('hide', 0);
3732                self.closeProductModal();
3733                window.showAddCartRateLimitModal(5);
3734                return;
3735              }
3736              themeHelper.ajaxLoadingMsg('fail', 2000);
3737            }
3738          }).done(function(data, status, request){
3739            // product modal 立即購買按鈕
3740            window.sendAddToCartEvent && sendAddToCartEvent({
3741              price: productData.price,
3742              quantity: productData.quantity,
3743              id: productData.product.id,
3744              name: productData.product.title,
3745              category: productData.product.productType,
3746              brand: productData.product.vendor,
3747              qc: productData.variant.qc,
3748              variant: {
3749                id: productData.variant.id,
3750                title: productData.variant.title,
3751                sku: productData.variant.sku,
3752                price: productData.variant.price,
3753                qc: productData.variant.qc,
3754              },
3755              position: "商品彈出視窗",
3756              request,
3757            })
3758            if (self.isQuickBuy) {
3759              if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) {
3760                window.location = "/" + window.liquidHelper.language.handle + "/cart";
3761              } else {
3762                window.location = "/cart";
3763              }
3764            } else {
3765              themeHelper.ajaxLoadingMsg('success');
3766              pullNavCart();
3767              $('.shopcart').dropdown('show')
3768              $('.global-cart-loading').hide();
3769              self.loading = false;
3770            }
3771            if(typeof checkoutAddToCartCallback === 'function'){
3772              var callbackData = {
3773                id: productData.id,
3774                quantity: productData.quantity,
3775                title: productData.product ? productData.product.title : productData.title || ''
3776              };
3777              checkoutAddToCartCallback(callbackData)
3778            }
3779            peh.emit('product:add_to_cart', [{
3780              variantId: productData.id,
3781              quantity: productData.quantity
3782            }], self.collectionId);
3783          }).fail(function(e){
3784            if (e.status === 429) {
3785              return;
3786            }
3787            let err_msg = e.responseJSON.err_msg;
3788            err_msg && err_msg.length > 0 ?
3789              window.msg(e.responseJSON.err_msg, 'warning').show():
3790              window.msg("Network error, please try again.", 'warning').show();
3791          })
3792        },
3793        quantityDecrease: function(cartItem, isAdded){
3794          if (cartItem.quantity > 1) {
3795            cartItem.quantity -= 1;
3796          } else {
3797            window.msg("Quantity must be greater than 0;
3797 please select the amount to purchase.", 'warning').show();
3798          }
3799        },
3800        quantityIncrease: function(cartItem, isAdded){
3801          const limitQuantity = cartItem.variant.inventoryQuantity;
3802          const limitBuy = cartItem.product.limitBuy
3803          if (limitBuy && cartItem.quantity >= limitBuy) {
3804            product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy)
3805            window.msg(product_limit_buy, 'warning').show();
3806            return;
3807          } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) {
3808            window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show();
3809          } else if ( cartItem.quantity < limitQuantity || limitQuantity === null ||
3810            cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) {
3811            cartItem.quantity += 1;
3812          } else {
3813            this.showInventoryMessage(limitQuantity);
3814          }
3815        },
3816        quantityChange: function(quantity, cartItem, isAdded){
3817          const limitBuy = cartItem.product.limitBuy
3818          var limitQuantity = cartItem.variant.inventoryQuantity;
3819          var inventoryPolicy = cartItem.variant.inventoryPolicy;
3820          if (Number.isInteger(quantity)) {
3821            if (quantity >= 1) {
3822              if (limitBuy && quantity >= limitBuy) {
3823                product_limit_buy = "Limited purchase of this product limitBuy items".replace('limitBuy', limitBuy)
3824                window.msg(product_limit_buy, 'warning').show();
3825              } else if (quantity > liquidHelper.cartQuantityLimit) {
3826                window.msg("Quantity exceeds shopping cart limit; please remove some items and place the order again.", 'warning').show();
3827              } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) {
3828                cartItem.quantity = quantity;
3829              } else {
3830                cartItem.quantity = limitQuantity;
3831                this.showInventoryMessage(limitQuantity);
3832              }
3833            } else {
3834              window.msg("Quantity must be greater than 0; please select the amount to purchase.", 'warning').show();
3835            }
3836          } else {
3837            window.msg("Quantity input error", 'warning').show();
3838          }
3839        },
3840        popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){
3841          this.showProductModal = true;
3842          this.collectionId = collectionId;
3843          this.categories = categories || [];
3844          this.popProductUrl = productUrl;
3845          this.color = color || ''; // unused
3846          this.isCollection = isCollection || false;
3847          this.isShowDescription = isShowDescription != false;
3848          this.isQuickBuy = isQuickBuy || false;
3849          this.selectedVariantId = parseInt(variantId) || undefined;
3850          this.checkoutAddToCartCallback = checkoutAddToCartCallback;
3851          document.body.style.overflow = "hidden";
3852        },
3853        closeProductModal: function() {
3854          this.showProductModal = false;
3855          document.body.style.overflow = "";
3856        },
3857        showInventoryMessage: function(inventoryQuantity) {
3858          const stockMessage = "Quantity exceeds inventory stock. Remaining count".replace('count', inventoryQuantity || 0);
3859          window.msg(stockMessage, 'warning').show();
3860        },
3861      }
3862    });
3863
3864    for (const componentName in window.themeHelper.productModalComponents) {
3865      newAddCartModalApp.component(
3866        componentName,
3867        window.themeHelper.productModalComponents[componentName],
3868      );
3869    }
3870
3871    window.new_addcart_modal = newAddCartModalApp.mount();
3872  });
3873</script>
3873
3874
3875<!-- cyb_snippet new_addcart_modal end -->
3876    
3876<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/new_cart-e958d46bfee2e69f.js' type='text/javascript'></script>
3876
3877  
3878</div>
3879
3880    </div>
3881
3882    <!-- Footer -->
3883    
3884
3885
3886
3887
3888
3889
3890<style>
3891  
3892  
3893  @media(min-width: 991px) {
3894    .display_x .left-content > div {
3895      max-width: calc(100% / 2);
3896    }
3897  }
3898</style>
3899
3900<div id="index-recommendation"></div>
3901
3902<footer id="footer" class="qk-fs--body qk-bg--footer_bg">
3903  
3904    
3905    <div class="qk-container display_x">
3906      <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between">
3907        <div class="left-content qk-flex--1">
3908          
3909            
3910              <div class="link-list-container">
3911                
3912                  <p class="footer_title qk-fs--title qk-text--footer_text">Menu</p>
3913                
3914                <div class="item horizontal qk-text--left">
3915                  <ul class="qk-display--flex qk-flex--wrap">
3916                    
3917                      
3918                        <li class="qk-display--il_bk">
3919                          
3920                            <a
3921                              class="qk-text--footer_text"
3922                              href="/account/index"
3923                              rel="noopener noreferrer"
3924                              target="_blank">My Account 會員專區</a>
3925                          
3926                        </li>
3927                      
3928                        <li class="qk-display--il_bk">
3929                          
3930                            <a
3931                              class="qk-text--footer_text"
3932                              href="/pages/退換貨政策"
3933                              rel="noopener noreferrer"
3934                              target="_blank">Return Policy 退換貨政策</a>
3935                          
3936                        </li>
3937                      
3938                        <li class="qk-display--il_bk">
3939                          
3940                            <a
3941                              class="qk-text--footer_text"
3942                              href="/pages/terms"
3943                              rel="noopener noreferrer"
3944                              target="_blank">Terms of Service 服務條款</a>
3945                          
3946                        </li>
3947                      
3948                        <li class="qk-display--il_bk">
3949                          
3950                            <a
3951                              class="qk-text--footer_text"
3952                              href="/pages/privacy"
3953                              rel="noopener noreferrer"
3954                              target="_blank">Privacy Policy 隱私政策</a>
3955                          
3956                        </li>
3957                      
3958                        <li class="qk-display--il_bk">
3959                          
3960                            <a
3961                              class="qk-text--footer_text"
3962                              href="/pages/運送政策"
3963                              rel="noopener noreferrer"
3964                              target="_blank">Shipping Policy 運送政策</a>
3965                          
3966                        </li>
3967                      
3968                    
3969                  </ul>
3970                </div>
3971              </div>
3972              
3973          
3974            
3975              <div id="1675419928503_2" class="rich-text-editor-container qk-text--footer_text item qk-flex--1">
3976                
3977                  <p class="footer_title qk-fs--title rich-text-editor-title"></p>
3978                
3979                <div class="rich-text-content-container">
3980                  <p>香澄國際有限公司&nbsp;</p>
3981<p>BRUME INTERNATIONAL CO.,LTD</p>
3982<p>統一編號:83118482</p>
3983<p></p>
3984<p>松山門市:</p>
3985<p>台灣台北市松山區南京東路五段250巷2弄39號</p>
3986<p>聯絡信箱:[email protected]</p>
3987<p>客服時間:13:00-21:00</p>
3988
3989                </div>
3990              </div>
3991            
3992          
3993        </div>
3994        <div class="right-content qk-display--flex qk-flex--column">
3995          
3996          <div class="media qk-display--il">
3997            <div class="item social_media qk-h--auto qk-float--l">
3998              <ul>
3999                
4000                  <li class="qk-display--il_bk">
4001                    <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d">
4002                      <svg
4003                        class="facebook-svg"
4004                        xmlns="http://www.w3.org/2000/svg"
4005                        width="40"
4006                        height="40"
4007                        viewBox="0 0 40 40">
4008                        <path class="qk-svg--footer_text" d="M40 20.1208C40 30.1027 32.6767 38.3778 23.1167 39.8795V25.9409H27.765L28.65 20.1742H23.1167V16.4324C23.1167 14.8541 23.89 13.3174 26.3667 13.3174H28.8817V8.4073C28.8817 8.4073 26.5983 8.01729 24.4167 8.01729C19.86 8.01729 16.8833 10.779 16.8833 15.7774V20.1725H11.8183V25.9393H16.8833V39.8779C7.325 38.3745 0 30.101 0 20.1208C0 9.07564 8.955 0.120483 20 0.120483C31.045 0.120483 40 9.07398 40 20.1208Z" />
4009                      </svg>
4010                    </a>
4011                  </li>
4012                
4013                
4014                  <li class="qk-display--il_bk">
4015                    <a target="_blank" rel="noopener noreferrer" href="https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y=">
4016                      <svg
4017                        class="instagram-svg"
4018                        xmlns="http://www.w3.org/2000/svg"
4019                        width="40"
4020                        height="40"
4021                        viewBox="0 0 40 40">
4022                        <rect class="qk-svg--footer_text" width="40" height="40" rx="20" />
4023                        <path class="qk-svg--footer_bg" d="M15.0302 8.08393C13.7534 8.14417 12.8814 8.34793 12.1192 8.64745C11.3303 8.95489 10.6616 9.36745 9.99636 10.0351C9.33107 10.7028 8.92139 11.3719 8.61611 12.162C8.32066 12.9259 8.1205 13.7986 8.0641 15.0761C8.0077 16.3536 7.99522 16.7643 8.00146 20.023C8.0077 23.2817 8.0221 23.6902 8.08402 24.9704C8.14498 26.2469 8.34802 27.1186 8.64755 27.8811C8.95547 28.67 9.36755 29.3384 10.0355 30.0039C10.7034 30.6694 
402311.3721 31.0782 12.1641 31.3839C12.9273 31.6789 13.8002 31.88 15.0775 31.9359C16.3547 31.9918 16.7659 32.0048 20.0237 31.9986C23.2815 31.9923 23.6916 31.9779 24.9716 31.9172C26.2515 31.8565 27.1186 31.652 27.8813 31.3539C28.6702 31.0453 29.3391 30.6339 30.0042 29.9658C30.6692 29.2976 31.0787 28.628 31.3837 27.8374C31.6794 27.0742 31.8803 26.2013 31.9357 24.925C31.9916 23.6441 32.0048 23.2352 31.9986 19.9769C31.9923 16.7187 31.9777 16.3102 31.917 15.0305C31.8563 13.7508 31.653 12.8818 31.3537 12.1188C31.0453 11.3299 30.6337 10.662 29.966 9.99601C29.2983 9.33001 28.6282 8.92081 27.8379 8.61649C27.0742 8.32105 26.2018 8.11969 24.9245 8.06449C23.6472 8.00929 23.2361 7.99513 19.9771 8.00137C16.7181 8.00761 16.3101 8.02153 15.0302 8.08393ZM15.1703 29.7771C14.0003 29.7262 13.365 29.5318 12.9417 29.3691C12.381 29.1531 11.9817 28.892 11.5597 28.4742C11.1378 28.0563 10.8786 27.6555 10.6597 27.0961C10.4953 26.6727 10.2973 26.0381 10.2426 24.8681C10.1831 23.6036 10.1706 23.2239 10.1636 20.0201C10.1567 16.8164 10.1689 16.4372 10.2244 15.1721C10.2743 14.0031 10.4699 13.3671 10.6324 12.9439C10.8484 12.3826 11.1085 11.9839 11.5273 11.5623C11.9461 11.1406 12.3457 10.8809 12.9057 10.662C13.3286 10.4969 13.9631 10.3006 15.1327 10.2449C16.3982 10.1849 16.7774 10.1729 19.9807 10.1659C23.184 10.159 23.5642 10.171 24.8302 10.2267C25.9992 10.2775 26.6355 10.4712 27.0581 10.6347C27.619 10.8507 28.0181 11.1101 28.4398 11.5296C28.8615 11.9491 29.1214 12.3473 29.3403 12.9084C29.5057 13.3301 29.702 13.9644 29.7572 15.1347C29.8174 16.4002 29.8311 16.7796 29.8369 19.9827C29.8426 23.1857 29.8314 23.5661 29.7759 24.8307C29.7248 26.0007 29.5309 26.6362 29.3679 27.0601C29.1519 27.6205 28.8915 28.0201 28.4725 28.4415C28.0534 28.863 27.6543 29.1226 27.0941 29.3415C26.6717 29.5064 26.0364 29.7032 24.8679 29.7589C23.6023 29.8184 23.2231 29.8309 20.0186 29.8378C16.8141 29.8448 16.4361 29.8318 15.1706 29.7771M24.9531 13.5864C24.9535 13.8713 25.0385 14.1495 25.1971 14.3861C25.3558 14.6226 25.581 14.8068 25.8443 14.9154C26.1077 15.0239 26.3973 15.0519 26.6765 14.9959C26.9558 14.9398 27.2122 14.8022 27.4132 14.6004C27.6142 14.3986 27.7509 14.1418 27.806 13.8623C27.861 13.5828 27.8319 13.2933 27.7224 13.0304C27.6129 12.7675 27.4279 12.5429 27.1908 12.3851C26.9536 12.2274 26.675 12.1435 26.3902 12.144C26.0084 12.1448 25.6425 12.2972 25.373 12.5677C25.1035 12.8381 24.9524 13.2046 24.9531 13.5864ZM13.8386 20.012C13.8453 23.4152 16.6091 26.1677 20.0117 26.1613C23.4142 26.1548 26.1687 23.3912 26.1622 19.988C26.1557 16.5848 23.3911 13.8315 19.9881 13.8382C16.5851 13.8449 13.8321 16.6092 13.8386 20.012ZM16 20.0076C15.9985 19.2165 16.2315 18.4427 16.6698 17.784C17.108 17.1253 17.7317 16.6114 18.462 16.3072C19.1924 16.003 19.9965 15.9222 20.7727 16.075C21.549 16.2278 22.2625 16.6073 22.823 17.1656C23.3836 17.724 23.766 18.436 23.9218 19.2116C24.0777 19.9872 24.0001 20.7917 23.6988 21.5232C23.3975 22.2547 22.886 22.8804 22.2291 23.3213C21.5721 23.7621 20.7992 23.9983 20.0081 23.9998C19.4827 24.0009 18.9623 23.8985 18.4766 23.6985C17.9909 23.4985 17.5493 23.2047 17.1771 22.834C16.8049 22.4632 16.5094 22.0228 16.3074 21.5379C16.1054 21.0529 16.001 20.533 16 20.0076Z" />
4024                      </svg>
4025                    </a>
4026                  </li>
4027                
4028                
4029                  <li class="qk-display--il_bk">
4030                    <a target="_blank" rel="noopener noreferrer" href="https://line.me/R/ti/p/@901hnpwy">
4031                      <svg
4032                        class="line-svg"
4033                        xmlns="http://www.w3.org/2000/svg"
4034                        width="40"
4035                        height="40"
4036                        viewBox="0 0 40 40">
4037                        <rect class="qk-svg--footer_text" width="40" height="40" rx="20" />
4038                        <path class="qk-svg--footer_bg" d="M32.5946 18.2214C32.5946 12.5857 26.9449 8 20.0002 8C13.0555 8 7.40576 12.5857 7.40576 18.2214C7.40576 23.2743 11.8873 27.5053 17.9396 28.3048C18.3506 28.392 18.908 28.575 19.0487 28.9269C19.1754 29.245 19.1303 29.7433 19.0881 30.0642C19.0881 30.0642 18.9417 30.9537 18.908 31.1423C18.8517 31.4604 18.6546 32.3866 20.0002 31.8207C21.343 31.2549 27.2545 27.5503 29.895 24.5101C31.7191 22.5058 32.5946 20.4762 32.5946 18.2214Z" />
4039                        <path class="qk-svg--footer_text" d="M17.4413 15.4965H16.5574C16.4223 15.4965 16.3125 15.6062 16.3125 15.7414V21.2279C16.3125 21.363 16.4223 21.4728 16.5574 21.4728H17.4413C17.5764 21.4728 17.6862 21.363 17.6862 21.2279V15.7414C17.6862 15.6062 17.5764 15.4965 17.4413 15.4965Z" />
4040                        <path class="qk-svg--footer_text" d="M23.5219 15.4965H22.638C22.5028 15.4965 22.3931 15.6063 22.3931 15.7414V19.0012L19.8792 15.6063C19.8736 15.5978 19.868 15.5894 19.8595 15.5809C19.8595 15.5809 19.8595 15.5809 19.8595 15.5781C19.8539 15.5725 19.8483 15.5668 19.8455 15.564C19.8426 15.564 19.8426 15.5612 19.8398 15.5584C19.8342 15.5556 19.8314 15.55 19.8258 15.5471C19.8229 15.5443 19.8229 15.5443 19.8201 15.5415C19.8173 15.5387 19.8117 15.5359 19.8089 15.5331C19.8061 15.5303 19.8032 15.5303 19.8004 15.5274C19.7948 15.5246 19.792 15.5218 19.7863 15.519C19.7835 15.519 19.7807 15.5162 19.7779 15.5162C19.7723 15.5134 19.7695 15.5105 19.7638 15.5105C19.761 15.5105 19.7582 15.5077 19.7554 15.5077C19.7498 15.5049 19.7469 15.5049 19.7413 15.5021C19.7385 15.5021 19.7357 15.5021 19.7329 15.4993C19.7272 15.4993 19.7244 15.4965 19.7188 15.4965C19.716 15.4965 19.7132 15.4965 19.7075 15.4937C19.7019 15.4937 19.6991 15.4937 19.6935 15.4908C19.6878 15.4908 19.685 15.4908 19.6822 15.4908C19.6794 15.4908 19.6766 15.4908 19.6737 15.4908H18.7898C18.6547 15.4908 18.5449 15.6006 18.5449 15.7358V21.2222C18.5449 21.3574 18.6547 21.4671 18.7898 21.4671H19.6737C19.8089 21.4671 19.9187 21.3574 19.9187 21.2222V17.9709L22.4353 21.3714C22.4522 21.3968 22.4747 21.4165 22.4972 21.4305C22.4972 21.4305 22.5 21.4305 22.5 21.4334C22.5057 21.4362 22.5113 21.439 22.5141 21.4418C22.5169 21.4418 22.5197 21.4446 22.5226 21.4446C22.5254 21.4474 22.531 21.4474 22.5338 21.4503C22.5366 21.4531 22.5423 21.4531 22.5451 21.4559C22.5479 21.4559 22.5507 21.4587 22.5535 21.4587C22.5591 21.4615 22.5648 21.4615 22.5704 21.4643H22.5732C22.5929 21.47 22.6154 21.4728 22.6352 21.4728H23.5191C23.6542 21.4728 23.764 21.363 23.764 21.2279V15.7414C23.7668 15.6063 23.657 15.4965 23.5219 15.4965Z" />
4041                        <path class="qk-svg--footer_text" d="M15.313 20.099H12.9118V15.7414C12.9118 15.6062 12.802 15.4965 12.6669 15.4965H11.783C11.6479 15.4965 11.5381 15.6062 11.5381 15.7414V21.2279C11.5381 21.2926 11.5634 21.3545 11.6056 21.3968L11.6085 21.3996L11.6113 21.4024C11.6563 21.4446 11.7154 21.4699 11.7802 21.4699H15.3102C15.4453 21.4699 15.5551 21.3602 15.5551 21.225V20.3411C15.5579 20.2116 15.4482 20.099 15.313 20.099Z" />
4042                        <path class="qk-svg--footer_text" d="M28.4001 16.8702C28.5352 16.8702 28.645 16.7604 28.645 16.6253V15.7414C28.645 15.6062 28.5352 15.4965 28.4001 15.4965H24.87C24.8053 15.4965 24.7433 15.5218 24.7011 15.5668L24.6983 15.5697C24.6983 15.5725 24.6955 15.5725 24.6955 15.5753C24.6533 15.6203 24.6279 15.6794 24.6279 15.7442V21.2307C24.6279 21.2954 24.6533 21.3573 24.6955 21.3996L24.6983 21.4024L24.7011 21.4052C24.7462 21.4474 24.8053 21.4756 24.87 21.4756H28.4001C28.5352 21.4756 28.645 21.3658 28.645 21.2307V20.3467C28.645 20.2116 28.5352 20.1018 28.4001 20.1018H25.9988V19.1757H28.4001C28.5352 19.1757 28.645 19.0659 28.645 18.9308V18.0469C28.645 17.9118 28.5352 17.802 28.4001 17.802H25.9988V16.8758H28.4001V16.8702Z" />
4043                      </svg>
4044                    </a>
4045                  </li>
4046                
4047                
4048              </ul>
4049            </div>
4050          </div>
4051        </div>
4052      </div>
4053    </div>
4054    
4055  <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default">
4056    <div class="qk-container container qk-fw--500">
4057      <span>Copyright ©</span>
4058      <a class="qk-text--link" href="/">
4059        <span>brumetaipei</span>
4060      </a>
4061      <span>All Rights Reserved.</span>
4062      <span>Designed by
4063      </span>
4064      <a
4065        class="qk-text--link"
4066        href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz"
4067        target="_blank"
4068        rel="noopener noreferrer"
4069        title="Designed by CYBERBIZ">CYBERBIZ</a>.
4070    </div>
4071  </div>
4072  
4073</footer>
4074<script>
4075  $(document).ready(function() {
4076    let isDynamicLoading = false;
4077
4078    let menusData = {
4079      
4080        
4081          "footer": {
4082            
4083              "type": "items",
4084              "data": [
4085                
4086                
4087                  
4088                    {
4089                      "title": "My Account 會員專區",
4090                      "url": "/account/index",
4091                      "item_type": "http"
4092                    },
4093                  
4094                    {
4095                      "title": "Return Policy 退換貨政策",
4096                      "url": "/pages/退換貨政策",
4097                      "item_type": "page"
4098                    },
4099                  
4100                    {
4101                      "title": "Terms of Service 服務條款",
4102                      "url": "/pages/terms",
4103                      "item_type": "terms"
4104                    },
4105                  
4106                    {
4107                      "title": "Privacy Policy 隱私政策",
4108                      "url": "/pages/privacy",
4109                      "item_type": "privacy"
4110                    },
4111                  
4112                    {
4113                      "title": "Shipping Policy 運送政策",
4114                      "url": "/pages/運送政策",
4115                      "item_type": "page"
4116                    }
4117                  
4118                
4119              ]
4120            
4121          },
4122        
4123      
4124        
4125      
4126    };
4127
4128    if (isDynamicLoading) {
4129      window.DynamicLoading.setupComponent({
4130          sectionId: '#footer',
4131          callbackData:{
4132            section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/labrumetaipei?mibextid=LQQJ4d","display_instagram":true,"shop_instagram":"https://instagram.com/brume.taipei?igshid=YmMyMTA2M2Y=","display_line":true,"shop_line":"https://line.me/R/ti/p/@901hnpwy","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_x","display_facebook_fan_block":true},"block_order":["default_link_list_2","default_contact_info","1675419928503_2"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"選單","thumbnail":"list","draggable":true,"visible":true,"settings":{"dict_link_list_block_title":"About Us","footer_link":"footer"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"聯絡資訊","thumbnail":"contactInfo","draggable":true,"visible":false,"settings":{"dict_contact_info_block_title":"Informations","display_phone":false,"dict_phone_number":"09-87654321","display_fax_number":false,"dict_shop_fax_number":"02-22345678","display_shop_email":"true","dict_shop_email":"[email protected]","display_shop_address":true,"dict_shop_address":"Waterloo, IN 46793, United States","display_office_time":true,"dict_shop_office_time":"10:30am - 6:30pm","dict_tax_id":""}},"default_link_list_2":{"type":"link_list_setting","custom_name":"選單","visible":true,"settings":{"dict_link_list_block_title":"Menu","footer_link":"footer"}},"1675419928503_2":{"type":"rich_text_editor_setting","custom_name":"自訂文字","visible":true,"settings":{"dict_rich_text_title":"","dict_rich_text_content":"\u003cp\u003e香澄國際有限公司\u0026nbsp;\u003c/p\u003e\n\u003cp\u003eBRUME INTERNATIONAL CO.,LTD\u003c/p\u003e\n\u003cp\u003e統一編號:83118482\u003c/p\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003cp\u003e松山門市:\u003c/p\u003e\n\u003cp\u003e台灣台北市松山區南京東路五段250å··2弄39號\u003c/p\u003e\n\u003cp\u003e聯絡信箱:[email protected]\u003c/p\u003e\n\u003cp\u003e客服時間:13:00-21:00\u003c/p\u003e\n"}}},"custom_name":"頁腳"},
4133            shop: {
4134              name: 'brumetaipei',
4135              cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz',
4136              facebook_fan_page: '',
4137            },
4138            menus: menusData,
4139            is_display_facebook_fan_block: false
4140            },
4141          entryName:'renderFooterSection',
4142          source:'//cdn-general.cybassets.com/frontend/shop/footerSection-e958d46bfee2e69f.js',
4143        });
4144    }
4145  });
4146</script>
4146
4147
4148<!-- cyb_snippet _tracking_code start -->
4149      
4149<script>
4150        window.fbAsyncInit = function() {
4151          FB.init({
4152          appId : '1640387676574286',
4153          xfbml : true,
4154          version : 'v24.0',
4155          });
4156        };
4157        (function(d, s, id){
4158          var js, fjs = d.getElementsByTagName(s)[0];
4159          if (d.getElementById(id)) {return;}
4160          js = d.createElement(s);
4161          js.id = id;
4162          js.src = 'https://connect.facebook.net/zh_TW/sdk.js';
4163          fjs.parentNode.insertBefore(js, fjs);
4164        }(document, 'script', 'facebook-jssdk'));
4165      </script>
4165
4166
4167
4168<script>
4169  // for scupio
4170  if (document.querySelector("meta[name=\"scupio_mid\"]")) {
4171    mid = document.querySelector("meta[name=\"scupio_mid\"]").content;
4172  } else {
4173    mid = "";
4174  }
4175  if (!window.is_scupio_sent && mid) {
4176    window._bwtm = window._bwtm || []
4177    window._bwtm.push({
4178      "mid": mid,
4179      "uid": ""
4180    });
4181  }
4182</script>
4182
4183
4184<!-- cyb_snippet _tracking_code end -->
4185
4186<script>
4187  $(document).ready(function(){
4188    if(window.location.pathname != '' && window.location.pathname != '/' ){
4189      document.getElementById('index-recommendation').style.display = 'none'
4190    }
4191  });
4192</script>
4192
4193
4194
4195
4196    <!-- Fast-Events -->
4197    <!-- cyb_snippet fast_events start -->
4198
4199
4200<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/fast_events-e958d46bfee2e69f.js' type='text/javascript'></script>
4200
4201<link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/fast_events-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
4202
4203<!-- cyb_snippet fast_events end -->
4204
4205    <div class="bottom-right qk-pos--fixed">
4206      <!-- gototop -->
4207      <div id="gototop" class="qk-display--none qk-text--center">
4208        <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center">
4209          <i class="fas fa-chevron-up"></i>
4210        </a>
4211      </div>
4212
4213      <!-- popup -->
4214      
4215  <link href='//cdn-general.cybassets.com/frontend/shop/beta_theme/css/popup-e958d46bfee2e69f.css' rel='stylesheet' type='text/css' media='all' />
4216
4217
4218
4219  
4220
4221
4222<div id="popup-wrapper" class="qk-display--none"></div>
4223
4224<template id="popup-template">
4225  <div
4226    :class="status"
4227    v-if="hasContent"
4228    id="popup-section"
4229  >
4230    <transition name="backdrop">
4231      <div
4232        v-if="shouldShowPopup"
4233        @click.capture="minifyPopup"
4234        id="popup-backdrop"
4235        class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst"
4236      >
4237      </div>
4238    </transition>
4239    <transition name="onShow">
4240      <div
4241        @click.self="showPopup"
4242        @transitionstart="updateGameStatus('start', this)"
4243        @transitionend="updateGameStatus('end', this)"
4244        class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4245      >
4246        <div
4247          v-for="block in blocks"
4248          :key="block.id"
4249          :class="[block.type, minifiedBlockClasses, block.settings.icon_size]"
4250          class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto"
4251        >
4252          <div v-if="block.type === 'image'" class="qk-pos--rel">
4253            <img
4254              v-show="!shouldShowPopup"
4255              :src="block.settings.dict_icon_image_url"
4256              class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4257              alt="popup button"
4258            >
4259            <a
4260              v-show="shouldShowPopup"
4261              :href="block.settings.dict_link"
4262              :target="block.settings.target"
4263              :rel="block.settings.rel"
4264              class="qk-display--flex qk-align--center"
4265              @click="linkClicked"
4266            >
4267              <picture>
4268                <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)">
4269                <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)">
4270                <img
4271                  :src="block.settings.dict_image_url"
4272                  class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o"
4273                  alt="popup picture"
4274                />
4275              </picture>
4276            </a>
4277          </div>
4278          <div v-if="block.type === 'video'">
4279            <iframe
4280              :src="block.settings.dict_video_link"
4281              frameborder="0"
4282              class="qk-center--y qk-w--100 qk-h--100"
4283            ></iframe>
4284          </div>
4285          <div v-if="block.type === 'game'">
4286            <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }">
4287              <iframe
4288                class="cb-game-iframe iframe-loading"
4289                :src="getGameIframeSrc(block)"
4290                style="border: none;"
4291              >
4292                Loading
4293              </iframe>
4294            </div>
4295            <div v-show="gameStatus === 'minified'">
4296              <img
4297                src="//cdn-general.cybassets.com/game_assets/game_minified_new.png"
4298                class="qk-h--100 qk-w--100"
4299                alt="game minified icon"
4300              />
4301            </div>
4302          </div>
4303          <div
4304            v-if="block.type === 'carousel'"
4305            :id="`popup-carousel-${block.id}`"
4306          >
4307          </div>
4308        </div>
4309      </div>
4310    </transition>
4311    <transition name="backdrop">
4312      <div
4313        v-if="shouldShowPopup"
4314        @click.capture="minifyPopup"
4315        class="minify-popup qk-circle qk-circle--md qk-text--black qk-bg--white qk-bd--default qk-bd--border qk-text--center qk-cursor--pointer qk-pos--fixed"
4316      >
4317      </div>
4318    </transition>
4319  </div>
4320</template>
4321
4322<script>
4323  $(document).ready(function() {
4324    const CDN_HOST = '//cdn-general.cybassets.com';
4325    const section = {"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":true,"settings":{"dict_image_url":"","icon_size":"small","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTE5OTczX0Z1bGxTaXplUmVuZGVyX1ZTQ08uanBlZy5qcGVnIl1d.jpeg?sha=4da3969b4b8d3cce","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzA3MTIwMDQ4X0Z1bGxTaXplUmVuZGVyX1ZTQ08tMi5qcGVnLmpwZWciXV0.jpeg?sha=93f1148cf7ef0e88","dict_link":"/collections/新春優惠任2件10off"},"custom_name":"圖片"},"1714638990991_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_tablet_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_mobile_image_url":"//cdn-general.cybassets.com/media/W1siZiIsIjIzODA2L2F0dGFjaGVkX3Bob3Rvcy8xNzI2MTM0MzEzX0I2RUUwRjNBLTZFQzUtNDRBNi1CQkNDLUM2OUM4NkMyMUM0MC5qcGcuanBlZyJdXQ.jpeg?sha=10d667e6dfbe4098","dict_icon_image_url":"","icon_size":"small","dict_link":"/collections/dorsay-parfums"}},"1730702544373_0":{"type":"image","custom_name":"圖片","visible":true,"settings":{"dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_icon_image_url":"","icon_size":"middle","dict_link":""}}},"block_order":["1730702544373_0"],"settings":{},"custom_name":"彈窗廣告"};
4326    var popupSection = Vue.createApp({
4327      template: '#popup-template',
4328      delimiters: ['${', '}'],
4329      data() {
4330        const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/']
4331          .some(path => location.pathname.includes(path));
4332        return {
4333          status: 'minified',
4334          gameStatus: 'show',
4335          blocks: isOmniauthPage
4336            ? []
4337            : section.block_order && section.block_order.reduce(
4338                function(acc, blockId) {
4339                  const block = section.blocks[blockId];
4340                  if (block && block.visible) {
4341                    acc.push({
4342                      ...block,
4343                      id: blockId,
4344                    });
4345                  }
4346                  return acc;
4347                },
4348                [],
4349              ),
4350          hasAddedGameScript: false,
4351        };
4352      },
4353      computed: {
4354        hasContent: function() {
4355          return !!(this.blocks && this.blocks.length > 0);
4356        },
4357        minifiedBlockClasses: function() {
4358          return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : '';
4359        },
4360        shouldShowPopup: function() {
4361          return this.status === 'show';
4362        }
4363      },
4364      methods: {
4365        unhidePopup: function(storedStatus) {
4366          this.status = storedStatus;
4367          $('#popup-wrapper').removeClass('qk-display--none');
4368        },
4369        showPopup: function() {
4370          if (this.status !== 'show') {
4371            this.status = 'show';
4372            this.saveStatus(this.status);
4373          }
4374        },
4375        minifyPopup: function() {
4376          this.status = 'minified';
4377          this.saveStatus('minified');
4378        },
4379        loadStatus: function() {
4380          return JSON.parse(localStorage.getItem('popupStatus'));
4381        },
4382        saveStatus: function(status) {
4383          if (status) {
4384            localStorage.setItem('popupStatus', JSON.stringify({
4385              status: status,
4386              setTime: new Date().getTime(),
4387            }));
4388          }
4389        },
4390        linkClicked: function() {
4391          this.saveStatus('minified');
4392        },
4393        parseVideoLink: function(settings) {
4394          settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link);
4395        },
4396        setupImageSrc: function (settings) {
4397          settings.dict_image_url = this.addCdnHost(settings.dict_image_url);
4398          if (settings.dict_tablet_image_url) {
4399            settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url);
4400          }
4401          if (settings.dict_mobile_image_url) {
4402            settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url);
4403          }
4404          settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url;
4405        },
4406        addCdnHost: function(url) {
4407          if (!url) {
4408            return url; // only add cdn host if url is not empty
4409          }
4410
4411          try {
4412            new URL(url);
4413            return url; // already a valid url, cdn host not needed
4414          } catch {
4415            return `${CDN_HOST}${url}`;
4416          }
4417        },
4418        initStatus: function() {
4419          let newStatus = 'show';
4420          const popupStatus = this.loadStatus();
4421          const currentTime = new Date().getTime();
4422          const oneDay = 1000 * 60 * 60 * 24;
4423          const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay;
4424          const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin();
4425          const isLoggingIn = this.isLoggingIn();
4426          const isCartPage = window.location.pathname.split('/').includes('carts');
4427
4428          if (hasStoredStatus && !redirectedByGameLogin) {
4429            newStatus = popupStatus.status;
4430          }
4431
4432          if (isLoggingIn) {
4433            newStatus = 'minified';
4434          } else {
4435            localStorage.removeItem('redirectedByPopup');
4436          }
4437
4438          setTimeout(() => {
4439            this.status = newStatus;
4440            this.gameStatus = newStatus;
4441            this.saveStatus(newStatus);
4442            if(!isCartPage){
4443              this.unhidePopup(newStatus);
4444            }
4445          }, 1000);
4446        },
4447        initBlocks: function() {
4448          if (this.hasContent) {
4449            this.blocks.forEach(block => {
4450              switch(block.type) {
4451                case 'image':
4452                  this.setupImageSrc(block.settings);
4453
4454                  const isOpenInNewTab = block.settings.link_open_in_new_tab;
4455                  if (isOpenInNewTab) {
4456                    block.settings.target = '_blank';
4457                    block.settings.rel = 'noopener noreferrer';
4458                  }
4459
4460                  break;
4461                case 'video':
4462                  this.parseVideoLink(block.settings);
4463                  break;
4464              }
4465            })
4466          }
4467        },
4468        getGameIframeSrc: function (block) {
4469          return `/games/${block.settings.dict_game_handle}`
4470        },
4471        updateGameStatus: function(type, element) {
4472          if (
4473            (type === 'start' && this.status === 'minified')
4474            || (type === 'end' && this.status === 'show')
4475          ) {
4476            this.gameStatus = this.status;
4477          }
4478        },
4479        setupGameRedirects: function() {
4480          window.addEventListener('pagehide', () => {
4481            const isGameActive = document.body.getElementsByClassName('show-game').length;
4482            if (isGameActive) {
4483              localStorage.setItem('redirectedByPopup', 'true');
4484              this.saveStatus('minified');
4485            }
4486          });
4487        },
4488        hasRedirectUrl: function() {
4489          return (new URLSearchParams(location.search)).has('redirect_url');
4490        },
4491        redirectedByGameLogin: function() {
4492          return localStorage.getItem('redirectedByPopup');
4493        },
4494        isLoggingIn: function() {
4495          const loginRelatedPathnames = [
4496            'account/signup',
4497            'account/login',
4498            'account/customer/password/new',
4499            'pages/terms'
4500          ];
4501          return loginRelatedPathnames.some(path => location.pathname.includes(path));
4502        }
4503      },
4504      created: function() {
4505        this.initStatus();
4506        this.initBlocks();
4507        this.setupGameRedirects();
4508      },
4509      mounted: function() {
4510        this.blocks.forEach((block) => {
4511          if (block.type === 'carousel' && block.settings.dict_c
4511arousel) {
4512            renderCarousel(`#popup-carousel-${block.id}`, {
4513              title: block.settings.dict_carousel,
4514              CDN_HOST,
4515              onLinkClick: () => this.linkClicked(),
4516            });
4517          }
4518        });
4519      },
4520    });
4521    popupSection.mount('#popup-wrapper');
4522  });
4523</script>
4523
4524
4525
4526
4527    </div>
4528
4529    <!-- ajaxloading -->
4530    <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed">
4531      <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center">
4532        <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73.4" height="73.4" viewBox="0 0 73.4 73.4">
4533          <circle class="circle" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="36.7" cy="36.7" r="35.2"/>
4534          <polyline class="success_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="23.7,36.8 32.4,45.4 49.7,28 "/>
4535          <path class="success_icon" fill="#898989" d="M32.5,46.9c-0.4,0-0.8-0.2-1.1-0.4l-8.6-8.6c-0.6-0.6-0.6-1.5,0-2.1s1.5-0.6,2.1,0l7.5,7.5L48.6,27c0.6-0.6,1.5-0.6,2.1,0s0.6,1.5,0,2.1L33.5,46.5C33.2,46.7,32.9,46.9,32.5,46.9L32.5,46.9z"/>
4536          <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="26.6" y1="26.6" x2="46.8" y2="46.8"/>
4537          <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="46.8" y1="26.6" x2="26.6" y2="46.8"/>
4538          <path class="fail_icon" fill="#898989" d="M38.7,36.7l9.1-9.1c0.6-0.6,0.6-1.5,0-2.1s-1.5-0.6-2.1,0l-9.1,9.1l-9.1-9.1c-0.6-0.6-1.5-0.6-2.1,0s-0.6,1.5,0,2.1l9.1,9.1l-9.1,9.1c-0.6,0.6-0.6,1.5,0,2.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4l9.1-9.1l9.1,9.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4c0.6-0.6,0.6-1.5,0-2.1L38.7,36.7z"/>
4539        </svg>
4540        <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Added to Cart</div>
4541        <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Shopping Cart Updated</div>
4542        <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">Network error, please try again!</div>
4543      </div>
4544    </div>
4545  
4545<script src="//cdn-general.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
4545</body>
4546
4547  
4547<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-e958d46bfee2e69f.js' type='text/javascript'></script>
4547
4548  
4548<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme_helper-e958d46bfee2e69f.js' type='text/javascript'></script>
4548
4549
4550  <!-- theme assets -->
4551  
4551<script src='//cdn-general.cybassets.com/s/files/23806/theme/90834/assets/js/1675162998_5ba1a53f_main.js?1675162998' type='text/javascript'></script>
4551
4552  
4552<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/theme-e958d46bfee2e69f.js' type='text/javascript'></script>
4552
4553
4554  <!-- for cache -->
4555  
4555<script src='//cdn-general.cybassets.com/frontend/shop/beta_theme/js/cacheable-e958d46bfee2e69f.js' type='text/javascript'></script>
4555
4556</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.