/*!
 * 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 '_variables.scss';

.scroll-box {
  max-height: 65vh;
  overflow-y: auto;
  overflow-x: hidden;
}

.links_block {

  .odahu-links:not(:last-child){
    margin-bottom: 20px;
  }

  .grafana{
    white-space: nowrap;
    padding-left: 30px;
    color: $blue-grey-color;

    div{
      display: flex;

      span{
        font-size: 13px;
        font-weight: 500;

        &.creds{
          font-weight: 600;
        }
      }
    }
  }

  >p, .odahu-link {
     display: flex;

    .description {
      white-space: nowrap;
      padding-left: 7px;
      font-weight: 600;
      color: $blue-grey-color;
    }
  }
}

.checkbox-group {
  position: relative;
  padding: 5px;

  label {
    input[type="checkbox"] {
      margin: 10px 0;
    }
  }

  span {

    &.danger_color {
      position: absolute;
      bottom: -20px;
      left: 0;
    }
  }
}

.config-details {
  text-align: left;
  position: relative;
  height: 280px;

  textarea {
    height: 100%;
    resize: none;
    font-size: 14px;
    line-height: 1.5;
    font-family: Consolas, monospace;
  }

  span {
    .danger_color {
      position: absolute;
      bottom: -16px;
      right: 0;
    }
  }
}

.bucket-info {
  padding-left: 7px;
  margin-right: 10px;
  font-weight: 600;
  color: $blue-grey-color;
}

.bucket-link{
  padding: 15px;
  padding-left: 0;
  color: #35afd5;
  .open-bucket{
    cursor: pointer;
    font-size: 14px;
  }
  &.not-allow{
    cursor: not-allowed;
    color: $blue-grey-color !important;
  }
}

.copy-icon-wrapper{
  width: 20px;
  margin-left: 5px;
  margin-right: 5px;
}

.bucket-info-wrapper{
  width: 100%;
  .bucket-info{
    max-width: 90%;
  }
}

.resources-url{
  max-width: 70%;
}


