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

.UnitDirectories {
  margin-bottom: 2rem;
}
.UnitDirectories-title {
  border-bottom: 0.0625rem solid var(--gray-8);
  font-size: 1.375rem;
  margin: 0.5rem 0 0 0;
  padding-bottom: 1rem;
}
.UnitDirectories-title img {
  height: 1rem;
  margin: auto 1rem auto 0;
  width: auto;
}
.UnitDirectories-table {
  border-collapse: collapse;
  height: 0;
  table-layout: auto;
  width: 100%;
}
.UnitDirectories-table--tree {
  margin-top: -2rem;
}
.UnitDirectories-tableHeader {
  background-color: var(--gray-9);
}
.UnitDirectories-tableHeader--tree {
  visibility: hidden;
}
.UnitDirectories td {
  border-bottom: 0.0625rem solid var(--gray-8);
  max-width: 32rem;
  min-width: 12rem;
  padding: 0.25rem 1rem;
  word-break: break-word;
}
.UnitDirectories th {
  padding: 0.5rem 1rem;
  text-align: left;
}
.UnitDirectories-moduleTag {
  background-color: var(--blue);
  border-radius: 0.15rem;
  color: var(--gray-1);
  font-size: 0.74rem;
  padding: 0.2rem 0.4rem;
}
.UnitDirectories tr.hidden {
  display: none;
}
.UnitDirectories tr[aria-controls] {
  cursor: pointer;
}
.UnitDirectories tr[aria-controls]:hover {
  background-color: var(--gray-10);
}
.UnitDirectories th.UnitDirectories-toggleHead {
  font-size: 0;
  max-width: 0.625rem;
  padding: 0;
  width: 0.625rem;
}
.UnitDirectories td.UnitDirectories-toggleCell,
th.UnitDirectories-toggleCell {
  background-color: var(--white);
  border: var(--white);
  max-width: 0.625rem;
  padding: 0;
  width: 0.625rem;
}
.UnitDirectories-toggleButton {
  background-color: transparent;
  border: none;
  left: -0.75rem;
  margin: 0 -0.5rem -1rem -1rem;
  position: absolute;
  vertical-align: top;
}
.UnitDirectories-subSpacer {
  border-right: 0.0625rem solid var(--gray-8);
  display: inline;
  margin-right: 0.875rem;
  width: 0.0625rem;
}
.UnitDirectories-toggleButton[aria-expanded='true'] img {
  transform: rotate(90deg);
}
.UnitDirectories-pathCell {
  align-items: flex-start;
  display: flex;
  flex-direction: column;
  line-height: 1.75rem;
  word-break: break-all;
}
.UnitDirectories-pathCell > div {
  position: relative;
}
.UnitDirectories-subdirectory {
  border-left: 0.0625rem solid var(--gray-8);
  display: flex;
  flex-direction: column;
  margin-left: 0.375rem;
  padding: 0.5rem 1rem;
}
.UnitDirectories-mobileSynopsis {
  display: none;
  line-height: 1.25rem;
  margin-top: 0.25rem;
  word-break: keep-all;
}
@media only screen and (max-width: 52rem) {
  .UnitDirectories-mobileSynopsis {
    display: initial;
  }
  .UnitDirectories-table th.UnitDirectories-desktopSynopsis,
  .UnitDirectories-table td.UnitDirectories-desktopSynopsis {
    display: none;
  }
}
.UnitDirectories-expandButton {
  position: relative;
}
.UnitDirectories-expandButton button {
  background-color: transparent;
  border: none;
  bottom: 1rem;
  color: var(--turq-dark);
  cursor: pointer;
  font-size: 0.875rem;
  position: absolute;
  right: 0;
  text-decoration: none;
}
