.login-pf body {
    background: url("../img/login-background.png") no-repeat center center fixed;
    background-size: cover;
    padding-top: 300px;
    height: 100vh;
}

.alert-error {
    background-color: #ffffff;
    border-color: #cc0000;
    color: #333333;
}

#kc-locale ul {
    display: none;
    position: absolute;
    background-color: #fff;
    list-style: none;
    right: 0;
    top: 20px;
    min-width: 100px;
    padding: 2px 0;
    border: solid 1px #bbb;
}

#kc-locale:hover ul {
    display: block;
    margin: 0;
}

#kc-locale ul li a {
    display: block;
    padding: 5px 14px;
    color: #000 !important;
    text-decoration: none;
    line-height: 20px;
}

#kc-locale ul li a:hover {
    color: #4d5258;
    background-color: #d4edfa;
}

#kc-locale-dropdown a {
    color: #4d5258;
    background: 0 0;
    padding: 0 15px 0 0;
    font-weight: 300;
}

#kc-locale-dropdown a:hover {
    text-decoration: none;
}

a#kc-current-locale-link {
    display: block;
    padding: 0 5px;
}

a#kc-current-locale-link::after {
    content: "\2c5";
    margin-left: 4px;
}

.login-pf .container {
    padding-top: 60px;
}

.login-pf a:hover {
    color: #0099d3;
}

#kc-logo {
    width: 100%;
}

#kc-logo-wrapper {
    background-image: url(../img/keycloak-logo-2.png);
    background-color: red;
    background-repeat: no-repeat;
    background-size: contain;
    width: 340px;
    height: 240px;
    margin: 62px auto 0;
}

div.kc-logo-text {
    width: 500px;
    margin: 0 auto;
}

div.kc-logo-text span {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
}

#kc-header {
    color: #ededed;
    overflow: visible;
    white-space: nowrap;
}

#kc-header-wrapper {
    font-size: 29px;
    text-transform: uppercase;
    letter-spacing: 3px;
    line-height: 1.2em;
    white-space: normal;
}

#kc-content {
    width: 100%;
}

#kc-info {
    padding-bottom: 200px;
    margin-bottom: -200px;
}

#kc-info-wrapper {
    font-size: 13px;
}

#kc-form-options span {
    display: block;
}

#kc-form-options .checkbox {
    margin-top: 0;
    color: #72767b;
}

#kc-terms-text {
    margin-bottom: 20px;
}

#kc-registration {
    margin-bottom: 15px;
}

/* TOTP */

ol#kc-totp-settings {
    margin: 0;
    padding-left: 20px;
}

ul#kc-totp-supported-apps {
    margin-bottom: 10px;
}

#kc-totp-secret-qr-code {
    max-width: 150px;
    max-height: 150px;
}

#kc-totp-secret-key {
    background-color: #fff;
    color: #333333;
    font-size: 16px;
    padding: 10px 0;
}

/* OAuth */

#kc-oauth h3 {
    margin-top: 0;
}

#kc-oauth ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

#kc-oauth ul li {
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    font-size: 12px;
    padding: 10px 0;
}

#kc-oauth ul li:first-of-type {
    border-top: 0;
}

#kc-oauth .kc-role {
    display: inline-block;
    width: 50%;
}

/* Code */
#kc-code textarea {
    width: 100%;
    height: 8em;
}

/* Social */

#kc-social-providers ul {
    padding: 0;
}

#kc-social-providers li {
    display: block;
}

#kc-social-providers li:first-of-type {
    margin-top: 0;
}

.zocial,
a.zocial {
    width: 100%;
    font-weight: normal;
    font-size: 14px;
    text-shadow: none;
    border: 0;
    background: #f5f5f5;
    color: #72767b;
    border-radius: 0;
    white-space: normal;
}

.zocial:before {
    border-right: 0;
    margin-right: 0;
}

.zocial span:before {
    padding: 7px 10px;
    font-size: 14px;
}

.zocial:hover {
    background: #ededed !important;
}

.zocial.facebook,
.zocial.github,
.zocial.google,
.zocial.microsoft,
.zocial.stackoverflow,
.zocial.linkedin,
.zocial.twitter {
    background-image: none;
    border: 0;

    box-shadow: none;
    text-shadow: none;
}

/* Copy of zocial windows classes to be used for microsoft's social provider button */
.zocial.microsoft:before {
    content: "\f15d";
}

