/* Tables */
table td {
  vertical-align: top;
  border-right: 1px dotted #A0A0A0;
  border-top: 1px dotted #A0A0A0;
  padding: 0.3em;
}

table {
  border: 1px solid #A0A0A0 ;
  border-spacing: 0;
}

table tr th {
  background-color: #ededee;
}

/**
 * Code.
 */

code { color: #222 ; background-color: #F5F5F5 ; }

pre {
  color: #222 ; background-color: #F5F5F5 ;
  padding: 1rem;
}

pre > code {
  color: inherit;
  background-color: inherit;
}

/**
 * Links.
 */
a {
  text-decoration: none;
}

/**
 * Custom Bootstrap elements.
 */
#landing-page-cards .card {
  height: 100%;
}

.navbar-brand img {
  margin-right: 0.2rem;
}

.nav-link span {
  opacity: 0.7;
  margin-right: 0.1rem;
}

#jumbotron a span {
  margin-right: 0.3rem;
}

/* single */

main {
  article {
    width: 100%;
    /* To prevent long lines of code pushing content over the edge of the visible viewport. */
    pre {
      white-space: break-spaces;
    }
    /* Ditto the above, but for images. */
    img {
      max-width: 100%;
    }
    /* A poor-man's NOTE/admonition. */
    blockquote {
      background-color: var(--bs-light);
      padding: 0.5rem 1rem 0.01rem 1rem;
      word-wrap: unset;
      text-wrap: unset;
      font-style: italic;
    }
    table {
      width: 100%;
      margin-bottom: 1rem;

      th {
        padding: 0.1rem 0.5rem;
      }
    }
  }
  aside {
    &.d-xl-flex {
      width: 17rem;
      border-left: 1px solid var(--bs-secondary-bg);
      overflow-y: scroll;
      max-height: 100vh;
      h2 {
        margin-left: 1rem;
        background-color: var(--bs-body-bg);
      }
      nav {
        ul {
          padding: 0 0 0 1rem;
        }
      }
    }
    &.d-xl-none {
      border-left: 1px solid var(--bs-secondary-bg);
      width: 100%;
      nav {
        ul {
          padding: 0 1rem;
          li {
            ul {
              padding: 0 0 0 1rem;
            }
          }
        }
      }
    }
    /* The top dropdown menu has the Bootstrap default z-index of 1000.
     * The sticky-top that we use in the aside element gets a z-index of
     * 1020 from Bootstrap, causing the menu to be under this sidebar.
     * This value fixes that.
     */
    z-index: 999 !important;

    nav {
      margin-top: 0.5rem;
      ul {
        list-style: none;
        margin: 0;
      }
    }
  }
}
