/*!
 * 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: 2.5rem;
}
.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-tips {
  margin: auto;
  max-width: 45.0625rem;
  width: 100%;
}
.Homepage-examples {
  align-items: center;
  display: flex;
  flex-direction: column;
  font-size: 0.875rem;
  gap: 0.5rem 1rem;
  justify-content: space-between;
  margin: 0 auto;
  max-width: 45.0625rem;
  white-space: nowrap;
  width: inherit;
}
@media only screen and (min-width: 52rem) {
  .Homepage-examples {
    flex-direction: row;
  }
}
.Homepage-examplesTitle {
  color: var(--color-text-subtle);
  font-weight: 500;
  text-transform: uppercase;
}
.Homepage-examplesList {
  display: flex;
  flex-grow: 1;
  flex-wrap: wrap;
  gap: 0.5rem 2rem;
}
a.Homepage-helpLink {
  align-items: center;
  display: inline-flex;
  font-size: 1em;
  font-weight: initial;
  margin-left: 0.5rem;
  white-space: nowrap;
}
.Homepage-helpLink img {
  height: 1rem;
  margin-left: 0.25rem;
  position: relative;
  top: 0.1875rem;
  width: 1rem;
}
.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;
}
