/*
 * Copyright 2015-present Open Networking Laboratory
 *
 * Licensed 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.
 */

div#login {
    background: url("/imgs/login.jpg") no-repeat center;
    background-size: contain;
    position: absolute;
    top: 3%;
    left: 5%;
}

div#login-wrapper {
    text-align: center;
}

#login h2 {
    margin: 1%;
    color: rgb(115, 115, 115);
    font-size: xx-large;
    font-weight: lighter;
    text-align: left;
    position: absolute;
    top: -140px;
}

div#login-form {
    display: inline-block;
}

#login div.outline {
    position: absolute;
    border: 1px solid rgba(115, 115, 115, 0.7);
    background-color: white;
    opacity: .6;
    top: -160px;
    left: -25px;
    width: 300px;
    height: 245px;
    border-radius: 1px;
}

div#login-form {
    margin-left: 2.5%;
    position: relative;
    width: 255px;
    margin-top: 33.5%;
}

#login-form form {
    line-height: 250%;
}

#login-form input {
    display: block;
    height: 40px;
    width: 230px;
    font-size: 19px;
    padding: 0 5px;
    margin-bottom: 3.5%;
    border-radius: 1px;
    position: absolute;
}
#login-form input[type="text"] {
    top: -90px;
}
#login-form input[type="password"] {
    top: -35px;
}

#login-form input[type="text"],
#login-form input[type="password"] {
    border: 2px solid rgba(115, 115, 115, 0.7);
    transition: border 0.1s;
}
#login-form input[type="text"]:focus,
#login-form input[type="password"]:focus,
#login-form input[type="button"]:focus {
    outline: none;
    border: solid 2px rgba(122, 188, 229, 0.5);
}

#login-form a {
    text-decoration: none;
}

#login-form input[type="button"] {
    top: 25px;
    width: 245px;
    height: 30px;
    cursor: pointer;
    letter-spacing: 0.02em;
    font-size: 100%;
    color: #3C3C3C;
    background-color: lightgray;
    transition: background-color 0.4s;
}

#login-form input[type="button"]:hover {
    color: white;
    background-color: rgb(122, 188, 229);
}

#login-form input.ng-invalid.ng-touched {
    background-color: #CE5650;
    color: white;
}
