/*
 * 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 .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-name {
  color: var(--color-text);
}
.SearchSnippet-header-dash {
  color: var(--color-text-subtle);
}
.SearchSnippet-symbolKind {
  color: var(--color-text);
}
.SearchPagination {
  height: 1.5rem;
}
