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

.Unit-content .Versions {
  margin-top: 1rem;
  max-width: unset;
}
.Versions table {
  border-spacing: 0;
}
.Versions th {
  text-align: left;
}
.Versions td {
  padding-bottom: 1rem;
}
.Versions td:nth-child(1) {
  padding-right: 3rem;
  vertical-align: top;
}
.Versions td:nth-child(2) {
  border-right: 0.0625rem solid var(--gray-8);
  padding-right: 1rem;
  text-align: right;
  vertical-align: top;
  white-space: nowrap;
}
.Versions td:nth-child(3) {
  padding-left: 1rem;
}
.Versions-commitTime {
  font-size: 1rem;
  font-weight: 400;
}
.Versions-major {
  font-weight: 600;
}
.Versions-symbols {
  margin-left: 2rem;
}
.Versions-symbolBulletNew {
  color: var(--gray-3);
  padding-right: 0.5rem;
}
.Versions-symbolBuilds,
.Versions-symbolBuildsDash,
.Versions-symbolOld {
  color: var(--gray-3);
}
.Versions-symbolChild {
  padding-left: 2rem;
}
.Versions-symbolSection,
.Versions-symbolType {
  margin-bottom: 0.625rem;
}
.Versions-symbolsHeader {
  margin: 0.625rem 0;
}

.Versions-title {
  align-items: center;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2.5rem;
  margin-bottom: 1rem;
}
.Versions-title h2 {
  margin: 0;
}
.Versions-titleButtonGroup {
  display: none;
}
.Versions-titleButtonGroup button {
  background-color: transparent;
  border: none;
  bottom: 1rem;
  color: var(--turq-dark);
  cursor: pointer;
  font-size: 0.875rem;
  text-decoration: none;
}
.Versions-titleButtonGroup button:disabled {
  color: var(--gray-8);
  cursor: initial;
}
.Versions-list {
  gap: 0 1rem;
  line-height: 2.25rem;
}
@media only screen and (min-width: 37.5rem) {
  .Versions-list {
    display: grid;
    grid-template-columns: fit-content(8rem) fit-content(20rem) min-content auto;
  }
}
.Version-major {
  align-items: baseline;
  display: flex;
  margin-bottom: 1rem;
  min-width: 4rem;
}
@media only screen and (min-width: 37.5rem) {
  .Version-major {
    margin-bottom: 0;
  }
}
.Version-tag {
  text-align: left;
}
@media only screen and (min-width: 37.5rem) {
  .Version-tag {
    text-align: right;
  }
}
.Version-dot {
  border: 0.0625rem solid var(--gray-9);
  color: var(--gray-8);
  display: none;
  font-size: 2.75rem;
  justify-content: center;
  line-height: 1.75rem;
  -webkit-text-stroke: 0.125rem var(--white);
  width: 0;
}
.Version-dot::before {
  content: '•';
}
@media only screen and (min-width: 37.5rem) {
  .Version-dot {
    display: flex;
  }
}
.Version-dot--minor {
  color: var(--turq-dark);
}
.Version-commitTime {
  align-items: center;
  display: flex;
  margin-left: 1rem;
  white-space: nowrap;
}
.Version-details {
  line-height: 1.25rem;
}
.Version-summary {
  align-items: center;
  cursor: pointer;
  line-height: 2.25rem;
  padding-right: 0.5rem;
  white-space: nowrap;
  width: min-content;
}

.Version-badge {
  border: 0.0625rem solid var(--gray-4);
  border-radius: 0.125rem;
  font-size: 0.6875rem;
  font-weight: 500;
  line-height: 1rem;
  margin-left: 0.5rem;
  margin-top: 0.125rem;
  padding: 0 0.35rem;
  text-align: center;
}
