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

.selector-wrapper {
  display: flex;
  align-self: center;
  width: 490px;
  height: 36px;
  padding-left: 10px;
  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);

  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 {
  // width: 30%;

  .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: 30%;
  }

  .users {
    width: 40%;
  }

  .actions {
    color: #607d8b;
    width: 10%;
    text-align: center;

    span {
      transition: all .5s ease-in-out;
      cursor: pointer;

      .mat-icon {
        font-size: 18px;
        padding-top: 12px;
      }

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