/*
 * Copyright 2019 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-text: #007d9c;

  --blue: #92e1f3;
  --green: #00a29c;
  --pink: #ce3262;
  --purple: #542c7d;
  --slate: #253443; /* Footer background. */
  --white: #fff;
  --yellow: #fddd00;
}

*,
:before,
:after {
  box-sizing: border-box;
}
html {
  height: 100%;
}
body {
  color: var(--gray-1);
  font-family: Roboto, Arial, sans-serif;
  margin: 0;
}
a,
a:link,
a:visited {
  color: var(--turq-text);
  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;
}
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;
}

.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;
}
.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;
  }
}

.SearchForm[aria-expanded='false'] .AutoComplete-list,
.Header-searchForm[aria-expanded='false'] .AutoComplete-list {
  display: none;
}
/* This class violates the style guide, because it set by autoComplete.js and
 * is non-trivial to override. */
.autoComplete_highlighted {
  font-weight: bold;
}

.SearchForm-container {
  position: relative;
  margin: 0 auto;
  height: 3rem;
  max-width: 38.25rem;
}
.SearchForm {
  position: absolute;
  left: 0;
  right: 0;
  border: 0.0625rem solid var(--gray-8);
  border-radius: 1.4em;
  background-color: white;
  font-size: 1rem;
  padding: 0.5rem 0.5rem 0.5rem 1rem;
}
.Experiment-autoComplete .SearchForm:hover,
.Experiment-autoComplete .SearchForm:focus-within,
.Experiment-autoComplete .Header-searchForm:hover,
.Experiment-autoComplete .Header-searchForm:focus-within {
  box-shadow: 0 0 0.1875rem rgba(0, 0, 0, 0.3);
}
.SearchForm-firstRow {
  display: flex;
  flex: 1;
  min-height: 1.72rem;
}
.SearchForm-input {
  border: none;
  flex: 1;
  font: inherit;
  outline: none;
  background-color: var(--white);
  color: var(--black);
}
.SearchForm-input::placeholder {
  color: var(--gray-5);
}
.SearchForm-submitIcon {
  fill: var(--turq-med);
  width: 23px;
}
.Search {
  margin-top: 135px;
}
.Search-logo {
  display: block;
  height: 4.5rem;
  margin: 0 auto 50px;
  width: 194px;
}
.Homepage {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  margin: 2rem auto 5rem;
  max-width: 38rem;
}
.Homepage-packages {
  padding: 0 1rem;
}
.Homepage-packages ul {
  list-style: none;
  line-height: 1.4;
  padding: 0;
}
.Header {
  margin: 0 auto;
  max-width: 75.75rem;
}
.Site-header {
  background: var(--white);
  border-bottom: 0.0625rem solid var(--gray-8);
  -webkit-position: sticky;
  position: sticky;
  top: 0;
  width: 100%;
  z-index: 1;
}
.Site-header--dark {
  background: var(--turq-text);
  border: none;
}
:target::before {
  content: ' ';
  display: block;
  height: 5.125rem;
  margin-top: -5.125rem; /* Move hidden anchor content for deep linking with a sticky header. */
  pointer-events: none;
  visibility: hidden;
}
@media only screen and (min-width: 52rem) {
  :target::before {
    height: calc(5.125rem + 2.5rem);
    margin-top: calc(-5.125rem - 2.5rem); /* Account for added height of banner. */
  }
}
.Header-logoLink {
  margin-right: auto;
}
.Header-nav {
  display: flex;
  justify-content: flex-end;
}
.Header-logo {
  display: block;
  height: 2rem;
  margin: 1rem;
  width: 5.125rem;
}
.Header-menuItem {
  display: none;
}
.Header-menu {
  display: flex;
  list-style: none;
  margin: 0 0 0 1.4rem;
  padding: 0;
}
@media only screen and (min-width: 57.7rem) {
  .Header {
    padding: 0 1.5rem;
  }
  .Header-menuItem {
    display: inline-flex;
    flex: none;
  }
  .Header-menu {
    justify-content: flex-end;
  }
  .Header-navOpen {
    display: none;
  }
  .Header-logo {
    margin: 1rem 1rem 1rem 0;
  }
}
.Site-header--dark .Header-menuItem a:link,
.Site-header--dark .Header-menuItem a:visited {
  color: var(--white);
}
.Header-menuItem a:link,
.Header-menuItem a:visited {
  border-bottom: 3px solid transparent;
  border-top: 3px solid transparent; /* To ensure the text remains centered. */
  color: var(--gray-2);
  display: inline-block;
  margin: 0 15px;
  padding: 20px 15px;
  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);
  color: var(--gray-2);
}
.Header-navOpen {
  background: no-repeat center/2rem url('/static/img/menu-24px.svg');
  border: none;
  height: 2.5rem;
  margin: auto 1rem;
  width: 2.5rem;
}
.Site-header--dark .Header-navOpen {
  background: no-repeat center/2rem url('/static/img/menu-24px-white.svg');
}
.Header-searchForm-container {
  position: relative;
  display: inline-flex;
  margin: 0.6rem auto 0 1.4rem;
  flex: 1;
}
.Experiment-autoComplete .Header-searchForm {
  background-color: white;
}
.Header-searchForm {
  border: 0.0625rem solid var(--gray-8);
  border-radius: 1.4rem;
  position: absolute;
  left: 0;
  right: 0;
  font-size: 1rem;
  padding: 0.5rem 0.5rem 0.5rem 1rem;
  min-height: 2.863125rem;
}
.Site-header--dark .Experiment-autoComplete input[type='text'].Header-searchFormInput {
  color: initial;
}
.Site-header--dark .Experiment-autoComplete input[type='text'].Header-searchFormInput::placeholder {
  color: initial;
}
.Site-header--dark input[type='text'].Header-searchFormInput,
.Site-header--dark input[type='text'].Header-searchFormInput::placeholder {
  color: var(--white);
}
.Header-searchFormInput {
  background-color: transparent;
  border: none;
  box-sizing: border-box;
  flex: 1;
  font: inherit;
  outline: none;
  width: 1rem;
}
.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(--turq-med);
  width: 23px;
}
.Site-header--dark .Header-searchFormSubmitIcon {
  fill: var(--white);
}
.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-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);
}
.DetailsHeader-pathInput {
  /*
   * An input element that can be selected so its contents can be
   * copied to the clipboard. We can't use a hidden element, so
   * put this visible one very far off the screen.
   */
  left: -62rem;
  position: absolute;
  top: 62rem;
}
.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-text);
  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;
}
.DetailsNav {
  margin: 0 -1rem 0 -1rem;
  overflow-x: scroll;
  overflow-y: hidden;
  mask-image: linear-gradient(
    90deg,
    transparent,
    #000 1.25rem,
    #000 calc(100% - 1.25rem),
    transparent
  );
  padding: 0 1rem;
  -ms-overflow-style: -ms-autohiding-scrollbar;
  -webkit-mask-image: linear-gradient(
    90deg,
    transparent,
    #000 1.25rem,
    #000 calc(100% - 1.25rem),
    transparent
  );
  -webkit-overflow-scrolling: touch;
}
@media only screen and (min-width: 43.75rem) {
  .DetailsNav {
    overflow-x: hidden;
  }
}

