/*
 * 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: #92e1f3;
  --green: #00a29c;
  --pink: #ce3262;
  --purple: #542c7d;
  --slate: #253443; /* Footer background. */
  --white: #fff;
  --yellow: #fddd00;

  --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: Roboto, Arial, sans-serif;
  margin: 0;
}
a,
a:link,
a:visited {
  color: var(--turq-dark);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: 'Work Sans', arial, sans-serif;
  word-break: break-word;
}
h1,
h2,
h3 {
  font-weight: bold;
}
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 {
  font-size: 1rem;
  font-family: 'Source Code Pro', monospace;
}

.Site {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
.Site-content {
  flex: 1;
  padding: 0 1rem;
}
.Site-footer {
  margin-top: 5rem;
}
@media only screen and (min-width: 57.7rem) {
  .Site-content {
    padding: 0 1.5rem;
  }
}

.FeedbackButton {
  cursor: pointer;
}
.AutoComplete-list {
  margin: 0 0.5rem 0 0;
  list-style: none;
  padding: 0;
}
.AutoComplete-list li:first-child {
  border-top: 0.0625rem solid var(--gray-8);
  margin-top: 0.3125rem;
}
.AutoComplete-list li {
  padding: 0.25rem 0;
  text-overflow: ellipsis;
  overflow: hidden;
  cursor: pointer;
}
.AutoComplete-list li:hover,
.AutoComplete-list li[aria-selected='true'] {
  background-color: var(--gray-9);
}

.Banner {
  /**
   * Only show on wide viewports so the
   * text never wraps or gets cut off.
   */
  display: none;
  background-color: #000;
}
.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;
}
.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-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-top-color: var(--turq-med);
  font-weight: bold;
}
.Header-menuItem a:hover {
  border-top-color: var(--pink);
}
.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;
  font: inherit;
  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 {
  margin-top: 0.75rem;
}
.DetailsHeader-banner {
  align-items: center;
  background-color: var(--gray-10);
  display: flex;
  justify-content: flex-start;
  padding-top: 0.1rem;
}
.DetailsHeader-banner--latest {
  display: none;
}
.DetailsHeader-infoIcon {
  color: var(--gray-3);
  flex-shrink: 0;
  margin-left: 1rem;
  margin-right: 0.7rem;
  width: 1.3rem;
}
.DetailsHeader-breadcrumb {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  word-break: break-word;
}
.DetailsHeader-main {
  margin-top: 0.25rem;
}
.DetailsHeader-title {
  display: inline-block;
  font-size: 1.875rem;
  margin: 0;
  height: 2.1875rem;
}
.DetailsHeader-version {
  display: inline-block;
  margin: 0 0.5rem;
}
.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(--blue);
}
.DetailsHeader-badge--latest a {
  display: none;
}
.DetailsHeader-badge--goToLatest {
  background: var(--pink);
}
.DetailsHeader-badge--goToLatest a {
  color: var(--white);
}
.DetailsHeader-badge--goToLatest span {
  display: none;
}
.DetailsHeader-badge--unknown a {
  display: none;
}
.DetailsHeader-badge--unknown span {
  display: none;
}
.DetailsHeader-breadcrumbCurrent {
  color: var(--gray-3);
}
.DetailsHeader-breadcrumbDivider {
  color: var(--gray-3);
  margin: 0 0.3rem;
}

.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;
}
.Fetch-button {
  background-color: var(--gray-10);
  border-radius: 0.5rem;
  border: 0.0625rem solid var(--gray-8);
  color: var(--turq-dark);
  font-size: 1rem;
  height: 2.5rem;
  margin: 1rem 0;
  min-width: 5rem;
  padding: 0rem 1rem;
}
.Fetch-container {
  align-items: center;
  display: flex;
  flex-flow: column;
}
@keyframes blink {
  0% {
    opacity: 0.2;
  }
  20% {
    opacity: 1;
  }
  100% {
    opacity: 0.2;
  }
}
.Fetch-dot {
  animation-duration: 1.4s;
  animation-fill-mode: both;
  animation-iteration-count: infinite;
  animation-name: blink;
  background-color: var(--turq-dark);
  border-radius: 50%;
  display: inline-block;
  height: 0.5rem;
  width: 0.5rem;
}
.Fetch-loading {
  display: none;
}
.Fetch-loading:nth-child(2) {
  animation-delay: 0.2s;
}
.Fetch-loading:nth-child(3) {
  animation-delay: 0.4s;
}
.Fetch-message,
.Fetch-messageSecondary {
  text-align: center;
}

