/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
@import '../../stylesheets/less/variables.less';

.scrollbar-container {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}

.scrollbar-content {
  position: absolute;
  top: 0px;
  left: 0px;
  right: 0px;
  bottom: 0px;
  overflow-y: auto;
  margin-right: 0px;
  margin-bottom: 40px;
}

.edit-desc-icon {
  padding: 0 0 0 0.5em;
  font-size: @font-size-m;
}

.checkbox {
  float: left;
  margin-top: 0px;
  margin-right: 3px;
}

.background-transparent {
  background-color: transparent !important;
}

.fa.expander {
  width: 15px;
}

.list-group {
  margin-bottom: 10px;
}

.color-popover.popover {
  border: none;
  background-color: transparent;
}

.color-popover .popover-content {
  padding: 0;
  background-color: transparent;
}

.column-option {
  margin-left: 3px;
}

.datasource-container {
  overflow: auto;
}

.adhoc-metric-edit-tabs > .nav-tabs {
  margin-bottom: 6px;

  & > li > a {
    padding: 4px 4px 4px 4px;
  }
}

#metrics-edit-popover {
  max-width: none;

  .inline-editable {
    line-height: 30px; // hand-tweaked to match the height of the input
  }
}

.adhoc-option {
  cursor: pointer;
}

.label-dropdown ul.dropdown-menu {
  position: fixed;
  top: auto;
  left: auto;
  margin: 20px 0 0;
}

.label-btn:hover,
.label-btn-label:hover {
  background-color: @gray-dark;
}

.label-btn-label {
  cursor: pointer;
}

.adhoc-label-arrow {
  font-size: @font-size-s;
  margin-left: 3px;
  position: static;
}

.time-filter-tabs > .nav-tabs {
  margin-bottom: 8px;

  & > li > a {
    padding: 4px;
  }
}

h1.section-header {
  font-size: @font-size-m;
  font-weight: @font-weight-bold;
  margin-bottom: 0;
  margin-top: 0;
  padding-bottom: 5px;
}

h2.section-header {
  font-size: @font-size-s;
  font-weight: @font-weight-bold;
  margin-bottom: 0;
  margin-top: 0;
  padding-bottom: 5px;
}
