PageSourceSearch

https://troubadourwinebar.com/happy-hours-specials

html troubadourwinebar.com collected 2026-10-07 13:25:24 UTC 80,247 bytes, 1,672 lines download raw bytes

1<!DOCTYPE html>
2�<html lang="en"><head><!-- Google tag (gtag.js) -->
vendor: 71 bytes, line 2
2<script async="async" src="https://www.googletagmanager.com/gtag/js?id=
2G-VG24VK2VKT
vendor: 11 bytes, line 2
2"></script>
2<script>
3    window.dataLayer = window.dataLayer || [];
4    function gtag(){dataLayer.push(arguments);}
5    gtag('set', 'linker', {'domains': ['tmt.spotapps.co','spothopperapp.com']});
6    gtag('js', new Date());
7    gtag('config', 'G-5NYPCNS5NT');
8    gtag('config', 'G-VG24VK2VKT');
9  </script>
9<!-- wcache 2026-10-07 07:57:38.371010Z --><!--
10smart_footer: true,
11smart_footer_version: 2,
12scripting_active: false
13--><link href="https://troubadourwinebar.com/happy-hours-specials" 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="Troubadour Wine Bar - Specials" property="og:title"/><meta content="website" property="og:type"/><meta content="http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials" property="og:url"/><meta content="Troubadour is the best place for wine in the Twin Cities. It’s cozy, chic, welcoming, and always a good time. This little wine bar has given me some of the best memories and nights out I�..." property="og:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png" property="og:image"/><meta content="Troubadour Wine Bar image" property="og:image:alt"/><meta content="image/png" property="og:image:type"/><meta content="summary_large_image" name="twitter:card"/><meta content="Troubadour Wine Bar - Specials" name="twitter:title"/><meta content="Troubadour is the best place for wine in the Twin Cities. It’s cozy, chic, welcoming, and always a good time. This little wine bar has given me some of the best memories and nights out I�..." name="twitter:description"/><meta content="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png" name="twitter:image"/><title>Troubadour Wine Bar - Specials</title><!-- wbv 1.62.0 --><meta content="1.62.0" name="wbv"/>
13<script>document.cookie='resolution='+Math.max(screen.width,screen.height)+("devicePixelRatio" in window ? ","+devicePixelRatio : ",1")+'; path=/';</script>
13<link href="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/favicons/favicon-96x96.png" rel="icon" sizes="96x96" type="image/png"/><link href="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/favicons/favicon.svg" rel="icon" type="image/svg+xml"/><link href="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/favicons/favicon.ico" rel="shortcut icon"/><link href="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/favicons/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><meta content="Troubadour Wine Bar" name="apple-mobile-web-app-title"/><link href="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/favicons/site.webmanifest" rel="manifest"/><link href="https://static.spotapps.co/web/troubadourwinebar--com/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--com/lib/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--com/lib/hover_css/css/hover-min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--com/lib/owlcarousel/owl.carousel.min.css" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--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/troubadourwinebar--com/css/style.css?version2" id="mainCSS" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--com/css/bottom_navigation_v1.css?v1786703848" rel="stylesheet"/><link href="css/custom.css?v1786703848&domain=troubadourwinebar.com" rel="stylesheet"/><link href="https://static.spotapps.co/web/troubadourwinebar--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/troubadourwinebar--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]--><!--[if lt IE 9]>
14    
14<script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
14
15    
15<script src="//oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
15
16    <![endif]--><style>
17        .specials-background {
18            background: url(https://static.spotapps.co/website_images/ab_websites/106490_website_v2/specials_pg_back.jpg) no-repeat center center fixed; -webkit-background-size: cover;
19            background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)), url(https://static.spotapps.co/website_images/ab_websites/106490_website_v2/specials_pg_back.jpg) no-repeat center center fixed;
20            -webkit-background-size: cover;
21            -moz-background-size: cover;
22            -o-background-size: cover;
23            background-size: cover;
24        }
25            </style>
25<script src="https://static.spotapps.co/websites/lib/lazysizes/lazysizes.min.js" async=""></script>
25<script>
26function ga_check(){
27  return true;
28}
29</script>
29<script>
30function universal_ga(action, type, category, ev_action, label){
31  if(typeof ga === 'function')
32  {
33    if(!(action && label))
34      ga(action, type, category)
35    else
36      ga(action, type, category, ev_action, label)
37  }
38
39  if(typeof gtag === 'function')
40  {
41    if(!(action && label))
42    {
43      hash = category
44      ev_label = hash["eventLabel"]
45      var splits = ev_label.match(/.{1,100}/g) ?? [];
46      delete(hash["eventLabel"])
47
48      if(splits.length <= 1)
49        hash["eventLabel"] = ev_label
50      else
51      {
52        for (let i = 0; i < splits.length; i++) {
53          var key = "eventLabel_"+i
54          hash[key] = splits[i]
55        }
56      }
57      console.log(hash)
58      gtag("event", hash["eventCategory"], hash);
59    }
60    else
61    {
62      var hash = {
63        eventCategory: category,
64        eventAction: ev_action
65      }
66
67      var splits = label.match(/.{1,100}/g) ?? [];
68      if(splits.length <= 1)
69        hash["eventLabel"] = label
70      else
71      {
72        for (let i = 0; i < splits.length; i++) {
73          var key = "eventLabel_"+i
74          hash[key] = splits[i]
75        }
76      }
77      gtag("event", hash["eventCategory"], hash);
78    }
79  }
80}
81</script>
81<script>    function getPromotionUrlParams(){
82      var params_str = sessionStorage.getItem('shUrlParams');
83      if (params_str != null){
84        return JSON.parse(params_str);
85      }else{
86        return {};
87      }
88    }
89
90    function getPromotionSourceDetails(){
91        var params_str = localStorage.getItem('promotionSourceDetails');
92        if (params_str != null){
93          return JSON.parse(params_str);
94        }else{
95          return {};
96        }
97    }
98
99    function getLastEmailVisitInDays(){
100      var promotionSourceDetails = getPromotionSourceDetails();
101      if (!promotionSourceDetails['last_visit_email'] ){
102        return null;
103      }
104      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_email'])) / (1000 * 60 * 60 * 24));
105    }
106
107    function getLastSocialVisitInDays(){
108      var promotionSourceDetails = getPromotionSourceDetails();
109      if (!promotionSourceDetails['last_visit_social'] ){
110        return null;
111      }
112      return Math.floor((new Date() - new Date(promotionSourceDetails['last_visit_social'])) / (1000 * 60 * 60 * 24));
113    }
114
115    var shUrlParams = getPromotionUrlParams();
116    var promotionSourceDetails = getPromotionSourceDetails();
117
118    new URL(document.location).searchParams.forEach(function(value, paramName){
119
120     shUrlParams[paramName] = value;
121
122     if (paramName == 'source' && value =='social' ){
123       promotionSourceDetails['last_visit_social'] = new Date();
124       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
125     }
126
127     if (paramName == 'source' && value =='email' ){
128       promotionSourceDetails['last_visit_email'] = new Date();
129       localStorage.setItem('promotionSourceDetails', JSON.stringify(promotionSourceDetails));
130     }
131
132    });
133
134    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams))
135</script>
135<style>a:focus:not(:focus-visible){outline:none;box-shadow:none;}
136a.get-directions-footer-link{display:inline-block;transform-origin:left center;transition:transform .2s ease;}
137a.get-directions-footer-link:hover{transform:scale(1.08);}
138@media (prefers-reduced-motion:reduce){a.get-directions-footer-link{transition:none;transform:none;}}
139a.get-directions-footer-link,a.get-directions-footer-link:hover{color:inherit!important;}</style></head><body class="drink-menu specials specials-background"><div><header style="background-color:#000000;"><style>
140
141  .nav-v7 .navbar-logo .container {
142    height: 70px;
143  }
144  .nav-v7 .navbar-logo .header-logo img {
145    max-height: 70px;
146  }
147
148
149.navbar.nav-v6 .navbar-logo .container {
150  height: 90px;
151  padding-top: 10px;
152  padding-bottom: 10px;
153}
154.navbar.nav-v6.nav-scroll .navbar-logo .container {
155  height: 60px;
156  padding-top: 0px;
157  padding-bottom: 0px;
158}
159.navbar.nav-v6 .header-logo img {
160  max-width: 100%;
161}
162.navbar.nav-v6.nav-scroll .header-logo img {
163  max-width: 80%;
164}
165.nav-v7 .navbar-logo .header-logo img {
166  max-height: 90px;
167}
168.nav-v7.nav-scroll .navbar-logo .header-logo img {
169  max-height: 60px;
170}
171
172@media (max-width: 767px) {
173  /* DO NOT change mobile nav height on page scroll */
174  .navbar.nav-v6 .navbar-header,
175  .navbar.nav-v6.nav-scroll .navbar-header {
176    padding-top: 10px;
177    padding-bottom: 10px;
178  }
179  .navbar.nav-v6 .socialnav,
180  .navbar.nav-v6.nav-scroll .socialnav {
181    margin-top: 10px;
182  }
183  .navbar.nav-v6 .container,
184  .navbar.nav-v6.nav-scroll .container {
185    padding-top: 0;
186    padding-bottom: 0;
187  }
188  .navbar.nav-v6 .header-logo,
189  .navbar.nav-v6.nav-scroll .header-logo {
190    height: 70px;
191  }
192  .navbar.nav-v6 .header-logo img {
193    max-height: 100%;
194  }
195  .navbar.nav-v6.nav-scroll .header-logo img {
196    max-width: 100%;
197  }
198  /* HOME page CHANGE mobile nav height on page scroll */
199  /* Remove body.home-page from below code if there should be mobile nav height change on ALL pages */
200  body.home-page .navbar.nav-v6 .navbar-header {
201    padding-top: 10px;
202    padding-bottom: 10px;
203  }
204  body.home-page .navbar.nav-v6.nav-scroll .navbar-header{
205    padding-top: 0px;
206    padding-bottom: 0px;
207  }
208  body.home-page .navbar.nav-v6 .socialnav {
209    margin-top: 10px;
210  }
211  body.home-page .navbar.nav-v6.nav-scroll .socialnav {
212    margin-top: 0px;
213  }
214  body.home-page .navbar.nav-v6 .container{
215    padding-top: 0;
216    padding-bottom: 0;
217  }
218  body.home-page .navbar.nav-v6.nav-scroll .container {
219    padding-top: 0;
220    padding-bottom: 0;
221  }
222  body.home-page .navbar.nav-v6 .header-logo {
223    height: 70px;
224  }
225  body.home-page .navbar.nav-v6.nav-scroll .header-logo {
226    height: 50px;
227  }
228  body.home-page .navbar.nav-v6 .header-logo img {
229    max-height: 100%;
230    max-width: 100%;
231  }
232  body.home-page .navbar.nav-v6.nav-scroll .header-logo img {
233    max-width: 80%;
234  }
235}
236
237
238.navbar-regular .navbar-collapse.collapse.in {
239  background-color: transparent;
240  width: 100%;
241}
242.navbar.nav-v6 .navbar-tabs {
243    background-color: rgba(255,255,255,0.6);
244    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
245    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
246    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
247}
248.navbar.nav-v6.nav-scroll .navbar-tabs {
249    background-color: #F1EFEF;
250    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
251    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
252    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
253}
254.drink-menu .navbar.nav-v6 .navbar-tabs {
255  background-color: #F1EFEF;
256  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
257  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
258  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
259}
260.drink-menu .navbar.nav-v6.nav-scroll .navbar-tabs {
261  background-color: #F1EFEF;
262  -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
263  -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
264  box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
265}
266li.drop-down-link .sub-menu {
267  background-color: rgba(255,255,255,0.6);
268  color: #33201F;
269  }
270.nav-scroll li.drop-down-link .sub-menu {
271  background-color: #F1EFEF;
272  color: #33201F;
273}
274.drink-menu li.drop-down-link .sub-menu {
275  background-color: #F1EFEF;
276  color: #33201F;
277}
278.drink-menu .nav-scroll li.drop-down-link .sub-menu {
279  background-color: #F1EFEF;
280  color: #33201F;
281}
282li.drop-down-link .sub-menu a,
283li.drop-down-link div.drop-down {
284  color: #33201F;
285}
286.nav-scroll li.drop-down-link .sub-menu a,
287.nav-scroll li.drop-down-link div.drop-down {
288  color: #33201F;
289}
290.drink-menu li.drop-down-link .sub-menu a,
291.drink-menu li.drop-down-link div.drop-down {
292  color: #33201F;
293}
294.drink-menu .nav-scroll li.drop-down-link .sub-menu a,
295.drink-menu .nav-scroll li.drop-down-link div.drop-down {
296  color: #33201F;
297}
298
299.navbar.nav-v6 .navbar-logo {
300  background-color: rgba(255,255,255,0.6);
301}
302.navbar.nav-v6.nav-scroll .navbar-logo {
303  background-color: #F1EFEF;
304}
305.drink-menu .navbar.nav-v6 .navbar-logo {
306  background-color: #F1EFEF;
307}
308.drink-menu .navbar.nav-v6.nav-scroll .navbar-logo {
309  background-color: #F1EFEF;
310}
311
312.navbar-regular.nav-v6 .navbar-nav>li>a,
313.navbar-regular.nav-v6 .navbar-nav>li>a:hover,
314.navbar-regular.nav-v6 .navbar-nav>.active>a,
315.navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
316.navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
317  border: none;
318  border-right: 1px solid #33201F;
319  background-color: transparent;
320  color: #B34E14;
321}
322.navbar-regular.nav-v6 .navbar-nav>li>a {
323  color: #33201F;
324}
325.drink-menu .navbar.nav-v6 .navbar-nav>li>a {
326  color: #33201F;
327  border-right: 1px solid #33201F;
328}
329.drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
330.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
331.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
332.drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
333  color: #B34E14;
334}
335
336li.drop-down-link .sub-menu a:hover,
337li.drop-down-link .sub-menu a:focus{
338  color: #B34E14;
339}
340.drink-menu li.drop-down-link .sub-menu a:hover,
341.drink-menu li.drop-down-link .sub-menu a:focus {
342  color: #B34E14;
343}
344
345.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a,
346.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a:hover,
347.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a,
348.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:focus,
349.navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:hover{
350  color: #B34E14;
351}
352.navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a {
353  color: #33201F;
354}
355.drink-menu .navbar.nav-v7 .navbar-nav>li>a {
356  color: #33201F;
357}
358.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a {
359  color: #fff;
360}
361.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>li>a:hover,
362.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a,
363.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:focus,
364.drink-menu .navbar-regular.nav-v7 .navbar-contact .navbar-nav>.active>a:hover {
365  color: #B34E14;
366}
367
368.navbar-regular.nav-v6 .navbar-toggle .icon-bar {
369  background-color: #33201F;
370}
371.drink-menu .navbar-regular.nav-v6 .navbar-toggle .icon-bar {
372  background-color: #33201F;
373}
374.navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
375  background-color: #B34E14;
376}
377.drink-menu .navbar-regular.nav-v6 [aria-expanded="true"].navbar-toggle .icon-bar {
378  background-color: #B34E14;
379}
380.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a,
381.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
382.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
383.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
384.navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
385  border: none;
386  border-right: 1px solid #33201F;
387  color: #B34E14;
388}
389.navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a {
390  color: #33201F;
391}
392.drink-menu .navbar.nav-v6.nav-scroll .navbar-nav>li>a {
393  color: #33201F;
394  border-right: 1px solid #33201F;
395}
396.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
397.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
398.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
399.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover {
400  color: #B34E14;
401}
402
403.nav-scroll li.drop-down-link .sub-menu a:hover,
404.nav-scroll li.drop-down-link .sub-menu a:focus {
405  color: #B34E14;
406}
407.drink-menu .nav-scroll li.drop-down-link .sub-menu a:hover,
408.drink-menu .nav-scroll li.drop-down-link .sub-menu a:focus {
409  color: #B34E14;
410}
411
412.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a,
413.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a:hover,
414.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a,
415.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:focus,
416.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:hover {
417  color: #e26735;
418}
419.navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a {
420  color: #fff;
421}
422.drink-menu .navbar.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a {
423  color: #33201F;
424}
425.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>li>a:hover,
426.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a,
427.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:focus,
428.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-contact .navbar-nav>.active>a:hover{
429  color: #B34E14;
430}
431
432.navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
433  background-color: #33201F;
434}
435.drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-toggle .icon-bar {
436  background-color: #33201F;
437}
438.navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar {
439  background-color: #B34E14;
440}
441.drink-menu .navbar-regular.nav-v6.nav-scroll [aria-expanded="true"].navbar-toggle .icon-bar{
442  background-color: #B34E14;
443}
444.navbar.nav-v6 .header-logo-text{
445  color: #33201F;
446}
447.navbar.nav-v6.nav-scroll .header-logo-text{
448  color: #33201F;
449}
450.navbar.nav-v6 .social-icon{
451  color: #33201F;
452}
453.navbar.nav-v6.nav-scroll .social-icon{
454  color: #33201F;
455}
456.navbar.nav-v6 .social-square .contact-icon:hover {
457  color: #33201F;
458  background-color: #B34E14;
459}
460.navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
461  color: #33201F;
462  background-color: #B34E14;
463}
464
465.drink-menu .navbar.nav-v6 .header-logo-text{
466  color: #33201F;
467}
468.drink-menu .navbar.nav-v6.nav-scroll .header-logo-text{
469  color: #33201F;
470}
471.drink-menu .navbar.nav-v6 .social-icon{
472  color: #33201F;
473}
474.drink-menu  .navbar.nav-v6.nav-scroll .social-icon{
475  color: #33201F;
476}
477.drink-menu .navbar.nav-v6 .social-square .contact-icon:hover {
478  color: #33201F;
479  background-color: #B34E14;
480}
481.drink-menu .navbar.nav-v6.nav-scroll .social-square .contact-icon:hover {
482  color: #33201F;
483  background-color: #B34E14;
484}
485.navbar.nav-v6 .navbar-logo .container {
486  border-bottom: 1px solid transparent;
487}
488.navbar.nav-v6.nav-scroll .navbar-logo .container {
489  border-bottom: 1px solid transparent;
490}
491.drink-menu .navbar.nav-v6 .navbar-logo .container {
492  border-bottom: 1px solid transparent;
493}
494.drink-menu .navbar.nav-v6.nav-scroll .navbar-logo .container {
495  border-bottom: 1px solid transparent;
496}
497@media (max-width: 767px) {
498  .navbar.nav-v6 {
499      background-color: rgba(255,255,255,0.6);
500      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
501      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
502      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
503  }
504  .navbar.nav-v6.nav-scroll {
505      background-color: #F1EFEF;
506      -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
507      -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
508      box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
509  }
510  .drink-menu .navbar.nav-v6 {
511    background-color: #F1EFEF;
512    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
513    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
514    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0);
515  }
516  .drink-menu .navbar.nav-v6.nav-scroll {
517    background-color: #F1EFEF;
518    -webkit-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
519    -moz-box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
520    box-shadow: 0px 4px 4px 0px rgba(0,0,0,0.4);
521  }
522  .navbar.nav-v6 .container,
523  .navbar.nav-v6.nav-scroll .container,
524  .drink-menu .navbar.nav-v6 .container,
525  .drink-menu .navbar.nav-v6.nav-scroll .container {
526    border-bottom: none;
527  }
528  .navbar.nav-v6 .navbar-header {
529    border-bottom: 2px solid transparent;
530  }
531  .navbar.nav-v6.nav-scroll .navbar-header {
532    border-bottom: 2px solid transparent;
533  }
534  .drink-menu .navbar.nav-v6 .navbar-header {
535    border-bottom: 2px solid transparent;
536  }
537  .drink-menu .navbar.nav-v6.nav-scroll .navbar-header {
538    border-bottom: 2px solid transparent;
539  }
540  li.drop-down-link .sub-menu,
541  .drink-menu li.drop-down-link .sub-menu {
542    background-color: transparent;
543  }
544  .nav-scroll li.drop-down-link .sub-menu,
545  .drink-menu .nav-scroll li.drop-down-link .sub-menu {
546    background-color: transparent;
547  }
548      /* Mobile home background */
549  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse,
550  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing,
551  .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in {
552          background-color: rgb(255, 255, 255);
553      }
554  /* Mobile home background scroll */
555  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse,
556  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing,
557  .navbar.nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in {
558          background-color: #f1efef;
559      }
560  /* Mobile pages background */
561  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse,
562  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapsing,
563  .drink-menu .navbar.nav-v6.navbar-regular.mobile-full-height .navbar-collapse.collapse.in {
564          background-color: #f1efef;
565      }
566  /* Mobile pages background scroll */
567  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse,
568  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapsing,
569  .drink-menu .nav-v6.navbar-regular.nav-scroll.mobile-full-height .navbar-collapse.collapse.in {
570          background-color: #f1efef;
571      }
572  .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
573  .navbar-regular.nav-v6 .navbar-nav>.active>a,
574  .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
575  .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
576    background-color: #B34E14;
577    color: #33201F;
578  }
579  .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
580  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
581  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
582  .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
583    background-color: #B34E14;
584    color: #33201F;
585  }
586  .drink-menu .navbar-regular.nav-v6 .navbar-nav>li>a:hover,
587  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a,
588  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:focus,
589  .drink-menu .navbar-regular.nav-v6 .navbar-nav>.active>a:hover{
590    background-color: #B34E14;
591    color: #33201F;
592  }
593  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>li>a:hover,
594  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a,
595  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:focus,
596  .drink-menu .navbar-regular.nav-v6.nav-scroll .navbar-nav>.active>a:hover{
597    background-color: #B34E14;
598    color: #33201F;
599  }
600
601  .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
602    color: #33201F;
603  }
604  .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
605    color: #33201F;
606  }
607  .drink-menu .navbar-regular.nav-v6 li.drop-down-link.active .drop-down .fa.fa-angle-up {
608    color: #33201F;
609  }
610  .drink-menu .navbar-regular.nav-v6.nav-scroll li.drop-down-link.active .drop-down .fa.fa-angle-up {
611    color: #33201F;
612  }
613}
614</style><!-- nav --><nav class="navbar nav-v4 nav-v6 nav-v7 navbar-regular navbar-fixed-top mobile-full-height" id="navbar" role="navigation"><div id="skip"><a class="visuallyhidden skip-content" href="#content">Skip to main content</a></div><div class="desktop-navigation logo-center"><div class="navbar-logo"><div class="container"><a class="header-logo logo-top" href="/#"><img alt="Troubadour Wine Bar logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Troubadour Wine Bar logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png"/></a><div class="navbar-contact"><ul class="nav navbar-nav navbar-right"><li class="nav-phone"><a href="tel:+16128714073"><i aria-hidden="true" class="fa fa-phone"></i><span>(612)-871-4073</span></a></li><li class="nav-email"><a href="mailto:[email protected]"><i aria-hidden="true" class="fa fa-envelope-o"></i><span>[email protected]</span></a></li></ul></div></div></div><div class="navbar-tabs"><div class="container"><div class="navbar-content"><ul class="nav navbar-nav"><li class=" nav-menu-page"><a class="" href="/food-menu" id="nav_tab_1_link" target="_self">
615                              
616                              Menu
617                              
618                        </a></li><li class=" "><a class="" href="/drink-menu" id="nav_tab_2_link" target="_self">
619                              
620                              Drinks
621                              
622                        </a></li><li class="active "><a class="" href="/happy-hours-specials" id="nav_tab_3_link" target="_self">
623                              
624                              Specials
625                              
626                        </a></li><li class=" nav-catering-link"><a class="link-catering-sh" href="https://tmt.spotapps.co/catering?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="nav_tab_4_link" target="_self">
627                              
628                              Catering
629                              
630                        </a></li><li class=" "><a class="" href="/events" id="nav_tab_5_link" target="_self">
631                              
632                              Events
633                              
634                        </a></li><li class=" nav-parties-link"><a class="link-parties-sh" href="https://tmt.spotapps.co/private-parties?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="nav_tab_6_link" target="_self">
635                              
636                              Parties
637                              
638                        </a></li><li class=" nav-jobs-link"><a class="link-jobs-sh" href="https://tmt.spotapps.co/job-listings?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="nav_tab_7_link" target="_self">
639                              
640                              Jobs
641                              
642                        </a></li><li class=" nav-reservations-link"><a class="link-reservations-sh" href="https://tmt.spotapps.co/reservations?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="nav_tab_8_link" target="_self">
643                              
644                              Reserve
645                              
646                        </a></li><li class=" gift-cards-nav"><a class="gift-cards-link" href="https://app.squareup.com/gift/MLK23B0QYC426/order" id="nav_tab_10_link" target="_blank">
647                              
648                              Gift Cards
649                              
650                        </a></li><li class=" "><a class="" href="/wine-tasting-booking" id="nav_tab_11_link" target="_self">
651                              
652                              Wine Tasting Booking
653                              
654                        </a></li><li class=" additional-tab outside-link"><a class="additional-link" href="https://troubadour.thethirdplace.is/" id="nav_tab_12_link" target="_blank">
655                              
656                              WINE CLUB
657                              
658                        </a></li></ul><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/troubadourwinebar" 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.yelp.com/biz/troubadour-wine-bar-minneapolis?start=20" target="_blank"><i aria-hidden="true" class="social-icon fa fa-yelp"></i><span>Yelp 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="Troubadour Wine Bar logo top - Homepage" aria-label="Homepage" class="img-responsive logo-top" src="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png"/></a><a class="header-logo logo-scroll" href="/"><img alt="Troubadour Wine Bar logo scroll - Homepage" aria-label="Homepage" class="img-responsive logo-scroll" src="https://static.spotapps.co/website_images/ab_websites/106490_website_v2/logo.png"/></a><ul class="socialnav"><li class="social-links social-icons-holder social-square"><a class="pull-left contact-icon" href="https://www.instagram.com/troubadourwinebar" 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.yelp.com/biz/troubadour-wine-bar-minneapolis?start=20" target="_blank"><i aria-hidden="true" class="social-icon fa fa-yelp"></i><span>Yelp page</span></a></li></ul><div class="navbar-header"><button aria-expanded="false" 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="/food-menu" id="mobile_nav_tab_1_link" target="_self">
659                    Menu
660                                      </a></li><li class=" "><a class="" href="/drink-menu" id="mobile_nav_tab_2_link" target="_self">
661                    Drinks
662                                      </a></li><li class="active "><a class="" href="/happy-hours-specials" id="mobile_nav_tab_3_link" target="_self">
663                    Specials
664                                      </a></li><li class=" nav-catering-link"><a class="link-catering-sh" href="https://tmt.spotapps.co/catering?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hour
664s-specials#" id="mobile_nav_tab_4_link" target="_self">
665                    Catering
666                                      </a></li><li class=" "><a class="" href="/events" id="mobile_nav_tab_5_link" target="_self">
667                    Events
668                                      </a></li><li class=" nav-parties-link"><a class="link-parties-sh" href="https://tmt.spotapps.co/private-parties?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="mobile_nav_tab_6_link" target="_self">
669                    Parties
670                                      </a></li><li class=" nav-jobs-link"><a class="link-jobs-sh" href="https://tmt.spotapps.co/job-listings?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="mobile_nav_tab_7_link" target="_self">
671                    Jobs
672                                      </a></li><li class=" nav-reservations-link"><a class="link-reservations-sh" href="https://tmt.spotapps.co/reservations?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials#" id="mobile_nav_tab_8_link" target="_self">
673                    Reserve
674                                      </a></li><li class=" gift-cards-nav"><a class="gift-cards-link" href="https://app.squareup.com/gift/MLK23B0QYC426/order" id="mobile_nav_tab_10_link" target="_blank">
675                    Gift Cards
676                                      </a></li><li class=" "><a class="" href="/wine-tasting-booking" id="mobile_nav_tab_11_link" target="_self">
677                    Wine Tasting Booking
678                                      </a></li><li class=" additional-tab outside-link"><a class="additional-link" href="https://troubadour.thethirdplace.is/" id="mobile_nav_tab_12_link" target="_blank">
679                    WINE CLUB
680                                      </a></li></ul></div></div></div></nav></header><main id="content" role="main"><article><div class="pagecontent"><div class="tabnav"></div><div class="tabs-container"><div class="scrolling"><div class="container"><h1 class="page-title">Specials</h1><section><div class="onespecial"><h2>Wednesday October 7th</h2><!-- Sunday may 8th --><div class="row"><div class="col-sm-8">
681                                        Wine Flight Wednesday! Discounted build your own custom wine flights from our glass list (or have your bartender build you a flight from your own tastes).                                    </div><div class="col-sm-4 text-right">
682                                        05:00 PM - 07:00 PM                                    </div></div></div></section><section><div class="onespecial"><h2>Thursday October 8th</h2><!-- Sunday may 8th --><div class="row"><div class="col-sm-8">
683                                        Tapas &amp; Wine Thursday
684Enjoy a complimentary tapas plate with the purchase of a bottle of wine. Perfect for date night or just treating yourself! 5:00 PM - 10:00 PM                                    </div><div class="col-sm-4 text-right">
685                                        05:00 PM - 10:00 PM                                    </div></div></div></section><section><div class="onespecial"><h2>Monday October 12th</h2><!-- Sunday may 8th --><div class="row"><div class="col-sm-8">
686                                        🍷 Industry Night at Troubadour! 🍷🎶
687
688Service industry folks, this one’s for you! Whether you&apos;re slinging drinks, serving tables, or running the show behind the scenes, you’ve earned a night to kick back and enjoy some great wine and even better vibes.
689
690✨ Industry Night Specials:
691🍷 $2 off all wine pours
692🧀 15% off charcuterie boards
693
694Plus, enjoy live music by Phil Berbig at 7 PM! 🎸
695
696📍 Troubadour Wine Bar | Monday | Doors open at 5 PM
697
698Tag your crew, grab a glass, and let’s make Monday the new Friday. See you there! 🍷🎶                                    </div><div class="col-sm-4 text-right">
699                                        05:00 PM - 10:00 PM                                    </div></div></div></section></div></div></div></div></article></main></div><style type="text/css">
700    .navbar-fixed-bottom.nav-v1 {
701        bottom: -100px;
702    }
703    .navbar-fixed-bottom.nav-v1 .nav.navbar-nav.navbar-right {
704        background-color: #f1eff0;
705    }
706    .navbar-fixed-bottom.nav-v1 .bottom-svg-border path,
707    .navbar-fixed-bottom.nav-v1 .bottom-svg-border polygon {
708      fill: #000;
709    }
710    .navbar-fixed-bottom.nav-v1 .bottom-list-item a {
711        color: #33201F;
712    }
713    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:hover,
714    .navbar-fixed-bottom.nav-v1 .bottom-list-item a:focus {
715        color: #B34E14;
716        text-decoration: none;
717    }
718</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://tmt.spotapps.co/reservations?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials" id="bottom_link_3" target="_self">
719                        Reserve                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://tmt.spotapps.co/private-parties?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials" id="bottom_link_5" target="_self">
720                        Parties                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://tmt.spotapps.co/catering?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials" id="bottom_link_6" target="_self">
721                        Catering                    </a></li><li class="bottom-list-item "><a class="bottom-link " href="https://tmt.spotapps.co/job-listings?spot_id=106490&callback_url=http://troubadourwinebar.com/minneapolis-troubadour-wine-bar-happy-hours-specials" id="bottom_link_7" target="_self">
722                        Jobs                    </a></li></ul></div></nav>
722<script src="https://static.spotapps.co/web/troubadourwinebar--com/lib/jquery/jquery.min.js"></script>
722<script src="https://static.spotapps.co/web/troubadourwinebar--com/lib/bootstrap/js/bootstrap.min.js"></script>
722<script>
723
724	$("#bottom_link_3").on("click", function(){
725		if (ga_check())
726			universal_ga('send', 'event', 'Button', 'Click', 'Reserve');
727	});
728	$("#bottom_link_5").on("click", function(){
729		if (ga_check())
730			universal_ga('send', 'event', 'Button', 'Click', 'Private Party');
731	});
732	$("#bottom_link_6").on("click", function(){
733		if (ga_check())
734			universal_ga('send', 'event', 'Button', 'Click', 'Catering');
735	});
736	$("#bottom_link_7").on("click", function(){
737		if (ga_check())
738			universal_ga('send', 'event', 'Button', 'Click', 'Jobs');
739	});
740  $('.header-logo, .nav-v2-home-btn').click(function(event) {
741    if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
742      event.preventDefault();
743      var windowScrollTop = $(window).scrollTop();
744      if(windowScrollTop > 150) {
745        $('html, body').animate({scrollTop: 0}, 750);
746      }
747    }
748  });
749
750$(".banner-section a.banner-pin").click(function(e) {
751    // target element id
752    var id = $(this).attr('href');
753
754    // target element
755    var section = $(id);
756    if (section.length === 0) {
757        return;
758    }
759
760    // prevent standard hash navigation (avoid blinking in IE)
761    e.preventDefault();
762
763    // top position relative to the document
764    var pos = section.offset().top - 100 + 10;
765
766    // animated top scrolling
767    $('body, html').animate({scrollTop: pos}, 750);
768});
769
770$(document).ready(function() {
771  var navHeight = $('nav.navbar').height();
772  $('html').css("scroll-padding-top", navHeight);
773});
774
775$(document).on('scroll', function (e) {
776    if($(document).scrollTop() > 0) {
777      $('.navbar.nav-v7').addClass('nav-scroll');
778    }else {
779      $('.navbar.nav-v7').removeClass('nav-scroll');
780    }
781});
782
783$(function() {
784  setDropDownMenuWidth();
785
786  function setDropDownMenuWidth() {
787    var tabs_list = $('.navbar-tabs .navbar-nav');
788
789    $(tabs_list).find('li.drop-down-link').each(function() {
790      var sub_menu_width = $(this).outerWidth(true);
791      if (sub_menu_width < 100) {
792        sub_menu_width = 100;
793      }
794      $(this).find('.sub-menu').css('width', sub_menu_width+'px');
795    });
796  }
797
798  $( window ).resize(function() {
799    setDropDownMenuWidth();
800  });
801
802  $('.nav a:not(.drop-down)').on('click', function () {
803    $('.navbar-collapse').collapse('hide');
804  });
805
806});
807
808
809
810$( '.drop-down-link .drop-down' ).click(function(event) {
811  event.preventDefault();
812  event.stopPropagation();
813
814  var drop_down = $(this).closest('.drop-down-link');
815  var drop_down_a = $(this);
816
817  if($(drop_down_a).attr("aria-expanded") == "true") { 
818    $(drop_down_a).attr("aria-expanded",false)
819  } else { 
820    $(drop_down_a).attr("aria-expanded",true)
821  }
822  
823  var sub_menu = $(this).closest('.drop-down-link').find( '.sub-menu' );
824
825  if ( $(sub_menu).is( ':hidden' ) ) {
826    $(sub_menu).slideDown();
827    $(drop_down).addClass('active');
828  } else {
829    $(sub_menu).slideUp();
830    $(drop_down).removeClass('active');
831  }
832});
833
834$(".nav-v7 .navbar-contact .nav-address a").click(function(e) {
835
836  if ( window.location.pathname == '/' || window.location.pathname == '/index.php') {
837    // target element id
838    var id = $(this).attr('href').substr(1);
839
840    // target element
841    var section = $(id);
842    if (section.length === 0) {
843        return;
844    }
845
846    // prevent standard hash navigation (avoid blinking in IE)
847    e.preventDefault();
848
849    // top position relative to the document
850    var pos = section.offset().top - 100 + 10;
851
852    // animated top scrolling
853    $('body, html').animate({scrollTop: pos}, 750);
854
855  }
856});
857
858const mobileDrop = document.querySelector('.mobile-full-height #navbar-collapse-1 .navbar-nav');
859const mobileDropButton = document.querySelector('.mobile-full-height .navbar-toggle');
860const mobileHeader = document.querySelector('.mobile-full-height .navbar-header');
861
862mobileDropButton?.addEventListener('click', () => {
863  mobileHeaderBottomPos = mobileHeader.getBoundingClientRect().bottom;
864  mobileDrop.style.paddingTop = mobileHeaderBottomPos + 'px';
865});
866
867(function () {
868  const isSafari = (() => {
869    const ua = navigator.userAgent;
870    return ua.includes('Safari') && // Safari must be present
871            !ua.includes('Chrome') && // Exclude Chrome (has 'Safari' in UA)
872            !ua.includes('Edg'); // Exclude Edge
873  })();
874
875  if (!isSafari) return;
876  const menu = document.getElementById('navbar-collapse-1');
877
878  // When coming back from a _blank tab or bfcache restore, force a repaint.
879  function nudgeRepaint() {
880    if (!menu || !menu.classList.contains('in')) return;
881    // toggle display to flush rendering, then poke will-change for one frame
882    const prev = menu.style.display;
883    menu.style.display = 'none';
884    // force reflow
885    void menu.offsetHeight;
886    menu.style.display = prev || '';
887    menu.style.willChange = 'opacity';
888    requestAnimationFrame(() => { menu.style.willChange = 'auto'; });
889  }
890
891  document.addEventListener('visibilitychange', () => {
892    if (document.visibilityState === 'visible') nudgeRepaint();
893  });
894
895  // iOS/macOS Safari often restores pages from bfcache
896  window.addEventListener('pageshow', (e) => {
897    if (e.persisted) nudgeRepaint();
898    else nudgeRepaint();
899  }, { passive: true });
900
901  // Keep menu open when clicking links that open in a new tab
902  menu?.addEventListener('click', (e) => {
903    const a = e.target.closest('a');
904    if (!a) return;
905    if (a.target === '_blank') {
906      // avoid any delegated "close on link click" handlers firing first
907      e.stopPropagation();
908      // allow navigation; after we return, repaint nudge will run
909    }
910  }, true);
911})();
912
913document.querySelectorAll('.navbar .navbar-nav > li.cta-nav-tab').forEach((li) => {
914  li.addEventListener('click', (e) => {
915    if (e.defaultPrevented) return;
916    
917    if (e.target.closest('a')) return;
918
919    const link = li.querySelector('a[href]');
920    if (!link) return;
921
922    if (e.metaKey || e.ctrlKey || e.shiftKey || e.button === 1 || link.target === '_blank') {
923      window.open(link.href, link.target || '_blank');
924      return;
925    }
926
927    link.click();
928  });
929
930  li.addEventListener('keydown', (e) => {
931    if ((e.key === 'Enter' || e.key === ' ') && !e.target.closest('a')) {
932      const link = li.querySelector('a[href]');
933      if (!link) return;
934      e.preventDefault();
935      link.click();
936    }
937  });
938});
939    setTimeout(function(){
940        $('.navbar-fixed-bottom.nav-v1').addClass('show-bottom-nav'); triggerShowFooterEvents();
941    }, 4000);</script>
941<script>
942(function() {
943  var name = "Troubadour Wine Bar";
944  var pid = "ChIJ4cpkI4An9ocRUeKan3gteto";
945  function build_url() {
946    var q = encodeURIComponent(name).replace(/'/g, "%27");
947    return "https://www.google.com/maps/search/?api=1"
948         + "&query=" + q
949         + "&query_place_id=" + encodeURIComponent(pid);
950  }
951  window.google_map_url = build_url();
952  window.open_google_map = function() {
953    window.open(build_url(), "_blank");
954  };
955})();
956</script>
956<script>
957
958  var spot_id = 106490;
959  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://tmt.spotapps.co/private-parties?spot_id=106490","cta_catering":"https://tmt.spotapps.co/catering?spot_id=106490","cta_reservations":"https://tmt.spotapps.co/reservations?spot_id=106490","cta_jobs":"https://tmt.spotapps.co/job-listings?spot_id=106490"},"spot_name":"Troubadour Wine Bar","label_for_texting_permission":"I’d like to get texts about specials, events, and other exclusive offers and announcements not available to general public"}');
960
961  if (false){
962    console.log("Check SpotHopper configuration. Probably there is no 'WEBSITE::DOMAIN_NAME' key for your website");
963  }
964
965  if (navigator.userAgent.match(/iPhone/i)
966       || navigator.userAgent.match(/iPad/i)
967       || navigator.userAgent.match(/iPod/i)){
968      $(document).ready(function(){
969            document.body.className += " " + "webkit-mobile-body";
970      });
971    }
972
973  var promotion_url_param_domain = getPromotionUrlParams()['domain'];
974  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')){
975    $("a[href^='/']").each(function(){
976      if (this.href.indexOf('domain=') == -1){
977        var sh_internal_url = new URL(this.href);
978        sh_internal_url.searchParams.set("domain", promotion_url_param_domain);
979        this.href = sh_internal_url.toString();
980      }
981    })
982  }
983
984
985  function cta_link_matches_href(href, url){
986    var domain = 'troubadourwinebar.com';
987    if(typeof url === 'undefined'){
988      return false;
989    }
990    var partsOfURL = url.split(domain);
991    if (partsOfURL.length != 2){
992      return href == url;
993    }else{
994      var urlPath = partsOfURL[1];
995      if (urlPath.substring(0,1) == "/"){
996        urlPath = urlPath.substring(1,urlPath.length);
997      }
998      return href.indexOf(urlPath, domain.length + href.indexOf(domain)-1) !== -1;
999    }
1000  }
1001
1002  var all_cta_links = [{"id":729269,"spot_id":106490,"url":"https://troubadourwinebar.com/-food-menu","cta_link_type":"food_menu","created_at":"2023-01-26T11:16:01.091+00:00","updated_at":"2026-03-30T09:31:07.011+00:00","made_of_food":false,"link_name":"","position":null},{"id":729267,"spot_id":106490,"url":"https://troubadourwinebar.com/-events","cta_link_type":"events","created_at":"2023-01-26T11:16:01.049+00:00","updated_at":"2026-03-30T09:31:06.927+00:00","made_of_food":false,"link_name":"","position":null},{"id":713518,"spot_id":106490,"url":"https://tmt.spotapps.co/private-parties?spot_id=106490","cta_link_type":"private_parties","created_at":"2022-10-05T18:44:25.738+00:00","updated_at":"2026-03-30T09:31:06.883+00:00","made_of_food":false,"link_name":"Private Parties","target":null,"website_footer_label":"Parties","position":3},{"id":713520,"spot_id":106490,"url":"https://tmt.spotapps.co/job-listings?spot_id=106490","cta_link_type":"job_listing","created_at":"2022-10-05T18:46:58.052+00:00","updated_at":"2026-03-30T09:31:07.180+00:00","made_of_food":false,"link_name":"Job Listing","target":null,"website_footer_label":"Jobs","position":2},{"id":729266,"spot_id":106490,"url":"https://troubadourwinebar.com/-specials","cta_link_type":"specials","created_at":"2023-01-26T11:16:01.007+00:00","updated_at":"2026-03-30T09:31:06.769+00:00","made_of_food":false,"link_name":"","position":null},{"id":729268,"spot_id":106490,"url":"https://troubadourwinebar.com/-drink-menu","cta_link_type":"drink_menu","created_at":"2023-01-26T11:16:01.070+00:00","updated_at":"2026-03-30T09:31:06.969+00:00","made_of_food":false,"link_name":"","position":null},{"id":713521,"spot_id":106490,"url":"https://tmt.spotapps.co/reservations?spot_id=106490","cta_link_type":"reservations","created_at":"2022-10-05T18:49:10.970+00:00","updated_at":"2026-03-30T09:31:07.053+00:00","made_of_food":false,"link_name":"Reservations","target":null,"website_footer_label":"Reserve","position":1},{"id":1020556,"spot_id":106490,"url":"https://tmt.spotapps.co/catering?spot_id=106490","cta_link_type":"catering","created_at":"2024-0
10027-30T13:53:21.439+00:00","updated_at":"2026-03-30T09:31:07.093+00:00","made_of_food":false,"link_name":"Catering","target":null,"website_footer_label":"Catering","position":4},{"id":729270,"spot_id":106490,"url":"https://app.squareup.com/gift/MLK23B0QYC426/order","cta_link_type":"gift_cards","created_at":"2023-01-26T11:16:01.134+00:00","updated_at":"2026-03-30T09:31:07.136+00:00","made_of_food":false,"link_name":"","target":null,"website_footer_label":"Gift Cards","position":5}];
1003
1004  function find_cta_link(href) {
1005    for (var i=0; i< all_cta_links.length; i++){
1006      var cta_link = all_cta_links[i];
1007      if ( cta_link_matches_href(href, cta_link.url)){
1008        return cta_link;
1009      }
1010    }
1011  }
1012
1013  function find_cta_links(href) {
1014    var cta_links = []
1015    for (var i=0; i< all_cta_links.length; i++){
1016      var cta_link = all_cta_links[i];
1017      if ( cta_link_matches_href(href, cta_link.url)){
1018        cta_links.push(cta_link);
1019      }
1020    }
1021    return cta_links;
1022  }
1023
1024
1025  function get_current_page_cta_link_types(){
1026    var types = [];
1027    var cta_links = find_cta_links(document.location.href);
1028    for (var i=0; i<cta_links.length; i++){
1029      types.push(cta_links[i].cta_link_type);
1030    }
1031    return types;
1032  }
1033
1034
1035  function is_food_menu_page(){
1036    var cta_link_types = get_current_page_cta_link_types();
1037    for (var i=0; i<cta_link_types.length; i++){
1038      if ('food_menu' == cta_link_types[i])
1039        return true;
1040    }
1041    return false;
1042  }
1043
1044
1045  function get_form_cat_from_cta(){
1046    var cta_link = find_cta_link(document.location.href);
1047    if (cta_link == null) {
1048        return null;
1049    }
1050    if (cta_link.cta_link_type == 'private_parties'){
1051        return 'private_party';
1052    }else if (cta_link.cta_link_type == 'reservations'){
1053        return 'reservation';
1054    }else if (cta_link.cta_link_type == 'catering'){
1055        return 'catering';
1056    }else if (cta_link.cta_link_type == 'job_listing'){
1057        return 'job_listings';
1058    }else if (cta_link.cta_link_type == 'gift_cards'){
1059          return 'gift_cards';
1060    }
1061    return null;
1062  }
1063
1064  function element_has_events_defined(elem){
1065    if ($._data(elem, "events") === undefined){
1066      return false;
1067    }
1068    return true;
1069  }
1070
1071  function create_ga_events_for_cta_clicks(){
1072    if (typeof $ === 'function'){
1073
1074      var cta_link_of_the_page = find_cta_link(location.href);
1075
1076
1077      $("a").each(function(index, elem){
1078        var href = $(elem).attr('href');
1079
1080        if (href  === undefined ){
1081           return;
1082        }
1083
1084        if (href.substring(0,4) == 'tel:'){
1085          if (!element_has_events_defined(elem)){  // not footer links
1086            $(elem).on("click", function(){
1087                universal_ga('send', 'event', {
1088                  eventCategory: 'Button',
1089                  eventAction: 'Click',
1090                  eventLabel: 'Phone',
1091                  transport: 'beacon'
1092                });
1093             });
1094
1095             if (cta_link_of_the_page){
1096                $(elem).on("click", function(){
1097                    universal_ga('send', 'event', {
1098                      eventCategory: 'Button',
1099                      eventAction: 'Click',
1100                      eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone',
1101                      transport: 'beacon'
1102                    });
1103                 });
1104             }
1105          } else {
1106             if (cta_link_of_the_page){
1107               $(elem).on("click", function(){
1108                   universal_ga('send', 'event', {
1109                        eventCategory: 'Button',
1110                        eventAction: 'Click',
1111                        eventLabel: cta_link_of_the_page.cta_link_type +  ' page phone footer',
1112                        transport: 'beacon'
1113                   });
1114               });
1115             }
1116          }
1117
1118
1119        }else{
1120          var cta_link = find_cta_link(href);
1121          if (elem.className != null && elem.className.indexOf("bottom-link") > -1){
1122            // console.log("bottom link detected");
1123          }else{
1124            if (cta_link != null){
1125              $(elem).on("click", function(){
1126                universal_ga('send', 'event', {
1127                        eventCategory: 'Website Link',
1128                        eventAction: 'Click',
1129                        eventLabel: cta_link.cta_link_type,
1130                        transport: 'beacon'
1131                  });
1132              });
1133            }
1134          }
1135        }
1136
1137
1138      });
1139    }
1140  }
1141
1142  if (typeof angular === "undefined") {
1143    create_ga_events_for_cta_clicks();
1144  } else {
1145    angular.element(document).ready(function () {
1146      create_ga_events_for_cta_clicks();
1147    });
1148  }
1149
1150
1151  function triggerShowFooterEvents(){
1152    if (window.screen.availWidth < 768){
1153        universal_ga('send', 'event', {
1154                eventCategory: 'Mobile Footer',
1155                eventAction: 'View',
1156                eventLabel: '',
1157                transport: 'beacon'
1158          });
1159    }
1160  }
1161
1162
1163
1164
1165  ////////////
1166  function smartFooterV2()
1167  {
1168    var list= document.getElementsByClassName("bottom-list-item");
1169    if (!list) return;
1170
1171    if (document.getElementById("bottom-navbar") == null){
1172      return;
1173    }
1174
1175    var bottomNav = document.querySelector('#bottom-navbar .navbar-nav');
1176    var footerLinkPaddingLeft = $('#bottom-navbar .navbar-nav li a').css('padding-left');
1177    var footerLinkPaddingRight = $('#bottom-navbar .navbar-nav li a').css('padding-right');
1178
1179    bottomNav.innerHTML = '';
1180    var linksWithPosition = all_cta_links.filter(e => e.position != null && e.position >= 0);
1181    linksWithPosition.sort(function(a,b) {
1182      return a.position - b.position;
1183    });
1184
1185    var footerLinkStyle = (footerLinkPaddingLeft == '0px' || footerLinkPaddingRight == '0px' ? 'style="padding-left: 8px; padding-right: 8px;"' : '');
1186
1187    linksWithPosition.forEach((e, i) => {
1188        var target = e.target || getUrlTarget(e.url);
1189        bottomNav.insertAdjacentHTML('beforeend',
1190        `<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>`);
1191    })
1192
1193    var intervalCount = 0
1194    var interval = setInterval(() => {
1195      if(intervalCount == 50){
1196        clearInterval(interval);
1197      }
1198      removeOverflowingFooterLinks();
1199      intervalCount ++;
1200    }, 200);
1201
1202    $('.smart-footer-link').on("click", function(){
1203          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1204                    shUrlParams['source'] = 'footer';
1205                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1206          }
1207
1208          var visibleLinks = $('.smart-footer-link').map(function (e) {
1209              return $(this).data('type');
1210          }).toArray().join(',');
1211
1212          universal_ga('send', 'event', {
1213                  eventCategory: 'Button',
1214                  eventAction: 'Click_footer_2',
1215                  eventLabel: "type:" + $(this).data('type') + "|position:" + $(this).data('position') + "|visible:" + visibleLinks,
1216                  transport: 'beacon'
1217            });
1218    });
1219  }
1220
1221  function removeOverflowingFooterLinks(){
1222    var bottomNavLinks = document.querySelectorAll('#bottom-navbar .navbar-nav li');
1223    var width_sum = 0;
1224
1225    bottomNavLinks.forEach(e => {
1226      width_sum += e.getBoundingClientRect().width;
1227      if ((width_sum) > window.innerWidth) {
1228        console.log(`%cLink %c${e.textContent} %cdeleted couldn't fit screen`,"color: #fff;background: #202124;", "background: red;color: #fff", "color: #fff;background: #202124;");
1229        e.remove();
1230      }
1231    });
1232  }
1233
1234  function getUrlTarget(url){
1235    if(url.startsWith('tel')){
1236      return '_self';
1237    }
1238    if(url.startsWith('/') || url.includes('tmt.spotapps.co') || url.includes(window.location.host)){
1239      return '_self';
1240    }
1241    return '_blank';
1242  }
1243
1244  function npb()
1245    {
1246    	var list= document.getElementsByClassName("bottom-list-item");
1247    	if (!list) return;
1248
1249      if (document.getElementById("bottom-navbar") == null){
1250        return;
1251      }
1252
1253      var url = ""
1254    	for (var i=0; i < all_cta_links.length; i++)
1255    	{
1256    		if (all_cta_links[i].cta_link_type == "order"){
1257          url = all_cta_links[i].url;
1258        }
1259    	}
1260
1261    	if ( url == ""){
1262        return;
1263      }
1264
1265    	for (i=0; i < list.length; i++)
1266    	{
1267    		console.log(cta_link_matches_href(list[i].firstChild.href, url));
1268    		if (cta_link_matches_href(list[i].firstChild.href,url))  return;
1269
1270    	};
1271
1272    	var item = list[list.length-1]
1273    	document.getElementById("bottom-navbar").getElementsByClassName("nav navbar-nav")[0].appendChild(item.cloneNode(true));
1274    	var width_sum = 0;
1275    	for (i=0; i < list.length; i++) {
1276    		width_sum += list[i].getBoundingClientRect().width;
1277    	}
1278
1279    	var item = list[list.length-1]
1280    	if ((width_sum - 10) > window.innerWidth) { item.parentNode.removeChild(item); console.log("link deleted couldn't fit screen"); return; }
1281
1282    	item.firstChild.text = "Order";
1283    	item.firstChild.href = url;
1284    	item.firstChild.id = "bottom_link_" + list.length;
1285
1286      $(item.firstChild).on("click", function(){
1287
1288          if (typeof shUrlParams !== "undefined" && shUrlParams['source'] === undefined){
1289                    shUrlParams['source'] = 'footer';
1290                    sessionStorage.setItem('shUrlParams', JSON.stringify(shUrlParams));
1291                  }
1292
1293          universal_ga('send', 'event', {
1294                  eventCategory: 'Button',
1295                  eventAction: 'Click',
1296                  eventLabel: 'Plan B-2 Order',
1297                  transport: 'beacon'
1298            });
1299      });
1300
1301
1302    }
1303
1304function activateSmartFooter(){
1305    var smart_footer_active = true;
1306    var smart_footer_version = 2;
1307    var man_bottom_active = false;
1308    if(window.location.hash == '#smartFooterV2=enabled'){
1309      smartFooterV2();
1310      return;
1311    }
1312    if (smart_footer_active && !man_bottom_active){
1313      if(smart_footer_version == 2 ){
1314          smartFooterV2();
1315       }else {
1316          npb();
1317       }
1318    }
1319  }
1320
1321  activateSmartFooter();
1322
1323  var corona_config_str = '{"id":19499,"spot_id":106490,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":"To place a curbside pick-up order, please call:","food_page_instruction_phone":"6128714073","created_at":"2022-09-28T14:08:47+00:00","updated_at":"2022-10-05T18:39:18+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":0,"pick_ups_priority_value":1,"reservations_priority_value":5,"private_parties_priority_value":5,"catering_priority_value":1,"gift_cards_priority_value":3,"jobs_priority_value":1,"food_and_drinks_priority_value":5,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":1,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":5,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}';
1324  var corona_config =  corona_config_str != '' ?  JSON.parse('{"id":19499,"spot_id":106490,"promote_pick_up":true,"promote_gift_cards":true,"promote_happy_hour":true,"promote_events":true,"instructions_on_food_page":false,"food_page_instruction_text":"To place a curbside pick-up order, please call:","food_page_instruction_phone":"6128714073","created_at":"2022-09-28T14:08:47+00:00","updated_at":"2022-10-05T18:39:18+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":0,"pick_ups_priority_value":1,"reservations_priority_value":5,"private_parties_priority_value":5,"catering_priority_value":1,"gift_cards_priority_value":3,"jobs_priority_value":1,"food_and_drinks_priority_value":5,"specials_priority_value":3,"national_days_priority_value":3,"holidays_priority_value":3,"sports_priority_value":1,"walk_ins_priority_value":3,"collecting_emails_priority_value":3,"collecting_phone_numbers_priority_value":3,"growing_social_media_followers_priority_value":5,"increasing_revenue_vs_saving_time_priority_value":3,"events_priority_value":3,"shopping_cart_type":"TMT","shopping_cart_active":false}') : null;
1325
1326
1327  //corona instuctions
1328  function show_corona_instructions(text, phone, btnText){
1329    //format to US number
1330    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1331
1332    if(corona_config.shopping_cart_type == "TMT" && corona_config.shopping_cart_active == true) {
1333        var linkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1334        var btnLinkLocation = "https://tmt.spotapps.co/ordering-menu/?spot_id="+corona_config.spot_id+"&images=yes&accordion=true";
1335    }else {
1336        var linkLocation = 'tel:+1'+phone+'';
1337        var btnLinkLocation = 'tel:+1'+ match[1] + '-' + match[2] + '-' + match[3] +''
1338    }
1339    var appendPhone = 'tel:+1'+phone+'';
1340    //inject html content
1341    if ($('.food-menu-nav').length) {
1342      //new template
1343      var pageEl =  $('.food-menu-nav').css('margin','20px auto 10px auto');
1344      var textColor = rgb2hex($('.section-header').css('color'));
1345      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1346      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1347      fontSize = fontSize + Math.round(fontSize  * 0.25);
1348
1349      // 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>';
1350      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>';
1351
1352    }else {
1353      //old template
1354      var pageEl = $('.tabnav');
1355      var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1356      var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1357
1358      var linkTextColor = getContrast50(linkColor);
1359      var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1360      fontSize = fontSize + Math.round(fontSize  * 0.25);
1361      var textTransform = $('.style-traditional .tabnav .nav>li>a').css('text-transform');
1362
1363      // 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>';
1364      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>';
1365
1366    }
1367     //html content
1368    pageEl.prepend(html);
1369  }
1370
1371  function rgb2hex(rgb) {
1372    if(typeof rgb !== "undefined"){
1373      rgbColor = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
1374      if (!rgbColor) {
1375        rgba = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(,\s*\d+\.*\d+)?\)$/);
1376        return "#" + hex(rgba[1]) + hex(rgba[2]) + hex(rgba[3]);
1377      }
1378      function hex(x) {
1379          return ("0" + parseInt(x).toString(16)).slice(-2);
1380      }
1381      return "#" + hex(rgbColor[1]) + hex(rgbColor[2]) + hex(rgbColor[3]);
1382    }
1383    return rgb;
1384  }
1385
1386  function getContrast50(hexcolor){
1387    return (parseInt(hexcolor, 16) > 0xffffff/2) ? '#000':'#fff';
1388  }
1389
1390  function show_corona_sidebar_instructions(text, phone){
1391    //format to US number
1392    var match = phone.match(/^(\d{3})(\d{3})(\d{4})$/);
1393    var divWidth = 230;
1394    var top = 50;
1395    var linkSize = '1.6em';
1396    var pSize = $('p').css('font-size');
1397    var appendPhone = 'tel:+1'+phone+'';
1398
1399    if ($(window).width() < 1600)
1400      var top = 30;
1401    if ($(window).width() < 1200){
1402      var divWidth = 180;
1403      var linkSize = '1.4em';
1404      var pSize ='1.1em';
1405    }
1406
1407    if($('.food-menu-nav').length){ //new template
1408      var textColor = $('.food-menu-nav-item.active').css('color');
1409      var linkColor = $('.food-menu-nav-item.active').css('background-color');
1410
1411      var linkTextColor = $('.food-menu-nav-item.active').css('color');
1412      var parent = $('.food-menu-page');
1413    }
1414    else { //old template
1415      var textColor = $('.menu-item-name-traditional').css('color');
1416      var linkColor = $('.style-traditional .tabnav .nav>
1416li.active>a').css('color');
1417      var parent = $('.food-menu').length ? $('.food-menu') : $('.drink-menu');
1418      var linkTextColor = getContrast50(linkColor);
1419    }
1420
1421    // $(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>');
1422    $(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>');
1423
1424    //check if resolution is bigger than tablet resolution
1425/*  if ($(window).width() > 991) {
1426      //detect scroll
1427      window.onscroll = function (e) {
1428      if ($(window).scrollTop() == 0) {
1429          $('#corona-instructions-sidebar').hide();
1430        }else {
1431          $('#corona-instructions-sidebar').show();
1432        }
1433      }
1434    } */
1435  }
1436
1437  function check_corona_config(config){
1438    console.log(config)
1439    if (config) {
1440      if (config.instructions_on_food_page && config.food_page_instruction_text && config.food_page_instruction_phone) {
1441        if (!config.promote_deliveries && config.promote_pick_up) {
1442          var btnText = 'Call For Pick Up';
1443        }
1444        if (config.promote_deliveries && !config.promote_pick_up) {
1445          var btnText = 'Call For Delivery';
1446        }
1447        if (config.promote_deliveries && config.promote_pick_up) {
1448          var btnText = 'Call For Pick Up Or Delivery';
1449        }
1450
1451        if(typeof btnText !== "undefined"){ // check if pick up or delivery are true
1452          if(config.shopping_cart_type == "TMT" && config.shopping_cart_active == true) {
1453                var btnText = 'ORDER NOW';
1454                    if($('.food-menu-nav').length){ //new template
1455                      var textColor = rgb2hex($('.section-header').css('color'));
1456                      var linkColor = rgb2hex($('.food-menu-nav-item.active').css('background-color'));
1457                      var fontSize = parseInt($('.food-menu-nav-item').css('font-size'));
1458                      fontSize = fontSize + Math.round(fontSize  * 0.25);
1459                    }
1460                    else { //old template
1461                        var textColor = rgb2hex($('.menu-item-name-traditional').css('color'));
1462                        var linkColor = rgb2hex($('.style-traditional .tabnav .nav>li.active>a').css('color'));
1463
1464                        var linkTextColor = getContrast50(linkColor);
1465                        var fontSize = parseInt($('.menu-item-name-traditional').css('font-size'));
1466                        fontSize = fontSize + Math.round(fontSize  * 0.25);
1467                    }
1468                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);
1469                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1470            } else {
1471                show_corona_instructions(config.food_page_instruction_text, config.food_page_instruction_phone, btnText);
1472                show_corona_sidebar_instructions(btnText, config.food_page_instruction_phone);
1473            }
1474
1475        }
1476      }
1477    }
1478  }
1479
1480
1481  if (is_food_menu_page() && !window.location.search.includes("contactless=true")){
1482    $( document ).ready(function() {
1483       setTimeout(function(){
1484        check_corona_config(corona_config);
1485       }, 300);
1486    });
1487  }
1488
1489
1490
1491  function isPhone(phone){
1492      var regex = /^(\+\d{1,2}\s?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/;
1493      return regex.test(phone);
1494  }
1495
1496  function sendEmail_MT (input_id) {
1497    const $loader = $("[data-id=newsletter-widget-2] .sph-loading-img");
1498
1499    const $step = {
1500      form: $("[data-id=newsletter-widget-2] .sph-email-form"),
1501      message: $("[data-id=newsletter-widget-2] .sph-response-message"),
1502    }
1503
1504    const $field = {
1505      email: $("[data-id=newsletter-widget-2] #sph-newsletter-input-" + input_id),
1506      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-" + input_id),
1507      consent: $("[data-id=newsletter-widget-2] #sph-newsletter-checkbox-phone-" + input_id),
1508    };
1509
1510    const $error = {
1511      email: $("[data-id=newsletter-widget-2] #sph-newsletter-email-error-" + input_id),
1512      phone: $("[data-id=newsletter-widget-2] #sph-newsletter-phone-error-" + input_id),
1513    };
1514
1515    if ($field.email.val().trim() === "") {
1516        $error.email
1517          .html("This field is required")
1518          .show();
1519    }
1520    else if (!isEmail($field.email.val().trim())) {
1521      $error.email
1522        .html("Please use the format “[email protected]”")
1523        .show();
1524    } else {
1525      $error.email
1526        .html("")
1527        .hide();
1528    }
1529
1530    if ($field.consent.is(':checked') && $field.phone.val().trim() === "") {
1531      $error.phone
1532        .html("This field is required")
1533        .show();
1534    } else if ($field.phone.val().trim().length > 0 && !isPhone($field.phone.val().trim())) {
1535      $error.phone
1536        .html("The phone number must contain 10 digits")
1537        .show();
1538    } else {
1539      $error.phone
1540        .html("")
1541        .hide();
1542    }
1543
1544    const errorField = $step.form.find('.sh-form-error:visible');
1545
1546    if (errorField.length > 0) {
1547      const input = errorField.first().next();
1548
1549      document.activeElement.blur();
1550
1551      setTimeout(() => {
1552        input.focus();
1553      }, 160)
1554
1555      return;
1556    }
1557
1558    $loader
1559      .show()
1560      .prev()
1561      .hide();
1562
1563    $.ajax({
1564      method: "POST",
1565      url: "https://www.spothopperapp.com/api/spots/106490/contacts/add_with_texting_permission",
1566      crossDomain: true,
1567      dataType: 'json',
1568      data: {
1569        email: $field.email.val().trim(),
1570        phone: $field.phone.val().trim(),
1571        texting_permission: $field.consent.is(':checked'),
1572      },
1573      success: function (data) {
1574        afterRequestSubmission(data);
1575      },
1576      error: function () {
1577        afterRequestSubmission("Something went wrong. Please try again later.");
1578      }
1579    });
1580
1581    function afterRequestSubmission (data) {
1582      $step.form.hide();
1583
1584      $step.message
1585        .html(data)
1586        .show()
1587        .trigger('focus');
1588    }
1589  }
1590</script>
1590<script>function addPromotionParamsToTMTLinks()
1591{
1592    if (sessionStorage.getItem('shUrlParams')) {
1593        let shParams = JSON.parse(sessionStorage.getItem('shUrlParams'));
1594        if (!Object.keys(shParams).length)
1595            return;
1596        if(!shParams.source)
1597            return;
1598        $('a').each(function () {
1599            if (this.href.includes('tmt.spotapps.co')) {
1600                if(this.href.includes('&source=') || this.href.includes('&destination=') || this.href.includes('&promotion='))
1601                    return;
1602
1603                this.href = this.href + '&source=' + shParams.source;
1604                if(shParams.destination)
1605                    this.href = this.href + '&destination=' + shParams.destination;
1606                if(shParams.promotion)
1607                    this.href = this.href + '&promotion=' + shParams.promotion;
1608                if(shParams.fb_post_id)
1609                    this.href = this.href + '&fb_post_id=' + shParams.fb_post_id;
1610                if(shParams.email_post_id)
1611                    this.href = this.href + '&email_post_id=' + shParams.email_post_id;
1612            }
1613        })
1614    }
1615}
1616setTimeout(function() {
1617  addPromotionParamsToTMTLinks();
1618  addFooterToSourceParam();
1619},600)
1620
1621function addFooterToSourceParam()
1622{
1623    $('.bottom-link').each(function (){
1624        if(shouldAddSourceParam(this.href))
1625          this.href = this.href + '&source=footer';
1626    })
1627    $('#sh-multiple-links-content-holder a').each(function (){
1628       if(shouldAddSourceParam(this.href))
1629          this.href = this.href + '&source=footer';
1630    })
1631}
1632function shouldAddSourceParam(link){
1633  if (link.includes('tmt.spotapps.co') && !link.includes('&source=')){
1634    return true;
1635  }
1636  return false;
1637}
1638</script>
1638<script>
1639;(async () => {
1640if (typeof window.focusTrap === 'undefined') {
1641    await getScript('https://unpkg.com/tabbable/dist/index.umd.js');
1642    await getScript('https://unpkg.com/focus-trap/dist/focus-trap.umd.js');
1643}
1644
1645document.querySelectorAll('.modal').forEach((element) => {
1646    const trap = window.focusTrap?.createFocusTrap(element, {
1647        allowOutsideClick: true,
1648    });
1649
1650    $(element).on('shown.bs.modal', () => {
1651	    trap?.activate();
1652	});
1653
1654	$(element).on('hidden.bs.modal', () => {
1655        trap?.deactivate();
1656    });
1657});
1658
1659async function getScript (source) {
1660    return new Promise((resolve, reject) => {
1661        const script = document.createElement('script');
1662        script.src = source;
1663        script.async = true;
1664
1665        script.onload = resolve;
1666        script.onerror = reject;
1667
1668        document.head.appendChild(script);
1669    });
1670}
1671})();
1672</script>
1672<script>var bday_club_promo = {"bday_club_link":"https://tmt.spotapps.co/vouchers?spot_id=106490&source=website&voucher_offer_id=MjAyMjA5MTQxNDIxKVQG","bday_club_fab":true,"bday_offer_freebie_name":"Free Dessert","bday_offer_short_name":"Free Dessert on your birthday.  ","bday_offer_description":"Free Dessert on your birthday.  Valid for dine in only with minimum purchase of $20.","bday_club_custom_offer":false,"bday_club_fab_type":"type_1","bday_club_fab_def_style":"light"};</script>
1672<script src="https://wcache-plugins.spotapps.co/production/wcpl_bootstrap_ada_fix/wcpl_bootstrap_ada_fix.js"></script>
1672<link href="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.css" rel="stylesheet" media="screen"/>
1672<script src="https://wcache-plugins.spotapps.co/production/wcpl_bday_club/wcpl_bday_club.js"></script>
1672<script src="https://wcache-plugins.spotapps.co/production/wcpl_ga_tracking/wcpl_ga_tracking.js"></script>
1672<script src="https://wcache-plugins.spotapps.co/production/wcpl_media_controls/script.js"></script>
1672<link href="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter_helper_style.css" rel="stylesheet" media="screen"/>
1672<script>var changes_log_array = {};</script>
1672<script src="https://wcache-plugins.spotapps.co/production/wcpl_website_editor_interpreter/website_interpreter.js"></script>
1672</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.