<div class="overlay js-overlay"></div>
<div class="header-container js-header-container">
<div class="header-ad">
<div class="ad-container">
<a href="#">
<picture>
<source srcset="/assets/images/ads/728x90.jpg" media="(min-width: 769px)">
<img src="/assets/images/ads/300x50.jpg" alt="Ad for Peter Pan at National Theatre Live with young man floating in the sky" />
</picture>
</a>
</div>
</div>
<header class="header contain js-header">
<div class="header-main">
<div class="header-btns">
<button class="btn header-btn-menu-open js-header-btn-menu-open">
<svg class="icon icon--menu">
<use xlink:href="/assets/icons/sprite-sheet.svg#menu"></use>
</svg>
<span class="visually-hidden">Menu</span>
</button>
<button class="btn header-btn-menu-close js-header-btn-menu-close">
<svg class="icon icon--close">
<use xlink:href="/assets/icons/sprite-sheet.svg#close"></use>
</svg>
<span class="visually-hidden">Close Menu</span>
</button>
</div>
<div class="header-logo">
<a href="#">
<img src="/assets/images/logos/theatermania-notag-white.svg" alt="Theatermania Logo" />
</a>
</div>
<div class="header-search-container js-header-search">
<div class="header-btns">
<button class="btn header-btn-search-open js-header-btn-search-open">
<svg class="icon icon--search">
<use xlink:href="/assets/icons/sprite-sheet.svg#search"></use>
</svg>
<span class="visually-hidden">Search</span>
</button>
<button class="btn header-btn-search-close js-header-btn-search-close">
<svg class="icon icon--close">
<use xlink:href="/assets/icons/sprite-sheet.svg#close"></use>
</svg>
<span class="visually-hidden">Close Search</span>
</button>
</div>
<div class="header-search">
<div class="search-block">
<form class="search-block-form">
<label for="search" class="label visually-hidden">Search</label>
<input class="input search-block-form__input js-input-search" name="search" id="search" type="search" placeholder="Search city, actor or keyword..." />
<svg class="icon icon--search">
<use xlink:href="/assets/icons/sprite-sheet.svg#search"></use>
</svg>
</form>
</div>
</div>
</div>
</div>
<div class="header-nav-container js-header-nav">
<div class="header-nav-items">
<nav class="header-nav">
<ul class="header-nav__list js-header-nav-list">
<li class="nav-list-item">
<button class="btn nav-link-item js-nav-secondary">
Tickets & Discounts
<svg class="icon icon--arrow-bottom">
<use xlink:href="/assets/icons/sprite-sheet.svg#arrow-bottom"></use>
</svg>
</button>
<ul class="header-nav__list-secondary">
<li class="header-nav-close">
<button class="btn btn--close btn--close--submenu js-btn-close--submenu">
<svg class="icon icon--close">
<use xlink:href="/assets/icons/sprite-sheet.svg#close"></use>
</svg>
<span class="visually-hidden">Close Menu</span>
</button>
</li>
<li class="sublist sublist--main">
<div class="section-title">
<svg class="icon icon--star">
<use xlink:href="/assets/icons/sprite-sheet.svg#star"></use>
</svg>
<h2 class="title-highlight">New York City</h2>
</div>
<ul class="header-nav__sublist">
<li class="nav-list-item">
<a href="#" class="nav-link-item">Broadway</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Broadway Discounts</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Off-Broadway</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">All New York City</a>
</li>
</ul>
</li>
<li class="sublist">
<div class="section-title">
<svg class="icon icon--map-pin">
<use xlink:href="/assets/icons/sprite-sheet.svg#map-pin"></use>
</svg>
<h2 class="title-highlight">Other Cities</h2>
</div>
<ul class="header-nav__sublist">
<li class="nav-list-item">
<a href="#" class="nav-link-item">Boston</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Chicago</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Dallas</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Los Angeles</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Miami</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Minneapolis</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Philadelphia</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">San Diego</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">San Francisco</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Seattle</a>
</li>
<li class="nav-list-item">
<a href="#" class="nav-link-item">Washington D.C.</a>
</li>
</ul>
<a href="#" class="btn btn--base btn--primary btn--submenu">See All Cities</a>
</li>
</ul>
</li>
<li class="nav-list-item">
<a href="#nav-link" class="nav-link-item">News & Reviews</a>
</li>
<li class="nav-list-item">
<button class="btn nav-link-item js-nav-secondary">
Theater Clubs
<svg class="icon icon--arrow-bottom">
<use xlink:href="/assets/icons/sprite-sheet.svg#arrow-bottom"></use>
</svg>
</button>
<ul class="header-nav__list-secondary">
<li class="header-nav-close">
<button class="btn btn--close btn--close--submenu js-btn-close--submenu">
<svg class="icon icon--close">
<use xlink:href="/assets/icons/sprite-sheet.svg#close"></use>
</svg>
<span class="visually-hidden">Close Menu</span>
</button>
</li>
<li class="sublist-title">
<div class="section-title">
<svg class="icon icon--tickets">
<use xlink:href="/assets/icons/sprite-sheet.svg#tickets"></use>
</svg>
<h2 class="title-highlight">Complimentary and Deeply Discounted Shows</h2>
</div>
<span class="sublist-copy">Broadway, Off-Broadway, Concerts, Sports, Movie Screenings, Comedy, Dance and much more.</span>
</li>
<li class="nav-list-item nav-list-item--clubs">
<a href="#">
<div class="nav-image-container">
<picture>
<source srcset="/assets/images/nav/newyorkClub.jpg" media="(min-width: 768px)">
<img srcset="/assets/images/nav/newyorkClubSmall.jpg" class="nav-image" alt="New York City skyline at dusk" />
</picture>
<span class="nav-image-link">New York</span>
</div>
</a>
</li>
<li class="nav-list-item nav-list-item--clubs">
<a href="#">
<div class="nav-image-container">
<picture>
<source srcset="/assets/images/nav/bostonClub.jpg" media="(min-width: 768px)">
<img srcset="/assets/images/nav/bostonClubSmall.jpg" class="nav-image" alt="Boston skyline at dusk near waterfront" />
</picture>
<span class="nav-image-link">Boston</span>
</div>
</a>
</li>
<li class="nav-list-item nav-list-item--clubs">
<a href="#">
<div class="nav-image-container">
<picture>
<source srcset="/assets/images/nav/londonClub.jpg" media="(min-width: 768px)">
<img srcset="/assets/images/nav/londonClubSmall.jpg" class="nav-image" alt="London skyline at night with Big Ben" />
</picture>
<span class="nav-image-link">London</span>
</div>
</a>
</li>
</ul>
</li>
<li class="nav-list-item">
<button class="btn nav-link-item js-nav-secondary">
Newsletter
<svg class="icon icon--arrow-bottom">
<use xlink:href="/assets/icons/sprite-sheet.svg#arrow-bottom"></use>
</svg>
</button>
<ul class="header-nav__list-secondary header-nav__list-secondary--newsletter">
<li class="header-nav-close">
<button class="btn btn--close btn--close--submenu js-btn-close--submenu">
<svg class="icon icon--close">
<use xlink:href="/assets/icons/sprite-sheet.svg#close"></use>
</svg>
<span class="visually-hidden">Close Menu</span>
</button>
</li>
<li class="sublist-title">
<div class="section-title">
<svg class="icon icon--email">
<use xlink:href="/assets/icons/sprite-sheet.svg#email"></use>
</svg>
<h2 class="title-highlight">Discount Ticket Email Offers</h2>
</div>
</li>
<li class="nav-list-item nav-list-item--newsletter">
<div class="nav-newsletter">
<p class="newsletter-copy js-newsletter-copy">Discount email offers for a wide variety of Broadway, Off-Broadway and regional shows.</p>
<div class="newsletter-form-container js-newsletter-form-container">
<div class="newsletter-confirmation visually-hidden js-newsletter-confirmation">
<svg class="icon icon--checkmark">
<use xlink:href="/assets/icons/sprite-sheet.svg#checkmark"></use>
</svg>
<div class="newsletter-confirmation__info">
<p>Thank you for signing up. We'll send you a welcome message shortly.</p>
<p class="newsletter-customize">You can <a href="#">customize your preferences </a>at any time.</p>
</div>
</div>
<form class="newsletter-form js-newsletter-form">
<div class="newsletter-error visually-hidden js-newsletter-error">
<svg class="icon icon--error">
<use xlink:href="/assets/icons/sprite-sheet.svg#error"></use>
</svg>
<span class="input-error">Please enter a valid email address.</span>
</div>
<div class="form-input">
<div class="validation js-validation">
<input type="email" name="email" id="email" class="input validation-item js-newsletter-input" placeholder="Enter your email address">
</div>
</div>
<button class="btn btn--base btn--cta js-newsletter-btn">
Sign Up
</button>
</form>
</div>
</div>
</li>
</ul>
</li>
</ul>
</nav>
<div class="header-social">
<div class="social">
<ul class="social__list" aria-label="Social network profiles">
<li class="social-list-item">
<a href="#facebook-url">
<svg class="icon icon--facebook">
<use xlink:href="/assets/icons/sprite-sheet.svg#facebook"></use>
</svg>
<span class="visually-hidden">Facebook</span>
</a>
</li>
<li class="social-list-item">
<a href="#twitter-url">
<svg class="icon icon--twitter">
<use xlink:href="/assets/icons/sprite-sheet.svg#twitter"></use>
</svg>
<span class="visually-hidden">Twitter</span>
</a>
</li>
<li class="social-list-item">
<a href="#youtube-url">
<svg class="icon icon--youtube">
<use xlink:href="/assets/icons/sprite-sheet.svg#youtube"></use>
</svg>
<span class="visually-hidden">YouTube</span>
</a>
</li>
<li class="social-list-item">
<a href="#instagram-url">
<svg class="icon icon--instagram">
<use xlink:href="/assets/icons/sprite-sheet.svg#instagram"></use>
</svg>
<span class="visually-hidden">Instagram</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</header>
</div>
<div class="overlay js-overlay"></div>
<div class="header-container js-header-container">
{{#if ad}}
<div class="header-ad">
{{#if billboard}}
{{render '@ads--970x250' ad-modifiers merge=true}}
{{else}}
{{render '@ads--728x90' ad-modifiers merge=true}}
{{/if}}
</div>
{{/if}}
<header class="header contain js-header">
<div class="header-main">
<div class="header-btns">
<button class="btn header-btn-menu-open js-header-btn-menu-open">
{{render '@icons--menu'}}
<span class="visually-hidden">{{label-menu}}</span>
</button>
{{render '@buttons--close' close-menu-modifiers merge=true}}
</div>
<div class="header-logo">
<a href="#">
{{#if theatermania}}
{{render '@logos--tm-no-tag-white'}}
{{else}}
{{render '@logos--wos-standard'}}
{{/if}}
</a>
</div>
<div class="header-search-container js-header-search">
<div class="header-btns">
<button class="btn header-btn-search-open js-header-btn-search-open">
{{render '@icons--search'}}
<span class="visually-hidden">{{label-search}}</span>
</button>
<button class="btn header-btn-search-close js-header-btn-search-close">
{{render '@icons--close'}}
<span class="visually-hidden">{{label-search-close}}</span>
</button>
</div>
<div class="header-search">
{{render '@search'}}
</div>
</div>
</div>
<div class="header-nav-container js-header-nav">
<div class="header-nav-items">
<nav class="header-nav">
<ul class="header-nav__list js-header-nav-list">
{{#each nav-items}}
<li class="nav-list-item">
{{#if button}}
<button class="btn nav-link-item{{#if link-class}} {{link-class}}{{/if}}">
{{nav-item}}
{{render '@icons--arrow-bottom'}}
</button>
{{/if}}
{{#if link}}
<a href="{{url}}" class="nav-link-item{{#if link-class}} {{link-class}}{{/if}}">{{nav-item}}</a>
{{/if}}
{{#if secondary-nav-items}}
<ul class="header-nav__list-secondary{{#if newsletter}} header-nav__list-secondary--newsletter{{/if}}">
<li class="header-nav-close">{{render '@buttons--close' submenu-close merge=true}}</li>
{{#if section-modifiers}}
<li class="sublist-title">
{{render '@section-title' section-modifiers merge=true}}
{{#if extra}}
<span class="sublist-copy">{{extra.copy}}</span>
{{/if}}
</li>
{{/if}}
{{#if mainList}}
{{#each secondary-nav-items}}
<li class="nav-list-item{{#if clubs }} nav-list-item--clubs{{/if}}{{#if cityList }} nav-list-item--full{{/if}}{{#if newsletter }} nav-list-item--newsletter{{/if}}">
{{#if hasImage}}
<a href="#">
<div class="nav-image-container">
<picture>
<source srcset="/assets/images/nav/{{image}}" media="(min-width: 768px)">
<img srcset="/assets/images/nav/{{imageSmall}}" class="nav-image" alt="{{image-alt}}" />
</picture>
<span class="nav-image-link">{{nav-item}}</span>
</div>
</a>
{{/if}}
{{#if newsletter}}
<div class="nav-newsletter">
<p class="newsletter-copy js-newsletter-copy">{{newscopy}}</p>
{{render '@newsletter' modifiers merge=true}}
</div>
{{/if}}
</li>
{{/each}}
{{/if}}
{{#if subList}}
{{#each secondary-nav-items}}
{{#each subList}}
<li class="sublist{{#if main-city}} sublist--main{{/if}}">
{{render '@section-title' section-modifiers merge=true}}
<ul class="header-nav__sublist">
{{#each list}}
<li class="nav-list-item">
<a href="#" class="nav-link-item">{{value}}</a>
</li>
{{/each}}
</ul>
{{#if city-text}}
<a href="#" class="btn btn--base btn--primary btn--submenu">{{city-text}}</a>
{{/if}}
</li>
{{/each}}
{{/each}}
{{/if}}
</ul>
{{/if}}
</li>
{{/each}}
</ul>
</nav>
<div class="header-social">
{{render '@social'}}
</div>
</div>
</div>
</header>
</div>
{
"ad": true,
"label-menu": "Menu",
"label-menu-close": "Close Menu",
"label-search": "Search",
"label-search-close": "Close Search",
"theatermania": true,
"ad-modifiers": {
"imageSmall": "300x50.jpg"
},
"close-menu-modifiers": {
"class": "btn header-btn-menu-close",
"js-class": "js-header-btn-menu-close"
},
"nav-items": [
{
"nav-item": "Tickets & Discounts",
"link-class": "js-nav-secondary",
"button": true,
"subList": true,
"submenu-close": {
"class": "btn btn--close btn--close--submenu",
"js-class": "js-btn-close--submenu"
},
"secondary-nav-items": [
{
"cityButton": {
"buttonValue": "See All Cities"
},
"cityList": true,
"subList": [
{
"section-modifiers": {
"title": "New York City",
"aria-id": null,
"icon": {
"modifier": "star"
}
},
"main-city": true,
"icon": {
"modifier": "star"
},
"list": [
{
"value": "Broadway"
},
{
"value": "Broadway Discounts"
},
{
"value": "Off-Broadway"
},
{
"value": "All New York City"
}
]
},
{
"section-modifiers": {
"title": "Other Cities",
"aria-id": null,
"icon": {
"modifier": "map-pin"
}
},
"city-text": "See All Cities",
"list": [
{
"value": "Boston"
},
{
"value": "Chicago"
},
{
"value": "Dallas"
},
{
"value": "Los Angeles"
},
{
"value": "Miami"
},
{
"value": "Minneapolis"
},
{
"value": "Philadelphia"
},
{
"value": "San Diego"
},
{
"value": "San Francisco"
},
{
"value": "Seattle"
},
{
"value": "Washington D.C."
}
]
}
]
}
]
},
{
"nav-item": "News & Reviews",
"url": "#nav-link",
"link": true
},
{
"nav-item": "Theater Clubs",
"link-class": "js-nav-secondary",
"button": true,
"mainList": true,
"submenu-close": {
"class": "btn btn--close btn--close--submenu",
"js-class": "js-btn-close--submenu"
},
"section-modifiers": {
"title": "Complimentary and Deeply Discounted Shows",
"aria-id": null,
"icon": {
"modifier": "tickets"
}
},
"extra": {
"copy": "Broadway, Off-Broadway, Concerts, Sports, Movie Screenings, Comedy, Dance and much more."
},
"secondary-nav-items": [
{
"nav-item": "New York",
"clubs": true,
"imageSmall": "newyorkClubSmall.jpg",
"image": "newyorkClub.jpg",
"image-alt": "New York City skyline at dusk",
"hasImage": true
},
{
"nav-item": "Boston",
"clubs": true,
"imageSmall": "bostonClubSmall.jpg",
"image": "bostonClub.jpg",
"image-alt": "Boston skyline at dusk near waterfront",
"hasImage": true
},
{
"nav-item": "London",
"clubs": true,
"imageSmall": "londonClubSmall.jpg",
"image": "londonClub.jpg",
"image-alt": "London skyline at night with Big Ben",
"hasImage": true
}
]
},
{
"nav-item": "Newsletter",
"link-class": "js-nav-secondary",
"button": true,
"newsletter": true,
"mainList": true,
"submenu-close": {
"class": "btn btn--close btn--close--submenu",
"js-class": "js-btn-close--submenu"
},
"section-modifiers": {
"title": "Discount Ticket Email Offers",
"aria-id": null,
"icon": {
"modifier": "email"
}
},
"secondary-nav-items": [
{
"newsletter": true,
"newscopy": "Discount email offers for a wide variety of Broadway, Off-Broadway and regional shows.",
"image": "showCard1.jpg"
}
]
}
]
}
/**
* @overview Header & Navigation interactions.
* @module Header.js
*/
const header = document.querySelector(`.js-header`);
const headerContainer = document.querySelector(`.js-header-container`);
const headerSearch = document.querySelector(`.js-header-search`);
const navBtnOpen = document.querySelector(`.js-header-btn-menu-open`);
const navBtnClose = document.querySelector(`.js-header-btn-menu-close`);
const searchBtnOpen = document.querySelector(`.js-header-btn-search-open`);
const searchBtnClose = document.querySelector(`.js-header-btn-search-close`);
const secondaryNavBtns = document.querySelectorAll(`.js-nav-secondary`);
const closePanelBtns = document.querySelectorAll(`.js-btn-close--submenu`);
const overlay = document.body.querySelector(`.js-overlay`);
const body = document.body;
const openedClass = `is-open`;
const overlayVisible = `is-overlay`;
let mobile;
// IE11 forEach fix
(function () {
if ( typeof NodeList.prototype.forEach === "function" ) return false;
NodeList.prototype.forEach = Array.prototype.forEach;
})();
if (window.innerWidth <= 768) {
mobile = true;
}
// Fix for individual components
if (header) {
// Open mobile navigation
const openMobileMenu = () => {
closePanels(headerContainer);
header.classList.add(openedClass);
overlay.classList.add(overlayVisible);
};
// Open search for mobile and desktop
const openSearch = () => {
closePanels(headerContainer);
headerSearch.classList.add(openedClass);
overlay.classList.add(overlayVisible);
document.body.querySelector(`.js-input-search`).focus();
};
// Used for Mobile Menu & Search
const closeOpenItem = () => {
closePanels(headerContainer);
overlay.classList.remove(overlayVisible);
}
// Utility for closing all open panels
const closePanels = (el) => {
const openedPanel = el.querySelectorAll(`.is-open`);
openedPanel.forEach((panel) => {
panel.classList.remove(`is-open`);
});
};
const openSecondaryNav = (navItem) => {
overlay.classList.add(overlayVisible);
navItem.parentElement.classList.add(openedClass);
};
// Open/close mobile nav
navBtnOpen.addEventListener(`click`, () => {
openMobileMenu();
});
navBtnClose.addEventListener(`click`, () => {
closeOpenItem();
});
// Open/close mobile search
searchBtnOpen.addEventListener(`click`, () => {
openSearch();
});
searchBtnClose.addEventListener(`click`, () => {
closeOpenItem();
});
// Tablet/Desktop panel close buttons.
closePanelBtns.forEach((closePanelBtn) => {
closePanelBtn.addEventListener(`click`, () => {
closePanels(header);
overlay.classList.remove(overlayVisible);
});
});
// Open/close nested menus
secondaryNavBtns.forEach((secondaryNavBtn) => {
secondaryNavBtn.addEventListener(`click`, () => {
if (!secondaryNavBtn.parentElement.classList.contains(openedClass)) {
closePanels(header);
openSecondaryNav(secondaryNavBtn);
if (mobile) {
secondaryNavBtn.scrollIntoView(true);
}
}
else {
closePanels(header);
if (mobile) {
header.scrollIntoView(true);
}
else {
overlay.classList.remove(overlayVisible);
}
}
});
});
// Close panel when click/touch outside nav
const clickClose = (e) => {
// Desktop menu and search
if (!e.target.closest(`.js-header-nav-list`) && !e.target.closest(`.js-header-search`)) {
closePanels(header);
if (!mobile) {
overlay.classList.remove(overlayVisible);
}
}
// Mobile menu
if (!e.target.closest(`.js-header`)) {
closePanels(headerContainer);
overlay.classList.remove(overlayVisible);
}
if (mobile && !headerSearch.classList.contains(openedClass) && !header.classList.contains(openedClass)) {
overlay.classList.remove(overlayVisible);
}
};
// Close panel when click outside nav
document.body.addEventListener(`touchend`, (e) => {
clickClose(e);
});
document.addEventListener(`click`, (e) => {
clickClose(e);
});
// Generic debounce function
// Taken from: https://davidwalsh.name/javascript-debounce-function
// TM still deciding on whether to use utility library.
// TODO: Use lodash or refactor to ES6.
const debounce = (func, wait, immediate) => {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
const resizeListener = () => {
window.addEventListener(`resize`, debounce(() => {
if (window.innerWidth <= 768) {
mobile = true;
}
else {
mobile = false;
}
}, 250));
};
resizeListener();
}
.header-container {
position: relative;
padding-top: 1rem;
z-index: 2;
background: linear-gradient(to right, $color-header, $color-header-light);
}
.overlay {
position: fixed;
top: 0;
width: 100%;
height: 100%;
z-index: 2;
opacity: 0;
pointer-events: none;
background: rgba($color-black, 0.5);
transition: $transition;
&.is-overlay {
opacity: 1;
pointer-events: auto;
}
}
.ad-container {
.header-ad & {
margin-top: 0;
}
}
.header {
position: relative;
padding-top: 1rem;
z-index: 2;
perspective: 19rem;
}
.header-main {
display: flex;
justify-content: space-between;
@include breakpoint($break-medium) {
margin-bottom: 1rem;
}
}
.header-logo {
margin-bottom: 1rem;
width: $header-logo-width;
@include breakpoint($break-medium) {
margin-top: $header-logo-margin-top--small;
margin-bottom: 0;
width: $header-logo-width--medium;
}
@include breakpoint($break-large) {
margin-top: $header-logo-margin-top;
width: $header-logo-width--large;
}
}
.header-btns {
align-self: center;
@include breakpoint($break-medium) {
display: none;
}
.header-search-container & {
@include breakpoint($break-medium) {
position: absolute;
display: block;
top: 4.56rem;
right: 2.5rem;
z-index: 2;
}
@include breakpoint($break-large) {
top: 5.06rem;
right: 3.44rem;
}
}
}
.header-search-container {
align-self: center;
margin-bottom: 0.75rem;
}
.search-block-form__input {
max-height: 2.5rem;
}
.header-btn-search-open {
.header-search-container.is-open & {
opacity: 0;
pointer-events: none;
transition: $transition;
}
}
.header-btn-search-close {
position: absolute;
top: 0.56rem;
right: 0.38rem;
opacity: 0;
pointer-events: none;
transition: $transition;
.header-search-container.is-open & {
opacity: 1;
pointer-events: auto;
transform: none;
}
@include breakpoint($break-small) {
right: 1.38rem;
}
@include breakpoint($break-medium) {
top: -0.38rem;
right: -0.5rem;
}
}
.header-nav-container {
position: absolute;
z-index: 1;
width: calc(100% - 2rem);
pointer-events: none;
@include breakpoint($break-small) {
width: calc(100% - 4rem);
}
@include breakpoint($break-medium) {
position: relative;
padding: 1rem 1.5rem;
width: 100%;
background: $color-gray-lightest;
border-radius: $border-radius $border-radius 0 0;
box-sizing: border-box;
}
}
.header-nav {
margin-bottom: 0.75rem;
@include breakpoint($break-medium) {
margin-bottom: 0;
max-height: 1rem;
}
}
.header-btn-menu-open {
margin: -1rem 0 0 -0.5rem;
transition: $transition;
.is-open & {
opacity: 0;
pointer-events: none;
}
@include breakpoint($break-medium) {
display: none;
}
}
.header-btn-menu-close {
position: absolute;
top: 0.31rem;
left: 0.5rem;
opacity: 0;
pointer-events: none;
transition: $transition;
.is-open & {
opacity: 1;
pointer-events: auto;
}
@include breakpoint($break-small) {
left: 1.5rem;
}
@include breakpoint($break-medium) {
display: none;
}
}
.icon--menu {
.header & {
stroke: $color-white;
@include breakpoint($break-medium) {
display: none;
}
}
}
.header-nav-items {
margin-top: 1rem;
padding: 1rem 1.5rem;
opacity: 0;
pointer-events: none;
background: $color-background;
border-radius: $border-radius;
box-shadow: 0 0 0.5rem 0 rgba($color-black, 0.5);
box-sizing: border-box;
transform: rotateX(-3deg);
transition: $transition;
@include breakpoint($break-medium) {
display: flex;
align-items: center;
position: relative;
margin: 0;
padding: 0;
width: 100%;
opacity: 1;
pointer-events: auto;
background: none;
box-shadow: none;
transform: none;
}
.is-open & {
opacity: 1;
pointer-events: auto;
transform: none;
}
}
.header-nav__list {
margin: 0;
padding: 0;
list-style: none;
@include breakpoint($break-medium) {
display: flex;
}
}
.nav-item {
margin-bottom: 1.5rem;
}
.header-search {
position: absolute;
padding: 1rem;
top: 4.75rem;
left: 1rem;
width: calc(100% - 2rem);
opacity: 0;
pointer-events: none;
background: $color-background;
border-radius: $border-radius;
box-shadow: 0 0 0.5rem 0 rgba($color-black, 0.5);
box-sizing: border-box;
transform: rotateX(-12deg);
transition: $transition;
.header-search-container.is-open & {
z-index: 2;
opacity: 1;
pointer-events: auto;
transform: none;
transition-delay: 0.15s;
}
@include breakpoint($break-small) {
left: 2rem;
width: calc(100% - 4rem);
}
@include breakpoint($break-medium) {
margin-left: auto;
top: 6.75rem;
right: 1rem;
max-width: 25rem;
background: $color-gray-lightest;
border-radius: 0 0 $border-radius $border-radius;
box-shadow: 0 0.44rem 0.5rem 0 rgba($color-black, 0.2);
}
@include breakpoint($break-large) {
top: 7.25rem;
right: 2rem;
}
}
.nav-list-item {
margin: 0;
padding: 0;
&.btn.is-open {
color: $color-header-light;
}
.header-nav & {
@include breakpoint($break-medium) {
&::after {
position: relative;
display: block;
content: '';
top: -0.13rem;
left: calc(50% - 0.22rem);
width: 0;
height: 0;
border-top: 0.5rem solid $color-gray-lightest;
border-left: 0.5rem solid transparent;
border-right: 0.5rem solid transparent;
transition: $transition;
}
&.is-open::after {
transform: translateY(0.88rem);
}
}
}
.header-nav__list-secondary & {
@include breakpoint($break-medium) {
flex: 0 1 49%;
margin-right: 0;
&::after {
display: none;
}
}
}
&.nav-list-item--clubs {
.header-nav__list-secondary & {
@include breakpoint($break-medium) {
flex: 0 1 32%;
}
}
}
.header-nav__sublist & {
margin-bottom: 1rem;
padding-bottom: 1rem;
border-bottom: 1px solid $color-gray-lightest;
@include breakpoint($break-xsmall) {
flex: 0 1 50%;
}
@include breakpoint($break-medium) {
flex: none;
width: calc(100% / 3);
&:nth-last-child(2) {
margin-bottom: 1rem;
border-bottom: 1px solid $color-gray-lightest;
}
}
}
.sublist--main .header-nav__sublist & {
@include breakpoint($break-xsmall) {
flex: 0 1 100%;
}
@include breakpoint($break-medium) {
width: 100%;
}
}
@include breakpoint($break-medium) {
margin-right: 2rem;
}
}
.btn--primary {
.nav-list-item & {
color: $color-white;
@include breakpoint($break-medium) {
float: right;
}
}
}
.nav-link-item {
display: block;
margin: 0;
padding: 0.75rem 0 0.75rem;
width: 100%;
font-family: $font-title;
&.btn {
text-align: left;
color: $color-header;
outline: none;
transition: $transition;
&:hover {
color: $color-header-light;
}
}
.header-nav__list & {
line-height: 1.15;
&:hover {
text-decoration: none;
}
}
.header-nav__sublist & {
padding: 0;
color: $color-header;
font-family: $font-body;
font-weight: $font-normal;
&:hover {
color: $color-header-light;
text-decoration: underline;
}
}
@include breakpoint($break-medium) {
padding: 0;
}
}
.header-social {
@include breakpoint($break-medium) {
display: none;
}
}
.header-nav__list-secondary {
display: flex;
flex-direction: column;
align-items: flex-start;
margin: 0;
padding: 0;
list-style: none;
@include breakpoint($break-medium) {
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
position: absolute;
top: 3rem;
left: -1.5rem;
padding: 1.3rem 1.5rem 2rem;
width: calc(100% + 3rem);
background: $color-white;
border-radius: $border-radius;
box-shadow: 0 0 0.5rem 0 rgba($color-black, 0.5);
box-sizing: border-box;
}
.nav-list-item & {
display: none;
margin-top: 0.5rem;
opacity: 0;
pointer-events: none;
transform: rotateX(-3deg);
transition: $transition;
@include breakpoint($break-medium) {
display: flex;
margin-top: 0;
}
}
.nav-list-item.is-open & {
display: flex;
opacity: 1;
z-index: 1;
pointer-events: auto;
transform: none;
transition-delay: 0.2s;
}
}
.nav-list-item--newsletter {
.header-nav__list-secondary & {
margin-bottom: 1.5rem;
@include breakpoint($break-medium) {
flex: 0 1 100%;
margin-bottom: 0;
}
}
}
.nav-image-container {
position: relative;
margin-bottom: 1.5rem;
&::after {
position: absolute;
content: "";
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: $opacity-light;
background: $color-black;
border-radius: $border-radius;
transition: $transition;
}
&:hover {
&::after {
opacity: $opacity-lighter;
}
}
@include breakpoint($break-medium) {
margin-bottom: 0;
}
}
.nav-image-link {
position: absolute;
z-index: 1;
padding: 0.5rem 0;
top: 50%;
width: 100%;
text-align: center;
font-family: $font-title;
font-size: $ms-2;
color: $color-white;
text-shadow: 0 1px 0.12rem $color-black;
transform: translateY(-50%);
}
.nav-list-item--full {
.header-nav__list-secondary & {
display: flex;
flex-direction: column;
width: 100%;
@include breakpoint($break-medium) {
flex: 0 1 100%;
}
}
}
.nav-image {
border-radius: $border-radius;
}
.header-nav__sublist {
display: flex;
flex-direction: column;
margin: 1rem 0 0;
padding: 0;
list-style: none;
.btn--primary {
margin-top: 0.25rem;
padding: 0.75rem;
box-sizing: border-box;
text-align: center;
color: $color-white;
&:hover {
color: $color-white;
}
}
@include breakpoint($break-xsmall) {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
@include breakpoint($break-medium) {
max-height: 15rem;
}
}
.sublist-title {
.nav-list-item & {
display: flex;
flex-wrap: wrap;
flex: 1 0 auto;
margin: 0.5rem 0 0;
padding: 0;
width: 100%;
@include breakpoint($break-medium) {
flex: auto;
margin: 0;
}
}
}
.title-highlight {
.sublist-title & {
margin-top: 0;
width: 85%;
@include breakpoint($break-xsmall) {
width: auto;
}
}
}
.sublist-copy {
margin-bottom: 0.75rem;
width: 100%;
font-size: $ms-neg-1;
}
.sublist-title--list {
.nav-list-item & {
margin: 0 0 1.5rem;
border-bottom: 1px solid $color-border;
}
}
.header-nav__list-secondary--newsletter {
@include breakpoint($break-medium) {
left: auto;
right: -1.5rem;
width: 50%;
min-width: 610px;
}
}
.newsletter-copy {
margin: 0;
}
.btn {
.sublist & {
display: block;
margin-bottom: 1.5rem;
@include breakpoint($break-medium) {
margin: 0;
}
}
.nav-newsletter & {
margin-top: 0.25rem;
width: 100%;
@include breakpoint($break-medium) {
float: right;
width: auto;
}
}
.nav-list-item--full & {
margin: 0.5rem 0 1rem;
width: 100%;
@include breakpoint($break-medium) {
margin-bottom: 0;
max-width: 12.5rem;
}
}
}
.form-input {
.nav-newsletter & {
margin-top: -0.31rem;
}
}
.sublist-container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.sublist {
flex: 0 1 100%;
margin: 0;
padding: 0;
width: 100%;
@include breakpoint($break-small) {
flex: 0 1 62%;
}
@include breakpoint($break-medium) {
flex: 0 1 70%;
}
@include breakpoint($break-large) {
flex: 0 1 64%;
}
}
.sublist--main {
margin-bottom: 0.5rem;
@include breakpoint($break-small) {
flex: 0 1 33%;
}
@include breakpoint($break-medium) {
flex: 0 1 27%;
margin-bottom: 0;
}
@include breakpoint($break-large) {
flex: 0 1 33%;
}
}
.icon--search {
.header-btn-search-open & {
width: 1.5rem;
height: 1.5rem;
stroke: $color-white;
stroke-width: 5;
@include breakpoint($break-medium) {
width: 1.3rem;
height: 1.4rem;
stroke: $color-header;
&:hover {
stroke: $color-header-light;
}
}
}
}
.icon--close {
.header & {
margin-top: 0.25rem;
width: 3rem;
height: 3rem;
stroke: $color-white;
transition: $transition;
}
.header-btn-search-close & {
width: 2.5rem;
height: 2.5rem;
@include breakpoint($break-medium) {
margin-top: 0;
width: 2.3rem;
height: 2.3rem;
stroke: $color-header;
&:hover {
stroke: $color-header-light;
}
}
}
.btn--close--submenu & {
width: 2rem;
height: 2rem;
stroke: $color-gray;
}
}
.icon--map-pin {
.sublist-title & {
margin-right: 0.25rem;
width: 1.25rem;
height: 1.25rem;
stroke-width: 4;
stroke: $color-gray-light;
}
}
.icon--star {
.sublist-title & {
width: 1.2rem;
height: 1.2rem;
fill: $color-gray-lighter;
}
}
.icon--tickets {
.sublist-title & {
width: 1.25rem;
height: 1.25rem;
stroke-width: 4;
stroke: $color-gray-light;
}
}
.icon--email {
.sublist-title & {
width: 1.25rem;
height: 1.25rem;
stroke-width: 4;
stroke: $color-gray-light;
}
}
.icon--arrow-bottom {
.nav-link-item & {
position: relative;
top: -1px;
width: 1rem;
height: 1rem;
stroke: $color-header;
stroke-width: 6;
transition: $transition;
transform: rotate(0deg);
}
.nav-link-item:hover & {
stroke: $color-header-light;
}
.nav-list-item.is-open & {
transform: rotate(-90deg);
stroke: $color-header-light;
}
}
.icon {
.header-btns .btn:hover & {
stroke: $color-white;
@include breakpoint($break-medium) {
stroke: $color-header-light;
}
}
}
.header-nav-close {
position: absolute;
top: 0;
right: 0;
}
.btn--close--submenu {
display: none;
top: 1.88rem;
right: 1rem;
@include breakpoint($break-medium) {
display: block;
}
}
.section-title {
.sublist-title & {
margin-bottom: 0.75rem;
}
}
There are no notes for this item.