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

:root {
  --gray-1: #202224;
  --gray-2: #3e4042;
  --gray-3: #555759;
  --gray-4: #6e7072;
  --gray-5: #848688;
  --gray-6: #aaacae;
  --gray-7: #c6c8ca;
  --gray-8: #dcdee0;
  --gray-9: #f0f1f2;
  --gray-10: #fafafa;

  --turq-light: #5dc9e2;
  --turq-med: #00add8;
  --turq-dark: #007d9c;

  --blue: #bfeaf4;
  --black: #000;
  --green: #3a6e11;
  --pink: #ce3262;
  --purple: #542c7d;
  --slate: #253443; /* Footer background. */
  --white: #fff;
  --yellow: #fddd00;
  --yellow-light: #fff8cc;

  --header-height: 3.5rem;
}

*,
:before,
:after {
  box-sizing: border-box;
}
html,
body {
  /**
   * This is used to programatically detect whether overflow needs to be altered
   * to prevent jitter when focusing within fixed elements on iOS.
   * It also must be set to 'touch' for the fix to work.
   */
  -webkit-overflow-scrolling: touch;
  height: 100%;
}
body {
  color: var(--gray-1);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif,
    'Apple Color Emoji', 'Segoe UI Emoji';
  margin: 0;
}
button,
input,
select,
textarea {
  font: inherit;
}
a,
a:link,
a:visited {
  color: var(--turq-dark);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  word-break: break-word;
}
h1,
h2,
h3 {
  font-weight: 600;
}
h4,
h5,
h6 {
  font-weight: 500;
}
h1 {
  font-size: 1.5rem;
}
h2 {
  font-size: 1.125rem;
}
h3 {
  font-size: 1rem;
}
/**
  * As header elements are not interactive, it’s okay to remove the visual
  * indicator. https://css-tricks.com/focus-styles-non-interactive-elements/
  */
h1:focus,
h2:focus,
h3:focus,
h4:focus,
h5:focus,
h6:focus {
  outline: 0;
}
p {
  font-size: 1rem;
  line-height: 1.5rem;
}
.u-breakWord {
  word-break: break-word;
}
code,
pre,
.Documentation textarea {
  font-size: 1rem;
  font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
}

