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

.manage-ungit {
  .content-box {
    height: 500px;
    padding: 25px 35px;

    .list-header div {
      font-size: 13px;
    }
  }

  .add-creds {
    margin: 15px 5px 0;
  }

  .scrollingList {
    overflow-x: hidden;
    padding: 5px 0;
    height: 250px;

    &.info {
      display: flex;
      justify-content: center;
      height: 300px;

      p {
        align-self: center;
      }
    }
  }

  .mail-field,
  .user-field,
  .login-field {
    width: 25%;
    overflow: hidden;
    padding: 5px;
  }

  .hostname-field {
    overflow: hidden;
    padding: 5px;
    width: 30%;
  }

  .actions {
    position: relative;
    overflow: visible;
    width: 50px;

    span {
      position: absolute;
      top: -10px;
      left: 0;
      zoom: 0.8;

      &.git-actions {
        cursor: pointer;

        &.remove {
          left: 35px;
        }
      }
    }
  }

  .git-form {
    display: flex;

    .control-group {
      width: 100%;
      font-family: 'Open Sans', sans-serif;
      padding: 10px 0 25px;
      position: relative;

      input[type='text'],
      input[type='password'],
      input[type='email'] {
        font-size: 14px;
      }

      .label {
        width: 30%;
        font-size: 14px;
      }

      .control {
        width: 70%;
      }

      .danger_color {
        position: absolute;
        top: 45px;
        padding: 0;
        font-size: 12px;
        right: 0;
      }
    }

    .col {
      padding: 30px 10px;
      width: 50%;
    }

    .danger_color {
      padding-top: 0;
    }
  }

  .submit {
    margin-top: 60px;
  }

  .mat-list {
    height: 300px;
    .mat-list-item {
      color: #607d8b;
      font-size: 13px;
    }
  }
}
