
/*
 * Copyright 2017-present Open Networking Foundation

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


body.login img.logo{
   width: 250px;
   display: block;
   margin: 20px auto;
   padding-top: 20px;
}
.login {
  background-image: url('bg.jpg');
  background-size: cover;
  background-position: center; 
  background-repeat: no-repeat;
}

.login #content-main {
  float: none;
    height: 330px;
    margin: 100px auto 0;
    width: 265px;
}
.login{
  #content-main {
    background: rgba(255,255,255,0.82);
  }

  #content-main form input[type=text],
  #content-main form input[type=password],
  .requestDialog.ui-widget input{
    background-color: rgb(250, 255, 189);
  }
  
  /*#forgot_pwd{
    font-size: 11px;
    font-style: normal;
    text-decoration: none;
  }
  
  #create_acct{
    font-size: 11px;
    font-style: normal;
    text-decoration: none;
    padding-left: 45px;
  }*/

  .row + .row {
    margin-top: 10px;
  }

  #content-main form {
    margin: 5px 15px 0;
  }

  .btn-primary {
    @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
    background: $btn-primary-bg;
  }

  .forgotLink {
    width: 45%;
    text-align: left;
    float: left;
  }

  #request-account-form{
    display:none;
  }

  #requestAccountLink {
    margin-top: 10px;
    cursor: pointer;
    color: $brand-primary;
    text-decoration: underline;
  }
}

