/*!
 * 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.
 */

.confirmation-dialog {

  .folder-icon{
    color: rgb(232, 232, 232);
    margin-right: 3px;
    transform: translateX(-2px);
    &.file-icon{
      transform: translateX(-4px);
      margin-right: -2px;
    }
  }
  h3{
    margin-bottom: 20px;
  }
  color: #718ba6;
  p {
    font-size: 14px;
    font-weight: 400;
    margin: 0;
    margin-bottom: 10px;
    &.upload-limit-message{
      text-align: center;
      color: red;
      font-size: 14px;
    }
    &.info {
      font-weight: 500;
    }
  }
  .resources {
    .mat-list-base .mat-list-item.delete-item{
      height: 30px;
    }

    .object {
      width: 70%;
      display: flex;
      align-items: center;
      padding-right: 10px;
    }

    .size {
      width: 30%;
    }
    .scrolling-content.delete-list {
      max-height: 200px;
      overflow-y: auto;
      padding-top: 11px;
    }
  }

  .list-header {
    border-top: 1px solid #edf1f5;
    border-bottom: 1px solid #edf1f5;
    color: #577289;
    width: 100%;
  }

  .bottom-message{
    padding-top: 20px;
    text-align: center;
    .confirm-message{
      color: #ef5c4b;
      font-size: 13px;
      min-height: 18px;
      text-align: center;
      padding-top: 20px}
  }
.upload-item-name{
  max-width: 300px;
  display: inline-flex;
}

.mat-radio-button{
  font-family: inherit;
  .mat-radio-ripple{
    display: none;
  }
}
  .upload-radio-group{
    display: flex;
    flex-direction: column;
    .upload-radio-button {
      padding: 10px 0;

      .mat-radio-container {
        width: 15px;
        height: 15px;
        .mat-radio-outer-circle, .mat-radio-inner-circle  {
          width: 15px;
          height: 15px;
          border-color: lightgrey;
        }
      }

      &.mat-radio-checked {
        .mat-radio-outer-circle {
          border-color: #35afd5;
        }

        .mat-radio-inner-circle {
          background-color: #35afd5;
        }
      }
    }
  }
  .repeat-for-all{
    display: flex;
    margin-top: 15px;
    margin-bottom: 40px;
    .repeat-message{
      padding-left: 5px;
      cursor: pointer;
    }
  }
  .empty-checkbox {
    min-width: 16px;
    width: 16px;
    height: 16px;
    border-radius: 2px;
    border: 2px solid lightgrey;
    margin-top: 2px;
    position: relative;
    cursor: pointer;
    &.checked {
      border-color: #35afd5;
      background-color: #35afd5;
    }
    .checked-checkbox {
      top: 0;
      left: 4px;
      width: 5px;
      height: 10px;
      border-bottom: 2px solid white;
      border-right: 2px solid white;
      position: absolute;
      transform: rotate(45deg);
    }
  }
}
.upload-message{
  display: flex;
  justify-content: center;
  .upload-item-name{
    max-width: 340px;
    display: block;
    padding-left: 4px;
  }
}