.zocial.stackoverflow:before {
    color: inherit;
}
@media (max-width: 1600px){
    .login-pf body  {
        background-image: url("../img/login-background1.png");
    }
}


@media (min-width: 768px) {
    #kc-container-wrapper {
        position: absolute;
        width: 100%;
    }

    .login-pf .container {
        padding-right: 80px;
    }

    #kc-locale {
        position: relative;
        text-align: right;
        z-index: 9999;
    }
}

@media (max-width: 767px) {

    .login-pf body {
        background: white;
        padding-top: 50px;
    }

    #kc-header {
        padding-left: 15px;
        padding-right: 15px;
        float: none;
    }

    #kc-header-wrapper {
        font-size: 16px;
        font-weight: bold;
        color: #72767b;
        letter-spacing: 0;
    }

    div.kc-logo-text {
        margin: auto;
        width: 150px;
        height: 32px;
        background-size: 100%;
    }

    #kc-form {
        float: none;
    }

    #kc-info-wrapper {
        border-top: 1px solid rgba(255, 255, 255, 0.1);
        margin-top: 15px;
        padding-top: 15px;
        padding-left: 0px;
        padding-right: 15px;
    }

    #kc-social-providers li {
        display: block;
        margin-right: 5px;
    }

    .login-pf .container {
        padding-top: 15px;
        padding-bottom: 15px;
    }

    #kc-locale {
        position: absolute;
        width: 200px;
        top: 20px;
        right: 20px;
        text-align: right;
        z-index: 9999;
    }

    #kc-logo-wrapper {
        background-size: 100px 21px;
        height: 21px;
        width: 100px;
        margin: 20px 0 0 20px;
    }

}

@media (min-height: 646px) {
    #kc-container-wrapper {
        bottom: 12%;
    }
}

@media (max-height: 645px) {
    #kc-container-wrapper {
        padding-top: 50px;
        top: 20%;
    }
}

.card-pf form.form-actions .btn {
    float: right;
    margin-left: 10px;
}

#kc-form-buttons {
    margin-top: 40px;
}

.login-pf-page .login-pf-brand {
    margin-top: 20px;
    max-width: 360px;
    width: 40%;
}

.card-pf {
    background: #fff;
    margin: 0 auto;
    padding: 0 20px;
    max-width: 500px;
    border-top: 0;
    box-shadow: 0 0 0;
}

/*tablet*/
@media (max-width: 840px) {
    .login-pf-page .card-pf {
        max-width: none;
        margin-left: 20px;
        margin-right: 20px;
        padding: 20px 20px 30px 20px;
    }
}

@media (max-width: 767px) {
    .login-pf-page .card-pf {
        max-width: none;
        margin-left: 0;
        margin-right: 0;
        padding-top: 0;
    }

    .card-pf.login-pf-accounts {
        max-width: none;
    }
}

.login-pf-page .login-pf-signup {
    font-size: 15px;
    color: #72767b;
}

#kc-content-wrapper .row {
    margin-left: 0;
    margin-right: 0;
}

@media (min-width: 768px) {
    .login-pf-page .login-pf-social-section:first-of-type {
        padding-right: 39px;
        border-right: 1px solid #d1d1d1;
        margin-right: -1px;
    }

    .login-pf-page .login-pf-social-section:last-of-type {
        padding-left: 40px;
    }
    .login-pf-page .login-pf-page-header {
         margin-bottom: 20px;
    }

    .login-pf-page .login-pf-social-section .login-pf-social-link:last-of-type {
        margin-bottom: 0;
    }
}

.login-pf-page .login-pf-social-link {
    margin-bottom: 25px;
}

.login-pf-page .login-pf-social-link a {
    padding: 2px 0;
}

.login-pf-page.login-pf-page-accounts {
    margin-left: auto;
    margin-right: auto;
}

.login-pf-page .btn-primary {
    margin-top: 0;
    height: 38px;
    background-color: #5bc0de;
    color: #fff;
    border-color: #46b8da;
    background-image: none;
}

.login-pf-page .form-control {
    width: 100%;
    height: 36px;
    padding: 0 10px;
    border: 1px solid #5bc0de;
    background: #fafafa;
    transition: border .1s ease-out;
    outline: 0;
}

.login-pf-page .control-label {
    font-size: 14px;
    font-weight: 400;
}

.login-pf-page .login-pf-header h1 {
    display: none;
}