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

.SearchSnippet h2 {
  font-size: 1.25rem;
  font-weight: 400;
}

.SearchSnippet:last-of-type {
  padding: 0 0 1rem;
}

.SearchSnippet-synopsis {
  -webkit-box-orient: vertical;
  display: 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;
}
