/*!
 * Copyright 2020 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.
 */

.UnitHeader {
  min-height: calc(var(--full-header-height));
  position: sticky;
  top: calc(var(--full-header-height) * -1 + var(--banner-height) + var(--header-height));
  white-space: nowrap;
  z-index: 100;
}

.UnitHeader-breadcrumbs {
  background-color: var(--white);
  line-height: 1.5rem;
  padding-top: 1rem;
  white-space: initial;
}
.UnitHeader-breadcrumbItem {
  color: var(--gray-4);
  display: inline-flex;
  font-size: 0.875rem;
}
.UnitHeader-breadcrumbItem:not(:last-child)::after {
  content: '>';
  padding: 0 0.5rem;
}

.UnitHeader-content {
  background-color: var(--white);
  border-bottom: 0.0625rem solid var(--gray-8);
  position: sticky;
  top: var(--banner-height);
}
.UnitHeader-content > div {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: var(--header-height);
  padding-bottom: 1rem;
}
.UnitHeader--sticky .UnitHeader-content > div {
  align-items: center;
  flex-direction: row;
  padding-bottom: 0;
}

.UnitHeader-title {
  align-items: center;
  display: flex;
  overflow: hidden;
}
.UnitHeader-logo {
  align-items: center;
  display: flex;
  margin-right: 0;
  opacity: 0;
  transition: opacity 0.25s ease-in-out, margin 0.25s ease-in, width 0.25s ease-out;
  visibility: hidden;
  width: 0;
}
.UnitHeader-logo img {
  height: 1.695625rem;
  width: 4.5rem;
}
.UnitHeader--sticky .UnitHeader-logo {
  margin-right: 0.5rem;
  opacity: 1;
  visibility: visible;
  width: 4.5rem;
}
@media only screen and (min-width: 37.5rem) {
  .UnitHeader--sticky .UnitHeader-logo {
    height: 1.9541rem;
    margin-right: 1rem;
    width: 5.1875rem;
  }
}
.UnitHeader-title h1 {
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 2.25rem;
  margin: 0.5rem 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.UnitHeader--sticky .UnitHeader-title h1 {
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media only screen and (min-width: 37.5rem) {
  .UnitHeader--sticky .UnitHeader-title h1 {
    font-size: 1.5rem;
  }
}
.UnitHeader-content .CopyToClipboardButton {
  display: none;
}
.UnitHeader--sticky .UnitHeader-content .CopyToClipboardButton {
  display: initial;
}

.UnitHeader-details {
  display: none;
  flex-direction: column;
  white-space: nowrap;
}
.UnitHeader--full .UnitHeader-details {
  display: flex;
}
@media only screen and (min-width: 64rem) {
  .UnitHeader-details {
    align-items: center;
    flex-direction: row;
  }
}
@media only screen and (min-width: 70rem) {
  .UnitHeader-details {
    display: flex;
  }
}
.UnitHeader-detailItem {
  color: var(--gray-4);
  display: inline;
  font-size: 0.875rem;
  line-height: 1.75rem;
}

@media only screen and (min-width: 64rem) {
  .UnitHeader-detailItem:not(:last-of-type)::after {
    content: '|';
    padding: 1rem;
  }
}
.UnitHeader-detailItem > a > span {
  color: var(--gray-4);
}

.UnitHeader-overflowContainer {
  display: none;
  height: 1.5rem;
  position: absolute;
  right: 1rem;
  width: 1.5rem;
}
.UnitHeader--sticky .UnitHeader-overflowContainer {
  display: block;
}
@media only screen and (min-width: 70rem) {
  .UnitHeader--sticky .UnitHeader-overflowContainer {
    display: none;
  }
}
.UnitHeader-overflowImage {
  fill: var(--gray-3);
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.UnitHeader-overflowSelect {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
  color: transparent;
  cursor: pointer;
  font-size: 1rem;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.UnitHeader-overflowSelect option {
  color: var(--gray-1);
}

.UnitHeader-badge {
  border: 0.0625rem solid var(--gray-4);
  border-radius: 0.125rem;
  display: none;
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1rem;
  margin-left: 0.5rem;
  margin-top: 0.125rem;
  padding: 0 0.35rem;
  text-align: center;
}
.UnitHeader--full .UnitHeader-badge {
  display: block;
}
@media only screen and (min-width: 80rem) {
  .UnitHeader--sticky .UnitHeader-badge {
    display: block;
  }
}

.UnitHeader-banners {
  z-index: 10;
}
.UnitHeader-banner {
  display: flex;
  padding: 0.75rem 0;
}
.UnitHeader-bannerContent {
  align-items: center;
  display: flex;
}
.UnitHeader-banner--majorVersion,
.UnitHeader-banner--redirected {
  background-color: var(--gray-10);
}
.UnitHeader-banner--deprecated,
.UnitHeader-banner--retracted {
  background-color: var(--yellow);
}
.UnitHeader-banner-icon {
  color: var(--gray-3);
  margin-right: 0.5rem;
  width: 1rem;
}
.UnitHeader-versionBadge,
.DetailsHeader-badge {
  border-radius: unset;
  color: var(--white);
  font-size: 0.7rem;
  line-height: 0.85rem;
  margin: -1rem 0 -1rem 0.5rem;
  padding: 0.25rem 0.5rem;
  text-transform: uppercase;
  top: -0.0625rem;
}
.UnitHeader-versionBadge--latest,
.DetailsHeader-badge--latest {
  background: var(--turq-dark);
}
.UnitHeader-versionBadge--goToLatest,
.DetailsHeader-badge--goToLatest {
  background: var(--pink);
}
.UnitHeader-versionBadge--unknown,
.DetailsHeader-badge--unknown {
  display: none;
}

a.UnitHeader-backLink {
  color: var(--black);
  display: block;
  font-size: 1rem;
}
.UnitHeader-backLink img {
  height: 0.8125rem;
  margin-right: 0.5rem;
  width: auto;
}
