/*!
 * 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 {
  color: #718ba6;

  .folder-icon {
    margin-right: 3px;
    color: rgb(232, 232, 232);
    transform: translateX(-2px);

    &.file-icon {
      transform: translateX(-4px);
      margin-right: -2px;
    }
  }

  h3 {
    margin-bottom: 20px;
  }

  p {
    margin: 0 0 10px;
    font-size: 14px;
    font-weight: 400;

    &.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 {
      display: flex;
      align-items: center;
      width: 70%;
      padding-right: 10px;
    }

    .size {
      width: 30%;
    }

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

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

  .bottom-message {
    padding-top: 20px;
    text-align: center;

    .confirm-message {
      min-height: 18px;
      padding-top: 20px;
      color: #ef5c4b;
      font-size: 13px;
      text-align: center;
    }
  }

  .upload-item-name {
    display: inline-flex;
    max-width: 300px;
  }

  .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 {
    position: relative;
    min-width: 16px;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    border-radius: 2px;
    border: 2px solid lightgrey;
    cursor: pointer;

    &.checked {
      border-color: #35afd5;
      background-color: #35afd5;
    }

    .checked-checkbox {
      position: absolute;
      top: 0;
      left: 4px;
      width: 5px;
      height: 10px;
      border-bottom: 2px solid white;
      border-right: 2px solid white;
      transform: rotate(45deg);
    }
  }
}

.upload-message {
  display: flex;
  justify-content: center;

  .upload-item-name {
    display: block;
    max-width: 340px;
    padding-left: 4px;
  }
}