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

.upload-window{
  margin-top: 2vh;
  border: 2px solid rgba(0,0,0,.12);
  border-radius: 5px;
  background-color: white;
  height: 15vh;
  color: black;

  .upload-header{
    padding-left: 8px;
    background: #f6fafe;
    height: 30px;
    line-height: 30px;
    position: relative;

    .modal-title {
      font-weight: 500;
      color: #455c74;
      font-size: 13px;
      background: #f6fafe;
    }

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

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

  }

  .upload-files{
    padding: 5px 0;
    height: calc(100% - 30px);
    overflow: auto;
    overflow-y: overlay;
    width: 100%;
    .file{
      padding: 2px;
      display: flex;
      font-size: 12px;
      position: relative;

      &.upload-table-header{
        font-size: 11px;
      }

      .name{
        width: 33.3%;
        padding-left: 5px;
        position: relative;
        display: flex;

        span{
          position: absolute;
          max-width: calc(100% + 30px);
        }
      }

      .second-block{
        width: 66.7%;
        display: flex;
        padding: 0 14px 0 17px;
        .upload-path{
          width: 60%;
          padding-left: 24px;
          padding-right: 1%;
          display: flex;
        }

        .size{
          width: 15%;
        }
        .state{
          width: 22%;
          display: flex;
          align-items: center;
          .mat-raised-button{
            width: 60px;
            padding: 5px;
            border-radius: 0;
            font-style: normal;
            font-weight: 600;
            font-size: 11px;
            font-family: "Open Sans", sans-serif;
            color: #577289;
            line-height: 8px;
          }
        }
        .remove{
          display: flex;
          align-items: center;
          width: 5%;
          position: absolute;
          right: 20px;
          .close{
            color: #577289;
            font-size: 12px;
            cursor: pointer;
            position: absolute;
            top: 3px;
            right: 0;
            height: 18px;
            width: 14px;
            transition: all 0.45s ease-in-out;

            &:hover{
              color: #f1696e;
            }
          }
        }
      }
    }
  }
}





@media only screen and (max-height: 920px) {
  .bucket-wrapper {
    height: 55vh;
    &.added-upload{
      height: 38vh;
    }
  }
}

@media only screen and (max-height: 840px) {
  .bucket-wrapper {
    height: 53vh;
    &.added-upload{
      height: 36vh;
    }
  }
}

@media only screen and (max-height: 760px) {
  .bucket-wrapper {
    height: 51vh;
    &.added-upload{
      height: 34vh;
    }
  }
}

@media only screen and (max-height: 700px) {
  .bucket-wrapper {
    height: 49vh;
    &.added-upload{
      height: 32vh;
    }
  }
}

@media only screen and (max-height: 650px) {
  .bucket-wrapper {
    height: 47vh;
    &.added-upload{
      height: 30vh;
    }
  }
}
