/*!
 * 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: 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;
}
