html,
body {
    background: #050507;
}

#preloader {
    position: fixed;
    inset: 0;
    z-index: 99999;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 38%, rgba(255, 0, 34, 0.16), transparent 27rem),
        radial-gradient(circle at 50% 115%, rgba(255, 255, 255, 0.05), transparent 22rem),
        #050507;
    transition: opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1), visibility 0.5s;
}

#preloader::before,
#preloader::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

#preloader::before {
    inset: 0;
    background-image:
        linear-gradient(rgba(255, 0, 34, 0.035) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 0, 34, 0.035) 1px, transparent 1px);
    background-size: 58px 58px;
    opacity: 0.36;
    mask-image: radial-gradient(circle at 50% 50%, black, transparent 74%);
    -webkit-mask-image: radial-gradient(circle at 50% 50%, black, transparent 74%);
}

#preloader::after {
    inset: -35%;
    background:
        conic-gradient(from 180deg at 50% 50%, transparent 0deg, rgba(255, 0, 34, 0.08) 70deg, transparent 140deg, transparent 360deg);
    animation: preloader-rotate 12s linear infinite;
}

#preloader.loaded {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

#preloader-logo {
    position: relative;
    z-index: 1;
    width: clamp(82px, 18vw, 112px);
    height: clamp(82px, 18vw, 112px);
    margin-bottom: 20px;
    border-radius: 31%;
    object-fit: contain;
    opacity: 1;
    filter: drop-shadow(0 0 34px rgba(255, 0, 34, 0.42));
    animation: preloader-logo-in 420ms ease both, preloader-logo-float 2.4s ease-in-out 420ms infinite;
}

#preloader-line {
    display: none;
}

#preloader-wordmark {
    position: relative;
    z-index: 1;
    display: flex;
    justify-content: center;
    margin: -2px 0 28px;
    font-family: 'Bebas Neue', 'Arial Black', sans-serif;
    font-size: clamp(4rem, 15vw, 6.7rem);
    font-weight: 900;
    line-height: 0.78;
    letter-spacing: 0;
    user-select: none;
}

.pl-letter {
    display: inline-block;
    color: white;
    opacity: 0;
    transform: translateY(8px) scale(0.92);
    filter: blur(6px);
    animation: pl-letter-flash 0.58s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.pl-letter:nth-child(1) { animation-delay: 0s; }
.pl-letter:nth-child(2) { animation-delay: 0.075s; }
.pl-letter:nth-child(3) { animation-delay: 0.15s; }
.pl-letter:nth-child(4) { animation-delay: 0.225s; }
.pl-letter:nth-child(5) { animation-delay: 0.3s; }
.pl-letter:nth-child(6) { animation-delay: 0.375s; }
.pl-letter:nth-child(7) { animation-delay: 0.45s; }

[data-pl="reload"] .pl-letter {
    animation-duration: 0.58s;
}

#preloader-bar-track {
    position: relative;
    z-index: 1;
    width: min(260px, 72vw);
    height: 2px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(255, 0, 34, 0.13);
    box-shadow: 0 0 20px rgba(255, 0, 34, 0.2);
}

#preloader-bar {
    position: absolute;
    inset: 0;
    border-radius: inherit;
    width: 42%;
    background: #FF0022;
    box-shadow:
        0 0 14px rgba(255, 0, 34, 0.9),
        0 0 30px rgba(255, 0, 34, 0.36);
    animation: preloader-bar 1.1s ease-in-out infinite;
}

@keyframes preloader-logo-in {
    from {
        opacity: 0;
        transform: translateY(8px) scale(0.94);
        filter: blur(4px) drop-shadow(0 0 0 rgba(255, 0, 34, 0));
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0) drop-shadow(0 0 34px rgba(255, 0, 34, 0.42));
    }
}

@keyframes preloader-logo-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-5px); }
}

@keyframes pl-letter-flash {
    0% {
        opacity: 0;
        color: rgba(255, 255, 255, 0.16);
        transform: translateY(8px) scale(0.92);
        filter: blur(6px);
        text-shadow: none;
    }
    42% {
        opacity: 1;
        color: #FF0022;
        transform: translateY(0) scale(1.045);
        filter: blur(0);
        text-shadow:
            0 0 16px rgba(255, 0, 34, 0.82),
            0 0 38px rgba(255, 0, 34, 0.42);
    }
    100% {
        opacity: 1;
        color: #ffffff;
        transform: translateY(0) scale(1);
        filter: blur(0);
        text-shadow:
            0 0 10px rgba(255, 255, 255, 0.18),
            0 0 18px rgba(255, 0, 34, 0.12);
    }
}

@keyframes preloader-bar {
    from { transform: translateX(-120%); }
    to { transform: translateX(260%); }
}

@keyframes preloader-rotate {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    #preloader::after,
    #preloader-logo,
    .pl-letter,
    #preloader-bar {
        animation: none;
    }

    .pl-letter {
        opacity: 1;
        transform: none;
        filter: none;
    }
}
