:root {
    /* Colors */
    --primary-900: #122b50;
    --primary-500: #1D3D6C;
    --primary-400: #2F4C78;
    --primary-300: #73819D;
    --primary-200: #919EB5;
    --primary-100: #D4D9E5;
    --primary-50: #DCE0EA;

    --neutral-black: #000000;
    --neutral-900: #202225;
    --neutral-700: #45494F;
    --neutral-500: #6A707A;
    --neutral-200: #C3C6CA;
    --neutral-50: #E9EBF0;
    --neutral-white: #ffffff;
    
    --danger-500: #DC544F;
    --danger-50: #FBEDED;
    
    /* Logo */
    --keycloak-logo-url: url('../img/logo-outpost24.svg');
    --keycloak-bg-logo-url: url("../img/logo-outpost24-darken.svg");

    /* Typography */
    --text-color: var(--neutral-900);
    --text-font-family: Lato, "Helvetica Neue", Arial, sans-serif;
    --text-font-size: 14px;

    /* Card */
    --card-width: 400px;
    --card-background-color: var(--neutral-white);

    --card-header-height: auto;
    --card-header-color: var(--primary-500);
    --card-header-font-size: 32px;
    --card-header-background-color: var(--neutral-white);
    --card-header-padding-side: 16px;

    --card-footer-message-background-color: var(--neutral-50);
    --card-footer-border-color: var(--neutral-200);
    --card-footer-color: var(--neutral-500);
    --card-footer-message-color: var(--neutral-700);
    --card-footer-message-padding: 8px;
    --card-footer-message-border-radius: 4px;

    /* Form */
    --form-padding: 32px;
    --form-width: calc(var(--card-width) - 2 * calc(--form-adddping));
    --form-gap: 8px;
    
    /* Login footer */
    --login-footer-font-size: 12px;
    --login-footer-gap: 4px;

    /* Footer link */
    --footer-link-color: var(--primary-500);
    --footer-link-hover-color: var(--primary-300);
    --footer-link-transition: color 0.25s;

    /* Fields */
    --field-height: 36px;

    --field-label-color: var(--neutral-500);
    --field-label-font-size: 12px;
    
    --field-error-color: var(--danger-500);

    --field-checkbox-color: var(--text-color);
    --field-checkbox-gap: 4px;
    --field-checkbox-border-color: var(--primary-100);
    --field-checkbox-font-size: 12px;
    --field-checkbox-background-color: var(--neutral-white);
    --field-checkbox-hover-background-color: var(--primary-100);
    --field-checkbox-checked-background-color: var(--primary-500);
    --field-checkbox-checked-hover-background-color: var(--primary-400);

    /* Buttons */
    --button-height: 36px;
    --button-border-radius: 4px;
    --button-transition: background-color 0.25s, border-color 0.25s;
    --button-text-transform: uppercase;
    --button-font-size: 12px;
    --button-letter-spacing: 1.25px;
    --button-font-weight: 500;

    --button-primary-color: var(--neutral-white);
    --button-primary-background-color: var(--primary-500);
    --button-primary-hover-background-color: var(--primary-400);
    --button-primary-active-background-color: var(--primary-300);

    --button-tonal-color: var(--primary-500);
    --button-tonal-background-color: var(--primary-50);
    --button-tonal-hover-background-color: var(--primary-100);
    --button-tonal-active-background-color: var(--primary-200);
}

html {
    box-sizing: border-box;
    letter-spacing: normal;
    font-weight: normal;
    font-size: var(--text-font-size);
    font-family: var(--text-font-family) !important;
}

* {
    text-decoration: none;
    line-height: 1.1;
}

.o24-footer-link {
    color: var(--footer-link-color);
    text-decoration: underline;
    transition: var(--footer-link-transition);
    
    &:hover {
        color: var(--footer-link-hover-color);
    }
}

/*
 * Page
 */

body {
    background: url(../img/bg.jpg) var(--primary-500) 100% / cover no-repeat !important;

    &::before {
        content: "";
        position: absolute;
        bottom: 0;
        right: 0;
        width: 150%;
        height: 75%;
        opacity: 50%;
        background: var(--primary-900);
        clip-path: polygon(0% 100%, 100% 0%, 100% 100%, 0% 100%);
        z-index: -2;
    }
}

.o24-page {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100%;
}

.o24-login-container {
    background-color: transparent;
    display: flex;
    flex-direction: column;
    position: relative;
    border-radius: 8px;
    overflow: hidden;
    padding: 0 0 0 var(--card-width);
    background: url(../img/logo-outpost24.svg) var(--card-background-color) no-repeat;
    background-position: 50px center;
    background-size: 300px; /* height 63px */
}

