:root {
    --Fill-font-color: #414141;
    --Fill-primary: #1E3D45;
    --Fill-secondary: #96CB62;
    --Fill-tertiary: #2C3238;

    --Fill-white: #FFFFFF;
    --Fill-black: #000000;
    --Fill-light: #EFEFEF;
    --Fill-dark: #0D0D0D;

    --Fill-grey-100: #F8F9FA;
    --Fill-grey-200: #EAECEF;
    --Fill-grey-300: #DEE2E5;
    --Fill-grey-400: #CFD4DA;
    --Fill-grey-500: #AFB5BC;
    --Fill-grey-600: #6E757C;
    --Fill-grey-700: #4A5057;
    --Fill-grey-800: #353A40;
    --Fill-grey-900: #212529;

    --Alerts-warning: #FFD700;
    --Alerts-warning-subtle: #FFF0CC;
    --Alerts-danger: #C41C1C;
    --Alerts-danger-subtle: #F9D2D2;
    --Alerts-success: #346E38;
    --Alerts-success-subtle: #DCEFDD;
    --Alerts-info: #007FA3;
    --Alerts-info-subtle: #CCF4FF;

    --Links-link-color: #19689B;
    --Links-link-color-visited: #19689B;

    --Modal-modal-backdrop-bg: #1E3D45;
    --Modal-modal-backdrop-opacity: #1E3D45D9;

    /* TODO: task colors */

    --Space-normal: 1rem;
    --Space-three-quarters: 0.75rem;
    --Space-half: 0.5rem;
    --Space-quarter: 0.25rem;
    --Space-double: 2rem;
}

html {
    font-family: IBM Plex Sans, Arial, sans-serif;
    font-size: 16px;
    color: var(--Fill-font-color);
    background-color: white;
}

html:has(body.mobile) {
    font-size: 12px;
}

body {
    display: grid;
    grid-template-rows: fit-content(3rem) auto fit-content(3rem);
    grid-template-areas:
			"header"
			"main"
            "footer";
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
}

input,
select {
    display: inline-flex;
    justify-content: space-between;
    align-items: center;
    align-self: stretch;
    width: 20rem;
    padding: 0.6875rem 0.5rem;
    border: 1px solid var(--Fill-primary);
    border-radius: 0.125rem;
}

button:active,
button:focus,
button:hover,
input:active,
input:focus,
input:hover {
    outline: 2px solid var(--Fill-font-color);
    outline-offset: 2px;
}

select:active,
select:focus,
select:hover {
    outline: 2px solid var(--Fill-white);
    outline-offset: 2px;
}

header {
    grid-area: header;
    display: flex;
    align-items: center;
    gap: 4rem;
    height: 4rem;
    padding: 2rem 8rem;
    background: var(--Fill-tertiary);
}

body.mobile header {
    padding: 2rem 1rem;
    gap: unset;
}

body.mobile header select {
    width: 15rem;
}

#logo {
    max-width: 10rem;
    max-height: 6rem;
}

#language_container {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    margin-left: auto;
}

#language_container label {
    color: var(--Fill-white);
    font-weight: 500;
}

#language {
}

#main {
    grid-area: main;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 1rem;
    min-height: calc(100vh - 20rem);
    background: url("../i/login_background.jfif") lightgray 50% / cover no-repeat;
    padding: 0 1rem 4rem 1rem;
}

h1 {
    color: var(--Fill-white);
    margin-top: 4rem;
    margin-bottom: 0;
    font-size: 2.5rem;
    font-weight: 700;
    line-height: normal;
    text-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);
}

#message_area {
    max-width: calc(100vw - 2rem);
}

div.message {
    width: 30rem;
    max-width: calc(100vw - 2rem);
}

#browser_alert {
    display: none;
}

#login_container {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    padding: 2rem;
    border-radius: 0.25rem;
    background: var(--Fill-white);
    color: var(--Fill-font-color);
}

#login_container.code {
    gap: 1rem;
}

#login_container > span {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

#login_container label {
    font-weight: 500;
}

#login_container.error label {
    color: var(--Alerts-danger);
}

#login_container.error input {
    border-color: var(--Alerts-danger);
    border-width: 2px;
}

#logo_container {
    margin-left: auto;
    margin-right: auto;
}

#company_logo {
    max-height: 10rem;
    max-width: 20rem;
}

button {
    padding: 0.6875rem 1rem;
    justify-content: center;
    align-items: center;
    font-weight: 600;
    line-height: 1rem;
    text-transform: uppercase;
    border: none;
    border-radius: 0.5rem;
    cursor: pointer;
}

button.primary {
    background: var(--Fill-primary);
    color: var(--Fill-white);
}

.code button.primary {
    margin-top: 1rem;
}

button.cancel {
    background: var(--Fill-white);
    color: var(--Fill-primary);
    border: 2px solid var(--Fill-primary);
}

/*
#loginButton:active,
#loginButton:focus,
#loginButton:hover {
    background: var(--Fill-white);
    color: var(--Fill-primary);
}
 */

footer {
    grid-area: footer;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 8rem;
    background-color: var(--Fill-white);
    border-bottom: 1rem solid var(--Fill-tertiary);
    box-sizing: border-box;
    padding: 0 1rem;
}

#link_container {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    height: 4rem;
    width: 60rem;
    max-width: calc(100vw - 2rem);
}

a {
    font-weight: 700;
    text-decoration: underline;
    color: var(--Links-link-color);
}

a:visited {
    color: var(--Links-link-color);
}

.hidden {
    display: none !important;
}

@media screen and (orientation:landscape) {
    #link_container {
        max-width: calc(100vw - 1rem);
    }
}