PageSourceSearch

https://www.boschendalwines.com/news

html boschendalwines.com collected 2026-09-26 07:22:45 UTC 55,236 bytes, 1,462 lines download raw bytes

1<!doctype html>
2<html lang="en">
3<head>
4	<meta charset="utf-8">
5	<meta http-equiv="x-ua-compatible" content="ie=edge">
6
7	<!-- Mobile Metas -->
8	<meta name="viewport" content="width=device-width, user-scalable=1, initial-scale=1, maximum-scale=1">
9	<meta name="mobile-web-app-capable" content="yes">
10
11	<!-- Meta tags -->
12	<title>News | Boschendal Wine Estate Updates and Awards | Boschendal</title>
13
14	<meta name="generator" content="OrderEazi CMS">
15	<meta name="title" content="News | Boschendal Wine Estate Updates and Awards | Boschendal" />
16	<meta name="description" content="Stay up to date with Boschendal&#x27;s latest news, including wine awards, harvest updates and estate announcements from one of South Africa&#x27;s oldest wine farms." />
17		<meta name="keywords" content="boschendal news, boschendal wine awards, boschendal harvest, south african wine news, boschendal announcements, boschendal press releases, wine estate updates" />
18
19	<!-- Canonical SEO -->
20	<link rel="canonical" href="https://www.boschendalwines.com/news" />
21
22	<!-- Open Graph Tags -->
23	<meta property="og:title" content="News | Boschendal Wine Estate Updates and Awards | Boschendal" />
24	<meta property="og:url" content="https://www.boschendalwines.com/news" />
25	<meta property="og:type" content="website" />
26	<meta property="og:description" content="Stay up to date with Boschendal&#x27;s latest news, including wine awards, harvest updates and estate announcements from one of South Africa&#x27;s oldest wine farms." />
27	<meta property="og:image" content="https://content.storefront7.co.za/stores/za.co.storefront8.luro5t.boschendal/pictures/boschendall-white-full_9gx3.png" />
28	<meta property="og:image:width" content="1200" />
29	<meta property="og:image:height" content="630" />
30
31	<!-- Twitter Card Tags -->
32	<meta name="twitter:card" content="summary_large_image" />
33	<meta name="twitter:title" content="News | Boschendal Wine Estate Updates and Awards | Boschendal" />
34	<meta name="twitter:description" content="Stay up to date with Boschendal&#x27;s latest news, including wine awards, harvest updates and estate announcements from one of South Africa&#x27;s oldest wine farms." />
35	<meta name="twitter:image" content="https://content.storefront7.co.za/stores/za.co.storefront8.luro5t.boschendal/pictures/boschendall-white-full_9gx3.png" />
36	<meta name="twitter:image:width" content="1200" />
37	<meta name="twitter:image:height" content="675" />
38
39	<!-- Breadcrumb structured data (BreadcrumbList) -->
40
41	<!-- Organization structured data (Organization) -->
42	
43
44
45	
45<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
45
46
47	<!-- Stylesheets -->
48				<link data-stylesheet="main" rel="stylesheet" href="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/themes/Boschendal_SF8/61b4e2ec-7623-4099-acd1-8076be189f32.css?r=2026092607" />
49
50	
51		<style
52			
53			
54			type="text/css">
55			<style>
56.banner-overlay {
57  position: absolute;
58  top: 0;
59  left: 0;
60  width: 100%;
61  height: 100%;
62  display: flex;
63  flex-direction: column;
64  justify-content: flex-start;
65  align-items: center;
66  text-align: center;
67  padding: 40px 20px 0;
68  box-sizing: border-box;
69}
70
71.banner-overlay__title {
72  font-family: Georgia, 'Times New Roman', serif;
73  font-weight: 400;
74  font-size: clamp(28px, 5vw, 56px);
75  line-height: 1.1;
76  letter-spacing: 2px;
77  color: #ffffff;
78  text-transform: uppercase;
79  margin: 0 0 30px;
80  max-width: 500px;
81}
82
83.banner-overlay__logo {
84  width: 90%;
85  max-width: 520px;
86  height: auto;
87  margin-top: auto;
88  margin-bottom: 30px;
89}
90</style>
91		</style>
92
93
94	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.29.0/codemirror.min.css" />
95	<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.min.css">
96	<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css" />
97	<link rel="stylesheet" href="https://content.storefront7.co.za/common/css/flatpickr/material_blue.css" />
98
99	
99<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
99
100	
100<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" defer></script>
100
101	
101<script src="https://use.fontawesome.com/36070ee43c.js" defer></script>
101
102	
102<script src="//content.storefront7.co.za/common/scripts/lazyload.min.js"></script>
102
103	
103<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.2/jquery.matchHeight-min.js" type="text/javascript"></script>
103
104
105	
105<script src="//content.storefront7.co.za/common/scripts/jquery.mustache.min.js" type="text/javascript"></script>
105
106	
106<script src="//content.storefront7.co.za/common/scripts/mustache.min.js" type="text/javascript"></script>
106
107	
107<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.client.sdk.min.js?v=26092607"></script>
107
108	
108<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.events.appear.min.js?v=26092607"></script>
108
109	
109<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-tiny-pubsub/0.7.0/ba-tiny-pubsub.min.js"></script>
109
110	
110<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js" type="text/javascript"></script>
110
111
112	
113<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.optin.min.js?v=26092607"></script>
vendor: 1 bytes, line 113
113
114<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.facebook-pixel.min.js?v=26092607"></script>
vendor: 1 bytes, line 114
114
115<script type="text/javascript">
116    var optinMaxAgeMinutes = 43200;
117
118    // Initialize Optin SDK
119
120            Optin.Add('Google Analytics 4', 'G-53ZR0Z0N7B', 'performance');
121
122            Optin.Add('Google Tag Manager', 'GTM-NLM8TF3', 'performance');
123
124</script>
124
125<noscript>
126</noscript>
127
128
129	
129<script type="text/javascript">
130		var sdk = new SDK.default();
131		Optin.Initialize();
132	</script>
132
133
134	<!-- Enhanced eComerce -->
135	
136
137	
137<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.seo.enhancedecommerce.min.js?v=26092607"
138			id="enhanced-ecommerce"
139	        data-product-impressions="True"
140			data-product-click-tracking="True"
141			data-product-details="True"
142			data-checkout-tracking="True"
143			data-purchase-tracking="True"
144			data-cart-changes="True"></script>
144
145
146
147	
147<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.api.min.js?v=26092607"
148		id="ApiScript"
149		data-api-key="fpt4bubtmwduh99rpsf16xsnb9pcibed"
150		data-reference="BOT-SESSION-2">
151</script>
151
152	
153
154
155	<!--[if lt IE 9]>
156		
156<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
156
157		
157<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
157
158	<![endif]-->
vendor: 84 bytes, lines 158-163
158
159	
160    <script src="https://www.google.com/recaptcha/api.js" defer></script>
161
162	
163    
163<meta name="google-site-verification" content="WijcxTgU7QE_CEHnPVHqBC67HeMqPEREX-rw7O0WUFg" />
164
165	
166<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.google-analytics-4.min.js?v=26092607"></script>
166
167    
167<script defer>
168        $(function () {
169            if(window.SFGA) SFGA.Init('G-53ZR0Z0N7B', '', 'False' == 'True');
170        });
171    </script>
171
172
173	
174
175			<link rel="icon" type="image/x-icon" href="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.boschendal/pictures/6_sac4.ico?height=32&width=32" />
176
177
178	
179</head>
180<body>
vendor: 77 bytes, lines 180-182
180
181				<noscript>
182				<iframe src="https://www.googletagmanager.com/ns.html?id=
182GTM-NLM8TF3
vendor: 101 bytes, lines 182-186
182"
183				        height="0" width="0" style="display:none;visibility:hidden"></iframe>
184			</noscript>
185
186	
186<div id="notification">
187		<div class="alert" id="message">
188			<div class="ui-notify #{style}">
189				<div class="ui-notify-contain">
190					<p><i class="fa fa-#{icon}"></i>#{text}</p>
191					<a data-dismiss="alert" class="btn btn-ok">OK</a>
192					<a href="/checkout/cart" class="btn btn-view-cart">View Cart</a>
193				</div>
194				<a class="notify-close" data-dismiss="alert"><i class="fa fa-close"></i></a>
195			</div>
196		</div>
197	</div>
198	<zone section="Before Header">
199</zone>
200
201	<!-- header starts -->
202<header class="masthead header-b">
203	<div class="top-bar">
204		<div class="container">
205			<button class="btn-country-selector" data-toggle="modal" data-target="#currency-selector">
206	<span class="country-delivery-flag"><i class="flag-sm flag-sm-ZA"></i></span>
207	<span class="country-currency-name">ZAR</span>
208	<span class="country-currency-code">(R)</span>
209</button>
210			<button type="button" class="btn-branch-selector" id="branch-selector-btn" aria-label="Select branch" title="Select your branch for stock and checkout" style="display: none;">
211	<i class="fa fa-map-marker" aria-hidden="true"></i>
212	<span class="branch-selector-label" id="branch-selector-label">Choose branch</span>
213</button>
214
215			<div class="utils">
216					<a class="util-mail" href="mailto:[email protected]"><i class="fa fa-envelope"></i>[email protected]</a>
217			</div>
218				<minicart>
219		<span class="placeholder"></span>
220	</minicart>
221	
221<script id="minicart_html" type="text/html">
222		<ul class="mini-cart">
223			<li class="dropdown">
224				<a class="desktop-menu-mini-cart dropdown-toggle" data-toggle="dropdown" href="/checkout/cart" role="button" aria-haspopup="true" aria-expanded="false">
225					<i class="fa fa-shopping-cart"></i><span class="mini-cart-count">{{ItemCount}}</span> <span class="mini-cart-text-contain">item(s)</span><i class="fa fa-chevron-down"></i>
226				</a>
227				<a class="mobile-menu-mini-cart" href="/checkout/cart">
228					<i class="fa fa-shopping-cart"></i><span class="mini-cart-count">{{ItemCount}}</span> <span class="mini-cart-text-contain">item(s)</span>
229				</a>
230				<div class="dropdown-menu">
231					{{^HasItems}}
232					<p class="cart-empty">Your cart is empty.</p>
233					{{/HasItems}}
234					{{#HasItems}}
235					<ul class="mini-cart-content">
236						{{#Items}}
237						<li>
238							<div class="mini-cart-item">
239								<a href="{{Url}}" class="mini-cart-img-contain">
240									<span class="mini-cart-img" role="img" aria-label="" style="background-image: url('{{Picture}}');"></span>
241								</a>
242								<a href="{{Url}}" class="mini-cart-title">
243									{{Name}}
244								</a>
245								<span class="mini-cart-extra">x{{Qty}}</span>
246								{{#IsEnquiryProduct}}
247								<span class="mini-cart-enquiry">Enquiry</span>
248								{{/IsEnquiryProduct}}
249								{{#Price}}
250								<span class="mini-cart-price">{{PriceText}}</span><span class="incl-text">Incl. VAT</span>
251								{{/Price}}
252								<button type="button" class="mini-cart-remove" data-basket-item-id="{{Id}}"
253								   sf-ga-trigger="click"
254								   sf-ga-event="remove_from_cart"
255								   sf-ga-data-endpoint='/ajax/google-analytics-4/cart/item?itemId={{Id}}'><i class="fa fa-close"></i></button>
256							</div>
257						</li>
258						{{/Items}}
259					</ul>					
260					{{#Total}}
261					<div class="mini-cart-total clearfix">
262						<span class="mini-cart-total-title">Total</span>
263						<span class="mini-cart-total-amount">{{TotalText}}</span>
264					</div>
265					{{/Total}}
266					{{#AllowWallet}}
267					<div class="mini-cart-total clearfix">
268						<span class="mini-cart-total-title">Available Wallet Credit</span>
269						<span class="mini-cart-total-amount">{{TotalWalletPointsAvailableText}}</span>
270					</div>
271					{{/AllowWallet}}
272
273					<div class="mini-cart-footer clearfix">
274						<a href="/checkout/cart" class="btn">View Cart</a>
275						<button onclick="Cart.MiniCart.ClearCart()" class="btn btn-danger">Clear Cart</button>
276					</div>
277					{{/HasItems}}
278				</div>
279			</li>
280		</ul>
281	</script>
281
282	
282<script>
283		$(function () {
284			if (window.location.pathname.indexOf('checkout') <= 0)
285				Cart.MiniCart.GetMiniCart();
286			else {
287				$('minicart').remove();
288			}
289		});
290	</script>
290
291
292			<account-menu>
293	<span class="placeholder"></span>
294</account-menu>
295
296<script id="accountmenu_html" type="text/html">
297	<ul class="account-dropdown">
298		{{#LoggedIn}}
299		<li class="dropdown">
300			<button type="button" class="dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
301				<span class="user-name-switch">{{Name}}</span><i class="fa fa-user"></i><i class="fa fa-chevron-down"></i>
302			</button>
303			<div class="dropdown-menu">
304				<ul>
305					{{#Links}}
306					<li><a href="{{Url}}"><i class="{{Icon}}"></i>{{Text}}</a></li>
307					{{/Links}}
308					{{^HideAccountSwitch}}
309						{{#MultipleAccounts}}
310							<li><a href="/account/switch"><i class="fa fa-users"></i>Switch Account</a></li>
311						{{/MultipleAccounts}}
312					{{/HideAccountSwitch}}
313					<li><a href="/account/logout" class="btn">Sign Out</a></li>
314				</ul>
315			</div>
316		</li>
317		{{/LoggedIn}}
318		{{^LoggedIn}}
319		<li class="account-lnk-sign-in"><a href="/account/login">Sign In</a></li>
320		<li class="account-lnk-register"><a href="/account/register">Register</a></li>
321		{{/LoggedIn}}
322	</ul>
323</script>
vendor: 1 bytes, line 323
323
324<script>
325	sdk.profile.get({
326		success: function (response) {
327			var data = response.data;
328			var roles = data.Roles == undefined ? "" : data.Roles;
329			var profileModel = {
330				Backoffice: data.LoggedIn ? roles.indexOf("BackOffice") > -1 : false,
331				MultipleAccounts: data.LoggedIn ? roles.indexOf("MultipleAccounts") > -1 : false,
332				HideAccountSwitch: data.HideAccountSwitch
333			}
334			$('account-menu').html(Mustache.render($('#accountmenu_html').html(), $.extend({}, data, profileModel)));
335		},
336		error: function (resp) { console.log("Error Loading Account Menu:", resp) }
337	});
338</script>
338
339		</div>
340	</div><!-- /.top-bar -->
341	<nav class="navbar">
342		<div class="sub-bar">
343			<div class="container">
344				<div class="navbar-header">
345					<div class="navbar-toggle-contain">
346						<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
347							<span class="sr-only">Toggle navigation</span>
348							<span class="icon-bar"></span>
349							<span class="icon-bar"></span>
350							<span class="icon-bar"></span>
351							<span class="navbar-helper-text">Menu</span>
352						</button>
353					</div>
354					<a class="navbar-brand" href="/">
355		<img class="img-responsive update" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.boschendal/pictures/boschendall-white-full_9gx3.png" alt="Boschendal" />
356</a>
357
358<a class="navbar-brand scrolling-logo" style="display: none;" href="/">
359		<img class="img-responsive update" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/files/boschendal-white-small-c8m0.png" alt="store-logo-scroll" />
360</a>
361
362					<div class="mobile-account">
363						<account-menu></account-menu>
364					</div>
365					<div class="mobile-cart">
366							<minicart></minicart>
367					</div>
368              	</div>
369				<div class="navbar-ctas">
370						<div class="mini-search">
371		<form method="get" action="/products/browse">
372			<input type="search" name="keywords" placeholder="Search" autocomplete="off" solr-predictive />
373			<button type="submit" class="btn">
374				<i class="fa fa-search"></i>
375			</button>
376		</form>
377	</div>
378	<!-- /.mini-search -->
379	
379<script type="text/javascript">
380
381		$('[name=keywords]').on('keypress',
382			function(e) {
383
384				if (e.which === 32 || e.which === 13 || e.which === 45 || e.which === 46) return;
385
386				if (e.which < 48 ||
387					(e.which > 57 && e.which < 65) ||
388					(e.which > 90 && e.which < 97) ||
389					e.which > 122) {
390					e.preventDefault();
391				}
392			});
393
394		$('[name=keywords]').on('input',
395			function(e) {
396				$(this).val(function(i, v) {
397					return v.replace(/[<>]/g, '');
398				});
399			});
400
401		$('.mini-search form').on('submit',
402			function(e) {
403				var term = $('input[name=keywords]').val();
404				if (window.SFGA) SFGA.Event('search', '{"search_term":"' + term + '"}');
405				if (window.FBQ) FBQ.search({ search_string: term })
406			});
407
408	</script>
408
409
410				</div>
411			</div>
412		</div>
413		<zone section="Before Menu">
414</zone>
415
416		<div class="nav-contain">
417			<div class="container">
418					<div class="predictive-search row">
419						<div class="container">
420							<div class="predictive-search-holder">
421								<div class="result-contain clearfix" style="display:none;">
422	<div class="search-results col-md-8 col-lg-8">
423		<div class="product-result-holder">
424			<h4>Matching Products Found<small class="hidden-xs">Found: <span></span></small><a href="/products/browse" title="view all search results">View All</a></h4>
425			<div class="product-results">
426				<p>NONE</p>
427			</div>
428		</div>
429	</div>
430	<div class="search-side-bar col-md-4 col-lg-4">
431		<div class="category-result-holder">
432			<h4>Matching Categories Found</h4>
433			<div class="category-results">
434				<p>NONE</p>
435			</div>
436		</div>
437		<div class="brand-result-holder hidden-xs">
438			<h4>Matching Brands Found</h4>
439			<div class="brand-results">
440				<p>NONE</p>
441			</div>
442		</div>
443		<div class="suggestion-result-holder hidden-xs">
444			<h4>Suggestions</h4>
445			<div class="suggestion-results">
446				<p>NONE</p>
447			</div>
448		</div>
449	</div>
450</div>
451<div class="search-more-characters clearfix " style="display:none;">
452	<p>Search term too short. Please add more characters.</p>
453</div>
454<div class="search-loading clearfix" style="display:none;">
455	<p>Searching...</p>
456</div>
457<div class="search-noresults clearfix" style="display:none;">
458	<p>No results found matching "<span></span>"...</p>
459</div>
460							</div>
461						</div>
462					</div>
463				<div id="navbar" class="navbar-collapse collapse">
464					<ul class="nav navbar-nav">
465		 <li class="">
466				 <a data-type="Page" data-contextId="222" href="/our-story" target=""><i class="nav-icon "></i>Our Story</a>
467		 </li>
468		 <li class="">
469				 <a data-type="Page" data-contextId="223" href="/our-winemakers" target=""><i class="nav-icon "></i>Our Winemakers</a>
470		 </li>
471		 <li class="">
472				 <a data-type="Page" data-contextId="224" href="/wines" target=""><i class="nav-icon "></i>Wines</a>
473		 </li>
474		 <li class="">
475				 <a data-type="Link" data-contextId="33" href="/products/splash" target=""><i class="nav-icon "></i>Shop</a>
476		 </li>
477		 <li class="">
478				 <a data-type="Page" data-contextId="225" href="/estate" target=""><i class="nav-icon "></i>The Estate</a>
479		 </li>
480		 <li class="dropdown">
481				 <a data-type="Link" data-contextId="377" href="#" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="nav-icon"></i>Partnerships<i class="fa fa-chevron-down"></i></a>
482						<ul class="dropdown-menu">
483											<li data-contextId="378" data-path="/partnerships/paul-womens-month-campaign"><a href="/partnerships/paul-womens-month-campaign" target="_self"><i class="nav-icon "></i>PAUL Bakeries</a></li>
484						</ul>
485		 </li>
486		 <li class="">
487				 <a data-type="Link" data-contextId="362" href="/news" target="_self"><i class="nav-icon "></i>News</a>
488		 </li>
489		 <li class="">
490				 <a data-type="Page" data-contextId="226" href="/contact" target=""><i class="nav-icon "></i>Contact Us</a>
491		 </li>
492</ul>
493				</div>
494			</div>
495		</div>
496	</nav>
497</header>
498<!-- header ends -->
499
500	<zone section="Before Main">
501</zone>
502
503	<!-- main content starts -->
504	<main class="main-content">
505		<div class="news-post-contain">
506	<div class="page-header">
507		<div class="container">
508			<h1>News</h1>
509		</div>
510	</div>
511	<div class="container">
512		<div class="row">
513			<div class="col-sm-8 col-lg-8 col-md-9">
514						<div class="col-sm-12 col-md-6">
515							<div class="news-post-item news-top-story">
516									<a class="news-post-img" href="/news/trophy-wine-show-2026">
517										<img class="img-responsive" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/pictures/639167677069119242/trophy-wine-show-2026---press-piece-news-banner-mmtbm0.png" alt="Boschendal Winning Trophy&#x27;s" loading="lazy" />
518									</a>
519								<div class="news-post-content">
520									<div class="news-post-meta">
521										<h2>
522											<a href="/news/trophy-wine-show-2026">Boschendal Wins Big at Trophy Wine Show 2026</a>
523										</h2>
524										<div class="news-post-date">
525											Tuesday, 09 June 2026
526										</div>
527									</div>
528										<div class="news-article-summary">
529											<p>Boschendal secured three trophies at the Trophy Wine Show 2026, including Best Red Blend and Best Pinot Noir, plus gold medals across major 2026 wine competitions.
529</p>
530										</div>
531								</div>
532							</div>
533						</div>
534						<div class="col-sm-12 col-md-6">
535							<div class="news-post-item news-side-item">
536									<a class="news-post-img" href="/harvest-2026-1">
537										<img class="img-responsive" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/pictures/639186103589090189/1-4wtw1s.png" alt="Boschendal Wine Estate" loading="lazy" />
538									</a>
539								<div class="news-post-content">
540									<div class="news-post-meta">
541										<h2>
542											<a href="/harvest-2026-1">Harvest 2026 | Wine Estate</a>
543										</h2>
544										<div class="news-post-date">
545											Thursday, 02 April 2026
546										</div>
547									</div>
548								</div>
549							</div>
550						</div>
551				<div style="float: right;">
552					<style>
553	.navigation-pager a[disabled="disabled"] {
554		pointer-events:none;
555		cursor:not-allowed;
556		opacity: .4;
557	}
558</style>
559
560	<nav class="navigation-pager" aria-label="Page navigation">
561		<ul class="pagination">
562			<li>
563				<a href="/news?&page=1" disabled="disabled"  aria-label="First">
564					<span aria-hidden="true"><i class="fa fa-angle-double-left"></i></span>
565				</a>
566			</li>
567			<li>
568				<a href="/news?&page=0" disabled="disabled" aria-label="Previous">
569					<span aria-hidden="true"><i class="fa fa-angle-left"></i></span>
570				</a>
571			</li>
572			<li class="pagination-select">
573				<select name="page" data-qs="1" class="js-select">
574						<option value="1" selected>1</option>
575				</select>
576			</li>
577			<li>
578				<a href="/news?&page=2" disabled="disabled" aria-label="Next">
579					<span aria-hidden="true"><i class="fa fa-angle-right"></i></span>
580				</a>
581			</li>
582			<li>
583				<a href="/news?&page=1" disabled="disabled" aria-label="Last">
584					<span aria-hidden="true"><i class="fa fa-angle-double-right"></i></span>
585				</a>
586			</li>
587		</ul>
588	</nav>
589
590				</div>
591			</div>
592			<div class="col-sm-4 col-lg-4 col-md-3">
593				<div class="blog-sidebar clearfix">
594	
595
596		<h3>Archives</h3>
597	<ol class="blog-list">
598		<li><a href="/news?year=2026&amp;month=6">June 2026 (1)</a></li>
599		<li><a href="/news?year=2026&amp;month=4">April 2026 (1)</a></li>
600	</ol>
601
602</div>
603			</div>
604		</div>
605	</div>
606</div>
607
608
609	</main>
610	<zone section="After Main">
611</zone>
612
613
614	<!-- main content ends -->
615	<zone section="Before Footer">
616</zone>
617
618	<!-- footer starts -->
619<footer class="footer">
620	<div class="footer-top">
621		<div class="container">
622			<div class="row">
623					<div class="col-sm-3">
624				<span class="footer-title">Quick Links</span>
625				<ul class="footer-list">
626								<li><a href="/">Home</a></li>
627								<li><a href="/our-story">Our story</a></li>
628								<li><a href="/our-winemakers">Our Winemakers</a></li>
629								<li><a href="/wines">Wines</a></li>
630								<li><a href="/products/splash">Shop</a></li>
631								<li><a href="/contact">Contact us</a></li>
632				</ul>
633	</div>
634	<div class="col-sm-3">
635				<span class="footer-title">Policies</span>
636				<ul class="footer-list">
637								<li><a href="/privacy-policy">Privacy Policy</a></li>
638								<li><a href="/terms">Terms &amp; Conditions</a></li>
639								<li><a href="/shipping-and-delivery">Shipping &amp; Delivery</a></li>
640				</ul>
641	</div>
642	<div class="col-sm-3">
643				<span class="footer-title">Connect</span>
644				<ul class="footer-list">
645								<li class="social-list-item">
646		<a class="social-link" href="https://www.facebook.com/boschendal/">
647			<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z" /></svg>
648		</a>
649</li>
650								<li class="social-list-item">
651		<a class="social-link" href="https://www.instagram.com/boschendal/">
652			<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z" /></svg>
653		</a>
654</li>
655								<li class="social-list-item">
656		<a class="social-link" href="https://x.com/boschendalwines">
657			<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.-->
657<path d="M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64zm297.1 84L257.3 234.6 379.4 396H283.8L209 298.1 123.3 396H75.8l111-126.9L69.7 116h98l67.7 89.5L313.6 116h47.5zM323.3 367.6L153.4 142.9H125.1L296.9 367.6h26.3z" /></svg>
658		</a>
659</li>
660				</ul>
661	</div>
662
663			</div>
664		</div>
665	</div>
666	<div class="footer-bottom">
667		<div class="container">
668			<p>
669	Copyright © 2026 Boschendal | All rights reserved. Powered by: <a rel="noopener noreferrer" href="https://ordereazi.com" target="_blank">OrderEazi</a>
670</p>
671
672		</div>
673	</div>
674</footer>
675<!-- footer ends -->   
676	<zone section="After Footer">
677</zone>
678
679
680	<!-- Modals -->
681	<div class="modal fade" id="currency-selector" role="dialog">
682	<div class="modal-dialog" role="document">
683		<div class="modal-content">
684			<div class="modal-header">
685				<button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fa fa-close"></i></button>
686				<h4 class="modal-title">Choose your delivery country and preferred currency</h4>
687			</div>
688			<div class="modal-body">
689				<div id="currency-form" class="form-horizontal">
690					<div class="form-group">
691						<label class="col-md-4 control-label">Delivery Country</label>
692						<div class="col-md-8">
693							<select id="Country" class="js-select-countries">
694									<option value="ZAF" title="ZA" selected=&#x27;selected&#x27;>South Africa</option>
695							</select>
696						</div>
697					</div>	
698					<div class="form-group">
699						<label class="col-md-4 control-label">Currency</label>
700						<div class="col-md-8">
701							<select id="Currency"class="js-select-with-search">
702								<option value="ZAR" selected=&#x27;selected&#x27; >ZAR (R)</option>
703							</select>
704						</div>
705					</div>
706					<div class="form-group">
707						<div class="col-md-offset-4 col-md-4">
708							<button type="button" data-loading-text='<i class="fa fa-circle-o-notch fa-spin"></i> Switching' class="btn">Continue</button>
709						</div>
710					</div>
711				</div>
712			</div>
713		</div>
714	</div>
715</div>
716	<link rel="stylesheet" href="/scss/branch-selector.css" />
717
718<div id="branch-selector-overlay" class="branch-selector-overlay" aria-hidden="true"></div>
719<div id="branch-selector-drawer" class="branch-selector-drawer" role="dialog" aria-labelledby="branch-selector-title" aria-modal="true">
720	<div class="branch-selector-drawer-header">
721		<h2 id="branch-selector-title" class="branch-selector-drawer-title">Select your branch</h2>
722		<button type="button" class="branch-selector-close" id="branch-selector-close" aria-label="Close">&times;</button>
723	</div>
724	<div class="branch-selector-drawer-body">
725		<p class="branch-selector-hint text-muted small">Stock and checkout will use this branch’s inventory. Your choice is saved.</p>
726		<div id="branch-selector-geo" class="branch-selector-geo text-muted small" style="display: none;">
727			<span id="branch-selector-geo-text"></span>
728			<button type="button" class="btn btn-primary btn-sm" id="branch-selector-geo-try" style="display: none;">Use my location</button>
729		</div>
730		<div id="branch-selector-search-wrap" class="branch-selector-search" style="display: none;">
731			<input type="search" class="form-control input-sm" id="branch-selector-search" placeholder="Search..." autocomplete="off" />
732		</div>
733		<div id="branch-selector-list" class="branch-selector-list">
734			<span class="branch-selector-loading" id="branch-selector-loading">Loading…</span>
735			<ul class="list-unstyled" id="branch-selector-ul" style="display: none;"></ul>
736			<button type="button" class="btn btn-default btn-sm branch-selector-load-more" id="branch-selector-load-more" style="display: none;">Load more</button>
737		</div>
738		<button type="button" class="btn btn-default btn-sm" id="branch-selector-clear" style="display: none;">Clear branch</button>
739	</div>
740</div>
741
742  
743  	<!-- Generic Quick Quote -->
744  	  <div class="modal fade" id="newsletter-modal" role="dialog">
745          <div class="modal-dialog" role="document">
746              <div class="modal-content">
747                  <div class="modal-header">
748                      <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fa fa-close"></i></button>
749                    	<h4 class="modal-title sub-font"><i>
749Don't miss a single thing, sign up to our newsletter</i></h4>
750                  </div>
751                  <div class="modal-body">	
752                      <div id="globalNewsletter">
753                          <div style="position: relative;display:block;width:100%; height:300px;">
754                              <div class="overlay-container" style="position: absolute;width: 100%;height: 100%;top: 0;left: 0;z-index: 2;cursor: pointer;">
755                                  <div class="overlay" style="text-align: center;margin: 0 auto;height: 150px;width: 250px;position: relative;left: 0;margin-top: -75px;top: 50%;border-radius: 70px;">
756                                      <span class="fa fa-spinner fa-spin" style="vertical-align: middle;position: absolute;left: 50%;margin: 0 auto;font-size: 50px;top: 50%;color: #333;margin-top: -25px;margin-left: -25px;"></span>
757                                  </div>
758                              </div>
759                          </div>
760                      </div>
761
762                      
762<script>
763                          $(document).ready(function(){
764                              var script = document.createElement("script");
765                              script.src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.validate.min.js";
766                              document.head.appendChild(script);
767                              $("#globalNewsletter").load("https://bof9t2465b.execute-api.eu-west-1.amazonaws.com/Prod/form/get-form?key=6d82cada-be5e-4350-abda-c4d697677a63");
768                          });
769                      </script>
769
770                  </div>
771              </div>
772          </div>
773      </div>
774
775	<!-- Scripts -->
776	
776<script src="https://cdnjs.cloudflare.com/ajax/libs/jQuery.dotdotdot/1.7.4/jquery.dotdotdot.min.js" defer></script>
776
777	
777<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js" defer></script>
777
778	
778<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.concat.min.js" defer></script>
778
779	
779<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.6.0/slick.min.js" defer></script>
779
780	
780<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.29.0/codemirror.min.js" defer></script>
780
781	
781<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" defer></script>
781
782	
782<script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/5.5.2/bootbox.min.js" defer></script>
782
783	
783<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/flatpickr.min.js" defer type="text/javascript"></script>
783
784
785	
785<script src="//content.storefront7.co.za/common/scripts/jquery.notify.min.js" defer></script>
785
786	
786<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.core.min.js?v=26092607" defer></script>
786
787	
787<script src="//content.storefront7.co.za/common/scripts/Emmerce.min.js" defer></script>
787
788	
788<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.pages.main.min.js?v=26092607" defer></script>
788
789	
789<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.content.min.js?v=26092607" id="ContentEddietor" data-api-key="" defer></script>
789
790	
790<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.ui.min.js?v=26092607" defer></script>
790
791	
791<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront.branch-selector.js?v=26092607" defer></script>
791
792	
792<script src="//content.storefront7.co.za/common/scripts/raty.js" defer></script>
792
793
794	
794<script>window.__featureToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZXNzaW9uUmVmZXJlbmNlIjoiQk9ULVNFU1NJT04tMiIsImFjYyI6IjAiLCJzdG9yZSI6IjIiLCJ2ZXIiOiIxNzkwMzYwMzUzIiwiZmVhdHVyZXMiOiJBZGRUb0NhcnQsQWRkVG9HaWZ0UmVnaXN0cnksQWRkVG9XaXNobGlzdCxDcmVhdGVBZGRyZXNzLE1hbmFnZUFkZHJlc3NlcyxNYW5hZ2VQcm9maWxlLFBsYWNlT3JkZXJzLFJlbW92ZUFkZHJlc3MsUmVvcmRlcixVc2VGaWx0ZXJzLFVzZVNlYXJjaCxWaWV3QWxsQnJhbmNoZXMsVmlld0F2YWlsYWJpbGl0eSxWaWV3QnVsa1ByaWNpbmcsVmlld0NvdXBvbnMsVmlld0VucXVpcnlIaXN0b3J5LFZpZXdHaWZ0UmVnaXN0cnksVmlld0dpZnRWb3VjaGVycyxWaWV3SW52b2ljZXMsVmlld09yZGVySGlzdG9yeSxWaWV3UHJpY2luZyxWaWV3UHJvZHVjdERlc2NyaXB0aW9uLFZpZXdQcm9kdWN0RG9jdW1lbnRhdGlvbixWaWV3UHJvZHVjdE5vdGVzLFZpZXdQcm9kdWN0VmFsaWRDb21tLFZpZXdXYWxsZXQsVmlld1dpc2hsaXN0IiwibmJmIjoxNzkwNDA3MzY1LCJleHAiOjE3OTA0MTA5NjUsImlhdCI6MTc5MDQwNzM2NSwiaXNzIjoiY29tbWVyY2UtZmVhdHVyZXMiLCJhdWQiOiJzdG9yZWZyb250In0.RLkPuxWF88Is0ZEIFBsrkn_3I115ATcjw5345IRjD10";</script>
794
795	
795<script src="https://resources.storefront7.co.za/release/V8.018.007/scripts/storefront-features.js?v=26092607"></script>
795
796
797	<!-- PageScripts -->
798	
799	
799<script>
800		$(function() {
801			$('.news-post-summary').dotdotdot({
802				ellipsis: '...',
803				wrap: 'word',
804				height: 110,
805				watch: true
806			});
807
808			$('.news-post-item h2').dotdotdot({
809				ellipsis: '...',
810				wrap: 'word',
811				height: 44,
812				watch: true
813			});
814			$('.news-top-story h2').dotdotdot({
815				ellipsis: '...',
816				wrap: 'word',
817				height: 99,
818				watch: true
819			});
820		});
821	</script>
821
822
823
824	
825		
825<script 
826			 
827			
828			type="text/javascript"
829			>
830			//Variables
831var header = $('.masthead').outerHeight();
832var topBar = $('.top-bar').outerHeight();
833
834function HeaderLayout(){
835  //$('.category-header h1').prependTo('.product-category-contain');
836
837  $('.navbar-ctas').prepend('<button class="search-trigg"><i class="fa fa-search"></i></button>');
838  $('.mini-search').appendTo('.nav-contain > .container').wrap('<div class="search-target">');
839  $('.predictive-search').appendTo('.search-target');
840
841  $('.search-trigg').on('click', function () {
842    $(this).toggleClass('active');
843    $('.mini-search').slideToggle();
844    setTimeout(function () {
845      $('.mini-search input').focus();
846    }, 400);
847  });
848
849  $('.mini-search input').focus(function () {
850    $(this).parent().parent().addClass('focused');
851  });
852
853  $('.mini-search input').off('click', function () {
854    $(this).parent().parent().removeClass('focused');
855    $('.result-contain').css('display', 'none');
856  });
857
858  $('.mini-search input').blur(function () {
859    $(this).val('');
860    $(this).parent().parent().removeClass('focused');
861  });
862
863  //Header scroll - Logo switch
864  const body = document.body;
865  const scrollUp = "scroll-up";
866  const scrollDown = "scroll-down";
867  let lastScroll = 0;
868
869  window.addEventListener("scroll", () => {
870    const currentScroll = window.pageYOffset;
871
872    // Adjust threshold from 1 to 10 for more reliability
873    if (currentScroll <= 0) {
874      // Reached Top
875      body.classList.remove(scrollUp, scrollDown); // Reset both classes
876      $('.navbar-brand.scrolling-logo').css('display', 'none');
877      $('.navbar-brand:not(.scrolling-logo)').css('display', 'inline-block');
878      lastScroll = currentScroll;
879      return;
880    }
881
882    if (currentScroll > lastScroll && !body.classList.contains(scrollDown)) {
883      // Scrolling down
884      body.classList.remove(scrollUp);
885      body.classList.add(scrollDown);
886      $('.navbar-brand.scrolling-logo').css('display', 'inline-block');
887      $('.navbar-brand:not(.scrolling-logo)').css('display', 'none');
888    } else if (currentScroll < lastScroll && body.classList.contains(scrollDown)) {
889      // Scrolling up
890      body.classList.remove(scrollDown);
891      body.classList.add(scrollUp);
892    }
893
894    lastScroll = currentScroll;
895  });
896}
897
898function NavSplit() {
899  // Select all li elements inside the ul.navbar-nav
900  var navItems = $('ul.navbar-nav > li');
901
902  // Fixed split index: first 4 items go to the left
903  var splitIndex = 5;
904
905  // Get the first 5 and the rest
906  var firstHalf = navItems.slice(0, splitIndex);
907  var secondHalf = navItems.slice(splitIndex);
908
909  // Create two new divs to hold the split items
910  var leftNav = $('<div class="left-nav"></div>');
911  var rightNav = $('<div class="right-nav"></div>');
912
913  var topBarAccount = $('.top-bar account-menu');  
914  var topBarCart = $('.top-bar minicart');
915
916  // Append the items
917  leftNav.append(firstHalf);
918  rightNav.append(secondHalf);
919
920  if ($(window).width() > 991) {
921    //prevent account and cart into mobile menu logic - but keep on desktop
922    rightNav.append(topBarAccount).append(topBarCart);
923  }
924
925  // Clear the original ul container
926  $('ul.navbar-nav').empty();
927
928  // Append the split navs and socials
929  $('ul.navbar-nav').append(leftNav).append(rightNav);
930}
931
932function FooterLayout() {
933  //var headerLogo = $('.navbar-brand img').first().clone(); // clone the logo
934  var footerLogoSrc = $('<img class="img-responsive" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/files/logo-bosch-an52.png" alt="store-logo">');
935  var footer = $('.footer');
936  var footerTop = $('.footer-top');
937  var footerTopContent = footerTop.children();
938
939  // Create new layout structure
940  var container = $('<div class="container"></div>');
941  var row = $('<div class="row"></div>');
942
943  // Create footer logo section
944  var logoSection = $(`
945<div class="footer-logo col-md-4">
946<div class="cloned-logo"></div>
947<ul class="footer-information">
948<li>Boschendal Estate, Pniel St, Groot Drakenstein,</li>
949<li>Franschhoek, Western Cape, South Africa, 7680</li>
950<li>+27 (0) 21 271 0688 | [email protected]</li>
951</ul>
952</div>
953`);
954
955  // Insert the cloned header logo into the placeholder
956  logoSection.find('.cloned-logo').append(footerLogoSrc);
957
958  var newFooterTop = $('<div class="footer-top col-md-8"></div>').append(footerTopContent);
959
960  // Compose final layout
961  row.append(logoSection).append(newFooterTop);
962  container.append(row);
963
964  // Replace old .footer-top with new container
965  footerTop.replaceWith(container);
966
967  // Insert Aware.org image after the first paragraph inside .footer-bottom
968  var awareOrg = $('<img src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/files/aware-org-rxs5.png" alt="No Under 18 Logo">');
969  awareOrg.insertAfter($('.footer-bottom').find('p').first());
970
971  $('.footer-top [class*="col-sm-"]').each(function () {
972    const $el = $(this);
973    $el.removeClass(function (i, className) {
974      return (className.match(/col-sm-\d+/g) || []).join(' ');
975    }).addClass('col-md-3'); // or any desired class
976  });
977
978  function convertToAccordion() {
979    if ($(window).width() < 991 && $('#footerAccordion').length === 0) {
980      $('.footer-top .col-md-3').each(function (i) {
981        const title = $(this).find('.footer-title').first().text();
982        const content = $(this).find('ul').clone();
983
984        const panel = $(`
985<div class="panel panel-default">
986<div class="panel-heading">
987<a data-toggle="collapse" data-parent="#footerAccordion" href="#collapse_${i}" class="${i === 0 ? '' : 'collapsed'}" aria-expanded="${i === 0}">
988<h4 class="panel-title">${title} <i class="fa fa-chevron-down"></i></h4>
989</a>
990</div>
991<div id="collapse_${i}" class="panel-collapse collapse ${i === 0 ? 'in' : ''}">
992<div class="panel-body"></div>
993</div>
994</div>
995`);
996
997        panel.find('.panel-body').append(content);
998
999        if ($('#footerAccordion').length === 0) {
1000          $('.footer-top .row').after('<div class="panel-group" id="footerAccordion"></div>');
1001        }
1002
1003        $('#footerAccordion').append(panel);
1004        $(this).hide();
1005      });
1006    }
1007  }
1008
1009  function revertToColumns() {
1010    if ($(window).width() >= 991 && $('#footerAccordion').length) {
1011      $('#footerAccordion').remove();                 // Remove the accordion
1012      $('.footer-top .col-md-3').show();              // Show original columns
1013    }
1014  }
1015
1016  // Initial load
1017  if ($(window).width() < 991) {
1018    convertToAccordion();
1019  }
1020
1021  // Resize handler
1022  $(window).on('resize', function () {
1023    if ($(window).width() < 991) {
1024      convertToAccordion();
1025    } else {
1026      revertToColumns();
1027    }
1028  });
1029}
1030
1031function BuildMobileMenu(){
1032
1033  var menuItems = $('.navbar-nav .left-nav, .navbar-nav .right-nav').children();
1034  var itemsToHtml = "";
1035  menuItems.each(function () {
1036    var item = $(this);
1037    var children = item.children('ul').children('li');
1038    var linkText = item.find('> a').text();
1039    var linkUrl = item.find('> a').attr('href');
1040    itemsToHtml += '<li><a class="nav-item" href="' + linkUrl + '">' + linkText + (children.length > 0 ? '<i class="fa fa-angle-right"></i>' : "") + '</a>';
1041    //Multi level
1042    if (children.length > 0) {
1043      itemsToHtml += '<ul class="level-2 menu">{#innerItems}</ul>';
1044      var childItemHtml = "";
1045      children.each(function () {
1046        var child = $(this);
1047        var childText = child.find('> a').text();
1048        var childLink = child.find('> a').attr('href');
1049        childItemHtml += '<li><a class="nav-item" href="' + childLink + '">' + childText + '</a></li>';
1050      });
1051      itemsToHtml = itemsToHtml.replace('{#innerItems}', childItemHtml);
1052    }
1053    itemsToHtml += '</li>';
1054  });
1055
1056  $('.mobile-menu-contain .level-1.menu').empty().html(itemsToHtml);
1057}
1058
1059function FilterBrowse(){
1060  // Get the current URL path
1061  var currentPath = window.location.pathname + window.location.search;
1062
1063  $('.product-filter-contain .sidebar-ul.categories li a').each(function() {
1064    // Check if the href of the anchor matches the current path
1065    if ($(this).attr('href') === currentPath) {
1066      // Add the 'active' class to the parent list item
1067      $(this).parent().addClass('active');
1068    }
1069  });
1070
1071  $('.product-box-contain.product-wrap .product-box-img').each(function() {
1072    let hoverImg = $(this).attr('data-hover'); // or $(this).data('hover')
1073
1074    // check if hoverImg exists and is not the "no-image" placeholder
1075    if (hoverImg && hoverImg !== '/images/no-image.png') {
1076      this.style.setProperty('--hover-img', `url(${hoverImg})`);
1077      $(this).addClass('img-hover');
1078    }
1079  });
1080
1081
1082}
1083
1084function Overview(){
1085  // Target the input
1086  const $input = $('.product-detail-quantity .form-control');
1087
1088  // Wrap input with container and append buttons
1089  $input.wrap('<div class="quantity-controls"></div>')
1090    .before('<button type="button" class="btn input-decrement"><i class="fa fa-minus"></i></button>')
1091    .after('<button type="button" class="btn input-increment"><i class="fa fa-plus"></i></button>');
1092
1093  // Handle increment
1094  $('.input-increment').click(function () {
1095    let $input = $(this).siblings('input');
1096    let current = parseInt($input.val());
1097    $input.val(current + 1);
1098  });
1099
1100  // Handle decrement
1101  $('.input-decrement').click(function () {
1102    let $input = $(this).siblings('input');
1103    let current = parseInt($input.val());
1104    let min = parseInt($input.attr('min')) || 1;
1105    if (current > min) {
1106      $input.val(current - 1);
1107    }
1108  });
1109}
1110
1111var $paragraph = $(".paragraph.readmore");
1112var $readmore_btn = $(`<div class="btn btn-content btn-primary-outline readmore" style="cursor:pointer; margin-top:0.5em;">Read More</div>`);
1113
1114function readMore() {
1115  $readmore_btn.insertAfter($paragraph);
1116
1117  $('.btn.readmore').on('click', function () {
1118    // Find the sibling paragraph element just before the button
1119    var paragraph = $(this).prev('.paragraph.readmore');
1120
1121    // Toggle the class
1122    paragraph.toggleClass('expand');
1123
1124    // Toggle button text
1125    $(this).text(paragraph.hasClass('expand') ? 'Read Less' : 'Read More');
1126  });
1127}
1128
1129
1130$(document).ready(function (){	
1131
1132  //Header
1133  HeaderLayout();
1134
1135  //NavSplit
1136  NavSplit();
1137
1138  //Footer
1139  FooterLayout();
1140
1141  //Browse Page active link
1142  FilterBrowse();
1143
1144  //Product Details
1145  Overview();
1146
1147  //CMS Custom
1148  readMore();
1149
1150  setTimeout(function(){
1151
1152    //MobileMenu
1153    BuildMobileMenu();
1154  }, 1000);
1155});
1156			</script>
1156
1157		
1157<script 
1158			 
1159			
1160			type="text/javascript"
1161			>
1162			$(document).ready(function () {
1163  function parallaxScroll() {
1164    var scrollTop = $(window).scrollTop();
1165
1166    $('.parallax_bg .imageslider2-slide').each(function () {
1167      var $el = $(this);
1168      var offsetTop = $el.offset().top;
1169      var height = $el.outerHeight();
1170
1171      // Only animate when in viewport
1172      if (scrollTop + $(window).height() > offsetTop && scrollTop < offsetTop + height) {
1173        // Calculate how far the viewport has scrolled past the element
1174        var yOffset = (scrollTop - offsetTop) * 1; // scroll factor
1175
1176        // Start from 50% and add yOffset
1177        $el.css('background-position', 'center calc(50% + ' + yOffset + 'px)');
1178      }
1179    });
1180  }
1181
1182  // Bind scroll and resize
1183  $(window).on('scroll resize', parallaxScroll);
1184
1185  // Initial state
1186  $('.parallax_bg .imageslider2-slide').css('background-position', 'center 50%');
1187
1188  parallaxScroll();
1189});
1190
1191			</script>
1191
1192		
1192<script 
1193			 
1194			
1195			type="text/javascript"
1196			>
1197			$(document).ready(function () {
1198  CyberCellar.Initialise();
1199});
1200
1201var CyberCellar = (function ($) {
1202  var _Initialise = function () {
1203    CyberCellar.LoadAgeCookie();
1204  };
1205
1206  var _LoadAgeCookie = function () {
1207    var cookie = CyberCellar.GetAgeCookie();
1208    if (cookie == '1') {
1209      CyberCellar.SetAgeCookie();
1210    }
1211    else {
1212      var modalHtml = '<div class="modal fade" id="AgeRestrictionModal" role="dialog" style="display:none;background-image:url(\'//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/pictures/638833370229554131/mask-group-11-b231hj.png\');background-color: transparent;background-position: center;background-size: contain;background-repeat: no-repeat;">' +
1213          '<div class="modal-dialog" role="document">' +
1214          '<div class="modal-content" style="text-align:center;">' +
1215          '<div class="modal-body">' +
1216          '<img class="store-logo" src="//content.storefront7.co.za/stores/za.co.storefront8.luro5t.brampton/files/logo-age-gate-rk8s.png" alt="Boschendal Logo Age Gate" />' +
1217          '<h4 class="age-gate-heading age-gate-logo">ENTER THE YEAR OF BIRTH TO EXPERIENCE BOSCHENDAL WINES</h4>' +
1218          '<div class="year-inputs" style="display:flex;justify-content:center;gap:10px;margin:15px 0;">' +
1219          '<input type="text" maxlength="1" class="year-digit form-control text-center" style="width:50px;font-size:20px;" />' +
1220          '<input type="text" maxlength="1" class="year-digit form-control text-center" style="width:50px;font-size:20px;" />' +
1221          '<input type="text" maxlength="1" class="year-digit form-control text-center" style="width:50px;font-size:20px;" />' +
1222          '<input type="text" maxlength="1" class="year-digit form-control text-center" style="width:50px;font-size:20px;" />' +
1223          '</div>' +
1224          '<button type="button" class="btn btn-primary btn-lite" id="age-continue">VIEW OUR WINES</button><br/>' +
1225          '<div style="margin-top:30px;"><p><input type="checkbox" id="age-remember" value="1" checked="checked" tabindex="1" /><label> Remember me</label></p></div>' +
1226          '<p id="age-error" style="color:red;display:none;margin-top:10px;"></p>' +
1227          '</div>' +
1228          '</div>' +
1229          '</div>' +
1230          '</div>';
1231
1232      $('body').append(modalHtml);
1233
1234      $('#AgeRestrictionModal').modal({
1235        backdrop: 'static',
1236        keyboard: false
1237      });
1238
1239      // Handle input event for smooth UX & allow 0-9 properly
1240      $(document).on('input', '.year-digit', function () {
1241        let val = $(this).val().replace(/\D/g, ''); // Keep only numbers
1242
1243        // If user typed/pasted multiple digits, take the last one
1244        if (val.length > 1) {
1245          val = val.slice(-1);
1246        }
1247
1248        $(this).val(val);
1249
1250        // If a digit is entered, focus the next input
1251        if (val !== '') {
1252          $(this).next('.year-digit').focus();
1253        }
1254
1255        // When all four digits are filled, auto-validate the age
1256        let allFilled = true;
1257        let year = '';
1258        $('.year-digit').each(function () {
1259          let v = $(this).val();
1260          if (v === '') {
1261            allFilled = false;
1262          }
1263          year += v;
1264        });
1265
1266        if (allFilled && year.length === 4) {
1267          autoValidateYear(year);
1268        }
1269      });
1270
1271      // Backspace handling: clear current, then go to previous input if empty
1272      $(document).on('keydown', '.year-digit', function (e) {
1273        if (e.which === 8) { // Backspace key
1274          if ($(this).val() !== '') {
1275            $(this).val('');
1276            e.preventDefault();
1277          } else {
1278            $(this).prev('.year-digit').focus();
1279          }
1280        }
1281      });
1282
1283      // Prevent non-numeric characters
1284      $(document).on('keypress', '.year-digit', function (e) {
1285        if (e.which < 48 || e.which > 57) {
1286          e.preventDefault();
1287        }
1288      });
1289
1290      // Smart paste handling: auto-fill all boxes if a full year like "2005" is pasted
1291      $(document).on('paste', '.year-digit', function (e) {
1292        e.preventDefault();
1293        let pasted = (e.originalEvent || e).clipboardData.getData('text').replace(/\D/g, ''); // Keep only numbers
1294
1295        if (pasted.length > 0) {
1296          let inputs = $('.year-digit');
1297          let startIndex = inputs.index(this);
1298
1299          // Auto-fill the inputs sequentially
1300          for (let i = 0; i < pasted.length && startIndex + i < inputs.length; i++) {
1301            $(inputs[startIndex + i]).val(pasted[i]);
1302          }
1303
1304          // If we pasted a full year, auto-validate
1305          if (pasted.length === 4 && startIndex === 0) {
1306            autoValidateYear(pasted);
1307          } else {
1308            // Move focus to the next empty input
1309            let nextEmpty = inputs.filter(function () {
1310              return $(this).val() === '';
1311            }).first();
1312
1313            if (nextEmpty.length) {
1314              nextEmpty.focus();
1315            } else {
1316              inputs.last().focus();
1317            }
1318          }
1319        }
1320      });
1321
1322      // Function to validate the user's age automatically
1323      function autoValidateYear(year) {
1324        let errorMsg = $('#age-error');
1325        let currentYear = new Date().getFullYear();
1326        let age = currentYear - parseInt(year, 10);
1327
1328        if (isNaN(year) || year.length !== 4) {
1329          errorMsg.text("Please enter all 4 digits of your birth year.").show();
1330          return;
1331        }
1332
1333        if (age >= 18) {
1334          // Automatically click the continue button
1335          $('#age-continue').click();
1336        } else {
1337          errorMsg.text("You must be at least 18 years old.").show();
1338          setTimeout(function () {
1339            window.location = "https://www.google.co.za";
1340          }, 1500);
1341        }
1342      }
1343
1344      // Handle continue button
1345      $('#AgeRestrictionModal').on('click', '#age-continue', function () {
1346        var year = '';
1347        $('.year-digit').each(function () {
1348          year += $(this).val();
1349        });
1350
1351        var errorMsg = $('#age-error');
1352        var currentYear = new Date().getFullYear();
1353
1354        if (year.length !== 4 || isNaN(year)) {
1355          errorMsg.text("Please enter all 4 digits of your birth year.").show();
1356          return;
1357        }
1358
1359        var age = currentYear - parseInt(year, 10);
1360
1361        if (age >= 18) {
1362          CyberCellar.SetAgeCookie();
1363          $('#AgeRestrictionModal').modal('hide');
1364        } else {
1365          errorMsg.text("You must be at least 18 years old.").show();
1366          setTimeout(function () {
1367            window.location = "https://www.google.co.za";
1368          }, 1500);
1369        }
1370      });
1371    }
1372    return true;
1373  };
1374
1375
1376  var _SetAgeCookie = function () {
1377    var maxAge = 86400;//86400=24hours
1378    //If 'Remember me' is checked then this should be set to 365 days i.e. 365*86400
1379    if ($('#age-remember').is(':checked'))
1380      maxAge *= 365;
1381
1382    document.cookie = "cc:age-gate=1; samesite=Strict; secure; path=/;max-age=" + maxAge + ";";
1383
1384    return true;
1385  };
1386
1387  var _GetAgeCookie = function () {
1388    var cookieName = 'cc:age-gate';
1389
1390    // Split cookie string and get all individual name=value pairs in an array
1391    var cookieArr = document.cookie.split(";");
1392
1393    // Loop through the array elements
1394    for (var i = 0; i < cookieArr.length; i++) {
1395      var cookiePair = cookieArr[i].split("=");
1396
1397      /* Removing whitespace at the beginning of the cookie name and compare it with the given string */
1398      if (cookieName == cookiePair[0].trim()) {
1399        // Decode the cookie value and return
1400        return cookiePair[1];
1401      }
1402    }
1403
1404    // Return empty string if not found
1405    return '';
1406  };
1407
1408  return {
1409    Initialise: _Initialise,
1410    LoadAgeCookie: _LoadAgeCookie,
1411    SetAgeCookie: _SetAgeCookie,
1412    GetAgeCookie: _GetAgeCookie
1413  };
1414})(jQuery);
1415			</script>
1415
1416		
1416<script 
1417			 
1418			
1419			type="text/javascript"
1420			>
1421			(function ($) {
1422    'use strict';
1423
1424    if (window.location.href.indexOf('/checkout/details') === -1) return;
1425
1426    function injectWarehouseField() {
1427        var $form = $('form[action="/createorder"]');
1428        if (!$form.length) return;
1429        if ($form.find('#SpecialInstructions').length) return;
1430
1431        observer.disconnect();
1432
1433        $('<input>', {
1434            type: 'hidden',
1435            id: 'SpecialInstructions',
1436            name: 'SpecialInstructions',
1437            value: 'Online'
1438        }).appendTo($form);
1439    }
1440
1441    var observer = new MutationObserver(function () {
1442        injectWarehouseField();
1443    });
1444
1445    observer.observe(document.body, { childList: true, subtree: true });
1446
1447})(jQuery);
1448			</script>
1448
1449
1450
1451	<!-- Lazy Load Images -->
1452	
1452<script>
1453		$(window).on("load", function () {
1454			lazyload();
1455			ProductSEO.Init();
1456		});
1457	</script>
1457
1458
1459	
1460<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":"16b565c73d8e4f90a840f3892b5fe19d","spa":2}' crossorigin="anonymous"></script>
1460
1461</body>
1462</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.