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

.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: var(--border);
  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(--color-text-subtle);
  padding-right: 0.5rem;
}
.Versions-symbolBuilds,
.Versions-symbolBuildsDash,
.Versions-symbolOld {
  color: var(--color-text-subtle);
}
.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-titleButtonGroup {
  display: none;
}
.Versions-titleButtonGroup button {
  font-size: 0.875rem;
}
.Versions-modulesTitle {
  font-size: 1rem;
  margin: 1rem 0;
}
.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;
  gap: 1rem;
  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: var(--border);
  color: var(--gray-7);
  display: none;
  font-size: 2.75rem;
  justify-content: center;
  line-height: 1.75rem;
  -webkit-text-stroke: 0.125rem var(--color-background);
  width: 0;
}
.Version-dot::before {
  content: '•';
}
@media only screen and (min-width: 37.5rem) {
  .Version-dot {
    display: flex;
  }
}
.Version-dot--minor {
  color: var(--color-brand-primary);
}
.Version-commitTime {
  align-items: center;
  display: flex;
  gap: 0.75rem;
  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-summary .go-Chip {
  margin-left: 0.5rem;
}
