html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  min-width: 650px;
  /* background-image: url(../background.jpg); */
  background-size: cover;
  background-attachment: fixed;
}

body#body {}

.sidebar {
  height: 100%;
  max-height: 100%;
  overflow: auto;
}

.fail {
  color: red;
}

.sucess {
  color: green;
}

.subnav {
  display: none;
  max-height: 500px;
  overflow: auto;
  margin-left: 15px;
  border-left: gray 3px solid;
}

.autoComplete .list-group {
  margin-bottom: 0;
  border: none;
}

#searchBar {
  display: inline-block;
}

#filters {
  margin-bottom: 10px;
  visibility: visible;
  opacity: 1;
  transition: visibility 1s ease-out, opacity 1s ease-out, margin-bottom 1s ease-out;
}

#filters .label {
  /* display: none; */
  font-size: inherit;
  transition: background-color 1s, border-color 2s;
  cursor: pointer;
}

#filters .label::after {
  content: " \2716";
}

#filters .label:hover {
  /* font-size: 0; */
  background-color: red;
  border-color: red;
}

#filters .label:hover::before {
  content: "Remove ";
}

#filters .label:hover::after {
  content: "?";
}

#filters .label:not(:last-child) {
  margin-right: 5px;
}

#filters:empty {
  visibility: hidden;
  opacity: 0;
  margin-bottom: 0;
}

/* Magic filters text that won't get picked up in jquery.text */
#filters:not(:empty)::before {
  content: "Filters: ";
}

#search {
  min-width: 500px;
}

.autoComplete {
  max-height: 0;
  overflow-y: auto;
  position: absolute;
  left: 0;
  transition: max-height 1s;
  z-index: 1;
  top: 40px !important; /* Ignore the library style */
}

*:focus ~ .autoComplete { /* If the parent detects focus on any subelement or itself */
  max-height: 500px;
}

.interest-button {
  font-size: medium;
}

.interest-button.disabled {
  cursor: not-allowed !important;
  color: gray;
}

.hidden {
  height: 0;
  display: none;
}

.disabled {
  cursor: not-allowed;
}

.panel-heading a[data-toggle="collapse"]::after {
  font-family: "Glyphicons Halflings";
  content: "\e114";
  float: right;
  color: white;
}

.panel-heading a[data-toggle="collapse"].collapsed::after {
  content: "\e080";
}

.treeExplorer .treeExplorerNode {
  padding-left: 25px;
  display: block;
  cursor: pointer;
}

.treeExplorer .treeExplorerNode .nodeContent {
  display: inline-block;
}

.treeExplorer .treeExplorerNode > .nodeChildren {
  display: none;
}

.treeExplorer .treeExplorerNode.open > .nodeChildren {
  display: block;
}

.treeExplorer .treeExplorerExpander::before {
  font-family: "Glyphicons Halflings";
  content: "\e080";
  color: gray;
}

.treeExplorer .open > .nodeContent > .treeExplorerExpander::before {
  content: "\e114";
}

.treeExplorer .file > .nodeContent > .treeExplorerExpander {
  cursor: default;
}

.treeExplorer .file > .nodeContent > .treeExplorerExpander::before {
  content: "\e022"
}

#popup {
  top: 0;
  left: 0;
  position: fixed;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9000;
  pointer-events: none;
}

#popup > * {
  display: none;
  pointer-events: auto;
}

.modal-open, #request {
  padding-right: 0 !important;
}

.sk-cube-grid {
  display: none;
}

table:empty ~ .sk-cube-grid {
  display: block;
}

#requestForm {
  max-width: 500px;
  /* min-height: 300px; */
  position: relative;
}

.floatRight {
  float: right;
  margin-right: 15px;
}

.fade {
  display: none;
}

.fade.in {
  display: block;
}

.navbar-brand {
  text-shadow: 1px 1px 1px black;
}

.popover {
  max-width: none;
}

.popover-container {
  position: relative;
}

.metaData {
  width: 600px;
  max-height: 800px;
  word-wrap: normal;
  overflow: auto;
}

#requestForm button {
  margin-bottom: 5px;
}

#templates {
  display: none;
}

#subsetVariables > .row:not(:last-child) {
  margin-bottom: 5px;
}

#subsetVariables {
  transition: opacity 1s, margin 1s, padding 1s;
}

#subsetVariables:empty {
  opacity: 0;
  margin: 0;
  padding: 0;
}

#direct-download-list:before {
  content: "The following are available for direct download:";
}

#direct-download-list:empty:before {
  content: "No names in the selection are available for direct download...";
}
