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

/* Hide the search form in the header. */
.go-SearchForm {
  display: none;
}
.SearchSnippet-sub .go-Chip:hover {
  background-color: var(--color-background-highlighted);
}

.SearchResults {
  font-size: 0.875rem;
  padding-top: 0.75rem;
}
.SearchResults-header {
  margin: 0.5rem 0 0;
}
.SearchResults-header[data-fixed] {
  background-color: var(--color-background-accented);
  border-bottom: var(--border);
  height: 3.5rem;
  position: sticky;
  top: 0;
}
.SearchResults-headerContent {
  align-items: center;
  display: flex;
  gap: 0.5rem;
  height: 100%;
  margin: auto;
  max-width: 63rem;
  padding: 0.5rem var(--gutter);
}
.SearchResults-headerLogo {
  --logo-height: 1.75rem;
  --logo-width: calc(var(--logo-height) / 0.3768);

  align-items: center;
  display: flex;
  margin-right: -0.5rem;
  opacity: 0;
  transition: opacity 0.25s ease-in-out, width 0.25s ease-out;
  visibility: hidden;
  width: 0;
}
.SearchResults-headerLogo[data-fixed] {
  margin-right: 0.5rem;
  opacity: 1;
  visibility: visible;
  width: var(--logo-width);
}
.SearchResults-headerLogo img {
  height: var(--logo-height);
  margin: -1rem 0;
  width: var(--logo-width);
}
.SearchResults-search {
  flex-grow: 1;
  max-width: 31.5rem;
}
.SearchResults-search::after {
  right: 2.75rem;
}
.SearchResults-tabs {
  border-bottom: var(--border);
}
.SearchResults-tabs nav {
  margin: auto;
  max-width: 63rem;
  padding: 0 var(--gutter);
}
.SearchResults-summary {
  color: var(--color-text-subtle);
  display: flex;
  flex-direction: column;
  gap: 1rem;
  justify-content: space-between;
  line-height: 1.5rem;
  margin: -0.25rem 0 0.25rem 0;
}
@media only screen and (min-width: 64rem) {
  .SearchResults-summary {
    align-items: baseline;
    flex-direction: row;
  }
}
.SearchResults-summary h1 {
  font-size: inherit;
  font-weight: inherit;
}
.SearchResults-emptyContentMessage {
  text-align: center;
}
.SearchResults-divider {
  margin-bottom: 2.5rem;
}

.SearchSnippet {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  padding: 0 0 2.75rem 0;
}
.SearchSnippet h2 {
  font-size: 1.25rem;
  font-weight: 400;
}
.SearchSnippet:last-of-type {
  padding: 0 0 1rem 0;
}
.SearchSnippet-synopsis {
  -webkit-box-orient: vertical;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
}
.SearchSnippet-infoLabel {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  margin-top: -0.0625rem;
}
.SearchSnippet-sub {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.SearchSnippet-symbolCode {
  font-size: 0.75rem;
  margin: 0.25rem 0;
}
.SearchSnippet-sub a[data-hidden] {
  display: none;
}
.SearchSnippet-sub a {
  color: var(--color-text-subtle);
}
.SearchSnippet-sub a:hover {
  color: var(--color-brand-primary);
}
.SearchSnippet-headerContainer {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.SearchSnippet-header-path {
  color: var(--color-text-subtle);
}
.SearchSnippet-symbolKind {
  color: var(--color-text);
}
.SearchPagination {
  height: 1.5rem;
}