@media (max-width: 840px) {
    .o24-login-container {
        padding: calc(64px + 63px + var(--form-padding)) 0 0 0;
        background-position: center 64px;
        background-size: 300px;
    }
}

/*
 * Card & header
 */

.o24-card {
    display: flex;
    flex-direction: column;
    background: transparent;
    width: 100%;
}

.o24-login-card-header {
    border: none;
    background: var(--card-header-background-color);
    padding: var(--form-padding) var(--card-header-padding-side) var(--card-header-padding-side) var(--card-header-padding-side);
    height: var(--card-header-height);
    min-height: var(--card-header-height);
    display: flex;
    justify-content: center;
    flex-direction: row;
    width: 100%;
    flex: 1;
}

.o24-login-card-header-title {
    display: flex;
    align-items: center;
    font-size: var(--card-header-font-size);
    font-weight: normal;
    color: var(--card-header-color);
    font-style: normal;
    line-height: normal;
}

.pf-v5-c-login__header {
    display: none;
}

#kc-header-wrapper {
    display: none;
}

.kc-logo-text {
    background: transparent !important;
}

.o24-login-card-content {
    background: var(--card-background-color);
    padding: var(--form-padding) var(--form-padding) var(--form-padding) var(--form-padding);
    display: flex;
    flex-direction: column;
    min-width: var(--card-width);
    width: var(--card-width);
}

/*
 * Form
 */

#kc-form {
    flex: 1;
}

#kc-form-wrapper {
    width: 100%;
}

.o24-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
    flex: 1;
    width: 100%;
}

.o24-form-action-group {
    display: flex;
    flex-direction: row;
    flex-flow: row-reverse;
    flex-wrap: inherit !important;
    gap: var(--form-gap);
}

/**
 * Fields
 */

/* Label */
.o24-field-label {
    display: flex;
    padding-bottom: 4px;
}

.o24-field-label-text {
    padding: 0;
    color: var(--field-label-color);
    font-size: var(--field-label-font-size);
    font-weight: normal;

    & div {
        font-weight: inherit;
    }
}

/* Login input fields */
.o24-field {
    display: flex;
    flex-direction: column;
}

.o24-field-input-group {
    display: flex;
    flex-direction: row;
}

.o24-field-input {
    display: flex;
    flex-direction: row;
    width: 100%;
    border-radius: 0;
    border-bottom: 1px solid var(--field-label-color);

    & input {
        width: 100%;
        background: transparent;
        border-radius: 0;
        border: none;
        height: 32px;
        
        &:focus {
            outline: none;
            border: none;
            box-shadow: none;
        }
    }
}

.o24-field-input-util {
    display: flex;
    justify-content: center;
    align-items: center;
}

.o24-field-error {
    color: var(--field-error-color);
    border-color: var(--field-error-color);
}

/**
 * Field helper
 */

.o24-field-helper {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    padding-top: 8px;
}

.o24-field-helper-button {
    background: transparent;
    border: none;
    color: var(--field-label-color);
    width: var(--button-height);
    border-bottom: 1px solid var(--field-label-color);
}

.pf-v5-c-input-group__item {
    border-inline-start: none;
}

/**
 * Field: checkbox
 */

.o24-field-checkbox-container, .pf-v5-c-check {
    display: flex;
    flex-direction: row;
    gap: var(--field-checkbox-gap);
    align-items: center;
}

.o24-field-checkbox, .pf-v5-c-check__input {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    width: 16px;
    height: 16px;
    background-color: var(--field-checkbox-background-color);
    border: 2px solid var(--field-checkbox-border-color);
    border-radius: 3px;
    cursor: pointer;
    position: relative;
    transition: background-color 0.2s ease;
    
    &:hover {
        background-color: var(--field-checkbox-hover-background-color);
    }
    
    &:checked {
        background-color: var(--field-checkbox-checked-background-color);
        border-color: var(--field-checkbox-checked-background-color);
    }

    &:checked:hover {
        background-color: var(--field-checkbox-checked-hover-background-color);
    }
    
    &:checked::before {
        content: '';
        position: absolute;
        background-color: white;
        height: 2px;
        width: 10px;
        top: 9px;
        left: 4px;
        transform-origin: left center;
        transform: rotate(-45deg);
    }

    &:checked::after {
        content: '';
        position: absolute;
        background-color: white;
        height: 2px;
        width: 6px;
        top: 9px;
        left: 5px;
        transform-origin: left center;
        transform: rotate(-135deg);
    }
}

