* {
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    background: var(--layoutBg);
    width: 100%;
    height: 100%;
}

body {
    background: var(--layoutBg);
    font-family: Open Sans, Helvetica Neue, Arial, sans-serif;
    font-size: 16px;
    line-height: 1;
    height: 100%;
    min-height: 100%;
    width: 100%;
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    -webkit-box-pack: center;
    -ms-flex-pack: center;
    justify-content: center;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -ms-flex-direction: column;
    flex-direction: column;
    height: 100dvh;
    height: 100vh;
    box-sizing: border-box;
    padding: 16px;
}

.logo {
    margin: 0 auto;
    width: 100%;
    max-width: 200px;
    max-height: 80px;
}

.logo img {
    width: 100%;
    height: auto;
}

.main p {
    font: var(--t4);
    color: var(--ttPrimary);
    text-align: center;
    margin: 24px 0;
}

.main p span {
    margin-top: 16px;
    font: var(--body1);
    display: block;
}

.access-denied {
    font: var(--body1);
    margin: 24px auto 0;
    max-width: 600px;
    text-align: center;
}

.loader {
    display: block;
    position: relative;
    width: 64px;
    height: 64px;
    margin: 24px auto 0;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: var(--spinnerOuter);
    -webkit-animation: spin 2s linear infinite;
    animation: spin 2s linear infinite;
}

.loader::before {
    content: '';
    position: absolute;
    top: 5px;
    left: 5px;
    right: 5px;
    bottom: 5px;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: var(--spinnerInner1);
    -webkit-animation: spin 3s linear infinite;
    animation: spin 3s linear infinite;
}

.loader::after {
    content: '';
    position: absolute;
    top: 15px;
    left: 15px;
    right: 15px;
    bottom: 15px;
    border-radius: 50%;
    border: 3px solid transparent;
    border-top-color: var(--spinnerInner2);
    -webkit-animation: spin 1.5s linear infinite;
    animation: spin 1.5s linear infinite;
}

@-webkit-keyframes spin {
    0%   {
        -webkit-transform: rotate(0deg);
        -ms-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    100% {
        -webkit-transform: rotate(360deg);
        -ms-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes spin {
    0%   {
        -webkit-transform: rotate(0deg);
        -ms-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    100% {
        -webkit-transform: rotate(360deg);
        -ms-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@media screen and (min-width: 768px) {
    .logo {
        max-width: 300px;
        max-height: 120px;
    }

    .main p {
        font: var(--t3);
    }
}

@media screen and (min-width: 1280px) {
    .main p {
        font: var(--t2);
    }
}
