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

/*
 * Styling the sidenav.
 */

.Documentation-nav,
.Documentation-index,
.DocNav,
.DocNav-index {
  display: none;
}
.DocNavMobile {
  background-color: var(--white);
  display: block;
  height: 3rem;
  margin: 0 -1rem;
  position: sticky;
  top: calc(var(--header-height, 0) + var(--banner-height, 0));
  transition: box-shadow 0.2s linear;
  z-index: 100;
}
@media print {
  .DocNavMobile {
    display: none;
  }
}
.DocNavMobile--withShadow {
  box-shadow: 0 0.1875rem 0.1875rem rgba(0, 0, 0, 0.2);
}
.DocNavMobile-label,
.DocNavMobile-select {
  height: 2rem;
  left: 1rem;
  position: absolute;
  top: 0.5rem;
  width: calc(100% - 2rem);
}
.DocNavMobile-label {
  align-items: center;
  color: var(--gray-2);
  display: flex;
  padding: 0 0.5rem;
}
.DocNavMobile-label::after {
  border-bottom: 0;
  border-left: 0.3em solid transparent;
  border-right: 0.3rem solid transparent;
  border-top: 0.3rem solid var(--gray-4);
  content: '';
  display: block;
  height: 0;
  position: absolute;
  right: 0.625rem;
  top: 0.875rem;
  width: 0;
}
.DocNavMobile-selectIcon {
  fill: var(--gray-3);
  height: 1.4375rem;
  margin-right: 0.5rem;
  transform: rotate(180deg);
  width: 1.4375rem;
}
.DocNavMobile-selectText {
  flex: 1;
  margin-right: 1.2rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.DocNavMobile-select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: transparent;
  border: 0.0625rem solid var(--gray-8);
  border-radius: 0.1875rem;
  color: transparent;
  display: block;
}

/**
 * Firefox allows for styling of option and optgroup tags.
 * Ensure they don’t inherit the clear styling of their parent.
 */
.DocNavMobile-select option {
  color: var(--gray-1);
}
.DocNavMobile-select optgroup {
  color: var(--gray-3);
}
@media only screen and (min-width: 64rem) {
  .Documentation {
    column-gap: 2rem;
    display: grid;
    grid-template-columns: 17.5rem minmax(0, auto);
  }

  /**
   * Remove once Doc HTML is fully rolled out, as js-* styles should NEVER be
   * styled per https://golang.org/wiki/CSSStyleGuide.
   */
  .js-docContent,
  .Documentation-content {
    max-width: 60rem;
    min-width: 0;
    width: 100%;
  }
  .Documentation-build {
    grid-column: span 2;
    text-align: center;
  }
  .DocNav {
    display: block;
    max-height: calc(100vh - var(--header-height));
    overflow-x: hidden;
    overflow-y: auto;
    padding-left: 0.25rem;
    padding-top: 1rem;
    position: sticky;
    top: var(--header-height);
  }
  .DocNavMobile {
    display: none;
  }
  .DocNav [role='tree'],
  .DocNav [role='group'] {
    margin: 0;
    padding: 0 0 2rem 0;
  }
  .DocNav [role='treeitem'][aria-level='1'] {
    margin-bottom: 0.5rem;
  }
  .DocNav [role='group'] {
    font-size: 0.875rem;
    padding: 0;
  }
  .DocNav [role='treeitem'] {
    padding: 0.125rem 0 0.125rem 1.25rem;
    position: relative;
    user-select: none;
  }
  .DocNav [role='treeitem']:focus,
  .DocNav [role='treeitem']:hover {
    outline: 0;
    text-decoration: underline;
  }
  .DocNav [role='group'] [role='treeitem'] {
    padding-left: 2.5rem;
  }
  .DocNav ul[role='group'] > :last-child {
    margin-bottom: 0.375rem;
  }
  .DocNav [aria-selected='true'] {
    color: var(--gray-1);
    font-weight: 500;
  }
  .DocNav [aria-selected='true']:not(.DocNav-groupLabel)::before {
    background-color: var(--turq-dark);
    border-radius: 50%;
    content: '';
    display: block;
    height: 0.3125rem;
    left: 0.4688rem;
    position: absolute;
    top: 0.6875rem;
    width: 0.3125rem;
  }
  .DocNav [role='group'] [aria-selected='true']::before {
    left: 1.5rem;
    top: 0.75rem;
  }
  .DocNav [role='group'] [role='group'] [role='treeitem'] {
    border-left: 0.125rem solid var(--gray-9);
    margin-left: 2.5rem;
    padding-left: 0.5rem;
  }
  .DocNav [role='group'] [role='group'] [aria-selected='true']::before {
    display: none;
  }
  .DocNav [role='group'] [role='group'] [aria-selected='true'] {
    border-left: 0.125rem solid var(--turq-dark);
  }
  .DocNav-groupLabel {
    cursor: pointer;
    display: block;
  }
  .DocNav a,
  .DocNav a:link,
  .DocNav a:visited {
    color: var(--gray-2);
    display: block;
    opacity: 1;
    overflow: hidden;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .DocNav a:hover,
  .DocNav a[aria-selected='true'] {
    color: var(--gray-1);
  }
  .DocNav-groupLabel::before {
    border-bottom: 0.25rem solid transparent;
    border-left: 0.25rem solid var(--gray-4);
    border-right: 0;
    border-top: 0.25rem solid transparent;
    content: '';
    display: block;
    height: 0;
    left: 0.5rem;
    position: absolute;
    top: 0.625rem;
    transition: transform 0.1s linear;
    width: 0;
  }
  .DocNav-groupLabel--empty::before {
    content: unset;
  }

  /* Added to increase hit target on triangle above. */
  .DocNav-groupLabel::after {
    content: '';
    display: block;
    height: 2rem;
    left: 0;
    position: absolute;
    top: 0;
    width: 2rem;
  }

  /**
   * Expandable nodes at this level have smaller text and more left padding,
   * so adjust for that.
   */
  .DocNav [role='group'] .DocNav-groupLabel::before {
    left: 1.5625rem;
    top: 0.6875rem;
  }
  .DocNav-groupLabel[aria-expanded='true'] {
    margin-bottom: 0.375em;
  }
  .DocNav-groupLabel[aria-expanded='true']::before {
    transform: rotate(90deg);
  }
  .DocNav [aria-expanded='false'] + [role='group'] {
    display: none;
  }
}
@media only screen and (min-width: 100rem) {
  .Documentation {
    grid-template-columns: 22rem minmax(0, auto);
  }
}
@media only screen and (min-width: 130rem) {
  .Documentation {
    grid-template-columns: 35rem minmax(0, auto);
  }
}
