PageSourceSearch

https://wizfort.com/all-products

html wizfort.com collected 2026-09-27 13:40:18 UTC 97,889 bytes, 2,592 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="en-US">
5<head>
6	<meta charset="utf-8">
7	<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
8	<meta name="generator" content="frappe">
9
10	
11		<meta name="title" content="All Products - Wizfort"><meta name="description" content="Browse all Wizfort products. Premium leather footwear with exceptional style and comfort. Free standard shipping for retail orders."><meta name="image" content="https://wizfort.com/files/wizfort-og.png"><meta property="og:type"  content="website"><meta property="og:url"  content="https://wizfort.com/all-products"><meta name="language" content="en-US"><meta property="og:title"  content="All Products - Wizfort"><meta property="og:description"  content="Browse all Wizfort products. Premium leather footwear with exceptional style and comfort. Free standard shipping for retail orders."><meta property="og:image"  content="https://wizfort.com/files/wizfort-og.png"><meta name="twitter:title" content="All Products - Wizfort"><meta name="twitter:description" content="Browse all Wizfort products. Premium leather footwear with exceptional style and comfort. Free standard shipping for retail orders."><meta name="twitter:image" content="https://wizfort.com/files/wizfort-og.png"><meta name="twitter:card" content="summary_large_image"><meta property="og:site_name"  content="Wizfort"><meta property="og:locale"  content="en_US"><meta property="og:image:alt"  content="All Products - Wizfort"><meta property="og:image:width"  content="1200"><meta property="og:image:height"  content="630">
12	
13
14	<title>All Products - Wizfort</title>
15
16	
17	<link rel="icon" type="image/png" href="/files/cslshoes89cb70.png">
18	<link rel="apple-touch-icon" href="/files/cslshoes89cb70.png">
19<link type="text/css" rel="stylesheet" href="/assets/frappe/dist/css/website.bundle.GD6PKXQI.css">
20<link type="text/css" rel="stylesheet" href="/assets/erpnext/dist/css/erpnext-web.bundle.XAPV6OJR.css">
21<link type="text/css" rel="stylesheet" href="/assets/webshop/dist/css/webshop-web.bundle.GQDT63VG.css">
22<link type="text/css" rel="stylesheet" href="/assets/cslshoes_erp/css/csl_design_tokens.css?v=20260613a">
23<link type="text/css" rel="stylesheet" href="/assets/cslshoes_erp/css/webshop_filters.css?v=4b435436">
24<link type="text/css" rel="stylesheet" href="/assets/cslshoes_erp/css/csl_custom.css?v=20260517a">
25<link type="text/css" rel="stylesheet" href="/assets/blog/css/blog.scss">
26
27
28	
29	
30	<!-- CSL web analytics (GA4) — deferred loader (A3 2026-06-03) -->
31<script>
32  window.dataLayer = window.dataLayer || [];
33  function gtag(){dataLayer.push(arguments);}
34  gtag('consent', 'default', {'ad_storage':'granted','ad_user_data':'granted','ad_personalization':'granted','analytics_storage':'granted'});
35  gtag('consent', 'default', {'ad_storage':'denied','ad_user_data':'denied','ad_personalization':'denied','analytics_storage':'denied','region':["AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL", "PL", "PT", "RO", "SK", "SI", "ES", "SE", "IS", "LI", "NO", "GB"]});
36  gtag('js', new Date());
37  gtag('config', 'G-WJ5VB6BGCD');
38  // A3 2026-06-03: defer the gtag.js loader off the critical render path.
39  // dataLayer calls above queue; gtag.js drains them on load (interaction,
40  // or idle-after-load, or an 8s safety net) so pageview/consent/config still fire.
41  (function(){
42    var loaded=false;
43    function loadGA(){ if(loaded){return;} loaded=true;
44      var s=document.createElement("script"); s.async=true;
45      s.src="https://www.googletagmanager.com/gtag/js?id=G-WJ5VB6BGCD";
46      (document.head||document.documentElement).appendChild(s);
47    }
48    ["pointerdown","keydown","scroll","touchstart"].forEach(function(e){ window.addEventListener(e, loadGA, {once:true, passive:true}); });
49    function schedule(){ if("requestIdleCallback" in window){ requestIdleCallback(loadGA,{timeout:3500}); } else { setTimeout(loadGA,2500); } }
50    if(document.readyState==="complete"){ schedule(); } else { window.addEventListener("load", schedule); }
51    setTimeout(loadGA, 8000);
52  })();
53</script>
53
54
55	<style>a,button,[role="button"],input,select,textarea{touch-action:manipulation}</style>
56	<link rel="preload" as="font" type="font/woff2" href="/assets/cslshoes_erp/fonts/InterVariable-Latin.woff2" crossorigin>
57	
58	
59	<meta property="fb:app_id" content="806042942283128">
60	<link rel="alternate" type="application/rss+xml" title="Wizfort Blog" href="/rss">
61	
61<script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "Wizfort", "url": "https://wizfort.com", "logo": "https://wizfort.com/files/wizfort-og.png", "image": "https://wizfort.com/files/wizfort-og.png", "address": {"@type": "PostalAddress", "streetAddress": "3 Alpine Court, Unit W156", "addressLocality": "Chestnut Ridge", "addressRegion": "NY", "postalCode": "10977", "addressCountry": "US"}, "contactPoint": {"@type": "ContactPoint", "telephone": "+1-845-694-6700", "contactType": "customer service", "availableLanguage": ["English"]}, "openingHoursSpecification": [{"@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"], "opens": "09:00", "closes": "18:00"}, {"@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "10:00", "closes": "16:00"}]}</script>
61
62	
62<script type="application/ld+json">{"@context": "https://schema.org", "@type": "WebSite", "name": "Wizfort", "url": "https://wizfort.com", "potentialAction": {"@type": "SearchAction", "target": {"@type": "EntryPoint", "urlTemplate": "https://wizfort.com/all-products?search={search_term_string}"}, "query-input": "required name=search_term_string"}}</script>
62
63
64<style>
65:root {
66  --primary: #1a1a1a;
67  --accent: #c9a227;
68  --success: #22c55e;
69  --danger: #ef4444;
70  --gray-50: #f9fafb;
71  --gray-100: #f3f4f6;
72  --gray-200: #e5e7eb;
73  --gray-300: #d1d5db;
74  --gray-400: #9ca3af;
75  --gray-500: #6b7280;
76  --gray-600: #4b5563;
77  --gray-700: #374151;
78  --gray-800: #1f2937;
79  --gray-900: #111827;
80  --white: #ffffff;
81}
82
83
84</style>
85
86
87
88<link rel="canonical" href="https://wizfort.com/all-products">
89
90
91<script type="application/ld+json">{"@context": "https://schema.org", "@type": "ItemList", "name": "All Products - Wizfort", "numberOfItems": 23, "itemListElement": [{"@type": "ListItem", "position": 1, "url": "https://wizfort.com/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-s8svh", "name": "Wizfort Men's Leather Sole Bicycle Toe Oxford - Black"}, {"@type": "ListItem", "position": 2, "url": "https://wizfort.com/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-jlpbi", "name": "Wizfort Men's Leather Sole Bicycle Toe Loafer - Black"}, {"@type": "ListItem", "position": 3, "url": "https://wizfort.com/products/wizfort-classics-mens-leather-sole-moc-toe-lace-up-ggqjf", "name": "Wizfort Men's Leather Sole Moc Toe Oxford - Black"}, {"@type": "ListItem", "position": 4, "url": "https://wizfort.com/products/wizfort-classics-mens-leather-sole-moc-toe-slip-on-3oiaf", "name": "Wizfort Men's Leather Sole Moc Toe Loafer - Black"}, {"@type": "ListItem", "position": 5, "url": "https://wizfort.com/products/wizfort-mens-bicycle-toe-lace-up-q6rsr", "name": "Wizfort Men's Leather Bicycle Toe Oxford - Black"}, {"@type": "ListItem", "position": 6, "url": "https://wizfort.com/products/wizfort-mens-bicycle-toe-loafer-r8vij", "name": "Wizfort Men's Leather Bicycle Toe Loafer - Black"}, {"@type": "ListItem", "position": 7, "url": "https://wizfort.com/products/wizfort-mens-cap-toe-oxford-shoe-3dhdj", "name": "Wizfort Men's Leather Cap Toe Oxford - Black"}, {"@type": "ListItem", "position": 8, "url": "https://wizfort.com/products/wizfort-mens-lightweight-bicycle-toe-lace-up-ul7ri", "name": "Wizfort Men's Leather Lightweight Bicycle Toe Oxford - Black"}, {"@type": "ListItem", "position": 9, "url": "https://wizfort.com/products/wizfort-mens-lightweight-bicycle-toe-loafer-njyyt", "name": "Wizfort Men's Leather Lightweight Bicycle Toe Loafer - Black"}, {"@type": "ListItem", "position": 10, "url": "https://wizfort.com/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-tlofo", "name": "Wizfort Men's Leather Lightweight Moc Toe Oxford - Black"}, {"@type": "ListItem", "position": 11, "url": "https://wizfort.com/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-gpvip", "name": "Wizfort Men's Leather Lightweight Moc Toe Loafer - Black"}, {"@type": "ListItem", "position": 12, "url": "https://wizfort.com/products/wizfort-mens-lightweight-plain-toe-chassidic-loafer-r6fuh", "name": "Wizfort Men's Leather Lightweight Chassidic Loafer - Black"}, {"@type": "ListItem", "position": 13, "url": "https://wizfort.com/products/wizfort-mens-moc-toe-lace-up-shoe-3pouw", "name": "Wizfort Men's Leather Moc Toe Oxford - Black"}, {"@type": "ListItem", "position": 14, "url": "https://wizfort.com/products/wizfort-mens-moc-toe-loafer-daoss", "name": "Wizfort Men's Leather Moc Toe Loafer - Black"}, {"@type": "ListItem", "position": 15, "url": "https://wizfort.com/products/wizfort-mens-plain-toe-chassidic-loafer-loha7", "name": "Wizfort Men's Leather Plain Toe Chassidic Loafer - Black"}, {"@type": "ListItem", "position": 16, "url": "https://wizfort.com/products/wizfort-mens-plain-toe-lace-up-shoe-miqkc", "name": "Wizfort Men's Leather Plain Toe Oxford - Black"}, {"@type": "ListItem", "position": 17, "url": "https://wizfort.com/products/wizfort-mens-plain-toe-loafer-pezi6", "name": "Wizfort Men's Leather Plain Toe Loafer - Black"}, {"@type": "ListItem", "position": 18, "url": "https://wizfort.com/products/wizfort-mens-plain-toe-traditional-loafer-656", "name": "Wizfort Men's Leather Plain Toe Traditional Loafer - Black"}, {"@type": "ListItem", "position": 19, "url": "https://wizfort.com/products/wizfort-prestige-comfortable-leather-sole-chassidic-loafer-ib58c", "name": "Wizfort Men's Premium Leather Sole Chassidic Loafer - Black"}, {"@type": "ListItem", "position": 20, "url": "https://wizfort.com/products/wizfort-prestige-leather-sole-bicycle-toe-lace-up-shoe-for-men-bgki4", "name": "Wizfort Men's Premium Leather Sole Bicycle Toe Oxford - Black"}, {"@type": "ListItem", "position": 21, "url": "https://wizfort.com/products/wizfort-prestige-leather-sole-bicycle-toe-loafer-for-men-f9xq5", "name": "Wizfort Men's Premium Leather Sole Bicycle Toe Loafer - Black"}, {"@type": "ListItem", "position": 22, "url": "https://wizfort.com/products/wizfort-prestige-leather-sole-moc-toe-loafer-for-men-jivbk", "name": "Wizfort Men's Premium Leather Sole Moc Toe Loafer - Black"}, {"@type": "ListItem", "position": 23, "url": "https://wizfort.com/products/wizfort-prestige-mens-moc-toe-lace-up-8svvp", "name": "Wizfort Men's Premium Leather Sole Moc Toe Oxford - Black"}]}</script>
91
92
93
94<script type="application/ld+json">{"@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://wizfort.com/"}, {"@type": "ListItem", "position": 2, "name": "All Products"}]}</script>
94
95
96<style>
97/* A2 (2026-06-02): reserve vertical space for the JS-injected product grid so the
98   footer does not reflow when webshop product_ui fills the server-empty
99   #product-listing. Fixes /all-products mobile CLS (consistently 0.326 — 11/12
100   runs). The full catalog grid always exceeds 100vh, so this only holds space
101   during JS hydration; it is a no-op once the (taller) grid renders. */
102#product-listing { min-height: 100vh; }
103</style>
104
105		
106
107	
107<script>
108		window.frappe = {};
109		frappe.ready_events = [];
110		frappe.ready = function(fn) {
111			frappe.ready_events.push(fn);
112		}
113		window.dev_server = 0;
114		window.socketio_port = 9000;
115		window.show_language_picker = false;
116	</script>
116
117</head>
118<body frappe-session-status="logged-out" data-path="all-products" class="product-page">
119	
120	<svg id="csl-icons" aria-hidden="true" style="position:absolute;width:0;height:0;overflow:hidden" xmlns="http://www.w3.org/2000/svg">
121	<symbol viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" id="icon-assets">
122		<path d="M3 6h17" stroke="var(--icon-stroke)" stroke-miterlimit="10"></path>
123		<path d="M20 19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6l3.4-3h10.2L20 6v13z" stroke="var(--icon-stroke)" stroke-miterlimit="10" stroke-linecap="square" stroke-linejoin="round"></path>
124		<path d="M15.582 10c0 2.29-1.8 4.09-4.091 4.09A4.051 4.051 0 0 1 7.4 10" stroke="var(--icon-stroke)" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"></path>
125		<circle cx="15.6" cy="10" r=".5" stroke="var(--icon-stroke)"></circle>
126		<circle cx="7.3" cy="10" r=".5" stroke="var(--icon-stroke)"></circle>
127	</symbol>
128	<symbol id="icon-delete" viewBox="0 0 32 32" fill="none">
129		<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M7 7v18.118c0 2.145 1.492 3.882 3.333 3.882h11.333c1.842 0 3.333-1.737 3.333-3.882v-18.118"></path>
130		<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M5 7h22"></path>
131		<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M10 7v-1c0-1.657 1.343-3 3-3h6c1.657 0 3 1.343 3 3v1"></path>
132		<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M18.8 14.4v8.571"></path>
133		<path stroke-linejoin="round" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M13.2 14.4v8.571"></path>
134	</symbol>
135	<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-down">
136		<path d="M3 5.5l5 5 5-5" stroke="var(--icon-stroke)" stroke-linecap="round" stroke-linejoin="round"></path>
137	</symbol>
138	<symbol viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" id="icon-edit">
139		<path fill-rule="evenodd" clip-rule="evenodd" d="M10.6262 2.70711C11.0168 2.31658 11.6499 2.31658 12.0404 2.70711L13.2929 3.95956C13.6834 4.35008 13.6834 4.98325 13.2929 5.37377L6 12.6667L2 14L3.33333 10L10.6262 2.70711Z" stroke="var(--icon-stroke)" stroke-linecap="round" stroke-linejoin="round"/>
140		<line x1="9.79157" y1="3.92744" x2="12.0738" y2="6.2097" stroke="var(--icon-stroke)"/>
141	</symbol>
142	<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-heart">
143		<path d="M7.606 3.799L8 4.302l.394-.503.106-.14c.048-.065.08-.108.129-.159a3.284 3.284 0 0 1 4.72 0c.424.434.655 1.245.65 2.278-.006 1.578-.685 2.931-1.728 4.159-1.05 1.234-2.439 2.308-3.814 3.328a.763.763 0 0 1-.914 0c-1.375-1.02-2.764-2.094-3.814-3.328C2.686 8.709 2.007 7.357 2 5.778c-.004-1.033.227-1.844.651-2.278a3.284 3.284 0 0 1 4.72 0c.05.05.081.094.129.158.028.038.061.083.106.14z"
144		stroke="var(--icon-stroke)"></path>
145	</symbol>
146	<symbol viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" id="icon-star">
147		<path d="M11.5516 2.90849C11.735 2.53687 12.265 2.53687 12.4484 2.90849L14.8226 7.71919C14.8954 7.86677 15.0362 7.96905 15.1991 7.99271L20.508 8.76415C20.9181 8.82374 21.0818 9.32772 20.7851 9.61699L16.9435 13.3616C16.8257 13.4765 16.7719 13.642 16.7997 13.8042L17.7066 19.0916C17.7766 19.5001 17.3479 19.8116 16.9811 19.6187L12.2327 17.1223C12.087 17.0457 11.913 17.0457 11.7673 17.1223L7.01888 19.6187C6.65207 19.8116 6.22335 19.5001 6.29341 19.0916L7.20028 13.8042C7.2281 13.642 7.17433 13.4765 7.05648 13.3616L3.21491 9.61699C2.91815 9.32772 3.08191 8.82374 3.49202 8.76415L8.80094 7.99271C8.9638 7.96905 9.10458 7.86677 9.17741 7.71919L11.5516 2.90849Z" fill="var(--star-fill)" stroke="var(--star-fill)"/>
148	</symbol>
149	<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-tag">
150		<path d="M12.6401 10.2571L10.107 12.7901C9.52125 13.3759 8.5718 13.3756 7.98601 12.7898L2.49654 7.30037C2.40278 7.2066 2.3501 7.07942 2.3501 6.94682L2.3501 3C2.3501 2.72386 2.57396 2.5 2.8501 2.5L6.79691 2.5C6.92952 2.5 7.0567 2.55268 7.15047 2.64645L12.6399 8.13591C13.2257 8.7217 13.2259 9.67131 12.6401 10.2571Z" stroke="var(--icon-stroke)" stroke-linecap="round" stroke-linejoin="round"/>
151		<path d="M6.08001 5.46157C6.08001 5.88642 5.7356 6.23082 5.31076 6.23082C4.88591 6.23082 4.5415 5.88642 4.5415 5.46157C4.5415 5.03673 4.88591 4.69232 5.31076 4.69232C5.7356 4.69232 6.08001 5.03673 6.08001 5.46157Z" stroke="var(--icon-stroke)" stroke-linecap="round" stroke-linejoin="round"/>
152	</symbol>
153	<!-- icon-list and icon-image-view: copied from apps/frappe/frappe/public/icons/timeless/icons.svg
154	     for the /all-products toolbar view-toggle. Keep in sync on Frappe upgrades (ERP-025). -->
155	<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-list">
156		<path fill-rule="evenodd" clip-rule="evenodd" d="M2.667 3.25a.75.75 0 0 0 0 1.5h.007a.75.75 0 0 0 0-1.5h-.007zm2.666.25a.5.5 0 0 0 0 1H14a.5.5 0 0 0 0-1H5.333zm0 4a.5.5 0 0 0 0 1H14a.5.5 0 0 0 0-1H5.333zm-.5 4.5a.5.5 0 0 1 .5-.5H14a.5.5 0 0 1 0 1H5.333a.5.5 0 0 1-.5-.5zM1.917 8a.75.75 0 0 1 .75-.75h.007a.75.75 0 0 1 0 1.5h-.007a.75.75 0 0 1-.75-.75zm.75 3.25a.75.75 0 0 0 0 1.5h.007a.75.75 0 0 0 0-1.5h-.007z"
157		fill="var(--icon-stroke)" stroke-width="0"></path>
158	</symbol>
159	<symbol viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" id="icon-image-view">
160		<path d="M2.5 3.5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h-3a1 1 0 0 1-1-1v-2zm0 7a1 1 0 0 1 1-1h3v3a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-2zm7-7a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3v-3zm0 6h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3z"></path>
161	</symbol>
162</svg>
163	<a href="#main-content" class="skip-to-content" style="position:absolute;top:-40px;left:0;background:#1a1a1a;color:#fff;padding:8px 16px;z-index:10001;font-size:14px;text-decoration:none;transition:top 0.2s;" onfocus="this.style.top='0'" onblur="this.style.top='-40px'">Skip to main content</a>
164
165		
166
167
168<style>
169/* CSL Header Styles - Inline to avoid CSS conflicts with Frappe */
170:root {
171  --csl-white: #ffffff;
172  --csl-gray-50: #f9fafb;
173  --csl-gray-100: #f3f4f6;
174  --csl-gray-200: #e5e7eb;
175  --csl-gray-300: #d1d5db;
176  --csl-gray-400: #9ca3af;
177  --csl-gray-500: #6b7280;
178  --csl-gray-600: #4b5563;
179  --csl-gray-700: #374151;
180  --csl-gray-800: #1f2937;
181  --csl-gray-900: #111827;
182  --csl-black: #000000;
183  --csl-danger: #ef4444;
184}
185
186/* Hide default Frappe navbar */
187.navbar.navbar-expand-lg, .web-footer { display: none !important; }
188
189/* Top Bar */
190.csl-top-bar {
191  background: var(--csl-gray-900);
192  color: var(--csl-white);
193  padding: 8px 0;
194  font-size: 12px;
195}
196.csl-top-bar-content {
197  max-width: 1400px;
198  margin: 0 auto;
199  padding: 0 20px;
200  display: flex;
201  justify-content: space-between;
202  align-items: center;
203}
204.csl-top-bar-message { font-weight: 500; }
205.csl-top-bar-links { display: flex; gap: 20px; align-items: center; }
206.csl-top-bar-links a { color: var(--csl-white); text-decoration: none; }
207.csl-top-bar-links a:hover { text-decoration: underline; }
208.csl-top-bar-phone { display: flex; align-items: center; gap: 5px; font-weight: 600; }
209.csl-top-bar-phone svg { flex-shrink: 0; }
210
211/* Header */
212.csl-header {
213  background: var(--csl-white);
214  border-bottom: 1px solid var(--csl-gray-200);
215  padding: 16px 0;
216  position: sticky;
217  top: 0;
218  z-index: 1000;
219}
220.csl-header-inner {
221  max-width: 1400px;
222  margin: 0 auto;
223  padding: 0 20px;
224  display: flex;
225  align-items: center;
226  justify-content: space-between;
227  gap: 40px;
228  position: relative;
229  z-index: 100;
230}
231.csl-header-inner * {
232  pointer-events: auto;
233}
234.csl-logo {
235  font-size: 24px;
236  font-weight: 700;
237  color: var(--csl-black);
238  text-decoration: none;
239}
240.csl-nav {
241  display: flex;
242  align-items: center;
243  gap: 32px;
244}
245.csl-nav a {
246  font-size: 14px;
247  font-weight: 500;
248  color: var(--csl-gray-700);
249  text-decoration: none;
250  transition: color 0.2s;
251}
252.csl-nav a:hover { color: var(--csl-black); }
253.csl-nav-dropdown { position: relative; }
254.csl-nav-dropdown > a {
255  display: flex;
256  align-items: center;
257  gap: 4px;
258}
259.csl-nav-dropdown > a svg {
260  width: 12px;
261  height: 12px;
262  stroke: currentColor;
263  stroke-width: 2;
264  fill: none;
265  transition: transform 0.2s;
266}
267.csl-nav-dropdown:hover > a svg { transform: rotate(180deg); }
268.csl-dropdown-menu {
269  position: absolute;
270  top: 100%;
271  left: 50%;
272  transform: translateX(-50%);
273  background: var(--csl-white);
274  border: 1px solid var(--csl-gray-200);
275  border-radius: 8px;
276  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
277  min-width: 180px;
278  padding: 8px 0;
279  opacity: 0;
280  visibility: hidden;
281  transition: all 0.2s ease;
282  z-index: 1001;
283  margin-top: 8px;
284}
285.csl-nav-dropdown:hover .csl-dropdown-menu {
286  opacity: 1;
287  visibility: visible;
288}
289.csl-dropdown-menu a {
290  display: block;
291  padding: 10px 16px;
292  font-size: 14px;
293  color: var(--csl-gray-700);
294  transition: all 0.15s;
295}
296.csl-dropdown-menu a:hover {
297  background: var(--csl-gray-50);
298  color: var(--csl-black);
299}
300/* ERP-101: account icon dropdown (My Account + Sign Out). Right-aligned so it
301   doesn't overflow the viewport edge; reuses .csl-dropdown-menu base styling. */
302.csl-account-dropdown { position: relative; display: inline-flex; align-items: center; }
303.csl-account-menu { left: auto; right: 0; transform: none; min-width: 160px; }
304.csl-account-dropdown:hover .csl-account-menu { opacity: 1; visibility: visible; }
305
306/* Header Actions */
307.csl-header-actions {
308  display: flex;
309  align-items: center;
310  gap: 20px;
311  pointer-events: auto;
312  position: relative;
313  z-index: 50;
314}
315.csl-search-box {
316  display: flex !important;
317  align-items: center;
318  background: var(--csl-gray-100);
319  border: 1px solid var(--csl-gray-200);
320  border-radius: 6px;
321  padding: 8px 12px;
322  width: 280px;
323  position: relative;
324  cursor: text;
325  z-index: 100;
326  pointer-events: auto !important;
327}
328.csl-search-box input {
329  border: none !important;
330  background: transparent !important;
331  outline: none !important;
332  font-size: 14px;
333  width: 100%;
334  margin-left: 8px;
335  cursor: text !important;
336  color: var(--csl-gray-900);
337  pointer-events: auto !important;
338  position: relative;
339  z-index: 10;
340  display: block !important;
341  visibility: visible !important;
342  opacity: 1 !important;
343}
344.csl-search-box input::placeholder { color: var(--csl-gray-500); }
345#csl-search-input {
346  display: block !important;
347  visibility: visible !important;
348  opacity: 1 !important;
349  pointer-events: auto !important;
350  position: relative !important;
351  z-index: 10 !important;
352  -webkit-user-select: text !important;
353  user-select: text !important;
354  cursor: text !important;
355}
356.csl-search-box:focus-within {
357  border-color: var(--csl-gray-400);
358  box-shadow: 0 0 0 2px rgba(0,0,0,0.05);
359}
360.csl-search-box svg {
361  width: 20px;
362  height: 20px;
363  stroke: var(--csl-gray-500);
364  stroke-width: 1.5;
365  fill: none;
366  pointer-events: none;
367  flex-shrink: 0;
368}
369.csl-search-results {
370  position: absolute;
371  top: 100%;
372  left: 0;
373  right: 0;
374  background: var(--csl-white);
375  border: 1px solid var(--csl-gray-200);
376  border-radius: 8px;
377  box-shadow: 0 8px 24px rgba(0,0,0,0.12);
378  margin-top: 4px;
379  max-height: 400px;
380  overflow-y: auto;
381  display: none;
382  z-index: 1002;
383}
384.csl-search-results.active { display: block; }
385.csl-search-result-item {
386  display: flex;
387  align-items: center;
388  gap: 12px;
389  padding: 10px 12px;
390  text-decoration: none;
391  color: var(--csl-gray-800);
392  transition: background 0.15s;
393}
394.csl-search-result-item:hover { background: var(--csl-gray-50); }
395.csl-search-result-item img {
396  width: 50px;
397  height: 50px;
398  object-fit: contain;
399  background: var(--csl-gray-100);
400  border-radius: 4px;
401}
402.csl-search-result-name {
403  font-size: 14px;
404  font-weight: 500;
405  margin: 0;
406  display: block;
407}
408.csl-search-result-info p {
409  font-size: 12px;
410  color: var(--csl-gray-500);
411  margin: 2px 0 0 0;
412}
413.csl-search-no-results {
414  padding: 20px;
415  text-align: center;
416  color: var(--csl-gray-500);
417}
418
419/* Header Icons */
420.csl-header-icon {
421  width: 20px;
422  height: 20px;
423  stroke: var(--csl-gray-500);
424  stroke-width: 1.5;
425  fill: none;
426  cursor: pointer;
427  transition: stroke 0.2s;
428}
429.csl-header-icon:hover { stroke: var(--csl-black); }
430.csl-header-icon-link {
431  display: flex;
432  align-items: center;
433  justify-content: center;
434  text-decoration: none;
435}
436.csl-cart-icon, .csl-wishlist-icon { position: relative; }
437.csl-cart-count, .csl-wishlist-count {
438  position: absolute;
439  top: -6px;
440  right: -6px;
441  background: var(--csl-black);
442  color: var(--csl-white);
443  font-size: 10px;
444  font-weight: 600;
445  min-width: 18px;
446  height: 18px;
447  border-radius: 50%;
448  display: flex;
449  align-items: center;
450  justify-content: center;
451}
452.csl-wishlist-count { background: var(--csl-danger); display: none; }
453
454/* Mobile Menu Toggle */
455.csl-mobile-menu-toggle {
456  display: none;
457  width: 40px;
458  height: 40px;
459  background: none;
460  border: 1px solid var(--csl-gray-300);
461  border-radius: 8px;
462  cursor: pointer;
463  align-items: center;
464  justify-content: center;
465}
466.csl-mobile-menu-toggle svg {
467  width: 24px;
468  height: 24px;
469  stroke: var(--csl-gray-700);
470  stroke-width: 2;
471  fill: none;
472}
473
474/* Mobile Navigation - Hidden by default */
475.csl-mobile-nav {
476  display: none !important;
477  position: fixed;
478  top: 0;
479  left: 0;
480  right: 0;
481  bottom: 0;
482  background: var(--csl-white);
483  z-index: 9999;
484  padding: 20px;
485  flex-direction: column;
486  overflow-y: auto;
487}
488.csl-mobile-nav.active { display: flex !important; }
489.csl-mobile-nav-header {
490  display: flex;
491  justify-content: space-between;
492  align-items: center;
493  margin-bottom: 24px;
494  padding-bottom: 16px;
495  border-bottom: 1px solid var(--csl-gray-200);
496}
497.csl-mobile-nav-close {
498  width: 40px;
499  height: 40px;
500  background: none;
501  border: none;
502  cursor: pointer;
503  display: flex;
504  align-items: center;
505  justify-content: center;
506}
507.csl-mobile-nav-close svg {
508  width: 24px;
509  height: 24px;
510  stroke: var(--csl-gray-700);
511  stroke-width: 2;
512  fill: none;
513}
514.csl-mobile-nav-links {
515  display: flex;
516  flex-direction: column;
517}
518.csl-mobile-nav-links a {
519  padding: 16px 0;
520  font-size: 18px;
521  font-weight: 500;
522  color: var(--csl-gray-800);
523  text-decoration: none;
524  border-bottom: 1px solid var(--csl-gray-100);
525}
526.csl-mobile-search {
527  margin-bottom: 16px;
528  padding: 12px 16px;
529  background: var(--csl-gray-100);
530  border: 1px solid var(--csl-gray-200);
531  border-radius: 8px;
532  font-size: 16px;
533  width: 100%;
534}
535
536/* Size Guide Link */
537.csl-size-guide-link {
538  display: flex;
539  align-items: center;
540  gap: 4px;
541  font-size: 13px;
542  color: var(--csl-gray-600);
543  text-decoration: none;
544}
545.csl-size-guide-link:hover { color: var(--csl-black); }
546.csl-size-guide-link svg {
547  width: 16px;
548  height: 16px;
549  stroke: currentColor;
550  stroke-width: 1.5;
551  fill: none;
552}
553
554/* Responsive */
555@media (max-width: 1024px) {
556  .csl-search-box { width: 200px; }
557}
558@media (max-width: 768px) {
559  .csl-top-bar { padding: 6px 0; }
560  .csl-top-bar-links { display: none; }
561  .csl-top-bar-message { font-size: 11px; text-align: center; width: 100%; }
562  .csl-header { padding: 12px 0; }
563  .csl-header-inner { gap: 12px; }
564  .csl-logo { font-size: 20px; flex-shrink: 0; max-width: 45vw; }
565  .csl-logo img { height: 24px; width: auto; }
566  .csl-nav, .csl-search-box, .csl-size-guide-link { display: none; }
567  .csl-mobile-menu-toggle { display: flex; }
568  .csl-mobile-search-toggle { display: flex; }
569  .csl-header-actions { gap: 12px; }
570  .csl-header-icon { width: 18px; height: 18px; }
571  .csl-cart-count, .csl-wishlist-count { width: 16px; height: 16px; font-size: 9px; top: -4px; right: -4px; }
572}
573/* Mobile Search Overlay */
574.csl-mobile-search-toggle {
575  display: none;
576  width: 44px;
577  height: 44px;
578  background: none;
579  border: none;
580  cursor: pointer;
581  align-items: center;
582  justify-content: center;
583  padding: 0;
584}
585.csl-mobile-search-toggle svg {
586  width: 20px;
587  height: 20px;
588  stroke: var(--csl-gray-700);
589  stroke-width: 2;
590  fill: none;
591}
592.csl-mobile-search-overlay {
593  display: none;
594  position: fixed;
595  top: 0;
596  left: 0;
597  right: 0;
598  z-index: 10000;
599  background: var(--csl-white);
600  padding: 12px 16px;
601  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
602}
603.csl-mobile-search-overlay.active { display: flex; gap: 8px; align-items: center; }
604.csl-mobile-search-overlay input {
605  flex: 1;
606  padding: 12px 16px;
607  font-size: 16px;
608  border: 1px solid var(--csl-gray-300);
609  border-radius: 8px;
610  outline: none;
611}
612.csl-mobile-search-overlay input:focus { border-color: var(--csl-black); }
613.csl-mobile-search-overlay .csl-mobile-search-close {
614  width: 44px;
615  height: 44px;
616  background: none;
617  border: none;
618  cursor: pointer;
619  display: flex;
620  align-items: center;
621  justify-content: center;
622}
623.csl-mobile-search-overlay .csl-mobile-search-close svg {
624  width: 24px;
625  height: 24px;
626  stroke: var(--csl-gray-600);
627  stroke-width: 2;
628  fill: none;
629}
630.csl-mobile-search-overlay .csl-search-results {
631  position: absolute;
632  top: 100%;
633  left: 0;
634  right: 0;
635  background: var(--csl-white);
636  max-height: 60vh;
637  overflow-y: auto;
638  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
639}
640</style>
641
642<!-- Mobile Navigation (hidden by default, shown on mobile menu click) -->
643<div class="csl-mobile-nav" id="csl-mobile-nav" data-nosnippet>
644  <div class="csl-mobile-nav-header">
645    <span class="csl-logo">CSL Shoes</span>
646    <button class="csl-mobile-nav-close" onclick="cslCloseMobileNav()" aria-label="Close menu">
647      <svg viewBox="0 0 24 24" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
648    </button>
649  </div>
650  <input type="text" class="csl-mobile-search" placeholder="Search shoes..." id="csl-mobile-search-input" aria-label="Search products">
651  <div class="csl-mobile-nav-links">
652    
653      
654        
655      
656        
657          <a href="/shoes/oxfords" onclick="cslCloseMobileNav()">Oxfords</a>
658        
659      
660        
661          <a href="/shoes/loafers" onclick="cslCloseMobileNav()">Loafers</a>
662        
663      
664        
665          <a href="/shoes/slip-ons" onclick="cslCloseMobileNav()">Slip-Ons</a>
666        
667      
668        
669          <a href="/shoes/wide-width" onclick="cslCloseMobileNav()">Wide Width</a>
670        
671      
672        
673          <a href="/shoes/boys-dress-shoes" onclick="cslCloseMobileNav()">Boys' Shoes</a>
674        
675      
676        
677          <a href="/all-products" onclick="cslCloseMobileNav()">All Products</a>
678        
679      
680        
681      
682        
683          <a href="/brands/wizfort" onclick="cslCloseMobileNav()">Wizfort</a>
684        
685      
686        
687          <a href="/brands/esse-comfort" onclick="cslCloseMobileNav()">Esse Comfort</a>
688        
689      
690        
691          <a href="/brands/benelaccio" onclick="cslCloseMobileNav()">Benelaccio</a>
692        
693      
694        
695          <a href="/blog" onclick="cslCloseMobileNav()">Blog</a>
696        
697      
698        
699          <a href="/about" onclick="cslCloseMobileNav()">About</a>
700        
701      
702        
703      
704        
705          <a href="/shoes/wedding-shoes" onclick="cslCloseMobileNav()">Wedding</a>
706        
707      
708        
709          <a href="/shoes/school-shoes" onclick="cslCloseMobileNav()">School</a>
710        
711      
712        
713          <a href="/shoes/office-shoes" onclick="cslCloseMobileNav()">Office</a>
714        
715      
716    
717    
718      
719        <a href="/help" onclick="cslCloseMobileNav()">Help</a>
720      
721        <a href="/track-order" onclick="cslCloseMobileNav()">Track Order</a>
722      
723        <a href="/contact" onclick="cslCloseMobileNav()">Contact Us</a>
724      
725    
726    
727    
728      <a href="/login" onclick="cslCloseMobileNav()">Sign In</a>
729    
730  </div>
731</div>
732
733<!-- Top Bar -->
734
735<div class="csl-top-bar" data-nosnippet>
736  <div class="csl-top-bar-content">
737    
738    
739    
740    <span class="csl-top-bar-message">Free standard shipping for retail orders | Family-Owned Since 2008 | 60-Day Easy Returns</span>
741    
742    <div class="csl-top-bar-links">
743      <a href="tel:+18456946700" class="csl-top-bar-phone">
744        <svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg>
745        (845) 694-6700
746      </a>
747      
748        
749          <a href="/help">Help</a>
750        
751          <a href="/track-order">Track Order</a>
752        
753          <a href="/contact">Contact Us</a>
754        
755      
756    </div>
757  </div>
758</div>
759
760
761<!-- Header -->
762<header class="csl-header" data-nosnippet>
763  <div class="csl-header-inner">
764    <button class="csl-mobile-menu-toggle" onclick="cslOpenMobileNav()" aria-label="Open menu">
765      <svg viewBox="0 0 24 24" aria-hidden="true"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>
766    </button>
767    <a href="/" class="csl-logo">
768      
769        <img src="/files/cslshoes.webp" alt="CSL Shoes logo" width="213" height="32">
770      
771    </a>
772    <nav class="csl-nav">
773      
774        
775          
776            <div class="csl-nav-dropdown">
777              <a href="/shoes">Styles <svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></a>
778              <div class="csl-dropdown-menu">
779                
780                  
781                
782                  
783                    <a href="/shoes/oxfords">Oxfords</a>
784                  
785                
786                  
787                    <a href="/shoes/loafers">Loafers</a>
788                  
789                
790                  
791                    <a href="/shoes/slip-ons">Slip-Ons</a>
792                  
793                
794                  
795                    <a href="/shoes/wide-width">Wide Width</a>
796                  
797                
798                  
799                    <a href="/shoes/boys-dress-shoes">Boys' Shoes</a>
800                  
801                
802                  
803                    <a href="/all-products">All Products</a>
804                  
805                
806                  
807                
808                  
809                
810                  
811                
812                  
813                
814                  
815                
816                  
817                
818                  
819                
820                  
821                
822                  
823                
824                  
825                
826              </div>
827            </div>
828          
829        
830          
831        
832          
833        
834          
835        
836          
837        
838          
839        
840          
841        
842          
843            <div class="csl-nav-dropdown">
844              <a href="/brands">Brands <svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></a>
845              <div class="csl-dropdown-menu">
846                
847                  
848                
849                  
850                
851                  
852                
853                  
854                
855                  
856                
857                  
858                
859                  
860                
861                  
862                
863                  
864                    <a href="/brands/wizfort">Wizfort</a>
865                  
866                
867                  
868                    <a href="/brands/esse-comfort">Esse Comfort</a>
869                  
870                
871                  
872                    <a href="/brands/benelaccio">Benelaccio</a>
873                  
874                
875                  
876                
877                  
878                
879                  
880                
881                  
882                
883                  
884                
885                  
886                
887              </div>
888            </div>
889          
890        
891          
892        
893          
894        
895          
896        
897          
898            <a href="/blog">Blog</a>
899          
900        
901          
902            <a href="/about">About</a>
903          
904        
905          
906            <div class="csl-nav-dropdown">
907              <a href="/shoes">Occasions <svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></a>
908              <div class="csl-dropdown-menu">
909                
910                  
911                
912                  
913                
914                  
915                
916                  
917                
918                  
919                
920                  
921                
922                  
923                
924                  
925                
926                  
927                
928                  
929                
930                  
931                
932                  
933                
934                  
935                
936                  
937                
938                  
939                    <a href="/shoes/wedding-shoes">Wedding</a>
940                  
941                
942                  
943                    <a href="/shoes/school-shoes">School</a>
944                  
945                
946                  
947                    <a href="/shoes/office-shoes">Office</a>
948                  
949                
950              </div>
951            </div>
952          
953        
954          
955        
956          
957        
958          
959        
960      
961    </nav>
962    <div class="csl-header-actions">
963      <button class="csl-mobile-search-toggle" onclick="cslOpenMobileSearch()" aria-label="Search">
964        <svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
965      </button>
966      <a href="/size-guide" class="csl-size-guide-link">
967        <svg viewBox="0 0 24 24"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg>
968        Size Guide
969      </a>
970      
971      <div class="csl-search-box">
972        <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
973        <input type="text" id="csl-search-input" placeholder="Search shoes..." autocomplete="off" aria-label="Search products">
974        <div class="csl-search-results" id="csl-search-results"></div>
975      </div>
976      
977      
978        
979        <a href="/login" class="csl-header-icon-link" title="Sign In">
980          <svg class="csl-header-icon" viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
981        </a>
982        
983      
984      
985      <a href="/wishlist" class="csl-wishlist-icon csl-header-icon-link" title="Wishlist">
986        <svg class="csl-header-icon" viewBox="0 0 24 24"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>
987        <span class="csl-wishlist-count" id="csl-wishlist-count">0</span>
988      </a>
989      
990      
991      <a href="/cart" class="csl-cart-icon csl-header-icon-link" title="Cart">
992        <svg class="csl-header-icon" viewBox="0 0 24 24"><path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></svg>
993        <span class="csl-cart-count" id="csl-cart-count">0</span>
994      </a>
995      
996    </div>
997  </div>
998</header>
999
1000<!-- Mobile Search Overlay -->
1001<div class="csl-mobile-search-overlay" id="csl-mobile-search-overlay">
1002  <input type="text" id="csl-mobile-search-input" placeholder="Search shoes..." autocomplete="off" aria-label="Search products">
1003  <button class="csl-mobile-search-close" onclick="cslCloseMobileSearch()" aria-label="Close search">
1004    <svg viewBox="0 0 24 24" aria-hidden="true"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
1005  </button>
1006  <div class="csl-search-results" id="csl-mobile-search-results"></div>
1007</div>
1008
1009<script>
1010// CSL Header JavaScript - Inline for reliability
1011(function() {
1012  var cslSearchTimeout;
1013
1014  // Mobile search
1015  window.cslOpenMobileSearch = function() {
1016    var overlay = document.getElementById('csl-mobile-search-overlay');
1017    overlay.classList.add('active');
1018    var input = document.getElementById('csl-mobile-search-input');
1019    input.value = '';
1020    input.focus();
1021  };
1022
1023  window.cslCloseMobileSearch = function() {
1024    document.getElementById('csl-mobile-search-overlay').classList.remove('active');
1025    document.getElementById('csl-mobile-search-results').innerHTML = '';
1026  };
1027
1028  // Mobile navigation
1029  window.cslOpenMobileNav = function() {
1030    document.getElementById('csl-mobile-nav').classList.add('active');
1031    document.body.style.overflow = 'hidden';
1032  };
1033
1034  window.cslCloseMobileNav = function() {
1035    document.getElementById('csl-mobile-nav').classList.remove('active');
1036    document.body.style.overflow = '';
1037  };
1038
1039  // Search functionality
1040  function initCslSearch() {
1041    var searchInput = document.getElementById('csl-search-input');
1042    var searchResults = document.getElementById('csl-search-results');
1043
1044    if (!searchInput) return;
1045
1046    searchInput.addEventListener('input', function() {
1047      clearTimeout(cslSearchTimeout);
1048      var query = this.value.trim();
1049
1050      if (query.length < 2) {
1051        searchResults.classList.remove('active');
1052        return;
1053      }
1054
1055      cslSearchTimeout = setTimeout(function() { cslSearchProducts(query); }, 300);
1056    });
1057
1058    searchInput.addEventListener('focus', function() {
1059      if (this.value.trim().length >= 2) {
1060        searchResults.classList.add('active');
1061      }
1062    });
1063
1064    searchInput.addEventListener('keypress', function(e) {
1065      if (e.key === 'Enter') {
1066        var query = this.value.trim();
1067        if (query) {
1068          window.location.href = '/all-products?search=' + encodeURIComponent(query);
1069        }
1070      }
1071    });
1072
1073    document.addEventListener('click', function(e) {
1074      if (!e.target.closest('.csl-search-box')) {
1075        searchResults.classList.remove('active');
1076      }
1077    });
1078  }
1079
1080  // Mobile search - reuse same search logic
1081  function initCslMobileSearch() {
1082    var mobileInput = document.getElementById('csl-mobile-search-input');
1083    var mobileResults = document.getElementById('csl-mobile-search-results');
1084    if (!mobileInput) return;
1085
1086    mobileInput.addEventListener('input', function() {
1087      clearTimeout(cslSearchTimeout);
1088      var query = this.value.trim();
1089      if (query.length < 2) { mobileResults.innerHTML = ''; return; }
1090      cslSearchTimeout = setTimeout(function() { cslSearchProductsMobile(query); }, 300);
1091    });
1092
1093    mobileInput.addEventListener('keypress', function(e) {
1094      if (e.key === 'Enter') {
1095        var query = this.value.trim();
1096        if (query) {
1097          window.location.href = '/all-products?search=' + encodeURIComponent(query);
1098          cslCloseMobileSearch();
1099        }
1100      }
1101    });
1102  }
1103
1104  function cslSearchProductsMobile(query) {
1105    var mobileResults = document.getElementById('csl-mobile-search-results');
1106    fetch('/api/method/cslshoes_erp.api.search.search_products?query=' + encodeURIComponent(query))
1107      .then(function(response) { return response.json(); })
1108      .then(function(data) {
1109        if (data.message && data.message.length > 0) {
1110          mobileResults.innerHTML = data.message.map(function(product) {
1111            var safeName = cslEscapeHtml(product.web_item_name);
1112            var safeRoute = encodeURI(product.route || '');
1113            var safeImage = cslEscapeHtml(product.website_image || '/assets/webshop/images/cart-empty-state.png');
1114            return '<a href="/' + safeRoute + '" style="display:flex;align-items:center;gap:12px;padding:12px 16px;text-decoration:none;color:#1a1a1a;border-bottom:1px solid #f3f4f6;">' +
1115              '<img src="' + safeImage + '" alt="' + safeName + '" width="50" height="50" style="border-radius:6px;object-fit:cover;">' +
1116              '<span style="font-size:14px;">' + safeName + '</span>' +
1117            '</a>';
1118          }).join('');
1119        } else {
1120          mobileResults.innerHTML = '<div style="padding:16px;text-align:center;color:#6b7280;">No products found</div>';
1121        }
1122      })
1123      .catch(function() {
1124        mobileResults.innerHTML = '<div style="padding:16px;text-align:center;color:#6b7280;">Search unavailable</div>';
1125      });
1126  }
1127
1128  function cslSearchProducts(query) {
1129    var searchResults = document.getElementById('csl-search-results');
1130
1131    fetch('/api/method/cslshoes_erp.api.search.search_products?query=' + encodeURIComponent(query))
1132      .then(function(response) { return response.json(); })
1133      .then(function(data) {
1134        if (data.message && data.message.length > 0) {
1135          cslRenderSearchResults(data.message);
1136        } else {
1137          searchResults.innerHTML = '<div class="csl-search-no-results">No products found</div>';
1138        }
1139        searchResults.classList.add('active');
1140      })
1141      .catch(function() {
1142        searchResults.innerHTML = '<div class="csl-search-no-results">Search unavailable</div>';
1143        searchResults.classList.add('active');
1144      });
1145  }
1146
1147  function cslEscapeHtml(str) {
1148    if (!str) return '';
1149    var div = document.createElement('div');
1150    div.appendChild(document.createTextNode(String(str)));
1151    return div.innerHTML;
1152  }
1153
1154  function cslRenderSearchResults(products) {
1155    var searchResults = document.getElementById('csl-search-results');
1156    searchResults.innerHTML = products.map(function(product) {
1157      var safeName = cslEscapeHtml(product.web_item_name);
1158      var safeRoute = encodeURI(product.route || '');
1159      var safeBrand = cslEscapeHtml(product.brand || 'CSL Shoes');
1160      var safeImage = cslEscapeHtml(product.website_image || '/assets/webshop/images/cart-empty-state.png');
1161      return '<a href="/' + safeRoute + '" class="csl-search-result-item">' +
1162        '<img src="' + safeImage + '" alt="' + safeName + '">' +
1163        '<div class="csl-search-result-info">' +
1164          '<span class="csl-search-result-name">' + safeName + '</span>' +
1165          '<p>' + safeBrand + '</p>' +
1166        '</div>' +
1167      '</a>';
1168    }).join('');
1169  }
1170
1171  // Cart count update - supports both guests and logged-in users
1172  function updateCslCartCount() {
1173    var isGuest = document.body.getAttribute('frappe-session-status') === 'logged-out';
1174
1175    if (isGuest) {
1176      // Guest: use guest cart API
1177      var cartIdMatch = document.cookie.match(/guest_cart_id=([^;]+)/);
1178      var cartId = cartIdMatch ? cartIdMatch[1] : null;
1179
1180      fetch('/api/method/cslshoes_erp.api.guest_cart.get_cart_count', {
1181        method: 'POST',
1182        headers: { 'Content-Type': 'application/json' },
1183        credentials: 'same-origin',
1184        body: JSON.stringify({ cart_id: cartId })
1185      })
1186      .then(function(r) { return r.json(); })
1187      .then(function(data) {
1188        if (data.message) {
1189          var count = data.message.count || 0;
1190          updateCartCountDisplay(count);
1191        }
1192      })
1193      .catch(function() {});
1194    } else {
1195      // Logged-in user: use quotation API
1196      fetch('/api/method/webshop.webshop.shopping_cart.cart.get_cart_quotation', {
1197        method: 'GET',
1198        headers: { 'Content-Type': 'application/json' },
1199        credentials: 'same-origin'
1200      })
1201      .then(function(r) { return r.json(); })
1202      .then(function(data) {
1203        if (data.message && data.message.doc) {
1204          var totalQty = data.message.doc.total_qty || 0;
1205          updateCartCountDisplay(totalQty);
1206        }
1207      })
1208      .catch(function() {});
1209    }
1210  }
1211
1212  // Helper to update cart count display in header
1213  function updateCartCountDisplay(count) {
1214    count = Math.floor(count);
1215    var countEl = document.getElementById('csl-cart-count');
1216    if (countEl) {
1217      countEl.textContent = count;
1218      countEl.style.display = count > 0 ? 'flex' : 'none';
1219    }
1220  }
1221
1222  // Wishlist count update
1223  function updateCslWishlistCount() {
1224    fetch('/api/method/cslshoes_erp.api.wishlist.get_wishlist_count', {
1225      method: 'GET',
1226      credentials: 'same-origin'
1227    })
1228    .then(function(r) { return r.json(); })
1229    .then(function(data) {
1230      var count = data.message || 0;
1231      var countEl = document.getElementById('csl-wishlist-count');
1232      if (countEl) {
1233        if (count > 0) {
1234          countEl.textContent = count;
1235          countEl.style.display = 'flex';
1236        } else {
1237          countEl.style.display = 'none';
1238        }
1239      }
1240    })
1241    .catch(function() {});
1242  }
1243
1244  // Initialize on DOM ready
1245  if (document.readyState === 'loading') {
1246    document.addEventListener('DOMContentLoaded', function() {
1247      initCslSearch();
1248      initCslMobileSearch();
1249      updateCslCartCount();
1250      updateCslWishlistCount();
1251    });
1252  } else {
1253    initCslSearch();
1254    initCslMobileSearch();
1255    updateCslCartCount();
1256    updateCslWishlistCount();
1257  }
1258
1259  // BUG-W3 cart sub: expose count refreshers globally so add-to-cart handlers
1260  // in homepage / PDP / /all-products can trigger header re-sync after mutation.
1261  // Idempotency guard (auditor C1) — if a future include order re-exposes, keep
1262  // the first definition.
1263  window.updateCslCartCount = window.updateCslCartCount || updateCslCartCount;
1264  window.updateCslWishlistCount = window.updateCslWishlistCount || updateCslWishlistCount;
1265})();
1266</script>
1266<main id="main-content">
1267	
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278<div id="page-index" data-path="all-products">
1279	
1280<div class="page-content-wrapper">
1281	<!-- breadcrumbs -->
1282	<div class="page-breadcrumbs">
1283		
1284	</div>
1285
1286	
1287	<main class="container">
1288		<div class="page-header-wrapper">
1289			<div class="page-header">
1290				
1291			</div>
1292
1293			
1294		</div>
1295
1296		<div class="page_content">
1297
1298
1299<div class="container" style="padding: 40px 20px;">
1300<h1 style="font-size: 1.75rem; font-weight: 700; color: #111827; margin-bottom: 24px;">All Products</h1>
1301<div class="row">
1302    <!-- Items section -->
1303    <div id="product-listing" class="col-12 order-2 col-md-9 order-md-2 item-card-group-section">
1304        <!-- Interactive product grid rendered via JS (ProductListing) -->
1305        <!-- SSR product links below provide crawl paths for search engines -->
1306        
1307        <noscript>
1308        <div class="ssr-product-links">
1309            <h2>All Products</h2>
1310            <ul>
1311            
1312                <li><a href="/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-s8svh">Wizfort Classics Mens Leather Sole Bicycle Toe Lace Up</a></li>
1313            
1314                <li><a href="/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-jlpbi">Wizfort Classics Mens Leather Sole Bicycle Toe Slip On (715)</a></li>
1315            
1316                <li><a href="/products/wizfort-classics-mens-leather-sole-moc-toe-lace-up-ggqjf">Wizfort Classics Mens Leather Sole Moc Toe Lace Up</a></li>
1317            
1318                <li><a href="/products/wizfort-classics-mens-leather-sole-moc-toe-slip-on-3oiaf">Wizfort Classics Mens Leather Sole Moc Toe Slip On</a></li>
1319            
1320                <li><a href="/products/wizfort-mens-bicycle-toe-lace-up-q6rsr">Wizfort Mens Bicycle Toe Lace Up</a></li>
1321            
1322                <li><a href="/products/wizfort-mens-bicycle-toe-loafer-r8vij">Wizfort Mens Bicycle Toe Loafer</a></li>
1323            
1324                <li><a href="/products/wizfort-mens-cap-toe-oxford-shoe-3dhdj">Wizfort Mens Cap Toe Oxford Shoe</a></li>
1325            
1326                <li><a href="/products/wizfort-mens-lightweight-bicycle-toe-lace-up-ul7ri">Wizfort Mens Lightweight Bicycle Toe Lace Up</a></li>
1327            
1328                <li><a href="/products/wizfort-mens-lightweight-bicycle-toe-loafer-njyyt">Wizfort Mens Lightweight Bicycle Toe Loafer</a></li>
1329            
1330                <li><a href="/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-tlofo">Wizfort Mens Lightweight Moc Toe Lace Up Shoes</a></li>
1331            
1332                <li><a href="/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-gpvip">Wizfort Mens Lightweight Moc Toe Slip On (815)</a></li>
1333            
1334                <li><a href="/products/wizfort-mens-lightweight-plain-toe-chassidic-loafer-r6fuh">Wizfort Mens Lightweight Plain Toe Chassidic Loafer</a></li>
1335            
1336                <li><a href="/products/wizfort-mens-moc-toe-lace-up-shoe-3pouw">Wizfort Mens Moc Toe Lace Up Shoe</a></li>
1337            
1338                <li><a href="/products/wizfort-mens-moc-toe-loafer-daoss">Wizfort Mens Moc Toe Loafer</a></li>
1339            
1340                <li><a href="/products/wizfort-mens-plain-toe-chassidic-loafer-loha7">Wizfort Mens Plain Toe Chassidic Loafer</a></li>
1341            
1342                <li><a href="/products/wizfort-mens-plain-toe-lace-up-shoe-miqkc">Wizfort Mens Plain Toe Lace Up Shoe</a></li>
1343            
1344                <li><a href="/products/wizfort-mens-plain-toe-loafer-pezi6">Wizfort Mens Plain Toe Loafer</a></li>
1345            
1346                <li><a href="/products/wizfort-mens-plain-toe-traditional-loafer-656">Wizfort Mens Plain Toe Traditional Loafer (656)</a></li>
1347            
1348                <li><a href="/products/wizfort-prestige-comfortable-leather-sole-chassidic-loafer-ib58c">Wizfort Prestige Comfortable Leather Sole Chassidic Loafer</a></li>
1349            
1350                <li><a href="/products/wizfort-prestige-leather-sole-bicycle-toe-lace-up-shoe-for-men-bgki4">Wizfort Prestige Leather Sole Bicycle Toe Lace Up Shoe for Men</a></li>
1351            
1352                <li><a href="/products/wizfort-prestige-leather-sole-bicycle-toe-loafer-for-men-f9xq5">Wizfort Prestige Leather Sole Bicycle Toe Loafer for Men</a></li>
1353            
1354                <li><a href="/products/wizfort-prestige-leather-sole-moc-toe-loafer-for-men-jivbk">Wizfort Prestige Leather Sole Moc Toe Loafer for Men</a></li>
1355            
1356                <li><a href="/products/wizfort-prestige-mens-moc-toe-lace-up-8svvp">Wizfort Prestige Mens Moc Toe Lace Up</a></li>
1357            
1358            </ul>
1359        </div>
1360        </noscript>
1361        <div class="ssr-crawl-links" aria-hidden="true" style="height:0;overflow:hidden;position:absolute">
1362            
1363            <a href="/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-s8svh">Wizfort Classics Mens Leather Sole Bicycle Toe Lace Up</a>
1364            
1365            <a href="/products/wizfort-classics-mens-leather-sole-bicycle-toe-lace-up-jlpbi">Wizfort Classics Mens Leather Sole Bicycle Toe Slip On (715)</a>
1366            
1367            <a href="/products/wizfort-classics-mens-leather-sole-moc-toe-lace-up-ggqjf">Wizfort Classics Mens Leather Sole Moc Toe Lace Up</a>
1368            
1369            <a href="/products/wizfort-classics-mens-leather-sole-moc-toe-slip-on-3oiaf">Wizfort Classics Mens Leather Sole Moc Toe Slip On</a>
1370            
1371            <a href="/products/wizfort-mens-bicycle-toe-lace-up-q6rsr">Wizfort Mens Bicycle Toe Lace Up</a>
1372            
1373            <a href="/products/wizfort-mens-bicycle-toe-loafer-r8vij">Wizfort Mens Bicycle Toe Loafer</a>
1374            
1375            <a href="/products/wizfort-mens-cap-toe-oxford-shoe-3dhdj">Wizfort Mens Cap Toe Oxford Shoe</a>
1376            
1377            <a href="/products/wizfort-mens-lightweight-bicycle-toe-lace-up-ul7ri">Wizfort Mens Lightweight Bicycle Toe Lace Up</a>
1378            
1379            <a href="/products/wizfort-mens-lightweight-bicycle-toe-loafer-njyyt">Wizfort Mens Lightweight Bicycle Toe Loafer</a>
1380            
1381            <a href="/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-tlofo">Wizfort Mens Lightweight Moc Toe Lace Up Shoes</a>
1382            
1383            <a href="/products/wizfort-mens-lightweight-moc-toe-lace-up-shoes-gpvip">Wizfort Mens Lightweight Moc Toe Slip On (815)</a>
1384            
1385            <a href="/products/wizfort-mens-lightweight-plain-toe-chassidic-loafer-r6fuh">Wizfort Mens Lightweight Plain Toe Chassidic Loafer</a>
1386            
1387            <a href="/products/wizfort-mens-moc-toe-lace-up-shoe-3pouw">Wizfort Mens Moc Toe Lace Up Shoe</a>
1388            
1389            <a href="/products/wizfort-mens-moc-toe-loafer-daoss">Wizfort Mens Moc Toe Loafer</a>
1390            
1391            <a href="/products/wizfort-mens-plain-toe-chassidic-loafer-loha7">Wizfort Mens Plain Toe Chassidic Loafer</a>
1392            
1393            <a href="/products/wizfort-mens-plain-toe-lace-up-shoe-miqkc">Wizfort Mens Plain Toe Lace Up Shoe</a>
1394            
1395            <a href="/products/wizfort-mens-plain-toe-loafer-pezi6">Wizfort Mens Plain Toe Loafer</a>
1396            
1397            <a href="/products/wizfort-mens-plain-toe-traditional-loafer-656">Wizfort Mens Plain Toe Traditional Loafer (656)</a>
1398            
1399            <a href="/products/wizfort-prestige-comfortable-leather-sole-chassidic-loafer-ib58c">Wizfort Prestige Comfortable Leather Sole Chassidic Loafer</a>
1400            
1401            <a href="/products/wizfort-prestige-leather-sole-bicycle-toe-lace-up-shoe-for-men-bgki4">Wizfort Prestige Leather Sole Bicycle Toe Lace Up Shoe for Men</a>
1402            
1403            <a href="/products/wizfort-prestige-leather-sole-bicycle-toe-loafer-for-men-f9xq5">Wizfort Prestige Leather Sole Bicycle Toe Loafer for Men</a>
1404            
1405            <a href="/products/wizfort-prestige-leather-sole-moc-toe-loafer-for-men-jivbk">Wizfort Prestige Leather Sole Moc Toe Loafer for Men</a>
1406            
1407            <a href="/products/wizfort-prestige-mens-moc-toe-lace-up-8svvp">Wizfort Prestige Mens Moc Toe Lace Up</a>
1408            
1409        </div>
1410        
1411    </div>
1412
1413    <!-- Filters Section -->
1414    <div class="col-12 order-1 col-md-3 order-md-1">
1415        <div class="collapse d-md-block mr-4 filters-section" id="product-filters">
1416            <div class="d-flex justify-content-between align-items-center mb-5 title-section">
1417                <div class="mb-4 filters-title" > Filters </div>
1418                <a class="mb-4 clear-filters" href="/all-products">Clear All</a>
1419            </div>
1420            <!-- field filters -->
1421            
1422                
1423	<div class="mb-4 filter-block pb-5">
1424		<div class="filter-label mb-3">Brand</div>
1425
1426		
1427
1428		
1429		<div class="filter-options">
1430			
1431			<div class="filter-lookup-wrapper checkbox" data-value="Benelaccio">
1432				<label for="Benelaccio">
1433					<input type="checkbox"
1434						class="product-filter field-filter"
1435						id="Benelaccio"
1436						data-filter-name="brand"
1437						data-filter-value="Benelaccio"
1438						style="width: 14px !important">
1439					<span class="label-area">Benelaccio</span>
1440				</label>
1441			</div>
1442			
1443			<div class="filter-lookup-wrapper checkbox" data-value="Esse Comfort">
1444				<label for="Esse Comfort">
1445					<input type="checkbox"
1446						class="product-filter field-filter"
1447						id="Esse Comfort"
1448						data-filter-name="brand"
1449						data-filter-value="Esse Comfort"
1450						style="width: 14px !important">
1451					<span class="label-area">Esse Comfort</span>
1452				</label>
1453			</div>
1454			
1455			<div class="filter-lookup-wrapper checkbox" data-value="Wizfort Shoes">
1456				<label for="Wizfort Shoes">
1457					<input type="checkbox"
1458						class="product-filter field-filter"
1459						id="Wizfort Shoes"
1460						data-filter-name="brand"
1461						data-filter-value="Wizfort Shoes"
1462						style="width: 14px !important">
1463					<span class="label-area">Wizfort Shoes</span>
1464				</label>
1465			</div>
1466			
1467		</div>
1468		
1469	</div>
1470
1471	<div class="mb-4 filter-block pb-5">
1472		<div class="filter-label mb-3">Collection</div>
1473
1474		
1475
1476		
1477		<div class="filter-options">
1478			
1479			<div class="filter-lookup-wrapper checkbox" data-value="Casual">
1480				<label for="Casual">
1481					<input type="checkbox"
1482						class="product-filter field-filter"
1483						id="Casual"
1484						data-filter-name="collection"
1485						data-filter-value="Casual"
1486						style="width: 14px !important">
1487					<span class="label-area">Casual</span>
1488				</label>
1489			</div>
1490			
1491			<div class="filter-lookup-wrapper checkbox" data-value="Chasidic">
1492				<label for="Chasidic">
1493					<input type="checkbox"
1494						class="product-filter field-filter"
1495						id="Chasidic"
1496						data-filter-name="collection"
1497						data-filter-value="Chasidic"
1498						style="width: 14px !important">
1499					<span class="label-area">Chasidic</span>
1500				</label>
1501			</div>
1502			
1503			<div class="filter-lookup-wrapper checkbox" data-value="Comfort">
1504				<label for="Comfort">
1505					<input type="checkbox"
1506						class="product-filter field-filter"
1507						id="Comfort"
1508						data-filter-name="collection"
1509						data-filter-value="Comfort"
1510						style="width: 14px !important">
1511					<span class="label-area">Comfort</span>
1512				</label>
1513			</div>
1514			
1515			<div class="filter-lookup-wrapper checkbox" data-value="Dress">
1516				<label for="Dress">
1517					<input type="checkbox"
1518						class="product-filter field-filter"
1519						id="Dress"
1520						data-filter-name="collection"
1521						data-filter-value="Dress"
1522						style="width: 14px !important">
1523					<span class="label-area">Dress</span>
1524				</label>
1525			</div>
1526			
1527			<div class="filter-lookup-wrapper checkbox" data-value="Formal">
1528				<label for="Formal">
1529					<input type="checkbox"
1530						class="product-filter field-filter"
1531						id="Formal"
1532						data-filter-name="collection"
1533						data-filter-value="Formal"
1534						style="width: 14px !important">
1535					<span class="label-area">Formal</span>
1536				</label>
1537			</div>
1538			
1539		</div>
1540		
1541	</div>
1542
1543	<div class="mb-4 filter-block pb-5">
1544		<div class="filter-label mb-3">Market</div>
1545
1546		
1547
1548		
1549		<div class="filter-options">
1550			
1551			<div class="filter-lookup-wrapper checkbox" data-value="Boys">
1552				<label for="Boys">
1553					<input type="checkbox"
1554						class="product-filter field-filter"
1555						id="Boys"
1556						data-filter-name="market"
1557						data-filter-value="Boys"
1558						style="width: 14px !important">
1559					<span class="label-area">Boys</span>
1560				</label>
1561			</div>
1562			
1563			<div class="filter-lookup-wrapper checkbox" data-value="Kids">
1564				<label for="Kids">
1565					<input type="checkbox"
1566						class="product-filter field-filter"
1567						id="Kids"
1568						data-filter-name="market"
1569						data-filter-value="Kids"
1570						style="width: 14px !important">
1571					<span class="label-area">Kids</span>
1572				</label>
1573			</div>
1574			
1575			<div class="filter-lookup-wrapper checkbox" data-value="Men's">
1576				<label for="Men's">
1577					<input type="checkbox"
1578						class="product-filter field-filter"
1579						id="Men's"
1580						data-filter-name="market"
1581						data-filter-value="Men's"
1582						style="width: 14px !important">
1583					<span class="label-area">Men's</span>
1584				</label>
1585			</div>
1586			
1587		</div>
1588		
1589	</div>
1590
1591	<div class="mb-4 filter-block pb-5">
1592		<div class="filter-label mb-3">Closure Type</div>
1593
1594		
1595
1596		
1597		<div class="filter-options">
1598			
1599			<div class="filter-lookup-wrapper checkbox" data-value="Lace Up">
1600				<label for="Lace Up">
1601					<input type="checkbox"
1602						class="product-filter field-filter"
1603						id="Lace Up"
1604						data-filter-name="closure_type"
1605						data-filter-value="Lace Up"
1606						style="width: 14px !important">
1607					<span class="label-area">Lace Up</span>
1608				</label>
1609			</div>
1610			
1611			<div class="filter-lookup-wrapper checkbox" data-value="Slip On">
1612				<label for="Slip On">
1613					<input type="checkbox"
1614						class="product-filter field-filter"
1615						id="Slip On"
1616						data-filter-name="closure_type"
1617						data-filter-value="Slip On"
1618						style="width: 14px !important">
1619					<span class="label-area">Slip On</span>
1620				</label>
1621			</div>
1622			
1623			<div class="filter-lookup-wrapper checkbox" data-value="Velcro">
1624				<label for="Velcro">
1625					<input type="checkbox"
1626						class="product-filter field-filter"
1627						id="Velcro"
1628						data-filter-name="closure_type"
1629						data-filter-value="Velcro"
1630						style="width: 14px !important">
1631					<span class="label-area">Velcro</span>
1632				</label>
1633			</div>
1634			
1635		</div>
1636		
1637	</div>
1638
1639	<div class="mb-4 filter-block pb-5">
1640		<div class="filter-label mb-3">Shoe Description</div>
1641
1642		
1643
1644		
1645		<div class="filter-options">
1646			
1647			<div class="filter-lookup-wrapper checkbox" data-value="Bicycle Toe">
1648				<label for="Bicycle Toe">
1649					<input type="checkbox"
1650						class="product-filter field-filter"
1651						id="Bicycle Toe"
1652						data-filter-name="shoe_description"
1653						data-filter-value="Bicycle Toe"
1654						style="width: 14px !important">
1655					<span class="label-area">Bicycle Toe</span>
1656				</label>
1657			</div>
1658			
1659			<div class="filter-lookup-wrapper checkbox" data-value="Cap Toe">
1660				<label for="Cap Toe">
1661					<input type="checkbox"
1662						class="product-filter field-filter"
1663						id="Cap Toe"
1664						data-filter-name="shoe_description"
1665						data-filter-value="Cap Toe"
1666						style="width: 14px !important">
1667					<span class="label-area">Cap Toe</span>
1668				</label>
1669			</div>
1670			
1671			<div class="filter-lookup-wrapper checkbox" data-value="Moccasin">
1672				<label for="Moccasin">
1673					<input type="checkbox"
1674						class="product-filter field-filter"
1675						id="Moccasin"
1676						data-filter-name="shoe_description"
1677						data-filter-value="Moccasin"
1678						style="width: 14px !important">
1679					<span class="label-area">Moccasin</span>
1680				</label>
1681			</div>
1682			
1683			<div class="filter-lookup-wrapper checkbox" data-value="Plain Toe">
1684				<label for="Plain Toe">
1685					<input type="checkbox"
1686						class="product-filter field-filter"
1687						id="Plain Toe"
1688						data-filter-name="shoe_description"
1689						data-filter-value="Plain Toe"
1690						style="width: 14px !important">
1691					<span class="label-area">Plain Toe</span>
1692				</label>
1693			</div>
1694			
1695		</div>
1696		
1697	</div>
1698
1699	<div class="mb-4 filter-block pb-5">
1700		<div class="filter-label mb-3">Shoe Construction</div>
1701
1702		
1703
1704		
1705		<div class="filter-options">
1706			
1707			<div class="filter-lookup-wrapper checkbox" data-value="Cemented">
1708				<label for="Cemented">
1709					<input type="checkbox"
1710						class="product-filter field-filter"
1711						id="Cemented"
1712						data-filter-name="shoe_construction"
1713						data-filter-value="Cemented"
1714						style="width: 14px !important">
1715					<
1715span class="label-area">Cemented</span>
1716				</label>
1717			</div>
1718			
1719			<div class="filter-lookup-wrapper checkbox" data-value="Injected">
1720				<label for="Injected">
1721					<input type="checkbox"
1722						class="product-filter field-filter"
1723						id="Injected"
1724						data-filter-name="shoe_construction"
1725						data-filter-value="Injected"
1726						style="width: 14px !important">
1727					<span class="label-area">Injected</span>
1728				</label>
1729			</div>
1730			
1731		</div>
1732		
1733	</div>
1734
1735            
1736
1737            <!-- attribute filters -->
1738            
1739                
1740	<div class="mb-4 filter-block pb-5">
1741		<div class="filter-label mb-3">Color</div>
1742		
1743
1744		
1745		<div class="filter-options">
1746			
1747			<div class="filter-lookup-wrapper checkbox" data-value="Black">
1748				<label data-value="Black">
1749					<input type="checkbox"
1750						class="product-filter attribute-filter"
1751						id="Black"
1752						data-attribute-name="Color"
1753						data-attribute-value="Black"
1754						style="width: 14px !important"
1755						>
1756						<span class="label-area">Black</span>
1757				</label>
1758			</div>
1759			
1760			<div class="filter-lookup-wrapper checkbox" data-value="Dark Grey">
1761				<label data-value="Dark Grey">
1762					<input type="checkbox"
1763						class="product-filter attribute-filter"
1764						id="Dark Grey"
1765						data-attribute-name="Color"
1766						data-attribute-value="Dark Grey"
1767						style="width: 14px !important"
1768						>
1769						<span class="label-area">Dark Grey</span>
1770				</label>
1771			</div>
1772			
1773			<div class="filter-lookup-wrapper checkbox" data-value="Dark Navy">
1774				<label data-value="Dark Navy">
1775					<input type="checkbox"
1776						class="product-filter attribute-filter"
1777						id="Dark Navy"
1778						data-attribute-name="Color"
1779						data-attribute-value="Dark Navy"
1780						style="width: 14px !important"
1781						>
1782						<span class="label-area">Dark Navy</span>
1783				</label>
1784			</div>
1785			
1786		</div>
1787		
1788	</div>
1789
1790	<div class="mb-4 filter-block pb-5">
1791		<div class="filter-label mb-3">Size</div>
1792		
1793		<!-- show inline filter if values more than 20 -->
1794		<input type="text" class="form-control form-control-sm mb-2 filter-lookup-input" placeholder="_('Search') Sizes"/>
1795		
1796
1797		
1798		<div class="filter-options">
1799			
1800			<div class="filter-lookup-wrapper checkbox" data-value="22">
1801				<label data-value="22">
1802					<input type="checkbox"
1803						class="product-filter attribute-filter"
1804						id="22"
1805						data-attribute-name="Size"
1806						data-attribute-value="22"
1807						style="width: 14px !important"
1808						>
1809						<span class="label-area">22</span>
1810				</label>
1811			</div>
1812			
1813			<div class="filter-lookup-wrapper checkbox" data-value="23">
1814				<label data-value="23">
1815					<input type="checkbox"
1816						class="product-filter attribute-filter"
1817						id="23"
1818						data-attribute-name="Size"
1819						data-attribute-value="23"
1820						style="width: 14px !important"
1821						>
1822						<span class="label-area">23</span>
1823				</label>
1824			</div>
1825			
1826			<div class="filter-lookup-wrapper checkbox" data-value="24">
1827				<label data-value="24">
1828					<input type="checkbox"
1829						class="product-filter attribute-filter"
1830						id="24"
1831						data-attribute-name="Size"
1832						data-attribute-value="24"
1833						style="width: 14px !important"
1834						>
1835						<span class="label-area">24</span>
1836				</label>
1837			</div>
1838			
1839			<div class="filter-lookup-wrapper checkbox" data-value="25">
1840				<label data-value="25">
1841					<input type="checkbox"
1842						class="product-filter attribute-filter"
1843						id="25"
1844						data-attribute-name="Size"
1845						data-attribute-value="25"
1846						style="width: 14px !important"
1847						>
1848						<span class="label-area">25</span>
1849				</label>
1850			</div>
1851			
1852			<div class="filter-lookup-wrapper checkbox" data-value="26">
1853				<label data-value="26">
1854					<input type="checkbox"
1855						class="product-filter attribute-filter"
1856						id="26"
1857						data-attribute-name="Size"
1858						data-attribute-value="26"
1859						style="width: 14px !important"
1860						>
1861						<span class="label-area">26</span>
1862				</label>
1863			</div>
1864			
1865			<div class="filter-lookup-wrapper checkbox" data-value="27">
1866				<label data-value="27">
1867					<input type="checkbox"
1868						class="product-filter attribute-filter"
1869						id="27"
1870						data-attribute-name="Size"
1871						data-attribute-value="27"
1872						style="width: 14px !important"
1873						>
1874						<span class="label-area">27</span>
1875				</label>
1876			</div>
1877			
1878			<div class="filter-lookup-wrapper checkbox" data-value="28">
1879				<label data-value="28">
1880					<input type="checkbox"
1881						class="product-filter attribute-filter"
1882						id="28"
1883						data-attribute-name="Size"
1884						data-attribute-value="28"
1885						style="width: 14px !important"
1886						>
1887						<span class="label-area">28</span>
1888				</label>
1889			</div>
1890			
1891			<div class="filter-lookup-wrapper checkbox" data-value="29">
1892				<label data-value="29">
1893					<input type="checkbox"
1894						class="product-filter attribute-filter"
1895						id="29"
1896						data-attribute-name="Size"
1897						data-attribute-value="29"
1898						style="width: 14px !important"
1899						>
1900						<span class="label-area">29</span>
1901				</label>
1902			</div>
1903			
1904			<div class="filter-lookup-wrapper checkbox" data-value="30">
1905				<label data-value="30">
1906					<input type="checkbox"
1907						class="product-filter attribute-filter"
1908						id="30"
1909						data-attribute-name="Size"
1910						data-attribute-value="30"
1911						style="width: 14px !important"
1912						>
1913						<span class="label-area">30</span>
1914				</label>
1915			</div>
1916			
1917			<div class="filter-lookup-wrapper checkbox" data-value="31">
1918				<label data-value="31">
1919					<input type="checkbox"
1920						class="product-filter attribute-filter"
1921						id="31"
1922						data-attribute-name="Size"
1923						data-attribute-value="31"
1924						style="width: 14px !important"
1925						>
1926						<span class="label-area">31</span>
1927				</label>
1928			</div>
1929			
1930			<div class="filter-lookup-wrapper checkbox" data-value="32">
1931				<label data-value="32">
1932					<input type="checkbox"
1933						class="product-filter attribute-filter"
1934						id="32"
1935						data-attribute-name="Size"
1936						data-attribute-value="32"
1937						style="width: 14px !important"
1938						>
1939						<span class="label-area">32</span>
1940				</label>
1941			</div>
1942			
1943			<div class="filter-lookup-wrapper checkbox" data-value="33">
1944				<label data-value="33">
1945					<input type="checkbox"
1946						class="product-filter attribute-filter"
1947						id="33"
1948						data-attribute-name="Size"
1949						data-attribute-value="33"
1950						style="width: 14px !important"
1951						>
1952						<span class="label-area">33</span>
1953				</label>
1954			</div>
1955			
1956			<div class="filter-lookup-wrapper checkbox" data-value="34">
1957				<label data-value="34">
1958					<input type="checkbox"
1959						class="product-filter attribute-filter"
1960						id="34"
1961						data-attribute-name="Size"
1962						data-attribute-value="34"
1963						style="width: 14px !important"
1964						>
1965						<span class="label-area">34</span>
1966				</label>
1967			</div>
1968			
1969			<div class="filter-lookup-wrapper checkbox" data-value="35">
1970				<label data-value="35">
1971					<input type="checkbox"
1972						class="product-filter attribute-filter"
1973						id="35"
1974						data-attribute-name="Size"
1975						data-attribute-value="35"
1976						style="width: 14px !important"
1977						>
1978						<span class="label-area">35</span>
1979				</label>
1980			</div>
1981			
1982			<div class="filter-lookup-wrapper checkbox" data-value="36">
1983				<label data-value="36">
1984					<input type="checkbox"
1985						class="product-filter attribute-filter"
1986						id="36"
1987						data-attribute-name="Size"
1988						data-attribute-value="36"
1989						style="width: 14px !important"
1990						>
1991						<span class="label-area">36</span>
1992				</label>
1993			</div>
1994			
1995			<div class="filter-lookup-wrapper checkbox" data-value="37">
1996				<label data-value="37">
1997					<input type="checkbox"
1998						class="product-filter attribute-filter"
1999						id="37"
2000						data-attribute-name="Size"
2001						data-attribute-value="37"
2002						style="width: 14px !important"
2003						>
2004						<span class="label-area">37</span>
2005				</label>
2006			</div>
2007			
2008			<div class="filter-lookup-wrapper checkbox" data-value="38">
2009				<label data-value="38">
2010					<input type="checkbox"
2011						class="product-filter attribute-filter"
2012						id="38"
2013						data-attribute-name="Size"
2014						data-attribute-value="38"
2015						style="width: 14px !important"
2016						>
2017						<span class="label-area">38</span>
2018				</label>
2019			</div>
2020			
2021			<div class="filter-lookup-wrapper checkbox" data-value="39">
2022				<label data-value="39">
2023					<input type="checkbox"
2024						class="product-filter attribute-filter"
2025						id="39"
2026						data-attribute-name="Size"
2027						data-attribute-value="39"
2028						style="width: 14px !important"
2029						>
2030						<span class="label-area">39</span>
2031				</label>
2032			</div>
2033			
2034			<div class="filter-lookup-wrapper checkbox" data-value="40">
2035				<label data-value="40">
2036					<input type="checkbox"
2037						class="product-filter attribute-filter"
2038						id="40"
2039						data-attribute-name="Size"
2040						data-attribute-value="40"
2041						style="width: 14px !important"
2042						>
2043						<span class="label-area">40</span>
2044				</label>
2045			</div>
2046			
2047			<div class="filter-lookup-wrapper checkbox" data-value="41">
2048				<label data-value="41">
2049					<input type="checkbox"
2050						class="product-filter attribute-filter"
2051						id="41"
2052						data-attribute-name="Size"
2053						data-attribute-value="41"
2054						style="width: 14px !important"
2055						>
2056						<span class="label-area">41</span>
2057				</label>
2058			</div>
2059			
2060			<div class="filter-lookup-wrapper checkbox" data-value="42">
2061				<label data-value="42">
2062					<input type="checkbox"
2063						class="product-filter attribute-filter"
2064						id="42"
2065						data-attribute-name="Size"
2066						data-attribute-value="42"
2067						style="width: 14px !important"
2068						>
2069						<span class="label-area">42</span>
2070				</label>
2071			</div>
2072			
2073			<div class="filter-lookup-wrapper checkbox" data-value="43">
2074				<label data-value="43">
2075					<input type="checkbox"
2076						class="product-filter attribute-filter"
2077						id="43"
2078						data-attribute-name="Size"
2079						data-attribute-value="43"
2080						style="width: 14px !important"
2081						>
2082						<span class="label-area">43</span>
2083				</label>
2084			</div>
2085			
2086			<div class="filter-lookup-wrapper checkbox" data-value="44">
2087				<label data-value="44">
2088					<input type="checkbox"
2089						class="product-filter attribute-filter"
2090						id="44"
2091						data-attribute-name="Size"
2092						data-attribute-value="44"
2093						style="width: 14px !important"
2094						>
2095						<span class="label-area">44</span>
2096				</label>
2097			</div>
2098			
2099			<div class="filter-lookup-wrapper checkbox" data-value="45">
2100				<label data-value="45">
2101					<input type="checkbox"
2102						class="product-filter attribute-filter"
2103						id="45"
2104						data-attribute-name="Size"
2105						data-attribute-value="45"
2106						style="width: 14px !important"
2107						>
2108						<span class="label-area">45</span>
2109				</label>
2110			</div>
2111			
2112			<div class="filter-lookup-wrapper checkbox" data-value="46">
2113				<label data-value="46">
2114					<input type="checkbox"
2115						class="product-filter attribute-filter"
2116						id="46"
2117						data-attribute-name="Size"
2118						data-attribute-value="46"
2119						style="width: 14px !important"
2120						>
2121						<span class="label-area">46</span>
2122				</label>
2123			</div>
2124			
2125			<div class="filter-lookup-wrapper checkbox" data-value="47">
2126				<label data-value="47">
2127					<input type="checkbox"
2128						class="product-filter attribute-filter"
2129						id="47"
2130						data-attribute-name="Size"
2131						data-attribute-value="47"
2132						style="width: 14px !important"
2133						>
2134						<span class="label-area">47</span>
2135				</label>
2136			</div>
2137			
2138		</div>
2139		
2140	</div>
2141
2142            
2143        </div>
2144    </div>
2145</div>
2146</div>
2147
2148
2149<script>
2150frappe.ready(() => {
2151    $('.btn-prev, .btn-next').click((e) => {
2152        const $btn = $(e.target);
2153        $btn.prop('disabled', true);
2154        const start = $btn.data('start');
2155        let query_params = frappe.utils.get_query_params();
2156        query_params.start = start;
2157        let path = window.location.pathname + '?' + frappe.utils.get_url_from_dict(query_params);
2158        window.location.href = path;
2159    });
2160
2161    // Install guest cart handler after a delay (to run after ProductListing binds)
2162    setTimeout(function() {
2163        // Guest cart helpers
2164        function getGuestCartId() {
2165            const match = document.cookie.match(/guest_cart_id=([^;]+)/);
2166            return match ? match[1] : null;
2167        }
2168
2169        function setGuestCartId(cartId) {
2170            if (cartId) {
2171                const expires = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toUTCString();
2172                document.cookie = 'guest_cart_id=' + cartId + '; expires=' + expires + '; path=/; SameSite=Lax';
2173            }
2174        }
2175
2176        function isGuest() {
2177            return document.body.getAttribute('frappe-session-status') === 'logged-out';
2178        }
2179
2180        // Unbind existing handlers
2181        $('.page_content').off('click', '.btn-add-to-cart-list');
2182
2183        // Rebind with guest support
2184        $('.page_content').on('click', '.btn-add-to-cart-list', function(e) {
2185            const $btn = $(this);
2186
2187            if ($btn.hasClass('go-to-cart-grid') || $btn.hasClass('go-to-cart')) {
2188                return;
2189            }
2190
2191            e.preventDefault();
2192            e.stopPropagation();
2193            $btn.prop('disabled', true);
2194
2195            const item_code = $btn.data('item-code');
2196
2197            if (isGuest()) {
2198                frappe.call({
2199                    method: 'cslshoes_erp.api.guest_cart.update_guest_cart',
2200                    args: { item_code: item_code, qty: 1, cart_id: getGuestCartId() },
2201                    callback: function(r) {
2202                        $btn.prop('disabled', false);
2203                        if (r.message && r.message.success !== false) {
2204                            if (r.message.cart_token) setGuestCartId(r.message.cart_token);
2205                            else if (r.message.cart_id) setGuestCartId(r.message.cart_id);
2206
2207                            $btn.addClass('hidden');
2208                            $btn.parent().find('.go-to-cart-grid').removeClass('hidden');
2209
2210                            // BUG-W3 cart sub: route through canonical reader for
2211                            // server-truth (auditor C3 — drop inline math for
2212                            // consistency with logged-in path + wishlist pattern).
2213                            if (window.updateCslCartCount) window.updateCslCartCount();
2214
2215                            frappe.show_alert({ message: __('Added to cart'), indicator: 'green' }, 3);
2216                        } else if (r.message && r.message.error) {
2217                            frappe.show_alert({ message: r.message.error, indicator: 'red' }, 5);
2218                        }
2219                    },
2220                    error: function() { $btn.prop('disabled', false); }
2221                });
2222            } else {
2223                $btn.addClass('hidden');
2224                $btn.parent().find('.go-to-cart-grid').removeClass('hidden');
2225                // BUG-W3 cart sub: pass callback so we can re-fetch header count
2226                // after webshop's update_cart commits. Webshop's update_cart returns
2227                // the full quotation doc (no top-level cart_count), so re-fetch is
2228                // the only reliable path. Also re-enables $btn (defensive cleanup
2229                // — button is hidden via .hidden swap but re-enable covers the
2230                // failure path where the swap might not have happened).
2231                webshop.webshop.shopping_cart.update_cart({
2232                    item_code: item_code, qty: 1,
2233                    callback: function() {
2234                        $btn.prop('disabled', false);
2235                        if (window.updateCslCartCount) window.updateCslCartCount();
2236                    }
2237                });
2238            }
2239        });
2240
2241    }, 200);
2242});
2243</script>
2243
2244
2245</div>
2246
2247		<div class="page-footer"></div>
2248	</main>
2249	
2250</div>
2251
2252</div>
2253
2254
2255
2256	</main><style>
2257/* CSL Shoes Shared Footer */
2258.csl-footer {
2259  background: #111;
2260  color: #9ca3af;
2261  padding: 60px 0 30px;
2262  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
2263}
2264.csl-footer .container {
2265  max-width: 1400px;
2266  margin: 0 auto;
2267  padding: 0 20px;
2268}
2269.csl-footer-grid {
2270  display: grid;
2271  grid-template-columns: 2fr 1fr 1fr 1fr 1.5fr;
2272  gap: 40px;
2273  margin-bottom: 40px;
2274}
2275.csl-footer-brand p {
2276  font-size: 13px;
2277  line-height: 1.6;
2278  margin-bottom: 20px;
2279  max-width: 280px;
2280}
2281.csl-footer-logo {
2282  font-size: 20px;
2283  font-weight: 700;
2284  color: #fff;
2285  margin-bottom: 12px;
2286}
2287.csl-footer-heading {
2288  font-size: 13px;
2289  font-weight: 600;
2290  color: #fff;
2291  text-transform: uppercase;
2292  letter-spacing: 0.5px;
2293  margin-bottom: 16px;
2294}
2295.csl-footer-links { list-style: none; padding: 0; margin: 0; }
2296.csl-footer-links li { margin-bottom: 10px; }
2297.csl-footer-links a {
2298  font-size: 13px;
2299  color: #9ca3af;
2300  text-decoration: none;
2301  transition: color 0.2s;
2302}
2303.csl-footer-links a:hover { color: #fff; }
2304.csl-footer-contact p {
2305  font-size: 13px;
2306  margin-bottom: 6px;
2307}
2308.csl-footer-contact a { color: #fff; text-decoration: none; }
2309.csl-footer-bottom {
2310  padding-top: 30px;
2311  border-top: 1px solid #374151;
2312  display: flex;
2313  align-items: center;
2314  justify-content: space-between;
2315}
2316.csl-footer-copyright {
2317  font-size: 12px;
2318  color: #6b7280;
2319}
2320.csl-footer-payments { display: flex; gap: 10px; align-items: center; }
2321.csl-footer-payments img {
2322  height: 24px;
2323  width: auto;
2324  opacity: 0.6;
2325  transition: opacity 0.2s;
2326}
2327.csl-footer-payments img:hover { opacity: 0.9; }
2328
2329/* Footer Responsive - Tablet */
2330@media (max-width: 1024px) {
2331  .csl-footer-grid { grid-template-columns: repeat(2, 1fr); }
2332}
2333
2334/* Footer Responsive - Mobile */
2335@media (max-width: 768px) {
2336  .csl-footer { padding: 40px 0 20px; }
2337  .csl-footer-grid { grid-template-columns: 1fr; gap: 24px; }
2338  .csl-footer-brand p { font-size: 12px; }
2339  .csl-footer-heading { font-size: 12px; margin-bottom: 12px; }
2340  .csl-footer-links a { font-size: 12px; }
2341  .csl-footer-bottom { flex-direction: column; gap: 12px; text-align: center; }
2342  .csl-footer-payments { flex-wrap: wrap; justify-content: center; }
2343}
2344</style>
2345
2346<footer class="csl-footer" data-nosnippet>
2347  <div class="container">
2348    <div class="csl-footer-grid">
2349      <div class="csl-footer-brand">
2350        <p class="csl-footer-logo">CSL Shoes</p>
2351        <p>Premium leather footwear for the whole family since 2008. Genuine leather uppers, handcrafted quality, and exceptional customer service.</p>
2352        <p class="csl-footer-entity" style="font-size:12px;line-height:1.6;color:#9ca3af;margin-bottom:16px;max-width:280px;">Retail purchases on this website are sold by CSL Retail LLC. Wholesale purchases are sold by The CSL Group, Inc — both operate from 3 Alpine Court, Unit W156, Chestnut Ridge, NY 10977.</p>
2353      </div>
2354      <div>
2355        <div class="csl-footer-heading">Shop</div>
2356        <ul class="csl-footer-links">
2357          <li><a href="/all-products">All Products</a></li>
2358          <li><a href="/closure-type/Lace-Up/items">Oxfords</a></li>
2359          <li><a href="/closure-type/Velcro/items">Boys' Shoes</a></li>
2360          <li><a href="/closure-type/Slip-On/items">Loafers</a></li>
2361          <li><a href="/all-products">New Arrivals</a></li>
2362        </ul>
2363      </div>
2364      <div>
2365        <div class="csl-footer-heading">Support</div>
2366        <ul class="csl-footer-links">
2367          <li><a href="/size-guide">Size Guide</a></li>
2368          <li><a href="/shipping">Shipping Info</a></li>
2369          <li><a href="/returns">Returns</a></li>
2370          <li><a href="/guides/leather-shoe-care">Shoe Care</a></li>
2371          <li><a href="/help">FAQ</a></li>
2372          <li><a href="/blog">Blog</a></li>
2373        </ul>
2374      </div>
2375      <div>
2376        <div class="csl-footer-heading">Company</div>
2377        <ul class="csl-footer-links">
2378          <li><a href="/about">About Us</a></li>
2379          <li><a href="/contact">Contact</a></li>
2380          <li><a href="/privacy-policy">Privacy Policy</a></li>
2381          <li><a href="/terms-of-service">Terms of Service</a></li>
2382        </ul>
2383      </div>
2384      <div class="csl-footer-contact">
2385        <div class="csl-footer-heading">Contact Us</div>
2386        <p><a href="/cdn-cgi/l/email-protection#0960676f66496a7a657a61666c7a276a6664"><span class="__cf_email__" data-cfemail="30595e565f7053435c43585f55431e535f5d">[email&#160;protected]</span></a></p>
2387        <p>Mon - Fri: 9am - 6pm EST</p>
2388      </div>
2389    </div>
2390    <div class="csl-footer-bottom">
2391      <p class="csl-footer-copyright">&copy; 2026 CSL Shoes. All rights reserved.</p>
2392      <div class="csl-footer-payments">
2393        <img src="/assets/cslshoes_erp/images/visa.svg" alt="Visa" width="40" height="24">
2394        <img src="/assets/cslshoes_erp/images/mastercard.svg" alt="Mastercard" width="40" height="24">
2395        <img src="/assets/cslshoes_erp/images/amex.svg" alt="American Express" width="40" height="24">
2396      </div>
2397    </div>
2398  </div>
2399</footer>
2400	
2401	<a href="https://wa.me/18456946700?text=Hi%2C%20I%20have%20a%20question%20about%20your%20shoes"
2402	   target="_blank" rel="noopener"
2403	   class="csl-whatsapp-widget"
2404	   aria-label="Chat with us on WhatsApp"
2405	   style="position:fixed;bottom:24px;right:24px;z-index:9998;width:56px;height:56px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(0,0,0,0.15);transition:transform 0.2s;"
2406	   onmouseover="this.style.transform='scale(1.1)'"
2407	   onmouseout="this.style.transform='scale(1)'">
2408	  <svg viewBox="0 0 24 24" width="28" height="28" fill="white">
2409	    <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.
2409198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/>
2410	  </svg>
2411	</a>
vendor: 110 bytes, lines 2411-2412
2411
2412	<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2412<script>
2413		frappe.boot = {
2414 "apps_data": {
2415  "apps": [],
2416  "default_path": "",
2417  "is_desk_apps": 1
2418 },
2419 "assets_json": {
2420  "bank-reconciliation-tool.bundle.js": "/assets/erpnext/dist/js/bank-reconciliation-tool.bundle.3OD5XE4B.js",
2421  "billing.bundle.js": "/assets/frappe/dist/js/billing.bundle.XJXMQXLI.js",
2422  "bom_configurator.bundle.js": "/assets/erpnext/dist/js/bom_configurator.bundle.KVVOL5AV.js",
2423  "bootstrap-4-web.bundle.js": "/assets/frappe/dist/js/bootstrap-4-web.bundle.OGQ7JEDG.js",
2424  "build_events.bundle.js": "/assets/frappe/dist/js/build_events.bundle.BCX32TWL.js",
2425  "calendar.bundle.js": "/assets/frappe/dist/js/calendar.bundle.4A4YITIU.js",
2426  "controls.bundle.js": "/assets/frappe/dist/js/controls.bundle.GHTVO2AR.js",
2427  "csl-web.bundle.js": "/assets/cslshoes_erp/dist/js/csl-web.bundle.SBA57Y6F.js",
2428  "cslshoes_erp-web.bundle.js": "/assets/cslshoes_erp/dist/js/cslshoes_erp-web.bundle.VKBRYFDI.js",
2429  "data_import_tools.bundle.js": "/assets/frappe/dist/js/data_import_tools.bundle.AIMRIHAY.js",
2430  "desk.bundle.css": "/assets/frappe/dist/css/desk.bundle.E3JNXVFK.css",
2431  "desk.bundle.js": "/assets/frappe/dist/js/desk.bundle.LRVAENER.js",
2432  "dialog.bundle.js": "/assets/frappe/dist/js/dialog.bundle.4Y7AGZYX.js",
2433  "email.bundle.css": "/assets/frappe/dist/css/email.bundle.FRP6ZWO5.css",
2434  "erpnext-web.bundle.css": "/assets/erpnext/dist/css/erpnext-web.bundle.XAPV6OJR.css",
2435  "erpnext.bundle.css": "/assets/erpnext/dist/css/erpnext.bundle.U3ZULTHY.css",
2436  "erpnext.bundle.js": "/assets/erpnext/dist/js/erpnext.bundle.W4BKB7EY.js",
2437  "erpnext_email.bundle.css": "/assets/erpnext/dist/css/erpnext_email.bundle.QDPP6JFP.css",
2438  "file_uploader.bundle.js": "/assets/frappe/dist/js/file_uploader.bundle.NFWQ74RI.js",
2439  "form.bundle.js": "/assets/frappe/dist/js/form.bundle.V6TJPRRA.js",
2440  "form_builder.bundle.js": "/assets/frappe/dist/js/form_builder.bundle.TJDI53IC.js",
2441  "frappe-web.bundle.js": "/assets/frappe/dist/js/frappe-web.bundle.6AGRRLFL.js",
2442  "hierarchy-chart.bundle.js": "/assets/hrms/dist/js/hierarchy-chart.bundle.5E224PCR.js",
2443  "hrms.bundle.css": "/assets/hrms/dist/css/hrms.bundle.2Y752HAB.css",
2444  "hrms.bundle.js": "/assets/hrms/dist/js/hrms.bundle.QS2GRVNQ.js",
2445  "interview.bundle.js": "/assets/hrms/dist/js/interview.bundle.C7CDEMYA.js",
2446  "item-dashboard.bundle.js": "/assets/erpnext/dist/js/item-dashboard.bundle.7LUKZCYJ.js",
2447  "kanban_board.bundle.js": "/assets/frappe/dist/js/kanban_board.bundle.WBHS2NSO.js",
2448  "libs.bundle.js": "/assets/frappe/dist/js/libs.bundle.JEM3HUCP.js",
2449  "list.bundle.js": "/assets/frappe/dist/js/list.bundle.C5NWOGPL.js",
2450  "login.bundle.css": "/assets/frappe/dist/css/login.bundle.PUSGKFZL.css",
2451  "logtypes.bundle.js": "/assets/frappe/dist/js/logtypes.bundle.WKQH7KBM.js",
2452  "onboarding_tours.bundle.js": "/assets/frappe/dist/js/onboarding_tours.bundle.3QPQU5AO.js",
2453  "performance.bundle.js": "/assets/hrms/dist/js/performance.bundle.63UL5NS7.js",
2454  "photoswipe.bundle.js": "/assets/frappe/dist/js/photoswipe.bundle.YSXZQA64.js",
2455  "point-of-sale.bundle.js": "/assets/erpnext/dist/js/point-of-sale.bundle.QTZY4HXK.js",
2456  "print.bundle.css": "/assets/frappe/dist/css/print.bundle.TFESFRRQ.css",
2457  "print_format.bundle.css": "/assets/frappe/dist/css/print_format.bundle.G3JSEXTM.css",
2458  "print_format_builder.bundle.js": "/assets/frappe/dist/js/print_format_builder.bundle.EY2DZ4XK.js",
2459  "report.bundle.css": "/assets/frappe/dist/css/report.bundle.YRLG53MK.css",
2460  "report.bundle.js": "/assets/frappe/dist/js/report.bundle.YZUQRDTQ.js",
2461  "rtl_desk.bundle.css": "/assets/frappe/dist/css-rtl/desk.bundle.GTUX6NUS.css",
2462  "rtl_email.bundle.css": "/assets/frappe/dist/css-rtl/email.bundle.S6OLPJLO.css",
2463  "rtl_erpnext-web.bundle.css": "/assets/erpnext/dist/css-rtl/erpnext-web.bundle.MY3OHIQG.css",
2464  "rtl_erpnext.bundle.css": "/assets/erpnext/dist/css-rtl/erpnext.bundle.NFI4TDNU.css",
2465  "rtl_erpnext_email.bundle.css": "/assets/erpnext/dist/css-rtl/erpnext_email.bundle.4SUQQPOC.css",
2466  "rtl_hrms.bundle.css": "/assets/hrms/dist/css-rtl/hrms.bundle.2VFWZIH4.css",
2467  "rtl_login.bundle.css": "/assets/frappe/dist/css-rtl/login.bundle.LAUNAKDN.css",
2468  "rtl_print.bundle.css": "/assets/frappe/dist/css-rtl/print.bundle.46KW2M23.css",
2469  "rtl_print_format.bundle.css": "/assets/frappe/dist/css-rtl/print_format.bundle.WRCRSWVB.css",
2470  "rtl_report.bundle.css": "/assets/frappe/dist/css-rtl/report.bundle.J47TQ5QB.css",
2471  "rtl_web_form.bundle.css": "/assets/frappe/dist/css-rtl/web_form.bundle.V6TATNAO.css",
2472  "rtl_webshop-web.bundle.css": "/assets/webshop/dist/css-rtl/webshop-web.bundle.MXY3MF47.css",
2473  "rtl_website.bundle.css": "/assets/frappe/dist/css-rtl/website.bundle.UYAJRC2H.css",
2474  "sentry.bundle.js": "/assets/frappe/dist/js/sentry.bundle.AX44GVWW.js",
2475  "syntax_highlighting.bundle.js": "/assets/frappe/dist/js/syntax_highlighting.bundle.YHGNRCUE.js",
2476  "telemetry.bundle.js": "/assets/frappe/dist/js/telemetry.bundle.RXBBNH3H.js",
2477  "user_onboarding.bundle.js": "/assets/frappe/dist/js/user_onboarding.bundle.RGMWXG2C.js",
2478  "video_player.bundle.js": "/assets/frappe/dist/js/video_player.bundle.DUYYLSFO.js",
2479  "web.bundle.js": "/assets/webshop/dist/js/web.bundle.WLOGYSZO.js",
2480  "web_form.bundle.css": "/assets/frappe/dist/css/web_form.bundle.6KU4CLFY.css",
2481  "web_form.bundle.js": "/assets/frappe/dist/js/web_form.bundle.ALVCCXE4.js",
2482  "webshop-web.bundle.css": "/assets/webshop/dist/css/webshop-web.bundle.GQDT63VG.css",
2483  "website.bundle.css": "/assets/frappe/dist/css/website.bundle.GD6PKXQI.css",
2484  "workflow_builder.bundle.js": "/assets/frappe/dist/js/workflow_builder.bundle.O2QPXUEI.js"
2485 },
2486 "is_fc_site": 0,
2487 "lang": "en-US",
2488 "sitename": "csl.local",
2489 "sysdefaults": {
2490  "currency": "USD",
2491  "date_format": "mm/dd/yyyy",
2492  "first_day_of_the_week": "Sunday",
2493  "float_precision": 3,
2494  "number_format": "#,###.##",
2495  "time_format": "HH:mm:ss"
2496 },
2497 "time_zone": {
2498  "system": "America/New_York",
2499  "user": "America/New_York"
2500 }
2501}
2502		frappe.sys_defaults = frappe.boot.sysdefaults;
2503	</script>
2503
2504	
2505	
2505<script type="text/javascript" src="/assets/cslshoes_erp/dist/js/csl-web.bundle.SBA57Y6F.js"></script>
2505
2506	
2507	
2507<script type="text/javascript" src="/website_script.js" defer></script>
2507
2508	
2508<script type="text/javascript" src="/assets/webshop/dist/js/web.bundle.WLOGYSZO.js" defer></script>
2508
2509	
2509<script type="text/javascript" src="/assets/cslshoes_erp/dist/js/cslshoes_erp-web.bundle.VKBRYFDI.js" defer></script>
2509
2510	
2510<script type="text/javascript" src="/assets/cslshoes_erp/js/csl-analytics.js?v=20260528a" defer></script>
2510
2511	
2511<script type="text/javascript" src="/assets/cslshoes_erp/js/product_image_autoplay.js?v=20260613a" defer></script>
2511
2512	
2512<script type="text/javascript" src="/assets/cslshoes_erp/js/compare.js" defer></script>
2512
2513	
2513<script type="text/javascript" src="/assets/cslshoes_erp/js/tile_wishlist.js?v=20260517e" defer></script>
2513
2514	
2514<script type="text/javascript" src="/assets/cslshoes_erp/js/all_products_patches.js?v=20260613a" defer></script>
2514
2515	
2515<script type="text/javascript" src="/assets/cslshoes_erp/js/wishlist_page.js?v=20260517c" defer></script>
2515
2516	
2516<script type="text/javascript" src="/assets/cslshoes_erp/js/wholesale_order_banner.js?v=20260520c" defer></script>
2516
2517	
2517<script type="text/javascript" src="/assets/cslshoes_erp/js/sso_login_order.js?v=20260531b" defer></script>
2517
2518		
2518<script>frappe.ready(() => {
2519	// Bounded polling guard: webshop bundle is defer-loaded, may not be ready
2520	// when frappe.ready fires on DOMContentLoaded. Without this, "webshop is
2521	// not defined" ReferenceError kills the whole init block intermittently.
2522	let retries = 0;
2523	const maxRetries = 100;  // 100 * 50ms = 5s max wait (covers slow mobile cold cache)
2524	const initWhenReady = () => {
2525		if (typeof webshop !== 'undefined' && webshop.ProductView && webshop.webshop && webshop.webshop.wishlist) {
2526			// Patch webshop.ProductView to support search parameter from URL
2527			const originalGetQueryFilters = webshop.ProductView.prototype.get_query_filters;
2528			webshop.ProductView.prototype.get_query_filters = function() {
2529				const filters = originalGetQueryFilters.call(this);
2530				const params = frappe.utils.get_query_params();
2531				if (params.search) {
2532					filters.search = params.search;
2533				}
2534				return filters;
2535			};
2536
2537			class ProductListing {
2538				constructor() {
2539					let me = this;
2540					let is_item_group_page = $(".item-group-content").data("item-group");
2541					this.item_group = is_item_group_page || null;
2542
2543					let view_type = localStorage.getItem("product_view") || "List View";
2544
2545					// Render Product Views, Filters & Search
2546					new webshop.ProductView({
2547						view_type: view_type,
2548						products_section: $('#product-listing'),
2549						item_group: me.item_group
2550					});
2551
2552					this.bind_card_actions();
2553					this.hideClassicoes();
2554				}
2555
2556				bind_card_actions() {
2557					// Bind wishlist for all users
2558					webshop.webshop.wishlist.bind_wishlist_action();
2559					// Cart handler is bound in index.html script block (supports both guests and logged-in)
2560				}
2561
2562				hideClassicoes() {
2563					// Hide Classicoes brand from filters
2564					function hide() {
2565						const checkboxes = document.querySelectorAll('.filter-block .form-check, .filter-block .checkbox');
2566						checkboxes.forEach(function(div) {
2567							const text = div.textContent.trim();
2568							if (text === 'Classicoes') {
2569								div.style.display = 'none';
2570							}
2571						});
2572					}
2573
2574					setTimeout(hide, 100);
2575					setTimeout(hide, 500);
2576					setTimeout(hide, 1000);
2577					setTimeout(hide, 2000);
2578				}
2579			}
2580
2581			new ProductListing();
2582		} else if (retries++ < maxRetries) {
2583			setTimeout(initWhenReady, 50);
2584		} else {
2585			console.error('[all-products] webshop bundle did not load within 5s; ProductView could not initialize. Check that /assets/webshop/dist/js/web.bundle.*.js loaded successfully.');
2586		}
2587	};
2588	initWhenReady();
2589});
2590</script>
2590<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"02110bd8a9eb40e98c9fc92b32ecf849","r":1,"spa":2}' crossorigin="anonymous"></script>
2590
2591</body>
2592</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.