.Site {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
.Site-content {
  flex: 1;
  margin-bottom: 5rem;
  padding: 0 1rem;
}
.Site--redesign.Site--wide .Site-content {
  padding: 0;
}
.Site-footer {
  margin-top: 5rem;
}
@media only screen and (min-width: 57.7rem) {
  .Site-content {
    padding: 0 1.5rem;
  }
  .Site--redesign.Site--wide .Site-content {
    padding: 0;
  }
}
.Site-margin {
  margin: auto;
  max-width: 97rem;
  width: 100%;
  padding-left: 1rem;
  padding-right: 1rem;
}
@media only screen and (min-width: 57.5rem) {
  .Site-margin {
    max-width: 98rem;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}

.Banner {
  /**
   * Only show on wide viewports so the
   * text never wraps or gets cut off.
   */
  display: none;
  background-color: var(--gray-1);
}
.Banner-inner {
  align-items: center;
  display: flex;
  justify-content: space-between;
  margin: 0 auto;
  max-width: 75.75rem;
  min-height: 2.5rem;
  padding: 0.5rem 1.5rem;
}
.Site--wide .Banner-inner {
  max-width: none;
}
.Site--redesign .Banner-inner {
  max-width: 98rem;
}
.Banner-message {
  color: #fff;
  margin-right: 1.25rem;
}
.Banner-action:link,
.Banner-action:visited {
  color: #fff;
  text-decoration: underline;
  white-space: nowrap;
}
@media only screen and (min-width: 52rem) {
  .Banner {
    display: block;
  }
}

.Header {
  margin: 0 auto;
  max-width: 75.75rem;
}
.Site--wide .Header {
  max-width: none;
}
.Site--redesign .Header {
  max-width: 98rem;
}
.Site-header {
  background: var(--turq-dark);
  box-shadow: 0 0.0625rem 0.125rem rgba(171, 171, 171, 0.3);
  width: 100%;
  z-index: 1;
}
.Header-logoLink {
  margin-right: auto;
}
.Header-nav {
  align-items: center;
  display: flex;
  height: var(--header-height);
  justify-content: space-between;
}
.Header-logo {
  display: block;
  height: 2rem;
  margin: 0 2.25rem 0 1rem;
  width: 5.125rem;
}
.Header-menu {
  display: flex;
  list-style: none;
  height: 100%;
  margin: 0;
  padding: 0;
}
.Header-menuItem {
  display: none;
}
@media only screen and (min-width: 57.7rem) {
  .Header {
    padding: 0 1.5rem;
  }
  .Header-logo {
    margin-left: 1.4rem;
  }
  .Header-menuItem {
    display: inline-flex;
    flex: none;
  }
  .Header-menu {
    justify-content: flex-end;
    margin-left: 1.4rem;
  }
  .Header-navOpen {
    display: none;
  }
  .Header-logo {
    margin-left: 0;
  }
}
.Header-menuItem a:link,
.Header-menuItem a:visited {
  align-items: center;
  border-bottom: 0.1875rem solid transparent;
  border-top: 0.1875rem solid transparent; /* To ensure the text remains centered. */
  color: var(--white);
  display: inline-flex;
  margin: 0 0.3125rem;
  padding: 0 0.9375rem;
  text-align: center;
  text-decoration: none;
  width: 100%;
}
.Header-menuItem--active a:link,
.Header-menuItem--active a:visited {
  border-bottom-color: var(--turq-med);
  font-weight: bold;
}
.Header-menuItem a:hover {
  border-bottom-color: var(--white);
}
.Header-navOpen {
  background: no-repeat center/2rem url('/static/img/menu-24px-white.svg');
  border: none;
  height: 2.5rem;
  margin: auto 1rem;
  width: 2.5rem;
}
.Header-searchForm {
  align-items: center;
  background-color: transparent;
  border: 0.0625rem solid transparent;
  border-radius: 0.25rem;
  display: flex;
  font-size: 1rem;
  height: 2rem;
  position: relative;
  width: 2.25rem;
}
.Header-searchForm:focus-within {
  background-color: var(--white);
  border-color: var(--gray-8);
  flex: 1;
  left: 1rem;
  position: absolute;
  width: calc(100% - 5.25rem);
}
.Header-searchFormInput {
  background-color: transparent;
  border: none;
  box-sizing: border-box;
  color: transparent;
  flex: 1;
  height: 100%;
  outline: none;
  position: absolute;
  width: 100%;
}
.Header-searchFormInput::placeholder {
  color: transparent;
}
.Header-searchForm:focus-within .Header-searchFormInput {
  color: var(--gray-1);
  height: auto;
  position: relative;
  width: auto;
}
.Header-searchForm:focus-within .Header-searchFormInput::placeholder {
  color: var(--gray-4);
}
.Header-searchFormSubmit {
  background-color: transparent;
  border: none;
  box-sizing: border-box;
  cursor: pointer;
  display: flex;
}
.Header-searchFormSubmitIcon {
  box-sizing: border-box;
  cursor: pointer;
  fill: var(--white);
  width: 1.4375rem;
}
.Header-searchForm:focus-within .Header-searchFormSubmitIcon {
  fill: var(--gray-4);
}
@media only screen and (min-width: 26.875rem) {
  .Header-searchForm {
    background-color: var(--white);
    border-color: var(--gray-8);
    flex: 1;
    width: auto;
  }
  .Header-searchForm:focus-within {
    left: 0;
    position: relative;
    width: auto;
  }
  .Header-searchFormSubmitIcon {
    fill: var(--gray-4);
  }
  .Header-searchFormInput {
    color: var(--gray-1);
    height: auto;
    position: relative;
    width: auto;
  }
  .Header-searchFormInput::placeholder {
    color: var(--gray-4);
  }
}
.NavigationDrawer {
  background: var(--white);
  display: none;
  height: 100%;
  left: auto;
  max-width: 27rem;
  position: fixed;
  right: 0;
  top: 0;
  width: 85%;
  z-index: 10;
}
.NavigationDrawer.is-active {
  display: initial;
}
.NavigationDrawer-header {
  display: flex;
  justify-content: space-between;
}
.NavigationDrawer-logo {
  display: block;
  height: 2rem;
  margin: 1rem 1rem;
  width: 5.125rem;
}
.NavigationDrawer-close {
  background: no-repeat center/2rem url('/static/img/close-24px.svg');
  border: none;
  height: 2.5rem;
  margin: auto 1rem;
  width: 2.5rem;
}
.NavigationDrawer-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.NavigationDrawer-listItem {
  font-size: 1.5rem;
  margin: 0 0.5rem;
}
.NavigationDrawer-listItem a:link,
.NavigationDrawer-listItem a:visited {
  display: block;
  margin: 0 1rem;
  padding: 1rem;
}
.NavigationDrawer-listItem--active {
  background-color: var(--gray-8);
  border-radius: 0.4rem;
}
.NavigationDrawer-scrim {
  display: none;
  height: 100%;
  left: 0;
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 5;
}
.NavigationDrawer.is-active + .NavigationDrawer-scrim {
  background-color: rgba(0, 0, 0, 0.32);
  display: block;
}

.DetailsHeader-badge {
  border-radius: 1rem;
  display: inline-block;
  font-size: 0.75rem;
  padding: 0.25rem 0.75rem;
  position: relative;
  top: -0.125rem;
}

.DetailsHeader-badge--latest {
  background: var(--turq-dark);
}
.DetailsHeader-badge--latest a {
  display: none;
}
.DetailsHeader-badge--latest span.DetailsHeader-span--notAtLatest {
  display: none;
}

.Error-gopher,
.EmptyContent-gopher,
.Fetch-gopher,
.SearchResults-emptyContentGopher {
  display: block;
  margin: auto;
  max-width: 15rem;
  padding: 1.25rem 0;
}
.Error-message,
.EmptyContent-message,
.SearchResults-emptyContentMessage {
  text-align: center;
}
.Error-gopher,
.EmptyContent-gopher,
.NotFound-gopher,
.SearchResults-emptyContentGopher {
  display: block;
  height: 15rem;
  margin: auto;
  padding: 1.25rem 0;
  width: 15rem;
}
.Error-message,
.EmptyContent-message,
.SearchResults-emptyContentMessage {
  text-align: center;
}

.CopyToClipboardButton {
  background-color: transparent;
  border: none;
  cursor: pointer;
  height: 1.5rem;
  margin: 0 0.5rem;
  position: relative;
}
.CopyToClipboardButton:not([data-tooltip])::before,
.CopyToClipboardButton:not([data-tooltip])::after,
.CopyToClipboardButton[data-tooltip='']::before,
.CopyToClipboardButton[data-tooltip='']::after {
  display: none;
}
.CopyToClipboardButton::before {
  background-color: rgba(0, 0, 0, 0.75);
  border-radius: 3px;
  color: var(--white);
  content: attr(data-tooltip);
  display: block;
  font-size: 0.9em;
  left: calc(100% + 0.125rem);
  position: absolute;
  padding: 0.25rem 0.3rem;
  text-transform: uppercase;
  top: 2px;
  white-space: nowrap;
  z-index: 1000;
}
.CopyToClipboardButton::after {
  border-bottom: 0.25rem solid transparent;
  border-left: 0;
  border-right: 0.25rem solid rgba(0, 0, 0, 0.75);
  border-top: 0.25rem solid transparent;
  content: '';
  display: block;
  position: absolute;
  right: -0.125rem;
  top: 9px;
  z-index: 1000;
}
.CopyToClipboardButton:hover {
  background-color: var(--gray-9);
}
.CopyToClipboardButton:active {
  background-color: var(--gray-8);
}
.CopyToClipboardButton-image {
  display: block;
  height: 0.9375rem;
}

.Container {
  color: var(--gray-1);
  flex-grow: 1;
  margin: 0 auto;
  max-width: 60em;
  position: relative;
}
.Site--wide .Container {
  max-width: none;
}

.Content {
  min-height: 32rem;
  margin: 0 auto;
  max-width: 60em;
  padding: 2rem 0;
}
.Content-header {
  margin: 0;
  font-size: 1.875rem;
}
.Content h2 {
  margin: 0;
}
.Content p {
  color: var(--gray-3);
}

.Dialog {
  padding: 0;
  position: fixed;
  border: 0.0625rem solid rgba(0, 0, 0, 0.2);
  border-radius: 6px;
  box-shadow: 0 0.3125rem 0.9375rem rgba(0, 0, 0, 0.5);
  top: 50%;
  transform: translate(0, -50%);
}
.Dialog-title {
  font-size: 1.125rem;
  padding: 0 0.8rem;
}
.Dialog-actions {
  text-align: right;
  padding: 0.8rem;
}
.Dialog-button {
  background: none;
  border-radius: 0.625rem;
  border: 0.0625rem solid var(--gray-8);
  color: var(--turq-dark);
  font-size: 1rem;
  max-width: 6.25rem;
  padding: 0.625rem;
  text-align: center;
}

/* Used in search bar */
.ImageButton {
  border: none;
  border-radius: 0.2rem;
  cursor: pointer;
  background-color: transparent;
  padding: 0.2rem 0.375rem;
  background-color: transparent;
  display: inline-flex;
}
.ImageButton:hover {
  background-color: var(--gray-9);
}
.ImageButton:active {
  background-color: var(--gray-8);
}

.Site-footer {
  background-color: var(--slate);
  color: var(--white);
  font-size: 0.875rem;
}
.Footer-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin: auto;
  max-width: 75.75rem;
  padding: 2rem 1.5rem 2.625rem 1.5rem;
}
.Footer-linkColumn {
  flex: 0 0 9.5rem;
}
a.Footer-link {
  color: var(--white);
  display: flex;
  flex: 1;
  font-size: 0.875rem;
  line-height: 2rem;
}
a.Footer-link--primary {
  font-size: 1.125rem;
  line-height: 1.75rem;
  margin-bottom: 0.5rem;
  margin-top: 0.75rem;
}
.Footer-bottom {
  align-items: center;
  border-top: 0.0625rem solid var(--gray-8);
  display: flex;
  margin: 0 1.5rem;
  min-height: 4.125rem;
}
.Footer-gopher {
  align-self: flex-end;
  height: 3.147rem;
  width: 5rem;
}
.Footer-listRow {
  display: flex;
  flex: 1;
  flex-wrap: wrap;
  list-style: none;
  margin: 0;
  padding: 0;
  text-align: center;
}
.Footer-listItem {
  align-items: center;
  display: flex;
  flex: 1 100%;
  justify-content: center;
  margin: 0.4rem 0;
  padding: 0 1rem;
}
.Footer-listItem a:link,
.Footer-listItem a:visited {
  color: var(--white);
}
@media only screen and (min-width: 52rem) {
  .Footer-listItem {
    flex: initial;
  }
  .Footer-listItem + .Footer-listItem {
    border-left: 0.0625rem solid var(--gray-7);
  }
}
.Footer-googleLogo {
  align-self: flex-end;
  height: 1.5rem;
  margin-bottom: 1.3rem;
  text-align: right;
}
.Footer-googleLogoImg {
  height: 1.5rem;
  width: 4.529rem;
}
.Container--fullBleed {
  margin: 0;
  max-width: none;
}
