/*!
 * 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;
  max-width: 75.75rem;
  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;
  max-width: 75.75rem;
  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: 57.7rem) {
  .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--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: 50rem) {
  .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;
}
