/*!
 * Copyright 2021 The Go Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style
 * license that can be found in the LICENSE file.
 */

.go-Banner {
  background-color: var(--gray-1);

  /**
   * Only show on wide viewports so the
   * text never wraps or gets cut off.
   */
  display: none;
}
.go-Banner-inner {
  align-items: center;
  display: flex;
  justify-content: space-between;
  margin: 0 auto;
  min-height: 2.5rem;
  padding: 0.5rem var(--gutter);
}
.Site--wide .go-Banner-inner {
  max-width: 98rem;
}
.go-Banner--full .go-Banner-inner {
  max-width: unset;
}
.go-Banner-message {
  color: var(--white);
  margin-right: 1.25rem;
}
.go-Banner-action:link,
.go-Banner-action:visited {
  color: var(--white);
  text-decoration: underline;
  white-space: nowrap;
}
@media only screen and (min-width: 52rem) {
  .go-Banner {
    display: block;
  }
}

.go-Header {
  background: #007d9c;
  border-bottom: none;
  box-shadow: 0 0.0625rem 0.125rem rgba(171, 171, 171, 0.3);
  top: 0;
  width: 100%;
  z-index: 10;
}
.go-Header-inner {
  margin: 0 auto;
  padding: 0 var(--gutter);
}
.Site--wide .go-Header-inner {
  max-width: 98rem;
}
.go-Header--full .go-Header-inner {
  max-width: initial;
}
.go-Header-nav {
  align-items: center;
  display: flex;
  height: 3.5rem;
  justify-content: space-between;
}
.go-Header-rightContent {
  align-items: center;
  display: flex;
  height: 100%;
  justify-content: flex-end;
  width: 100%;
}
.go-Header-rightContent form {
  flex-grow: 1;
}
.go-Header-inner--dark {
  border-bottom: none;
  color: var(--white);
}
.go-Header-logo {
  display: block;
  height: 2rem;
  margin-right: 2.25rem;
  width: 5.125rem;
}
.go-Header-logo--hidden {
  display: none;
}
.go-Header-menuItem {
  display: none;
}
.go-Header-menu {
  align-items: stretch;
  display: flex;
  height: 100%;
  list-style: none;
  margin: 0;
  padding: 0;
}
@media only screen and (min-width: 65rem) {
  .go-Header-menuItem {
    align-items: stretch;
    display: inline-flex;
    flex: none;
  }
  .go-Header-menu {
    justify-content: flex-end;
  }
  .go-Header-navOpen {
    display: none;
  }
}
.go-Header-menuItem a:link,
.go-Header-menuItem a:visited {
  align-items: center;
  border-bottom: 0.1875rem solid transparent;
  border-top: 0.1875rem solid transparent; /* To ensure the text remains centered. */
  color: var(--gray-2);
  display: inline-flex;
  margin: 0 0.3125rem;
  padding: 0 0.9375rem;
  text-align: center;
  text-decoration: none;
  width: 100%;
}
.go-Header-menuItem--active a:link,
.go-Header-menuItem--active a:visited {
  border-bottom-color: var(--turq-med);
  font-weight: bold;
}
.go-Header-menuItem a:hover {
  border-bottom-color: var(--white);
  color: var(--gray-2);
}
.go-NavigationDrawer-listItem a:link,
.go-NavigationDrawer-listItem a:visited {
  display: block;
  margin: 0 1rem;
  padding: 0.5rem;
}
.go-Header-inner--dark .go-Header-menuItem a:link,
.go-Header-inner--dark .go-Header-menuItem a:visited {
  color: var(--white);
}

.go-Header-navOpen {
  background: no-repeat center/2rem url('/images/menu-24px.svg');
  border: none;
  height: 2.5rem;
  margin-left: 1rem;
  width: 2.5rem;
}
.go-Header-navOpen--hidden {
  display: none;
}
.go-Header-navOpen--white {
  background: no-repeat center/2rem url('/static/shared/icon/menu_gm_grey_24dp.svg');
  filter: brightness(0) saturate(100%) invert(100%) sepia(97%) saturate(13%) hue-rotate(245deg)
    brightness(103%) contrast(107%);
}

.go-SearchForm--expanded {
  flex-grow: 1;
}
.go-SearchForm-form {
  display: none;
}
.go-SearchForm-form::after {
  right: 2.75rem;
}
.go-SearchForm--expanded .go-SearchForm-form {
  display: flex;
}
.go-SearchForm-expandSearch {
  appearance: none;
  background: none;
  font-size: 1.5rem;
}
.go-SearchForm--expanded .go-SearchForm-expandSearch {
  display: none;
}

@media only screen and (min-width: 32rem) {
  .go-Header-rightContent {
    width: 100%;
  }
  .go-SearchForm {
    flex: 1;
  }
  .go-SearchForm-form {
    display: flex;
  }
  .go-SearchForm-expandSearch {
    display: none;
  }
  .go-Header-logo--hidden {
    display: initial;
  }
}

.go-NavigationDrawer {
  background: var(--white);
  height: 100%;
  left: auto;
  max-width: 27rem;
  position: fixed;
  right: 0;
  top: 0;
  transform: translateX(100%);
  transition: transform 100ms ease-in-out;
  width: 85%;
  z-index: 30;
}
@media only screen and (min-width: 65rem) {
  .go-NavigationDrawer {
    display: none;
  }
}
.go-NavigationDrawer.is-active {
  transform: translateX(0);
}
.go-NavigationDrawer-header {
  align-items: center;
  display: flex;
  justify-content: space-between;
}
.go-NavigationDrawer-logo {
  display: block;
  height: 2rem;
  margin: 1rem 1rem;
  width: 5.125rem;
}
.go-NavigationDrawer-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.go-NavigationDrawer-listItem {
  font-size: 1.125rem;
  margin: 0 0.5rem;
}
.go-NavigationDrawer-listItem--active {
  background-color: var(--blue);
  border-radius: 0.4rem;
}
.go-NavigationDrawer-scrim {
  display: none;
  height: 100%;
  left: 0;
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 20;
}
.go-NavigationDrawer.is-active + .go-NavigationDrawer-scrim {
  background-color: var(--gray-1);
  display: block;
  opacity: 0.32;
}
