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

.scheduler-dialog {
  .mat-form-field-appearance-legacy {
    .mat-form-field-label {
      font-family: "Open Sans", sans-serif !important;
      font-size: 13px;
    }
  }

  .mat-select-value {
    color: #758da9;
  }

  .mat-select-disabled {
    .mat-select-value {
      color: #9e9e9e;
    }
  }

  .mat-form-field-flex {
    width: 160px;
  }

  .mat-select-trigger {
    width: 180px;
  }

  .content-box {
    overflow: hidden;
  }

  .enable-schedule {
    display: flex;
    justify-content: space-between;
    margin-bottom: 10px;

    .idle {
      display: flex;
      width: 50%;

      i {
        padding-left: 10px;
        align-self: center;
        font-size: 20px;
        user-select: none;
        cursor: pointer;
      }
    }
  }

  .info-message,
  .idle-control {
    height: 0;
    padding-bottom: 0;
    opacity: 0;
    visibility: hidden;
    text-align: left;
    transition: height 0.35s linear 0.2s;

    &.show {
      height: 30px;
      margin-bottom: 50px;
      visibility: visible;
      opacity: 1;
    }
  }

  .idle-control {
    .control {
      .error {
        position: absolute;
        right: 0;
        top: 40px;
        font-size: 12px;
      }
    }
  }

  .info-message {
    &.show {
      margin-bottom: 15px;
    }
  }

  .schedule-by-time {
    transition: opacity 0.5s linear 0.2s;
    visibility: visible;
    height: 240px;
    opacity: 1;

    &.hide {
      height: 0;
      opacity: 0;
      visibility: hidden;
      text-align: left;
    }

    &.resource {
      height: 280px;
    }

    &.des {
      height: 80px;
    }

    .row-wrap {
      position: relative;

      .error {
        position: absolute;
        bottom: -10px;
        font-size: 12px;

        &.term {
          right: 40px;
          bottom: -15px;
        }
      }

      mat-datepicker-toggle.not-allowed {
        opacity: 1;
      }
    }
  }

  .col-3 {
    width: 33%;
    box-sizing: border-box;
    padding: 0 5px;

    &:last-child {
      padding-right: 0;
    }
  }

  .control-group {
    .label.repeat {
      width: 100%;
    }

    .week-day {
      display: flex;
      width: 50%;
      padding: 5px 10px;
      transition: all 0.4s ease-out;

      &.Sunday {
        order: 0;
      }

      &.Monday {
        order: 1;
      }

      &.Tuesday {
        order: 5;
      }

      &.Wednesday {
        order: 6;
      }

      &.Thursday {
        order: 0;
      }

      &.Friday {
        order: 1;
      }

      &.Saturday {
        order: 5;
      }

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

    &.time-range {
      padding-bottom: 0 !important;
    }

    .days-block {
      padding-bottom: 0;
      margin: 15px 15px 0 0;

      .mat-button-toggle-standalone {
        box-shadow: none;
        margin: 2px;
        border: none;
        color: #607d8b;

        &.mat-button-toggle-checked {
          background-color: rgba(77, 184, 218, 0.62);
          color: #ffffff;
        }

        &.mat-button-toggle-disabled.mat-button-toggle-checked {
          background-color: #bdbdbd !important;
        }

        .mat-button-toggle-label-content {
          width: 26px;
          padding: 0px 8px;
          font-size: 13px;
          line-height: 26px;
          text-align: center;
          background: rgba(196, 231, 243, 0.3);
        }
      }
    }
  }

  .timezone-offset {
    width: 100%;
    padding-right: 10px;
  }

  .note {
    display: flex;
    font-size: 12px;
    color: #36afd5;
  }

  .options {
    margin-bottom: 10px;
    color: #718ba6;
    font-size: 15px;
    font-weight: 600;

    .mat-slide-toggle-content {
      padding: 5px;

      .hold-label {
        span {
          font-size: 13px;
          vertical-align: text-bottom;
        }
      }
    }
  }
}
