
:root {
    --loader-width: 300px;
    --loader-indeterminate-bar-width: calc(var(--loader-width) * 0.35);
}

body {
    background-color: var(--bg-color, white);
}

#loader-container {
    top: 50%;
    left: 50%;
    position: fixed;
    transform: translate(-50%, -50%);
}

body[loaded] #loader-container {
    display: none;
}

#loader-caption {
    font-size: 16px;
    font-weight: bold;
    text-align: center;
    font-style: italic;
    color: var(--fg-color);
    font-family: sans-serif;
}

#loader {
    height: 15px;
    padding: 2px;
    margin-bottom: 8px;
    width: var(--loader-width);
    background-repeat: no-repeat;
    background-clip: content-box;
    background-origin: content-box;
    border: solid 3px var(--fg-color);
    background-image: linear-gradient(to right, var(--pr-color), var(--pr-color));
}

#loader[indeterminate] {
    background-size: var(--loader-indeterminate-bar-width) 100%;
    animation: indeterminate 1.5s linear infinite;
}

#loader:not([indeterminate]) {
    background-position-x: 0px;
    background-size: calc(var(--loader-width) * var(--loader-progress, 0));
}

@keyframes indeterminate {
    from {
        background-position-x: calc(var(--loader-indeterminate-bar-width) * -1);
    }

    to {
        background-position-x: calc(var(--loader-width) + var(--loader-indeterminate-bar-width));
    }
}