1<!doctype html> 2<html lang="en-US" prefix="og: https://ogp.me/ns#"> 3 <head> 4 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 8 <!-- Set a Global Canonical URL for the Blog --> 9 10 11 <!-- Favicon --> 12 <? 13 ?><link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png"> 14 <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png"> 15 <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png"> 16 <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png"> 17 <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png"> 18 <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png"> 19 <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png"> 20 <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png"> 21 <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png"> 22 <link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png"> 23 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 24 <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png"> 25 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 26 <meta name="msapplication-TileImage" content="/ms-icon-144x144.png"> 27 28 29 30 31 <link rel="preconnect" href="https://fonts.googleapis.com"> 32 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 33 <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@400,700&family=Source+Serif+Pro:ital,ital,wght@400;700&display=swap" rel="stylesheet"> 34 35 <link rel="preconnect" href="https://fonts.googleapis.com"> 36 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 37 <link href="https://fonts.googleapis.com/css2?family=Outfit:[email protected]&display=swap" rel="stylesheet"> 38 39 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.1/css/all.min.css" crossorigin="anonymous" referrerpolicy="no-referrer" /> 40 41 <!-- Scripts for Instant Tokens --> 42 43
43<script src="https://s3.eu-central-1.wasabisys.com/instafeed/instafeed-v3.min.js"></script>
43 44
44<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
44 45 46 <style id="critical-css">@font-face{font-family:"Avenir-Bold";font-style:normal;font-weight:400;src:local("Avenir-Bold"),url("/mnt/BLOCKSTORAGE/home/1521999.cloudwaysapps.com/chsrqfvukx/public_html/wp-content/themes/nobo/ui/fonts/AvenirNextLTPro-Bold.woff2") format("woff2"),url("/mnt/BLOCKSTORAGE/home/1521999.cloudwaysapps.com/chsrqfvukx/public_html/wp-content/themes/nobo/ui/fonts/AvenirNextLTPro-Bold.woff") format("woff")} 47/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:0.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}input:focus,text-box:focus,textarea:focus{outline:none}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}*{font-family:"Outfit",sans-serif;color:#191919;font-size:22px;letter-spacing:0}@media (max-width:950px){*{font-size:18px}}#wpadminbar *{color:revert}::-moz-selection{color:#fff;background:#0d6797}::selection{color:#fff;background:#0d6797}a{-webkit-transition:all 420ms!important;transition:all 420ms!important}a:hover{-webkit-transition:all 420ms!important;transition:all 420ms!important}a{color:#0d6797;text-decoration:none}a:hover{color:#D3D7DD}h1{font-weight:800;margin:0 0 2rem;font-size:3rem;text-transform:uppercase}h1 span{color:#0d6797;font-weight:800;margin:0 0 2rem;font-size:3rem;text-transform:uppercase}@media (max-width:600px){h1{font-size:2.25rem}h1 span{font-size:2.25rem}}h2{font-weight:800;margin:0 0 2rem;font-size:2rem;text-transform:uppercase;margin-bottom:10px}h2 span{color:#0d6797;font-weight:800;margin:0 0 2rem;font-size:2rem;text-transform:uppercase}h3{font-weight:800;margin:0 0 2rem;font-size:1.8rem;text-transform:uppercase}h4{margin:0 0 2rem;font-size:1rem;text-transform:uppercase}p{line-height:1.2;margin:0 0 1.2rem}ol,ul{margin:0 0 1.2rem;padding-left:1.6rem}ol li,ul li{position:relative;line-height:1.2}.standard-content a:hover{text-decoration:underline;color:#0d6797}#page_wrapper{min-height:100vh;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background-color:#D3D7DD;overflow:hidden}#page_content{-webkit-box-flex:1;-ms-flex:1;flex:1}.content_container{max-width:1500px;margin-left:auto;margin-right:auto;padding-left:3.5rem;padding-right:3.5rem;-webkit-transition:all 250ms;transition:all 250ms;z-index:3;position:relative}@media (max-width:1220px){.content_container{padding-left:2.2rem;padding-right:2.2rem}}@media (max-width:950px){.content_container{padding-left:1.4rem;padding-right:1.4rem}}.popup-out{position:fixed;top:0px;left:0px;right:0;bottom:0;background-color:rgba(0,0,0,0.8);z-index:999999;display:none}.age-verification-popup{position:relative;top:25vh;width:80vw;max-width:28rem;margin:auto;padding:60px 30px;background:#fff}.special-oval-box{width:100%;height:100%;border-radius:50%;display:table}.special-oval-inside{display:table-cell;vertical-align:middle;text-align:center}.title-popup{font-size:42px;color:#226E9E;font-weight:700;margin-bottom:30px;font-family:"Eczar";color:#191919;line-height:1.3}.title-popup span{color:#0d6797}.explanation-popup{max-width:260px;margin:0 auto 50px}.explanation-popup p{color:#191919;font-weight:700;text-transform:uppercase}.buttons-popup{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;gap:25px}.buttons-popup .button{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:150px;margin-bottom:0!important}@media (max-width:950px){.age-verification-popup{top:10vh;width:90vw}.age-verification-popup .button{display:block;width:100%}.age-verification-popup .button:not(:last-child){margin-bottom:0.5rem}.title-popup{font-size:32px}}#announcementBar{background-color:#0d6797;padding:0.6rem;width:100%;position:absolute;display:none;top:0;left:0;z-index:100}#announcementBar p{line-height:1.2;font-size:0.8rem;font-weight:600;text-transform:uppercase;text-align:center;padding-left:50px;padding-right:50px;margin-bottom:0px;color:#fff;letter-spacing:0.1em}#announcementBar p a{color:#fff;text-decoration:underline}#announcementBar .announcement-exit{position:absolute;top:50%;right:35px;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#fff}.hero{position:relative;height:50vh;min-height:550px;max-height:500px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#c4c4c4}.hero:after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:150px;background:center/100% 100% no-repeat url("data:image/svg+xml;utf8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 150' preserveAspectRatio='none'> <path fill='%23D3D7DD' d='M0,0 C480,150 960,150 1440,0 L1440,150 L0,150 Z'/> </svg>");pointer-events:none;z-index:1}@media (max-width:950px){.hero:after{height:75px}}@media (max-width:600px){.hero:after{height:50px}}.hero__content{position:relative;z-index:2;text-align:left;max-width:1400px;margin:auto;width:100%;padding:0 15px}.hero__content h1,.hero__content p{color:white}.hero__content h1:last-child,.hero__content p:last-child{margin-bottom:0}.hero__content.light h1,.hero__content.light p{color:#fff}#site-navigation{width:100%;padding:40px 0;background:#191919;z-index:9999}
47@media (max-width:700px){#site-navigation{display:-ms-grid;display:grid;grid-template-areas:"top" "bottom";grid-auto-rows:auto 1fr auto;padding:40px 0 0}}#site-navigation.sticky{opacity:1!important;display:static!important}#site-navigation .nav_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:1400px;margin:0 auto;padding:0 20px;width:100%;grid-area:top}@media (max-width:700px){#site-navigation .nav_container{margin-bottom:40px}}#site-navigation .nav_container .logo_link img{width:160px}@media (max-width:450px){#site-navigation .nav_container .logo_link img{width:125px}}@media (max-width:950px){#site-navigation .nav_container #primary-menu{display:none!important}}#site-navigation .nav_container #primary-menu{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;list-style:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#site-navigation .nav_container #primary-menu li{padding:0 20px;height:100%;-ms-flex-line-pack:center;align-content:center}@media (max-width:1090px){#site-navigation .nav_container #primary-menu li{padding:0 5px}}#site-navigation .nav_container #primary-menu li.current-menu-item>a{color:#0d6797!important}#site-navigation .nav_container #primary-menu li.menu-item-has-children{position:relative;padding-right:30px}#site-navigation .nav_container #primary-menu li.menu-item-has-children .drop_arrow{position:absolute;width:12px;height:12px;top:14px;right:10px;fill:white}#site-navigation .nav_container #primary-menu li.menu-item-has-children .sub-menu{z-index:-99999;opacity:0;display:none}#site-navigation .nav_container #primary-menu li.menu-item-has-children .sub-menu.hover_sub{position:absolute;z-index:99999;display:table;opacity:1;width:100%;min-width:300px;background:#D3D7DD;padding:10px 15px 10px;-webkit-box-shadow:0 12px 30px rgba(0,0,0,0.25);box-shadow:0 12px 30px rgba(0,0,0,0.25);border-radius:0;max-height:60vh;overflow:auto;border-bottom:10px solid #0d6797;list-style:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;gap:10px}#site-navigation .nav_container #primary-menu li.menu-item-has-children .sub-menu li{text-align:left;line-height:1;padding:0}#site-navigation .nav_container #primary-menu li.menu-item-has-children .sub-menu li a{color:#191919;text-align:left;letter-spacing:0.15em;font-size:16px;font-weight:700;line-height:normal}#site-navigation .nav_container #primary-menu li a{-ms-flex-line-pack:center;align-content:center;display:block;height:100%;color:white;text-transform:uppercase;letter-spacing:0.15em;font-size:16px;font-weight:700;line-height:normal}#site-navigation .nav_container #primary-menu li a:hover{color:#0d6797}#site-navigation .nav_container #primary-menu li a:hover .drop_arrow{fill:#0d6797!important}#site-navigation .nav_container{}@media (max-width:950px){#site-navigation .nav_container #primary-menu-left{display:none}}#site-navigation .nav_container #primary-menu-left{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0;list-style:none;height:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#site-navigation .nav_container #primary-menu-left li{padding:0 15px}#site-navigation .nav_container #primary-menu-left li.current-menu-item>a{color:#0d6797!important}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children{position:relative;padding-right:30px}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children .drop_arrow{position:absolute;width:12px;height:12px;top:14px;right:10px}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children .sub-menu{z-index:-99999;opacity:0;display:none}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children .sub-menu.hover_sub{position:absolute;z-index:99999;display:table;opacity:1;width:100%;padding:10px;background:#fff;border:3px solid #000;padding:10px 0!important}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children .sub-menu li{padding:0 10px;text-align:center;line-height:1}#site-navigation .nav_container #primary-menu-left li.menu-item-has-children .sub-menu li a{font-size:0.85rem;line-height:1;text-align:center}#site-navigation .nav_container #primary-menu-left li a{color:#191919;text-transform:uppercase;font-weight:700;letter-spacing:0.1em;font-size:1.125rem}#site-navigation .nav_container #primary-menu-left li a:hover{color:#0d6797}#site-navigation .nav_container #primary-menu-left li a:hover .drop_arrow{fill:#0d6797!important}#site-navigation .nav_container{}#site-navigation .nav_container .hamburger_container{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media (max-width:950px){#site-navigation .nav_container .hamburger_container{display:-ms-gri
47d;display:grid}}#site-navigation .nav_container .hamburger_container .hamburger-lines{display:-ms-grid;display:grid;height:26px;width:32px;top:17px;left:20px;z-index:999;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;-webkit-transition:all 420ms!important;transition:all 420ms!important}#site-navigation .nav_container .hamburger_container .hamburger-lines:hover{-webkit-transition:all 420ms!important;transition:all 420ms!important}#site-navigation .nav_container .hamburger_container .hamburger-lines .line{display:block;height:4px;width:100%;border-radius:10px}#site-navigation .nav_container .hamburger_container .hamburger-lines .line.line1{-webkit-transform-origin:0% 0%;transform-origin:0% 0%;-webkit-transition:-webkit-transform 0.4s ease-in-out;transition:-webkit-transform 0.4s ease-in-out;transition:transform 0.4s ease-in-out;transition:transform 0.4s ease-in-out,-webkit-transform 0.4s ease-in-out;background:#0d6797}#site-navigation .nav_container .hamburger_container .hamburger-lines .line.line2{-webkit-transition:-webkit-transform 0.2s ease-in-out;transition:-webkit-transform 0.2s ease-in-out;transition:transform 0.2s ease-in-out;transition:transform 0.2s ease-in-out,-webkit-transform 0.2s ease-in-out;background:#0d6797}#site-navigation .nav_container .hamburger_container .hamburger-lines .line.line3{-webkit-transform-origin:0% 100%;transform-origin:0% 100%;-webkit-transition:-webkit-transform 0.4s ease-in-out;transition:-webkit-transform 0.4s ease-in-out;transition:transform 0.4s ease-in-out;transition:transform 0.4s ease-in-out,-webkit-transform 0.4s ease-in-out;background:#0d6797}#site-navigation .nav_container .hamburger_container .hamburger-lines:hover .line1{background:#D3D7DD}#site-navigation .nav_container .hamburger_container .hamburger-lines:hover .line2{background:#D3D7DD}#site-navigation .nav_container .hamburger_container .hamburger-lines:hover .line3{background:#D3D7DD}#site-navigation .nav_container .hamburger_container .hamburger-lines.menu_open:hover .line{background:white}#site-navigation .nav_container .hamburger_container .hamburger-lines.menu_open .line1{-webkit-transform:rotate(45deg);transform:rotate(45deg);background:#0d6797}#site-navigation .nav_container .hamburger_container .hamburger-lines.menu_open .line2{-webkit-transform:scaleY(0);transform:scaleY(0);background:#0d6797}#site-navigation .nav_container .hamburger_container .hamburger-lines.menu_open .line3{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);background:#0d6797}#mobileMenu{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;background:#191919;opacity:0;display:none;overflow:scroll;-webkit-transition:all 420ms!important;transition:all 420ms!important}#mobileMenu:hover{-webkit-transition:all 420ms!important;transition:all 420ms!important}#mobileMenu.active{opacity:1;z-index:99;display:block;overflow:auto}#mobileMenu .menu_mobile_container{position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}#mobileMenu #primary-menu{margin:0;padding:0;list-style:none;text-align:center;width:320px;gap:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}#mobileMenu #primary-menu li{display:none;position:relative}#mobileMenu #primary-menu li.current-menu-item>a{color:#0d6797!important}#mobileMenu #primary-menu li a{font-size:1.25rem;color:#fff;text-transform:uppercase}#mobileMenu #primary-menu li a:hover{color:#0d6797}#mobileMenu #primary-menu li .mobile_drop{width:20px;height:20px;top:5px;right:absolute;right:50px;position:absolute}#mobileMenu #primary-menu li .mobile_drop .drop_arrow{width:20px;height:20px;cursor:pointer;z-index:9999;fill:#fff!important}#mobileMenu #primary-menu li .mobile_drop .drop_arrow.flip{-webkit-transform:rotate(180deg);transform:rotate(180deg)}#mobileMenu #primary-menu li .sub-menu{display:none;opacity:0;padding:0;margin-top:10px;margin-bottom:0}#mobileMenu #primary-menu li .sub-menu.open{display:block!important;opacity:1!important}#mobileMenu #primary-menu li .sub-menu li{padding:0 10px;text-align:center;line-height:1;margin-bottom:15px}#mobileMenu #primary-menu li .sub-menu li:last-of-type{margin-bottom:0}
47#mobileMenu #primary-menu li .sub-menu li a{color:#63D7FF;font-size:1rem;line-height:1;text-align:center}#mobileMenu #primary-menu li .sub-menu li a:hover{color:#0d6797}#mobileMenu{}#mobileMenu #primary-menu-left{margin:0;padding:0;list-style:none;text-align:center;width:350px}#mobileMenu #primary-menu-left li{display:none;position:relative}#mobileMenu #primary-menu-left li.current-menu-item>a{color:#0d6797!important}#mobileMenu #primary-menu-left li a{font-size:2rem;color:#fff;text-transform:uppercase}#mobileMenu #primary-menu-left li a:hover{color:#0d6797}#mobileMenu #primary-menu-left li .mobile_drop{width:20px;height:20px;top:25px;right:absolute;right:0;position:absolute}#mobileMenu #primary-menu-left li .mobile_drop .drop_arrow{width:20px;height:20px;cursor:pointer;z-index:9999;fill:#fff!important}#mobileMenu #primary-menu-left li .mobile_drop .drop_arrow.flip{-webkit-transform:rotate(180deg);transform:rotate(180deg)}#mobileMenu #primary-menu-left li .sub-menu{display:none;opacity:0}#mobileMenu #primary-menu-left li .sub-menu.open{display:block!important;opacity:1!important}#mobileMenu #primary-menu-left li .sub-menu li{padding:0 10px;text-align:center;line-height:1}#mobileMenu #primary-menu-left li .sub-menu li a{font-size:0.85rem;line-height:1;text-align:center}#mobileMenu{}.location-selector{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:visible;grid-area:bottom}@media (max-width:700px){#site-navigation .nav_container{-ms-grid-row:1;-ms-grid-column:1}.location-selector{-ms-grid-row:2;-ms-grid-column:1}}@media (max-width:1200px){.location-selector{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}}.dropdown-wrapper{position:relative;z-index:3}@media (max-width:700px){.dropdown-wrapper{width:100%}}#locations-dropdown{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.locations-trigger{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:15px 110px 15px 80px;background:#D3D7DD;border:0;text-transform:uppercase;font-weight:700;font-size:16px;letter-spacing:0.15em;cursor:pointer;line-height:1.2;outline:none}@media (max-width:1200px){.locations-trigger{width:100%;padding:15px 40px 15px}}.locations-trigger{}.locations-trigger:after{content:"";position:absolute;inset:0 0 0 auto;width:40px;background:#0d6797;pointer-events:none}@media (max-width:1200px){.locations-trigger:after{background-color:transparent}}.locations-trigger .chev{position:absolute;right:60px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:20px;height:20px;background:no-repeat center/20px 20px url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'><path fill='black' d='M31.5 192.5c9.4-9.4 24.6-9.4 33.9 0L160 287l94.6-94.5c9.4-9.4 24.6-9.4 34 0s9.3 24.6 0 34L177 338.6c-9.4 9.4-24.6 9.4-34 0L31.5 226.5c-9.4-9.4-9.4-24.6 0-34z'/></svg>");-webkit-transition:-webkit-transform 0.2s ease;transition:-webkit-transform 0.2s ease;transition:transform 0.2s ease;transition:transform 0.2s ease,-webkit-transform 0.2s ease}@media (max-width:700px){.locations-trigger .chev{right:15px}}.dropdown-wrapper.open .locations-trigger .chev{-webkit-transform:translateY(-50%) rotate(180deg);transform:translateY(-50%) rotate(180deg)}.locations-menu{position:absolute;top:calc(100% - 0px);left:100px;z-index:10;min-width:360px;background:#D3D7DD;padding:20px 15px 10px;-webkit-box-shadow:0 12px 30px rgba(0,0,0,0.25);box-shadow:0 12px 30px rgba(0,0,0,0.25);border-radius:0;max-height:60vh;overflow:auto;border-bottom:10px solid #0d6797}@media (max-width:700px){.locations-menu{width:100%;left:0}}.locations-menu .option{display:block;width:100%;background:transparent;border:0;text-align:left;padding:8px 4px;
47cursor:pointer;color:#111;text-transform:uppercase;font-weight:800;letter-spacing:0.18em;font-size:18px;line-height:1.6;font-family:"Outfit",sans-serif}.locations-menu .option:hover{color:#0d6797}.locations-menu .option.is-active{color:#0d6797}.selected-hours{position:relative;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 40px 0 0;background:#0d6797;white-space:nowrap;text-transform:uppercase;font-weight:600;font-size:16px;letter-spacing:1.5px}.selected-hours span,.selected-hours strong{color:#fff}.selected-hours strong{margin-right:6px}.selected-hours{}.selected-hours:after{content:"";position:absolute;top:0;right:-15px;height:calc(100% + 0px);width:20px;background:#fff;pointer-events:none}@media (max-width:1200px){.selected-hours:after{display:none}}@media (max-width:1200px){.selected-hours{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}}@media (max-width:700px){.selected-hours{display:none!important}}.selected-hours{}.selected-hours.is-collapsed{background:transparent;border-right:0;padding:0;width:0}.selected-hours{}.selected-hours .sh-content{display:inline-block;-webkit-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:0 50%;transform-origin:0 50%;opacity:0;-webkit-transition:opacity 0.2s ease,-webkit-transform 0.35s ease;transition:opacity 0.2s ease,-webkit-transform 0.35s ease;transition:transform 0.35s ease,opacity 0.2s ease;transition:transform 0.35s ease,opacity 0.2s ease,-webkit-transform 0.35s ease;will-change:transform}.selected-hours.is-open .sh-content{-webkit-transform:scaleX(1);transform:scaleX(1);opacity:1}.location-selector,.location-selector #selected-hours,.location-selector #selected-hours span,.location-selector #selected-hours strong,.location-selector .locations-menu,.location-selector .locations-menu .option,.location-selector .locations-trigger,.location-selector .locations-trigger .label{text-transform:uppercase;letter-spacing:0.15em;font-size:16px;font-weight:700;line-height:normal;font-family:"Outfit",sans-serif}#site-navigation.is-fixed{position:fixed;top:0;left:0;right:0;z-index:1000}#nav-spacer{height:0}body.admin-bar #site-navigation.is-fixed{top:32px}@media (max-width:782px){body.admin-bar #site-navigation.is-fixed{top:46px}}</style> 48<!-- Search Engine Optimization by Rank Math - https://rankmath.com/ --> 49<title>Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis</title> 50<meta name="description" content="Welcome to NOBO, with dispensaries and cannabis products of the highest caliber in Michigan, Illinois, and Colorado."/> 51<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/> 52<link rel="canonical" href="https://nobogoods.com/" /> 53<meta property="og:locale" content="en_US" /> 54<meta property="og:type" content="website" /> 55<meta property="og:title" content="Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis" /> 56<meta property="og:description" content="Welcome to NOBO, with dispensaries and cannabis products of the highest caliber in Michigan, Illinois, and Colorado." /> 57<meta property="og:url" content="https://nobogoods.com/" /> 58<meta property="og:site_name" content="NOBO Dispensary" /> 59<meta property="og:updated_time" content="2026-08-31T12:15:10-04:00" /> 60<meta property="og:image" content="https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-1024x538.png" /> 61<meta property="og:image:secure_url" content="https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-1024x538.png" /> 62<meta property="og:image:width" content="1024" /> 63<meta property="og:image:height" content="538" /> 64<meta property="og:image:alt" content="Home" /> 65<meta property="og:image:type" content="image/png" /> 66<meta property="article:published_time" content="2022-08-26T05:24:40-04:00" /> 67<meta property="article:modified_time" content="2026-08-31T12:15:10-04:00" /> 68<meta name="twitter:card" content="summary_large_image" /> 69<meta name="twitter:title" content="Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis" /> 70<meta name="twitter:description" content="Welcome to NOBO, with dispensaries and cannabis products of the highest caliber in Michigan, Illinois, and Colorado." />
71<meta name="twitter:image" content="https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-1024x538.png" /> 72<meta name="twitter:label1" content="Written by" /> 73<meta name="twitter:data1" content="admin" /> 74<meta name="twitter:label2" content="Time to read" /> 75<meta name="twitter:data2" content="Less than a minute" />
76<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":["Person","Organization"],"@id":"https://nobogoods.com/#person","name":"NOBO","logo":{"@type":"ImageObject","@id":"https://nobogoods.com/#logo","url":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share-01-e1762399201417.png","contentUrl":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share-01-e1762399201417.png","caption":"NOBO Dispensary","inLanguage":"en-US","width":"112","height":"112"},"image":{"@type":"ImageObject","@id":"https://nobogoods.com/#logo","url":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share-01-e1762399201417.png","contentUrl":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share-01-e1762399201417.png","caption":"NOBO Dispensary","inLanguage":"en-US","width":"112","height":"112"}},{"@type":"WebSite","@id":"https://nobogoods.com/#website","url":"https://nobogoods.com","name":"NOBO Dispensary","alternateName":"NOBO INC","publisher":{"@id":"https://nobogoods.com/#person"},"inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":"https://nobogoods.com/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-scaled.png","url":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-scaled.png","width":"2560","height":"1344","inLanguage":"en-US"},{"@type":"WebPage","@id":"https://nobogoods.com/#webpage","url":"https://nobogoods.com/","name":"Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis","datePublished":"2022-08-26T05:24:40-04:00","dateModified":"2026-08-31T12:15:10-04:00","about":{"@id":"https://nobogoods.com/#person"},"isPartOf":{"@id":"https://nobogoods.com/#website"},"primaryImageOfPage":{"@id":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-scaled.png"},"inLanguage":"en-US"},{"@type":"Person","@id":"https://nobogoods.com/#author","name":"admin","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/f132ba1b1a5a3d6f3cb6529cef071eedff6082ffed6f37fb7fbbf8dde5dedb6e?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/f132ba1b1a5a3d6f3cb6529cef071eedff6082ffed6f37fb7fbbf8dde5dedb6e?s=96&d=mm&r=g","caption":"admin","inLanguage":"en-US"},"sameAs":["https://devsquad.champawesome.com"]},{"@type":"Article","headline":"Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis","datePublished":"2022-08-26T05:24:40-04:00","dateModified":"2026-08-31T12:15:10-04:00","author":{"@id":"https://nobogoods.com/#author","name":"admin"},"publisher":{"@id":"https://nobogoods.com/#person"},"description":"Welcome to NOBO, with dispensaries and cannabis products of the highest caliber in Michigan, Illinois, and Colorado.","name":"Michigan, Illinois, Colorado Cannabis Dispensaries - NOBO Cannabis","@id":"https://nobogoods.com/#richSnippet","isPartOf":{"@id":"https://nobogoods.com/#webpage"},"image":{"@id":"https://nobogoods.com/wp-content/uploads/2025/11/nobo-favicon-and-social-share_1-scaled.png"},"inLanguage":"en-US","mainEntityOfPage":{"@id":"https://nobogoods.com/#webpage"}}]}</script>
76 77<!-- /Rank Math WordPress SEO plugin --> 78 79<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 80<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://nobogoods.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnobogoods.com%2F" /> 81<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://nobogoods.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnobogoods.com%2F&format=xml" /> 82<style id="wp-img-auto-sizes-contain-inline-css"> 83img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 84/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 85</style> 86<style id="wp-emoji-styles-inline-css"> 87 88 img.wp-smiley, img.emoji { 89 display: inline !important; 90 border: none !important; 91 box-shadow: none !important; 92 height: 1em !important; 93 width: 1em !important; 94 margin: 0 0.07em !important; 95 vertical-align: -0.1em !important; 96 background: none !important; 97 padding: 0 !important; 98 } 99/*# sourceURL=wp-emoji-styles-inline-css */ 100</style> 101<style id="wp-block-library-inline-css"> 102:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
102--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 103 104/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 105</style> 106<style id="classic-theme-styles-inline-css"> 107/*! This file is auto-generated */ 108.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 109/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 110</style> 111 112<style id="global-styles-inline-css"> 113:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
1130) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
113.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 114/*# sourceURL=global-styles-inline-css */ 115</style> 116 117<link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" id="theme-style-css" href="https://nobogoods.com/wp-content/themes/nobo/style.css?ver=7.1.3" media="all" /> 118<link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" id="main-style-css" href="https://nobogoods.com/wp-content/themes/nobo/ui/css/do-not-edit.min.css?ver=1788205258" media="all" /> 119<link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" id="prism-style-css" href="https://nobogoods.com/wp-content/themes/nobo/js/vendors/prism.css?ver=7.1.3" media="all" /> 120<link rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'" id="fancybox-style-css" href="https://nobogoods.com/wp-content/themes/nobo/js/vendors/fancybox.css?ver=7.1.3" media="all" /> 121<link rel='stylesheet' id='fa-main-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/fontawesome.min.css?ver=7.1.3' media='all' /> 122<link rel='stylesheet' id='fa-brands-css' href='https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/brands.min.css?ver=7.1.3' media='all' />
123<script id="breeze-prefetch-js-extra"> 124var breeze_prefetch = {"local_url":"https://nobogoods.com","ignore_remote_prefetch":"1","ignore_list":["wp-admin","wp-login.php"]}; 125//# sourceURL=breeze-prefetch-js-extra 126</script>
vendor: 1 bytes, line 126
126
127<script id="breeze-prefetch-js" src="https://nobogoods.com/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js?ver=2.6.1"></script>
vendor: 1 bytes, line 127
127
128<script id="jquery-core-js" src="https://nobogoods.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 128
128
129<script id="jquery-migrate-js" src="https://nobogoods.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 129
129
130<script id="prism-script-js" src="https://nobogoods.com/wp-content/themes/nobo/js/vendors/prism.js?ver=7.1.3"></script>
vendor: 1 bytes, line 130
130
131<script id="fancybox-script-js" src="https://nobogoods.com/wp-content/themes/nobo/js/vendors/fancybox.js?ver=7.1.3"></script>
131 132<link rel="https://api.w.org/" href="https://nobogoods.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://nobogoods.com/wp-json/wp/v2/pages/7" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://nobogoods.com/xmlrpc.php?rsd" /> 133<meta name="generator" content="WordPress 7.1.3" /> 134<link rel='shortlink' href='https://nobogoods.com/' /> 135<meta name="ti-site-data" content="eyJyIjoiMTowITc6MCEzMDowIiwibyI6Imh0dHBzOlwvXC9ub2JvZ29vZHMuY29tP3RpLW9ubGluZS11c2Vycy1nb29nbGU9MSZhbXA7cD0lMkYmYW1wO193cG5vbmNlPWQyMGM5MDBmMTIifQ==" /><link rel="icon" href="https://nobogoods.com/wp-content/uploads/2025/10/cropped-cropped-nobo-favicon-01-32x32.png" sizes="32x32" /> 136<link rel="icon" href="https://nobogoods.com/wp-content/uploads/2025/10/cropped-cropped-nobo-favicon-01-192x192.png" sizes="192x192" /> 137<link rel="apple-touch-icon" href="https://nobogoods.com/wp-content/uploads/2025/10/cropped-cropped-nobo-favicon-01-180x180.png" /> 138<meta name="msapplication-TileImage" content="https://nobogoods.com/wp-content/uploads/2025/10/cropped-cropped-nobo-favicon-01-270x270.png" /> 139<style id="wp-custom-css"> 140#site-navigation{ 141 padding-top: 0; 142} 143.nav_container{ 144 margin-top: 40px !important; 145} 146.location-selector{ 147 background: #393939; 148} 149 150#location-team{ 151 display: none; 152} 153#announcementBar p a { 154 font-size:0.8rem !important; 155} 156 157body.home .recent-posts { 158 padding:0px !important; 159} 160body.home .recent-posts .content_container { 161 display:none !important; 162} 163/* Menu Updates */ 164 165body.menu-denver-co .hero, body.menu-benton-harbor-mi .hero, body.menu-edwardsburg-mi .hero, body.menu-lakemoor-il .hero, body.menu-lakemoor-il .hero, body.menu-south-haven-mi .hero, body.menu-muskegon-mi .hero { 166 height:auto !important; 167 min-height:300px !important; 168 max-height:auto !important; 169} 170body.menu-denver-co .hero .hero__content, body.menu-benton-harbor-mi .hero .hero__content, body.menu-edwardsburg-mi .hero .hero__content, body.menu-lakemoor-il .hero .hero__content, body.menu-south-haven-mi .hero .hero__content, body.menu-lakemoor-il .hero .hero__content, body.menu-muskegon-mi .hero .hero__content { 171 margin-top:50px !important; 172} 173body.menu-denver-co section.standard-content, 174body.menu-benton-harbor-mi section.standard-content, 175body.menu-edwardsburg-mi section.standard-content, 176body.menu-lakemoor-il section.standard-content, 177body.menu-lakemoor-il section.standard-content, 178body.menu-south-haven-mi section.standard-content, body.menu-muskegon-mi section.standard-content { 179 padding-top:0px !important; 180} 181 182@media(max-width:500px) { 183 body.menu-denver-co .hero, 184 body.menu-benton-harbor-mi .hero, 185 body.menu-edwardsburg-mi .hero, 186 body.menu-lakemoor-il .hero, 187 body.menu-lakemoor-il .hero, 188 body.menu-south-haven-mi .hero, body.menu-muskegon-mi .hero { 189 min-height:220px !important; 190 } 191} 192 193body.home #locations-map .content_container .left .featured-wrapper .featured-location h4 { 194 font-size:32px !important; 195} 196body.home #locations-map .content_container .left .featured-wrapper .featured-location a { 197 font-size:20px !important; 198} 199</style> 200 201 <!-- Google tag (gtag.js) -->
vendor: 64 bytes, line 201
201 <script async src="https://www.googletagmanager.com/gtag/js?id=
201G-3ECMBDR67D
vendor: 12 bytes, line 201
201"></script>
201<script>
vendor: 127 bytes, line 201
201window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '
201G-3ECMBDR67D
vendor: 4 bytes, line 201
201');
201</script>
201 202 203<!-- Google Tag Manager -->
204<script>
vendor: 331 bytes, lines 204-208
204(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 205new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 206j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 207'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 208})(window,document,'script','dataLayer','
208GTM-WPD7GXFF
vendor: 3 bytes, line 208
208');
208</script>
208 209<!-- End Google Tag Manager --> 210 211 212 <link rel='stylesheet' id='leaflet_stylesheet-css' href='https://unpkg.com/[email protected]/dist/leaflet.css' media='' /> 213 214</head> 215 <body class="home wp-singular page-template page-template-templates page-template-page-sections page-template-templatespage-sections-php page page-id-7 wp-custom-logo wp-theme-nobo"> 216 <div id="page_wrapper"> <div id="announcementBar"> 217 <p>Rewards That Pay! Earn 5% Cash Back + Exclusive Member Perks â <a href="https://nobogoods.com/rewards/">Join NOBO Rewards!</a>.</p> 218 <a href="javascript:;" role="button" aria-label="announcement bar exit" class="announcement-exit"> 219 <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 32 32"><title>cross</title><path fill="rgba(255, 255, 255, 0.8)" d="M31.708 25.708c-0-0-0-0-0-0l-9.708-9.708 9.708-9.708c0-0 0-0 0-0 0.105-0.105 0.18-0.227 0.229-0.357 0.133-0.356 0.057-0.771-0.229-1.057l-4.586-4.586c-0.286-0.286-0.702-0.361-1.057-0.229-0.13 0.048-0.252 0.124-0.357 0.228 0 0-0 0-0 0l-9.708 9.708-9.708-9.708c-0-0-0-0-0-0-0.105-0.104-0.227-0.18-0.357-0.228-0.356-0.133-0.771-0.057-1.057 0.229l-4.586 4.586c-0.286 0.286-0.361 0.702-0.229 1.057 0.049 0.13 0.124 0.252 0.229 0.357 0 0 0 0 0 0l9.708 9.708-9.708 9.708c-0 0-0 0-0 0-0.104 0.105-0.18 0.227-0.229 0.357-0.133 0.355-0.057 0.771 0.229 1.057l4.586 4.586c0.286 0.286 0.702 0.361 1.057 0.229 0.13-0.049 0.252-0.124 0.357-0.229 0-0 0-0 0-0l9.708-9.708 9.708 9.708c0 0 0 0 0 0 0.105 0.105 0.227 0.18 0.357 0.229 0.356 0.133 0.771 0.057 1.057-0.229l4.586-4.586c0.286-0.286 0.362-0.702 0.229-1.057-0.049-0.13-0.124-0.252-0.229-0.357z"></path></svg> 220 </a> 221</div>
222<script>window.enableAnnouncementBar = true;</script>
222 223<nav role="navigation" aria-label="Main Menu" id="site-navigation" class="main-navigation main_nav"> 224 <div class="location-selector"> 225 <div class="dropdown-wrapper js-locations"> 226 <!-- Trigger that looks like the select --> 227 <button id="locations-trigger" 228 class="locations-trigger" 229 type="button" 230 aria-haspopup="listbox" 231 aria-expanded="false" 232 aria-controls="locations-menu"> 233 <span class="label" data-default="LOCATION">LOCATION</span> 234 <span class="chev" aria-hidden="true"></span> 235 </button> 236 237 <!-- Keep the original select for data, but hide it visually --> 238 <select id="locations-dropdown" name="locations" aria-hidden="true" tabindex="-1"> 239 <option value="" selected>LOCATION</option> 240 <option value="807"> 241 Benton Harbor, MI </option> 242 <option value="819"> 243 Denver, CO </option> 244 <option value="809"> 245 Edwardsburg, MI </option> 246 <option value="817"> 247 Lakemoor, IL </option> 248 <option value="813"> 249 Muskegon, MI </option> 250 <option value="1167"> 251 NE Minneapolis, MN </option> 252 <option value="815"> 253 South Haven, MI </option> 254 </select> 255 256 <!-- Custom menu (built from the select by JS) --> 257 <div class="locations-menu" id="locations-menu" role="listbox" hidden></div> 258 </div> 259 260 <!-- Your hours pill --> 261 <div id="selected-hours" class="selected-hours is-collapsed"></div> 262 </div> 263 <div class="nav_container"> 264 265 <a href="/" class="logo_link standard"><img src="https://nobogoods.com/wp-content/uploads/2025/12/NOBO-Horizontal-1.png"></a> <div class="menu-primary-nav-container"><ul id="primary-menu" class="menu main_menu"><li id="menu-item-1211" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1211"><a href="#" class="menu-link" data-requires-location="1" data-location-link="main_shop_link" data-has-link="0">Menu</a></li> 266<li id="menu-item-787" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-787"><a href="/rewards/">Rewards</a></li> 267<li id="menu-item-785" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-785"><a href="/brands/">Our Brands</a></li> 268<li id="menu-item-786" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-786"><a href="#">Learn</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 269<ul class="sub-menu"> 270 <li id="menu-item-1023" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1023"><a href="/blog/">Blog</a></li> 271 <li id="menu-item-1185" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1185"><a href="https://nobogoods.com/faqs/">FAQs</a></li> 272</ul> 273</li> 274<li id="menu-item-739" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-739"><a href="https://nobogoods.com/about/">About</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 275<ul class="sub-menu"> 276 <li id="menu-item-1020" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1020"><a href="https://nobogoods.com/contact/">Contact</a></li> 277 <li id="menu-item-1021" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1021"><a target="_blank" href="https://www.growray.com/">GrowRay</a></li> 278</ul> 279</li> 280<li id="menu-item-1024" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-1024"><a href="/locations/">Locations</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 281<ul class="sub-menu"> 282 <li id="menu-item-1693" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1693"><a href="https://nobogoods.com/locations/benton-harbor-mi/">Benton Harbor, MI</a></li> 283 <li id="menu-item-1692" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1692"><a href="https://nobogoods.com/locations/edwardsburg-mi/">Edwardsburg, MI</a></li> 284 <li id="menu-item-1690" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1690"><a href="https://nobogoods.com/locations/muskegon-mi/">Muskegon, MI</a></li> 285 <li id="menu-item-1689" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1689"><a href="https://nobogoods.com/locations/south-haven-mi/">South Haven, MI</a></li> 286 <li id="menu-item-1687" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1687"><a href="https://nobogoods.com/locations/denver-co/">Denver, CO</a></li> 287 <li id="menu-item-1688" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1688"><a href="https://nobogoods.com/locations/lakemoor-il/">Lakemoor, IL</a></li> 288 <li id="menu-item-1874" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1874"><a href="https://nobogoods.com/locations/northeast-minneapolis-mn/">NE Minneapolis, MN</a></li> 289</ul> 290</li> 291</ul></div> <div role="button" aria-label="Hamburger Menu" class="hamburger_container"> 292 <div class="hamburger-lines">
293 <span class="line line1"></span> 294 <span class="line line2"></span> 295 <span class="line line3"></span> 296 </div> 297 </div> 298 299 </div> 300</nav><div id="page_content"> 301 302<header class="hero home-hero" style='background-image: url(https://nobogoods.com/wp-content/uploads/2025/12/NewHero-NOBO-scaled.jpg);'> 303 304 <div class="hero__content"> 305 <h1>Crafted with Care. Powered by Passion.</h1> 306 <p>Experience the high life, from seed to spark. We are committed to growing, crafting and curating premium cannabis products with YOU in mind â in Michigan, Minnesota, Illinois, and Colorado.</p> 307 <div class="btns-group"> 308 <a class="button" href="" data-requires-location data-location-link="main_shop_link">Shop Now</a> 309 </div> 310 </div> 311</header> 312<section id="scrolling-text"> 313 <div class="ticker-wrapper"> 314 <div class="horizontal-scrolling-items" id="ticker"> 315 <div class="horizontal-scrolling-items__item"> 316 <h4>Elevate your everyday</h4> 317 </div> 318 </div> 319 </div> 320</section> 321 322<section class="page_section shop-categories" id="shop-categories"> 323 <div class="content_container"> 324 <div class="content-wrapper"> 325 <h3>Experience the <span>NOBO</span> Difference</h3> 326 <p>Welcome to NOBO where the magic of the plant meets commitment to the customer. We're aiming high â bold, sustainable and better in every way. From the finest flower to the cleanest extracts; whether you're new to cannabis or a connoisseur, we deliver elevated and unforgettable.</p> 327 <a class="button secondary" href="" data-requires-location data-location-link="main_shop_link">EXPLORE OUR PRODUCTS</a> 328 </div> 329 <div class="categories"> 330 <img class="feature-image" src="https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Feature.jpg"> 331 <div class="categories-wrapper"> 332 <a class="single" href="" data-requires-location data-location-link="category_links.flower_link"> 333 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Flower.jpg');"> 334 <h4>FLOWER</h4> 335 </div> 336 </a> 337 <a class="single" href="" data-requires-location data-location-link="category_links.pre-roll_link"> 338 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Prerolls.jpg');"> 339 <h4>PRE-ROLLS</h4> 340 </div> 341 </a> 342 <a class="single" href="" data-requires-location data-location-link="category_links.edibles_link"> 343 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Edibles.jpg');"> 344 <h4>EDIBLES</h4> 345 </div> 346 </a> 347 <a class="single" href="" data-requires-location data-location-link="category_links.vaporizers_link"> 348 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Vapes.jpg');"> 349 <h4>VAPORIZERS</h4> 350 </div> 351 </a> 352 <a class="single" href="" data-requires-location data-location-link="category_links.concentrates_link"> 353 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/09/NOBO-Home-Product-Concentrates.jpg');"> 354 <h4>CONCENTRATES</h4> 355 </div> 356 </a> 357 <a class="single" href="" data-requires-location data-location-link="category_links.accessories_link"> 358 <div style="background: url('https://nobogoods.com/w
358p-content/uploads/2025/09/NOBO-Home-Product-Accessoroes.jpg');"> 359 <h4>ACCESSORIES & MORE</h4> 360 </div> 361 </a> 362 </div> 363 </div> 364 </div> 365 <div class="smoke-underlay-2"></div> 366</section><section id="featured-products" class="page_section"> 367 <div class="content_container"> 368 <h2>Grown, Crafted, And Curated For You</h2> 369 <div class="featured-products-wrapper"> 370 <a class="single" href="/brands/#rolling-thunder"> 371 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/11/Untitled-design.png');"> 372 <h4>Rolling Thunder</h4> </div> 373 </a> 374 375 <a class="single" href="/brands/#nobo-signature"> 376 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/11/NOBO-e1763159153615.jpg');"> 377 <h4>NOBO</h4> </div> 378 </a> 379 380 <a class="single" href="/brands/#mischief"> 381 <div style="background: url('https://nobogoods.com/wp-content/uploads/2025/11/Mischief.jpg');"> 382 <h4>Mischief</h4> </div> 383 </a> 384 </div> 385 <div class="logos-section"> 386 <div class="logos-carousel" data-duration="35"> 387 <div class="logos-track"> 388 <div class="slide"> 389 <img class="logo" src="https://nobogoods.com/wp-content/uploads/2025/11/Potshot-logo-marks-icons_Potshot-logo-label-art-scaled.png" alt=""> 390 </div> 391 <div class="slide"> 392 <img class="logo" src="https://nobogoods.com/wp-content/uploads/2025/09/024ab5a725c1f8ae8ea65b6a31d37bd55e93e54c.png" alt=""> 393 </div> 394 <div class="slide"> 395 <img class="logo" src="https://nobogoods.com/wp-content/uploads/2025/09/Vector.png" alt=""> 396 </div> 397 <div class="slide"> 398 <img class="logo" src="https://nobogoods.com/wp-content/uploads/2025/11/710-Labs-Transparent.png" alt=""> 399 </div> 400 <div class="slide"> 401 <img class="logo" src="https://nobogoods.com/wp-content/uploads/2025/11/ElevateLogo.png" alt=""> 402 </div> 403 </div> 404 </div> 405 </div> 406 </div> 407</section> 408 409<style> 410.logos-section { 411 width: 100%; 412} 413 414/* Carousel wrapper */ 415.logos-carousel { 416 --gap: clamp(16px, 4vw, 48px); 417 --tile-h: clamp(42px, 8vw, 80px); 418 position: relative; 419 overflow: hidden; 420} 421 422/* Track of logos (scrolling element) */ 423.logos-track { 424 display: flex; 425 align-items: center; 426 gap: var(--gap); 427 will-change: transform; 428 width: max-content; /* fit content width */ 429} 430 431/* Individual logo slide */ 432.slide { 433 flex: 0 0 auto; 434 height: var(--tile-h); 435 display: flex; 436 align-items: center; 437 justify-content: center; 438} 439 440.slide img.logo { 441 height: 100%; 442 width: auto; 443 max-width: 220px; 444 object-fit: contain; 445 display: block; 446} 447 448/* Infinite scrolling: 449 Move 0% â -33.333% (1/3 of track width) 450 Perfect seamless loop when using 3 duplicates 451*/ 452@keyframes logos-marquee { 453 from { transform: translateX(0); } 454 to { transform: translateX(-33.3333%); } 455} 456 457/* Pause animation on hover */ 458.logos-carousel:hover .logos-track { 459 animation-play-state: paused; 460} 461 462/* If you REALLY want to honor reduced motion, keep this. 463 If it keeps killing the animation on your machine, you can remove it. 464*/ 465@media (prefers-reduced-motion: reduce) { 466 .logos-track { 467 animation: none !important; 468 } 469} 470</style> 471
472<script> 473document.addEventListener('DOMContentLoaded', () => { 474 const DUPES = 3; // Duplicate logo set 3Ã for long seamless scroll 475 476 document.querySelectorAll('.logos-carousel').forEach((carousel) => { 477 const track = carousel.querySelector('.logos-track'); 478 if (!track) return; 479 480 const duration = parseFloat(carousel.dataset.duration) || 35; 481 const originalHTML = track.innerHTML; 482 483 function setup() { 484 // Build 3 loops of the original content 485 let combined = ""; 486 for (let i = 0; i < DUPES; i++) { 487 combined += originalHTML; 488 } 489 track.innerHTML = combined; 490 491 // Respect reduced motion â COMMENT THIS OUT if it interferes: 492 if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { 493 track.style.animation = 'none'; 494 track.style.removeProperty('transform'); 495 return; 496 } 497 498 // Force browser to reflow (reset animation)
499 track.style.animation = 'none'; 500 void track.offsetWidth; 501 502 // Apply animation directly (no class dependency) 503 track.style.animation = `logos-marquee ${duration}s linear infinite`; 504 } 505 506 // Completely reset the track when resizing 507 function teardown() { 508 track.style.animation = 'none'; 509 track.innerHTML = originalHTML; 510 } 511 512 let resizeTimer; 513 function reinit() { 514 teardown(); 515 clearTimeout(resizeTimer); 516 resizeTimer = setTimeout(setup, 120); 517 } 518 519 setup(); // Initial load 520 window.addEventListener('resize', reinit, { passive: true }); 521 }); 522}); 523</script>
523 524 525<section id="below-featured-products" class="page_section standard-content"> 526 <div class="content_container"> 527 <div> 528<p>Only the best will do. Our menu is stacked with top-shelf strains, fresh drops, and must-try products you won’t find anywhere else. Every NOBO visit is a discovery, and the deals hit just as hard as our selections.</p> 529<p><a class="button secondary" data-requires-location="" data-location-link="main_shop_link">View Menu</a></p> 530</div> 531 </div> 532</section> 533<section id="scrolling-text"> 534 <div class="ticker-wrapper"> 535 <div class="horizontal-scrolling-items" id="ticker"> 536 <div class="horizontal-scrolling-items__item"> 537 <h4>Conscious Cannabis</h4> 538 </div> 539 </div> 540 </div> 541</section><section id="locations-map" class="page_section locations-map"> 542 <div class="content_container"> 543 <div class="left"> 544 <div class="content-wrapper"> 545 <h2>No Matter the Location, Itâs <span>Always a NOBO Experience</span></h2> 546 <p>Every store brings the same premium products, next-level service, and bold, feel-good energy. Whether youâre in Michigan, Minnesota, Colorado, or Illinois, youâll walk into a vibe that welcomes you. No matter where you are, if you are at NOBO, you are home.</p> 547 </div> 548 <div class="featured-wrapper"> 549 550 <div class="featured-location"> 551 <h4>Benton Harbor, MI</h4> 552 <a href="tel:269-999-1041">269-999-1041</a> 553 </div> 554 555 556 <div class="featured-location"> 557 <h4>Edwardsburg, MI</h4> 558 <a href="tel:269-635-6621">269-635-6621</a> 559 </div> 560 561 562 <div class="featured-location"> 563 <h4>Muskegon, MI</h4> 564 <a href="tel:231-383-8100">231-383-8100</a> 565 </div> 566 567 568 <div class="featured-location"> 569 <h4>South Haven, MI</h4> 570 <a href="tel:269-767-4561">269-767-4561</a> 571 </div> 572 573 574 <div class="featured-location"> 575 <h4>Denver, CO</h4> 576 <a href="tel:303-862-7485">303-862-7485</a> 577 </div> 578 579 580 <div class="featured-location"> 581 <h4>Lakemoor, IL</h4> 582 <a href="tel:815-900-2990">815-900-2990</a> 583 </div> 584 585 586 <div class="featured-location"> 587 <h4>NE Minneapolis, MN</h4> 588 <a href="tel:763-283-8567">763-283-8567</a> 589 </div> 590 591 </div> 592 <a class="button secondary" href="/locations">Find Your Nobo</a> 593 </div> 594 <div class="right"> 595 <div class="leaflet-map WPLeafletMap" style="height:250px; width:100%;"></div>
595<script> 596window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 597window.WPLeafletMapPlugin.push(function WPLeafletMapShortcode() {/*
597<script>*/ 598var baseUrl = atob('aHR0cHM6Ly90aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZw=='); 599var base = (!baseUrl && window.MQ) ? 600 window.MQ.mapLayer() : L.tileLayer(baseUrl, 601 L.Util.extend({}, { 602 detectRetina: 0, 603 }, 604 {"subdomains":"abc","noWrap":false,"maxZoom":15} ) 605 ); 606 var options = L.Util.extend({}, { 607 layers: [base], 608 attributionControl: false 609 }, 610 {"zoomControl":false,"scrollWheelZoom":true,"doubleClickZoom":true,"fitBounds":true,"minZoom":3,"maxZoom":15,"maxBounds":null,"attribution":"<a href=\"http:\/\/leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet<\/a>; \u00a9 <a href=\"http:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> contributors"}, 611 {}); 612window.WPLeafletMapPlugin.createMap(options).setView([44.67,-63.61],15);});</script>
612<script> 613window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 614window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
614<script>*/ 615var map = window.WPLeafletMapPlugin.getCurrentMap(); 616var group = window.WPLeafletMapPlugin.getCurrentGroup(); 617var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 618var marker = L.marker( 619 [44.990361915743,-93.253884986508], 620 marker_options 621); 622var is_image = map.is_image_map; 623if (marker_options.draggable) { 624 marker.on('dragend', function () { 625 var latlng = this.getLatLng(); 626 var lat = latlng.lat; 627 var lng = latlng.lng; 628 if (is_image) { 629 console.log('leaflet-marker y=' + lat + ' x=' + lng); 630 } else { 631 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 632 } 633 }); 634} 635marker.addTo( group ); 636marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/northeast-minneapolis-mn/">NE Minneapolis, MN</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 637 });</script>
637<script> 638window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 639window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
639<script>*/ 640var map = window.WPLeafletMapPlugin.getCurrentMap(); 641var group = window.WPLeafletMapPlugin.getCurrentGroup(); 642var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 643var marker = L.marker( 644 [39.732083739622,-104.98590454233], 645 marker_options 646); 647var is_image = map.is_image_map; 648if (marker_options.draggable) { 649 marker.on('dragend', function () { 650 var latlng = this.getLatLng(); 651 var lat = latlng.lat; 652 var lng = latlng.lng; 653 if (is_image) { 654 console.log('leaflet-marker y=' + lat + ' x=' + lng); 655 } else { 656 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 657 } 658 }); 659} 660marker.addTo( group ); 661marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/denver-co/">Denver, CO</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 662 });</script>
662<script> 663window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 664window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
664<script>*/ 665var map = window.WPLeafletMapPlugin.getCurrentMap(); 666var group = window.WPLeafletMapPlugin.getCurrentGroup(); 667var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 668var marker = L.marker( 669 [42.32240408618,-88.1672978], 670 marker_options 671); 672var is_image = map.is_image_map; 673if (marker_options.draggable) { 674 marker.on('dragend', function () { 675 var latlng = this.getLatLng(); 676 var lat = latlng.lat; 677 var lng = latlng.lng; 678 if (is_image) { 679 console.log('leaflet-marker y=' + lat + ' x=' + lng); 680 } else { 681 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 682 } 683 }); 684} 685marker.addTo( group ); 686marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/lakemoor-il/">Lakemoor, IL</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 687 });</script>
687<script> 688window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 689window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
689<script>*/ 690var map = window.WPLeafletMapPlugin.getCurrentMap(); 691var group = window.WPLeafletMapPlugin.getCurrentGroup(); 692var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 693var marker = L.marker( 694 [42.375192888578,-86.268172528836], 695 marker_options 696); 697var is_image = map.is_image_map; 698if (marker_options.draggable) { 699 marker.on('dragend', function () { 700 var latlng = this.getLatLng(); 701 var lat = latlng.lat; 702 var lng = latlng.lng; 703 if (is_image) { 704 console.log('leaflet-marker y=' + lat + ' x=' + lng); 705 } else { 706 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 707 } 708 }); 709} 710marker.addTo( group ); 711marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/south-haven-mi/">South Haven, MI</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 712 });</script>
712<script> 713window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 714window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
714<script>*/ 715var map = window.WPLeafletMapPlugin.getCurrentMap(); 716var group = window.WPLeafletMapPlugin.getCurrentGroup(); 717var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 718var marker = L.marker( 719 [43.233991682667,-86.20885715582], 720 marker_options 721); 722var is_image = map.is_image_map; 723if (marker_options.draggable) { 724 marker.on('dragend', function () { 725 var latlng = this.getLatLng(); 726 var lat = latlng.lat; 727 var lng = latlng.lng; 728 if (is_image) { 729 console.log('leaflet-marker y=' + lat + ' x=' + lng); 730 } else { 731 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 732 } 733 }); 734} 735marker.addTo( group ); 736marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/muskegon-mi/">Muskegon, MI</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 737 });</script>
737<script> 738window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 739window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
739<script>*/ 740var map = window.WPLeafletMapPlugin.getCurrentMap(); 741var group = window.WPLeafletMapPlugin.getCurrentGroup(); 742var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 743var marker = L.marker( 744 [41.79052658493,-86.084777884656], 745 marker_options 746); 747var is_image = map.is_image_map; 748if (marker_options.draggable) { 749 marker.on('dragend', function () { 750 var latlng = this.getLatLng(); 751 var lat = latlng.lat; 752 var lng = latlng.lng; 753 if (is_image) { 754 console.log('leaflet-marker y=' + lat + ' x=' + lng); 755 } else { 756 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 757 } 758 }); 759} 760marker.addTo( group ); 761marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/edwardsburg-mi/">Edwardsburg, MI</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 762 });</script>
762<script> 763window.WPLeafletMapPlugin = window.WPLeafletMapPlugin || []; 764window.WPLeafletMapPlugin.push(function WPLeafletMarkerShortcode() {/*
764<script>*/ 765var map = window.WPLeafletMapPlugin.getCurrentMap(); 766var group = window.WPLeafletMapPlugin.getCurrentGroup(); 767var marker_options = window.WPLeafletMapPlugin.getIconOptions({"iconUrl":"\/wp-content\/uploads\/2025\/10\/Pin.png","iconSize":"20,30","iconAnchor":"12,35"}); 768var marker = L.marker( 769 [42.116524663784,-86.455323875134], 770 marker_options 771); 772var is_image = map.is_image_map; 773if (marker_options.draggable) { 774 marker.on('dragend', function () { 775 var latlng = this.getLatLng(); 776 var lat = latlng.lat; 777 var lng = latlng.lng; 778 if (is_image) { 779 console.log('leaflet-marker y=' + lat + ' x=' + lng); 780 } else { 781 console.log('leaflet-marker lat=' + lat + ' lng=' + lng); 782 } 783 }); 784} 785marker.addTo( group ); 786marker.bindPopup(window.WPLeafletMapPlugin.unescape('<a href="https://nobogoods.com/locations/benton-harbor-mi/">Benton Harbor, MI</a>'));window.WPLeafletMapPlugin.markers.push( marker ); 787 });</script>
787 788 </div> 789 </div> 790</section> 791 792<section class="page_section recent-posts"> 793 <div class="content_container"> 794 <div class="content-wrapper"> 795 <div class="top-content"> 796 <h2><span>Weed Wisdom,</span> Delivered Weekly</h2> 797 <p></p> 798 </div> 799 <a class="button secondary" href="/blog">Read The Blog</a> 800 </div> 801 <div class="recent-posts-container"> 802 <div class="post-card"> 803 <a class="post-link" href="https://nobogoods.com/blog/treat-yourself-to-a-better-nights-sleep-cannabis-picks-that-actually-work/"> 804 <div class="post-card-inner"> 805 <div class="post-image"> 806 <img width="1024" height="683" src="https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741-1024x683.jpg" class="attachment-large size-large wp-post-image" alt="" style="width: 100%; height: 100%; object-fit: cover;" decoding="async" fetchpriority="high" srcset="https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741-1024x683.jpg 1024w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741-300x200.jpg 300w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741-768x512.jpg 768w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741-1536x1024.jpg 1536w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-feelartfeelant-1028741.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /> </div> 807 808 <!-- Hidden until hover --> 809 <div class="post-info"> 810 <h4 class="post-title">Treat Yourself to a Better Nightâs Sleep: Cannabis Picks That Actually Work</h4> 811 <p class="post-excerpt">A good nightâs sleep is one of the most powerful tools we have for physical and mental recovery, but millions of people struggle to get it. Insomnia,â¦</p> 812 </div> 813 </div> 814 </a> 815 </div> 816 <div class="post-card"> 817 <a class="post-link" href="https://nobogoods.com/blog/pairing-cannabis-with-your-favorite-music-genres/"> 818 <div class="post-card-inner"> 819 <div class="post-image"> 820 <img width="768" height="1024" src="https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481-768x1024.jpg" class="attachment-large size-large wp-post-image" alt="" style="width: 100%; height: 100%; object-fit: cover;" decoding="async" srcset="https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481-768x1024.jpg 768w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481-225x300.jpg 225w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481-1152x1536.jpg 1152w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481-1536x2048.jpg 1536w, https://nobogoods.com/wp-content/uploads/2025/10/pexels-paul-uchechukwu-246994638-18923481.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /> </div> 821 822 <!-- Hidden until hover --> 823 <div class="post-info"> 824 <h4 class="post-title">Pairing Cannabis with Your Favorite Music Genres</h4> 825 <p class="post-excerpt">How to Elevate Your Listening Experience with the Right Strain Few things go together quite like cannabis and music. Both have the power to elevate thâ¦</p> 826 </div> 827 </div> 828 </a> 829 </div> 830 <div class="post-card"> 831 <a class="post-link" href="https://nobogoods.com/blog/healthier-cannabis-consumption-a-guide-to-mindful-choices/"> 832 <div class="post-card-inner"> 833 <div class="post-image"> 834 <img width="709" height="763" src="https://nobogoods.com/w
834p-content/uploads/2025/10/Screenshot_2025-04-25_at_6.51.58-PM_.png" class="attachment-large size-large wp-post-image" alt="" style="width: 100%; height: 100%; object-fit: cover;" decoding="async" srcset="https://nobogoods.com/wp-content/uploads/2025/10/Screenshot_2025-04-25_at_6.51.58-PM_.png 709w, https://nobogoods.com/wp-content/uploads/2025/10/Screenshot_2025-04-25_at_6.51.58-PM_-279x300.png 279w" sizes="(max-width: 709px) 100vw, 709px" /> </div> 835 836 <!-- Hidden until hover --> 837 <div class="post-info"> 838 <h4 class="post-title">Healthier Cannabis Consumption: A Guide to Mindful Choices</h4> 839 <p class="post-excerpt">As cannabis use becomes more mainstream, many consumers are taking a closer look at how different methods of consumption impact their health. In Colorâ¦</p> 840 </div> 841 </div> 842 </a> 843 </div> 844 </div> 845 </div> 846 <div class="smoke-underlay"></div> 847</section> 848<section id="global-cta" class="page_section" style="background: url('')"> 849 <div class="content_container"> 850 <h3>new to nobo?</h3> 851 <strong>GET ON THE LIST. <span>GET THE GOODS.</span></strong> 852 <p>Our VIP treatment starts with your email. Be the first to know about product drops, exclusive events, and next-level deals </p> 853 <a class="button secondary" href="https://nobogoods.com/rewards/" target="_self">Sign Up</a> 854 </div> 855</section>
856<script src="https://ig.instant-tokens.com/users/60308928-e015-4758-8748-202e59d4c3a4/instagram/24504014695958016/token?userSecret=q1s2no7pr18fs0cxfpleyq"></script>
vendor: 1 bytes, line 856
856
857<script src="https://ig.instant-tokens.com/users/60308928-e015-4758-8748-202e59d4c3a4/instagram/24504014695958016/token.js?userSecret=q1s2no7pr18fs0cxfpleyq"></script>
vendor: 1 bytes, line 857
857
858<script src="https://s3.eu-central-1.wasabisys.com/instafeed/instafeed-v3.min.js"></script>
vendor: 1 bytes, line 858
858
859<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
859 860 861<section id="instagram-feed" class="page_section"> 862 <div class="content_container"> 863 <div class="header"> 864 <h2>Scroll the Vibes.</h2> 865 <h2>Join the Conversation.</h2> 866 <p>Catch us on Instagram @nobo.goods for fresh drops, in-store moments, and community highlights. Snag something dope? Tag us to get featured â weâre all about that flex life.</p> 867 </div> 868 <div id="instafeed"></div> 869 </div> 870</section> 871 872<style> 873 874</style></div> 875<footer id="page_footer"> 876 <div class="content_container col_3"> 877 878 <div class="column"> 879 <div><div class="menu-footer-menu-1-container"><ul id="menu-footer-menu-1" class="menu"><li id="menu-item-791" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-791"><a href="https://nobogoods.com/about/">About Us</a></li> 880<li id="menu-item-792" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-792"><a href="/brands/">Our Brands</a></li> 881<li id="menu-item-1837" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1837"><a href="https://nobogoods.com/budtender/">Budtender</a></li> 882<li id="menu-item-793" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-793"><a href="/blog/">Blog</a></li> 883<li id="menu-item-1080" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1080"><a href="https://nobogoods.com/careers/">Careers</a></li> 884<li id="menu-item-1081" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1081"><a href="https://nobogoods.com/contact/">Contact</a></li> 885<li id="menu-item-794" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-794"><a href="/locations/">Find A Store</a></li> 886<li id="menu-item-1716" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1716"><a href="https://nobogoods.com/investors/">Investors</a></li> 887</ul></div></div> </div> 888 889 <div class="column"> 890 <div><div class="menu-footer-menu-3-container"><ul id="menu-footer-menu-3" class="menu"><li id="menu-item-1037" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1037"><a href="https://nobogoods.com/locations/denver-co/">Denver, CO</a></li> 891<li id="menu-item-1038" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1038"><a href="https://nobogoods.com/locations/lakemoor-il/">Lakemoor, IL</a></li> 892<li id="menu-item-1039" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1039"><a href="https://nobogoods.com/locations/south-haven-mi/">South Haven, MI</a></li> 893<li id="menu-item-1040" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1040"><a href="https://nobogoods.com/locations/muskegon-mi/">Muskegon, MI</a></li> 894<li id="menu-item-1042" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1042"><a href="https://nobogoods.com/locations/edwardsburg-mi/">Edwardsburg, MI</a></li> 895<li id="menu-item-1043" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1043"><a href="https://nobogoods.com/locations/benton-harbor-mi/">Benton Harbor, MI</a></li> 896<li id="menu-item-1873" class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1873"><a href="https://nobogoods.com/locations/northeast-minneapolis-mn/">NE Minneapolis, MN</a></li> 897</ul></div></div> </div> 898 899 900 <div class="column"> 901 <div><h4>GET THE APP</h4> <div class="textwidget"><div class="app-store-buttons"><a href="https://play.google.com/store/apps/details?id=com.nobogoods.wallet" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-801" src="https://nobogoods.com/wp-content/uploads/2025/09/c6cade69e0a6c2085c5b814894f676088fab808f.png" alt="" width="1280" height="380" srcset="https://nobogoods.com/wp-content/uploads/2025/09/c6cade69e0a6c2085c5b814894f676088fab808f.png 1280w, https://nobogoods.com/wp-content/uploads/2025/09/c6cade69e0a6c2085c5b814894f676088fab808f-300x89.png 300w, https://nobogoods.com/w
901p-content/uploads/2025/09/c6cade69e0a6c2085c5b814894f676088fab808f-1024x304.png 1024w, https://nobogoods.com/wp-content/uploads/2025/09/c6cade69e0a6c2085c5b814894f676088fab808f-768x228.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a><a href="https://apps.apple.com/us/app/nobo-goods/id1643979427" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-800" src="https://nobogoods.com/wp-content/uploads/2025/09/743ca3da0d670b5730e3b1642a1763ad7a1a6132.png" alt="" width="1280" height="428" srcset="https://nobogoods.com/wp-content/uploads/2025/09/743ca3da0d670b5730e3b1642a1763ad7a1a6132.png 1280w, https://nobogoods.com/wp-content/uploads/2025/09/743ca3da0d670b5730e3b1642a1763ad7a1a6132-300x100.png 300w, https://nobogoods.com/wp-content/uploads/2025/09/743ca3da0d670b5730e3b1642a1763ad7a1a6132-1024x342.png 1024w, https://nobogoods.com/wp-content/uploads/2025/09/743ca3da0d670b5730e3b1642a1763ad7a1a6132-768x257.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></a></div> 902</div> 903 </div><div class="social_container"><a href="https://www.facebook.com/noboillinois/" target="_blank"><i class="fab fa-facebook-f"></i></a><a href="https://www.instagram.com/nobo.goods" target="_blank"><i class="fab fa-instagram"></i></a></div> </div> 904 905 </div> 906 <div class="footer-logo"> 907 <a href="/"><img src="https://nobogoods.com/wp-content/uploads/2025/12/FooterLogo-NEW2025.svg" class="footer_logo"></a> </div> 908 <div class="copyright"> 909 <p>© 2026 NOBO. All rights reserved.<span>|</span> <a href="/privacy-policy">Privacy Policy</a> | <a href="/terms-conditions">Terms & Conditions</a> | <a href="/accessibility">Accessibility</a></p>
909 <p>Website Design by <a href="https://cannabiscreative.com" target="_blank">Cannabis Creative</a></p> 910 </div> 911</footer> 912</div>
912<script type="speculationrules"> 913{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/nobo/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 914</script>
vendor: 1 bytes, line 914
914
915<script id="main-script-js-extra"> 916var WP_DATA = {"ajaxurl":"https://nobogoods.com/wp-admin/admin-ajax.php"}; 917//# sourceURL=main-script-js-extra 918</script>
vendor: 1 bytes, line 918
918
919<script id="main-script-js" src="https://nobogoods.com/wp-content/themes/nobo/js/main.min.js?ver=1785870616"></script>
vendor: 1 bytes, line 919
919
920<script id="main-navigation-js" src="https://nobogoods.com/wp-content/themes/nobo/js/navigation.js?ver=1785870616"></script>
vendor: 1 bytes, line 920
920
921<script id="leaflet_js-js" src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
vendor: 1 bytes, line 921
921
922<script id="wp_leaflet_map-js" src="https://nobogoods.com/wp-content/plugins/leaflet-map/scripts/construct-leaflet-map.min.js?ver=3.4.7"></script>
vendor: 1 bytes, line 922
922
923<script id="wp-emoji-settings" type="application/json"> 924{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://nobogoods.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1.3"}} 925</script>
vendor: 1 bytes, line 925
925
926<script type="module"> 927/*! This file is auto-generated */ 928var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 929//# sourceURL=https://nobogoods.com/wp-includes/js/wp-emoji-loader.min.js 930</script>
930 931 932 <!-- Home URL for building absolute redirects --> 933
933<script>window.NB_HOME_URL = "https://nobogoods.com/";</script>
933 934 935 <!-- Safe JSON payload --> 936
936<script id="locations-links-json" type="application/json"> 937 {"807":{"id":807,"title":"Benton Harbor, MI","slug":"benton-harbor-mi","permalink":"https://nobogoods.com/locations/benton-harbor-mi/","main_shop_link":"/menu-benton-harbor-mi/","category_links":{"flower_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-benton-harbor-mi/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"129 E. Main Street<br />\r\nBenton Harbor, MI 49022","phone_number":"269-999-1041","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/f6G9jevob5XByASX8"},"brand_links":{"mischief_link":"/menu-benton-harbor-mi/?dtche%5Bpath%5D=brands%2Fmischief","rolling_thunder_link":"/menu-benton-harbor-mi/?dtche%5Bpath%5D=brands%2Frolling-thunder","nobo_link":"/menu-benton-harbor-mi/?dtche%5Bpath%5D=brands%2Fnobo"}},"819":{"id":819,"title":"Denver, CO","slug":"denver-co","permalink":"https://nobogoods.com/locations/denver-co/","main_shop_link":"/menu-denver-co/","category_links":{"flower_link":"/menu-denver-co/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-denver-co/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-denver-co/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-denver-co/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-denver-co/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-denver-co/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"/testing-1","featured_product_2":"/testing-2","featured_product_3":"/testing-3"},"contact":{"address":"970 Lincoln St<br />\r\nDenver, CO 80203","phone_number":"303-862-7485","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/4AxRySCHn3bumPfW7"},"brand_links":{"mischief_link":"/menu-denver-co/?dtche%5Bpath%5D=brands%2Fmischief","rolling_thunder_link":"/menu-denver-co/?dtche%5Bpath%5D=brands","nobo_link":"/menu-denver-co/?dtche%5Bpath%5D=brands%2Fnobo"}},"809":{"id":809,"title":"Edwardsburg, MI","slug":"edwardsburg-mi","permalink":"https://nobogoods.com/locations/edwardsburg-mi/","main_shop_link":"/menu-edwardsburg-mi/","category_links":{"flower_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-edwardsburg-mi/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"69411 M-62<br />\r\nEdwardsburg, MI 49112","phone_number":"269-635-6621","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/Tso7TVHirwRUAZbd9"},"brand_links":{"mischief_link":"/menu-edwardsburg-mi/?dtche%5Bpath%5D=brands%2Fmischief","rolling_thunder_link":"/menu-edwardsburg-mi/?dtche%5Bpath%5D=brands%2Frolling-thunder","nobo_link":"/menu-edwardsburg-mi/?dtche%5Bpath%5D=brands%2Fnobo"}},"817":{"id":817,"title":"Lakemoor, IL","slug":"lakemoor-il","permalink":"https://nobogoods.com/locations/lakemoor-il/","main_shop_link":"/menu-lakemoor-il/","category_links":{"flower_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-lakemoor-il/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"27500 IL-120<br />\r\nLakemoor, IL 60051","phone_number":"815-900-2990","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/v4QT6W6vYnDjLhBs5"},"brand_links":{"mischief_link":"/menu-lakemoor-il/?dtche%5Bpath%5D=brands","rolling_thunder_link":"/menu-lakemoor-il/?dtche%5Bpath%5D=brands","nobo_link":"/menu-lakemoor-il/?dtche%5Bpath%5D=brands%2Fnobo"}},"813":{"id":813,"title":"Muskegon, MI","slug":"muskegon-mi","permalink":"https://nobogoods.com/locations/muskegon-mi/","main_shop_link":"/menu-muskegon-mi/","category_links":{"flower_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-muskegon-mi/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"1401 E Apple Ave<br />\r\nMuskegon, MI 49442","phone_number":"231-383-8100","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/2sDo9SmVxAC7wNck8"},"brand_links":{"mischief_link":"/menu-muskegon-mi/?dtche%5Bpath%5D=brands%2Fmischief","rolling_thunder_link":"/menu-muskegon-mi/?dtche%5Bpath%5D=brands%2Frolling-thunder","nobo_link":"/menu-muskegon-mi/?dtche%5Bpath%5D=brands%2Fnobo"}},"1167":{"id":1167,"title":"NE Minneapolis, MN","slug":"northeast-minneapolis-mn","permalink":"https://nobogoods.com/locations/northeast-minneapolis-mn/","main_shop_link":"/ne-minneapolis-menu/","category_links":{"flower_link":"/ne-minneapolis-menu/?dtche%5Bcategory%5D=flower","pre-roll_link":"","edibles_link":"/ne-minneapolis-menu/?dtche%5Bcategory%5D=edibles","vaporizers_link":"","concentrates_link":"","accessories_link":"/ne-minneapolis-menu/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"501 1st Ave NE Ste 130, Minneapolis, MN 55413","phone_number":"763-283-8567","email":"[email protected]","hours":"Sun-Wed: 10am - 8pm / Thur-Sat: 10am - 10pm","directions":"https://maps.app.goo.gl/J61WtNu6zun4iZjg6"},"brand_links":{"mischief_link":"https://nobogoods.com/locations/northeast-minneapolis-mn/","rolling_thunder_link":"https://nobogoods.com/locations/northeast-minneapolis-mn/","nobo_link":"https://nobogoods.com/locations/northeast-minneapolis-mn/"}},"815":{"id":815,"title":"South Haven, MI","slug":"south-haven-mi","permalink":"https://nobogoods.com/locations/south-haven-mi/","main_shop_link":"/menu-south-haven-mi/","category_links":{"flower_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=flower","pre-roll_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=pre-rolls","edibles_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=edibles","vaporizers_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=vaporizers","concentrates_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=concentrates","accessories_link":"/menu-south-haven-mi/?dtche%5Bcategory%5D=accessories"},"featured_products":{"featured_product_1":"","featured_product_2":"","featured_product_3":""},"contact":{"address":"11637 M-140<br />\r\nSouth Haven, MI 49090","phone_number":"269-767-4561","email":"","hours":"Every Day - 9am to 9pm","directions":"https://maps.app.goo.gl/ePh4T5MsKEjYFnTCA"},"brand_links":{"mischief_link":"/menu-south-haven-mi/?dtche%5Bpath%5D=brands%2Fmischief","rolling_thunder_link":"/menu-south-haven-mi/?dtche%5Bpath%5D=brands%2Frolling-thunder","nobo_link":"/menu-south-haven-mi/?dtche%5Bpath%5D=brands%2Fnobo"}}} </script>
937 938 939 <!-- Behavior JS --> 940
940<script> 941 (function(){ 942 // Parse the JSON payload safely 943 (function initData(){ 944 try { 945 var el = document.getElementById('locations-links-json'); 946 window.LOCATIONS_LINKS = el ? JSON.parse(el.textContent || '{}') : {}; 947 } catch (e) { 948 console.error('Failed to parse LOCATIONS_LINKS JSON', e); 949 window.LOCATIONS_LINKS = {}; 950 } 951 })(); 952 953 var KEY = 'site_location_id'; 954 955 function $(sel, root){ return (root||document).querySelector(sel); } 956 function $all(sel, root){ return Array.prototype.slice.call((root||document).querySelectorAll(sel)); } 957 958 function getSelectedId() { 959 var sel = $('#locations-dropdown'); 960 if (sel && sel.value) return sel.value; 961 return localStorage.getItem(KEY) || ''; 962 } 963 function syncSelects(id) { 964 var main = $('#locations-dropdown'); 965 var modal = $('#locations-dropdown-modal'); // optional modal select 966 if (main && main.value !== id) main.value = id || ''; 967 if (modal && modal.value !== id) modal.value = id || ''; 968 } 969 function setSelectedId(id) { 970 if (!id) { localStorage.removeItem(KEY); }
971 else { localStorage.setItem(KEY, id); } 972 syncSelects(id || ''); 973 document.dispatchEvent(new CustomEvent('location:change', { detail: { id:id || '' } })); 974 } 975 976 // Helpers 977 function getPath(obj, path) { 978 if (!obj || !path) return ''; 979 var parts = String(path).split('.'); 980 var cur = obj; 981 for (var i=0;i<parts.length;i++){ 982 if (cur == null) return ''; 983 cur = cur[parts[i]]; 984 } 985 return (typeof cur === 'string') ? cur : ''; 986 } 987 function isAnchor(el) { return el && (el.tagName === 'A' || el.hasAttribute('href')); } 988 function escapeHTML(s){ return (s==null?'':String(s)).replace(/[&<>"']/g,function(m){return ({'&':'&','<':'<','>':'>','"':'"',"'":'''}[m]);}); } 989 990 // Collapse any combo of <br>, <br>, and newlines to a single <br> 991 function formatLinesSingleBr(s){ 992 if (!s) return ''; 993 var str = String(s) 994 .replace(/<\s*br\s*\/?\s*>/gi, '<br>') 995 .replace(/<\s*br\s*\/?>/gi, '\n') 996 .replace(/\r\n?/g, '\n'); 997 var lines = str.split('\n').map(function(t){ return t.trim(); }).filter(function(t){ return t !== ''; }); 998 return lines.map(escapeHTML).join('<br>'); 999 } 1000 1001 function telHref(s){ if(!s) return ''; var d = String(s).replace(/[^\d\+]/g,''); return d ? 'tel:'+d : ''; } 1002 function mailHref(s){ if(!s) return ''; return 'mailto:'+String(s).trim(); } 1003 1004 // Track a click that needs navigation after location selection 1005 var pendingNav = null; 1006 1007 // Resolve a URL from data + path with same fallbacks used in applyLinks() 1008 function resolveUrlForPath(data, path) { 1009 if (!data || !path) return ''; 1010 var url = getPath(data, path) || ''; 1011 1012 // Fallbacks (match applyLinks behavior) 1013 if (!url) { 1014 if (path.indexOf('category_links.') === 0) { 1015 url = data.main_shop_link || ''; 1016 } else if (path.indexOf('brand_links.') === 0) { 1017 url = data.main_shop_link || ''; 1018 } 1019 } 1020 return url || ''; 1021 } 1022 1023 // Detect if current page is a /menu-.../ page, and extract its slug 1024 function isOnMenuPage() { 1025 return /\/menu-[^\/]+\/?$/.test(window.location.pathname); 1026 } 1027 function getCurrentMenuSlug() { 1028 var m = window.location.pathname.match(/\/menu-([^\/]+)\/?$/); 1029 return m ? m[1] : ''; 1030 } 1031 function buildMenuUrlForSlug(slug) { 1032 var base = (window.NB_HOME_URL || '/'); 1033 if (!/\/$/.test(base)) base += '/'; 1034 return base + 'menu-' + slug.replace(/^\/+|\/+$/g,'') + '/'; 1035 } 1036 1037 // If there's a pending navigation and a selected location, go there 1038 function maybeNavigatePending() { 1039 if (!pendingNav) return false; // return whether we navigated 1040 var id = getSelectedId(); 1041 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1042 var url = resolveUrlForPath(data, pendingNav.path); 1043 1044 if (url) { 1045 if (pendingNav.target && pendingNav.target.toLowerCase() === '_blank') { 1046 window.open(url, '_blank', 'noopener'); 1047 } else { 1048 window.location.href = url; 1049 } 1050 pendingNav = null; 1051 return true; 1052 } 1053 pendingNav = null; 1054 return false; 1055 } 1056 1057 // If on /menu-.../ and no pending gated click, redirect to the selected location's menu 1058 function maybeRedirectMenuPage() { 1059 if (!isOnMenuPage()) return; 1060 var id = getSelectedId(); 1061 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1062 if (!data || !data.slug) return; 1063 1064 var currentSlug = getCurrentMenuSlug(); 1065 if (currentSlug && currentSlug === data.slug) return; // already correct page 1066 1067 var target = buildMenuUrlForSlug(data.slug); 1068 window.location.href = target; 1069 } 1070 1071 // Apply URLs/text to elements with data-attributes 1072 function applyLinks() { 1073 var id = getSelectedId(); 1074 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1075 1076 // HREF bindings
1077 $all('[data-location-link]').forEach(function(el){ 1078 var path = el.getAttribute('data-location-link'); // e.g. "brand_links.mischief_link" 1079 var url = data ? getPath(data, path) : ''; 1080 1081 // Fallbacks 1082 if (!url && data && path) { 1083 if (path.indexOf('category_links.') === 0) { 1084 url = data.main_shop_link || ''; 1085 } else if (path.indexOf('brand_links.') === 0) { 1086 url = data.main_shop_link || ''; 1087 } 1088 } 1089 1090 if (url) { 1091 if (isAnchor(el)) el.setAttribute('href', url); 1092 el.dataset.hasLink = '1'; 1093 el.classList.add('location-linked'); 1094 } else { 1095 if (isAnchor(el)) el.setAttribute('href', ''); 1096 el.dataset.hasLink = '0'; 1097 el.classList.remove('location-linked'); 1098 } 1099 }); 1100 1101 // HTML bindings 1102 $all('[data-location-html]').forEach(function(el){ 1103 if (!data) return; 1104 var path = el.getAttribute('data-location-html'); 1105 var val = getPath(data, path) || ''; 1106 if (val !== '') el.innerHTML = val; 1107 }); 1108 } 1109 1110 // Renders any .location-info cards in the DOM 1111 function renderLocationInfoAll() { 1112 var id = getSelectedId(); 1113 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1114 var contact = data && data.contact ? data.contact : null; 1115 1116 $all('.location-info').forEach(function(box){ 1117 if (!data || !contact) { 1118 box.innerHTML = ''; 1119 box.setAttribute('data-empty','1'); 1120 return; 1121 } 1122 var phoneHref = telHref(contact.phone_number); 1123 var emailHref = mailHref(contact.email); 1124 1125 box.innerHTML = '' + 1126 '<div class="locations-card">' + 1127 '<div class="locations-card__body">' + 1128 '<h4 class="locations-card__name">' + 1129 '<a href="'+ escapeHTML(data.permalink || '') +'">' + escapeHTML(data.title || '') + '</a>' + 1130 '</h4>' + 1131 1132 (contact.address ? ( 1133 '<div class="locations-card__address"><p>' + formatLinesSingleBr(contact.address) + '</p></div>' 1134 ) : '') + 1135 1136 '<div class="locations-card__meta">' + 1137 1138 (contact.hours ? ( 1139 '<div class="locations-card__hours">' + 1140 '<strong>Hours: </strong>' + 1141 '<span>' + formatLinesSingleBr(contact.hours) + '</span>' + 1142 '</div>' 1143 ) : '') + 1144 1145 (contact.phone_number ? ( 1146 '<div class="locations-card__phoneRow">' + 1147 '<strong>Phone: </strong>' + 1148 (phoneHref 1149 ? '<a class="locations-card__phone" href="'+ phoneHref +'">' + escapeHTML(contact.phone_number) + '</a>' 1150 : '<span>' + escapeHTML(contact.phone_number) + '</span>') + 1151 '</div>' 1152 ) : '') + 1153 1154 (contact.email ? ( 1155 '<div class="locations-card__emailRow">' + 1156 '<strong>Email: </strong>' + 1157 (emailHref 1158 ? '<a class="locations-card__email" href="'+ escapeHTML(emailHref) +'">' + escapeHTML(contact.email) + '</a>' 1159 : '<span>' + escapeHTML(contact.email) + '</span>') + 1160 '</div>' 1161 ) : '') + 1162 1163 '</div>' + 1164 1165 '<div class="locations-card__actions">' + 1166 (contact.directions ? '<a class="button secondary" target="_blank" rel="noopener" href="'+ escapeHTML(contact.directions) +'">Directions</a>' : '') + 1167 '</div>' + 1168 '</div>' + 1169 '</div>'; 1170 1171 box.removeAttribute('data-empty'); 1172 }); 1173 } 1174 1175 // Hours pill next to the selector (collapsed when empty)
1176 function renderSelectedHours(){ 1177 var box = document.getElementById('selected-hours'); 1178 if (!box) return; 1179 1180 var id = getSelectedId(); 1181 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1182 var hours = data && data.contact ? (data.contact.hours || '') : ''; 1183 1184 if (hours){ 1185 box.innerHTML = '<span class="sh-content"><span>' + 1186 formatLinesSingleBr(hours) + 1187 '</span></span>'; 1188 1189 if (typeof syncSelectedHoursHeight === 'function') syncSelectedHoursHeight(); 1190 box.classList.remove('is-collapsed'); 1191 void box.offsetWidth; // reflow so transition fires 1192 box.classList.add('is-open'); 1193 } else { 1194 box.classList.remove('is-open'); 1195 box.classList.add('is-collapsed'); 1196 box.innerHTML = ''; // keep only the right tab visible via CSS 1197 } 1198 } 1199 1200 // Show/hide .contact-btn depending on whether a location is selected 1201 function updateContactButtonsVisibility() { 1202 var hasLocation = !!getSelectedId(); 1203 1204 $all('.contact-btn').forEach(function(btn){ 1205 // If a location is selected, hide the button 1206 // Otherwise, revert to whatever CSS normally does 1207 btn.style.display = hasLocation ? 'none' : ''; 1208 }); 1209 } 1210 1211 // Custom menu built from the hidden <select> 1212 function initCustomLocationsMenu(){ 1213 var wrapper = document.querySelector('.dropdown-wrapper.js-locations'); 1214 var sel = document.getElementById('locations-dropdown'); 1215 var trig = document.getElementById('locations-trigger'); 1216 var menu = document.getElementById('locations-menu'); 1217 if (!wrapper || !sel || !trig || !menu || menu.dataset.built === '1') return; 1218 1219 var frag = document.createDocumentFragment(); 1220 Array.prototype.forEach.call(sel.options, function(opt){ 1221 if (!opt.value) return; 1222 var btn = document.createElement('button'); 1223 btn.type = 'button'; 1224 btn.className = 'option'; 1225 btn.setAttribute('role','option'); 1226 btn.dataset.value = opt.value; 1227 btn.textContent = opt.textContent.toUpperCase(); 1228 1229 btn.addEventListener('click', function(){ 1230 sel.value = opt.value; 1231 sel.dispatchEvent(new Event('change', {bubbles:true})); 1232 var lab = trig.querySelector('.label'); if (lab) lab.textContent = opt.textContent.toUpperCase();
1233 setActiveInMenu(opt.value); 1234 closeLocationsMenu(); 1235 }); 1236 1237 frag.appendChild(btn); 1238 }); 1239 menu.appendChild(frag); 1240 menu.dataset.built = '1'; 1241 1242 syncTriggerLabelFromSelect(); 1243 setActiveInMenu(sel.value || ''); 1244 1245 trig.addEventListener('click', function(){ 1246 if (wrapper.classList.contains('open')) closeLocationsMenu(); 1247 else openLocationsMenu(); 1248 }); 1249 document.addEventListener('click', function(e){ 1250 if (!wrapper.contains(e.target)) closeLocationsMenu(); 1251 }); 1252 document.addEventListener('keydown', function(e){ 1253 if (e.key === 'Escape') closeLocationsMenu(); 1254 }); 1255 1256 function openLocationsMenu(){ 1257 wrapper.classList.add('open'); 1258 trig.setAttribute('aria-expanded','true'); 1259 menu.hidden = false; 1260 } 1261 function closeLocationsMenu(){ 1262 wrapper.classList.remove('open'); 1263 trig.setAttribute('aria-expanded','false'); 1264 menu.hidden = true; 1265 } 1266 function setActiveInMenu(val){ 1267 menu.querySelectorAll('.option').forEach(function(b){ 1268 b.classList.toggle('is-active', b.dataset.value === val); 1269 }); 1270 } 1271 function syncTriggerLabelFromSelect(){ 1272 var lab = trig.querySelector('.label'); 1273 if (!lab) return; 1274 var opt = sel.options[sel.selectedIndex]; 1275 lab.textContent = (opt && opt.value) ? opt.textContent.toUpperCase() : (lab.dataset.default || 'LOCATION'); 1276 } 1277 1278 // Sync when selection is restored by other code/localStorage 1279 document.addEventListener('location:change', function(){ 1280 syncTriggerLabelFromSelect();
1281 setActiveInMenu(sel.value || ''); 1282 }); 1283 } 1284 1285 // Height sync (make hours pill match trigger height) 1286 function syncSelectedHoursHeight(){ 1287 var base = document.getElementById('locations-trigger') || document.getElementById('locations-dropdown'); 1288 var box = document.getElementById('selected-hours'); 1289 if (!base || !box) return; 1290 var h = base.offsetHeight; 1291 if (h) box.style.height = h + 'px'; 1292 } 1293 function observeSelectHeight(){ 1294 var base = document.getElementById('locations-trigger'); 1295 if (!base) return; 1296 if ('ResizeObserver' in window) { 1297 var ro = new ResizeObserver(syncSelectedHoursHeight); 1298 ro.observe(base); 1299 } else { 1300 window.addEventListener('resize', syncSelectedHoursHeight); 1301 } 1302 if (document.fonts && document.fonts.ready) { 1303 document.fonts.ready.then(syncSelectedHoursHeight).catch(function(){}); 1304 } 1305 } 1306 1307 // --- Require-location gate for links ------------------------------- 1308 function showLocationPrompt() { 1309 // Prefer modal if present 1310 var modal = document.getElementById('location-needed-modal'); 1311 if (modal) { 1312 modal.hidden = false; 1313 modal.setAttribute('aria-hidden','false'); 1314 // Try to focus a useful control 1315 var focus = modal.querySelector('#locations-dropdown-modal, [data-close], button, [href], input, select, textarea'); 1316 if (focus) focus.focus(); 1317 return; 1318 } 1319 // Fallback: open the in-header custom menu 1320 var wrapper = document.querySelector('.dropdown-wrapper.js-locations'); 1321 var trig = document.getElementById('locations-trigger'); 1322 if (wrapper && trig && !wrapper.classList.contains('open')) { 1323 trig.click(); // toggles the menu open 1324 } 1325 } 1326 1327 // Intercept clicks on any element that requires a location but has no link yet 1328 document.addEventListener('click', function(e){ 1329 var a = e.target.closest('[data-requires-location]'); 1330 if (!a) return; 1331 1332 // Only gate when no link has been applied yet 1333 if (a.dataset.hasLink !== '1') { 1334 e.preventDefault(); 1335 e.stopPropagation(); 1336 1337 // Remember what the user tried to open so we can go there after selection 1338 pendingNav = { 1339 path: a.getAttribute('data-location-link') || '', // e.g. "brand_links.mischief_link" or "main_shop_link" 1340 target: a.getAttribute('target') || '' 1341 }; 1342 1343 showLocationPrompt(); 1344 } 1345 }); 1346 1347 // (Optional) keyboard activation support for Enter/Space on non-anchor elements 1348 document.addEventListener('keydown', function(e){ 1349 if (e.key !== 'Enter' && e.key !== ' ') return; 1350 var el = document.activeElement; 1351 if (!el || !el.matches('[data-requires-location]')) return; 1352 if (el.dataset.hasLink !== '1') { 1353 e.preventDefault(); 1354 1355 // Also capture pending nav for keyboard-triggered activations 1356 pendingNav = { 1357 path: el.getAttribute('data-location-link') || '', 1358 target: el.getAttribute('target') || '' 1359 }; 1360 1361 showLocationPrompt(); 1362 } 1363 }); 1364 1365 // --- NEW: when clicking "Shop Now" on a single-location page, store that location --- 1366 document.addEventListener('click', function(e){ 1367 var btn = e.target.closest('.js-location-shop[data-location-id]'); 1368 if (!btn) return; 1369 1370 var id = btn.getAttribute('data-location-id'); 1371 if (!id) return; 1372 1373 setSelectedId(id); 1374 }); 1375 1376 // When the location changes, also update .contact-btn visibility 1377 document.addEventListener('location:change', function () { 1378 updateContactButtonsVisibility(); 1379 }); 1380 1381 // EVENTS 1382 1383 // Hidden select change (from menu click or direct) 1384 document.addEventListener('change', function(e){ 1385 var main = document.getElementById('locations-dropdown'); 1386 if (e.target === main) { 1387 setSelectedId(main.value || ''); 1388 applyLinks(); 1389 renderLocationInfoAll(); 1390 renderSelectedHours(); 1391 1392 // 1) If user had clicked something that needed a location, go there now 1393 var didNavigate = maybeNavigatePending(); 1394 1395 // 2) Otherwise, if we're on a /menu-.../ page, redirect to the selected location's menu 1396 if (!didNavigate) { 1397 maybeRedirectMenuPage(); 1398 } 1399 } 1400 }); 1401 1402 // Optional modal select change support (if you use one) 1403 document.addEventListener('change', function(e){ 1404 var modalSel = document.getElementById('locations-dropdown-modal'); 1405 if (e.target === modalSel) { 1406 setSelectedId(modalSel.value || ''); 1407 applyLinks(); 1408 renderLocationInfoAll(); 1409 renderSelectedHours(); 1410 1411 // Close modal if present 1412 var modal = document.getElementById('location-needed-modal'); 1413 if (modal) { modal.hidden = true; modal.setAttribute('aria-hidden','true'); } 1414 1415 // 1) Attempt pending redirect first 1416 var didNavigate = maybeNavigatePending(); 1417 1418 // 2) Otherwise, if we're on a /menu-.../ page, redirect to the selected location's menu 1419 if (!didNavigate) { 1420 maybeRedirectMenuPage(); 1421 } 1422 } 1423 }); 1424 1425 // INIT
1426 function init() { 1427 syncSelects(getSelectedId() || ''); 1428 applyLinks(); 1429 renderLocationInfoAll(); 1430 renderSelectedHours(); 1431 updateContactButtonsVisibility(); // ensure correct initial state 1432 1433 initCustomLocationsMenu(); 1434 syncSelectedHoursHeight(); 1435 observeSelectHeight(); 1436 } 1437 if (document.readyState !== 'loading') init(); 1438 else document.addEventListener('DOMContentLoaded', init); 1439 1440 // Optional debug hooks 1441 window.applyLocationLinks = applyLinks; 1442 window.renderLocationInfoAll = renderLocationInfoAll; 1443 window.renderSelectedHours = renderSelectedHours; 1444 window.setSelectedLocationId = setSelectedId; 1445 })(); 1446 </script>
1446 1447 1448 <div class="popup-out"> 1449 <div class="age-verification-popup"> 1450 <div class="special-oval-box"> 1451 <div class="special-oval-inside"> 1452 <div class="title-popup"> 1453 <h2>You must be 21+ to visit our website.</h2> 1454 </div> 1455 <div class="explanation-popup"> 1456 <p>Verify your age to shop local.</p> 1457 </div> 1458 <div class="buttons-popup"> 1459 <a href="javascript:;" class="button go_on">I am 21+</a> 1460 <a href="javascript:;" class="button secondary go_out">I am under 21</a> 1461 </div> 1462 </div> 1463 </div> 1464 </div> 1465 </div> 1466 1467<div id="mobileMenu"> 1468 <div class="menu_mobile_container"> 1469<div class="menu-primary-nav-container"><ul id="primary-menu" class="menu main_menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1211"><a href="#" class="menu-link" data-requires-location="1" data-location-link="main_shop_link" data-has-link="0">Menu</a></li> 1470<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-787"><a href="/rewards/">Rewards</a></li> 1471<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-785"><a href="/brands/">Our Brands</a></li> 1472<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-786"><a href="#">Learn</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 1473<ul class="sub-menu"> 1474 <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1023"><a href="/blog/">Blog</a></li> 1475 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1185"><a href="https://nobogoods.com/faqs/">FAQs</a></li> 1476</ul> 1477</li> 1478<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-739"><a href="https://nobogoods.com/about/">About</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 1479<ul class="sub-menu"> 1480 <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1020"><a href="https://nobogoods.com/contact/">Contact</a></li> 1481 <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1021"><a target="_blank" href="https://www.growray.com/">GrowRay</a></li> 1482</ul> 1483</li> 1484<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-1024"><a href="/locations/">Locations</a><span class='mobile_drop'> <svg class='drop_arrow' xmlns='http://www.w3.org/2000/svg' xml:space='preserve' width='512' height='298' shape-rendering='geometricPrecision' text-rendering='geometricPrecision' image-rendering='optimizeQuality' fill-rule='evenodd' clip-rule='evenodd' viewBox='0 0 512 298.04'><path fill-rule='nonzero' d='M12.08 70.78c-16.17-16.24-16.09-42.54.15-58.7 16.25-16.17 42.54-16.09 58.71.15L256 197.76 441.06 12.23c16.17-16.24 42.46-16.32 58.71-.15 16.24 16.16 16.32 42.46.15 58.7L285.27 285.96c-16.24 16.17-42.54 16.09-58.7-.15L12.08 70.78z'/></svg></span> 1485<ul class="sub-menu"> 1486 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1693"><a href="https://nobogoods.com/locations/benton-harbor-mi/">Benton Harbor, MI</a></li> 1487 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1692"><a href="https://nobogoods.com/locations/edwardsburg-mi/">Edwardsburg, MI</a></li> 1488 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1690"><a href="https://nobogoods.com/locations/muskegon-mi/">Muskegon, MI</a></li> 1489 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1689"><a href="https://nobogoods.com/locations/south-haven-mi/">South Haven, MI</a></li> 1490 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1687"><a href="https://nobogoods.com/locations/denver-co/">Denver, CO</a></li> 1491 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1688"><a href="https://nobogoods.com/locations/lakemoor-il/">Lakemoor, IL</a></li> 1492 <li class="menu-item menu-item-type-post_type menu-item-object-location menu-item-1874"><a href="https://nobogoods.com/locations/northeast-minneapolis-mn/">NE Minneapolis, MN</a></li> 1493</ul> 1494</li> 1495</ul></div> </div> 1496</div>
1496<script defer async src='https://cdn.trustindex.io/loader-cert.js?7186009583245804124651c68a3'></script>
1496 1497 1498<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 1498-1499
1498 1499<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1499GTM-WPD7GXFF
vendor: 85 bytes, lines 1499-1500
1499" 1500height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1501<!-- End Google Tag Manager (noscript) --> 1502 1503 1504<!-- Location required modal (now with dropdown) --> 1505<div id="location-needed-modal" class="location-modal" hidden aria-hidden="true" role="dialog" aria-modal="true" aria-labelledby="location-modal-title"> 1506 <div class="location-modal__dialog" role="document"> 1507 <button type="button" class="location-modal__close" data-close aria-label="Close">Ã</button> 1508 <h3 id="location-modal-title">Find your <span>NOBO</span></h3> 1509 <p>In order to best serve you, please select your nearest NOBO location.</p> 1510 1511 <label for="locations-dropdown-modal" class="sr-only">Location</label> 1512 <select id="locations-dropdown-modal" class="location-select"> 1513 <option value="">Select a locationâ¦</option> 1514 <!-- JS will populate options --> 1515 </select> 1516 1517 <div class="location-modal__hint">Your choice is remembered for next time.</div> 1518 1519 <div class="location-modal__actions"> 1520 <a href="#" class="button" data-close>Close</a> 1521 </div> 1522 </div> 1523</div> 1524 1525<style> 1526.location-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.5);z-index:10000} 1527.location-modal[hidden]{display:none} 1528#location-modal-title{margin-bottom: 10px; } 1529#location-modal-title span{margin-bottom: 10px; color: #0d6797; font-size: 1.8rem;} 1530.location-modal__dialog p{margin-bottom: 10px;} 1531.location-modal__dialog{position:relative;background:#fff;max-width:480px;width:92%;padding:22px 22px 16px;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.2)} 1532.location-modal__close{position:absolute;right:12px;top:8px;background:transparent;border:0;font-size:26px;line-height:1;cursor:pointer} 1533.location-select{width:100%;margin:10px 0 6px;padding:10px 12px;font-size:16px;border:1px solid #ddd;border-radius:8px} 1534.location-modal__hint{font-size:12px;color:#666;margin-bottom:10px} 1535.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,1px,1px);white-space:nowrap;border:0} 1536</style> 1537
1538<script> 1539(function(){ 1540 // === If you already have the earlier helpers in place (LOCATIONS_LINKS, setSelectedId, applyLinks, etc.), 1541 // you can keep them. The code below is a drop-in that adds modal support and syncs both dropdowns. === 1542 1543 // Ensure the global data map exists (should be printed in wp_footer from PHP) 1544 window.LOCATIONS_LINKS = window.LOCATIONS_LINKS || {}; 1545 1546 var KEY = 'site_location_id'; 1547 1548 function getSelectedId() { 1549 var sel = document.getElementById('locations-dropdown'); 1550 if (sel && sel.value) return sel.value; 1551 return localStorage.getItem(KEY) || ''; 1552 } 1553 function syncSelects(id) { 1554 var main = document.getElementById('locations-dropdown'); 1555 var modal = document.getElementById('locations-dropdown-modal'); 1556 if (main && main.value !== id) main.value = id || ''; 1557 if (modal && modal.value !== id) modal.value = id || ''; 1558 } 1559 function setSelectedId(id) { 1560 if (!id) { localStorage.removeItem(KEY); } 1561 else { localStorage.setItem(KEY, id); } 1562 syncSelects(id || ''); 1563 document.dispatchEvent(new CustomEvent('location:change', { detail: { id:id || '' } })); 1564 } 1565 1566 // Get nested value like "category_links.pre-roll_link" 1567 function getPath(obj, path) { 1568 if (!obj || !path) return ''; 1569 var parts = String(path).split('.'); 1570 var cur = obj; 1571 for (var i=0;i<parts.length;i++){ 1572 if (cur == null) return ''; 1573 cur = cur[parts[i]]; 1574 } 1575 return (typeof cur === 'string') ? cur : ''; 1576 } 1577 1578 function applyLinks() { 1579 var id = getSelectedId(); 1580 var data = window.LOCATIONS_LINKS && window.LOCATIONS_LINKS[id]; 1581 var nodes = document.querySelectorAll('[data-location-link]'); 1582 nodes.forEach(function(el){ 1583 var path = el.getAttribute('data-location-link'); // e.g. "main_shop_link" or "category_links.edibles_link" 1584 var url = data ? getPath(data, path) : ''; 1585 if (!url && data && path.indexOf('category_links.') === 0) { 1586 url = data.main_shop_link || ''; 1587 } 1588 if (url) { 1589 if (el.tagName === 'A' || el.hasAttribute('href')) el.setAttribute('href', url); 1590 el.dataset.hasLink = '1'; 1591 el.classList.add('location-linked'); 1592 } else { 1593 if (el.tagName === 'A' || el.hasAttribute('href')) el.setAttribute('href', ''); 1594 el.dataset.hasLink = '0'; 1595 el.classList.remove('location-linked'); 1596 } 1597 var textKey = el.getAttribute('data-location-text'); 1598 if (textKey && data && data[textKey]) el.textContent = data[textKey]; 1599 }); 1600 } 1601 1602 // Build modal select options from main select or from LOCATIONS_LINKS 1603 function buildModalSelect() { 1604 var modalSel = document.getElementById('locations-dropdown-modal'); 1605 if (!modalSel) return; 1606 1607 // Only build once (if it only has the placeholder) 1608 if (modalSel.options.length > 1) return; 1609 1610 var main = document.getElementById('locations-dropdown'); 1611 if (main && main.options.length > 1) { 1612 // Clone options from main 1613 for (var i=0; i<main.options.length; i++) { 1614 var opt = main.options[i]; 1615 if (!opt.value) continue; // skip placeholder 1616 var o = document.createElement('option'); 1617 o.value = opt.value; 1618 o.textContent = opt.textContent; 1619 modalSel.appendChild(o); 1620 } 1621 } else { 1622 // Build from LOCATIONS_LINKS 1623 var map = window.LOCATIONS_LINKS || {}; 1624 var ids = Object.keys(map).sort(function(a,b){ 1625 // sort by title 1626 var ta = (map[a].title||'').toLowerCase(); 1627 var tb = (map[b].title||'').toLowerCase(); 1628 if (ta < tb) return -1; 1629 if (ta > tb) return 1; 1630 return 0; 1631 }); 1632 ids.forEach(function(id){ 1633 var o = document.createElement('option'); 1634 o.value = id; 1635 o.textContent = map[id].title || ('Location ' + id); 1636 modalSel.appendChild(o); 1637 }); 1638 } 1639 } 1640 1641 function openModal() { 1642 var m = document.getElementById('location-needed-modal'); 1643 if (!m) return alert('Please select a location first.'); 1644 buildModalSelect(); 1645 // preselect current id 1646 syncSelects( getSelectedId() || '' ); 1647 m.hidden = false; 1648 m.setAttribute('aria-hidden', 'false'); 1649 var sel = document.getElementById('locations-dropdown-modal'); 1650 if (sel) sel.focus(); 1651 } 1652 function closeModal() { 1653 var m = document.getElementById('location-needed-modal'); 1654 if (!m) return; 1655 m.hidden = true; 1656 m.setAttribute('aria-hidden', 'true'); 1657 } 1658 1659 // Events 1660 1661 // 1) Main dropdown (page header/footer one) 1662 document.addEventListener('change', function(e){ 1663 var main = document.getElementById('locations-dropdown'); 1664 if (e.target === main) { 1665 setSelectedId(main.value || ''); 1666 applyLinks(); 1667 } 1668 }, {passive:true}); 1669 1670 // 2) Modal dropdown 1671 document.addEventListener('change', function(e){ 1672 var modalSel = document.getElementById('locations-dropdown-modal'); 1673 if (e.target === modalSel) { 1674 setSelectedId(modalSel.value || ''); 1675 applyLinks(); 1676 closeModal(); 1677 } 1678 }, {passive:true}); 1679 1680 // 3) Intercept clicks on elements that require a location 1681 document.addEventListener('click', function(e){ 1682 // Close modal if clicking overlay or [data-close] 1683 if (e.target.matches('#location-needed-modal [data-close], #location-needed-modal')) { 1684 e.preventDefault(); 1685 closeModal(); 1686 return; 1687 } 1688 var a = e.target.closest('[data-requires-location]'); 1689 if (!a) return; 1690 if (a.dataset.hasLink !== '1') { 1691 e.preventDefault(); 1692 openModal(); 1693 } 1694 }); 1695 1696 document.addEventListener('keydown', function(e){ 1697 if (e.key === 'Escape') closeModal(); 1698 }); 1699 1700 // Init on load: sync any saved selection and apply links
1701 function init() { 1702 syncSelects( getSelectedId() || '' ); 1703 applyLinks(); 1704 } 1705 if (document.readyState !== 'loading') init(); 1706 else document.addEventListener('DOMContentLoaded', init); 1707 1708 // Expose for debugging if needed 1709 window.applyLocationLinks = applyLinks; 1710})(); 1711</script>
1711 1712 1713 1714 1715<!-- Fix for overflow on Mobile when menu is open ---> 1716 1717
1717<script> 1718 const mobileMenu = document.getElementById('mobileMenu'); 1719 1720 const observer = new MutationObserver(() => { 1721 if (mobileMenu.classList.contains('active')) { 1722 document.body.style.overflow = 'hidden'; 1723 } else { 1724 document.body.style.overflow = ''; 1725 } 1726 }); 1727 1728 observer.observe(mobileMenu, { attributes: true, attributeFilter: ['class'] }); 1729 </script>
1729 1730 1731
1731<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"cf3a12e877e647bc8bad5eb5356e59ee","r":1,"spa":2}' crossorigin="anonymous"></script>
1731 1732</body> 1733</html> 1734 1735<!-- Cache served by breeze CACHE (Desktop) - Last modified: Wed, 07 Oct 2026 21:07:58 GMT -->
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.