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

::ng-deep .mat-option:first-child .mat-pseudo-checkbox {
  display: none;
}

.caret {
  width: 40px;
  color: #4ab8dc;
  border: none;
  border-left: 1px solid #ececec;
  background-color: #fff;
  position: absolute;
  right: 0;
  top: 0px;
  height: 36px;
  line-height: 1;
  cursor: pointer;

  &.not-allowed {
    background-color: #dcdcdc;
  }
}

.content-box {
  padding: 20px 30px 35px;
  height: 85vh;
  overflow-y: auto;
}

.no-details {
  color: #d8d8d8;
}

.stepper {
  height: 190px;
  margin-top: 10px;

  .inner-step {
    height: 70px;
    padding: 5px;
    display: flex;
    justify-content: center;
    flex-direction: column;
    text-align: center;
    position: relative;

    input {
      width: 490px;
      align-self: center;
    }

    .error {
      position: absolute;
      bottom: 2px;
    }

    .caret {
      i {
        margin-top: 3px;
      }
    }
  }

  .text-center {
    button {
      &:not(:last-child) {
        margin-right: 5px;
      }
    }
  }
}

.mat-horizontal-content-container{
  overflow: visible !important;
}

.selector-wrapper {
  display: flex;
  align-self: center;
  width: 490px;
  height: 36px;
  padding-left: 0;
  font-family: 'Open Sans', sans-serif;
  font-size: 15px;
  font-weight: 300;
  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);
  multi-level-select-dropdown{
    width: 100%;
  }
  mat-form-field {
    width: 100%;

    .mat-form-field-wrapper {
      padding-bottom: 0;
    }

    .mat-icon {
      font-size: 20px;
    }
  }

  .dropdown-multiselect {
    width: 100% !important;

    >button {
      padding: 6px 22px;
    }
  }
}

.list-header {
  padding: 0 15px;
}

.scrolling-content {
  max-height: 450px;
  overflow-x: hidden;
  overflow-y: auto;
  display: block;
  padding: 15px 5px;

  &.stepper-opened {
    height: 250px;
  }
}

.roles {

  .selector-wrapper-edit {
    position: relative;
    display: flex;
    justify-content: space-between;
    height: 36px;
    padding-left: 10px;
    background: #fff;
    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);

    multi-select-dropdown {
      width: 100%;

      .dropdown-multiselect {
        >button {
          padding: 8px 22px 5px;
        }
      }
    }

    .caret {
      &:hover {
        box-shadow: 0 3px 1px -10px rgba(0, 0, 0, 0.2), 0 2px 1px 0 rgba(0, 0, 0, 0.17), 0 1px 5px 0 rgba(0, 0, 0, 0.12)
      }
    }
  }
}

.groups {
  width: 20%;
}

.users {
  width: 30%;
  padding: 0 10px;
}

.users-list {
  padding: 5px 10px;
  font-family: 'Open Sans', sans-serif;
  font-size: 15px;
  font-weight: 300;
  color: #577289;
  position: relative;

  i {
    color: #FF5722;
    font-size: 18px;
    cursor: pointer;
  }

  .list-selected {
    width: 100%;
    margin-top: 50px;
    height: inherit;
    min-height: 0;
    overflow: hidden;
  }
}

.expanded-panel {
  display: flex;
  align-items: flex-end;

  .add-input-block {
    display: flex;
    height: 36px;
    padding-right: 0;
    outline: none;
    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);

    input {
      height: 36px;
      padding: 0;
      padding-left: 10px;
      width: 170px;
    }

    .caret {
      width: 50px;
    }
  }
}


mat-expansion-panel-header {
  &.mat-expansion-panel-header {
    font-family: 'Open Sans', sans-serif;
    font-size: 15px;
    font-weight: 300;
    color: #577289;
  }
}

.mat-step-header {
  .mat-step-icon {
    background-color: #36afd5 !important;
  }

  .mat-step-label {
    font-family: 'Open Sans', sans-serif;
    font-size: 16px;
    font-weight: 300;
  }
}

.dashboard_table {
  .dashboard_table_body {
    .actions {
      padding: 10px 0;
    }

    &.filter-row {
      .actions {
        button {
          background: none;

          .mid {
            vertical-align: sub;
          }
        }
      }
    }
  }

  .th_actions {
    width: 10%;
  }
}

.mat-chip:not(.mat-basic-chip) {
  transition: box-shadow 280ms cubic-bezier(.4, 0, .2, 1);
  padding: 7px 0 7px 10px;
  border-radius: 24px;
  cursor: default;
  display: inline-block;
  position: relative;
  padding-right: 25px;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}

mat-chip.mat-chip a {
  position: absolute;
  right: 15px;
}

mat-form-field.chip-list {
  &.mat-form-field {
    position: absolute;
    top: 2px;
    width: 94%;
    font-size: 16px;
    font-weight: 300;
  }
}

.mat-raised-button {
  &.butt {
    &.butt-success {
      margin-left: 0;
    }
  }
}

.multiple-select {
  border-bottom: 1px solid #dedbdb;
  padding: 0;

  a {
    display: inline-block;
    width: 50%;
    padding: 0 15px;
    vertical-align: middle;
    color: #575757;
    cursor: pointer;

    i {
      vertical-align: sub;
      font-size: 20px;
    }

    &:hover {
      color: #4eaf3e;
      background: #f9fafb;
    }

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

table {
  width: 100%;

  .name {
    width: 15%;
  }

  .roles {
    width: 35%;
  }

  .users {
    width: 35%;
  }

  .actions {
    color: #607d8b;
    width: 10%;
    text-align: center;
    .actions-wrapper{
      height: 41px;
      display: flex;
      align-items: center;
      justify-content: flex-end;
    }
    span {
      transition: all .35s ease-in-out;
      cursor: pointer;

      .mat-icon {
        font-size: 18px;
        padding-top: 12px;
        &.big-icon{
          font-size: 25px;
          padding-top: 10px;
          transition: .25s;
        }
      }

      &:hover {
        color: darken(#607d8b, 10%);
      }
    }
  }
}
