* {
    border: 0;
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
:root {
    --hue: 223;
    --bg: hsl(var(--hue), 10%, 90%);
    --fg: hsl(var(--hue), 10%, 10%);
    --primary: #ffbd59;
    --trans-dur: .3s;
    font-size: calc(16px + (20 - 16) * (100vw - 320px) / (1280 - 320));
}
body {
    background-color: rgba(255, 255, 255, 0.924);
}
.preloader {
    text-align: center;
    max-width: 20em;
    width: 100%;
    z-index: 999999;
}
.preloader__text {
    position: relative;
    height: 1.5em;
    left: 20px;
}
.preloader__msg {
    animation: msg .3s 13.7s linear forwards;
    position: absolute;
    width: 93%;
}
.preloader__msg--last {
    animation-direction: reverse;
    animation-delay: 30s;
    visibility: hidden;
}
.cart {
    display: block;
    margin: 0 auto 1.5em auto;
    width: 5em;
    height: 5em;
    background-color: white;
    padding: 10px;
    border-radius: 5px;
}
.cart__lines,
.cart__top,
.cart__wheel1,
.cart__wheel2,
.cart__wheel-stroke {
    animation: cartLines 2s ease-in-out infinite;
}
.cart__lines {
    stroke: var(--primary);
}
.cart__top {
    animation-name: cartTop;
}
.cart__wheel1 {
    animation-name: cartWheel1;
    transform: rotate(-0.25turn);
    transform-origin: 43px 111px;
}
.cart__wheel2 {
    animation-name: cartWheel2;
    transform: rotate(0.25turn);
    transform-origin: 102px 111px;
}
.cart__wheel-stroke {
    animation-name: cartWheelStroke;
}
.cart__track {
    stroke: hsla(var(--hue), 10%, 10%, 0.1);
    transition: stroke var(--trans-dur);
}

/* Dark theme */
@media (prefers-color-scheme: dark) {
    :root {
        --bg: hsl(var(--hue), 10%, 10%);
        --fg: hsl(var(--hue), 10%, 90%);
    }
    .cart__track {
        stroke: hsla(var(--hue), 10%, 90%, 0.1);
    }
}

/* Animations */
@keyframes msg {
    from {
        opacity: 1;
        visibility: visible;
    }
    99.9% {
        opacity: 0;
        visibility: visible;
    }
    to {
        opacity: 0;
        visibility: hidden;
    }
}
@keyframes cartLines {
    from,
    to {
        opacity: 0;
    }
    8%,
    92% {
        opacity: 1;
    }
}
@keyframes cartTop {
    from {
        stroke-dashoffset: -338;
    }
    50% {
        stroke-dashoffset: 0;
    }
    to {
        stroke-dashoffset: 338;
    }
}
@keyframes cartWheel1 {
    from {
        transform: rotate(-0.25turn);
    }
    to {
        transform: rotate(2.75turn);
    }
}
@keyframes cartWheel2 {
    from {
        transform: rotate(0.25turn);
    }
    to {
        transform: rotate(3.25turn);
    }
}
@keyframes cartWheelStroke {
    from,
    to {
        stroke-dashoffset: 81.68;
    }
    50% {
        stroke-dashoffset: 40.84;
    }
}

/* BIBLIOTHEQUE PERSONNALISE Font-size */
.fs-5px { font-size: 5px; }
.fs-6px { font-size: 6px; }
.fs-7px { font-size: 7px; }
.fs-8px { font-size: 8px; }
.fs-9px { font-size: 9px; }
.fs-10px { font-size: 10px; }
.fs-11px { font-size: 11px; }
.fs-12px { font-size: 12px; }
.fs-13px { font-size: 13px; }
.fs-14px { font-size: 14px; }
.fs-15px { font-size: 15px; }
.fs-16px { font-size: 16px; }
.fs-17px { font-size: 17px; }
.fs-18px { font-size: 18px; }
.fs-19px { font-size: 19px; }
.fs-20px { font-size: 20px; }
.fs-21px { font-size: 21px; }
.fs-22px { font-size: 22px; }
.fs-23px { font-size: 23px; }
.fs-24px { font-size: 24px; }
.fs-25px { font-size: 25px; }
.fs-26px { font-size: 26px; }
.fs-27px { font-size: 27px; }
.fs-28px { font-size: 28px; }
.fs-29px { font-size: 29px; }
.fs-30px { font-size: 30px; }
.fs-31px { font-size: 31px; }
.fs-32px { font-size: 32px; }
.fs-33px { font-size: 33px; }
.fs-34px { font-size: 34px; }
.fs-35px { font-size: 35px; }
.fs-36px { font-size: 36px; }
.fs-37px { font-size: 37px; }
.fs-38px { font-size: 38px; }
.fs-39px { font-size: 39px; }
.fs-40px { font-size: 40px; }
.fs-41px { font-size: 41px; }
.fs-42px { font-size: 42px; }
.fs-43px { font-size: 43px; }
.fs-44px { font-size: 44px; }
.fs-45px { font-size: 45px; }
.fs-46px { font-size: 46px; }
.fs-47px { font-size: 47px; }
.fs-48px { font-size: 48px; }
.fs-49px { font-size: 49px; }
.fs-50px { font-size: 50px; }

/* BIBLIOTHEQUE PERSONNALISE Font-weight */
.fw-100 { font-weight: 100; }
.fw-200 { font-weight: 200; }
.fw-300 { font-weight: 300; }
.fw-400 { font-weight: 400; }
.fw-500 { font-weight: 500; }
.fw-600 { font-weight: 600; }
.fw-700 { font-weight: 700; }
.fw-800 { font-weight: 800; }
.fw-900 { font-weight: 900; }
.fw-bold { font-weight: bold; }
