/*
 * 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.
 */

.UnitFixedHeader {
  background-color: var(--gray-10);
  border-bottom: 1px solid var(--gray-8);
  height: var(--header-height);
  position: fixed;
  top: 0;
  left: 0;
  transform: translateY(calc(var(--header-height) * -1));
  transition: transform 100ms linear;
  width: 100%;
  z-index: 1000;
}
.UnitFixedHeader--visible {
  transform: unset;
}
.UnitFixedHeader-container {
  align-items: center;
  display: flex;
  height: 100%;
  margin: 0 auto;
  max-width: 75.75rem;
  padding: 0 0.5rem;
  position: relative;
}
.UnitFixedHeader-container {
  max-width: 98rem;
}
.UnitFixedHeader-logoLink {
  margin-right: 1rem;
}
.UnitFixedHeader-logo {
  display: block;
  height: 1.695625;
  width: 4.5rem;
}
.UnitFixedHeader-moduleInfo {
  align-items: baseline;
  display: flex;
  flex-wrap: nowrap;
  margin-right: 3rem;
  min-width: 0;
}
.UnitFixedHeader-title {
  font-weight: 600;
  font-size: 1.125rem;
  line-height: 1.5;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.UnitFixedHeader-titleType {
  display: none;
}
.UnitFixedHeader-titleType--small {
  display: inline;
}
@media only screen and (min-width: 25rem) {
  .UnitFixedHeader-titleType {
    display: inline;
  }
  .UnitFixedHeader-titleType--small {
    display: none;
  }
}
.UnitFixedHeader .CopyToClipboardButton {
  top: 0.1875rem;
}
.UnitFixedHeader-pathInput {
  left: -100vw;
  position: absolute;
  top: -100vh;
}
.UnitFixedHeader-version {
  color: var(--gray-2);
  font-size: 0.6875rem;
  position: relative;
}
@media only screen and (min-width: 37.5rem) {
  .UnitFixedHeader-container {
    padding: 0 1.5rem;
  }
  .UnitFixedHeader-logo {
    height: 1.9541rem;
    width: 5.1875rem;
  }
  .UnitFixedHeader-title {
    font-size: 1.5rem;
  }
  .UnitFixedHeader .CopyToClipboardButton {
    top: 0.0625rem;
  }
  .UnitFixedHeader-version {
    top: -0.125rem;
  }
}
.UnitFixedHeader-overflowingTabList {
  display: flex;
  flex: 1;
  height: 100%;
  min-width: 0;
  position: relative;
}
.UnitFixedHeader [role='tablist'] {
  display: flex;
  flex: 1;
  height: 100%;
  justify-content: flex-end;
  margin: 0;
  padding: 0;
}
.UnitFixedHeader [role='tab'] + [role='tab'] {
  margin-left: 1rem;
}
.UnitFixedHeader [role='tab'] {
  border-bottom: 0.25rem solid transparent;
  display: block;
  height: 100%;
  padding: 1.3125rem 0.5rem 0 0.5rem;
  white-space: nowrap;
}
.UnitFixedHeader [role='tab']:hover {
  border-bottom-color: var(--purple);
  text-decoration: none;
}
.UnitFixedHeader [role='tab'][aria-selected='true'] {
  border-bottom-color: var(--turq-dark);
}
.UnitFixedHeader [role='tab'][aria-hidden='true'] {
  display: none;
}
.UnitFixedHeader [role='tab'][aria-disabled='true'],
.UnitFixedHeader [role='tab'][aria-disabled='true']:hover {
  border-bottom-color: transparent;
  color: var(--gray-5);
  cursor: not-allowed;
}
.UnitFixedHeader-overflowContainer {
  display: block;
  height: 1.5rem;
  position: absolute;
  right: 0.0625rem;
  top: 1.125rem;
  width: 1.5rem;
}
@media only screen and (min-width: 80rem) {
  .UnitFixedHeader-overflowContainer {
    display: none;
  }
}
.UnitFixedHeader-overflowingTabList.is-overflowing {
  padding-right: 1.5rem;
}
.UnitFixedHeader-overflowingTabList.is-overflowing .UnitFixedHeader-overflowContainer {
  display: block;
}
.UnitFixedHeader-overflowImage {
  fill: var(--gray-3);
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.UnitFixedHeader-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%;
}
.UnitFixedHeader-overflowSelect option {
  color: var(--gray-1);
}
.UnitHeaderFixed-detail {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  margin-left: auto;
  margin-right: 2rem;
  white-space: nowrap;
}
.UnitHeaderFixed-detailItem {
  color: var(--gray-4);
  display: none;
  font-size: 0.875rem;
}
.UnitHeaderFixed-detailItem img {
  margin-right: 0.5rem;
  vertical-align: middle;
}
.UnitHeaderFixed-detailItem a > span {
  color: var(--gray-4);
}
.UnitHeaderFixed-detailItem:not(:first-of-type):before {
  content: '|';
  padding: 1rem;
}
@media only screen and (max-width: 52rem) {
  .UnitHeaderFixed-detailItem:not(:first-of-type):before {
    padding: 0.5rem;
  }
}
@media only screen and (min-width: 64rem) {
  .UnitHeaderFixed-detailItem--md {
    display: block;
  }
}
@media only screen and (min-width: 80rem) {
  .UnitHeaderFixed-detailItem--lg {
    display: block;
  }
}
a.UnitFixedHeader-backLink {
  color: black;
  display: block;
  font-size: 1.125rem;
  line-height: 1.5rem;
  margin: auto 0 auto auto;
}
