:root {
    --loader-background: #f5f7f8;
    --loader-text: #243746;
    --loader-subtext: #70808c;
    --loader-blue: #1487c9;
    --loader-green: #a8c936;
    --loader-progress-background: #dce3e7;
}

html,
body {
    width: 100%;
    height: 100%;
    overflow: hidden;
}

#custom-loading-screen {
    position: fixed;
    inset: 0;
    z-index: 10000;

    display: flex;
    align-items: center;
    justify-content: center;

    background: var(--loader-background);
    font-family: Arial, Helvetica, sans-serif;

    opacity: 1;
    visibility: visible;

    transition:
        opacity 500ms ease,
        visibility 500ms ease;
}

#custom-loading-screen.loader-hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

#loader-logo {
    position: absolute;
    top: 32px;
    left: 38px;

    width: min(260px, 32vw);
    height: auto;

    object-fit: contain;
}

#loader-content {
    width: min(900px, calc(100% - 48px));
    text-align: center;
}

#loader-theme-root {
    position: relative;

    width: 100%;
    height: clamp(230px, 38vh, 390px);

    display: flex;
    align-items: center;
    justify-content: center;
}

#loader-title {
    margin: 12px 0 7px;

    color: var(--loader-text);
    font-size: clamp(22px, 2.4vw, 34px);
    font-weight: 600;
}

#loader-status {
    min-height: 24px;
    margin: 0 0 20px;

    color: var(--loader-subtext);
    font-size: clamp(14px, 1.4vw, 18px);
}

#loader-progress {
    width: min(480px, 82%);
    margin: 0 auto;
}

#loader-progress-track {
    width: 100%;
    height: 8px;

    overflow: hidden;
    border-radius: 999px;
    background: var(--loader-progress-background);
}

#loader-progress-bar {
    width: 0%;
    height: 100%;

    border-radius: inherit;
    background: linear-gradient(
        90deg,
        var(--loader-blue),
        var(--loader-green)
    );

    transition: width 180ms ease-out;
}

#loader-percentage {
    display: block;
    margin-top: 10px;

    color: var(--loader-subtext);
    font-size: 14px;
    font-variant-numeric: tabular-nums;
}

@media (max-width: 650px) {
    #loader-logo {
        top: 20px;
        left: 20px;
        width: min(210px, 55vw);
    }

    #loader-content {
        width: calc(100% - 28px);
    }

    #loader-theme-root {
        height: clamp(210px, 34vh, 300px);
    }
}