.pf-v5-c-check__label {
    color: var(--field-checkbox-color);
    font-size: var(--field-checkbox-font-size);
}

/* Hyperlink: Forgot password */
.pf-v5-c-helper-text__item-text {
    display: flex;
    flex-direction: column;
}

.pf-v5-c-helper-text__item-text > a {
    color: var(--footer-link-color);
    text-decoration: underline;
    transition: var(--footer-link-transition);
    font-size: var(--login-footer-font-size);

    &:hover {
        color: var(--footer-link-hover-color);
    }
}

/* Instructions with text and hyperlinks */
.instruction {
    text-align: center;
    
    & > a {
        color: var(--footer-link-color);
        text-decoration: underline;
    }
}

/**
 * Container div for footer AND idp ...
 */

.o24-form-footer-container {
    display: flex;
    flex-direction: column;
    color: var(--card-footer-color);
    gap: var(--form-gap);
}

/*
 * Identity Provider Buttons
 */


/* Footer: Or log in with IDPs */
.o24-form-footer-title {
    display: flex;
    justify-content: center;
    align-items: center;
    border-top: none;
    padding: 0;
    margin: var(--form-padding) 0 0 0;
    min-width: calc(var(--form-width) + var(--form-padding));
}

.o24-form-footer-title-span {
    max-width: calc(var(--form-width) + var(--form-padding));
    text-align: center;
    
    & > span {
        display: block;
        color: var(--card-footer-message-color) !important;
        font-size: 14px !important;
    }
    
    &:not(:has(span)) {
        width: 100%;
        max-width:inherit;
        flex: 1;
    }
}

.o24-form-idp-list-container {
    display: flex;
}

.o24-form-idp-list {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: var(--form-gap);
    width: 100%;
    max-width: var(--form-width);
    flex: 1;

    & > * {
        flex: 0 0 calc(50% - var(--form-gap) / 2);
    }
}

.o24-form-idp-list-item {
    
}

/* IDP Button container */
.pf-v5-c-login__main-body.pf-v5-u-pl-0.pf-v5-u-pr-0 {
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--form-gap);
}

.pf-v5-u-pb-sm {
    padding: 0 !important;
}

/**
 * Buttons
 */

/* Primary button */
.pf-v5-c-button.pf-m-primary {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    
    border-radius: var(--button-border-radius);
    --pf-v5-c-button--after--BorderWidth: 0px;
    transition: var(--button-transition);
    height: var(--button-height);
    min-height: var(--button-height);
    text-transform: var(--button-text-transform);
    font-size: var(--button-font-size);

    background-color: var(--button-primary-background-color);
    color: var(--button-primary-color);
    font-family: var(--text-font-family);
    letter-spacing: var(--button-letter-spacing);
    font-weight: var(--button-font-weight);

    &:hover {
        background-color: var(--button-primary-hover-background-color);
    }

    &:active {
        background-color: var(--button-primary-active-background-color);
    }
}

/* Tonal button */
.pf-v5-c-button.pf-m-secondary {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    
    border-radius: var(--button-border-radius);
    --pf-v5-c-button--after--BorderWidth: 0px;
    transition: var(--button-transition);
    height: var(--button-height);
    min-height: var(--button-height);
    text-transform: var(--button-text-transform);
    font-size: var(--button-font-size);
    
    background-color: var(--button-tonal-background-color);
    color: var(--button-tonal-color);
    font-family: var(--text-font-family);
    letter-spacing: var(--button-letter-spacing);
    font-weight: var(--button-font-weight);

    &:hover {
        background-color: var(--button-tonal-hover-background-color);
    }

    &:active {
        background-color: var(--button-tonal-active-background-color);
    }
}

/**
 * Form alert
 */

.o24-form-alert {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: 4px;
    font-size: 12px;
    color: var(--danger-500);
    background-color: var(--danger-50);
    border: 1px solid var(--danger-500);
    border-radius: var(--button-border-radius);
    margin: 0 0 var(--form-padding) 0;
}

/**
 * Error page
 */

.o24-instruction {
    text-align: center;
}

/**
 * Login footer
 */

.o24-login-footer {
    background: var(--card-background-color);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--login-footer-gap);
    padding-bottom: var(--form-padding);
    font-size: var(--login-footer-font-size);
}

.o24-login-copyright {
    padding-top: var(--form-gap);
}