/*!
 * 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";

.modal-xs {
  width: 375px;
}

.modal-sm {
  width: 525px;
}

.modal-md {
  width: 545px;
}

.modal-lg {
  width: 580px;
}

.modal-xl-s {
  width: 665px;
}

.modal-xl-m {
  width: 715px;
}

.modal-xl {
  width: 900px;
}

.modal-xxl {
  width: 1100px;
}

.modal-fullscreen {
  width: 90vw;
  max-width: 90vw !important;
  min-height: 80vh;
}

mat-dialog-container {
  overflow-x: hidden;

  &.mat-dialog-container {
    position: relative;
    padding: 0;
    border-radius: 0;
    overflow-x: hidden;

    #dialog-box {
      min-height: 150px;
      color: $modal-text-color;
      font-family: "Open Sans", sans-serif;

      .dialog-header {
        position: relative;
        padding-left: 30px;
        height: 50px;
        background: $modal-header-color;
        line-height: 50px;

        .modal-title {
          width: 90%;
          margin: 0;
          overflow: hidden;
          white-space: nowrap;
          text-overflow: ellipsis;
          font-weight: 600;
          color: #455c74;
          font-size: 18px;
          background: $modal-header-color;

          &::after {
            content: "";
            display: block;
          }

          i {
            vertical-align: middle;
          }
        }

        .close {
          position: absolute;
          top: 0;
          right: 0;
          height: 50px;
          width: 50px;
          font-size: 24px;
          font-weight: 300;
          border: 0;
          background: none;
          color: #577289;
          outline: none;
          cursor: pointer;
          transition: all 0.45s ease-in-out;

          &:hover {
            color: #36afd5;
          }
        }

        &.header-white {
          background: #fff;
        }
      }

      .dialog-content {
        .mat-select {
          font-family: "Opens Sans", sans-serif;
        }
      }

      .dialog-body {
        padding-top: 0;
      }

      .upload-key {
        margin-bottom: 20px;

        & > div > div {
          margin-top: 5px;
        }
      }

      .btn-success {
        margin-left: 40px;
        margin-right: 2px;
      }

      .btn:not(.mat-icon-button) {
        padding: 6px 15px;
        min-width: 140px;
        font-weight: 600;
      }

      a {
        color: #35afd5;
        text-decoration: none;
        transition: all 0.45s ease-in-out;
        line-height: 19px;

        &.spark-url {
          line-height: 16px;
        }

        &:hover {
          color: #5faec7;
        }
      }

      .info-label {
        margin-top: 20px;
        font-size: 15px;
      }

      .control-label {
        margin-top: 6px;
        font-weight: 600;
      }

      .form-group {
        small {
          display: inline-block;
          margin-top: 6px;
          font-size: 12px;
          color: #9cadbe;
        }
      }
    }
  }
}

.content-box {
  padding: 25px 30px 35px;
}

.butt-file {
  position: relative;
  display: inline-block;
  width: 170px;
  margin-bottom: 10px;
  padding: 6px 29px 6px 23px;
  overflow: hidden;
  color: #35afd5;
  // font: 600 16px/1.45 'Open Sans';
  font-style: normal;
  font-weight: 600;
  font-size: 16px;
  line-height: 1.45;
  font-family: "Open Sans", sans-serif;
  text-align: center;
  box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);

  .upload-icon {
    position: relative;
    top: 2px;
    display: inline-block;
    width: 17px;
    height: 17px;
    margin-right: 8px;
    background: url(/../../assets/img/upload-icon.png) no-repeat;
    background-size: 100%;
  }

  input[type="file"] {
    display: block;
    font-size: 100px;
    text-align: right;
    outline: none;
    background: #fff;
    cursor: inherit;
  }

  &:active {
    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
  }
}

.detail-header {
  width: 100%;
  border-bottom: 0;
  border-collapse: collapse;
  table-layout: fixed;

  td {
    padding: 20px;
    border: 1px solid #edf1f5;
    text-align: center;
    text-align: center !important;
    background: #fff;

    &:first-child {
      background: #f6fafe;
      font-size: 16px;
      font-weight: 600;
      color: #455c74;
      text-overflow: ellipsis;
      overflow: hidden;
      cursor: default;
      &::after {
        content: "";
        display: block;
      }
    }

    &.tooltip-wrap {
      .hint-title {
        font-size: 16px;
        font-weight: 600;
        color: #455c74;
        overflow: hidden;
      }
    }
  }
}

.detail-info {
  p {
    display: flex;
    margin-bottom: 10px;
    font-weight: 400;

    small {
      font-size: 12px;
      font-weight: 400;
    }
  }

  span:not(.description) {
    display: block;
    max-width: 450px;
    font-size: 14px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;

    &::after {
      content: "";
      display: block;
    }

    &.link-icon {
      //margin-left: 10px;
      padding-top: 2px;
      cursor: pointer;
    }
  }

  .links_block {
    padding-left: 25px;
  }

  .time_info {
    margin-top: 15px;
  }
}

.create-cluster {
  .dialog-header {
    padding-left: 45px !important;
  }
}

.cdk-overlay-container .cdk-overlay-pane {
  .mat-select-panel {
    &.ng-animating {
      visibility: hidden;
    }
  }

  .create-resources-dialog,
  .top-select {
    margin-left: 6px;
    min-width: calc(100% + 10px) !important;
  }

  .create-resources-shapes {
    margin-left: 22px;
    min-width: calc(100% + 10px) !important;
  }

  .crete-project-dialog {
    margin-left: 30px;
    min-width: calc(100% + 10px) !important;
  }

  .select-role {
    margin-left: 30px;
    min-width: calc(100% + 10px) !important;
  }
}

.strong {
  font-weight: 600;
  color: $blue-grey-color;
}

.flex {
  display: flex;
}

.endpoints-table {
  border-collapse: separate;
}

.mat-step-icon-state-number .mat-step-icon-content {
  top: 49%;
}

.confirmation-dialog p.delete-user {
  max-height: 200px;
  padding: 5px;
  font-weight: 500;
  overflow: hidden auto;
  text-overflow: ellipsis;
}

.bucket-browser {
  .mat-form-field-appearance-legacy .mat-form-field-subscript-wrapper {
    width: calc(100% + 85px);
  }
}

.full-size-tooltip {
  max-width: 1100px !important;
  white-space: pre-line;
}

.mat-list-base .mat-list-item.delete-item {
  height: 30px;
}

.mat-list-item {
  font-family: "Open Sans", sans-serif;
  font-weight: 400;
}

.d-none {
  display: none !important;
}

.d-flex {
  display: flex !important;
}

.progres {
  position: relative;
  height: 17px;
  width: 155px;
  border: 1px solid rgba(0, 0, 0, 0.12);

  .bar {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 0;
    background-color: #00bcd4;
  }

  .progress-bar-text {
    position: absolute;
    left: 5px;
    top: 0;
    bottom: 0;
    z-index: 10;
    font-size: 11px;
    line-height: 13px;
    color: rgba(0, 0, 0, 0.87);
  }
}

.not-allow {
  cursor: not-allowed !important;
  
  &.open-bucket {
    color: $blue-grey-color !important;
  }
}

.audit-info-content {
  .mat-list {
    height: unset;

    .list-header {
      line-height: unset;

      .mat-list-item-content {
        align-items: start !important;
      }
    }
  }
}

.add-folder-form .mat-hint {
  color: #00bcd4;
}

@media screen and (max-width: 1280px) {
  .modal-fullscreen {
    max-width: 100vw !important;
  }
}
