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

@import './readme.css';
@import './sidenav.css';
@import './unit_readme.css';
@import './unit_doc.css';
@import './unit_files.css';
@import './unit_directories.css';
@import './unit_meta.css';

.UnitDetails {
  column-gap: 2rem;
  display: grid;
  grid-template-columns: minmax(0, auto);
  margin: auto;
  margin-top: 1rem;
  max-width: 98rem;
  min-height: 32rem;
  padding: 0 1rem;
  word-break: break-word;
}
@media only screen and (min-width: 57.7rem) {
  .UnitDetails {
    padding: 0 1.5rem;
  }
}
@media only screen and (min-width: 52rem) {
  .UnitDetails {
    grid-template-columns: 15.5rem minmax(32.5rem, 43.125rem);
    margin-top: 0;
  }
}
@media only screen and (min-width: 64rem) {
  .UnitDetails {
    grid-template-columns: 15.5rem minmax(30.5rem, 43.125rem) minmax(10rem, 15.5rem);
  }
}
@media only screen and (min-width: 80rem) {
  .UnitDetails {
    grid-template-columns: 15.5rem minmax(43.125rem, 60rem) 15.5rem;
    justify-content: center;
  }
}
.UnitDetails-outline {
  display: none;
  height: calc(100vh - 7.8475rem);
  margin-top: 2.5rem;
  position: sticky;
  top: 4.5rem;
}
@media only screen and (min-width: 52rem) {
  .UnitDetails-outline {
    display: block;
  }
}
.UnitDetails-content {
  margin-top: 0.5rem;
  max-width: 60rem;
}
@media only screen and (min-width: 52rem) {
  .UnitDetails-content {
    margin-top: 2rem;
  }
}
.UnitDetails-meta {
  display: none;
  margin-top: 2rem;
}
@media only screen and (min-width: 64rem) {
  .UnitDetails-meta {
    display: block;
  }
}
.UnitDetails-content :target::before {
  content: '';
  display: block;
  position: relative;
  width: 0;
  height: calc(var(--header-height) + 3.75rem);
  margin-top: calc(
    -1 * (var(--header-height) + 3.75rem)
  ); /* Move hidden anchor content for deep linking with a sticky header. */
}
@media only screen and (min-width: 52rem) {
  .UnitDetails-content :target::before {
    height: calc(var(--header-height) + 0.75rem);
    margin-top: calc(
      -1 * (var(--header-height) + 0.75rem)
    ); /* Move hidden anchor content for deep linking with a sticky header. */
  }
}

.UnitDetails-contentEmpty {
  background-color: var(--gray-10);
  color: var(--gray-2);
  height: 15rem;
  padding-top: 1rem;
  text-align: center;
}

.UnitDetails-contentEmpty img {
  height: 7.8125rem;
  width: auto;
}