.SearchResults {
  margin: 0 auto;
  max-width: 60em;
  padding: 2rem 0;
}
.SearchResults-header {
  font-size: 1.875rem;
  margin: 0;
}
.SearchResults-help {
  margin-top: 0.3125rem;
}
.SearchResults-resultCount {
  color: var(--gray-3);
  margin-top: 1.125rem;
  margin-bottom: 0.625rem;
  display: flex;
  justify-content: space-between;
}
.SearchResults-footer {
  display: flex;
  justify-content: flex-end;
}
.Error-gopher,
.EmptyContent-gopher,
.NotFound-gopher,
.SearchResults-emptyContentGopher {
  display: block;
  margin: auto;
  padding: 1.25rem 0;
  width: 15rem;
}
.Error-message,
.EmptyContent-message,
.NotFound-message,
.SearchResults-emptyContentMessage {
  text-align: center;
}
.NotFound-container {
  display: flex;
  justify-content: center;
}
.NotFound-button {
  height: 2.5rem;
  font-size: 1rem;
  border-radius: 1rem;
  background-color: var(--turq-dark);
  color: white;
  padding: 0rem 2rem;
}
.NotFound-button-disabled {
  height: 2.5rem;
  font-size: 1rem;
  border-radius: 1rem;
  background-color: var(--gray-5);
  color: white;
  padding: 0rem 2rem;
}
.SearchSnippet {
  border-top: 0.0625rem solid var(--gray-8);
  padding: 1rem 0;
}
.SearchSnippet:only-of-type,
.SearchSnippet:last-of-type {
  border-bottom: 0.0625rem solid var(--gray-8);
  margin-bottom: 1rem;
}
.SearchSnippet-header {
  margin: 0 0 0.3125rem;
  font-size: 1.5rem;
}
.SearchSnippet-synopsis {
  color: var(--gray-3);
  margin: 0 0 1rem;
}
.SearchSnippet-infoLabel {
  font-size: 0.875rem;
  line-height: 1.375rem;
}
.SearchResults .Pagination-nav,
.SearchResults-help,
.SearchResults-resultCount {
  font-size: 0.875rem;
  flex-wrap: wrap;
}

.Pagination-nav {
  display: flex;
}
.Pagination-navInner {
  display: flex;
  flex: 1;
  justify-content: space-between;
}
.Pagination-previous[aria-disabled='true'],
.Pagination-next[aria-disabled='true'] {
  color: var(--gray-6);
}
.Pagination-number {
  padding: 0 6px;
  color: var(--gray-1);
}

@media only screen and (min-width: 800px) {
  .SearchResults .Pagination-nav,
  .SearchResults-help,
  .SearchResults-resultCount {
    font-size: 1.125rem;
    flex-wrap: wrap;
  }
  .Pagination-navInner {
    max-width: 400px;
  }
  .Pagination-previous {
    margin-right: 12px;
  }
  .Pagination-next {
    margin-left: 12px;
  }
}

.Overview-module {
  border-bottom: 0.0625rem solid var(--gray-8);
  padding-bottom: 2rem;
  padding-top: 0.5rem;
}
.Overview-sourceCode {
  border-bottom: 0.0625rem solid var(--gray-8);
  padding-bottom: 2rem;
}
.Overview-sourceCodeLink {
  margin: 0;
}
.Overview-readme {
  padding-top: 1rem;
}
.Overview-readmeContainer {
  border: 0.0625rem solid var(--gray-8);
  border-radius: 0.5rem;
  height: 100%;
  padding: 1.625rem;
  padding-top: 0.5rem;
}
.Overview-readme img {
  max-width: 100%;
}
.Overview-readme pre {
  overflow-x: auto;
}
.Overview-readmeContent {
  overflow-wrap: break-word;
}
.Overview-readmeSource {
  color: var(--gray-3);
  font-size: 0.875rem;
  text-align: right;
  margin-top: 1.5rem;
  font-style: italic;
}
.DetailsContent {
  min-height: 32rem;
  margin: 0 auto;
  max-width: 60em;
}
.Site--wide .DetailsContent {
  max-width: none;
}
.DetailsContent :target::before {
  content: ' ';
  display: block;
  height: calc(var(--header-height) + 0.75rem);
  margin-top: calc(
    -1 * (var(--header-height) + 0.75rem)
  ); /* Move hidden anchor content for deep linking with a sticky header. */
  pointer-events: none;
  visibility: hidden;
}