.DetailsNav-list {
  list-style: none;
  margin: 0;
  padding: 0;
  white-space: nowrap;
  border-bottom: 0.0625rem solid var(--gray-8);
}
.DetailsNav::-webkit-scrollbar {
  display: none;
}
.DetailsNav-tab {
  color: var(--gray-2);
  display: inline-block;
}
.DetailsNav-tab + .DetailsNav-tab {
  margin-left: 1rem;
}
.DetailsNav-tab.selected {
  border-bottom: 2px solid var(--turq-med);
  color: var(--gray-1);
  font-weight: bold;
}
.DetailsNav-tab:hover {
  border-bottom: 2px solid var(--purple);
}
.DetailsNav-tabDisabled,
.DetailsNav-tabDisabled:hover {
  border-bottom: 2px solid var(--white);
  color: var(--gray-5);
}
.DetailsNav-link,
.DetailsNav-link:link,
.DetailsNav-link:visited {
  display: inline-block;
  color: inherit;
  padding: 0.625rem 0.5rem;
}
.DetailsNav-link,
.DetailsNav-link:hover {
  text-decoration: none;
}

.Container {
  color: var(--gray-1);
  margin: 0 auto;
  max-width: 60em;
  position: relative;
}
.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;
}

.Documentation {
  color: var(--gray-1);
}
.Documentation h2,
.Documentation h3 {
  font-size: 1.5rem;
}
.Documentation a {
  color: var(--turq-text);
  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--variables,
.Documentation-tocItem--funcsAndTypes {
  display: none;
}

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

.Documentation-exampleDetails {
  margin-top: 1rem;
}
.Documentation-exampleDetailsBody pre {
  margin: 1rem 0;
}
.Documentation-exampleDetailsHeader {
  color: var(--turq-text);
  text-decoration: none;
  outline: none;
  margin-bottom: 2rem;
}
.Documentation .example-header {
  color: var(--turq-text);
  font-size: 1rem;
  outline: none;
  padding-top: 0.5rem;
  text-decoration: none;
}
.Documentation-build {
  color: var(--gray-3);
  font-size: 0.875rem;
  padding-top: 1.5rem;
  text-align: right;
}

.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 {
  padding: 0.75rem 0;
  border-bottom: 0.0625rem solid var(--gray-8);
  padding-right: 1rem;
}
.Directories th {
  text-align: left;
  border-bottom: 0.0625rem solid var(--gray-8);
  padding-right: 1rem;
  padding-bottom: 0.5rem;
}
.Directory-header {
  margin-bottom: 2rem;
}

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

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

.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);
  border-top: 0.0625rem solid var(--gray-8);
  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.
/*
/* ---------- */
