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

/* Hide the search form in the header. */
.go-SearchForm {
  display: none;
}

.Homepage-logo {
  border-radius: var(--border-radius);
  display: block;
  height: 10rem;
  margin: 3.125rem auto;
  width: auto;
}
[data-theme='dark'] .Homepage-logo {
  mix-blend-mode: difference;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme='light']) .Homepage-logo {
    mix-blend-mode: difference;
  }
}
@media only screen and (min-width: 52rem) {
  .Homepage {
    margin: 2rem auto;
  }
  .Homepage-logo {
    margin: 3.5rem auto;
  }
}
.Homepage-search {
  --border-radius: 0.5rem;

  height: 3rem;
  margin: 2.5rem auto 0 auto;
  max-width: 45.0625rem;
  position: relative;
  width: 100%;
}
.Homepage-search::before {
  background: url('/static/shared/icon/search_gm_grey_24dp.svg') left no-repeat;
  content: '';
  height: 3rem;
  left: 0.75rem;
  position: absolute;
  width: 1.5rem;
  z-index: 3;
}
.Homepage-search .go-Select {
  padding-left: 2.5rem;
}
.Homepage-search .go-Input {
  padding-left: 2.5rem;
}
.Homepage-search--symbol .go-Input {
  border-bottom-right-radius: var(--border-radius);
  border-top-right-radius: var(--border-radius);
  padding-left: 1rem;
}
.Homepage-search .go-Button {
  justify-content: center;
  width: 7.375rem;
}
.Homepage-search--symbol .go-Button {
  display: none;
}
@media only screen and (min-width: 30rem) {
  .Homepage-search--symbol .go-Input {
    border-bottom-right-radius: 0;
    border-top-right-radius: 0;
  }
  .Homepage-search--symbol .go-Button {
    display: inline-flex;
  }
}
.Homepage-searchHelp {
  align-items: center;
  display: block;
  justify-content: space-between;
  margin: 0 auto;
  max-width: 45.0625rem;
  text-align: center;
  width: 100%;
}
@media only screen and (min-width: 30rem) {
  .Homepage-searchHelp {
    display: flex;
  }
}
a.Homepage-helpLink {
  align-items: center;
  display: inline-flex;
  font-size: 1em;
  font-weight: initial;
  margin-right: 0.5rem;
  white-space: nowrap;
}
.Homepage-helpLink img {
  height: 1rem;
  margin-left: 0.25rem;
  position: relative;
  top: 0.1875rem;
  width: 1rem;
}
.Homepage-exampleSearches {
  align-items: center;
  color: var(--color-text-subtle);
  display: block;
  font-size: 0.875rem;
  font-weight: 500;
  text-align: center;
  width: 100%;
}
@media only screen and (min-width: 30rem) {
  .Homepage-exampleSearches {
    display: flex;
  }
}
.Homepage-exampleSearchesLabel {
  display: block;
  margin-bottom: 1rem;
  text-transform: uppercase;
}
@media only screen and (min-width: 30rem) {
  .Homepage-exampleSearchesLabel {
    display: inline;
    margin-bottom: -0.1rem;
  }
}
.Homepage-exampleSearch {
  color: var(--color-brand-primary);
  font-size: 1rem;
  font-weight: initial;
  padding: 0 0.625rem;
}
.Questions {
  background: var(--color-background-accented);
  color: var(--color-text);
  display: flex;
  padding-bottom: 1rem;
  padding-top: 0.5rem;
}
.Questions-header {
  color: var(--color-text);
  font-weight: bold;
  margin: 1rem 0;
}
.Questions-content {
  flex-grow: 1;
  margin: 0 auto;
  max-width: 75.75rem;
  padding: 0 1.5rem;
}
.Questions-content ul {
  list-style: none;
  padding-inline-start: 0;
}
.Questions-content ul > li {
  font-size: 0.875rem;
  line-height: 1.75rem;
}