.CopyToClipboardButton {
  background-color: transparent;
  border: none;
  cursor: pointer;
  height: 1.5rem;
  margin: 0 0.5rem;
  position: relative;
  width: 1.5rem;
}
.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;
  width: 0.8125rem;
}

.DetailsNav {
  align-items: center;
  border-bottom: 0.0625rem solid var(--gray-8);
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  min-width: 0;
  position: relative;
}
.DetailsNav [aria-hidden='true'] {
  display: none;
}
.DetailsNav [role='tablist'] {
  white-space: nowrap;
}
.DetailsNav [role='tab'] {
  color: var(--gray-2);
  display: inline-block;
}
.DetailsNav [role='tab'] + [role='tab'] {
  margin-left: 1rem;
}
.DetailsNav [role='tab'],
.DetailsNav [role='tab']:link,
.DetailsNav [role='tab']:visited {
  border-bottom: 2px solid transparent;
  display: inline-block;
  color: inherit;
  padding: 0.625rem 0.5rem;
}
.DetailsNav [role='tab']:hover {
  border-bottom-color: var(--purple);
  text-decoration: none;
}
.DetailsNav [role='tab'][aria-disabled='true'],
.DetailsNav [role='tab'][aria-disabled='true']:hover {
  border-bottom-color: transparent;
  color: var(--gray-5);
  cursor: not-allowed;
}
.DetailsNav [role='tab'][aria-selected='true'] {
  border-bottom: 2px solid var(--turq-med);
  color: var(--gray-1);
  font-weight: bold;
}
.DetailsNav [role='tab'][aria-hidden='true'] {
  display: none;
}
.DetailsNav-overflowContainer {
  display: none;
  height: 1.5rem;
  position: absolute;
  right: 0;
  top: 0.4375rem;
  width: 1.5rem;
}
.DetailsNav.is-overflowing .DetailsNav-overflowContainer {
  display: block;
}
.DetailsNav-overflowImage {
  fill: var(--gray-3);
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.DetailsNav-overflowSelect {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
  color: transparent;
  cursor: pointer;
  font-size: 1rem;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
/**
 * Firefox allows for styling of option and optgroup tags.
 * Ensure they don’t inherit the clear styling of their parent.
 */
.DetailsNav-overflowSelect option {
  color: var(--gray-1);
}

.DetailsNavFixed {
  background-color: var(--gray-10);
  border-bottom: 1px solid var(--gray-8);
  height: var(--header-height);
  position: fixed;
  top: 0;
  left: 0;
  transition: transform 100ms linear;
  width: 100%;
  z-index: 1000;
}
.DetailsNavFixed[aria-hidden='true'] {
  transform: translateY(calc(var(--header-height) * -1));
}
.DetailsNavFixed [aria-hidden='true'] {
  display: none;
}
.DetailsNavFixed-container {
  align-items: center;
  display: flex;
  height: 100%;
  margin: 0 auto;
  max-width: 75.75rem;
  padding: 0 0.5rem;
  position: relative;
}
.Site--wide .DetailsNavFixed-container {
  max-width: none;
}
.DetailsNavFixed-logoLink {
  margin-right: 1rem;
}
.DetailsNavFixed-logo {
  display: block;
  height: 1.695625;
  width: 4.5rem;
}
.DetailsNavFixed-moduleInfo {
  align-items: baseline;
  display: flex;
  flex-wrap: nowrap;
  margin-right: 3rem;
  min-width: 0;
}
.DetailsNavFixed-title {
  font: 600 1.125rem/1.5 'Work Sans', arial, sans-serif;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.DetailsNavFixed-titleType {
  display: none;
}
.DetailsNavFixed-titleType--small {
  display: inline;
}
@media only screen and (min-width: 25rem) {
  .DetailsNavFixed-titleType {
    display: inline;
  }
  .DetailsNavFixed-titleType--small {
    display: none;
  }
}
.DetailsNavFixed .CopyToClipboardButton {
  top: 0.1875rem;
}
.DetailsNavFixed-pathInput {
  left: -100vw;
  position: absolute;
  top: -100vh;
}
.DetailsNavFixed-version {
  color: var(--gray-2);
  font-size: 0.6875rem;
  position: relative;
}
@media only screen and (min-width: 37.5rem) {
  .DetailsNavFixed-container {
    padding: 0 1rem 0 1.5rem;
  }
  .DetailsNavFixed-logo {
    height: 1.9541rem;
    width: 5.1875rem;
  }
  .DetailsNavFixed-title {
    font-size: 1.5rem;
  }
  .DetailsNavFixed .CopyToClipboardButton {
    top: 0.0625rem;
  }
  .DetailsNavFixed-version {
    top: -0.125rem;
  }
}
.DetailsNavFixed-overflowingTabList {
  display: flex;
  flex: 1;
  height: 100%;
  min-width: 0;
  position: relative;
}
.DetailsNavFixed [role='tablist'] {
  display: flex;
  flex: 1;
  height: 100%;
  justify-content: flex-end;
  margin: 0;
  padding: 0;
}
.DetailsNavFixed [role='tab'] + [role='tab'] {
  margin-left: 1rem;
}
.DetailsNavFixed [role='tab'] {
  border-bottom: 0.25rem solid transparent;
  display: block;
  height: 100%;
  padding: 1.3125rem 0.5rem 0 0.5rem;
  white-space: nowrap;
}
.DetailsNavFixed [role='tab']:hover {
  border-bottom-color: var(--purple);
  text-decoration: none;
}
.DetailsNavFixed [role='tab'][aria-selected='true'] {
  border-bottom-color: var(--turq-dark);
}
.DetailsNavFixed [role='tab'][aria-hidden='true'] {
  display: none;
}
.DetailsNavFixed [role='tab'][aria-disabled='true'],
.DetailsNavFixed [role='tab'][aria-disabled='true']:hover {
  border-bottom-color: transparent;
  color: var(--gray-5);
  cursor: not-allowed;
}
.DetailsNavFixed-overflowContainer {
  display: none;
  height: 1.5rem;
  position: absolute;
  right: 0.0625rem;
  top: 1.125rem;
  width: 1.5rem;
}
.DetailsNavFixed-overflowingTabList.is-overflowing {
  padding-right: 1.5rem;
}
.DetailsNavFixed-overflowingTabList.is-overflowing .DetailsNavFixed-overflowContainer {
  display: block;
}
.DetailsNavFixed-overflowImage {
  fill: var(--gray-3);
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.DetailsNavFixed-overflowSelect {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
  color: transparent;
  cursor: pointer;
  font-size: 1rem;
  height: 100%;
  left: 0;
  position: absolute;
  top: 0;
  width: 100%;
}
.DetailsNavFixed-overflowSelect option {
  color: var(--gray-1);
}

.Container {
  color: var(--gray-1);
  margin: 0 auto;
  max-width: 60em;
  position: relative;
}
.Site--wide .Container {
  max-width: none;
}
.GodocButton,
.GodocButton:link,
.GodocButton:visited {
  border: 0.0625rem solid var(--gray-8);
  border-radius: 0.1875rem;
  cursor: pointer;
  display: block;
  font-size: 14px;
  font-weight: bold;
  margin: 1rem 0;
  padding: 0.5rem 1.25rem;
  text-align: center;
}
.GodocButton:hover {
  text-decoration: none;
}
.GodocButton[href=''],
.GodocButton:link[href=''],
.GodocButton:visited[href=''] {
  display: none;
}
@media only screen and (min-width: 57.7rem) {
  .GodocButton,
  .GodocButton:link,
  .GodocButton:visited {
    display: inline-block;
    margin: 0;
    position: absolute;
    right: 0;
    top: 0;
  }
}
.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);
}

.License-contents {
  background-color: var(--gray-10);
  border: 0.0625rem solid var(--gray-8);
  border-radius: 3px;
  font: 0.875rem/1.375rem 'Source Code Pro', monospace;
  margin: 0;
  overflow-x: auto;
  padding: 1.5rem;
  tab-size: 4;
}
.License-source {
  font-size: 0.875rem;
  color: var(--gray-3);
  padding-top: 0.5rem;
}
.Disclaimer-link {
  font-style: italic;
}

.DocNav,
.DocNavMobile {
  display: none;
}
.DocNav-files {
  /* This property will be removed once the documentation has been reprocessed
     and "Package Files" is listed in the left side nav.*/
  display: none;
}
/**
 * Some versions of the doc template have DocNav also on elements with these
 * classes, which we don’t want to hide unless the sidenav experiment is active.
 * TODO: Remove once HTML has been transitioned to use new markup.
 */
.Documentation-nav.DocNav,
.Documentation-toc.DocNav {
  display: block;
}

.Documentation {
  color: var(--gray-1);
}
.Documentation h2,
.Documentation h3 {
  font-size: 1.5rem;
}
.Documentation a {
  color: var(--turq-dark);
  text-decoration: none;
}
.Documentation a:hover {
  text-decoration: underline;
}
.Documentation h2 a,
.Documentation h3 a,
.Documentation summary a {
  opacity: 0;
}
.Documentation a:focus {
  opacity: 1;
}
.Documentation h3 a.Documentation-source {
  opacity: 1;
}
.Documentation h2:hover a,
.Documentation h3:hover a,
.Documentation summary:hover a,
.Documentation summary:focus a {
  opacity: 1;
}
.Documentation ul {
  line-height: 1.5rem;
  list-style: none;
  padding-left: 0;
}
.Documentation ul ul {
  padding-left: 2em;
}
.Documentation code,
.Documentation pre {
  background-color: var(--gray-10);
  border-radius: 0.3em;
  border: 0.0625rem solid #ccc;
  font: 0.875rem/1.375rem 'Source Code Pro', monospace;
  margin: 0;
  overflow-x: auto;
  padding: 0.625rem;
  tab-size: 4;
  line-height: 1.25rem;
}
.Documentation pre + pre {
  margin-top: 0.625rem;
}
.Documentation pre .comment {
  color: #060;
}

.Documentation-toc,
.Documentation-overview,
.Documentation-index,
.Documentation-examples {
  padding-bottom: 0;
}

.Documentation-tocItem--constants,
.Documentation-tocItem--funcsAndTypes,
.Documentation-tocItem--functions,
.Documentation-tocItem--types,
.Documentation-tocItem--variables,
.Documentation-tocItem--notes {
  display: none;
}

.Documentation-overviewHeader,
.Documentation-indexHeader,
.Documentation-constantsHeader,
.Documentation-variablesHeader,
.Documentation-examplesHeader,
.Documentation-filesHeader,
.Documentation-functionHeader,
.Documentation-typeHeader,
.Documentation-typeMethodHeader,
.Documentation-typeFuncHeader {
  margin-bottom: 0.5rem;
}

.Documentation-build {
  color: var(--gray-3);
  font-size: 0.875rem;
  padding-top: 1.5rem;
  text-align: right;
}
.Documentation-exampleButtonsContainer {
  align-items: center;
  display: flex;
  justify-content: flex-end;
  margin-top: 0.5rem;
}
.Documentation-exampleButtonsContainer button {
  background-color: var(--white);
  border: 0.15rem solid var(--turq-med);
  color: var(--turq-med);
  cursor: pointer;
  flex-shrink: 0;
  height: 2.5rem;
  width: 4.125rem;
}
.Documentation-exampleDetails {
  margin-top: 1rem;
}
.Documentation-exampleDetailsBody pre {
  margin: 1rem 0;
}
/**
 * We add another selector here to these two classes to increase CSS specificity,
 * the selector .Documentation pre + pre overrides .Documentation-exampleCode
 * and .Documentation-exampleOutput by itself and would replace the styles.
 */
.Documentation-exampleDetailsBody .Documentation-exampleCode {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  margin: 0;
}
.Documentation-exampleDetailsBody .Documentation-exampleOutput {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  margin: 0 0 0.5rem;
}
.Documentation-exampleDetailsHeader {
  color: var(--turq-dark);
  cursor: pointer;
  margin-bottom: 2rem;
  outline: none;
  text-decoration: none;
}
.Documentation-exampleError {
  color: var(--pink);
  margin-right: 0.4rem;
  padding-right: 0.5rem;
}
.Documentation-filesList {
  column-count: 3;
  column-width: 12.5rem;
  word-break: break-all;
}

.Versions-list {
  list-style: none;
  padding-left: 1rem;
}
.Versions-list li {
  font-size: 1.125rem;
  margin-bottom: 0.5rem;
  line-height: 1.5rem;
  padding-left: 1rem;
}
.Versions-item {
  margin-left: 1rem;
}
.Versions-commitTime {
  color: var(--gray-3);
  font-weight: 400;
  font-size: 1rem;
}
.Versions-modulePath {
  color: var(--gray-3);
  font-size: 1rem;
  font-family: Roboto, Arial, sans-serif;
  font-weight: normal;
}
.Versions-separator {
  border-bottom: 0.0625rem solid var(--gray-8);
  margin: 2rem 0;
}

.Imports-list {
  list-style: none;
  padding: 0;
}
.Imports-heading {
  font-size: 1.125rem;
  line-height: 1.125rem;
}

.ImportedBy-list {
  list-style: none;
  padding: 0;
}
.ImportedBy .Pagination-nav,
.ImportedBy .Pagination-navInner {
  justify-content: flex-start;
}

.DetailsHeader-infoLabel {
  font-size: 0.875rem;
  line-height: 1.375rem;
  margin: 0.5rem 0;
}
.DetailsHeader-infoLabelTitle {
  color: var(--gray-1);
}
.DetailsHeader-infoLabelDivider {
  color: var(--gray-5);
  display: inline-block;
  margin: 0 0.625rem;
}

table.Directories {
  margin-top: 1.5rem;
  max-width: 800px;
}
.Directories td {
  border-bottom: 0.0625rem solid var(--gray-8);
  max-width: 30rem;
  padding: 0.75rem 0;
  padding-right: 1rem;
}
.Directories th {
  text-align: left;
  border-bottom: 0.0625rem solid var(--gray-8);
  padding-right: 1rem;
  padding-bottom: 0.5rem;
}
.Directories-moduleTag {
  background-color: var(--blue);
  border-radius: 0.15rem;
  color: var(--gray-1);
  font-size: 0.74rem;
  padding: 0.2rem 0.4rem;
}
.Directory-header {
  margin-bottom: 2rem;
}

.Details-content {
  margin-left: 40px;
}
.Details-indent {
  margin-left: 1.1rem;
}

.Badge-formElement {
  display: block;
  font-size: 1rem;
  margin-top: 1rem;
}
.Badge-badgeIcon {
  height: 20px;
  width: 90px;
}
.Badge-previewLink,
.Badge-formElement > input {
  display: block;
  margin-top: 1rem;
  max-width: 50.25rem;
}
.Badge-formElement > input {
  border: 0.0625rem solid var(--gray-8);
  border-radius: 0.25rem;
  color: var(--gray-4);
  font-family: inherit;
  height: 3rem;
  padding: 0 2rem 0 0.75rem;
  text-overflow: ellipsis;
  width: 100%;
}
.Badge-formElement > input:focus::placeholder {
  color: transparent;
}
.Badge-clickToCopy {
  background: var(--gray-10) url('/static/img/copy-click.svg') right no-repeat;
  background-position: right 0.75rem center;
}
.Badge-submitButton {
  border: none;
  border-radius: 0.25rem;
  background-color: var(--turq-dark);
  color: var(--white);
  cursor: pointer;
  font-family: inherit;
  height: 2.75rem;
  width: 7.125rem;
}
.Badge-snippetContainer {
  background-color: var(--gray-10);
  display: block;
  margin-top: 1rem;
  max-width: 50.25rem;
  padding: 1rem;
}
.Badge-gopherLanding {
  height: 12.25rem;
  text-align: center;
}
.Badge-gopherLanding img {
  height: 125px;
  width: auto;
}

/* dialogs, including the jump-to-identifier dialog on documentation pages */

.Dialog {
  padding: 0;
  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);
}
.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;
}

