HTML,
BODY {
    height: 100%;

    background-image: linear-gradient(100deg, #0e263b, #060f18);
}

* {
    position: relative;

    color: #ffffff;
    font-family: 'Roboto', sans-serif;
}

ATOM * {
    display: inline-block;
}

SCRIPT {
    display: none;
}

INPUT {
    font-size: 13px;
}

EMAILFIELD {
    color: inherit;
}
EMAILFIELD > ATOM {
    display: none;
}

TEXTFIELD {
    color: inherit;
}
TEXTFIELD > ATOM {
    display: none;
}

PASSWORDFIELD {
    color: inherit;
}
PASSWORDFIELD > ATOM {
    display: none;
}

TEXT {
    margin: 25px 0 35px 0;
    line-height: 1.5;
    color: inherit;
    text-align: center;
}
TITLE {
    font-size: 22px;
    color: inherit;
    margin-bottom: 10px;
    text-align: center;
}
SUBTITLE {
    margin: 15px 0 35px 0;
    font-size: 15px;
    color: inherit;
    text-align: center;
}

INPUT {
    border: 0;
    border-radius: 3px;
    width: 100%;
    height: 50px;
    padding: 0 15px;
    font-size: 15px;
    color: #333333;
    background: #eeeeee;
    box-shadow: 0 0 1px rgba(0, 0, 0, 1);
    overflow: hidden;
}
INPUT:focus {
    box-shadow: 0 0 3px rgba(0, 0, 0, 1);
}

BUTTON {
    border: 0;
    padding: 0;

    color: inherit;

    background: transparent;
}
BUTTON * {
    cursor: pointer;

    font-size: inherit;

    color: inherit;
    font-weight: inherit;
}
BUTTON.forgot {
    margin: 20px 0;
    margin-bottom: 55px;
    width: 100%;
    font-size: 13px;
    color: #000000;
    font-weight: 600;
    opacity: 0.5;
    transition: ease-in 0.3s;
}
BUTTON.forgot:hover {
    opacity: 1;
}

BACK {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 25px;

    font-size: 13px;

    text-align: center;

    color: inherit;
    font-weight: 600;

    opacity: 0.5;

    transition: ease-in 0.3s;
}
BACK:hover {
    cursor: pointer;

    opacity: 1;
}

PULSE {
    position: absolute;

    width: 18px;
    height: 18px;

    opacity: 0;
}
PULSE > DIV {
    position: absolute;
    top: 50%;
    left: 50%;

    border-radius: 99px;
    width: 4px;
    height: 4px;

    background: #fc3b2f;

    transform: translate(-50%, -50%);
    transition: ease-in 2s;
}
PULSE > DIV.inner {
    animation: pulse 2s infinite;
}
PULSE > DIV.outer {
    animation: pulse 2s infinite;
    animation-delay: 1s;
}

LOADING {
    display: inline-block;

    position: relative;

    width: 64px;
    height: 64px;

    zoom: 0.25;
}
LOADING DIV {
    animation: spinner 1.2s linear infinite;
    transform-origin: 32px 33px;
}
LOADING DIV:after {
    content: ' ';

    display: block;

    position: absolute;
    top: 3px;
    left: 29px;

    border-radius: 20%;
    width: 5px;
    height: 14px;

    background: #333333;
}
LOADING DIV:nth-child(1) {
    transform: rotate(0deg);

    animation-delay: -1.1s;
}
LOADING DIV:nth-child(2) {
    transform: rotate(30deg);

    animation-delay: -1s;
}
LOADING DIV:nth-child(3) {
    transform: rotate(60deg);

    animation-delay: -0.9s;
}
LOADING DIV:nth-child(4) {
    transform: rotate(90deg);

    animation-delay: -0.8s;
}
LOADING DIV:nth-child(5) {
    transform: rotate(120deg);

    animation-delay: -0.7s;
}
LOADING DIV:nth-child(6) {
    transform: rotate(150deg);

    animation-delay: -0.6s;
}
LOADING DIV:nth-child(7) {
    transform: rotate(180deg);

    animation-delay: -0.5s;
}
LOADING DIV:nth-child(8) {
    transform: rotate(210deg);

    animation-delay: -0.4s;
}
LOADING DIV:nth-child(9) {
    transform: rotate(240deg);

    animation-delay: -0.3s;
}
LOADING DIV:nth-child(10) {
    transform: rotate(270deg);

    animation-delay: -0.2s;
}
LOADING DIV:nth-child(11) {
    transform: rotate(300deg);

    animation-delay: -0.1s;
}
LOADING DIV:nth-child(12) {
    transform: rotate(330deg);

    animation-delay: 0s;
}

LOADINGLABEL {
    display: inline-block;

    height: 30px;

    line-height: 30px;

    color: inherit;

    transform: translateX(-50%);

    margin-left: 50%;
}
LOADINGLABEL * {
    display: inline-block;

    line-height: inherit;
    font-size: 14px;

    color: inherit;
    font-weight: 600;
}
LOADINGLABEL LOADING {
    position: absolute;
    top: -35px;
    left: -105px;
}

HEADER {
    position: absolute;
    top: 0;
    left: 0;

    width: 100%;
    height: 150px;
    overflow: hidden;

    color: #ffffff;

    background: #0e263b;
}
HEADER IMG {
    margin-top: 20px;

    width: 400px;

    opacity: 0.2;
}
HEADER ICON {
    position: absolute;
    top: 8px;
    left: 50%;

    font-size: 135px;

    transform: translateX(-50%);
}
HEADER > PULSE:nth-of-type(1) {
    top: 83px;
    left: 22px;
}
HEADER > PULSE:nth-of-type(2) {
    top: 31px;
    left: 128px;
}
HEADER > PULSE:nth-of-type(3) {
    top: 51px;
    left: 265px;
}
HEADER > PULSE:nth-of-type(4) {
    top: 111px;
    left: 363px;
}

SUBMIT {
    cursor: pointer;

    border-radius: 5px;
    width: 100%;
    height: 40px;
    padding: 0 15px;

    background: #0e263b;
}
SUBMIT ATOM,
SUBMIT LABEL,
SUBMIT BUTTON {
    width: 100%;
}
SUBMIT LABEL {
    line-height: 40px;
    font-size: 13px;

    text-align: center;

    font-weight: 600;
}
SUBMIT.outline {
    border: 1px solid #0e263b;

    background: transparent;
}
SUBMIT.outline LABEL {
    color: #333333;
}
SUBMIT.muted {
    opacity: 0.5;
}
SUBMIT.muted * {
    cursor: not-allowed;
}

OR {
    margin: 15px 0;

    width: 100%;

    font-size: 12px;

    text-align: center;

    color: inherit;
    font-weight: 600;
}

ERROR {
    margin: -5px 0 20px 0;

    border: 1px solid #f5c6cb;
    border-radius: 3px;
    padding: 10px;

    line-height: 1.5;
    font-size: 14px;

    color: #721c24;

    background: #f8d7da;
}

CODEFIELD {
    margin: 0 -2.5px;
}
CODEFIELD TEXTFIELD {
    display: inline-block;

    width: 16.666667%;
    padding: 0 5px;

    z-index: 2;
}
CODEFIELD TEXTFIELD INPUT {
    height: 50px;

    font-size: 24px;

    text-align: center;
}
CODEFIELD TEXTFIELD:last-child {
    position: absolute;
    right: 0;

    z-index: 1;
}
CODEFIELD TEXTFIELD:last-child INPUT {
    box-shadow: none!important;
}
CODEFIELD.error TEXTFIELD INPUT {
    box-shadow: 0 0 3px #c50013;
}

PHONEFIELD > DIV {
    width: 100%;

    margin-bottom: 20px;
}
PHONEFIELD INPUT {
    font-size: 16px;
}

APP {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

HELP,
LOGIN,
RESET,
INVITE,
DENIED,
RECOVERY,
VERIFICATION,
RECOVERYREQUEST,
VERIFICATIONSETUP {
    position: absolute;
    top: 50%;
    left: 50%;

    width: 400px;
    height: 700px;
    padding: 175px 25px 25px 25px;
    overflow: hidden;

    color: #333333;

    background: #ffffff;

    transform: translateX(-50%) translateY(-50%);

    animation-duration: 1s;
    animation-iteration-count: 1;
    animation-name: show;
}
LOGIN {
    transform: translateX(-100%) translateY(-50%);
}

LOGIN > ERROR {
    display: none;
}
LOGIN.error > ERROR {
    display: block;
}
LOGIN.password > OR,
LOGIN.password > SUBMIT.outline,
LOGIN.email > BACK {
    display: none;
}
LOGIN.email.error > ERROR:before {
    content: 'The email address you entered is not valid.';
}
LOGIN.password.error > ERROR:before {
    content: 'The email address and password you entered did not match our records.';
}

LOGIN.error INPUT,
RECOVERY.error INPUT {
    box-shadow: 0 0 3px #c50013;
}

LOGIN.email passwordfield,
LOGIN.password emailfield {
    display: none;
}

RECOVERY          TEXTFIELD {
    margin-bottom: 25px;
}
RECOVERYREQUEST   SUBMIT,
VERIFICATION      SUBMIT,
DENIED   SUBMIT {
    position: absolute;
    left: 25px;
    right: 25px;
    bottom: 65px;

    width: auto;
}

VERIFICATION > ERROR,
VERIFICATIONSETUP > ERROR {
    position: absolute;
    top: 230px;
    left: 25px;
    right: 25px;

    opacity: 0;

    transition: ease-in 0.3s;
}
VERIFICATION > ERROR:before,
VERIFICATIONSETUP > ERROR:before {
    content: '';

    position: absolute;
    left: 50%;
    bottom: -10px;

    border-top: 10px solid #721c24;
    border-right: 10px solid transparent;
    border-left: 10px solid transparent;
    width: 0;
    height: 0;

    margin-left: -10px;
}
VERIFICATION > ERROR:after,
VERIFICATIONSETUP > ERROR:after {
    content: '';

    position: absolute;
    left: 50%;
    bottom: -10px;

    border-top: 10px solid #f8d7da;
    border-right: 10px solid transparent;
    border-left: 10px solid transparent;
    width: 0;
    height: 0;

    margin-left: -10px;
}
VERIFICATION > CODEFIELD {
    margin-bottom: 20px;
}
VERIFICATION > LOADINGLABEL,
VERIFICATIONSETUP > LOADINGLABEL {
    display: none;
}
VERIFICATION > BUTTON {
    margin: 0 auto;

    height: 30px;
    padding: 0 25px;

    line-height: 30px;
    font-size: 13px;

    text-align: center;

    font-weight: 600;

    transition: ease-in 0.3s;
}
VERIFICATION > BUTTON ICON {
    position: absolute;
    top: -3px;
    left: -25px;

    font-size: 20px;
}
VERIFICATION > BUTTON LABEL:hover {
    text-decoration: underline;
}

VERIFICATION.loading CODEFIELD {
    opacity: 0.5;
}
VERIFICATION.loading > BUTTON,
VERIFICATIONSETUP.loading > SUBMIT,
VERIFICATIONSETUP.loading > OR {
    display: none;
}
VERIFICATION.loading > LOADINGLABEL,
VERIFICATIONSETUP.loading > LOADINGLABEL {
    display: inline-block;
}
VERIFICATION.error > ERROR {
    opacity: 1;
}
VERIFICATION.reset > BUTTON {
    display: none;
}

VERIFICATIONSETUP > ERROR {
    top: 245px;
}
VERIFICATIONSETUP.error > ERROR {
    opacity: 1;
}
VERIFICATIONSETUP.error INPUT {
    box-shadow: 0 0 3px #c50013;
}

HELP BUTTON {
    padding: 10px 0;

    margin-bottom: 10px;
}
HELP ATOM ICON {
    position: absolute;
    top: -3px;
    left: -6px;

    font-size: 25px;
}
HELP ATOM LABEL {
    font-weight: 600;

    padding-left: 25px;
}

INVITE {
    height: 815px;

    opacity: 0;

    animation-name: unset;
}
INVITE > * {
    display: none;
}
INVITE TEXTFIELD:nth-of-type(1),
INVITE TEXTFIELD:nth-of-type(2) {
    opacity: 0.5;
}
INVITE TEXTFIELD:nth-of-type(1) *,
INVITE TEXTFIELD:nth-of-type(2) * {
    cursor: not-allowed;
}
INVITE SUBMIT:nth-of-type(1),
RESET SUBMIT:nth-of-type(1) {
    margin-top: 25px;
}

INVITE.expired,
INVITE.invite {
    opacity: 1;

    animation-name: show;
}
INVITE.expired > HEADER,
INVITE.expired > TITLE,
INVITE.expired > TEXT {
    display: block;
}
INVITE.expired > SUBMIT.outline {
    display: block;
    margin-top: 25px;
}
INVITE.invite > * {
    display: block;
}
INVITE.error PASSWORDFIELD INPUT,
RESET.error PASSWORDFIELD INPUT {
    box-shadow: 0 0 3px #c50013;
}

RESET {
    opacity: 0;

    animation-name: unset;
}
RESET > * {
    display: none;
}
RESET.expired,
RESET.reset {
    opacity: 1;

    animation-name: show;
}
RESET > *:nth-child(5) {
    margin-top: 25px;
}

RESET.expired > HEADER,
RESET.expired > TITLE,
RESET.expired > TEXT {
    display: block;
}
RESET.reset > * {
    display: block;
}


LOGIN.loading > *,
RESET.loading > *,
RECOVERY.loading > *,
INVITE.loading > * {
    opacity: 0.5;
}
LOGIN.loading > HEADER,
RESET.loading > HEADER,
RECOVERY.loading > HEADER,
INVITE.loading > HEADER,
LOGIN.loading > TITLE,
RESET.loading > TITLE,
RECOVERY.loading > TITLE,
INVITE.loading > TITLE {
    opacity: 1;
}

RESET.finished > * {
    opacity: 0;
}
RESET.finished > HEADER,
RESET.finished > TITLE,
RESET.finished > TEXT {
    opacity: 1;
}

INVITE > *:nth-child(5),
INVITE > *:nth-child(6),
INVITE > *:nth-child(7),
INVITE > *:nth-child(8) {
    margin-top: 25px;
}

BODY.mobile LOGIN {
    display: none;

    zoom: 2.2;
}
BODY.mobile.hidden LOGIN {
    display: block;

    transform: translateX(-50%) translateY(-50%);
}

@keyframes pulse {
    0% {
        width: 3px;
        height: 3px;

        opacity: 1;
    }
    100% {
        width: 18px;
        height: 18px;

        opacity: 0;
    }
}

@keyframes spinner {
    0% {
        opacity: 1;
    }
    100% {
        opacity: 0;
    }
}

@keyframes show {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@media only screen and (max-height: 750px) {
    APP {
        zoom: 0.75;
    }
}

@media only screen and (max-height: 500px) {
    HELP,
    LOGIN,
    RESET,
    INVITE,
    DENIED,
    RECOVERY,
    VERIFICATION,
    RECOVERYREQUEST,
    VERIFICATIONSETUP {
        top: 25px;

        transform: translateX(-50%);

        margin-bottom: 25px;
    }
    LOGIN {
        transform: translateX(-100%);
    }

    BODY.mobile.hidden LOGIN {
        transform: translateX(-50%);
    }
}
