PageSourceSearch

https://villadolcecafe.com/-catering?source=pop_up&spot_id=267357&destination=catering&promotion=catering

html villadolcecafe.com collected 2026-09-26 02:39:19 UTC 77,216 bytes, 1,575 lines download raw bytes

1<!DOCTYPE html>
2�<html lang="en"><head><meta content="null" property="og:site_name"/><meta content="http://villadolcecafe.com/middleton-middleton-villa-dolce-catering" property="og:url"/><meta content="website" property="og:type"/><meta content="After 16 years in the restaurant business, Faton and Jerry Lumani wanted to open a modern Italian cafe like those they grew up with in Europe. Places where guests spent evenings lounging and..." property="og:description"/><meta content="Villa Dolce - Catering" property="og:title"/><!-- wcache 2026-09-25 11:57:52.060246Z --><!--
3smart_footer: true,
4smart_footer_version: 2,
5scripting_active: false
6--><link href="https://villadolcecafe.com/middleton-middleton-villa-dolce-catering" rel="canonical"/><meta charset="utf-8"/><meta content="IE=edge" http-equiv="X-UA-Compatible"/><meta content="width=device-width, initial-scale=1" name="viewport"/><meta content="" name="description"/><meta content="" name="author"/><meta content="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/events_back.jpg" property="og:image"/><meta content="Villa Dolce image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="139026719469036" property="fb:app_id"/><meta content="summary_large_image" name="twitter:card"/><meta content="Villa Dolce - Catering" name="twitter:title"/><meta content="After 16 years in the restaurant business, Faton and Jerry Lumani wanted to open a modern Italian cafe like those they grew up with in Europe. Places where guests spent evenings lounging and..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/events_back.jpg" name="twitter:image"/><title>Villa Dolce - Catering</title>
6<script>document.cookie='resolution='+Math.max(screen.width,screen.height)+("devicePixelRatio" in window ? ","+devicePixelRatio : ",1")+'; path=/';</script>
6<link href="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="Villa Dolce" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/custom-scrollbar/jquery.mCustomScrollbar.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/owlcarousel/owl.theme.default.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web-lib/leaflet/[email protected]/dist/leaflet.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/css/bottom_navigation_v1.css?v1768895959" rel="stylesheet"/><link href="css/custom.css?v1768895959&domain=villadolcecafe.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/icons_font/css/social_icons.css" rel="stylesheet"/><!--[if IE 7]><link rel="stylesheet" href="lib/icons_font/css/social_icons-ie7.css"><![endif]--><link href="https://static.spotapps.co/web/villadolcecafe--com/lib/twitter_x_font_icon/css/twitter_x.css" rel="stylesheet"/><!--[if IE 7]><link rel="stylesheet" href="lib/twitter_x_font_icon/css/twitter_x-ie7.css"><![endif]--><!-- Google tag (gtag.js) -->
vendor: 71 bytes, line 6
6<script async="async" src="https://www.googletagmanager.com/gtag/js?id=
6G-ZDK1ELTWZ6
vendor: 11 bytes, line 6
6"></script>
6<script> 
vendor: 127 bytes, line 6
6window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '
6G-ZDK1ELTWZ6
vendor: 7 bytes, lines 6-7
6');
7   
7gtag('set', 'linker', {'domains': ['tmt.spotapps.co','spothopperapp.com']});
8          gtag('config', 'G-ZG3PMRMSQD');
9   gtag('config', 'G-VG24VK2VKT'); </script>
9<style>
10
11      html {
12        height: auto;
13        min-height: 100%;
14      }
15      .tmt-page.party-background.drink-menu {
16        background-color: #ebebeb;
17                  background-color: #1a1a1a; 
18              }
19              .tmt-page.party-background.drink-menu {
20          background-image: url('//static.spotapps.co/spots/2b/ffea3428d242669642ebaf9839d09e/wide_medium');
21        }
22        .tmt-page.party-background.drink-menu:before {
23          display: block;
24                      -webkit-backdrop-filter: blur(5px);
25            backdrop-filter: blur(5px);
26                    background-color: rgba(255,255,255,0.8);
27                      background-color: rgba(0,0,0,0.8); 
28           
29        }
30        .tmt-page.party-background.drink-menu>div:first-child:before {
31          display: none;
32        }
33      
34    </style>
34<script src="https://static.spotapps.co/websites/lib/lazysizes/lazysizes.min.js" async=""></script>
34<script> var ga4_tracking_code='G-ZG3PMRMSQD';</script>
34<script>
35function ga_check(){
36  return true;
37}
38</script>
38<script>
39function universal_ga(action, type, category, ev_action, label){
40  if(typeof ga === 'function')
41  {
42    if(!(action && label))
43      ga(action, type, category)
44    else
45      ga(action, type, category, ev_action, label)
46  }
47
48  if(typeof gtag === 'function')
49  {
50    if(!(action && label))
51    {
52      hash = category
53      ev_label = hash["eventLabel"]
54      var splits = ev_label.match(/.{1,100}/g) ?? [];
55      delete(hash["eventLabel"])
56
57      if(splits.length <= 1)
58        hash["eventLabel"] = ev_label
59      else
60      {
61        for (let i = 0; i < splits.length; i++) {
62          var key = "eventLabel_"+i
63          hash[key] = splits[i]
64        }
65      }
66      console.log(hash)
67      gtag("event", hash["eventCategory"], hash);
68    }
69    else
70    {
71      var hash = {
72        eventCategory: category,
73        eventAction: ev_action
74      }
75
76      var splits = label.match(/.{1,100}/g) ?? [];
77      if(splits.length <= 1)
78        hash["eventLabel"] = label
79      else
80      {
81        for (let i = 0; i < splits.length; i++) {
82          var key = "eventLabel_"+i
83          hash[key] = splits[i]
84        }
85      }
86      gtag("event", hash["eventCategory"], hash);
87    }
88  }
89}
90</script>
90<script>    function getPromotionUrlParams(){
91      var params_str = sessionStorage.getItem('shUrlParams');
92      if (params_str != null){
93        return JSON.parse(params_str);
94      }else{
95        return {};
96      }
97    }
98
99    function getPromotionSourceDetails(){
100        var params_str = localStorage.getItem('promotionSourceDetails');
101        if (params_str != null){
102          return JSON.parse(params_str);
103        }else{
104          return {};
105        }
106    }
107
108    function getLastEmailVisitInDays(){
109      var promotionSourceDetails = getPromotionSourceDetails();
110      if (!promotionSourceDetails['last_visit_email'] ){
111        return null;
112      }
113      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_email'])) / (1000 * 60 * 60 * 24));
114    }
115
116    function getLastSocialVisitInDays(){
117      var promotionSourceDetails = getPromotionSourceDetails();
118      if (!promotionSourceDetails['last_visit_social'] ){
119        return null;
120      }
121      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_social'])) / (1000 * 60 * 60 * 24));
122    }
123
124    var shUrlParams = getPromotionUrlParams();
125    var promotionSourceDetails = getPromotionSourceDetails();
126
127    new URL(document.location).searchParams.forEach(function(value, paramName){
128
129     shUrlParams[paramName] = value;
130
131     if (paramName == 'source' && value =='social' ){
132       promotionSourceDetails['last_visit_social'] = new Date();
133       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
134     }
135
136     if (paramName == 'source' && value =='email' ){
137       promotionSourceDetails['last_visit_email'] = new Date();
138       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
139     }
140
141    });
142
143    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams))
144</script>
144<style>a:focus:not(:focus-visible){outline:none;box-shadow:none;}
145a.get-directions-footer-link{display:inline-block;transform-origin:left center;transition:transform .2s ease;}
146a.get-directions-footer-link:hover{transform:scale(1.08);}
147@media (prefers-reduced-motion:reduce){a.get-directions-footer-link{transition:none;transform:none;}}
148a.get-directions-footer-link,a.get-directions-footer-link:hover{color:inherit!important;}</style></head><body class="drink-menu party party-background catering catering-tmt-page tmt-page" id="tmtPage"><div><header style="background-color:#000000;"><style>
149
150.nav-v8 .nav-tab:nth-child(n+7) {
151  -webkit-box-ordinal-group: 3;
152  order: 3;
153}
154
155.navbar.nav-v6.nav-v8 .desktop-navigation .header-logo {
156  top: 0px;
157}
158
159
160.navbar.nav-v6.nav-v8.nav-scroll .desktop-navigation .header-logo {
161  top: 0px;
162}
163
164.navbar.nav-v6 .container {
165  padding-top: 10px;
166  padding-bottom: 10px;
167}
168.navbar.nav-v6.nav-scroll .container {
169  padding-top: 0px;
170  padding-bottom: 0px;
171}
172.navbar.nav-v6 .header-logo img {
173  max-width: 100%;
174}
175
176@media (max-width: 767px) {
177  /* DO NOT change mobile nav height on page scroll */
178  .navbar.nav-v6 .navbar-header,
179  .navbar.nav-v6.nav-scroll .navbar-header {
180    padding-top: 10px;
181    padding-bottom: 10px;
182  }
183  .navbar.nav-v6.nav-v8 .socialnav,
184  .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
185    margin-top: 10px;
186  }
187  .navbar.nav-v6 .container,
188  .navbar.nav-v6.nav-scroll .container {
189    padding-top: 0;
190    padding-bottom: 0;
191  }
192  .navbar.nav-v6 .header-logo,
193  .navbar.nav-v6.nav-scroll .header-logo {
194    height: 70px;
195  }
196  .navbar.nav-v6 .header-logo img {
197    max-height: 100%;
198  }
199  .navbar.nav-v6.nav-scroll .header-logo img {
200    max-width: 100%;
201  }
202  /* HOME page CHANGE mobile nav height on page scroll */
203  /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */
204  body.home-page .navbar.nav-v6 .navbar-header {
205    padding-top: 10px;
206    padding-bottom: 10px;
207  }
208  body.home-page .navbar.nav-v6.nav-scroll .navbar-header{
209    padding-top: 0px;
210    padding-bottom: 0px;
211  }
212  body.home-page .navbar.nav-v6.nav-v8 .socialnav {
213    margin-top: 10px;
214  }
215  body.home-page .navbar.nav-v6.nav-v8.nav-scroll .socialnav {
216    margin-top: 0px;
217  }
218  body.home-page .navbar.nav-v6 .container{
219    padding-top: 0;
220    padding-bottom: 0;
221  }
222  body.home-page .navbar.nav-v6.nav-scroll .container {
223    padding-top: 0;
224    padding-bottom: 0;
225  }
226  body.home-page .navbar.nav-v6 .header-logo {
227    height: 70px;
228  }
229  body.home-page .navbar.nav-v6.nav-scroll .header-logo {
230    height: 50px;
231  }
232  body.home-page .navbar.nav-v6 .header-logo img {
233    max-height: 100%;
234    max-width: 100%;
235  }
236  body.home-page .navbar.nav-v6.nav-scroll .header-logo img {
237    max-width: 80%;
238  }
239}
240
241
242.navbar-regular .navbar-collapse.collapse.in {
243  background-color: transparent;
244  width: 100%;
245}
246.navbar.nav-v6 .navbar-tabs {
247    background-color: #fff;
248    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
249    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
250    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
251}
252.navbar.nav-v6.nav-scroll .navbar-tabs {
253    background-color: #fff;
254    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
255    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
256    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
257}
258.drink-menu .navbar.nav-v6 .navbar-tabs {
259  background-color: #fff;
260  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
261  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
262  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
263}
264.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
265  background-color: #fff;
266  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
267  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
268  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
269}
270li.drop-down-link .sub-menu {
271  background-color: #fff;
272  color: #000;
273  }
274.nav-scroll li.drop-down-link .sub-menu {
275  background-color: #fff;
276  color: #000;
277}
278.drink-menu li.drop-down-link .sub-menu {
279  background-color: #fff;
280  color: #000;
281}
282.drink-menu .nav-scroll li.drop-down-link .sub-menu {
283  background-color: #fff;
284  color: #000;
285}
286li.drop-down-link .sub-menu a,
287li.drop-down-link div.drop-down {
288  color: #000;
289}
290.nav-scroll li.drop-down-link .sub-menu a,
291.nav-scroll li.drop-down-link div.drop-down {
292  color: #000;
293}
294.drink-menu li.drop-down-link .sub-menu a,
295.drink-menu li.drop-down-link div.drop-down {
296  color: #000;
297}
298.drink-menu .nav-scroll li.drop-down-link .sub-menu a,
299.drink-menu .nav-scroll li.drop-down-link div.drop-down {
300  color: #000;
301}
302
303.navbar-regular.nav-v6 .navbar-nav>li>a,
304.navbar-regular.nav-v6 .navbar-nav>li>a:hover,
305.navbar-regular.nav-v6 .navbar-nav>.active>a,
306.navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
307.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
308  border: none;
309  background-color: transparent;
310  color: #B95737;
311}
312.navbar-regular.nav-v6 .navbar-nav>li>a {
313  color: #000;
314}
315.drink-menu .navbar.nav-v6 .navbar-nav>li>a {
316  color: #000;
317}
318.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
319.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
320.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
321.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover {
322  color: #B95737;
323}
324
325li.drop-down-link .sub-menu a:hover,
326li.drop-down-link .sub-menu a:focus {
327  color: #B95737;
328}
329.drink-menu li.drop-down-link .sub-menu a:hover,
330.drink-menu li.drop-down-link .sub-menu a:focus {
331  color: #B95737;
332}
333
334.drink-menu .navbar.nav-v7 .navbar-nav>li>a {
335  color: #000;
336}
337
338.navbar-regular.nav-v6 .navbar-toggle .icon-bar {
339  background-color: #000;
340}
341.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar {
342  background-color: #000;
343}
344.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
345  background-color: #B95737;
346}
347.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
348  background-color: #B95737;
349}
350.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a,
351.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
352.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
353.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
354.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
355  border: none;
356  color: #B95737;
357}
358.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a {
359  color: #000;
360}
361.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a {
362  border: none;
363  color: #000;
364}
365.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
366.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
367.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
368.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
369  color: #B95737;
370}
371
372.nav-scroll li.drop-down-link .sub-menu a:hover,
373.nav-scroll li.drop-down-link .sub-menu a:focus {
374  color: #B95737;
375}
376.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover,
377.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus {
378  color: #B95737;
379}
380
381.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
382  background-color: #000;
383}
384.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
385  background-color: #000;
386}
387.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
388  background-color: #B95737;
389}
390.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
391  background-color: #B95737;
392}
393.navbar.nav-v6 .header-logo-text{
394  color: #000;
395}
396.navbar.nav-v6.nav-scroll .header-logo-text{
397  color: #000;
398}
399.navbar.nav-v6 .social-icon{
400  color: #000;
401}
402.navbar.nav-v6.nav-scroll .social-icon{
403  color: #000;
404}
405.navbar.nav-v6 .social-square .contact-icon:hover {
406  color: #000;
407  background-color: #B95737;
408}
409.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
410  color: #000;
411  background-color: #B95737;
412}
413
414.drink-menu .navbar.nav-v6 .header-logo-text{
415  color: #000;
416}
417.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{
418  color: #000;
419}
420.drink-menu .navbar.nav-v6 .social-icon{
421  color: #000;
422}
423.drink-menu .navbar.nav-v6.nav-scroll .social-icon{
424  color: #000;
425}
426.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover {
427  color: #000;
428  background-color: #B95737;
429}
430.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
431  color: #000;
432  background-color: #B95737;
433}
434.navbar.nav-v6 .navbar-tabs {
435  border-bottom: 1px solid transparent;
436}
437.navbar.nav-v6.nav-scroll .navbar-tabs {
438  border-bottom: 1px solid transparent;
439}
440.drink-menu .navbar.nav-v6 .navbar-tabs {
441  border-bottom: 1px solid transparent;
442}
443.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
444  border-bottom: 1px solid transparent;
445}
446@media (max-width: 767px) {
447  .navbar.nav-v6 {
448      background-color: #fff;
449      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
450      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
451      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
452  }
453  .navbar.nav-v6.nav-scroll {
454      background-color: #fff;
455      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
456      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
457      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
458  }
459  .drink-menu .navbar.nav-v6 {
460    background-color: #fff;
461    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
462    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
463    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
464  }
465  .drink-menu .navbar.nav-v6.nav-scroll {
466    background-color: #fff;
467    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
468    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
469    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.2);
470  }
471  .navbar.nav-v6 .container,
472  .navbar.nav-v6.nav-scroll .container,
473  .drink-menu .navbar.nav-v6 .container,
474  .drink-menu .navbar.nav-v6.nav-scroll .container {
475    border-bottom: none;
476  }
477  .navbar.nav-v6 .navbar-header {
478    border-bottom: 1px solid transparent;
479  }
480  .navbar.nav-v6.nav-scroll .navbar-header {
481    border-bottom: 1px solid transparent;
482  }
483  .drink-menu .navbar.nav-v6 .navbar-header {
484    border-bottom: 1px solid transparent;
485  }
486  .drink-menu .navbar.nav-v6.nav-scroll .navbar-header {
487    border-bottom: 1spx solid transparent;
488  }
489  li.drop-down-link .sub-menu,
490  .drink-menu li.drop-down-link .sub-menu {
491    background-color: transparent;
492  }
493  .nav-scroll li.drop-down-link .sub-menu,
494  .drink-menu .nav-scroll li.drop-down-link .sub-menu {
495    background-color: transparent;
496  }
497    .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
498  .navbar-regular.nav-v6 .navbar-nav>.active>a,
499  .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
500  .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
501    background-color: #B95737;
502    color: #000;
503  }
504  .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
505  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
506  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
507  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
508    background-color: #B95737;
509    color: #000;
510  }
511  .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
512  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
513  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
514  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
515    background-color: #B95737;
516    color: #000;
517  }
518  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
519  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
520  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
521  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
522    background-color: #B95737;
523    color: #000;
524  }
525
526  .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
527    color: #000;
528  }
529  .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
530    color: #000;
531  }
532  .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
533    color: #000;
534  }
535  .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
536    color: #000;
537  }
538}
539</style><!-- nav --><nav class="navbar nav-v4 nav-v6 nav-v7 nav-v8 nav-top navbar-regular navbar-fixed-top" id="navbar" role="navigation"><div id="skip"><a class="visuallyhidden skip-content" href="#content">Skip to main content</a></div><div class="desktop-navigation"><div class="navbar-tabs"><div class="container"><div class="navbar-content"><ul class="nav navbar-nav"><li class="logo-holder"><div class="header-logo logo-top"><img alt="Villa Dolce logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/logo.png" tabindex="0"/></div><div class="header-logo logo-scroll"><img alt="Villa Dolce logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll logo-image" role="link" src="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/logo.png" tabindex="0"/></div></li><li class="nav-tab nav-menu-page"><a class="" href="/middleton-middleton-villa-dolce-food-menu" id="/Middleton-Middleton-Villa-Dolce-food-menu_link" target="_self">
540                        
541                      Menu
542                                          </a></li><li class="nav-tab"><a class="" href="/middleton-middleton-villa-dolce-drink-menu" id="/Middleton-Middleton-Villa-Dolce-drink-menu_link" target="_self">
543                        
544                      Drinks
545                                          </a></li><li class="nav-tab"><a class="" href="/middleton-middleton-villa-dolce-happy-hours-specials" id="/Middleton-Middleton-Villa-Dolce-happy-hours-specials_link" target="_self">
546                        
547                      Specials
548                                          </a></li><li class="nav-tab"><a class="" href="/middleton-middleton-villa-dolce-events" id="/Middleton-Middleton-Villa-Dolce-events_link" target="_self">
549                        
550                      Events
551                                          </a></li><li class="nav-tab nav-reservations-link"><a class="link-reservations-sh" href="/middleton-middleton-villa-dolce-reservations#" id="/Middleton-Middleton-Villa-Dolce-reservations#_link" target="_self">
552                        
553                      Reserve
554                                          </a></li><li class="nav-tab nav-parties-link"><a class="link-parties-sh" href="/middleton-middleton-villa-dolce-party#" id="/Middleton-Middleton-Villa-Dolce-party#_link" target="_self">
555                        
556                      Parties
557                                          </a></li><li class="nav-tab active nav-catering-link"><a class="link-catering-sh" href="/middleton-middleton-villa-dolce-catering#" id="/Middleton-Middleton-Villa-Dolce-catering#_link" target="_self">
558                        
559                      Catering
560                                          </a></li><li class="nav-tab gift-cards-nav"><a class="gift-cards-link" href="https://www.toasttab.com/villa-dolce/giftcards" id="gift-cards-link_link" target="_blank">
561                        
562                      Gift Cards
563                                          </a></li><li class="nav-tab drop-down-link"><a aria-expanded="false" class="drop-down" href="#" id="#_link1" role="button" target="">
564                        
565                      Order
566                                            <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li>
566<a class="sub-menu-link" href="https://slicelife.com/restaurants/wi/middleton/53562/villa-dolce/menu?utm_campaign=google-order-action-link&rwg_token=AFd1xnH8PPL7bYoR7G4wniMZWM030W-zT2f0mG5kqGG4Nj_Z3nLDh6AY5XZqv5d1iwIlx8rUfBObcYtvJhva0Yc9VS0uQs4OqQ%3D%3D" id="#_link1_option1" target="_self">
567                          Slice                          </a></li><li><a class="sub-menu-link" href="https://eatstreet.com/madison-wi/restaurants/villa-dolce-middleton?order-source=OWG_REDIRECT&rwg=1&rwg_token=AFd1xnEcAazYfNVx7SoM5q9EpX4IeVSJ7xxe06FTqtZuwZaidyyD5nS0FuD9rGJOKpr4f3uXl-IStnvgemanz9RYTcJbjfy8Bw%3D%3D" id="#_link1_option2" target="_blank">
568                          Eatstreet                          </a></li><li><a class="sub-menu-link" href="https://direct.restaurant/43699" id="#_link1_option3" target="_blank">
569                          Direct restaurant                          </a></li><li><a class="sub-menu-link" href="https://www.toasttab.com/local/order/villa-dolce/r-65ec5d48-6284-4b3a-9136-432f1da7d87c?diningOption=takeout&rwg_token=AFd1xnFfdsnlqGkUY_Tzry3mV87mMAVUJK_hYeK4_Ln-5d2YVqf8xNayowgmBsXjwdnHw1bVYwAgZByAF3hHJPSue4CfCOzcpA%3D%3D" id="#_link1_option4" target="_blank">
570                          Toast                          </a></li></ul></li><li class="nav-tab helper-tab"><a href="#" id="hidden_tab_r" target="_self"><span class="visuallyhidden">Go to top</span></a></li></ul><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/139026719469036" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/villadolcecafe" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?q=Villa+Dolce+1828+Parmenter+Street&oq=Villa+Dolce+1828+Parmenter+Street&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQIRigATIHCAIQIRigAdIBCDE1NjlqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8#lrd=0x8807aed55416ecab:0xaca58778c8b83372,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul></div></div></div></div><div class="mobile-navigation"><div class="container"><a class="header-logo logo-top" href="/#"><img alt="Villa Dolce logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/logo.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Villa Dolce logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/267357_website_v1/logo.png"/></a><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.facebook.com/139026719469036" target="_blank"><i class="social-icon fa fa-facebook"></i><span>Facebook page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/villadolcecafe" target="_blank"><i class="social-icon fa fa-instagram"></i><span>Instagram page</span></a></li><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.google.com/search?q=Villa+Dolce+1828+Parmenter+Street&oq=Villa+Dolce+1828+Parmenter+Street&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQIRigATIHCAIQIRigAdIBCDE1NjlqMGo3qAIAsAIA&sourceid=chrome&ie=UTF-8#lrd=0x8807aed55416ecab:0xaca58778c8b83372,1,,,," target="_blank"><i aria-hidden="true" class="social-icon fa fa-google"></i><span>Google page</span></a></li></ul><div class="navbar-header"><button class="navbar-toggle" data-target="#navbar-collapse-1" data-toggle="collapse" type="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div class="collapse navbar-collapse" id="navbar-collapse-1"><ul class="nav navbar-nav navbar-right"><li class=" nav-menu-page"><a class="" href="/middleton-middleton-villa-dolce-food-menu" id="mobile_/Middleton-Middleton-Villa-Dolce-food-menu_link" target="_self">
571                    Menu
572                    
573                </a></li><li class=" "><a class="" href="/middleton-middleton-villa-dolce-drink-menu" id="mobile_/Middleton-Middleton-Villa-Dolce-drink-menu_link" target="_self">
574                    Drinks
575                    
576                </a></li><li class=" "><a class="" href="/middleton-middleton-villa-dolce-happy-hours-specials" id="mobile_/Middleton-Middleton-Villa-Dolce-happy-hours-specials_link" target="_self">
577                    Specials
578                    
579                </a></li><li class=" "><a class="" href="/middleton-middleton-villa-dolce-events" id="mobile_/Middleton-Middleton-Villa-Dolce-events_link" target="_self">
580                    Events
581                    
582                </a></li><li class=" nav-reservations-link"><a class="link-reservations-sh" href="/middleton-middleton-villa-dolce-reservations#" id="mobile_/Middleton-Middleton-Villa-Dolce-reservations#_link" target="_self">
583                    Reserve
584                    
585                </a></li><li class=" nav-parties-link"><a class="link-parties-sh" href="/middleton-middleton-villa-dolce-party#" id="mobile_/Middleton-Middleton-Villa-Dolce-party#_link" target="_self">
586                    Parties
587                    
588                </a></li><li class="active nav-catering-link"><a class="link-catering-sh" href="/middleton-middleton-villa-dolce-catering#" id="mobile_/Middleton-Middleton-Villa-Dolce-catering#_link" target="_self">
589                    Catering
590                    
591                </a></li><li class=" gift-cards-nav"><a class="gift-cards-link" href="https://www.toasttab.com/villa-dolce/giftcards" id="mobile_gift-cards-link_link" target="_blank">
592                    Gift Cards
593                    
594                </a></li><li class=" drop-down-link"><a aria-expanded="false" class="drop-down" href="#" id="mobile_#_link1" role="button" target="">
595                    Order
596                                          <i aria-hidden="true" class="fa fa-angle-down"></i><i aria-hidden="true" class="fa fa-angle-up"></i></a><ul class="sub-menu"><li>
596<a class="sub-menu-link" href="https://slicelife.com/restaurants/wi/middleton/53562/villa-dolce/menu?utm_campaign=google-order-action-link&rwg_token=AFd1xnH8PPL7bYoR7G4wniMZWM030W-zT2f0mG5kqGG4Nj_Z3nLDh6AY5XZqv5d1iwIlx8rUfBObcYtvJhva0Yc9VS0uQs4OqQ%3D%3D" id="mobile_#_link1_option1" target="_self">
597                        Slice                        </a></li><li><a class="sub-menu-link" href="https://eatstreet.com/madison-wi/restaurants/villa-dolce-middleton?order-source=OWG_REDIRECT&rwg=1&rwg_token=AFd1xnEcAazYfNVx7SoM5q9EpX4IeVSJ7xxe06FTqtZuwZaidyyD5nS0FuD9rGJOKpr4f3uXl-IStnvgemanz9RYTcJbjfy8Bw%3D%3D" id="mobile_#_link1_option2" target="_blank">
598                        Eatstreet                        </a></li><li><a class="sub-menu-link" href="https://direct.restaurant/43699" id="mobile_#_link1_option3" target="_blank">
599                        Direct restaurant                        </a></li><li><a class="sub-menu-link" href="https://www.toasttab.com/local/order/villa-dolce/r-65ec5d48-6284-4b3a-9136-432f1da7d87c?diningOption=takeout&rwg_token=AFd1xnFfdsnlqGkUY_Tzry3mV87mMAVUJK_hYeK4_Ln-5d2YVqf8xNayowgmBsXjwdnHw1bVYwAgZByAF3hHJPSue4CfCOzcpA%3D%3D" id="mobile_#_link1_option4" target="_blank">
600                        Toast                        </a></li></ul></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="pagecontent"><div class="tabs-container"><div class="scrolling"><h1 style="display: none;">Catering</h1><div class="tmt-iframe-holder"><div class="custom-loader loader-1" id="loader"></div><iframe allowfullscreen="allowfullscreen" class="tmt-iframe hide-iframe" frameborder="0" height="100%" id="pageIframe" onload="iframeTMTpageInit()" scrolling="no" src="//tmt.spotapps.co/catering?spot_id=267357&source=pop_up&destination=catering&promotion=catering" title="Catering" width="100%"></iframe></div></div></div></div></article></main></div><style type="text/css">
601    .navbar-fixed-bottom.nav-v1 {
602        bottom: -100px;
603    }
604    .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right {
605        background-color: #fff;
606    }
607    .navbar-fixed-bottom.nav-v1 .bottom-svg-border path,
608    .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon {
609      fill: #000;
610    }
611    .navbar-fixed-bottom.nav-v1 .bottom-list-item a {
612        color: #000;
613    }
614    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover,
615    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus {
616        color: #B95737;
617    }
618</style><nav aria-label="mobile footer" class="navbar-fixed-bottom nav-v1" id="bottom-navbar"><div><ul class="nav navbar-nav navbar-right"><li class="bottom-list-item "><a class="bottom-link " href="https://slicelife.com/restaurants/wi/middleton/53562/villa-dolce/menu?utm_campaign=google-order-action-link&rwg_token=AFd1xnH8PPL7bYoR7G4wniMZWM030W-zT2f0mG5kqGG4Nj_Z3nLDh6AY5XZqv5d1iwIlx8rUfBObcYtvJhva0Yc9VS0uQs4OqQ%3D%3D" id="bottom_link_4" target="_self">
619                        Order                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="/middleton-middleton-villa-dolce-reservations" id="bottom_link_3" target="_self">
620                        Reserve                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="/middleton-middleton-villa-dolce-party" id="bottom_link_5" target="_self">
621                        Parties                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="/middleton-middleton-villa-dolce-catering" id="bottom_link_6" target="_self">
622                        Catering                    </a></li></ul></div></nav>
622<script src="https://static.spotapps.co/web/villadolcecafe--com/lib/jquery/jquery.min.js"></script>
622<script src="https://static.spotapps.co/web/villadolcecafe--com/lib/bootstrap/js/bootstrap.min.js"></script>
622<script src="https://static.spotapps.co/web/villadolcecafe--com/js/tmt_script.js"></script>
622<script>
623
624	$("#bottom_link_4").on("click", function(){
625		if (ga_check())
626			universal_ga('send', 'event', 'Button', 'Click', 'Order Online');
627	});
628	$("#bottom_link_3").on("click", function(){
629		if (ga_check())
630			universal_ga('send', 'event', 'Button', 'Click', 'Reserve');
631	});
632	$("#bottom_link_5").on("click", function(){
633		if (ga_check())
634			universal_ga('send', 'event', 'Button', 'Click', 'Private Party');
635	});
636	$("#bottom_link_6").on("click", function(){
637		if (ga_check())
638			universal_ga('send', 'event', 'Button', 'Click', 'Catering');
639	});
640  $('.header-logo, .nav-v2-home-btn').click(function(event) {
641    if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
642      event.preventDefault();
643      var windowScrollTop = $(window).scrollTop();
644      if(windowScrollTop > 150) {
645        $('html, body').animate({scrollTop: 0}, 750);
646      }
647    }
648  });
649
650$(".banner-section a.banner-pin").click(function(e) {
651    // target element id
652    var id = $(this).attr('href');
653
654    // target element
655    var section = $(id);
656    if (section.length === 0) {
657        return;
658    }
659
660    // prevent standard hash navigation (avoid blinking in IE)
661    e.preventDefault();
662
663    // top position relative to the document
664    var pos = section.offset().top - 100 + 10;
665
666    // animated top scrolling
667    $('body, html').animate({scrollTop: pos}, 750);
668});
669
670$(document).ready(function() {
671  var navHeight = $('nav.navbar').height();
672  $('html').css("scroll-padding-top", navHeight);
673});
674
675var called_v8_scroll = false;
676
677$(document).on('scroll', function (e) {
678    if($(document).scrollTop() > 0) {
679      $('.navbar.nav-v7').addClass('nav-scroll');
680      $('.navbar.nav-v7').removeClass('nav-top');
681      if (2 !=2 && 2 == 2) {
682        if(!called_v8_scroll) {
683          setTimeout(function(){
684            setHelperTabWidth();
685            called_v8_scroll = true;
686          }, 300);
687        }
688      }
689    }else {
690      $('.navbar.nav-v7').removeClass('nav-scroll');
691      $('.navbar.nav-v7').addClass('nav-top');
692      if (2 != 2 && 2 == 2) {
693        $('#hidden_tab_r').width(0);
694        $('#hidden_tab_l').width(0);
695        $('.navbar-nav li.nav-tab').first().css('margin-left', '0px');
696        $('.navbar-nav li.nav-tab').last().css('margin-right', '0px');
697        called_v8_scroll = false;
698      }
699    }
700});
701
702$(function() {
703  setDropDownMenuWidth();
704
705  function setDropDownMenuWidth() {
706    var tabs_list = $('.navbar-tabs .navbar-nav');
707
708    $(tabs_list).find('li.drop-down-link').each(function() {
709      var sub_menu_width = $(this).outerWidth(true);
710      if (sub_menu_width < 100) {
711        sub_menu_width = 100;
712      }
713      $(this).find('.sub-menu').css('width', sub_menu_width+'px');
714    });
715  }
716
717  $( window ).resize(function() {
718    setDropDownMenuWidth();
719  });
720  $( window ).load(function() {
721    setDropDownMenuWidth();
722  });
723
724});
725
726
727
728$( '.drop-down-link .drop-down' ).click(function(event) {
729  event.preventDefault();
730  event.stopPropagation();
731
732  var drop_down = $(this).closest('.drop-down-link');
733  var drop_down_a = $(this);
734
735  if($(drop_down_a).attr("aria-expanded") == "true") { 
736    $(drop_down_a).attr("aria-expanded",false)
737  } else { 
738    $(drop_down_a).attr("aria-expanded",true)
739  }
740
741  
742  var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' );
743
744  if ( $(sub_menu).is( ':hidden' ) ) {
745    $(sub_menu).slideDown();
746    $(drop_down).addClass('active');
747  } else {
748    $(sub_menu).slideUp();
749    $(drop_down).removeClass('active');
750  }
751});
752
753//// Set width for corresponding helper tab or margin for first or last nav tab depending on calculeted width sum of left and right tabs
754function setHelperTabWidth() {
755  var nav_tab_width;
756  var tabs_left_width = 0;
757  var tabs_right_width = 0;
758
759  var full_nav_tab_width;
760  var full_tabs_left_width = 0;
761  var full_tabs_right_width = 0;
762
763  $('li.nav-tab').each(function( index, element ) {
764
765    nav_tab_width = $(element).find('a').width();
766    full_nav_tab_width = $(element).outerWidth(true);
767
768    if (!($(element).hasClass('helper-tab'))) {
769      if (index<5) {
770        tabs_left_width += nav_tab_width;
771        full_tabs_left_width += full_nav_tab_width;
772      } else {
773        tabs_right_width += nav_tab_width;
774        full_tabs_right_width += full_nav_tab_width;
775      }
776    } else {
777      if(index == 0) {
778        full_tabs_left_width += full_nav_tab_width;
779      } else {
780        full_tabs_right_width += full_nav_tab_width;
781      }
782    }
783
784  });
785
786  var tabs_width_differance = tabs_left_width - tabs_right_width;
787  var helper_value = Math.abs(tabs_width_differance);
788  var full_tabs_width_differance = full_tabs_left_width - full_tabs_right_width;
789
790  // if sum of left tabs width is smaller than rigth tabs width tabs_width_differance is negative set margin left for first tab
791  if (full_tabs_width_differance != 0) {
792    if (tabs_width_differance < 0) {
793      $('.navbar-nav li.nav-tab').first().css('margin-left', helper_value+'px');
794    } else {
795      $('.navbar-nav li.nav-tab').last().css('margin-right', helper_value+'px');
796    }
797  }
798  
799}
800
801$(function() {
802  setNavTabsWidth();
803
804  function setNavTabsWidth() {
805    var container_width = $('.navbar-tabs .container').outerWidth();
806    var social_icons_width = $('.navbar-tabs .socialnav').outerWidth(true);
807    var reduced_tabs_width = container_width - (2 * social_icons_width) -10;
808
809    $('.navbar-tabs .navbar-content').width(reduced_tabs_width);
810
811    // helper value set in case logo is centered and tabs width sum on the left and on the right are not the same
812    if (2 == 2) {
813      setTimeout(function(){
814        setHelperTabWidth();
815        $('.navbar.nav-v8 .desktop-navigation .navbar-nav').css('opacity', '1');
816      }, 300);
817
818    }
819  }
820
821  $( window ).resize(function() {
822      setNavTabsWidth();
823  });
824
825  $('.nav a:not(.drop-down)').on('click', function () {
826    $('.navbar-collapse').collapse('hide');
827  });
828
829});
830
831$('.logo-holder .logo-image').click(function(event) {
832  if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
833    var windowScrollToTop = $(window).scrollTop();
834    if(windowScrollToTop > 150) {
835      $('html, body').animate({scrollTop: 0}, 750);
836    }
837  } else {
838      window.location = "/";
839  }
840});
841    setTimeout(function(){
842        $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents();
843    }, 4000);
844</script>
844<script>
845(function() {
846  var name = "Villa Dolce";
847  var pid = "ChIJq-wWVNWuB4gRcjO4yHiHpaw";
848  function build_url() {
849    var q = encodeURIComponent(name).replace(/'/g, "%27");
850    return "https://www.google.com/maps/search/?api=1"
851         + "&query=" + q
852         + "&query_place_id=" + encodeURIComponent(pid);
853  }
854  window.google_map_url = build_url();
855  window.open_google_map = function() {
856    window.open(build_url(), "_blank");
857  };
858})();
859</script>
859<script>
860
861  var spot_id = 267357;
862  var sh_generic_form_params=JSON.parse('{"generic_contact_form_active":true,"texting_permissions_active":true,"title":"Contact us","instructions":"Please fill out the form and we will be in touch.","reasons":["To host a special event","To get a special event catered","To reserve a table","To apply for a job","Other Questions"],"custom_hours":"","hours":"","active_tmt_cta_links":{"cta_private_party":"https://villadolcecafe.com/-party","cta_catering":"https://villadolcecafe.com/-catering","cta_reservations":"https://villadolcecafe.com/-reservations","cta_jobs":null},"spot_name":"Villa Dolce","label_for_texting_permission":"I’d like to get texts about specials, events, and other exclusive offers and announcements not available to general public"}');
863
864  if (false){
865    console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website");
866  }
867
868  if (navigator.userAgent.match(/iPhone/i)
869       || navigator.userAgent.match(/iPad/i)
870       || navigator.userAgent.match(/iPod/i)){
871      $(document).ready(function(){
872            document.body.className += " " + "webkit-mobile-body";
873      });
874    }
875
876  var promotion_url_param_domain = getPromotionUrlParams()['domain'];
877  if ( promotion_url_param_domain && ( new URL(document.location).host == 'localhost:4000' || new URL(document.location).host == 'wcache.spotapps.co' ||  new URL(document.location).host == 'website-editor.spotapps.co' || new URL(document.location).host == 'website-editor-staging.spotapps.co' || new URL(document.location).host == 'wcache-staging.spotapps.co')){
878    $("a[href^='/']").each(function(){
879      if (this.href.indexOf('domain=') == -1){
880        var sh_internal_url = new URL(this.href);
881        sh_internal_url.searchParams.set("domain", promotion_url_param_domain);
882        this.href = sh_internal_url.toString();
883      }
884    })
885  }
886
887
888  function cta_link_matches_href(href, url){
889    var domain = 'villadolcecafe.com';
890    if(typeof url === 'undefined'){
891      return false;
892    }
893    var partsOfURL = url.split(domain);
894    if (partsOfURL.length != 2){
895      return href == url;
896    }else{
897      var urlPath = partsOfURL[1];
898      if (urlPath.substring(0,1) == "/"){
899        urlPath = urlPath.substring(1,urlPath.length);
900      }
901      return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1;
902    }
903  }
904
905  var all_cta_links = [{"id":1661683,"spot_id":267357,"url":"https://villadolcecafe.com/-reservations","cta_link_type":"reservations","created_at":"2025-11-13T17:34:14+00:00","updated_at":null,"made_of_food":false,"link_name":"Reservations","target":null,"website_footer_label":"Reserve","position":1},{"id":1343201,"spot_id":267357,"url":"https://villadolcecafe.com/-specials","cta_link_type":"specials","created_at":"2025-03-26T10:08:00+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"","position":null},{"id":1120910,"spot_id":267357,"url":"https://villadolcecafe.com/-party","cta_link_type":"private_parties","created_at":"2024-10-25T21:21:44+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"Private Parties","target":null,"website_footer_label":"Parties","position":3},{"id":1343202,"spot_id":267357,"url":"https://villadolcecafe.com/-events","cta_link_type":"events","created_at":"2025-03-26T10:08:00+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"","position":null},{"id":1343203,"spot_id":267357,"url":"https://villadolcecafe.com/-drink-menu","cta_link_type":"drink_menu","created_at":"2025-03-26T10:08:00+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"","position":null},{"id":1343204,"spot_id":267357,"url":"https://villadolcecafe.com/-food-menu","cta_link_type":"food_menu","created_at":"2025-03-26T10:08:01+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"","position":null},{"id":1120909,"spot_id":267357,"url":"https://villadolcecafe.com/-catering","cta_link_type":"catering","created_at":"2024-10-25T21:21:44+00:00","updated_at":"2025-04-08T09:26:58+00:00","made_of_food":false,"link_name":"Catering","target":null,"website_footer_label":"Catering","position":4},{"id":1362107,"spot_id":267357,"url":"https://www.toasttab.com/villa-dolce/giftcards","cta_link_type":"gift_cards","created_at":"2025-04-08T09:26:58+00:00","updated_at":null,"made_of_food":false,"link_name":"","target":null,"website_footer_label":"Gift Cards","position":5},{"id":1758833,"spot_id":267357,"url":"https://slicelife.com/restaurants/wi/middleton/53562/villa-dolce/menu?utm_campaign=google-order-action-link&rwg_token=AFd1xnH8PPL7bYoR7G4wniMZWM030W-zT2f0mG5kqGG4Nj_Z3nLDh6AY5XZqv5d1iwIlx8rUfBObcYtvJhva0Yc9VS0uQs4OqQ%3D%3D","cta_link_type":"order","created_at":"2026-01-20T07:29:07+00:00","updated_at":null,"made_of_food":false,"link_name":"Slice","target":null,"website_footer_label":"Order","position":0},{"id":1758835,"spot_id":267357,"url":"https://direct.restaurant/43699","cta_link_type":"order3","created_at":"2026-01-20T07:29:07+00:00","updated_at":null,"made_of_food":false,"link_name":"Direct restaurant","target":null,"website_footer_label":"Order","position":null},{"id":1758834,"spot_id":267357,"url":"https://eatstreet.com/madison-wi/restaurants/villa-dolce-middleton?order-source=OWG_REDIRECT&rwg=1&rwg_token=AFd1xnEcAazYfNVx7SoM5q9EpX4IeVSJ7xxe06FTqtZuwZaidyyD5nS0FuD9rGJOKpr4f3uXl-IStnvgemanz9RYTcJbjfy8Bw%3D%3D","cta_link_type":"order2","created_at":"2026-01-20T07:29:07+00:00","updated_at":null,"made_of_food":false,"link_name":"Eatstreet","target":null,"website_footer_label":"Order","position":null},{"id":1758836,"spot_id":267357,"url":"https://www.toasttab.com/local/order/villa-dolce/r-65ec5d48-6284-4b3a-9136-432f1da7d87c?diningOption=takeout&rwg_token=AFd1xnFfdsnlqGkUY_Tzry3mV87mMAVUJK_hYeK4_Ln-5d2YVqf8xNayowgmBsXjwdnHw1bVYwAgZByAF3hHJPSue4CfCOzcpA%3D%3D","cta_link_type":"order4","created_at":"2026-01-20T07:29:08+00:00","updated_at":null,"made_of_food":false,"link_name":"Toast","target":null,"website_footer_label":"Order","position":null}];
906
907  function find_cta_link(href) {
908    for (var i=0; i< all_cta_links.length; i++){
909      var cta_link = all_cta_links[i];
910      if ( cta_link_matches_href(href, cta_link.url)){
911        return cta_link;
912      }
913    }
914  }
915
916  function find_cta_links(href) {
917    var cta_links = []
918    for (var i=0; i< all_cta_links.length; i++){
919      var cta_link = all_cta_links[i];
920      if ( cta_link_matches_href(href, cta_link.url)){
921        cta_links.push(cta_link);
922      }
923    }
924    return cta_links;
925  }
926
927
928  function get_current_page_cta_link_types(){
929    var types = [];
930    var cta_links = find_cta_links(document.location.href);
931    for (var i=0; i<cta_links.length; i++){
932      types.push(cta_links[i].cta_link_type);
933    }
934    return types;
935  }
936
937
938  function is_food_menu_page(){
939    var cta_link_types = get_current_page_cta_link_types();
940    for (var i=0; i<cta_link_types.length; i++){
941      if ('food_menu' == cta_link_types[i])
942        return true;
943    }
944    return false;
945  }
946
947
948  function get_form_cat_from_cta(){
949    var cta_link = find_cta_link(document.location.href);
950    if (cta_link == null) {
951        return null;
952    }
953    if (cta_link.cta_link_type == 'private_parties'){
954        return 'private_party';
955    }else if (cta_link.cta_link_type == 'reservations'){
956        return 'reservation';
957    }else if (cta_link.cta_link_type == 'catering'){
958        return 'catering';
959    }else if (cta_link.cta_link_type == 'job_listing'){
960        return 'job_listings';
961    }else if (cta_link.cta_link_type == 'gift_cards'){
962          return 'gift_cards';
963    }
964    return null;
965  }
966
967  function element_has_events_defined(elem){
968    if ($._data(elem, "events") === undefined){
969      return false;
970    }
971    return true;
972  }
973
974  function create_ga_events_for_cta_clicks(){
975    if (typeof $ === 'function'){
976
977      var cta_link_of_the_page = find_cta_link(location.href);
978
979
980      $("a").each(function(index, elem){
981        var href = $(elem).attr('href');
982
983        if (href  === undefined ){
984           return;
985        }
986
987        if (href.substring(0,4) == 'tel:'){
988          if (!element_has_events_defined(elem)){  // not footer links
989            $(elem).on("click", function(){
990                universal_ga('send', 'event', {
991                  eventCategory: 'Button',
992                  eventAction: 'Click',
993                  eventLabel: 'Phone',
994                  transport: 'beacon'
995                });
996             });
997
998             if (cta_link_of_the_page){
999                $(elem).on("click", function(){
1000                    universal_ga('send', 'event', {
1001                      eventCategory: 'Button',
1002                      eventAction: 'Click',
1003                      eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone',
1004                      transport: 'beacon'
1005                    });
1006                 });
1007             }
1008          } else {
1009             if (cta_link_of_the_page){
1010               $(elem).on("click", function(){
1011                   universal_ga('send', 'event', {
1012                        eventCategory: 'Button',
1013                        eventAction: 'Click',
1014                        eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone footer',
1015                        transport: 'beacon'
1016                   });
1017               });
1018             }
1019          }
1020
1021
1022        }else{
1023          var cta_link = find_cta_link(href);
1024          if (elem.className != null && elem.className.indexOf("bottom-link") > -1){
1025            // console.log("bottom link detected");
1026          }else{
1027            if (cta_link != null){
1028              $(elem).on("click", function(){
1029                universal_ga('send', 'event', {
1030                        eventCategory: 'Website Link',
1031                        eventAction: 'Click',
1032                        eventLabel: cta_link.cta_link_type,
1033                        transport: 'beacon'
1034                  });
1035              });
1036            }
1037          }
1038        }
1039
1040
1041      });
1042    }
1043  }
1044
1045  if (typeof angular === "undefined") {
1046    create_ga_events_for_cta_clicks();
1047  } else {
1048    angular.element(document).ready(function () {
1049      create_ga_events_for_cta_clicks();
1050    });
1051  }
1052
1053
1054  function triggerShowFooterEvents(){
1055    if (window.screen.availWidth < 768){
1056        universal_ga('send', 'event', {
1057                eventCategory: 'Mobile Footer',
1058                eventAction: 'View',
1059                eventLabel: '',
1060                transport: 'beacon'
1061          });
1062    }
1063  }
1064
1065
1066
1067
1068  ////////////
1069  function smartFooterV2()
1070  {
1071    var list= document.getElementsByClassName("bottom-list-item");
1072    if (!list) return;
1073
1074    if (document.getElementById("bottom-navbar") == null){
1075      return;
1076    }
1077
1078    var bottomNav = document.querySelector('#bottom-navbar .navbar-nav');
1079    var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left');
1080    var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right');
1081
1082    bottomNav.innerHTML = '';
1083    var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0);
1084    linksWithPosition.sort(function(a,b) {
1085      return a.position - b.position;
1086    });
1087
1088    var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : '');
1089
1090    linksWithPosition.forEach((e, i) => {
1091        var target = e.target || getUrlTarget(e.url);
1092        bottomNav.insertAdjacentHTML('beforeend',
1093        `<li class="bottom-list-item" style="white-space: nowrap;width: auto;"><a ${footerLinkStyle} class="bottom-link smart-footer-link" data-type="${e.cta_link_type}" data-position="${i}" target="${target}" href="${e.url}">${e.website_footer_label}</a></li>`);
1094    })
1095
1096    var intervalCount = 0
1097    var interval = setInterval(() => {
1098      if(intervalCount == 50){
1099        clearInterval(interval);
1100      }
1101      removeOverflowingFooterLinks();
1102      intervalCount ++;
1103    }, 200);
1104
1105    $('.smart-footer-link').on("click", function(){
1106          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1107                    shUrlParams['source'] = 'footer';
1108                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1109          }
1110
1111          var visibleLinks = $('.smart-footer-link').map(function (e) {
1112              return $(this).data('type');
1113          }).toArray().join(',');
1114
1115          universal_ga('send', 'event', {
1116                  eventCategory: 'Button',
1117                  eventAction: 'Click_footer_2',
1118                  eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks,
1119                  transport: 'beacon'
1120            });
1121    });
1122  }
1123
1124  function removeOverflowingFooterLinks(){
1125    var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li');
1126    var width_sum = 0;
1127
1128    bottomNavLinks.forEach(e => {
1129      width_sum += e.getBoundingClientRect().width;
1130      if ((width_sum) > window.innerWidth) {
1131        console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;");
1132        e.remove();
1133      }
1134    });
1135  }
1136
1137  function getUrlTarget(url){
1138    if(url.startsWith('tel')){
1139      return '_self';
1140    }
1141    if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){
1142      return '_self';
1143    }
1144    return '_blank';
1145  }
1146
1147  function npb()
1148    {
1149    	var list= document.getElementsByClassName("bottom-list-item");
1150    	if (!list) return;
1151
1152      if (document.getElementById("bottom-navbar") == null){
1153        return;
1154      }
1155
1156      var url = ""
1157    	for (var i=0; i < all_cta_links.length; i++)
1158    	{
1159    		if (all_cta_links[i].cta_link_type == "order"){
1160          url = all_cta_links[i].url;
1161        }
1162    	}
1163
1164    	if ( url == ""){
1165        return;
1166      }
1167
1168    	for (i=0; i < list.length; i++)
1169    	{
1170    		console.log(cta_link_matches_href(list[i].firstChild.href, url));
1171    		if (cta_link_matches_href(list[i].firstChild.href,url))  return;
1172
1173    	};
1174
1175    	var item = list[list.length-1]
1176    	document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true));
1177    	var width_sum = 0;
1178    	for (i=0; i < list.length; i++) {
1179    		width_sum += list[i].getBoundingClientRect().width;
1180    	}
1181
1182    	var item = list[list.length-1]
1183    	if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; }
1184
1185    	item.firstChild.text = "Order";
1186    	item.firstChild.href = url;
1187    	item.firstChild.id = "bottom_link_" + list.length;
1188
1189      $(item.firstChild).on("click", function(){
1190
1191          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1192                    shUrlParams['source'] = 'footer';
1193                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1194                  }
1195
1196          universal_ga('send', 'event', {
1197                  eventCategory: 'Button',
1198                  eventAction: 'Click',
1199                  eventLabel: 'Plan B-2 Order',
1200                  transport: 'beacon'
1201            });
1202      });
1203
1204
1205    }
1206
1207function activateSmartFooter(){
1208    var smart_footer_active = true;
1209    var smart_footer_version = 2;
1210    var man_bottom_active = false;
1211    if(window.location.hash == '#smartFooterV2=enabled'){
1212      smartFooterV2();
1213      return;
1214    }
1215    if (smart_footer_active && !man_bottom_active){
1216      if(smart_footer_version == 2 ){
1217          smartFooterV2();
1218       }else {
1219          npb();
1220       }
1221    }
1222  }
1223
1224  activateSmartFooter();
1225
1226  var corona_config_str = '{"id":319803,"spot_id":267357,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":null,"food_page_instruction_phone":"6088330033","created_at":"2024-10-25T21:19:35+00:00","updated_at":"2024-10-30T17:47:41+00:00","food_page_button_color":null,"food_page_button_text_color":null,"food_page_link_color":null,"food_page_text_color":null,"wine_and_beer_to_go_license":false,"all_alcoholic_to_go_lincense":false,"current_operating_status":"Offering To Go and Dine-in with Full Capacity","contact_tracing_active":false,"contact_tracing_text":"In cooperation with health guidelines for contact tracing, please fill out the form below.","contact_tracing_address_required":false,"collapse_all":false,"deliveries_priority_value":3,"pick_ups_priority_value":3,"reservations_priority_value":3,"private_parties_priority_value":3,"catering_priority_value":5,"gift_cards_priority_value":3,"jobs_priority_value":0,"food_and_drinks_priority_value":3,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":3,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":3,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}';
1227  var corona_config =  corona_config_str != '' ?  JSON.parse('{"id":319803,"spot_id":267357,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":null,"food_page_instruction_phone":"6088330033","created_at":"2024-10-25T21:19:35+00:00","updated_at":"2024-10-30T17:47:41+00:00","food_page_button_color":null,"food_page_button_text_color":null,"food_page_link_color":null,"food_page_text_color":null,"wine_and_beer_to_go_license":false,"all_alcoholic_to_go_lincense":false,"current_operating_status":"Offering To Go and Dine-in with Full Capacity","contact_tracing_active":false,"contact_tracing_text":"In cooperation with health guidelines for contact tracing, please fill out the form below.","contact_tracing_address_required":false,"collapse_all":false,"deliveries_priority_value":3,"pick_ups_priority_value":3,"reservations_priority_value":3,"private_parties_priority_value":3,"catering_priority_value":5,"gift_cards_priority_value":3,"jobs_priority_value":0,"food_and_drinks_priority_value":3,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":3,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":3,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}') : null;
1228
1229
1230  //corona instuctions
1231  function show_corona_instructions(text, phone, btnText){
1232    //format to US number
1233    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1234
1235    if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) {
1236        var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1237        var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1238    }else {
1239        var linkLocation = 'tel:+1'+phone+'';
1240        var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +''
1241    }
1242    var appendPhone = 'tel:+1'+phone+'';
1243    //inject html content
1244    if ($('.food-menu-nav').length) {
1245      //new template
1246      var pageEl =  $('.food-menu-nav').css('margin','20px auto 10px auto');
1247      var textColor = rgb2hex($('.section-header').css('color'));
1248      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1249      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1250      fontSize = fontSize + Math.round(fontSize  * 0.25);
1251
1252      // var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="color:'+linkColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="font-size:'+fontSize+'px" class="food-menu-nav-item custom-temp-btn hvr-fade active" href="tel:+1'+phone+'">'+btnText+'</a></div>';
1253      var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="text-decoration: underline;color:'+textColor+';" href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="display: inline-block !important;font-size:'+fontSize+'px" class="food-menu-nav-item custom-temp-btn hvr-fade active" href="'+btnLinkLocation +'">'+btnText+'</a></div>';
1254
1255    }else {
1256      //old template
1257      var pageEl = $('.tabnav');
1258      var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1259      var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1260
1261      var linkTextColor = getContrast50(linkColor);
1262      var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1263      fontSize = fontSize + Math.round(fontSize  * 0.25);
1264      var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform');
1265
1266      // var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';margin-bottom:20px;">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="color:'+linkColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="margin: 20px auto; padding: 10px 50px 10px 30px; cursor: pointer; background-color: '+linkColor+'; background: '+linkColor+'; text-decoration: none; color: '+textColor+'; border: 2px solid '+linkColor+';font-size:'+fontSize+'px;text-transform: '+textTransform+'" href="tel:+1'+phone+'">'+btnText+'</a></div>';
1267      var html = '<div id="show-corona-instructions" style="padding:20px;flex: 0 1 100%;" class="text-center"><p style="color:'+textColor+';margin-bottom:20px;">'+text+' <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="text-decoration: underline;color:'+textColor+';"href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></p><a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Corona Instructions Phone\');" style="margin: 20px auto; padding: 10px 30px 10px 30px; cursor: pointer; background-color: '+linkColor+'; background: '+linkColor+'; text-decoration: none; color: '+linkTextColor+'; border: 2px solid '+linkColor+';font-size:'+fontSize+'px;text-transform: '+textTransform+'" href="'+btnLinkLocation+'">'+btnText+'</a></div>';
1268
1269    }
1270     //html content
1271    pageEl.prepend(html);
1272  }
1273
1274  function rgb2hex(rgb) {
1275    if(typeof rgb !== "undefined"){
1276      rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
1277      if (!rgbColor) {
1278        rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/);
1279        return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]);
1280      }
1281      function hex(x) {
1282          return ("0" + parseInt(x).toString(16)).slice(-2);
1283      }
1284      return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]);
1285    }
1286    return rgb;
1287  }
1288
1289  function getContrast50(hexcolor){
1290    return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff';
1291  }
1292
1293  function show_corona_sidebar_instructions(text, phone){
1294    //format to US number
1295    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1296    var divWidth = 230;
1297    var top = 50;
1298    var linkSize = '1.6em';
1299    var pSize = $('p').css('font-size');
1300    var appendPhone = 'tel:+1'+phone+'';
1301
1302    if ($(window).width() < 1600)
1303      var top = 30;
1304    if ($(window).width() < 1200){
1305      var divWidth = 180;
1306      var linkSize = '1.4em';
1307      var pSize ='1.1em';
1308    }
1309
1310    if($('.food-menu-nav').length){ //new template
1311      var textColor = $('.food-menu-nav-item.active').css('color');
1312      var linkColor = $('.food-menu-nav-item.active').css('background-color');
1313
1314      var linkTextColor = $('.food-menu-nav-item.active').css('color');
1315      var parent = $('.food-menu-page');
1316    }
1317    else { //old template
1318      var textColor = $('.menu-item-name-traditional').css('color');
1319      var linkColor = $('.style-traditional .tabnav .nav>
1319li.active>a').css('color');
1320      var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu');
1321      var linkTextColor = getContrast50(linkColor);
1322    }
1323
1324    // $(parent).append('<div id="corona-instructions-sidebar" style="display:none;position:fixed;width:'+divWidth+'px;top:'+top+'vh;right:0;background-color:'+linkColor+';padding:15px;text-align:center;color:'+textColor+';text-transform:uppercase;"><p style="margin:0 0 5px;font-size:'+pSize+';">'+text+'</p><i class="fa fa-phone" aria-hidden="true"></i> <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Food Page Side Element Phone\');"  style="font-size:'+linkSize+';color:'+textColor+';" href="tel:+1'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></div>');
1325    $(parent).append('<div id="corona-instructions-sidebar" style="display:none;position:fixed;width:'+divWidth+'px;top:'+top+'vh;right:0;background-color:'+linkColor+';padding:15px;text-align:center;color:'+linkTextColor+';text-transform:uppercase;"><p style="margin:0 0 5px;font-size:'+pSize+';">'+text+'</p><i class="fa fa-phone" aria-hidden="true"></i> <a onclick="ga(\'send\', \'event\', \'Button\', \'Click\', \'Food Page Side Element Phone\');this.href=\'' + appendPhone + '\';"  style="font-size:'+linkSize+';color:'+linkTextColor+';" href="/call-us/'+phone+'">'+ match[1] + '-' + match[2] + '-' + match[3] +'</a></div>');
1326
1327    //check if resolution is bigger than tablet resolution
1328/*  if ($(window).width() > 991) {
1329      //detect scroll
1330      window.onscroll = function (e) {
1331      if ($(window).scrollTop() == 0) {
1332          $('#corona-instructions-sidebar').hide();
1333        }else {
1334          $('#corona-instructions-sidebar').show();
1335        }
1336      }
1337    } */
1338  }
1339
1340  function check_corona_config(config){
1341    console.log(config)
1342    if (config) {
1343      if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) {
1344        if (!config.promote_deliveries && config.promote_pick_up) {
1345          var btnText = 'Call For Pick Up';
1346        }
1347        if (config.promote_deliveries && !config.promote_pick_up) {
1348          var btnText = 'Call For Delivery';
1349        }
1350        if (config.promote_deliveries && config.promote_pick_up) {
1351          var btnText = 'Call For Pick Up Or Delivery';
1352        }
1353
1354        if(typeof btnText !== "undefined"){ // check if pick up or delivery are true
1355          if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) {
1356                var btnText = 'ORDER NOW';
1357                    if($('.food-menu-nav').length){ //new template
1358                      var textColor = rgb2hex($('.section-header').css('color'));
1359                      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1360                      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1361                      fontSize = fontSize + Math.round(fontSize  * 0.25);
1362                    }
1363                    else { //old template
1364                        var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1365                        var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1366
1367                        var linkTextColor = getContrast50(linkColor);
1368                        var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1369                        fontSize = fontSize + Math.round(fontSize  * 0.25);
1370                    }
1371                show_corona_instructions('For online orders, use our own <a style="text-decoration:underline;color: '+textColor+';" href="https://tmt.spotapps.co/ordering-menu/?spot_id='+config.spot_id+'&images=yes&accordion=true#"> commission free ordering platform! </a> or call:', config.food_page_instruction_phone, btnText);
1372                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1373            } else {
1374                show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText);
1375                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1376            }
1377
1378        }
1379      }
1380    }
1381  }
1382
1383
1384  if (is_food_menu_page() && !window.location.search.includes("contactless=true")){
1385    $( document ).ready(function() {
1386       setTimeout(function(){
1387        check_corona_config(corona_config);
1388       }, 300);
1389    });
1390  }
1391
1392
1393
1394  function isPhone(phone){
1395      var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
1396      return regex.test(phone);
1397  }
1398
1399  function sendEmail_MT (input_id) {
1400    const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img");
1401
1402    const $step = {
1403      form: $("[data-id=newsletter-widget-2] .sph-email-form"),
1404      message: $("[data-id=newsletter-widget-2] .sph-response-message"),
1405    }
1406
1407    const $field = {
1408      email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id),
1409      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id),
1410      consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id),
1411    };
1412
1413    const $error = {
1414      email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id),
1415      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id),
1416    };
1417
1418    if ($field.email.val().trim() === "") {
1419        $error.email
1420          .html("This field is required")
1421          .show();
1422    }
1423    else if (!isEmail($field.email.val().trim())) {
1424      $error.email
1425        .html("Please use the format “[email protected]”")
1426        .show();
1427    } else {
1428      $error.email
1429        .html("")
1430        .hide();
1431    }
1432
1433    if ($field.consent.is(':checked') && $field.phone.val().trim() === "") {
1434      $error.phone
1435        .html("This field is required")
1436        .show();
1437    } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) {
1438      $error.phone
1439        .html("The phone number must contain 10 digits")
1440        .show();
1441    } else {
1442      $error.phone
1443        .html("")
1444        .hide();
1445    }
1446
1447    const errorField = $step.form.find('.sh-form-error:visible');
1448
1449    if (errorField.length > 0) {
1450      const input = errorField.first().next();
1451
1452      document.activeElement.blur();
1453
1454      setTimeout(() => {
1455        input.focus();
1456      }, 160)
1457
1458      return;
1459    }
1460
1461    $loader
1462      .show()
1463      .prev()
1464      .hide();
1465
1466    $.ajax({
1467      method: "POST",
1468      url: "https://www.spothopperapp.com/api/spots/267357/contacts/add_with_texting_permission",
1469      crossDomain: true,
1470      dataType: 'json',
1471      data: {
1472        email: $field.email.val().trim(),
1473        phone: $field.phone.val().trim(),
1474        texting_permission: $field.consent.is(':checked'),
1475      },
1476      success: function (data) {
1477        afterRequestSubmission(data);
1478      },
1479      error: function () {
1480        afterRequestSubmission("Something went wrong. Please try again later.");
1481      }
1482    });
1483
1484    function afterRequestSubmission (data) {
1485      $step.form.hide();
1486
1487      $step.message
1488        .html(data)
1489        .show()
1490        .trigger('focus');
1491    }
1492  }
1493</script>
1493<script>function addPromotionParamsToTMTLinks()
1494{
1495    if (sessionStorage.getItem('shUrlParams')) {
1496        let shParams = JSON.parse(sessionStorage.getItem('shUrlParams'));
1497        if (!Object.keys(shParams).length)
1498            return;
1499        if(!shParams.source)
1500            return;
1501        $('a').each(function () {
1502            if (this.href.includes('tmt.spotapps.co')) {
1503                if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion='))
1504                    return;
1505
1506                this.href = this.href + '&source=' + shParams.source;
1507                if(shParams.destination)
1508                    this.href = this.href + '&destination=' + shParams.destination;
1509                if(shParams.promotion)
1510                    this.href = this.href + '&promotion=' + shParams.promotion;
1511                if(shParams.fb_post_id)
1512                    this.href = this.href + '&fb_post_id=' + shParams.fb_post_id;
1513                if(shParams.email_post_id)
1514                    this.href = this.href + '&email_post_id=' + shParams.email_post_id;
1515            }
1516        })
1517    }
1518}
1519setTimeout(function() {
1520  addPromotionParamsToTMTLinks();
1521  addFooterToSourceParam();
1522},600)
1523
1524function addFooterToSourceParam()
1525{
1526    $('.bottom-link').each(function (){
1527        if(shouldAddSourceParam(this.href))
1528          this.href = this.href + '&source=footer';
1529    })
1530    $('#sh-multiple-links-content-holder a').each(function (){
1531       if(shouldAddSourceParam(this.href))
1532          this.href = this.href + '&source=footer';
1533    })
1534}
1535function shouldAddSourceParam(link){
1536  if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){
1537    return true;
1538  }
1539  return false;
1540}
1541</script>
1541<script>
1542;(async () => {
1543if (typeof window.focusTrap === 'undefined') {
1544    await getScript('https://unpkg.com/tabbable/dist/index.umd.js');
1545    await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js');
1546}
1547
1548document.querySelectorAll('.modal').forEach((element) => {
1549    const trap = window.focusTrap?.createFocusTrap(element, {
1550        allowOutsideClick: true,
1551    });
1552
1553    $(element).on('shown.bs.modal', () => {
1554	    trap?.activate();
1555	});
1556
1557	$(element).on('hidden.bs.modal', () => {
1558        trap?.deactivate();
1559    });
1560});
1561
1562async function getScript (source) {
1563    return new Promise((resolve, reject) => {
1564        const script = document.createElement('script');
1565        script.src = source;
1566        script.async = true;
1567
1568        script.onload = resolve;
1569        script.onerror = reject;
1570
1571        document.head.appendChild(script);
1572    });
1573}
1574})();
1575</script>
1575<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
1575<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
1575<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
1575<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
1575<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
1575<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
1575<script>var changes_log_array = {};</script>
1575<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
1575</body></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.