.JumpDialog {
  width: 25rem;
}
.JumpDialog-body {
  height: 12rem;
  overflow-y: scroll;
  padding: 0 0 0 0.8rem;
}
.JumpDialog-list {
  display: flex;
  flex-direction: column;
}
.JumpDialog-filter {
  margin: 0.5rem 0.8rem;
}
.JumpDialog-input {
  width: 100%;
  font-size: 1.125rem;
}
.JumpDialog a {
  text-decoration: none;
  padding: 0.25rem;
}
.JumpDialog .JumpDialog-active {
  color: var(--white);
  background-color: var(--turq-dark);
}

.ShortcutsDialog-key {
  text-align: right;
}
.ShortcutsDialog table {
  padding: 0 1rem;
}

.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-feedbackButton {
  background: none;
  border: none;
  color: var(--white);
  font-size: 0.875rem;
  padding: 0;
}
.Footer-feedbackButton:hover {
  cursor: pointer;
  text-decoration: underline;
}
.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;
}

/* ---------- */
/*
/* The CSS classes below are generated using content/static/css/main.go
/* To update, delete the contents below and and run go run content/static/css/main.go
/*
/* ---------- */

.Overview-readmeContent details {
  display: block;
}
.Overview-readmeContent summary {
  display: list-item;
}
.Overview-readmeContent a {
  background-color: initial;
}
.Overview-readmeContent a:active,
.Overview-readmeContent a:hover {
  outline-width: 0;
}
.Overview-readmeContent strong {
  font-weight: inherit;
  font-weight: bolder;
}
.Overview-readmeContent h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
.Overview-readmeContent img {
  border-style: none;
}
.Overview-readmeContent code,
.Overview-readmeContent kbd,
.Overview-readmeContent pre {
  font-family: monospace, monospace;
  font-size: 1em;
}
.Overview-readmeContent hr {
  box-sizing: initial;
  height: 0;
  overflow: visible;
}
.Overview-readmeContent input {
  font: inherit;
  margin: 0;
}
.Overview-readmeContent input {
  overflow: visible;
}
.Overview-readmeContent [type='checkbox'] {
  box-sizing: border-box;
  padding: 0;
}
.Overview-readmeContent * {
  box-sizing: border-box;
}
.Overview-readmeContent input {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
.Overview-readmeContent a {
  color: #0366d6;
  text-decoration: none;
}
.Overview-readmeContent a:hover {
  text-decoration: underline;
}
.Overview-readmeContent strong {
  font-weight: 600;
}
.Overview-readmeContent hr {
  height: 0;
  margin: 15px 0;
  overflow: hidden;
  background: transparent;
  border: 0;
  border-bottom: 1px solid #dfe2e5;
}
.Overview-readmeContent hr:after,
.Overview-readmeContent hr:before {
  display: table;
  content: '';
}
.Overview-readmeContent hr:after {
  clear: both;
}
.Overview-readmeContent table {
  border-spacing: 0;
  border-collapse: collapse;
}
.Overview-readmeContent td,
.Overview-readmeContent th {
  padding: 0;
}
.Overview-readmeContent details summary {
  cursor: pointer;
}
.Overview-readmeContent kbd {
  display: inline-block;
  padding: 3px 5px;
  font: 11px SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
  line-height: 10px;
  color: #444d56;
  vertical-align: middle;
  background-color: #fafbfc;
  border: 1px solid #d1d5da;
  border-radius: 3px;
  box-shadow: inset 0 -1px 0 #d1d5da;
}
.Overview-readmeContent h1,
.Overview-readmeContent h2,
.Overview-readmeContent h3,
.Overview-readmeContent h4,
.Overview-readmeContent h5,
.Overview-readmeContent h6 {
  margin-top: 0;
  margin-bottom: 0;
}
.Overview-readmeContent h1 {
  font-size: 32px;
}
.Overview-readmeContent h1,
.Overview-readmeContent h2 {
  font-weight: 600;
}
.Overview-readmeContent h2 {
  font-size: 24px;
}
.Overview-readmeContent h3 {
  font-size: 20px;
}
.Overview-readmeContent h3,
.Overview-readmeContent h4 {
  font-weight: 600;
}
.Overview-readmeContent h4 {
  font-size: 16px;
}
.Overview-readmeContent h5 {
  font-size: 14px;
}
.Overview-readmeContent h5,
.Overview-readmeContent h6 {
  font-weight: 600;
}
.Overview-readmeContent h6 {
  font-size: 12px;
}
.Overview-readmeContent p {
  margin-top: 0;
  margin-bottom: 10px;
}
.Overview-readmeContent blockquote {
  margin: 0;
}
.Overview-readmeContent ol,
.Overview-readmeContent ul {
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0;
}
.Overview-readmeContent ol ol,
.Overview-readmeContent ul ol {
  list-style-type: lower-roman;
}
.Overview-readmeContent ol ol ol,
.Overview-readmeContent ol ul ol,
.Overview-readmeContent ul ol ol,
.Overview-readmeContent ul ul ol {
  list-style-type: lower-alpha;
}
.Overview-readmeContent dd {
  margin-left: 0;
}
.Overview-readmeContent code,
.Overview-readmeContent pre {
  font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
  font-size: 12px;
}
.Overview-readmeContent pre {
  margin-top: 0;
  margin-bottom: 0;
}
.Overview-readmeContent input::-webkit-inner-spin-button,
.Overview-readmeContent input::-webkit-outer-spin-button {
  margin: 0;
  -webkit-appearance: none;
  appearance: none;
}
.Overview-readmeContent :checked + .radio-label {
  position: relative;
  z-index: 1;
  border-color: #0366d6;
}
.Overview-readmeContent hr {
  border-bottom-color: #eee;
}
.Overview-readmeContent kbd {
  display: inline-block;
  padding: 3px 5px;
  font: 11px SFMono-Regular, Consolas, Liberation Mono, Menlo, monospace;
  line-height: 10px;
  color: #444d56;
  vertical-align: middle;
  background-color: #fafbfc;
  border: 1px solid #d1d5da;
  border-radius: 3px;
  box-shadow: inset 0 -1px 0 #d1d5da;
}
.Overview-readmeContent a:not([href]) {
  color: inherit;
  text-decoration: none;
}
.Overview-readmeContent blockquote,
.Overview-readmeContent details,
.Overview-readmeContent dl,
.Overview-readmeContent ol,
.Overview-readmeContent p,
.Overview-readmeContent pre,
.Overview-readmeContent table,
.Overview-readmeContent ul {
  margin-top: 0;
  margin-bottom: 16px;
}
.Overview-readmeContent hr {
  height: 0.25em;
  padding: 0;
  margin: 24px 0;
  background-color: #e1e4e8;
  border: 0;
}
.Overview-readmeContent blockquote {
  padding: 0 1em;
  color: #6a737d;
  border-left: 0.25em solid #dfe2e5;
}
.Overview-readmeContent blockquote > :first-child {
  margin-top: 0;
}
.Overview-readmeContent blockquote > :last-child {
  margin-bottom: 0;
}
.Overview-readmeContent h1,
.Overview-readmeContent h2,
.Overview-readmeContent h3,
.Overview-readmeContent h4,
.Overview-readmeContent h5,
.Overview-readmeContent h6 {
  margin-top: 24px;
  margin-bottom: 16px;
  font-weight: 600;
  line-height: 1.25;
}
.Overview-readmeContent h1 {
  font-size: 2em;
}
.Overview-readmeContent h1,
.Overview-readmeContent h2 {
  padding-bottom: 0.3em;
  border-bottom: 1px solid #eaecef;
}
.Overview-readmeContent h2 {
  font-size: 1.5em;
}
.Overview-readmeContent h3 {
  font-size: 1.25em;
}
.Overview-readmeContent h4 {
  font-size: 1em;
}
.Overview-readmeContent h5 {
  font-size: 0.875em;
}
.Overview-readmeContent h6 {
  font-size: 0.85em;
  color: #6a737d;
}
.Overview-readmeContent ol,
.Overview-readmeContent ul {
  padding-left: 2em;
}
.Overview-readmeContent ol ol,
.Overview-readmeContent ol ul,
.Overview-readmeContent ul ol,
.Overview-readmeContent ul ul {
  margin-top: 0;
  margin-bottom: 0;
}
.Overview-readmeContent li {
  word-wrap: break-all;
}
.Overview-readmeContent li > p {
  margin-top: 16px;
}
.Overview-readmeContent li + li {
  margin-top: 0.25em;
}
.Overview-readmeContent dl {
  padding: 0;
}
.Overview-readmeContent dl dt {
  padding: 0;
  margin-top: 16px;
  font-size: 1em;
  font-style: italic;
  font-weight: 600;
}
.Overview-readmeContent dl dd {
  padding: 0 16px;
  margin-bottom: 16px;
}
.Overview-readmeContent table {
  display: block;
  width: 100%;
  overflow: auto;
}
.Overview-readmeContent table th {
  font-weight: 600;
}
.Overview-readmeContent table td,
.Overview-readmeContent table th {
  padding: 6px 13px;
  border: 1px solid #dfe2e5;
}
.Overview-readmeContent table tr {
  background-color: #fff;
  border-top: 1px solid #c6cbd1;
}
.Overview-readmeContent table tr:nth-child(2n) {
  background-color: #f6f8fa;
}
.Overview-readmeContent img {
  max-width: 100%;
  box-sizing: initial;
  background-color: #fff;
}
.Overview-readmeContent img[align='right'] {
  padding-left: 20px;
}
.Overview-readmeContent img[align='left'] {
  padding-right: 20px;
}
.Overview-readmeContent code {
  padding: 0.2em 0.4em;
  margin: 0;
  font-size: 85%;
  background-color: rgba(27, 31, 35, 0.05);
  border-radius: 3px;
}
.Overview-readmeContent pre {
  word-wrap: normal;
}
.Overview-readmeContent pre > code {
  padding: 0;
  margin: 0;
  font-size: 100%;
  word-break: normal;
  white-space: pre;
  background: transparent;
  border: 0;
}
.Overview-readmeContent pre {
  padding: 16px;
  overflow: auto;
  font-size: 85%;
  line-height: 1.45;
  background-color: #f6f8fa;
  border-radius: 3px;
}
.Overview-readmeContent pre code {
  display: inline;
  max-width: auto;
  padding: 0;
  margin: 0;
  overflow: visible;
  line-height: inherit;
  word-wrap: normal;
  background-color: initial;
  border: 0;
}

/* ---------- */
/*
/* End output from content/static/css/main.go.
/*
/* ---------- */
