PageSourceSearch

https://prosperwood.com/account/register

html prosperwood.com collected 2026-09-27 12:55:11 UTC 153,803 bytes, 4,097 lines download raw bytes

1<!doctype html>
2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]-->
7
8<head>
9  
10  <meta name="facebook-domain-verification" content="sb2uwf20rj8pq137icjmcdvmvyv4qu" />
11
12  <meta name="facebook-domain-verification" content="wjgaun8tsugytwfwpdtswmgab3nth9" />
13  <meta name="google-site-verification" content="BXRPUC0zAosf15ecp0gkDJJOgvlLkxN9s8W3c0cxVXY" />
14  <!-- Basic page needs ================================================== -->
15  <meta charset="utf-8">
16  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
17
18  
19  <link rel="icon" href="https://cdn.store-assets.com/s/325951/f/7606122.png" />
20  
21
22  <!-- Title and description ================================================== -->
23  <title>
24  登入 &ndash; Prosper Wood 盛元木工
25  </title>
26
27  
28
29  <!-- Social meta ================================================== -->
30  
31
32  <meta property="og:type" content="website">
33  <meta property="og:title" content="登入">
34  <meta property="og:url" content="https://prosperwood.com/account/login">
35  
36  <meta property="og:image" content="https://cdn.store-assets.com/s/325951/f/5065445.png?width=350&format=webp">
37  <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/325951/f/5065445.png?width=350&format=webp">
38  
39
40
41<meta property="og:description" content="頂級實木開關面板">
42<meta property="og:site_name" content="Prosper Wood 盛元木工">
43
44
45
46  <meta name="twitter:card" content="summary">
47
48
49
50
51
52
53
54  <!-- Helpers ================================================== -->
55  <link rel="canonical" href="https://prosperwood.com/account/login">
56  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0">
57  <meta name="theme-color" content="">
58
59  <!-- CSS ================================================== -->
60  <link href="https://store-themes.easystore.co/325951/themes/3809/assets/timber.css?t=1787072517" rel="stylesheet" type="text/css" media="screen" />
61  <link href="https://store-themes.easystore.co/325951/themes/3809/assets/theme.css?t=1787072517" rel="stylesheet" type="text/css" media="screen" />
62
63  
64
65
66
67<link href="https://fonts.googleapis.com/css?family=Karla:400,700&display=swap" rel="stylesheet">
68
69
70  
70<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
70
71  <!-- Header hook for plugins ================================================== -->
72  
73<!-- ScriptTags -->
74<script>window.__st={p: "customers",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
74<script src='/assets/events.js'></script>
74<script>(function(){function asyncLoad(){var urls=['/assets/facebook-pixel.js?v=1.2.1683519443','/assets/traffic.js?v=1','https://apps.easystore.co/instagram-feed/script.js?shop=cyruszheng76.easy.co','https://apps.easystore.co/google-analytics/script.js?shop=cyruszheng76.easy.co','https://apps.easystore.co/google-analytics-4/script.js?shop=cyruszheng76.easy.co','https://apps.easystore.co/google-tag-manager/script.js?shop=cyruszheng76.easy.co'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
74
75<!-- /ScriptTags -->
76
77
78  
79<!--[if lt IE 9]>
80<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript" ></script>
vendor: 2 bytes, line 80
80
81<script src="https://store-themes.easystore.co/325951/themes/3809/assets/respond.min.js?t=1787072517" type="text/javascript" ></script>
81
82<link href="https://store-themes.easystore.co/325951/themes/3809/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
83<link href="//prosperwood.com/search?q=9b3de6befacb00cb93d8ac2dee26d7b3" id="respond-redirect" rel="respond-redirect" />
84<script src="//prosperwood.com/search?q=9b3de6befacb00cb93d8ac2dee26d7b3" type="text/javascript"></script>
84
85<![endif]-->
86
87
88
89  
89<script src="https://store-themes.easystore.co/325951/themes/3809/assets/modernizr.min.js?t=1787072517" type="text/javascript" ></script>
89
90
91  
92  
93    
93<script src="/assets/shop_common.js" type="text/javascript" ></script>
93
94    
94<script src="/assets/customer_area.js" type="text/javascript" ></script>
94
95  
96  
96<script>
97  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
98  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
99  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
100  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
101
102  ga('create', '', 'auto','myTracker');
103  ga('myTracker.send', 'pageview');
104
105  </script>
105
106  
107<!-- Snippet:global/head: Google Search Console -->
108<meta name="google-site-verification" content="SoAokRuHCBPTOtePWwPQyX_GcD-Ka87pebQcMtDriV8" />
109<!-- /Snippet -->
110
111<!-- Snippet:global/head: Instagram Feed -->
112<link rel="stylesheet" href="https://apps.easystore.co/assets/css/instagram-feed/insta-feed-style.css?v3">
113<!-- /Snippet -->
114
115  
116
117
118<meta name="google-site-verification" content="YwyipdVuEbnkEgU8FkAQfNpwM-_tPNVPjFX6L0aEPdI" />
119</head>
120
121<body id="------" class="template-customers  " >
122
123  <ul id="MobileNav" class="mobile-nav">
124  
125  <li class="mobile-nav_icon-x">
126    
127      
128
129
130  	
131  	<span class="MobileNavTrigger icon icon-x"></span>
132  </li>
133  
134  <li class="mobile-nav__link header-bar__search-wrapper">
135    
136    <div class="header-bar__module header-bar__search mobile-nav_search">
137      
138  <form action="/search" method="get" class="header-bar__search-form clearfix" role="search">
139    
140    <button type="submit" class="btn icon-fallback-text header-bar__search-submit">
141      <span class="icon icon-search" aria-hidden="true"></span>
142      <span class="fallback-text">搜尋</span>
143    </button>
144    <input type="search" name="q" value="" aria-label="搜尋" class="header-bar__search-input" placeholder="搜尋" autocomplete="off">
145    <div class="dropdown" id="searchDropdown"></div>
146    <input type="hidden" name="search_history" id="search_history">
147  </form>
148
149
150
151
152<script>
153  var _search_history_listings = ""
154  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
155
156  function clearAll() {
157    localStorage.removeItem('searchHistory');
158  
159    var customer = "";
160    if(customer) {
161      // Your logic to clear all data or call an endpoint
162      fetch('/account/search_histories', {
163          method: 'DELETE',
164          headers: {
165            "Content-Type": "application/json",
166            "X-Requested-With": "XMLHttpRequest"
167          },
168          body: JSON.stringify({
169            _token: "FJgxj1fBF20leLNgGa7ixlAp8rkjvzTgyBUuwqlJ"
170          }),
171      })
172      .then(response => response.json())
173    }
174  }
175  // End - store view history in local storage
176  
177  // search history dropdown  
178  var searchInputs = document.querySelectorAll('input[type=search]');
179  
180  if(searchInputs.length > 0) {
181    
182    searchInputs.forEach((searchInput)=>{
183    
184      searchInput.addEventListener('focus', function() {
185        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
186        searchDropdown.innerHTML = ''; // Clear existing items
187  
188        // retrieve data from local storage
189        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
190  
191        // Convert JSON to string
192        var search_history_json = JSON.stringify(searchHistoryData);
193  
194        // Set the value of the hidden input
195        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
196  
197        // create dropdown items
198        var clearAllItem = document.createElement('div');
199        clearAllItem.className = 'dropdown-item clear-all';
200        clearAllItem.textContent = 'Clear';
201        clearAllItem.addEventListener('click', function() {
202            clearAll();
203            searchDropdown.style.display = 'none';
204            searchInput.classList.remove('is-focus');
205        });
206        searchDropdown.appendChild(clearAllItem);
207  
208        // create dropdown items
209        searchHistoryData.forEach(function(item) {
210          var dropdownItem = document.createElement('div');
211          dropdownItem.className = 'dropdown-item';
212          dropdownItem.textContent = item.term;
213          dropdownItem.addEventListener('click', function() {
214            searchInput.value = item.term;
215            searchDropdown.style.display = 'none';
216          });
217          searchDropdown.appendChild(dropdownItem);
218        });
219  
220        if(searchHistoryData.length > 0){
221          // display the dropdown
222          searchInput.classList.add('is-focus');
223          document.body.classList.add('search-input-focus');
224          searchDropdown.style.display = 'block';
225        }
226      });
227  
228      searchInput.addEventListener("focusout", (event) => {
229        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
230        searchInput.classList.remove('is-focus');
231        searchDropdown.classList.add('transparent');
232        setTimeout(()=>{
233          searchDropdown.style.display = 'none';
234          searchDropdown.classList.remove('transparent');
235          document.body.classList.remove('search-input-focus');
236        }, 400);
237      });
238    })
239  }
240  // End - search history dropdown
241</script>
241
242    </div>
243    
244  </li>
245  
246  
247  
248  <li class="mobile-nav__link" aria-haspopup="true">
249    
250    <a href="/" >
251      首頁
252    </a>
253    
254  </li>
255  
256  
257  <li class="mobile-nav__link" aria-haspopup="true">
258    
259    
260    <a href="/collections/all" class="mobile-nav__parent-link">
261      所有商品
262    </a>
263    <span class="mobile-nav__sublist-trigger">
264      <span class="icon-fallback-text mobile-nav__sublist-expand">
265  <span class="icon icon-plus" aria-hidden="true"></span>
266  <span class="fallback-text">+</span>
267</span>
268<span class="icon-fallback-text mobile-nav__sublist-contract">
269  <span class="icon icon-minus" aria-hidden="true"></span>
270  <span class="fallback-text">-</span>
271</span>
272
273    </span>
274    <ul class="mobile-nav__sublist">
275      
276      
277      <li class="mobile-nav__sublist-link" aria-haspopup="true">
278        
279        <a href="/collections/jimbo" >
280          SO-STYLE / JIMBO NK 
281        </a>
282        
283      </li>
284      
285      
286      <li class="mobile-nav__sublist-link" aria-haspopup="true">
287        
288        
289        <a href="/collections/炭黑-實木面板" class="mobile-nav__parent-link">
290          炭黑 實木面板
291        </a>
292        <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
293  <span class="icon icon-plus" aria-hidden="true"></span>
294  <span class="fallback-text">+</span>
295</span>
296<span class="icon-fallback-text mobile-nav__sublist-contract">
297  <span class="icon icon-minus" aria-hidden="true"></span>
298  <span class="fallback-text">-</span>
299</span>
300</span>
301        <ul class="mobile-nav__sublist"> 
302          
303          
304          <li class="mobile-nav__sublist-link" aria-haspopup="true">
305            
306            <a href="/collections/flat-直角造型款" >
307              Flat 直角造型款 x GLATIMA 霧黑(國際牌)
308            </a>
309            
310          </li>
311          
312          
313          <li class="mobile-nav__sublist-link" aria-haspopup="true">
314            
315            <a href="/collections/bevel-斜面" >
316              Bevel 斜面造型款 x GLATIMA 霧黑(國際牌)
317            </a>
318            
319          </li>
320          
321          
322          <li class="mobile-nav__sublist-link" aria-haspopup="true">
323            
324            <a href="/collections/arch-圓弧款" >
325              Arch 圓弧造型款 x GLATIMA 霧黑(國際牌)
326            </a>
327            
328          </li>
329          
330        </ul>
331        
332      </li>
333      
334      
335      <li class="mobile-nav__sublist-link" aria-haspopup="true">
336        
337        
338        <a href="/collections/arch" class="mobile-nav__parent-link">
339          台灣 Panasonic|Arch圓弧造型
340        </a>
341        <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
342  <span class="icon icon-plus" aria-hidden="true"></span>
343  <span class="fallback-text">+</span>
344</span>
345<span class="icon-fallback-text mobile-nav__sublist-contract">
346  <span class="icon icon-minus" aria-hidden="true"></span>
347  <span class="fallback-text">-</span>
348</span>
349</span>
350        <ul class="mobile-nav__sublist"> 
351          
352          
353          <li class="mobile-nav__sublist-link" aria-haspopup="true">
354            
355            
356            <a href="/collections/arch-risna-h-panasonic" class="mobile-nav__parent-link">
357              Arch圓弧造型 實木面板 x RISNA 灰色 (國際牌)
358            </a>
359            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
360  <span class="icon icon-plus" aria-hidden="true"></span>
361  <span class="fallback-text">+</span>
362</span>
363<span class="icon-fallback-text mobile-nav__sublist-contract">
364  <span class="icon icon-minus" aria-hidden="true"></span>
365  <span class="fallback-text">-</span>
366</span>
367</span>
368            <ul class="mobile-nav__sublist">
369              
370              <li class="mobile-nav__sublist-link">
371                <a href="/collections/arch-risna-h-panasonic-switch">開關</a>
372              </li>
373              
374              <li class="mobile-nav__sublist-link">
375                <a href="/collections/arch-risna-h-panasonic-socket">插座/弱電/盲蓋</a>
376              </li>
377              
378            </ul>
379            
380          </li>
381          
382          
383          <li class="mobile-nav__sublist-link" aria-haspopup="true">
384            
385            
386            <a href="/collections/arch-risna-w-panasonic" class="mobile-nav__parent-link">
387              Arch圓弧造型 實木面板 x RISNA 白色 (國際牌)
388            </a>
389            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
390  <span class="icon icon-plus" aria-hidden="true"></span>
391  <span class="fallback-text">+</span>
392</span>
393<span class="icon-fallback-text mobile-nav__sublist-contract">
394  <span class="icon icon-minus" aria-hidden="true"></span>
395  <span class="fallback-text">-</span>
396</span>
397</span>
398            <ul class="mobile-nav__sublist">
399              
400              <li class="mobile-nav__sublist-link">
401                <a href="/collections/arch-risna-w-panasonic-switch">開關</a>
402              </li>
403              
404              <li class="mobile-nav__sublist-link">
405                <a href="/collections/arch-risna-w-panasonic-socket">插座/弱電/盲蓋</a>
406              </li>
407              
408            </ul>
409            
410          </li>
411          
412          
413          <li class="mobile-nav__sublist-link" aria-haspopup="true">
414            
415            
416            <a href="/collections/arch-rglatima-h-panasonic" class="mobile-nav__parent-link">
417              Arch圓弧造型 實木面板 x GLATIMA 灰色 (國際牌)
418            </a>
419            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
420  <span class="icon icon-plus" aria-hidden="true"></span>
421  <span class="fallback-text">+</span>
422</span>
423<span class="icon-fallback-text mobile-nav__sublist-contract">
424  <span class="icon icon-minus" aria-hidden="true"></span>
425  <span class="fallback-text">-</span>
426</span>
427</span>
428            <ul class="mobile-nav__sublist">
429              
430              <li class="mobile-nav__sublist-link">
431                <a href="/collections/arch-glatima-h-panasonic-switch">開關</a>
432              </li>
433              
434              <li class="mobile-nav__sublist-link">
435                <a href="/collections/arch-glatima-h-panasonic-socket">插座/弱電/盲蓋</a>
436              </li>
437              
438            </ul>
439            
440          </li>
441          
442          
443          <li class="mobile-nav__sublist-link" aria-haspopup="true">
444            
445            
446            <a href="/collections/arch-rglatima-b-panasonic" class="mobile-nav__parent-link">
447              Arch圓弧造型 實木面板 x GLATIMA 霧黑色 (國際牌)
448            </a>
449            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
450  <span class="icon icon-plus" aria-hidden="true"></span>
451  <span class="fallback-text">+</span>
452</span>
453<span class="icon-fallback-text mobile-nav__sublist-contract">
454  <span class="icon icon-minus" aria-hidden="true"></span>
455  <span class="fallback-text">-</span>
456</span>
457</span>
458            <ul class="mobile-nav__sublist">
459              
460              <li class="mobile-nav__sublist-link">
461                <a href="/collections/arch-glatima-b-panasonic-switch">開關</a>
462              </li>
463              
464              <li class="mobile-nav__sublist-link">
465                <a href="/collections/arch-glatima-b-panasonic-socket">插座/弱電/盲蓋</a>
466              </li>
467              
468            </ul>
469            
470          </li>
471          
472          
473          <li class="mobile-nav__sublist-link" aria-haspopup="true">
474            
475            
476            <a href="/collections/arch-rglatima-cw-panasonic" class="mobile-nav__parent-link">
477              Arch圓弧造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
478            </a>
479            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
480  <span class="icon icon-plus" aria-hidden="true"></span>
481  <span class="fallback-text">+</span>
482</span>
483<span class="icon-fallback-text mobile-nav__sublist-contract">
484  <span class="icon icon-minus" aria-hidden="true"></span>
485  <span class="fallback-text">-</span>
486</span>
487</span>
488            <ul class="mobile-nav__sublist">
489              
490              <li class="mobile-nav__sublist-link">
491                <a href="/collections/arch-glatima-cw-panasonic-switch">開關</a>
492              </li>
493              
494              <li class="mobile-nav__sublist-link">
495                <a href="/collections/arch-glatima-cw-panasonic-socket">插座/弱電/盲蓋</a>
496              </li>
497              
498            </ul>
499            
500          </li>
501          
502        </ul>
503        
504      </li>
505      
506      
507      <li class="mobile-nav__sublist-link" aria-haspopup="true">
508        
509        
510        <a href="/collections/bevel" class="mobile-nav__parent-link">
511          台灣 Panasonic|Bevel斜面造型 
512        </a>
513        <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
514  <span class="icon icon-plus" aria-hidden="true"></span>
515  <span class="fallback-text">+</span>
516</span>
517<span class="icon-fallback-text mobile-nav__sublist-contract">
518  <span class="icon icon-minus" aria-hidden="true"></span>
519  <span class="fallback-text">-</span>
520</span>
521</span>
522        <ul class="mobile-nav__sublist"> 
523          
524          
525          <li class="mobile-nav__sublist-link" aria-haspopup="true">
526            
527            
528            <a href="/collections/bevel-risna-h-panasonic" class="mobile-nav__parent-link">
529              Bevel斜面造型 實木面板 x RISNA 灰色 (國際牌)
530            </a>
531            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
532  <span class="icon icon-plus" aria-hidden="true"></span>
533  <span class="fallback-text">+</span>
534</span>
535<span class="icon-fallback-text mobile-nav__sublist-contract">
536  <span class="icon icon-minus" aria-hidden="true"></span>
537  <span class="fallback-text">-</span>
538</span>
539</span>
540            <ul class="mobile-nav__sublist">
541              
542              <li class="mobile-nav__sublist-link">
543                <a href="/collections/bevel-risna-h-panasonic-switch">開關</a>
544              </li>
545              
546              <li class="mobile-nav__sublist-link">
547                <a href="/collections/bevel-risna-h-panasonic-socket">插座/弱電/盲蓋</a>
548              </li>
549              
550            </ul>
551            
552          </li>
553          
554          
555          <li class="mobile-nav__sublist-link" aria-haspopup="true">
556            
557            
558            <a href="/collections/bevel-risna-w-panasonic" class="mobile-nav__parent-link">
559              Bevel斜面造型 實木面板 x RISNA 白色 (國際牌)
560            </a>
561            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
562  <span class="icon icon-plus" aria-hidden="true"></span>
563  <span class="fallback-text">+</span>
564</span>
565<span class="icon-fallback-text mobile-nav__sublist-contract">
566  <span class="icon icon-minus" aria-hidden="true"></span>
567  <span class="fallback-text">-</span>
568</span>
569</span>
570            <ul class="mobile-nav__sublist">
571              
572              <li class="mobile-nav__sublist-link">
573                <a href="/collections/bevel-risna-w-panasonic-switch">開關</a>
574              </li>
575              
576              <li class="mobile-nav__sublist-link">
577                <a href="/collections/bevel-risna-w-panasonic-socket">插座/弱電/盲蓋</a>
578              </li>
579              
580            </ul>
581            
582          </li>
583          
584          
585          <li class="mobile-nav__sublist-link" aria-haspopup="true">
586            
587            
588            <a href="/collections/bevel-glatima-h-panasonic" class="mobile-nav__parent-link">
589              Bevel斜面造型 實木面板 x GLATIMA 灰色 (國際牌)
590            </a>
591            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
592  <span class="icon icon-plus" aria-hidden="true"></span>
593  <span class="fallback-text">+</span>
594</span>
595<span class="icon-fallback-text mobile-nav__sublist-contract">
596  <span class="icon icon-minus" aria-hidden="true"></span>
597  <span class="fallback-text">-</span>
598</span>
599</span>
600            <ul class="mobile-nav__sublist">
601              
602              <li class="mobile-nav__sublist-link">
603                <a href="/collections/bevel-glatima-h-panasonic-switch">開關</a>
604              </li>
605              
606              <li class="mobile-nav__sublist-link">
607                <a href="/collections/bevel-glatima-h-panasonic-socket">插座/弱電/盲蓋</a>
608              </li>
609              
610            </ul>
611            
612          </li>
613          
614          
615          <li class="mobile-nav__sublist-link" aria-haspopup="true">
616            
617            
618            <a href="/collections/bevel-glatima-b-panasonic" class="mobile-nav__parent-link">
619              Bevel斜面造型 實木面板 x GLATIMA 霧黑色 (國際牌)
620            </a>
621            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
622  <span class="icon icon-plus" aria-hidden="true"></span>
623  <span class="fallback-text">+</span>
624</span>
625<span class="icon-fallback-text mobile-nav__sublist-contract">
626  <span class="icon icon-minus" aria-hidden="true"></span>
627  <span class="fallback-text">-</span>
628</span>
629</span>
630            <ul class="mobile-nav__sublist">
631              
632              <li class="mobile-nav__sublist-link">
633                <a href="/collections/bevel-glatima-b-panasonic-switch">開關</a>
634              </li>
635              
636              <li class="mobile-nav__sublist-link">
637                <a href="/collections/bevel-glatima-b-panasonic-socket">插座/弱電/盲蓋</a>
638              </li>
639              
640            </ul>
641            
642          </li>
643          
644          
645          <li class="mobile-nav__sublist-link" aria-haspopup="true">
646            
647            
648            <a href="/collections/bevel-glatima-cw-panasonic" class="mobile-nav__parent-link">
649              Bevel斜面造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
650            </a>
651            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
652  <span class="icon icon-plus" aria-hidden="true"></span>
653  <span class="fallback-text">+</span>
654</span>
655<span class="icon-fallback-text mobile-nav__sublist-contract">
656  <span class="icon icon-minus" aria-hidden="true"></span>
657  <span class="fallback-text">-</span>
658</span>
659</span>
660            <ul class="mobile-nav__sublist">
661              
662              <li class="mobile-nav__sublist-link">
663                <a href="/collections/bevel-glatima-cw-panasonic-switch">開關</a>
664              </li>
665              
666              <li class="mobile-nav__sublist-link">
667                <a href="/collections/bevel-glatima-cw-panasonic-socket">插座/弱電/盲蓋</a>
668              </li>
669              
670            </ul>
671            
672          </li>
673          
674          
675          <li class="mobile-nav__sublist-link" aria-haspopup="true">
676            
677            
678            <a href="/collections/bevel-deco-lite-panasonic" class="mobile-nav__parent-link">
679              Bevel斜面造型 實木面板 x DECO LITE 星光 (國際牌)
680            </a>
681            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
682  <span class="icon icon-plus" aria-hidden="true"></span>
683  <span class="fallback-text">+</span>
684</span>
685<span class="icon-fallback-text mobile-nav__sublist-contract">
686  <span class="icon icon-minus" aria-hidden="true"></span>
687  <span class="fallback-text">-</span>
688</span>
689</span>
690            <ul class="mobile-nav__sublist">
691              
692              <li class="mobile-nav__sublist-link">
693                <a href="/collections/bevel-deco-lite-panasonic-switch">開關</a>
694              </li>
695              
696              <li class="mobile-nav__sublist-link">
697                <a href="/collections/bevel-deco-lite-panasonic-socket">插座/弱電/盲蓋</a>
698              </li>
699              
700            </ul>
701            
702          </li>
703          
704        </ul>
705        
706      </li>
707      
708      
709      <li class="mobile-nav__sublist-link" aria-haspopup="true">
710        
711        
712        <a href="/collections/flat" class="mobile-nav__parent-link">
713          台灣 Panasonic|Flat直角造型
714        </a>
715        <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
716  <span class="icon icon-plus" aria-hidden="true"></span>
717  <span class="fallback-text">+</span>
718</span>
719<span class="icon-fallback-text mobile-nav__sublist-contract">
720  <span class="icon icon-minus" aria-hidden="true"></span>
721  <span class="fallback-text">-</span>
722</span>
723</span>
724        <ul class="mobile-nav__sublist"> 
725          
726          
727          <li class="mobile-nav__sublist-link" aria-haspopup="true">
728            
729            
730            <a href="/collections/flat-risna-h-panasonic" class="mobile-nav__parent-link">
731              Flat直角造型 實木面板 x RISNA 灰色 (國際牌)
732            </a>
733            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
734  <span class="icon icon-plus" aria-hidden="true"></span>
735  <span class="fallback-text">+</span>
736</span>
737<span class="icon-fallback-text mobile-nav__sublist-contract">
738  <span class="icon icon-minus" aria-hidden="true"></span>
739  <span class="fallback-text">-</span>
740</span>
741</span>
742            <ul class="mobile-nav__sublist">
743              
744              <li class="mobile-nav__sublist-link">
745                <a href="/collections/flat-risna-h-panasonic-switch">開關</a>
746              </li>
747              
748              <li class="mobile-nav__sublist-link">
749                <a href="/collections/flat-risna-h-panasonic-socket">插座/弱電/盲蓋</a>
750              </li>
751              
752            </ul>
753            
754          </li>
755          
756          
757          <li class="mobile-nav__sublist-link" aria-haspopup="true">
758            
759            
760            <a href="/collections/flat-risna-w-panasonic" class="mobile-nav__parent-link">
761              Flat直角造型 實木面板 x RISNA 白色 (國際牌)
762            </a>
763            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
764  <span class="icon icon-plus" aria-hidden="true"></span>
765  <span class="fallback-text">+</span>
766</span>
767<span class="icon-fallback-text mobile-nav__sublist-contract">
768  <span class="icon icon-minus" aria-hidden="true"></span>
769  <span class="fallback-text">-</span>
770</span>
771</span>
772            <ul class="mobile-nav__sublist">
773              
774              <li class="mobile-nav__sublist-link">
775                <a href="/collections/flat-risna-w-panasonic-switch">開關</a>
776              </li>
777              
778              <li class="mobile-nav__sublist-link">
779                <a href="/collections/flat-risna-w-panasonic-socket">插座/弱電/盲蓋</a>
780              </li>
781              
782            </ul>
783            
784          </li>
785          
786          
787          <li class="mobile-nav__sublist-link" aria-haspopup="true">
788            
789            
790            <a href="/collections/flat-glatima-h-panasonic" class="mobile-nav__parent-link">
791              Flat直角造型 實木面板 x GLATIMA 灰色 (國際牌)
792            </a>
793            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
794  <span class="icon icon-plus" aria-hidden="true"></span>
795  <span class="fallback-text">+</span>
796</span>
797<span class="icon-fallback-text mobile-nav__sublist-contract">
798  <span class="icon icon-minus" aria-hidden="true"></span>
799  <span class="fallback-text">-</span>
800</span>
801</span>
802            <ul class="mobile-nav__sublist">
803              
804              <li class="mobile-nav__sublist-link">
805                <a href="/collections/flat-glatima-h-panasonic-switch">開關</a>
806              </li>
807              
808              <li class="mobile-nav__sublist-link">
809                <a href="/collections/flat-glatima-h-panasonic-socket">插座/弱電/盲蓋</a>
810              </li>
811              
812            </ul>
813            
814          </li>
815          
816          
817          <li class="mobile-nav__sublist-link" aria-haspopup="true">
818            
819            
820            <a href="/collections/flat-glatima-b-panasonic" class="mobile-nav__parent-link">
821              Flat直角造型 實木面板 x GLATIMA 霧黑 (國際牌)
822            </a>
823            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
824  <span class="icon icon-plus" aria-hidden="true"></span>
825  <span class="fallback-text">+</span>
826</span>
827<span class="icon-fallback-text mobile-nav__sublist-contract">
828  <span class="icon icon-minus" aria-hidden="true"></span>
829  <span class="fallback-text">-</span>
830</span>
831</span>
832            <ul class="mobile-nav__sublist">
833              
834              <li class="mobile-nav__sublist-link">
835                <a href="/collections/flat-glatima-b-panasonic-switch">開關</a>
836              </li>
837              
838              <li class="mobile-nav__sublist-link">
839                <a href="/collections/flat-glatima-b-panasonic-socket">插座/弱電/盲蓋</a>
840              </li>
841              
842            </ul>
843            
844          </li>
845          
846          
847          <li class="mobile-nav__sublist-link" aria-haspopup="true">
848            
849            
850            <a href="/collections/flat-glatima-cw-panasonic" class="mobile-nav__parent-link">
851              Flat直角造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
852            </a>
853            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
854  <span class="icon icon-plus" aria-hidden="true"></span>
855  <span class="fallback-text">+</span>
856</span>
857<span class="icon-fallback-text mobile-nav__sublist-contract">
858  <span class="icon icon-minus" aria-hidden="true"></span>
859  <span class="fallback-text">-</span>
860</span>
861</span>
862            <ul class="mobile-nav__sublist">
863              
864              <li class="mobile-nav__sublist-link">
865                <a href="/collections/flat-glatima-cw-panasonic-switch">開關</a>
866              </li>
867              
868              <li class="mobile-nav__sublist-link">
869                <a href="/collections/flat-glatima-cw-panasonic-socket">插座/弱電/盲蓋</a>
870              </li>
871              
872            </ul>
873            
874          </li>
875          
876          
877          <li class="mobile-nav__sublist-link" aria-haspopup="true">
878            
879            
880            <a href="/collections/flat-deco-lite-panasonic" class="mobile-nav__parent-link">
881              Flat直角造型 實木面板 x DECO LITE 星光 (國際牌)
882            </a>
883            <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
884  <span class="icon icon-plus" aria-hidden="true"></span>
885  <span class="fallback-text">+</span>
886</span>
887<span class="icon-fallback-text mobile-nav__sublist-contract">
888  <span class="icon icon-minus" aria-hidden="true"></span>
889  <span class="fallback-text">-</span>
890</span>
891</span>
892            <ul class="mobile-nav__sublist">
893              
894              <li class="mobile-nav__sublist-link">
895                <a href="/collections/flat-deco-lite-panasonic-switch">開關</a>
896              </li>
897              
898              <li class="mobile-nav__sublist-link">
899                <a href="/collections/flat-deco-lite-panasonic-socket">插座/弱電/盲蓋</a>
900              </li>
901              
902            </ul>
903            
904          </li>
905          
906        </ul>
907        
908      </li>
909      
910    </ul>
911    
912  </li>
913  
914  
915  <li class="mobile-nav__link" aria-haspopup="true">
916    
917    <a href="/pages/產品細節" >
918      產品細節
919    </a>
920    
921  </li>
922  
923  
924  <li class="mobile-nav__link" aria-haspopup="true">
925    
926    <a href="/pages/terms-of-service" >
927      如何購買
928    </a>
929    
930  </li>
931  
932  
933  <li class="mobile-nav__link" aria-haspopup="true">
934    
935    
936    <a href="/pages/經銷門市-1" class="mobile-nav__parent-link">
937      經銷 | 展售門市
938    </a>
939    <span class="mobile-nav__sublist-trigger">
940      <span class="icon-fallback-text mobile-nav__sublist-expand">
941  <span class="icon icon-plus" aria-hidden="true"></span>
942  <span class="fallback-text">+</span>
943</span>
944<span class="icon-fallback-text mobile-nav__sublist-contract">
945  <span class="icon icon-minus" aria-hidden="true"></span>
946  <span class="fallback-text">-</span>
947</span>
948
949    </span>
950    <ul class="mobile-nav__sublist">
951      
952      
953      <li class="mobile-nav__sublist-link" aria-haspopup="true">
954        
955        <a href="https://www.prosperwood.com/pages/台北經銷門市-茂忠企業"  target="_blank" >
956          台北 | 茂忠企業
957        </a>
958        
959      </li>
960      
961      
962      <li class="mobile-nav__sublist-link" aria-haspopup="true">
963        
964        <a href="https://www.prosperwood.com/pages/台北經銷門市-流石五金"  target="_blank" >
965          台北 | 流石五金
966        </a>
967        
968      </li>
969      
970      
971      <li class="mobile-nav__sublist-link" aria-haspopup="true">
972        
973        <a href="/pages/桃園|鹿麓五金" >
974          桃園|鹿麓五金
975        </a>
976        
977      </li>
978      
979      
980      <li class="mobile-nav__sublist-link" aria-haspopup="true">
981        
982        <a href="https://www.prosperwood.com/pages/台中經銷門市-馬克水電"  target="_blank" >
983          台中 | 馬克水電
984        </a>
985        
986      </li>
987      
988      
989      <li class="mobile-nav__sublist-link" aria-haspopup="true">
990        
991        <a href="https://www.prosperwood.com/pages/台南經銷門市-泰德五金"  target="_blank" >
992          台南 | 泰德五金
993        </a>
994        
995      </li>
996      
997      
998      <li class="mobile-nav__sublist-link" aria-haspopup="true">
999        
1000        <a href="https://www.prosperwood.com/pages/高雄經銷門市-昭廷企業"  target="_blank" >
1001          高雄 | 昭廷企業
1002        </a>
1003        
1004      </li>
1005      
1006    </ul>
1007    
1008  </li>
1009  
1010  
1011  <li class="mobile-nav__link" aria-haspopup="true">
1012    
1013    <a href="https://www.prosperwood.com/pages/台北展示-樂居空間選材"  target="_blank" >
1014      展示|樂居空間選材
1015    </a>
1016    
1017  </li>
1018  
1019
1020  
1021
1022  
1023  
1024  
1025  <li class="mobile-nav__link">
1026    <a href="/account/login">登入</a>
1027  </li>
1028  
1029  <li class="mobile-nav__link">
1030    <a href="/account/register">註冊</a>
1031  </li>
1032  
1033  
1034  
1035  
1036</ul>
1037<div id="MobileNavOutside" class="mobile-nav-outside"></div>
1038
1039
1040
1041<div id="PageContainer" class="page-container">
1042  
1043<!-- Snippet:global/body_start: Console Extension -->
1044<div id='es_console' style='display: none;'>325951</div>
1045<!-- /Snippet -->
1046
1047  
1048    <style>
1049  .search-modal__form{
1050    position: relative;
1051  }
1052  
1053  .dropdown-wrapper {
1054    position: relative;
1055  }
1056  
1057  .dropdown-wrapper:hover .dropdown {
1058    display: block;
1059  }
1060  
1061  .header-icon-nav .dropdown {
1062    left: -80px;
1063  }
1064  
1065  .dropdown {
1066    display: none;
1067    position: absolute;
1068    top: 100%;
1069    left: 0px;
1070    width: 100%;
1071    padding: 8px;
1072    background-color: #fff;
1073    z-index: 1000;
1074    border-radius: 5px;
1075    border: 1px solid rgba(var(--color-foreground), 1);
1076    border-top: none;
1077    overflow-x: hidden;
1078    overflow-y: auto;
1079    max-height: 350px;
1080    min-width: 150px;
1081    box-shadow: 0 0 5px rgba(0,0,0,0.1);
1082  }
1083    
1084  .dropdown a{
1085    text-decoration: none;
1086    color: #000 !important;
1087  }
1088  
1089  .dropdown-item {
1090    padding: 0.4rem 2rem;
1091    cursor: pointer;
1092    line-height: 1.4;
1093    overflow: hidden;
1094    text-overflow: ellipsis;
1095    white-space: nowrap;
1096  }
1097  
1098  .dropdown-item:hover{
1099    background-color: #f3f3f3;
1100  }
1101  
1102  .search__input.is-focus{
1103    border-radius: 15px;
1104    border-bottom-left-radius: 0;
1105    border-bottom-right-radius: 0;
1106    border: 1px solid rgba(var(--color-foreground), 1);
1107    border-bottom: none;
1108    box-shadow: none;
1109  }
1110  
1111  .clear-all {
1112    text-align: right;
1113    padding: 0 2rem 0.2rem;
1114    line-height: 1;
1115    font-size: 70%;
1116    margin-bottom: -2px;
1117  }
1118  
1119  .clear-all:hover{
1120    background-color: #fff;
1121  }
1122  
1123  .referral-notification {
1124    position: absolute;
1125    top: 100%;
1126    right: -12px;
1127    background: white;
1128    border: 1px solid #e0e0e0;
1129    border-radius: 8px;
1130    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1131    width: 280px;
1132    z-index: 1000;
1133    padding: 16px;
1134    margin-top: 8px;
1135    font-size: 14px;
1136    line-height: 1.4;
1137  }
1138  
1139  .referral-notification::before {
1140    content: '';
1141    position: absolute;
1142    top: -8px;
1143    right: 20px;
1144    width: 0;
1145    height: 0;
1146    border-left: 8px solid transparent;
1147    border-right: 8px solid transparent;
1148    border-bottom: 8px solid white;
1149  }
1150  
1151  .referral-notification::after {
1152    content: '';
1153    position: absolute;
1154    top: -9px;
1155    right: 20px;
1156    width: 0;
1157    height: 0;
1158    border-left: 8px solid transparent;
1159    border-right: 8px solid transparent;
1160    border-bottom: 8px solid #e0e0e0;
1161  }
1162  
1163  .referral-notification h4 {
1164    margin: 0 0 8px 0;
1165    color: #2196F3;
1166    font-size: 16px;
1167    font-weight: 600;
1168  }
1169  
1170  .referral-notification p {
1171    margin: 0 0 12px 0;
1172    color: #666;
1173  }
1174  
1175  .referral-notification .referral-code {
1176    background: #f5f5f5;
1177    padding: 8px;
1178    border-radius: 4px;
1179    font-family: monospace;
1180    font-size: 13px;
1181    text-align: center;
1182    margin: 8px 0;
1183    border: 1px solid #ddd;
1184  }
1185  
1186  .referral-notification .close-btn {
1187    position: absolute;
1188    top: 8px;
1189    right: 8px;
1190    background: none;
1191    border: none;
1192    font-size: 18px;
1193    color: #999;
1194    cursor: pointer;
1195    padding: 0;
1196    width: 20px;
1197    height: 20px;
1198    line-height: 1;
1199  }
1200  
1201  .referral-notification .close-btn:hover {
1202    color: #333;
1203  }
1204  
1205  .referral-notification .action-btn {
1206    background: #2196F3;
1207    color: white;
1208    border: none;
1209    padding: 8px 16px;
1210    border-radius: 4px;
1211    cursor: pointer;
1212    font-size: 12px;
1213    margin-right: 8px;
1214    margin-top: 8px;
1215  }
1216  
1217  .referral-notification .action-btn:hover {
1218    background: #1976D2;
1219  }
1220  
1221  .referral-notification .dismiss-btn {
1222    background: transparent;
1223    color: #666;
1224    border: 1px solid #ddd;
1225    padding: 8px 16px;
1226    border-radius: 4px;
1227    cursor: pointer;
1228    font-size: 12px;
1229    margin-top: 8px;
1230  }
1231  
1232  .referral-notification .dismiss-btn:hover {
1233    background: #f5f5f5;
1234  }
1235  .referral-modal__dialog {
1236    transform: translate(-50%, 0);
1237    transition: transform var(--duration-default) ease, visibility 0s;
1238    z-index: 10000;
1239    position: fixed;
1240    top: 20vh;
1241    left: 50%;
1242    width: 100%;
1243    max-width: 350px;
1244    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1245    border-radius: 12px;
1246    background-color: #fff;
1247    color: #000;
1248    padding: 20px;
1249    text-align: center;
1250  }
1251  .modal-overlay.referral-modal-overlay {
1252    position: fixed;
1253    top: 0;
1254    left: 0;
1255    width: 100%;
1256    height: 100%;
1257    background-color: rgba(0, 0, 0, 0.7);
1258    z-index: 2001;
1259    display: block;
1260    opacity: 1;
1261    transition: opacity var(--duration-default) ease, visibility 0s;
1262  }
1263</style>
1264
1265<header id="es_header_bar" class="header-bar logo_top-center sticky-topbar">
1266  <div class="header-bg-wrapper">
1267    <div class="header-wrapper wrapper">
1268      
1269
1270      <div class="logo-header" role="banner">
1271
1272              
1273                    <div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization">
1274              
1275                    
1276                        
1277                      	
1278                          <a href="/" class="logo-wrapper" itemprop="url">
1279                            <img src="https://cdn.store-assets.com/s/325951/f/5065445.png?width=350&format=webp" alt="Prosper Wood 盛元木工" itemprop="logo">
1280                          </a>
1281                        
1282
1283                    
1284              
1285                </div>
1286              
1287
1288      </div>
1289
1290      <div class="header-nav-bar medium-down--hide">
1291          
1292<ul class="site-nav" id="AccessibleNav">
1293  
1294    
1295    
1296      <li >
1297        <a href="/"  class="site-nav__link">首頁</a>
1298      </li>
1299    
1300  
1301    
1302    
1303      
1304      <li class="site-nav--has-dropdown" aria-haspopup="true">
1305        <a href="/collections/all"  class="site-nav__link">
1306          所有商品
1307          <span class="arrow-icon">
1308            <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>arrow down</title><path d="M50,78.18A7.35,7.35,0,0,1,44.82,76L3.15,34.36A7.35,7.35,0,1,1,13.55,24L50,60.44,86.45,24a7.35,7.35,0,1,1,10.4,10.4L55.21,76A7.32,7.32,0,0,1,50,78.18Z"/></svg>
1309          </span>
1310        </a>
1311        <ul class="site-nav__dropdown">
1312          
1313            
1314            
1315              <li >
1316                <a href="/collections/jimbo"  class="site-nav__link">SO-STYLE / JIMBO NK </a>
1317              </li>
1318            
1319          
1320            
1321            
1322              
1323              <li class="site-nav_has-child">
1324                <a href="/collections/炭黑-實木面板"  class="site-nav__link">
1325                  炭黑 實木面板
1326                </a>
1327                <ul class="site-nav__dropdown_level-3">
1328                  
1329                    
1330                    
1331                      <li >
1332                        <a href="/collections/flat-直角造型款"  class="site-nav__link">Flat 直角造型款 x GLATIMA 霧黑(國際牌)</a>
1333                      </li>
1334                    
1335                  
1336                    
1337                    
1338                      <li >
1339                        <a href="/collections/bevel-斜面"  class="site-nav__link">Bevel 斜面造型款 x GLATIMA 霧黑(國際牌)</a>
1340                      </li>
1341                    
1342                  
1343                    
1344                    
1345                      <li >
1346                        <a href="/collections/arch-圓弧款"  class="site-nav__link">Arch 圓弧造型款 x GLATIMA 霧黑(國際牌)</a>
1347                      </li>
1348                    
1349                  
1350                </ul>
1351              </li>
1352            
1353          
1354            
1355            
1356              
1357              <li class="site-nav_has-child">
1358                <a href="/collections/arch"  class="site-nav__link">
1359                  台灣 Panasonic|Arch圓弧造型
1360                </a>
1361                <ul class="site-nav__dropdown_level-3">
1362                  
1363                    
1364                    
1365                      
1366                      <li class="site-nav_has-child">
1367                        <a href="/collections/arch-risna-h-panasonic"  class="site-nav__link">
1368                          Arch圓弧造型 實木面板 x RISNA 灰色 (國際牌)
1369                        </a>
1370                        <ul class="site-nav__dropdown_level-4">
1371                          
1372                            <li>
1373                              <a href="/collections/arch-risna-h-panasonic-switch"  class="site-nav__link">開關</a>
1374                            </li>
1375                          
1376                            <li>
1377                              <a href="/collections/arch-risna-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1378                            </li>
1379                          
1380                        </ul>
1381                      </li>
1382                    
1383                  
1384                    
1385                    
1386                      
1387                      <li class="site-nav_has-child">
1388                        <a href="/collections/arch-risna-w-panasonic"  class="site-nav__link">
1389                          Arch圓弧造型 實木面板 x RISNA 白色 (國際牌)
1390                        </a>
1391                        <ul class="site-nav__dropdown_level-4">
1392                          
1393                            <li>
1394                              <a href="/collections/arch-risna-w-panasonic-switch"  class="site-nav__link">開關</a>
1395                            </li>
1396                          
1397                            <li>
1398                              <a href="/collections/arch-risna-w-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1399                            </li>
1400                          
1401                        </ul>
1402                      </li>
1403                    
1404                  
1405                    
1406                    
1407                      
1408                      <li class="site-nav_has-child">
1409                        <a href="/collections/arch-rglatima-h-panasonic"  class="site-nav__link">
1410                          Arch圓弧造型 實木面板 x GLATIMA 灰色 (國際牌)
1411                        </a>
1412                        <ul class="site-nav__dropdown_level-4">
1413                          
1414                            <li>
1415                              <a href="/collections/arch-glatima-h-panasonic-switch"  class="site-nav__link">開關</a>
1416                            </li>
1417                          
1418                            <li>
1419                              <a href="/collections/arch-glatima-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1420                            </li>
1421                          
1422                        </ul>
1423                      </li>
1424                    
1425                  
1426                    
1427                    
1428                      
1429                      <li class="site-nav_has-child">
1430                        <a href="/collections/arch-rglatima-b-panasonic"  class="site-nav__link">
1431                          Arch圓弧造型 實木面板 x GLATIMA 霧黑色 (國際牌)
1432                        </a>
1433                        <ul class="site-nav__dropdown_level-4">
1434                          
1435                            <li>
1436                              <a href="/collections/arch-glatima-b-panasonic-switch"  class="site-nav__link">開關</a>
1437                            </li>
1438                          
1439                            <li>
1440                              <a href="/collections/arch-glatima-b-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1441                            </li>
1442                          
1443                        </ul>
1444                      </li>
1445                    
1446                  
1447                    
1448                    
1449                      
1450                      <li class="site-nav_has-child">
1451                        <a href="/collections/arch-rglatima-cw-panasonic"  class="site-nav__link">
1452                          Arch圓弧造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
1453                        </a>
1454                        <ul class="site-nav__dropdown_level-4">
1455                          
1456                            <li>
1457                              <a href="/collections/arch-glatima-cw-panasonic-switch"  class="site-nav__link">開關</a>
1458                            </li>
1459                          
1460                            <li>
1461                              <a href="/collections/arch-glatima-cw-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1462                            </li>
1463                          
1464                        </ul>
1465                      </li>
1466                    
1467                  
1468                </ul>
1469              </li>
1470            
1471          
1472            
1473            
1474              
1475              <li class="site-nav_has-child">
1476                <a href="/collections/bevel"  class="site-nav__link">
1477                  台灣 Panasonic|Bevel斜面造型 
1478                </a>
1479                <ul class="site-nav__dropdown_level-3">
1480                  
1481                    
1482                    
1483                      
1484                      <li class="site-nav_has-child">
1485                        <a href="/collections/bevel-risna-h-panasonic"  class="site-nav__link">
1486                          Bevel斜面造型 實木面板 x RISNA 灰色 (國際牌)
1487                        </a>
1488                        <ul class="site-nav__dropdown_level-4">
1489                          
1490                            <li>
1491                              <a href="/collections/bevel-risna-h-panasonic-switch"  class="site-nav__link">開關</a>
1492                            </li>
1493                          
1494                            <li>
1495                              <a href="/collections/bevel-risna-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1496                            </li>
1497                          
1498                        </ul>
1499                      </li>
1500                    
1501                  
1502                    
1503                    
1504                      
1505                      <li class="site-nav_has-child">
1506                        <a href="/collections/bevel-risna-w-panasonic"  class="site-nav__link">
1507                          Bevel斜面造型 實木面板 x RISNA 白色 (國際牌)
1508                        </a>
1509                        <ul class="site-nav__dropdown_level-4">
1510                          
1511                            <li>
1512                              <a href="/collections/bevel-risna-w-panasonic-switch"  class="site-nav__link">開關</a>
1513                            </li>
1514                          
1515                            <li>
1516                              <a href="/collections/bevel-risna-w-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1517                            </li>
1518                          
1519                        </ul>
1520                      </li>
1521                    
1522                  
1523                    
1524                    
1525                      
1526                      <li class="site-nav_has-child">
1527                        <a href="/collections/bevel-glatima-h-panasonic"  class="site-nav__link">
1528                          Bevel斜面造型 實木面板 x GLATIMA 灰色 (國際牌)
1529                        </a>
1530                        <ul class="site-nav__dropdown_level-4">
1531                          
1532                            <li>
1533                              <a href="/collections/bevel-glatima-h-panasonic-switch"  class="site-nav__link">開關</a>
1534                            </li>
1535                          
1536                            <li>
1537                              <a href="/collections/bevel-glatima-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1538                            </li>
1539                          
1540                        </ul>
1541                      </li>
1542                    
1543                  
1544                    
1545                    
1546                      
1547                      <li class="site-nav_has-child">
1548                        <a href="/collections/bevel-glatima-b-panasonic"  class="site-nav__link">
1549                          Bevel斜面造型 實木面板 x GLATIMA 霧黑色 (國際牌)
1550                        </a>
1551                        <ul class="site-nav__dropdown_level-4">
1552                          
1553                            <li>
1554                              <a href="/collections/bevel-glatima-b-panasonic-switch"  class="site-nav__link">開關</a>
1555                            </li>
1556                          
1557                            <li>
1558                              <a href="/collections/bevel-glatima-b-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1559                            </li>
1560                          
1561                        </ul>
1562                      </li>
1563                    
1564                  
1565                    
1566                    
1567                      
1568                      <li class="site-nav_has-child">
1569                        <a href="/collections/bevel-glatima-cw-panasonic"  class="site-nav__link">
1570                          Bevel斜面造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
1571                        </a>
1572                        <ul class="site-nav__dropdown_level-4">
1573                          
1574                            <li>
1575                              <a href="/collections/bevel-glatima-cw-panasonic-switch"  class="site-nav__link">開關</a>
1576                            </li>
1577                          
1578                            <li>
1579                              <a href="/collections/bevel-glatima-cw-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1580                            </li>
1581                          
1582                        </ul>
1583                      </li>
1584                    
1585                  
1586                    
1587                    
1588                      
1589                      <li class="site-nav_has-child">
1590                        <a href="/collections/bevel-deco-lite-panasonic"  class="site-nav__link">
1591                          Bevel斜面造型 實木面板 x DECO LITE 星光 (國際牌)
1592                        </a>
1593                        <ul class="site-nav__dropdown_level-4">
1594                          
1595                            <li>
1596                              <a href="/collections/bevel-deco-lite-panasonic-switch"  class="site-nav__link">開關</a>
1597                            </li>
1598                          
1599                            <li>
1600                              <a href="/collections/bevel-deco-lite-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1601                            </li>
1602                          
1603                        </ul>
1604                      </li>
1605                    
1606                  
1607                </ul>
1608              </li>
1609            
1610          
1611            
1612            
1613              
1614              <li class="site-nav_has-child">
1615                <a href="/collections/flat"  class="site-nav__link">
1616                  台灣 Panasonic|Flat直角造型
1617                </a>
1618                <ul class="site-nav__dropdown_level-3">
1619                  
1620                    
1621                    
1622                      
1623                      <li class="site-nav_has-child">
1624                        <a href="/collections/flat-risna-h-panasonic"  class="site-nav__link">
1625                          Flat直角造型 實木面板 x RISNA 灰色 (國際牌)
1626         
1626               </a>
1627                        <ul class="site-nav__dropdown_level-4">
1628                          
1629                            <li>
1630                              <a href="/collections/flat-risna-h-panasonic-switch"  class="site-nav__link">開關</a>
1631                            </li>
1632                          
1633                            <li>
1634                              <a href="/collections/flat-risna-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1635                            </li>
1636                          
1637                        </ul>
1638                      </li>
1639                    
1640                  
1641                    
1642                    
1643                      
1644                      <li class="site-nav_has-child">
1645                        <a href="/collections/flat-risna-w-panasonic"  class="site-nav__link">
1646                          Flat直角造型 實木面板 x RISNA 白色 (國際牌)
1647                        </a>
1648                        <ul class="site-nav__dropdown_level-4">
1649                          
1650                            <li>
1651                              <a href="/collections/flat-risna-w-panasonic-switch"  class="site-nav__link">開關</a>
1652                            </li>
1653                          
1654                            <li>
1655                              <a href="/collections/flat-risna-w-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1656                            </li>
1657                          
1658                        </ul>
1659                      </li>
1660                    
1661                  
1662                    
1663                    
1664                      
1665                      <li class="site-nav_has-child">
1666                        <a href="/collections/flat-glatima-h-panasonic"  class="site-nav__link">
1667                          Flat直角造型 實木面板 x GLATIMA 灰色 (國際牌)
1668                        </a>
1669                        <ul class="site-nav__dropdown_level-4">
1670                          
1671                            <li>
1672                              <a href="/collections/flat-glatima-h-panasonic-switch"  class="site-nav__link">開關</a>
1673                            </li>
1674                          
1675                            <li>
1676                              <a href="/collections/flat-glatima-h-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1677                            </li>
1678                          
1679                        </ul>
1680                      </li>
1681                    
1682                  
1683                    
1684                    
1685                      
1686                      <li class="site-nav_has-child">
1687                        <a href="/collections/flat-glatima-b-panasonic"  class="site-nav__link">
1688                          Flat直角造型 實木面板 x GLATIMA 霧黑 (國際牌)
1689                        </a>
1690                        <ul class="site-nav__dropdown_level-4">
1691                          
1692                            <li>
1693                              <a href="/collections/flat-glatima-b-panasonic-switch"  class="site-nav__link">開關</a>
1694                            </li>
1695                          
1696                            <li>
1697                              <a href="/collections/flat-glatima-b-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1698                            </li>
1699                          
1700                        </ul>
1701                      </li>
1702                    
1703                  
1704                    
1705                    
1706                      
1707                      <li class="site-nav_has-child">
1708                        <a href="/collections/flat-glatima-cw-panasonic"  class="site-nav__link">
1709                          Flat直角造型 實木面板 x GLATIMA 陶瓷白 (國際牌)
1710                        </a>
1711                        <ul class="site-nav__dropdown_level-4">
1712                          
1713                            <li>
1714                              <a href="/collections/flat-glatima-cw-panasonic-switch"  class="site-nav__link">開關</a>
1715                            </li>
1716                          
1717                            <li>
1718                              <a href="/collections/flat-glatima-cw-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1719                            </li>
1720                          
1721                        </ul>
1722                      </li>
1723                    
1724                  
1725                    
1726                    
1727                      
1728                      <li class="site-nav_has-child">
1729                        <a href="/collections/flat-deco-lite-panasonic"  class="site-nav__link">
1730                          Flat直角造型 實木面板 x DECO LITE 星光 (國際牌)
1731                        </a>
1732                        <ul class="site-nav__dropdown_level-4">
1733                          
1734                            <li>
1735                              <a href="/collections/flat-deco-lite-panasonic-switch"  class="site-nav__link">開關</a>
1736                            </li>
1737                          
1738                            <li>
1739                              <a href="/collections/flat-deco-lite-panasonic-socket"  class="site-nav__link">插座/弱電/盲蓋</a>
1740                            </li>
1741                          
1742                        </ul>
1743                      </li>
1744                    
1745                  
1746                </ul>
1747              </li>
1748            
1749          
1750        </ul>
1751      </li>
1752    
1753  
1754    
1755    
1756      <li >
1757        <a href="/pages/產品細節"  class="site-nav__link">產品細節</a>
1758      </li>
1759    
1760  
1761    
1762    
1763      <li >
1764        <a href="/pages/terms-of-service"  class="site-nav__link">如何購買</a>
1765      </li>
1766    
1767  
1768    
1769    
1770      
1771      <li class="site-nav--has-dropdown" aria-haspopup="true">
1772        <a href="/pages/經銷門市-1"  class="site-nav__link">
1773          經銷 | 展售門市
1774          <span class="arrow-icon">
1775            <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>arrow down</title><path d="M50,78.18A7.35,7.35,0,0,1,44.82,76L3.15,34.36A7.35,7.35,0,1,1,13.55,24L50,60.44,86.45,24a7.35,7.35,0,1,1,10.4,10.4L55.21,76A7.32,7.32,0,0,1,50,78.18Z"/></svg>
1776          </span>
1777        </a>
1778        <ul class="site-nav__dropdown">
1779          
1780            
1781            
1782              <li >
1783                <a href="https://www.prosperwood.com/pages/台北經銷門市-茂忠企業"  target="_blank"  class="site-nav__link">台北 | 茂忠企業</a>
1784              </li>
1785            
1786          
1787            
1788            
1789              <li >
1790                <a href="https://www.prosperwood.com/pages/台北經銷門市-流石五金"  target="_blank"  class="site-nav__link">台北 | 流石五金</a>
1791              </li>
1792            
1793          
1794            
1795            
1796              <li >
1797                <a href="/pages/桃園|鹿麓五金"  class="site-nav__link">桃園|鹿麓五金</a>
1798              </li>
1799            
1800          
1801            
1802            
1803              <li >
1804                <a href="https://www.prosperwood.com/pages/台中經銷門市-馬克水電"  target="_blank"  class="site-nav__link">台中 | 馬克水電</a>
1805              </li>
1806            
1807          
1808            
1809            
1810              <li >
1811                <a href="https://www.prosperwood.com/pages/台南經銷門市-泰德五金"  target="_blank"  class="site-nav__link">台南 | 泰德五金</a>
1812              </li>
1813            
1814          
1815            
1816            
1817              <li >
1818                <a href="https://www.prosperwood.com/pages/高雄經銷門市-昭廷企業"  target="_blank"  class="site-nav__link">高雄 | 昭廷企業</a>
1819              </li>
1820            
1821          
1822        </ul>
1823      </li>
1824    
1825  
1826    
1827    
1828      <li >
1829        <a href="https://www.prosperwood.com/pages/台北展示-樂居空間選材"  target="_blank"  class="site-nav__link">展示|樂居空間選材</a>
1830      </li>
1831    
1832  
1833  
1834  
1835      
1836        
1837          
1838        
1839          
1840        
1841      
1842  
1843  
1844  
1845</ul>
1846
1847      </div>
1848
1849      <div class="desktop-header-nav medium-down--hide">
1850
1851
1852        <div class="header-subnav">
1853          
1854
1855
1856
1857
1858          <div class="header-icon-nav">
1859
1860                
1861
1862                
1863
1864
1865                
1866                  
1867                    <div class="header-bar__module">
1868                      
1869  <a class="popup-with-form" href="#search-form">
1870    
1871
1872
1873
1874	<svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg>    
1875
1876  
1877
1878  </a>
1879
1880
1881
1882<!-- form itself -->
1883<div id="search-form" class="white-popup-block mfp-hide popup-search">
1884  <div class="popup-search-content">
1885    <form action="/search" method="get" class="input-group search-bar" role="search">
1886      
1887      <span class="input-group-btn">
1888        <button type="submit" class="btn">
1889        	
1890
1891
1892
1893	<svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg>    
1894
1895  
1896
1897        </button>
1898      </span>
1899      <input type="search" name="q" value="" placeholder="搜尋" class="input-group-field" aria-label="搜尋" placeholder="搜尋" autocomplete="off">
1900      <div class="dropdown" id="searchDropdown"></div>
1901      <input type="hidden" name="search_history" id="search_history">
1902    </form>
1903  </div>
1904</div>
1905
1906<script src="https://store-themes.easystore.co/325951/themes/3809/assets/magnific-popup.min.js?t=1787072517" type="text/javascript" ></script>
vendor: 1 bytes, line 1906
1906
1907<script>
1908$(document).ready(function() {
1909	$('.popup-with-form').magnificPopup({
1910		type: 'inline',
1911		preloader: false,
1912		focus: '#name',
1913      	mainClass: 'popup-search-bg-wrapper',
1914
1915		// When elemened is focused, some mobile browsers in some cases zoom in
1916		// It looks not nice, so we disable it:
1917		callbacks: {
1918			beforeOpen: function() {
1919				if($(window).width() < 700) {
1920					this.st.focus = false;
1921				} else {
1922					this.st.focus = '#name';
1923				}
1924			}
1925		}
1926	});
1927});
1928</script>
1928
1929
1930
1931<script>
1932  var _search_history_listings = ""
1933  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
1934
1935  function clearAll() {
1936    localStorage.removeItem('searchHistory');
1937  
1938    var customer = "";
1939    if(customer) {
1940      // Your logic to clear all data or call an endpoint
1941      fetch('/account/search_histories', {
1942          method: 'DELETE',
1943          headers: {
1944            "Content-Type": "application/json",
1945            "X-Requested-With": "XMLHttpRequest"
1946          },
1947          body: JSON.stringify({
1948            _token: "FJgxj1fBF20leLNgGa7ixlAp8rkjvzTgyBUuwqlJ"
1949          }),
1950      })
1951      .then(response => response.json())
1952    }
1953  }
1954  // End - store view history in local storage
1955  
1956  // search history dropdown  
1957  var searchInputs = document.querySelectorAll('input[type=search]');
1958  
1959  if(searchInputs.length > 0) {
1960    
1961    searchInputs.forEach((searchInput)=>{
1962    
1963      searchInput.addEventListener('focus', function() {
1964        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1965        searchDropdown.innerHTML = ''; // Clear existing items
1966  
1967        // retrieve data from local storage
1968        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
1969  
1970        // Convert JSON to string
1971        var search_history_json = JSON.stringify(searchHistoryData);
1972  
1973        // Set the value of the hidden input
1974        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
1975  
1976        // create dropdown items
1977        var clearAllItem = document.createElement('div');
1978        clearAllItem.className = 'dropdown-item clear-all';
1979        clearAllItem.textContent = 'Clear';
1980        clearAllItem.addEventListener('click', function() {
1981            clearAll();
1982            searchDropdown.style.display = 'none';
1983            searchInput.classList.remove('is-focus');
1984        });
1985        searchDropdown.appendChild(clearAllItem);
1986  
1987        // create dropdown items
1988        searchHistoryData.forEach(function(item) {
1989          var dropdownItem = document.createElement('div');
1990          dropdownItem.className = 'dropdown-item';
1991          dropdownItem.textContent = item.term;
1992          dropdownItem.addEventListener('click', function() {
1993            searchInput.value = item.term;
1994            searchDropdown.style.display = 'none';
1995          });
1996          searchDropdown.appendChild(dropdownItem);
1997        });
1998  
1999        if(searchHistoryData.length > 0){
2000          // display the dropdown
2001          searchInput.classList.add('is-focus');
2002          document.body.classList.add('search-input-focus');
2003          searchDropdown.style.display = 'block';
2004        }
2005      });
2006  
2007      searchInput.addEventListener("focusout", (event) => {
2008        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
2009        searchInput.classList.remove('is-focus');
2010        searchDropdown.classList.add('transparent');
2011        setTimeout(()=>{
2012          searchDropdown.style.display = 'none';
2013          searchDropdown.classList.remove('transparent');
2014          document.body.classList.remove('search-input-focus');
2015        }, 400);
2016      });
2017    })
2018  }
2019  // End - search history dropdown
2020</script>
2020
2021                    </div>
2022                  
2023                
2024
2025
2026
2027
2028                
2029                  <div class="header-bar__module dropdown-wrapper" style="position: relative;">
2030                    
2031                      <a href="/account/login">
2032
2033
2034
2035    <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-profile</title><path d="M50,51.8A24.4,24.4,0,1,0,25.6,27.4,24.43,24.43,0,0,0,50,51.8ZM50,10A17.4,17.4,0,1,1,32.6,27.4,17.43,17.43,0,0,1,50,10Z"/><path d="M62.66,57.66H37.34a30.54,30.54,0,0,0-30.5,30.5V93.5a3.5,3.5,0,0,0,3.5,3.5H89.66a3.5,3.5,0,0,0,3.5-3.5V88.16A30.54,30.54,0,0,0,62.66,57.66ZM86.16,90H13.84V88.16a23.53,23.53,0,0,1,23.5-23.5H62.66a23.53,23.53,0,0,1,23.5,23.5Z"/></svg>
2036
2037  
2038</a>
2039
2040                      <!-- Referral Notification Popup for Desktop -->
2041                      <div id="referralNotification" class="referral-notification" style="display: none;">
2042                        <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
2043                        <div style="text-align: center; margin-bottom: 16px;">
2044                          <div style="width: 100px; height: 100px; margin: 0 auto;">
2045                            <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
2046                          </div>
2047                        </div>
2048                        <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
2049                          您的好友送您   回饋金!立即註冊領取。
2050                        </p>
2051                        <div style="text-align: center;">
2052                          <button class="btn" onclick="goToSignupPage()" style="width: 100%; color: #fff;">
2053                            註冊
2054                          </button>
2055                        </div>
2056                      </div>
2057                    
2058                  </div>
2059                
2060
2061                <div class="header-bar__module cart-page-link-wrapper">
2062                  <span class="header-bar__sep" aria-hidden="true"></span>
2063                  <a class="CartDrawerTrigger cart-page-link">
2064                    
2065
2066
2067
2068	<svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg>	
2069
2070  
2071
2072                    <span class="cart-count header-bar__cart-count hidden-count">0</span>
2073                  </a>
2074                </div>
2075
2076
2077                
2078                  
2079                
2080
2081
2082          </div>
2083        </div>
2084
2085
2086
2087      </div>
2088      
2089	  <div class="mobile-header-icons large--hide">
2090        
2091        <div class="large--hide">
2092          
2093              
2094                
2095                  
2096                        <a href="/account/login">
2097
2098
2099
2100    <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-profile</title><path d="M50,51.8A24.4,24.4,0,1,0,25.6,27.4,24.43,24.43,0,0,0,50,51.8ZM50,10A17.4,17.4,0,1,1,32.6,27.4,17.43,17.43,0,0,1,50,10Z"/><path d="M62.66,57.66H37.34a30.54,30.54,0,0,0-30.5,30.5V93.5a3.5,3.5,0,0,0,3.5,3.5H89.66a3.5,3.5,0,0,0,3.5-3.5V88.16A30.54,30.54,0,0,0,62.66,57.66ZM86.16,90H13.84V88.16a23.53,23.53,0,0,1,23.5-23.5H62.66a23.53,23.53,0,0,1,23.5,23.5Z"/></svg>
2101
2102  
2103</a>
2104                  
2105                
2106                  
2107                
2108              
2109          
2110        </div>
2111
2112
2113        <!--  Mobile cart  -->
2114        <div class="large--hide">
2115          <a class="CartDrawerTrigger cart-page-link mobile-cart-page-link">
2116            
2117
2118
2119
2120	<svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg>	
2121
2122  
2123
2124            <span class="cart-count hidden-count">0</span>
2125          </a>
2126        </div>
2127
2128        <!--  Mobile hamburger  -->
2129        <div class="large--hide">
2130          <a class="mobile-nav-trigger MobileNavTrigger">
2131            
2132
2133
2134
2135    <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-nav-menu</title><path d="M6.7,26.34H93a3.5,3.5,0,0,0,0-7H6.7a3.5,3.5,0,0,0,0,7Z"/><path d="M93.3,46.5H7a3.5,3.5,0,0,0,0,7H93.3a3.5,3.5,0,1,0,0-7Z"/><path d="M93.3,73.66H7a3.5,3.5,0,1,0,0,7H93.3a3.5,3.5,0,0,0,0-7Z"/></svg>
2136
2137  
2138
2139          </a>
2140        </div>
2141      
2142        
2143          
2144          <!-- Referral Notification Modal for Mobile -->
2145          <details-modal class="referral-modal" id="referralMobileModal">
2146            <details>
2147              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
2148              </summary>
2149              <div class="modal-overlay referral-modal-overlay"></div>
2150              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
2151                <div class="referral-modal__content">
2152                  <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;">
2153                    &times;
2154                  </button>
2155
2156                  <div style="margin-bottom: 24px;">
2157                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
2158                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
2159                    </div>
2160                  </div>
2161
2162                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
2163                    您的好友送您   回饋金!立即註冊領取。
2164                  </p>
2165
2166                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%; color: #fff;">
2167                    註冊
2168                  </button>
2169                </div>
2170              </div>
2171            </details>
2172          </details-modal>
2173          
2174        
2175        
2176      </div>
2177		
2178    </div>
2179  </div>
2180</header>
2181
2182
2183
2184
2185
2186
2187    
2188    <main class="wrapper main-content" role="main">
2189      <div class="grid">
2190          <div class="grid__item">
vendor: 100 bytes, lines 2190-2194
2190
2191            
2192  
2193            
2194<script src="https://www.recaptcha.net/recaptcha/enterprise.js?render=
21946LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF
vendor: 12 bytes, line 2194
2194"></script>
2195<link rel="preload" href="https://store-themes.easystore.co/325951/themes/3809/assets/customer.css?t=1787072517" as="style" onload="this.onload=null;this.rel='stylesheet'">
2196<style>
2197  main.main-content .field > label{
2198    display: none;
2199  }
2200  .h3{
2201    font-size: 18px;
2202  }
2203  .button--full-width{
2204    width: 100%;
2205  }
2206  .tab-wrapper{
2207    display: inline-flex;
2208    justify-content: center;
2209    align-items: center;
2210    margin: 10px auto 20px;
2211    background-color: #eaeaea;
2212    border-radius: 200px;
2213    padding: 5px;
2214    gap: 10px;
2215  }
2216  .tab-wrapper .tab-label {
2217    display: inline-block;
2218    min-width: 130px;
2219    padding: 8px 15px;
2220    border-radius: 100px;
2221    cursor: pointer;
2222    font-size: 17px;
2223    line-height: 1.1;
2224    user-select: none;
2225    margin: 0;
2226    color: #000;
2227  }
2228  #register-tos a {
2229    display: inline;
2230  }
2231  @media screen and (max-width: 400px){
2232    .tab-wrapper .tab-label {
2233      min-width: 110px;
2234    }
2235  }
2236  .tab-wrapper input[type='radio']:checked + .tab-label {
2237    background-color: #fff;
2238    box-shadow: 2px 2px 25px -10px #333;
2239  }
2240
2241  @media screen and (min-width: 500px){
2242    .large--five-twelfths{
2243      min-width: 420px;
2244    }
2245  }
2246</style>
2247
2248
2249
2250
2251<div class="customer login section-width-control small-width large--five-twelfths text-center wrapper">
2252  <div class="card">
2253    <h1 id="login" tabindex="-1" class="mb-0">
2254      歡迎
2255    </h1>
2256    <p class="h3 mt-0">
2257      
2258        註冊或登入以繼續
2259      
2260    </p>
2261    <div>
2262      
2263
2264      
2265
2266      
2267
2268      
2269
2270      
2271
2272      
2273
2274      
2275
2276      
2277
2278      
2279      <div class="tab-wrapper">
2280        <div>
2281          <input type="radio" name="type" id="tab-register" class="hide hidden" checked>
2282          <label for="tab-register" class="tab-label">
2283            註冊帳號
2284          </label>
2285        </div>
2286        <div>
2287          <input type="radio" name="type" id="tab-login" class="hide hidden">
2288          <label for="tab-login" class="tab-label">
2289            登入
2290          </label>
2291        </div>
2292      </div>
2293      
2294
2295      <form id="form-login" action="/account/auth" method="post" class="mt-2">
2296        <input type="hidden" name="_token" value="FJgxj1fBF20leLNgGa7ixlAp8rkjvzTgyBUuwqlJ">
2297        <input type="hidden" name="location_id" value="">
2298        <input type="hidden" name="staff_id" value="">
2299        <input type="hidden" id="recaptchaResponse" name="g-recaptcha-response">
2300
2301        
2302        <div id="error-content"></div>
2303
2304        <div class="field">
2305          <input
2306            type="text"
2307            name="customer[email_or_phone]"
2308            id="CustomerDetail"
2309            autocorrect="off"
2310            autocapitalize="off"
2311            placeholder="電子郵件地址"
2312            required
2313          >
2314          <label for="CustomerDetail">
2315            電子郵件地址
2316          </label>
2317        </div>
2318
2319        <button
2320          type="submit"
2321          form="form-login"
2322          class="btn button--full-width g-recaptcha">
2323          繼續
2324        </button>
2325
2326        <div class="button-snippet">
2327                  
2328        <style>
2329            #line-login-btn.btn{
2330                background-color: #fff;
2331                color: #000;
2332                padding: 0;
2333                overflow: hidden;
2334                display: flex;
2335                justify-content: center;
2336                align-items: center;
2337                width: 100%;
2338                margin: 15px auto;
2339                font-size: 14px;
2340                border: 1px solid currentColor;
2341                box-shadow: none;
2342            }
2343            #line-login-btn.btn:hover{
2344                background-color: #fff;
2345            }
2346            #line-login-btn.btn svg{
2347                width: 45px;
2348                vertical-align: middle;
2349                padding: 5px;
2350            }
2351            #line-login-btn.btn .line-login-text{
2352                padding: 13px 75px 13px 30px;
2353                display: inline-block;
2354                width: calc(100% - 52px);
2355            }
2356            @media screen and (max-width: 500px) {
2357              #line-login-btn.btn .line-login-text{
2358                padding: 13px 25px 13px 8px;
2359                font-size: 13px;
2360              }
2361            }
2362        </style>
2363        <button type="button" onclick="location.href='/account/oauth/line'" id="line-login-btn" class="btn" style="color: #000; font-weight: normal;  margin-bottom: 10px;">
2364            <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30">
2365                <path d="M27.91,12a8.73,8.73,0,0,0-.53-2,9.84,9.84,0,0,0-2.2-3.31A12.91,12.91,0,0,0,20.85,4a14.67,14.67,0,0,0-4-1A17.13,17.13,0,0,0,15,2.83c-.27,0-.55,0-.82,0l-.82.06a15.07,15.07,0,0,0-1.62.24,14.77,14.77,0,0,0-3,1A12.64,12.64,0,0,0,4.81,6.78a9.82,9.82,0,0,0-2.29,3.55A8.38,8.38,0,0,0,2,13a9.45,9.45,0,0,0,.1,1.5A8.52,8.52,0,0,0,2.88,17a10.52,10.52,0,0,0,3.23,3.84A13.68,13.68,0,0,0,10.5,23a14.8,14.8,0,0,0,2.36.5,2.31,2.31,0,0,1,.69.16,1,1,0,0,1,.58.72,2,2,0,0,1,0,.74c-.05.34-.12.67-.17,1a2.55,2.55,0,0,0,0,.55c0,.38.22.53.59.45a4.21,4.21,0,0,0,.63-.2A11.83,11.83,0,0,0,16.92,26a47.13,47.13,0,0,0,5.68-4c.67-.55,1.31-1.14,2-1.71a10.26,10.26,0,0,0,1.64-1.78,9.31,9.31,0,0,0,1.2-2.16,8.3,8.3,0,0,0,.59-3A9.5,9.5,0,0,0,27.91,12ZM10.26,16.52l-.18,0H7.49a.67.67,0,0,1-.67-.67v-5a.67.67,0,0,1,.66-.66.68.68,0,0,1,.71.7v4.26H10a.66.66,0,0,1,.6.31A.69.69,0,0,1,10.26,16.52Zm2.43-.58a.63.63,0,0,1-.63.6.65.65,0,0,1-.69-.46.89.89,0,0,1,0-.28V11a1.
23651,1.1,0,0,1,0-.26.68.68,0,0,1,.61-.48.64.64,0,0,1,.61.29.92.92,0,0,1,.11.29.72.72,0,0,1,0,.21v4.77A1,1,0,0,1,12.69,15.94Zm6.14,0a.64.64,0,0,1-.5.63.7.7,0,0,1-.76-.27C16.79,15.17,16,14.1,15.22,13c0,0-.06-.11-.16-.14v3a.6.6,0,0,1-.1.39.64.64,0,0,1-.52.3.79.79,0,0,1-.45-.11.66.66,0,0,1-.29-.52v-5a.67.67,0,0,1,.1-.39.7.7,0,0,1,1.14,0c.46.64.93,1.26,1.4,1.89l1,1.33.09.11c.06-.05,0-.1,0-.15V10.89a.65.65,0,0,1,.5-.65.67.67,0,0,1,.87.64v3.67C18.83,15,18.82,15.45,18.83,15.89Zm4.39.62a.93.93,0,0,1-.29,0H20.47a.76.76,0,0,1-.41-.1.62.62,0,0,1-.31-.51,1.09,1.09,0,0,1,0-.18c0-1.59,0-3.19,0-4.78a.88.88,0,0,1,0-.28.66.66,0,0,1,.63-.49H23a.63.63,0,0,1,.6.43.68.68,0,0,1-.16.76.58.58,0,0,1-.39.17H21.14a5.87,5.87,0,0,0,0,1.11h.17c.56,0,1.13,0,1.69,0a.64.64,0,0,1,.65.52.66.66,0,0,1-.66.84H21.14a6.56,6.56,0,0,0,0,1.09l.19,0h1.61a1,1,0,0,1,.24,0,.67.67,0,0,1,.5.63A.63.63,0,0,1,23.22,16.51Z" fill="#02C755"/>
2366            </svg>
2367            <span class="line-login-text">LINE 登入</span>
2368        </button>
2369        <!-- <p style="font-size: 12px; color: grey;">我們使用您的LINE電子郵件創建客戶帳戶</p> -->
2370                
2371        </div>
2372
2373        
2374
2375        <div id="register-tos">
2376          一旦點擊註冊,即表示你同意Prosper Wood 盛元木工的 <a target="_blank" href="/legal/terms-of-service">服務條款</a>, <a target="_blank" href="/legal/privacy-policy">隱私政策</a> 和 <a target="_blank" href="/legal/refund-policy">退款政策</a>。
2377        </div>
2378
2379      </form>
2380    </div>
2381  </div>
2382
2383</div>
2384
2385
2386
2387<script>
2388  const register_tab = document.querySelector('#tab-register');
2389  const login_tab = document.querySelector('#tab-login');
2390  const register_tos = document.querySelector('#register-tos');
2391  const isRegistrationEnabled = "1";
2392
2393  if (register_tab) {
2394    register_tab.addEventListener('click', function() {
2395      if (register_tos) {
2396        register_tos.style.display = 'block';
2397      }
2398    });
2399  }
2400  if (login_tab) {
2401    login_tab.addEventListener('click', function() {
2402      if (register_tos) {
2403        register_tos.style.display = 'none';
2404      }
2405    });
2406  }
2407
2408  const methodSwitchBtn = document.getElementById('phone-login-btn');
2409  if (methodSwitchBtn) {
2410    methodSwitchBtn.onclick = function () {
2411      var type = (register_tab && register_tab.checked) ? 'register' : 'login';
2412      window.location.href = '/account/login?method=phone&type=' + type;
2413    };
2414  }
2415
2416  let lastPathSegment = window.location.pathname.split('/').filter(segment => segment.length > 0).pop();
2417  
2418  // Redirect to login if trying to access register when self registration is disabled
2419  if (!isRegistrationEnabled) {
2420    if (lastPathSegment === 'register') {
2421      window.location.href = '/account/login';
2422    } else if (lastPathSegment === 'login' || lastPathSegment === 'auth') {
2423      if (register_tos) {
2424        register_tos.style.display = 'none';
2425      }
2426    } 
2427  } else {
2428    // Only proceed with tab logic if not redirecting
2429    if(lastPathSegment === 'login') {
2430      if (login_tab) {
2431        login_tab.checked = true;
2432      }
2433      if (register_tos) {
2434        register_tos.style.display = 'none';
2435      }
2436    } else {
2437      if (register_tos) {
2438        register_tos.style.display = 'block';
2439      }
2440    }
2441  }
2442
2443  const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
2444  const phonePattern = /^(?:\+?\d{1,3}[\s-]?)?(?:\d{1,14}[\s-]?){1,5}$/;
2445
2446  let form = document.querySelector('#form-login'),
2447      input = document.querySelector('#CustomerDetail'),
2448      error_content = document.querySelector('#error-content');
2449
2450
2451  // One attempt at a time: the reCAPTCHA wait below is async, so without
2452  // this a double-click starts two continuations and posts the form twice.
2453  var submitting = false;
2454
2455  form.addEventListener('submit', async function (event) {
2456    // preventDefault FIRST: a re-entrant submit must still be cancelled, or the
2457    // browser performs a native post with no captcha token.
2458    event.preventDefault();
2459    if (submitting) return;
2460
2461    let input_value = input.value
2462    error_content.innerHTML = '';
2463    if (!input_value.match(emailPattern) && !input_value.match(phonePattern)) {
2464      error_content.innerHTML = `<div class="errors note">Invalid Email or Phone</div>`;
2465      return false;
2466    }
2467
2468    submitting = true;
2469    document.querySelector('#form-login .btn').classList.add('btn--loading','loading');
2470
2471    // reCAPTCHA is unreachable from some regions (google.com is blocked in
2472    // mainland China). Fail open the same way checkout and forgot-password do:
2473    // submit without a token rather than leave the button spinning forever.
2474    try {
2475      if (window.grecaptcha && typeof window.grecaptcha.enterprise === 'object') {
2476        // The loader defines a stub {ready} synchronously and fetches the real
2477        // implementation asynchronously, so execute() may not exist yet.
2478        // ready() queues until it does; the timeout stops a bundle that never
2479        // arrives from hanging the button.
2480        await new Promise(function (resolve) {
2481          setTimeout(resolve, 3000);
2482          try { grecaptcha.enterprise.ready(resolve); } catch (e) { resolve(); }
2483        });
2484
2485        const token = await grecaptcha.enterprise.execute('6LdMNdIqAAAAALegJp7y4weVcCIlnwmIN8TWseEF', { action: 'LOGIN' });
2486        document.getElementById('recaptchaResponse').value = token;
2487      }
2488    } catch (e) { /* fail open */ }
2489
2490    document.getElementById('form-login').submit();
2491  });
2492
2493
2494</script>
2494
2495
2496  
2497            
2498          </div>
2499      </div>
2500      
2501      
2502  
2503    </main>
2504  
2505    <footer id="es_footer_section" class="site-footer small--text-center" role="contentinfo">
2506      
2507      
2508      
2509      <div class="wrapper">
2510  
2511        <div class="grid-uniform">
2512  
2513          
2514          
2515          
2516          
2517            
2518          
2519          
2520          
2521            
2522          
2523          
2524          
2525  
2526          
2527              
2528            
2529  
2530          
2531      
2532          
2533          
2534          <div class="grid__item large--one-half ">
2535            <a href="/" class="logo-wrapper" itemprop="url" >
2536              
2537                <img class="footer-logo" src="https://cdn.store-assets.com/s/325951/f/8174666.png?width=350&format=webp" alt="Prosper Wood 盛元木工" itemprop="logo">
2538              
2539            </a>
2540            <p class="site-footer__links">Copyright © 2026 Prosper Wood</p>
2541          </div>
2542          
2543          
2544            <div class="grid__item large--one-quarter medium--one-half">
2545              
2546        <!-- <h4>快速連結</h4> -->
2547              
2548              <ul class="site-footer__links">
2549                
2550                  <li><a href="https://line.me/R/ti/p/%40401uhtsg"  target="_blank" >Contact us </a></li>
2551                
2552                
2553              </ul>
2554            </div>
2555          
2556  
2557          
2558            <div class="grid__item large--one-quarter medium--one-half">
2559              <!-- <h4>關注我們</h4> -->
2560                
2561                <ul class="inline-list social-icons">
2562  
2563  
2564    <li>
2565      <a class="icon-fallback-text" href="https://www.facebook.com/ProsperWood-%E7%9B%9B%E5%85%83%E6%9C%A8%E5%B7%A5-107645920982397" title="Prosper Wood 盛元木工在Facebook上" target="_blank">
2566        
2567
2568
2569
2570    <svg xmlns="http://www.w3.org/2000/svg" class="facebook-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2571        <title>icon-facebook</title>
2572        <path d="M837.66,223.9a33.73,33.73,0,0,0-3.11-15c-6.78-13.85-17.87-21.09-33.37-21.09q-288.46,0-576.91,0c-.62,0-1.24,0-1.85,0a34.51,34.51,0,0,0-25.88,12.11c-6.31,7.13-8.85,15.57-8.85,25.07q.08,287.7,0,575.4c0,1,0,1.9,0,2.86A32.93,32.93,0,0,0,190,814.71c4.45,11.79,16.3,23.11,35,23.1q153.61-.1,307.24,0c2.36,0,2.36,0,2.36-2.37q0-123.3,0-246.6c0-2.55,0-2.55-2.53-2.55H452.27c-2.26,0-2.26,0-2.26-2.17v-96.3h84.63v-2.46c0-22.12-.11-44.24.06-66.36.07-8.29.57-16.59,1.28-24.85a129.58,129.58,0,0,1,7.43-33c10.86-30,30.59-51.74,60-64.51A133.44,133.44,0,0,1,653,285.82c12.45-.37,24.93,0,37.38.34,9.64.27,19.27.95,28.9,1.6,5.36.36,10.7,1.07,16.06,1.5,1.46.12,1.65.75,1.65,2q0,42.2,0,84.39c0,.59-.06,1.18-.09,1.85h-2.39c-16.28,0-32.56,0-48.84.05-7.63,0-15.23.54-22.65,2.61-11.61,3.23-19.86,10.09-23.65,21.78a55.66,55.66,0,0,0-2.74,16.86c-.14,22.23-.1,44.47-.13,66.7,0,2.25,0,2.25,2.31,2.25h94.66a15.13,15.13,0,0,1,0,1.54c-.38,2.94-.81,5.88-1.18,8.82-1.17,9.16-2.3,18.33-3.48,27.5-1.29,10-2.63,20-3.94,30-1.23,9.44-2.43,18.88-3.67,28.32-.31,2.32-.35,2.32-2.78,2.32h-79a4.62,4.62,0,0,0-1.67,0,2.5,2.5,0,0,0-1.2,1.16,3.68,3.68,0,0,0,0,1.49V835.21c0,2.56,0,2.56,2.53,2.56H797.83c2.13,0,4.27-.07,6.39-.21,11.56-.78,20.61-6.07,27.23-15.48,4.66-6.6,6.24-14.09,6.24-22.11q-.06-287.19,0-574.38Z" fill="#999"/>
2573    </svg>
2574
2575  
2576
2577        <span class="fallback-text">Facebook</span>
2578      </a>
2579    </li>
2580  
2581  
2582  
2583    <li>
2584      <a class="icon-fallback-text" href="https://www.instagram.com/prosper_wood/" title="Prosper Wood 盛元木工在Instagram上" target="_blank">
2585        
2586
2587
2588
2589    <svg xmlns="http://www.w3.org/2000/svg" class="instagram-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2590        <title>icon-instagram</title>
2591        <path d="M834.35,341.22a231.23,231.23,0,0,0-9.59-46.45,166.71,166.71,0,0,0-52.17-78.33c-17-14.41-36.33-24.44-57.44-31.3-21.52-7-43.69-10.21-66.19-11.12-22.28-.9-44.58-1.73-66.87-1.85-47.68-.26-95.37-.16-143.06,0-27.47.11-54.95.69-82.32,3.39a220.7,220.7,0,0,0-37.43,6.95c-26.2,7.26-50,19-70.24,37.45-18.06,16.4-32.3,35.52-41.87,58.05-9.89,23.29-15.13,47.68-16.69,72.82-1.23,19.78-2.06,39.6-2.32,59.41-.38,28.91-.1,57.82-.1,86.73-.23,39.92-.67,79.85,1,119.76.72,17.66,1.57,35.3,4.6,52.76,3.22,18.52,8.32,36.51,16.71,53.34C232.83,768,268.81,797,317.12,811a246.28,246.28,0,0,0,59.24,9.11c25.3.95,50.63,1.78,75.95,1.94,43.83.28,87.66.1,131.5,0,26-.08,52.08-.72,78.06-2.74a234.52,234.52,0,0,0,45.76-8c24.54-6.92,46.82-18.12,66.22-34.79,24.65-21.17,41.5-47.44,51.3-78.36,6.7-21.14,9.83-42.88,10.73-64.94.9-21.84,1.73-43.69,1.82-65.55q.33-78.21-.15-156.44C837.42,387.82,836.72,364.47,834.35,341.22Zm-55.3,232.84c-.12,20.41-1,40.84-2,61.24-1,19.2-4.13,38.08-11.74,55.92q-18.43,43.24-62.47,60c-14.36,5.48-29.3,8.3-44.55,9.53-27.07,2.18-54.21,2.63-81.36,2.73-21.31.07-42.62,0-63.93,0v-.16c-28.47,0-56.94.22-85.4-.09-17.5-.18-35-1-52.49-1.89-19.94-1-39.51-4.31-57.95-12.38q-41.6-18.2-58-60.68a162.37,162.37,0,0,1-9.95-45.62c-2-24.66-2.62-49.38-2.66-74.1-.09-50.88-.16-101.77.12-152.65.11-19,1-38.09,2-57.11a180,180,0,0,1,8.78-48.23c8.32-24.84,23.63-44.14,45.66-58.12,11.78-7.48,24.85-11.91,38.36-15,15.57-3.61,31.43-4.65,47.34-5.32,54.32-2.28,108.68-1.46,163-1.5,18.67,0,37.34.12,56,.56,15.84.38,31.7,1,47.51,2,18.33,1.18,36.27,4.59,53.19,12q41.67,18.25,58.1,60.83c5.67,14.7,8.64,30,9.91,45.63,2,25,2.63,50,2.67,75.09C779.25,475.82,779.35,524.94,779.05,574.06Z" fill="#999"/><path d="M513,330.12c-92-.34-167,74.55-167.08,166.87s74.71,167,167,167A166.86,166.86,0,0,0,679.77,497.12C679.87,405,605.46,330.45,513,330.12Zm-.29,275.31A108.38,108.38,0,1,1,621.21,497.15,108.38,108.38,0,0,1,512.7,605.43Z" fill="#999"/><path d="M686.47,284.5a39,39,0,1,0,38.92,39.14A39,39,0,0,0,686.47,284.5Z" fill="#999"/>
2592    </svg>
2593
2594  
2595
2596        <span class="fallback-text">Instagram</span>
2597      </a>
2598    </li>
2599  
2600  
2601  
2602  
2603  
2604  
2605  
2606    <li>
2607      <a class="icon-fallback-text" href="https://lin.ee/2VXlxUpAB" title="Prosper Wood 盛元木工在Line上" target="_blank">
2608        
2609
2610
2611
2612    <svg xmlns="http://www.w3.org/2000/svg" class="line-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2613        <title>icon-line</title>
2614        <path d="M837.58,237.47c-15.8-26.86-38.14-46.42-66.73-58.78A128.73,128.73,0,0,0,734,168.78c-4.2-.47-8.42-.74-12.62-1.15a26.81,26.81,0,0,1-2.93-.63H306.1a21,21,0,0,1-3.19.65A141,141,0,0,0,193.7,227.18a136.92,136.92,0,0,0-24.4,60.54c-.5,3.45-.7,6.94-1.18,10.39a21.46,21.46,0,0,1-1.12,3.58V719.55a23.91,23.91,0,0,1,1.1,4.45,132.12,132.12,0,0,0,14.49,54.45c20.58,39.69,52.66,64.84,96.28,75.07a118.63,118.63,0,0,0,21.81,2.91,24.16,24.16,0,0,1,3.22.57H720.66a27.33,27.33,0,0,1,3.21-.57c39.53-2.53,72.32-18.87,98.47-48.43a136.51,136.51,0,0,0,32-65.32c1-4.85,1.26-9.82,1.91-14.73a24.25,24.25,0,0,1,.72-2.88V301.69a15.08,15.08,0,0,1-.69-2.9C855.25,276.76,848.7,256.38,837.58,237.47ZM753.76,544.74a189.6,189.6,0,0,1-23.32,42.11,208.16,208.16,0,0,1-32.15,34.76c-12.76,11.12-25.31,22.48-38.38,33.23-35.07,28.83-71.7,55.51-110.67,78.87-11.12,6.67-22.46,13-34.55,17.76a84.7,84.7,0,0,1-12.35,3.8c-7.29,1.65-11.22-1.26-11.62-8.72a53.45,53.45,0,0,1,.91-10.68c1-6.62,2.39-13.19,3.34-19.83a39.31,39.31,0,0,0-.35-14.26,19.77,19.77,0,0,0-11.3-14.11c-4.23-2-8.76-2.63-13.32-3.21a290.39,290.39,0,0,1-46-9.72c-31.07-9.18-59.84-23-85.77-42.53-26.73-20.1-48.32-44.61-63-74.85a170.66,170.66,0,0,1-17.05-78.18,163.09,163.09,0,0,1,10.07-52c9.7-26.44,25-49.27,44.73-69.19,21.9-22.09,47.44-38.86,75.76-51.51a289.28,289.28,0,0,1,59.46-19.08,260.46,260.46,0,0,1,31.59-4.72c5.31-.44,10.62-.92,15.94-1.22s10.65-.38,16-.56a339.27,339.27,0,0,1,36.88,2.27,290.8,290.8,0,0,1,77.23,19.51c31.72,12.85,60.21,30.74,84.43,55.11,18.57,18.67,33.22,40,43,64.52a172,172,0,0,1,12.08,63.78A164.42,164.42,0,0,1,753.76,544.74Z" fill="#999"/><path d="M569.52,425.37c-6,1.41-9.73,6.4-9.81,12.73-.08,5.62,0,11.23,0,16.84q0,18.63,0,37.26c0,.91.35,2-.72,2.89-.65-.81-1.25-1.5-1.79-2.22L537.86,467c-9.12-12.25-18.3-24.45-27.31-36.77-5.3-7.26-17.63-7.11-22.37.83a14.49,14.49,0,0,0-1.94,7.63q0,47.9,0,95.77c0,.55,0,1.11,0,1.66A13,13,0,0,0,492,546.28a13.78,13.78,0,0,0,8.7,2,12.25,12.25,0,0,0,10.14-5.75A13.27,13.27,0,0,0,513,535q0-26.91,0-53.82v-4a6,6,0,0,1,3,2.76q23,31.39,45.93,62.82c3.87,5.34,9.24,6.5,14.87,5.26a12.45,12.45,0,0,0,9.68-12.22c-.12-8.73,0-17.47,0-26.21,0-23.83-.07-47.66,0-71.49C586.46,430.63,580.05,422.88,569.52,425.37Z" fill="#999"/><path d="M634.92,451.78q15.18,0,30.35,0c1.28,0,2.57,0,3.86-.11a11.71,11.71,0,0,0,7.64-3.38c4.29-4.21,5-9.34,3.15-14.75s-6.18-8-11.81-8.46c-.91-.08-1.83,0-2.75,0h-45.8c-.83,0-1.66,0-2.48,0-6.18.33-11,4-12.41,9.55a23.69,23.69,0,0,0-.41,5.47q0,46.62,0,93.24c0,1.2,0,2.4.07,3.59a12.1,12.1,0,0,0,6.14,9.88,14.75,14.75,0,0,0,7.94,1.92q24,.06,48,0a22,22,0,0,0,5.69-.84c4.58-1.28,9.06-6.21,8.69-13.24-.3-5.93-4-10.89-9.7-12.24a20.57,20.57,0,0,0-4.65-.36c-10.48,0-21,0-31.45,0-1.25,0-2.49-.19-3.65-.28-.6-3.33-.48-19.09.17-21.34,1-.05,2.08-.15,3.16-.15,10.94,0,21.89-.12,32.83,0,7.09.1,15.12-5.73,13-16.47a12.57,12.57,0,0,0-12.66-10.21c-11-.05-22.07,0-33.1,0h-3.35c-.63-3.48-.52-19.31.12-21.54C632.58,451.93,633.75,451.78,634.92,451.78Z" fill="#999"/><path d="M414.9,521.65c-10.76,0-21.52,0-32.29,0h-3.84v-4.26c0-26.3,0-52.61,0-78.92a13.36,13.36,0,0,0-26.72-.65q.1,48.72,0,97.42a13,13,0,0,0,13,13.11c16.83-.14,33.67,0,50.5-.06a13.53,13.53,0,0,0,3.54-.38c10.55-2.9,11.23-14.46,7.49-20.26C423.89,523.39,419.8,521.66,414.9,521.65Z" fill="#999"/><path d="M466.59,436.12a18.43,18.43,0,0,0-2.09-5.59c-2.75-4.22-6.9-5.79-11.87-5.59a12.74,12.74,0,0,0-11.93,9.37,20.25,20.25,0,0,0-.41,4.93q0,23.6,0,47.19t0,47.47a19.84,19.84,0,0,0,.54,5.45c1.7,6,6.6,9.1,13.56,8.94a12.4,12.4,0,0,0,12.32-11.73c.07-1.1.06-2.21.06-3.31q0-46.5,0-93A17.09,17.09,0,0,0,466.59,436.12Z" fill="#999"/>
2615    </svg>
2616
2617  
2618
2619        <span class="fallback-text">Line</span>
2620      </a>
2621    </li>
2622  
2623  
2624  
2625</ul>
2626
2627            </div>
2628          
2629        </div>
2630  
2631        <hr class="hr--small hr--clear">
2632  
2633        
2634  
2635         <div class="grid">
2636           <div class="grid__item text-center">
2637             
2638             
2639             <p class="site-footer__links">
2640              
2641              
2642                
2643                  <a href="/legal/terms-of-service">服務條款</a>
2644                
2645                
2646              
2647                
2648                  | <a href="/legal/privacy-policy">隱私政策</a>
2649                
2650                
2651              
2652                
2653                  | <a href="/legal/refund-policy">退款政策</a>
2654                
2655                
2656              
2657             </p>
2658             
2659           </div>
2660         </div>
2661  
2662      </div>
2663    </footer>
2664    
2665      
2666
2667    
2668
2669    
2670    
2671      <div id="scrollTopButton" class="on-right" style="display: none">
2672        <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2672<path d="M22,18.25a1.21,1.21,0,0,1-.88-.37L12,8.77,2.88,17.88a1.24,1.24,0,0,1-1.76-1.76l10-10a1.24,1.24,0,0,1,1.76,0l10,10a1.24,1.24,0,0,1,0,1.76A1.21,1.21,0,0,1,22,18.25Z"/></svg>
2673      </div>
2674      
2674<script>
2675        $( document ).ready(function() {
2676          var winScroll = $(this).scrollTop(),
2677          this_el = $("#scrollTopButton");
2678
2679          // Header bar
2680          if(winScroll > 400){
2681            this_el.fadeIn();
2682          }else{
2683            this_el.fadeOut();
2684          }
2685
2686          $("#scrollTopButton").click(function() {
2687            $('html,body').animate({ scrollTop: 0 });
2688          });
2689
2690          $(window).scroll(function(){
2691            var winScroll = $(this).scrollTop();
2692
2693            // Header bar
2694            if(winScroll > 400){
2695              this_el.fadeIn();
2696            }else{
2697              this_el.fadeOut();
2698            }
2699
2700          });
2701        });
2702      </script>
2702
2703    
2704
2705  
2706    
2707  
2708    
2708<script src="https://store-themes.easystore.co/325951/themes/3809/assets/fastclick.min.js?t=1787072517" type="text/javascript" ></script>
2708
2709    
2709<script src="https://store-themes.easystore.co/325951/themes/3809/assets/timber.js?v1.1?t=1787072517" type="text/javascript" ></script>
2709
2710    
2710<script src="https://store-themes.easystore.co/325951/themes/3809/assets/theme.js?t=1787072517" type="text/javascript" ></script>
2710
2711  
2712  
2713  
2714    
2715        
2715<script>
2716          if (typeof Object.assign !== 'function') {
2717          // Must be writable: true, enumerable: false, configurable: true
2718          Object.defineProperty(Object, "assign", {
2719            value: function assign(target, varArgs) { // .length of function is 2
2720              'use strict';
2721              if (target === null || target === undefined) {
2722                throw new TypeError('Cannot convert undefined or null to object');
2723              }
2724
2725              var to = Object(target);
2726
2727              for (var index = 1; index < arguments.length; index++) {
2728                var nextSource = arguments[index];
2729
2730                if (nextSource !== null && nextSource !== undefined) { 
2731                  for (var nextKey in nextSource) {
2732                    // Avoid bugs when hasOwnProperty is shadowed
2733                    if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
2734                      to[nextKey] = nextSource[nextKey];
2735                    }
2736                  }
2737                }
2738              }
2739              return to;
2740            },
2741            writable: true,
2742            configurable: true
2743          });
2744        }
2745      </script>
2745
2746      
2746<script src="https://store-themes.easystore.co/325951/themes/3809/assets/lozad.min.js?t=1787072517" type="text/javascript" ></script>
2746
2747      
2747<script>
2748        const observer = lozad('.lozad', {
2749            loaded: function(el) {
2750                // Custom implementation on a loaded element
2751                el.onload = function() {
2752                  el.classList.add('loaded');
2753                };
2754            }
2755        });
2756        observer.observe();
2757      </script>
2757
2758    
2759  
2760    
2761  
2762    
2763  
2764    
2765
2766<script src="/assets/currencies.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2766
2766
2767<script src="/assets/jquery.currencies.min.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2767
2767
2768<script src="/assets/currencies_format.js" type="text/javascript" ></script>
2768
2769
2770<script>
2771Currency.format = "money_with_currency_format";
2772var shopCurrency = 'TWD';
2773var selectedCurrency = '';
2774
2775
2776  Currency.convert = function(amount, from, to) {
2777    return amount;
2778  };
2779
2780  
2781if( $.cookie("currency") == null ){
2782  
2783  if( selectedCurrency != false ) {
2784
2785  Currency.convertAll(shopCurrency, selectedCurrency);
2786  jQuery('.selected-currency').text(Currency.currentCurrency);  
2787
2788  }
2789
2790}
2791
2792/* Sometimes merchants change their shop currency, let's tell our JavaScript file */
2793// Currency.moneyFormats[shopCurrency].money_with_currency_format = "";
2794// Currency.moneyFormats[shopCurrency].money_format = "NT$ {{amount}} ";
2795  
2796/* Default currency */
2797var defaultCurrency = 'TWD';
2798  
2799/* Cookie currency */
2800var cookieCurrency = Currency.cookie.read();
2801
2802  cookieCurrency = shopCurrency;
2803
2804$("input[name=current_currency]").val(cookieCurrency);
2805if(cookieCurrency == null){
2806  cookieCurrency = shopCurrency;
2807  Currency.cookie.write(shopCurrency);
2808}
2809/* Fix for customer account pages */
2810jQuery('span.money span.money').each(function() {
2811  jQuery(this).parents('span.money').removeClass('money');
2812});
2813/* Saving the current price */
2814jQuery('span.money').each(function() {
2815  jQuery(this).attr('data-currency-TWD', jQuery(this).html());
2816});
2817// If there's no cookie.
2818if (cookieCurrency == null) {
2819  if (shopCurrency !== defaultCurrency) {
2820    Currency.convertAll(shopCurrency, defaultCurrency);
2821  }
2822  else {
2823    Currency.currentCurrency = defaultCurrency;
2824  }
2825}
2826// If the cookie value does not correspond to any value in the currency dropdown.
2827else if (jQuery('[name=currencies]').size() && jQuery('[name=currencies] option[value=' + cookieCurrency + ']').size() === 0) {
2828  Currency.currentCurrency = shopCurrency;
2829  Currency.cookie.write(shopCurrency);
2830}
2831else if (cookieCurrency === shopCurrency) {
2832  Currency.currentCurrency = shopCurrency;
2833  Currency.convertAll(shopCurrency, cookieCurrency);
2834}
2835else {
2836  Currency.convertAll(shopCurrency, cookieCurrency);
2837}
2838jQuery('[name=currencies]').val(Currency.currentCurrency).change(function() {
2839  var newCurrency = jQuery(this).val();
2840  
2841  
2842    Currency.cookie.write(newCurrency)
2843    if ('customers' == 'cart') {
2844      const params = new URLSearchParams(window.location.search);
2845      params.set('delete_cache', 1);
2846      window.location.search = params;
2847    } else {
2848      window.location.reload();
2849    }
2850  
2851});
2852var original_selectCallback = window.selectCallback;
2853var selectCallback = function(variant, selector) {
2854  var currencies = null;
2855  original_selectCallback(variant, selector);
2856  if(typeof jQuery('[name=currencies]').val() == "undefined"){
2857    currencies = shopCurrency;
2858  }
2859  else{
2860    currencies = jQuery('[name=currencies]').val();
2861  }
2862  Currency.convertAll(shopCurrency, currencies);
2863  jQuery('.selected-currency').text(Currency.currentCurrency);
2864};
2865$('body').on('ajaxCart.afterCartLoad', function(cart) {
2866  Currency.convertAll(shopCurrency, jQuery('[name=currencies]').val());
2867  jQuery('.selected-currency').text(Currency.currentCurrency);  
2868});
2869jQuery('.selected-currency').text(Currency.currentCurrency);
2870</script>
2870
2871
2872
2873  
2873<script>
2874
2875  /*
2876
2877    ------
2878    Events
2879    ------
2880
2881    pages/viewed
2882
2883    customers/signup
2884
2885    customers/login
2886
2887    products/searched
2888
2889    collections/viewed
2890
2891    products/viewed
2892
2893    products/shared
2894
2895    wishlists/item_added
2896
2897    carts/items_added
2898
2899    carts/viewed
2900
2901    carts/item_removed
2902
2903    checkouts/initiated
2904
2905    checkouts/shipping_info_added
2906
2907    checkouts/payment_info_added
2908
2909    checkouts/completed
2910
2911    orders/placed
2912
2913    orders/purchased
2914
2915    payments/captured
2916
2917    payments/failed
2918
2919  */
2920
2921  window.__latest_cart = window.__latest_cart || null;
2922
2923  const _selector = document.querySelector.bind(document),
2924        _selectorAll = document.querySelectorAll.bind(document)
2925
2926  document.addEventListener('DOMContentLoaded', (event) => {
2927
2928    const default_currency = getCookie("currency")
2929    const customer_id = window.__st.cid
2930    const template    = window.__st.p
2931
2932    onPageView()
2933
2934    //-----------------------//
2935    //        Configs        //
2936    //-----------------------//
2937
2938    window.dataLayer = window.dataLayer || []
2939
2940    Array.prototype.last = Array.prototype.last || function() {
2941      return this[this.length - 1] || null
2942    }
2943
2944    Array.prototype.first = Array.prototype.first || function() {
2945      return this[0] || null
2946    }
2947
2948    //----------------------//
2949    //       Triggers       //
2950    //----------------------//
2951
2952    const XHR = window.XMLHttpRequest
2953
2954    function xhr() {
2955
2956      const xhr = new XHR()
2957
2958      xhr.addEventListener("readystatechange", function() {
2959
2960        if(xhr.readyState != 4) return
2961
2962        try {
2963
2964          const response_url = xhr.responseURL
2965
2966          if (response_url.includes("cart/add")) {
2967
2968            window.__latest_cart = JSON.parse(xhr.response)
2969
2970            onCartItemsAdded() // ok
2971
2972          }
2973
2974          if (response_url.includes("cart/remove_item_quantity")) {
2975
2976            window.__latest_cart = JSON.parse(xhr.response)
2977
2978            onCartItemRemoved() // ok
2979
2980          }
2981
2982          if (response_url.includes("new_cart?retrieve=true")) {
2983
2984            result = JSON.parse(xhr.response)
2985
2986            if (result.cart) {
2987              window.__latest_cart = result.cart
2988            }
2989
2990          }
2991
2992        } catch(e) {
2993
2994          console.error(e)
2995
2996        }
2997
2998      }, false);
2999
3000      return xhr
3001
3002    }
3003
3004    window.XMLHttpRequest = xhr
3005
3006    switch(template) {
3007
3008      case 'cart': onCartView() // ok
3009      break
3010      case 'product': onProductView() // ok
3011      break
3012      case 'collection': onCollectionView() // ok
3013      break
3014      case 'blog': onBlogView()
3015      break
3016      case 'article': onArticleView()
3017      break
3018      case 'payment_completed': onOrderPlace()
3019      break
3020      case 'payment_fail': onPaymentFail()
3021      break
3022
3023    }
3024
3025    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
3026    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
3027    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
3028    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
3029    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
3030    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
3031    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
3032    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
3033    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
3034    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
3035    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
3036    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
3037    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
3038    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
3039
3040    // For append elements
3041    const bodyMutationObserver = new MutationObserver(() => {
3042      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
3043      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
3044    });
3045    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
3046
3047    //------------------------------//
3048    //        Event handlers        //
3049    //------------------------------//
3050
3051    function onPageView() {
3052
3053      EasyStore.Event.dispatch('pages/viewed', {
3054        page: {
3055          type: template,
3056          title: document.title,
3057          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
3058          url: location.href,
3059        }
3060      })
3061
3062    }
3063
3064    function onSignUp() {
3065
3066      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
3067      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
3068
3069      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
3070
3071      let data = {}
3072
3073      if (email_regex.test(email_or_phone)) {
3074        data.method = 'email'
3075        data.email = email_or_phone
3076      }
3077
3078      if (phone_regex.test(email_or_phone)) {
3079        data.method = "phone"
3080        data.phone = email_or_phone
3081      }
3082
3083      if (!data.method) return
3084
3085      EasyStore.Event.dispatch('customers/signup', data)
3086
3087    }
3088
3089    function onLogin() {
3090
3091      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
3092      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
3093
3094      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
3095
3096      let data = {}
3097
3098      if (email_regex.test(email_or_phone)) {
3099        data.method = 'email'
3100        data.email = email_or_phone
3101      }
3102
3103      if (phone_regex.test(email_or_phone)) {
3104        data.method = "phone"
3105        data.phone = email_or_phone
3106      }
3107
3108      if (!data.method) return
3109
3110      EasyStore.Event.dispatch('customers/login', data)
3111
3112    }
3113
3114    function onLineLogin() {
3115
3116      EasyStore.Event.dispatch('customers/login', { method: 'line' })
3117
3118    }
3119
3120    function onLogout() {
3121
3122      EasyStore.Event.dispatch('customers/logout', { customer_id })
3123
3124    }
3125
3126    function onBlogView() {
3127
3128      const blog = ""
3129
3130      EasyStore.Event.dispatch('blogs/viewed', { blog })
3131
3132    }
3133
3134    function onArticleView() {
3135
3136      const article = ""
3137
3138      EasyStore.Event.dispatch('articles/viewed', { article })
3139
3140    }
3141
3142    function onProductSearch() {
3143
3144      const query = _selector('input[name=q]').value
3145
3146      if (!query) return
3147
3148      EasyStore.Event.dispatch('products/searched', { query })
3149
3150    }
3151
3152    function onCollectionView() {
3153
3154      const collection = ""
3155
3156      EasyStore.Event.dispatch('collections/viewed', { collection })
3157
3158    }
3159
3160    function onProductView() {
3161
3162      const product = ""
3163
3164      EasyStore.Event.dispatch("products/viewed", { product })
3165
3166    }
3167
3168    function onProductShare(el) {
3169
3170      const product = ""
3171
3172      const channel = el.getAttribute("class").split("-").last()
3173
3174      EasyStore.Event.dispatch('products/shared', { product, channel })
3175
3176    }
3177
3178    function onWishlistItemAdded() {
3179
3180      let product  = ""
3181      const quantity = _selector("#Quantity").value
3182
3183      EasyStore.Event.dispatch('wishlists/item_added', { product })
3184
3185    }
3186
3187    async function onCartItemsAdded() {
3188
3189      const cart = await getCart()
3190
3191      if(cart && cart.items != undefined && cart.items.length > 0) {
3192
3193        EasyStore.Event.dispatch('carts/item_added', { cart })
3194
3195      }
3196
3197    }
3198
3199    async function onCartView() {
3200
3201      const cart = await getCart()
3202
3203      EasyStore.Event.dispatch('carts/viewed', { cart })
3204
3205    }
3206
3207    async function onCartItemRemoved() {
3208
3209      const cart = await getCart()
3210
3211      cart.items = []
3212
3213      if(cart) {
3214
3215        EasyStore.Event.dispatch('carts/item_removed', { cart })
3216
3217      }
3218
3219    }
3220
3221    async function onCheckoutInitiate() {
3222
3223      const cart = await getCart()
3224
3225      EasyStore.Event.dispatch('checkouts/initiated', { cart })
3226
3227    }
3228
3229    async function onShippingInfoAdded(form) {
3230      let checkout = getCheckout()
3231
3232      let form_data = {}
3233      new FormData(form).forEach((value, key) => form_data[key] = value)
3234
3235      let shipping_tier = null
3236
3237      if (form_data.type && form_data.type.startsWith("r_pickup")) {
3238        shipping_tier = `Pickup - ${form_data.pick_location}`
3239      }
3240
3241      if (form_data.s_id) {
3242        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
3243      }
3244
3245      if (!shipping_tier) return
3246
3247      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
3248
3249    }
3250
3251    async function onPaymentInfoAdded(form) {
3252
3253      let checkout = getCheckout()
3254
3255      let payment_type = new FormData(form).get('payment_method')
3256
3257      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
3258
3259    }
3260
3261    async function onOrderPlace() {
3262
3263      let cart_token  = getCookie("cart_js")
3264      let previous_cart_token = getCookie("previous_cart_ga4_js")
3265
3266      if (previous_cart_token && previous_cart_token == cart_token) {
3267        // Prevent duplicate purchase tracking
3268        return
3269      }
3270
3271      let order = getOrder()
3272
3273      EasyStore.Event.dispatch('orders/placed', { order })
3274
3275      if(order.is_manual_payment) {
3276
3277        EasyStore.Event.dispatch('orders/purchased', { order })
3278
3279      }
3280
3281      const last_transaction = order.transactions.last()
3282
3283      if (last_transaction.status) {
3284
3285        EasyStore.Event.dispatch('orders/purchased', { order })
3286        EasyStore.Event.dispatch('payments/captured', { order })
3287
3288      }
3289
3290    }
3291
3292    async function onPaymentFail() {
3293
3294      const order = getOrder()
3295
3296      EasyStore.Event.dispatch('payments/failed', { order })
3297
3298    }
3299
3300    async function onCheckoutComplete(form) {
3301
3302      onPaymentInfoAdded(form)
3303
3304      const checkout = getCheckout()
3305
3306      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3307
3308    }
3309
3310    async function onSinglePageCheckout() {
3311
3312      // let checkout = $("[data-app-checkout]").data("app-checkout")
3313
3314      let checkout = getCheckout()
3315
3316      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
3317      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
3318
3319      const shipping_method = _selector("#delivery_method").value
3320
3321      let shipping_tier = null
3322      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
3323      if (shipping_method == "shipping") {
3324        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
3325      }
3326
3327      if (shipping_method == "pickup") {
3328        shipping_tier = app_spc_customer_info_label[0].innerHTML
3329      }
3330
3331      if (shipping_tier) {
3332
3333        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
3334          checkout,
3335          shipping_tier,
3336        })
3337
3338      }
3339
3340      if (payment_type) {
3341
3342        EasyStore.Event.dispatch('checkouts/payment_info_added', {
3343          checkout,
3344          payment_type,
3345        })
3346
3347      }
3348
3349      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3350
3351    }
3352
3353  })
3354
3355
3356  //-----------------------//
3357  //       Functions       //
3358  //-----------------------//
3359
3360  function getCookie(name) {
3361
3362    name += "="
3363
3364    decodedCookie = decodeURIComponent(document.cookie)
3365
3366    ca = decodedCookie.split(";")
3367
3368    for(i = 0; i < ca.length; i++) {
3369      c = ca[i]
3370      while (c.charAt(0) == " ") {
3371        c = c.substring(1)
3372      }
3373      if (c.indexOf(name) == 0) {
3374        return c.substring(name.length, c.length)
3375      }
3376    }
3377
3378    return ""
3379
3380  }
3381
3382  const parsePrice = price => {
3383    if(typeof price === 'string') {
3384      return parseFloat(price.split(',').join(''))
3385    }
3386
3387    return price
3388  }
3389
3390  const requestCart = async (method, data) => {
3391
3392  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
3393    result = await response.json()
3394
3395    return result.cart
3396
3397  }
3398  const getCart = async (latest = false) => {
3399
3400    let cart = window.__latest_cart
3401
3402    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
3403
3404    if(latest || cart_invalid) {
3405      cart = await requestCart()
3406    }
3407
3408    cart.items = cart.items || []
3409
3410    return mapCart(cart)
3411
3412  }
3413
3414  const getCheckout = async () => {
3415    mapCheckout(window.__latest_cart || await requestCart())
3416  }
3417
3418  const getOrder = async () => {
3419    mapOrder(window.__latest_cart || await requestCart())
3420  }
3421
3422  //-----------------------//
3423  //        Mappers        //
3424  //-----------------------//
3425
3426  const fallbackAttribute = (object, attribute) => {
3427
3428    if(!Array.isArray(attribute)) {
3429      attribute = [attribute]
3430    }
3431
3432    let final_value = null
3433
3434    do {
3435
3436      final_value = object[attribute.shift()]
3437
3438    } while(!final_value && attribute.length)
3439
3440    return final_value
3441
3442  }
3443
3444  const map = (object, mapper) => {
3445
3446    const newObject = {}
3447
3448    for(const key in mapper) {
3449
3450      // Handle different keys between new and old format
3451      newObject[key] = fallbackAttribute(object, mapper[key])
3452
3453      // Cast price to float
3454      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
3455        newObject[key] = parsePrice(newObject[key])
3456      }
3457
3458      if(newObject[key] === undefined) {
3459        delete newObject[key]
3460      }
3461
3462    }
3463
3464    return newObject
3465
3466  }
3467
3468  const mapCart = cart => {
3469
3470    const oldCart = cart
3471
3472    const mapper = {
3473      id: 'id',
3474      currency: 'currency',
3475      item_count: 'item_count',
3476      items: 'items',
3477      total_price: 'total_price',
3478      latest_items: 'latest_items'
3479    }
3480
3481    cart = map(cart, mapper)
3482
3483    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
3484
3485    cart.discount_applications = discounts.map(discount => ({
3486      title: discount.voucher_code || null,
3487      value: parsePrice(discount.amount),
3488    }))
3489
3490    cart.original_total_price = cart.items.length
3491    ? cart.items
3492      .map(item => item.original_price)
3493      .reduce((sum, price) => sum + price)
3494    : 0
3495
3496    cart.total_discount = cart.discount_applications.length
3497    ? cart.discount_applications
3498      .map(discount => parsePrice(discount.value))
3499      .reduce((sum, value) => sum + value)
3500    : 0
3501
3502    cart.items = cart.items.map(item => mapLineItem(item))
3503
3504    return cart
3505
3506  }
3507
3508  const mapCheckout = checkout => {
3509
3510    const mapper = {
3511      note: 'note',
3512      attributes: 'note_attributes',
3513      billing_address: 'billing_address',
3514      currency: 'currency',
3515      customer_id: 'customer_id',
3516      discounts_amount: 'total_discount',
3517      id: 'id',
3518      line_items: 'order_item',
3519      order_number: 'order_number',
3520      shipping_address: 'shipping_address',
3521      shipping_price: 'shipping_tax',
3522      shipping_method: 'shipping_method_name',
3523      tax_price: 'total_tax',
3524    }
3525
3526    checkout = map(checkout, mapper)
3527
3528    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
3529
3530    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
3531
3532    return checkout
3533
3534  }
3535
3536  const mapOrder = order => {
3537
3538    const mapper = {
3539      attributes: 'note_attributes',
3540      billing_address: 'billing_address',
3541      cancelled: 'is_cancelled',
3542      cancelled_at: 'cancelled_at',
3543      created_at: 'created_at',
3544      customer_id: 'customer_id',
3545      // discount_applications: 'discount_applications',
3546      email: 'email',
3547      financial_status: 'financial_status',
3548      fulfillment_status: 'fulfillment_status',
3549      line_items: 'order_item',
3550      note: 'note',
3551      order_number: 'order_number',
3552      phone: 'phone',
3553      shipping_address: 'shipping_address',
3554      shipping_methods: 'shipping_methods',
3555      shipping_price: 'total_shipping',
3556      subtotal_price: 'subtotal_price',
3557      // tax_lines: 'tax_lines',
3558      tax_price: 'total_tax',
3559      total_discounts: 'total_discount',
3560      total_net_amount: 'total_amount_include_transaction',
3561      total_price: 'total_price',
3562      transactions: 'transaction_records',
3563      is_manual_payment: 'is_manual_payment',
3564    }
3565
3566    order.email = order.billing_address.email
3567    order.phone = order.billing_address.phone
3568    order.shipping_method = order.shipping_method_name
3569
3570    order = map(order, mapper)
3571
3572    order.line_items = order.line_items.map(item => mapLineItem(item))
3573    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
3574
3575    return order
3576
3577  }
3578
3579  const mapLineItem = line_item => {
3580
3581    const old_line_item = line_item
3582
3583    const mapper = {
3584      final_price: 'price',
3585      image: 'img_url',
3586      message: 'message',
3587      original_line_price: 'original_line_price',
3588      original_price: 'original_price',
3589      properties: 'properties',
3590      quantity: 'quantity',
3591      requires_shipping: 'shipping_required',
3592      sku: 'sku',
3593      taxable: 'taxable',
3594      title: 'product_name',
3595      product_name: 'product_name',
3596      url: 'url',
3597      product_id: 'product_id',
3598      variant_id: 'variant_id',
3599      id: ['id', 'i_id'],
3600    }
3601
3602    line_item = map(line_item, mapper)
3603
3604    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
3605    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
3606    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
3607
3608    return line_item
3609
3610  }
3611
3612  const mapTransaction = transaction => {
3613
3614    const mapper = {
3615      amount: 'amount',
3616      created_at: 'created_at',
3617      gateway: 'gateway_type',
3618      id: 'id',
3619      status: 'status',
3620    }
3621
3622    transaction = map(transaction, mapper)
3623
3624    return transaction
3625
3626  }
3627
3628
3629</script>
3629
3630
3631</div>
3632
3633  
3634    <div id="CartDrawer" class="cart-drawer" data-fetch="0">
3635  
3636
3637  <div class="cart-drawer-wrapper">
3638    
3639<!-- Snippet:cart/content_top: Google Analytics 4 -->
3640<div id="CartDataStorage" data-cart='{"item_count":0,"total_price":0,"announcements":[]}'></div>
3641
3642<!-- /Snippet -->
3643<div id="cart-promotion-top"></div>
3644
3645
3646    <div id="CartTemplate">
3647      
3648
3649  
3650
3651  <div id="noCartItem" class="cart-drawer-content">
3652    <div class="cart-drawer-content-wrapper text-center">
3653      <div class="section-header">
3654        <span></span>
3655        <span class="CartDrawerTrigger icon icon-x"></span>
3656      </div>
3657      <div class="section-header__title h2">您的購物車目前還是空的。</div>
3658      <a class="btn btn--secondary" href="/collections/all">繼續購物</a>
3659    </div>
3660  </div>
3661
3662
3663
3664
3665    </div>
3666
3667    <link href="/assets/css/promotion.css?v2.94" rel="stylesheet" type="text/css" media="screen" />
3668<div id="cart-promotion-section"></div>
3669
3670<script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>NT$ {{amount}} </span>";</script>
vendor: 1 bytes, line 3670
3670
3671<script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
3671
3672
3673<script>
3674
3675    window.EasyStore = window.EasyStore || {};
3676    window.EasyStore.Promotion = window.EasyStore.Promotion || {};
3677
3678    var get_cart_promo_initial = false,
3679        current_template = 'customers';
3680
3681    window.EasyStore.Promotion.updateCartPromotion = function (){
3682        get_cart_promo_initial = true
3683        $.ajax({
3684        type: "GET",
3685        dataType: 'json',
3686        url: "/new_cart/promotion",
3687        success: function(response){
3688            $("#cart-promotion-section").html(response["cart/content_bottom"].trim());
3689            $("#cart-promotion-top").html(response["cart/content_top"].trim());
3690
3691            promoVariantDetailInitial()
3692        },
3693        error: function(xhr){
3694        }
3695        });
3696    }
3697
3698
3699    if(current_template == 'cart') {
3700        document.addEventListener("DOMContentLoaded", function() {
3701            window.EasyStore.Promotion.updateCartPromotion()
3702        });
3703    }
3704
3705</script>
vendor: 1 bytes, line 3705
3705
3706<script>
3707  document.addEventListener('DOMContentLoaded', function () {
3708    window._getVoucherErrorTranslation = Object.assign(window._getVoucherErrorTranslation || {}, {
3709      "condition_not_matched":    "優惠代碼條件不匹配",
3710      "promotion_unavailable":    "此優惠目前不可用",
3711      "available_on":             "可在 channels 使用",
3712      "available_on_only":        "僅限在 channels 使用",
3713      "available_with_locations": "可在 channels 使用(僅限 locations)",
3714      "pos_at_locations":         "僅限 locations 門市使用",
3715      "channel_website":          "網站",
3716      "channel_mobile":           "應用程式",
3717      "channel_pos":              "門市"
3718    });
3719  });
3720</script>
3720
3721
3722  </div>
3723  
3724
3725  
3726</div>
3727
3728<div id="toast"><div id="toastContent"></div></div>
3729<style>
3730  .cart-drawer .cart-drawer-content .cart-sticky-button-wrapper a.btn.CartDrawerTrigger{margin-bottom: 10px !important;}
3731  #toastContent a{color: #fff;text-decoration: underline;margin-top: 10px;display: block;}
3732  #toastContent .svg-icon{margin-right: 8px;margin-top: -1px;}
3733</style>
3734
3735<script type="text/javascript">
3736  $('body').on("submit", "#CartForm", function() {
3737    $(this).find('[type=submit]').addClass('btn--loading');
3738  });
3739  
3740  $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3741  $( "select.currency-picker" ).change(function(){
3742    $("select.currency-picker").val($(this).val());
3743    url=window.location.href;
3744    newParam="currency=" + $( "select.currency-picker" ).val();
3745    if(url.indexOf("currency=")===-1){
3746      separator = (url.indexOf("?")===-1)?"?":"&";
3747      newUrl= url + separator + newParam;
3748    }else{
3749      oldParam= new URL(url);
3750      oldParam = oldParam.searchParams.get("currency");
3751      newParam= $(this).val();
3752      newUrl=url.replace(oldParam,newParam);
3753    }
3754    $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3755    // window.location.href =newUrl;
3756    $('#CartDrawer').attr('data-fetch', 0);
3757  });
3758
3759  $("body").on("click", ".cart__remove", function() {
3760    $('#CartTemplate').addClass('is-loading');
3761    $.ajax({
3762      type: 'POST',
3763      url: '/cart/remove_item_quantity',
3764      data: {
3765        variant_id: $(this).data( "variant-id"),
3766        item_id: $(this).data( "item-id"),
3767        quantity: $(this).data( "quantity"),
3768        i_id: $(this).data("i_id"),
3769      },
3770      dataType: 'json',
3771      success: function(response){
3772
3773        theme.cartDrawer(response);
3774        $('#CartTemplate').removeClass('is-loading');
3775
3776        if (window.checkProductProperties !== undefined){
3777          window.checkProductProperties();
3778        }
3779      },
3780      error: function(xhr){
3781        console.log('error',xhr);
3782        $('#CartTemplate').removeClass('is-loading');
3783      }
3784    });
3785
3786  });
3787
3788
3789  $('body').on("click", "#applycode",function() {
3790    
3791    if($("input[name='voucher_code']").val() != '') {
3792
3793      $('#CartTemplate').addClass('is-loading');
3794
3795      $.ajax({
3796        type: 'POST',
3797        url: '/new_cart/voucher',
3798        data: {
3799          voucher_code: $("input[name='voucher_code']").val(),
3800          category: 'create'
3801        },
3802        dataType: 'json',
3803        success: function(response){
3804
3805          // console.log(response);
3806
3807          if(response.error != undefined){
3808            
3809            if(response.error.message != undefined) popToast(response.error.message); 
3810          
3811            $("input[name='voucher_code']").val('')
3812          
3813          } 
3814          
3815          if(response.cart_content != undefined) theme.cartDrawer(response); 
3816
3817          $('#CartTemplate').removeClass('is-loading');
3818          
3819        },
3820        error: function(xhr){
3821          console.log('error',xhr);
3822          $('#CartTemplate').removeClass('is-loading');
3823        }
3824      });
3825
3826    }
3827
3828  });
3829
3830
3831  $("body").on("click", ".remove_voucher_btn", function() {
3832        $('#CartTemplate').addClass('is-loading');
3833        $.ajax({
3834          type: 'DELETE',
3835          url: '/new_cart/voucher',
3836          data: {
3837            category: 'remove',
3838            order_discount_id: $(this).data( "discount-id")
3839          },
3840          dataType: 'json',
3841          success: function(data){
3842            // console.log(data);
3843            theme.cartDrawer(data);
3844            $('#CartTemplate').removeClass('is-loading');
3845          },
3846          error: function(xhr){
3847            console.log('error',xhr);
3848            $('#CartTemplate').removeClass('is-loading');
3849          }
3850        });
3851
3852    });
3853  
3854
3855  theme.cartDrawer = function(data){
3856    
3857      $('#CartDrawer').attr('data-fetch', 1);
3858      $('#CartTemplate').addClass('is-loading');
3859
3860      
3861      if(typeof data.cart_content  == 'string'){
3862        $('#CartTemplate').html(data.cart_content);
3863      }
3864
3865      let cart_item_count = data.item_count || data.cart.item_count;
3866
3867      if(cart_item_count > 0){
3868        $('.cart-count').removeClass('hidden-count');
3869      }else{
3870        $('.cart-count').addClass('hidden-count');
3871      }
3872
3873      $('.cart-count').text(cart_item_count);
3874      $('#CartTemplate').removeClass('is-loading');
3875      $(".cart-drawer-content").animate({ scrollTop: 0 });
3876
3877      if(window.EasyStore != undefined && window.EasyStore.Promotion != undefined && window.EasyStore.Promotion.updateCartPromotion != undefined) window.EasyStore.Promotion.updateCartPromotion()
3878
3879  }
3880
3881
3882  theme.fetchCartDrawer = function(data){
3883      $('#CartTemplate').addClass('is-loading');
3884      $.ajax({
3885        url: '/new_cart?retrieve=true',
3886        type: 'GET',
3887        success: function(data, status) {
3888          // console.log(data);
3889          theme.cartDrawer(data);
3890
3891          $('#CartTemplate').removeClass('is-loading');
3892
3893          if (window.checkProductProperties !== undefined){
3894            window.checkProductProperties();
3895          }
3896        },
3897        error: function(XMLHttpRequest, textStatus) {
3898          console.log('error',XMLHttpRequest,textStatus);
3899          $('#CartTemplate').removeClass('is-loading');
3900        }
3901      });
3902  }
3903
3904  theme.updateCartDrawer = function(data){
3905    $('#CartTemplate').addClass('is-loading');
3906
3907    $.ajax({
3908      url: '/new_cart/update',
3909      type: 'PUT',
3910      dataType: 'json',
3911      data: $('#CartDrawer form').serialize(),
3912      success: function(data, status) {
3913        theme.cartDrawer(data);
3914
3915        if (window.checkProductProperties !== undefined){
3916          window.checkProductProperties();
3917        }
3918      },
3919      error: function(XMLHttpRequest, textStatus) {
3920        console.log('error',XMLHttpRequest,textStatus);
3921      }
3922    });
3923  }
3924
3925  function debounce(func, wait, immediate) {
3926    var timeout;
3927    return function() {
3928        var context = this, args = arguments;
3929        var later = function() {
3930            timeout = null;
3931            if (!immediate) func.apply(context, args);
3932        };
3933        var callNow = immediate && !timeout;
3934        clearTimeout(timeout);
3935        timeout = setTimeout(later, wait);
3936        if (callNow) func.apply(context, args);
3937    };
3938  };
3939
3940  $('body').on("change", 'input.cart__quantity-selector', function (){
3941    theme.updateCartDrawer();
3942  });
3943
3944
3945  $('#updateCartDrawer').click(function() {
3946    theme.updateCartDrawer();
3947  });
3948
3949  $('body').on("click", ".btn-qty-adjust", function() {
3950
3951    var $button = $(this);
3952    var oldValue = $button.parent().find("input.cart__quantity-selector").val();
3953
3954    if ($button.attr('data-adjust') == 1) {
3955      var newVal = parseFloat(oldValue) + 1;
3956    } else {
3957    // Don't allow decrementing below zero
3958      if (oldValue > 0) {
3959        var newVal = parseFloat(oldValue) - 1;
3960      } else {
3961        newVal = 0;
3962      }
3963    }
3964
3965    $button.parent().find("input").val(newVal);
3966  });
3967    
3968  $('body').on("click", ".btn-qty-adjust", debounce(function() {
3969    theme.updateCartDrawer();
3970  },350));
3971
3972  $('button.checkout').click(function() {
3973    $(this).addClass('btn--loading');
3974  });
3975
3976  var add_cart_success_html = '<svg class="svg-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <g> <g> <path d="M383.841,171.838c-7.881-8.31-21.02-8.676-29.343-0.775L221.987,296.732l-63.204-64.893 c-8.005-8.213-21.13-8.393-29.35-0.387c-8.213,7.998-8.386,21.137-0.388,29.35l77.492,79.561 c4.061,4.172,9.458,6.275,14.869,6.275c5.134,0,10.268-1.896,14.288-5.694l147.373-139.762 C391.383,193.294,391.735,180.155,383.841,171.838z"/> </g> </g> <g> <g> <path d="M256,0C114.84,0,0,114.84,0,256s114.84,256,256,256s256-114.84,256-256S397.16,0,256,0z M256,470.487 c-118.265,0-214.487-96.214-214.487-214.487c0-118.265,96.221-214.487,214.487-214.487c118.272,0,214.487,96.221,214.487,214.487 C470.487,374.272,374.272,470.487,256,470.487z"/> </g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> </svg>';
3977      add_cart_success_html += '已加入購物車 <br><a class="CartDrawerTrigger">查看購物車</a>';
3978
3979  function popToast(content) {
3980    var x = document.getElementById("toast"),
3981        y = document.getElementById("toastContent");
3982
3983    y.innerHTML = content;
3984    x.className += " show";
3985    
3986    var hideToast = setTimeout(function(){ x.className = x.className.replace(" show", ""); }, 3000);
3987  }
3988
3989
3990</script>
3990
3991
3992<style>
3993  vouchers-modal .vouchers-modal.active ,
3994  vouchers-modal #vouchers-modal-backdrop.active{
3995    z-index: 2147483647;
3996  }
3997</style>
3998
3999<link href="/assets/css/vouchers.css?v1.2" rel="stylesheet" type="text/css" media="screen" />
4000<link href="/assets/account/vouchers/vouchers.css" rel="stylesheet" type="text/css" media="screen" />
4001<link href="/assets/account/vouchers/voucher-widget.css" rel="stylesheet" type="text/css" media="screen" />
4002<script src="/assets/js/promotion/vouchers.js?v1.3" type="text/javascript" ></script>
vendor: 1 bytes, line 4002
4002
4003<script src="/assets/account/vouchers/voucher-widget.js" type="text/javascript" ></script>
4003
4004
4005<vouchers-modal>
4006  <div id="vouchers-modal-backdrop" class="vouchers-modal__close"></div>
4007  <div class="vouchers-modal-wrapper page-width">
4008    <div id="vouchers-modal" class="vouchers-modal focus-inset" aria-modal="true" role="dialog" tabindex="-1">
4009      <div class="vouchers-modal__header">
4010        <div class="vouchers-modal__heading">優惠券</div>
4011        <button type="button" class="vouchers-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
4012          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17">
4013            <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor">
4014            </path>
4015          </svg>
4016        </button>
4017      </div>
4018
4019      <discount-input>
4020        <div class="field">
4021          <input type="text" id="input-discount_code" class="search__input field__input" name="voucher_code" placeholder="折扣碼">
4022          <button type="button" name="apply" class="btn btn--secondary button button--secondary">套用</button>
4023        </div>
4024        <div class="form__message hidden" tabindex="-1" autofocus>
4025          <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error " viewBox="0 0 13 13">
4026            <circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2"></circle>
4027            <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width="0.7"></circle>
4028            <path d="M5.87413 3.52832L5.97439 7.57216H7.02713L7.12739 3.52832H5.87413ZM6.50076 9.66091C6.88091 9.66091 7.18169 9.37267 7.18169 9.00504C7.18169 8.63742 6.88091 8.34917 6.50076 8.34917C6.12061 8.34917 5.81982 8.63742 5.81982 9.00504C5.81982 9.37267 6.12061 9.66091 6.50076 9.66091Z" fill="white"></path>
4029            <path d="M5.87413 3.17832H5.51535L5.52424 3.537L5.6245 7.58083L5.63296 7.92216H5.97439H7.02713H7.36856L7.37702 7.58083L7.47728 3.537L7.48617 3.17832H7.12739H5.87413ZM6.50076 10.0109C7.06121 10.0109 7.5317 9.57872 7.5317 9.00504C7.5317 8.43137 7.06121 7.99918 6.50076 7.99918C5.94031 7.99918 5.46982 8.43137 5.46982 9.00504C5.46982 9.57872 5.94031 10.0109 6.50076 10.0109Z" fill="white" stroke="#EB001B" stroke-width="0.7"></path>
4030          </svg>
4031          <div class="js-error-content"></div>
4032        </div>
4033      </discount-input>
4034      <br>
4035
4036      
4037      
4038        <div class="empty-vouchers_placeholder">目前無可用的優惠券</div>
4039      
4040
4041       <!-- For voucher widget -->
4042      
4042<script type="text/javascript">
4043        let settings = {"logo_use_image":"1","logo_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/5065445.png?width=350&format=webp","footer_logo_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/8174666.png?width=350&format=webp","nav_below_logo":"logo_top-center","logo_alignment":"center","left_aligned_logo":"0","favicon_enable":"1","favicon_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/7606122.png","header_message":"","header_search_enable":true,"topbar_sticky":"1","footer_quicklinks_enable":true,"footer_quicklinks_linklist":"footer","footer_social_enable":"1","footer_show_credit_card_logo":0,"footer_show_methods_of_payment":0,"footer_visa":0,"footer_master":0,"footer_american_express":0,"footer_jcb":0,"footer_diners_club":0,"footer_discover":0,"footer_ssl":0,"show_footer_lines":"1","home_section_1":"parallax-section","home_section_2":"highlight-section","home_section_3":"featured-product","home_section_4":"","home_section_5":"","home_section_6":"","home_section_7":"","featured_title":"","featured_1_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/12126156.jpg?width=650&format=webp","featured_1_text":"","featured_1_link_text":"","featured_1_link":"https:\/\/www.prosperwood.com\/pages\/%E7%94%A2%E5%93%81%E7%B4%B0%E7%AF%80","featured_2_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/12126167.jpg?width=650&format=webp","featured_2_text":"","featured_2_link_text":"","featured_2_link":"https:\/\/www.prosperwood.com\/pages\/%E7%94%A2%E5%93%81%E7%B4%B0%E7%AF%80","featured_3_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/12126168.jpg?width=650&format=webp","featured_3_text":"","featured_3_link_text":"","featured_3_link":"https:\/\/www.prosperwood.com\/pages\/%E7%94%A2%E5%93%81%E7%B4%B0%E7%AF%80","featured_4_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/12126169.jpg?width=650&format=webp","featured_4_text":"","featured_4_link_text":"","featured_4_link":"https:\/\/www.prosperwood.com\/pages\/%E7%94%A2%E5%93%81%E7%B4%B0%E7%AF%80","featured_5_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/13329659.jpeg?width=650&format=webp","featured_5_text":"","featured_5_link_text":"","featured_5_link":"https:\/\/www.prosperwood.com\/collections\/jimbo","featured_6_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/13329508.jpeg?width=650&format=webp","featured_6_text":"","featured_6_link_text":"","featured_6_link":"https:\/\/www.prosperwood.com\/collections\/jimbo","featured_7_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/7573281.png?width=650&format=webp","featured_7_text":"","featured_7_link_text":"","featured_7_link":"https:\/\/www.prosperwood.com\/collections\/bevel-risna-w-panasonic-socket","featured_8_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/13328541.jpeg?width=650&format=webp","featured_8_text":"","featured_8_link_text":"","featured_8_link":"https:\/\/www.prosperwood.com\/collections\/jimbo","parallax_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/16218110.png?width=1500&format=webp","parallax_mobile_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/16218110.png?width=900&format=webp","parallax_title":"","parallax_subtitle":"","parallax_button_text":"","parallax_button_link":"https:\/\/osmo.carytrad.com.tw\/","parallax_full_width":"1","slider_home_auto":"1","slider_home_show_dots":"1","slider_home_rate":"5000","slider_home_transition":"fade","slider_full_screen":"0","slide_1":"1","slide_1_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/12540501.jpg?width=1500&format=webp","slide_1_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10976344.jpg?width=900&format=webp","slide_1_link":"https:\/\/www.prosperwood.com\/collections\/%E7%82%AD%E9%BB%91-%E5%AF%A6%E6%9C%A8%E9%9D%A2%E6%9D%BF","slide_1_alt":"","slide_1_title":"","slide_1_subtitle":"","slide_1_button_text":"","slide_2":"1","slide_2_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219499.jpg?width=1500&format=webp","slide_2_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219148.jpg?width=900&format=webp","slide_2_link":"https:\/\/www.prosperwood.com\/collections\/arch-risna-h-panasonic","slide_2_alt":"","slide_2_title":"","slide_2_subtitle":"","slide_2_button_text":"","slide_3":"","slide_3_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219500.jpg?width=1500&format=webp","
4043slide_3_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219149.jpg?width=900&format=webp","slide_3_link":"https:\/\/www.prosperwood.com\/collections\/bevel","slide_3_alt":"","slide_3_title":"","slide_3_subtitle":"","slide_3_button_text":"","slide_4":"","slide_4_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219501.jpg?width=1500&format=webp","slide_4_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219151.jpg?width=900&format=webp","slide_4_link":"https:\/\/www.prosperwood.com\/collections\/bevel-glatima-h-panasonic","slide_4_alt":"","slide_4_title":"","slide_4_subtitle":"","slide_4_button_text":"","slide_5":"","slide_5_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219502.jpg?width=1500&format=webp","slide_5_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10219152.jpg?width=900&format=webp","slide_5_link":"https:\/\/www.prosperwood.com\/collections\/arch-rglatima-h-panasonic","slide_5_alt":"","slide_5_title":"","slide_5_subtitle":"","slide_5_button_text":"","slide_6":"","slide_6_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10976339.jpg?width=1500&format=webp","slide_6_mobile_jpg":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/10976341.jpg?width=900&format=webp","slide_6_link":"https:\/\/www.prosperwood.com\/collections\/bevel-risna-h-panasonic-socket\/products\/%E8%83%A1%E6%A1%83%E6%9C%A8-%E6%A2%A3%E6%9C%A8-%E5%85%A8%E5%AF%A6%E6%9C%A8%E5%B0%81%E5%8F%A3%E8%93%8B%E6%9D%BF-%E7%9B%B2%E8%93%8B-","slide_6_alt":"","slide_6_title":"","slide_6_subtitle":"","slide_6_button_text":"","testimonial_slide_img_crop":"1","testimonial_slide_1_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3915980.jpeg?width=1500&format=webp","testimonial_slide_1_title":"Aleksejs Bergmanis","testimonial_slide_1_content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non mattis dui, sit amet hendrerit nibh. Duis congue volutpat urna ut accumsan.","testimonial_slide_1_text_link":"Read more","testimonial_slide_1_link":"#","testimonial_slide_2_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3915981.jpeg?width=1500&format=webp","testimonial_slide_2_title":"Thiago Japyassu","testimonial_slide_2_content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non mattis dui, sit amet hendrerit nibh. Duis congue volutpat urna ut accumsan. Vivam mauris augue, ultrices at faucibus vitae, mattis eu lacus.","testimonial_slide_2_text_link":"Read more","testimonial_slide_2_link":"#","testimonial_slide_3_img":"","testimonial_slide_3_title":"","testimonial_slide_3_content":"","testimonial_slide_3_text_link":"","testimonial_slide_3_link":"","testimonial_slide_4_img":"","testimonial_slide_4_title":"","testimonial_slide_4_content":"","testimonial_slide_4_text_link":"","testimonial_slide_4_link":"","testimonial_slide_5_img":"","testimonial_slide_5_title":"","testimonial_slide_5_content":"","testimonial_slide_5_text_link":"","testimonial_slide_5_link":"","testimonial_slide_6_img":"","testimonial_slide_6_title":"","testimonial_slide_6_content":"","testimonial_slide_6_text_link":"","testimonial_slide_6_link":"","logo_list_on_footer":0,"logo_list_title":"","logo_list_1_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916892.png?width=350&format=webp","logo_list_1_link":"\/collections\/all","logo_list_2_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916893.png?width=350&format=webp","logo_list_2_link":"\/collections\/all","logo_list_3_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916894.png?width=350&format=webp","logo_list_3_link":"\/collections\/all","logo_list_4_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916895.png?width=350&format=webp","logo_list_4_link":"\/collections\/all","logo_list_5_img":"","logo_list_5_link":"\/collections\/all","logo_list_6_img":"","logo_list_6_link":"\/collections\/all","logo_list_7_img":"","logo_list_7_link":"\/collections\/all","logo_list_8_img":"","logo_list_8_link":"\/collections\/all","home_featured_products":"feature-on-homepage","home_featured_products_num":"20","home_featured_products_row_num":"7","home_featured_products_show_heading":"","home_page_content":"home","home_page_show_heading":"0","home_page_add_to_cart":true,"scroll_to_top_button":"on-right","product_quantity_enable":"1","product_image_zoom_type":"lightbox","product_thumbnails_position":"below","product_related_enable":true,"products_per_row":4,"products_list_per_row":"5","collection_products_list_per_row":"4","product_page_float_bt
4043n":"1","product_page_variants_tag":"1","featured_product_title":"Featured products","product_img_res":"grande","product_img_crop":"product_img-crop ratio_1-1_3","collections_show_sale_circle":"1","collections_show_sold_out_circle":"1","collections_sort_enable":true,"collections_tags_enable":"0","collections_products_per_row":"3","collections_rows":"6","footer_bar":0,"footer_bar_icon_product_page":"1","footer_bar_icon_1":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5590.png?width=150&format=webp","footer_bar_icon_1_text":"Home","footer_bar_icon_1_link":"\/","footer_bar_icon_2":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5591.png?width=150&format=webp","footer_bar_icon_2_text":"All products","footer_bar_icon_2_link":"\/collections\/all","footer_bar_icon_3":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5592.png?width=150&format=webp","footer_bar_icon_3_text":"Promotions","footer_bar_icon_3_link":"\/collections\/all","footer_bar_icon_4":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5593.png?width=150&format=webp","footer_bar_icon_4_text":"Account","footer_bar_icon_4_link":"\/account\/login","cart_enable_ajax":"1","social_sharing_products":"1","social_sharing_blog":"1","social_sharing_count":"1","share_facebook":"1","share_twitter":"1","share_line":"1","share_pinterest":"1","facebook_url":"https:\/\/www.facebook.com\/ProsperWood-%E7%9B%9B%E5%85%83%E6%9C%A8%E5%B7%A5-107645920982397","twitter_url":"","pinterest_url":"","instagram_url":"https:\/\/www.instagram.com\/prosper_wood\/","tumblr_url":"","youtube_url":"","vimeo_url":"","wechat_url":"","whatsapp_url":"","line_url":"https:\/\/lin.ee\/2VXlxUpAB","featured_blog":"","featured_blog_title":"Blog Post","articles_handle_1":"news\/\u65b0\u5e97\u958b\u5f35","articles_handle_2":"","articles_handle_3":"","video_section_id":"https:\/\/www.youtube.com\/watch?v=o-LMDW0dN9A","video_section_img":"https:\/\/cdn.store-assets.com\/s\/326197\/f\/4480409.jpeg?width=1500&format=webp","img_text_section_img":"https:\/\/cdn.store-assets.com\/s\/325951\/f\/4576482.jpeg?width=1200&format=webp","img_text_section_heading":"\u5be6\u6728\u958b\u95dc\u9762\u677f - \u80e1\u6843\u6728","img_text_section_text":"\u53ef\u9078\u914d - Panasonic GLATIMA \/ RISNA \/ DECO LITE \u661f\u5149 - \u7cfb\u5217","img_text_section_link_text":"SHOP NOW","img_text_section_url":"","img_text_section_class":"image-right","lazy_loader":"1","featured_single_product_handle":"\u5be6\u6728\u958b\u95dc\u9762\u677f-\u80e1\u6843\u6728","placeholder":{"featured-single-product":"https:\/\/s3-ap-southeast-1.amazonaws.com\/eesb.themes\/onboarding\/candy\/en_placeholder_featured-single-product.jpg","featured-blog":"https:\/\/s3-ap-southeast-1.amazonaws.com\/eesb.themes\/onboarding\/candy\/en_placeholder_featured-blog.jpg"},"use_original_image":0,"promotion_uis":{"primary_color":"#4089e4","header_bg_color":"#4089e4","header_text_color":"#fff","recommendation":{"is_show_product_page":true,"is_show_cart_page_top":true,"is_show_cart_page_bottom":true},"voucher_widget":{"primary_color":"#4089e4"}},"show_multiple_currencies":true,"supported_currencies":"TWD ","theme_id":3809,"theme_is_edited":1,"theme_updated_at":"2026-08-18T17:01:57.000Z","phone_account_enabled":false,"line_login_enabled":true,"apple_login_enabled":false,"timezone":"Asia\/Taipei","is_server_side_currency_conversion":true,"is_self_registration_enabled":true,"is_highlight_enabled":false,"is_auto_gen_highlight_enabled":false,"is_common_question_enabled":false,"is_auto_gen_common_question_enabled":false,"highlight_section_title":"Highlights","common_question_section_title":"Frequently asked questions","is_new_promotion_enabled":true}
4044        if (settings.promotion_uis.voucher_widget != null) {
4045          setVoucherTheme(settings.promotion_uis.voucher_widget)
4046        }
4047        var shop = {
4048          money_prefix: "",
4049          format_decimals: ""
4050        };
4051        var _getEntitlementTranslation = {
4052          "free_shipping": "免運費",
4053          "free_of_charge": "免費贈品",
4054        }
4055        var _getTargetTypeTranslation = {
4056          "amount_credit": " 回饋金",
4057          "amount_off": " 折扣",
4058        }
4059        var _getPrerequisiteTranslation = {
4060          "min_quantity": "至少購買 formatValue 件商品",
4061          "every_quantity": "每購買 formatValue 件商品",
4062          "min_amount": "最低消費 formatCurrency",
4063          "every_amount": "每消費 formatCurrency"
4064        }
4065        var _getPrerequisiteConditionTranslation = {
4066          "selected_items": "指定商品",
4067          "selected_collections": "指定分類",
4068          "storewide": "全店",
4069          "order_subtotal": "訂單金額"
4070        }
4071        var _getVoucherButtonTextTranslation = {
4072          "apply": "套用",
4073        }
4074        var _getVoucherErrorTranslation = {
4075          "condition_not_matched": "優惠代碼條件不匹配"
4076        }
4077      </script>
4077
4078
4079    </div>
4080  </div>
4081</vouchers-modal>
4082  
4083  <!--Start of Tawk.to Script-->
4084<script type="text/javascript">
4085var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
4086(function(){
4087var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
4088s1.async=true;
4089s1.src='https://embed.tawk.to/5f005dac223d045fcb7b4c45/default';
4090s1.charset='UTF-8';
4091s1.setAttribute('crossorigin','*');
4092s0.parentNode.insertBefore(s1,s0);
4093})();
4094</script>
4094
4095<!--End of Tawk.to Script-->
4096</body>
4097</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.