html.tp-preloader-active,
body.tp-preloader-active {
    overflow: hidden !important;
}

.tp-preloader {
    --tp-bg: #120b0b;
    --tp-logo-width: 520px;
    position: fixed;
    inset: 0;
    z-index: 2147483646;
    display: grid;
    place-items: center;
    background:
        radial-gradient(circle at 50% 42%, rgba(177, 24, 24, 0.20), transparent 42%),
        radial-gradient(circle at 50% 58%, rgba(218, 165, 32, 0.08), transparent 36%),
        var(--tp-bg);
    opacity: 1;
    visibility: visible;
    transition: opacity .5s ease, visibility .5s ease;
}

.tp-preloader::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.035) 45%, transparent 60%);
    transform: translateX(-100%);
    animation: tp-sheen 2.3s ease-in-out infinite;
    pointer-events: none;
}

.tp-preloader__inner {
    position: relative;
    width: min(88vw, calc(var(--tp-logo-width) + 80px));
    text-align: center;
    padding: 28px 28px 22px;
}

.tp-preloader__logo-wrap {
    filter: drop-shadow(0 18px 28px rgba(0,0,0,.45));
    animation: tp-float 1.8s ease-in-out infinite;
}

.tp-preloader__logo {
    display: block;
    width: min(100%, var(--tp-logo-width));
    height: auto;
    margin: 0 auto;
    transform: translateZ(0);
}

.tp-preloader__line {
    width: min(260px, 55vw);
    height: 3px;
    margin: 20px auto 0;
    border-radius: 99px;
    overflow: hidden;
    background: rgba(255,255,255,.10);
    box-shadow: 0 0 18px rgba(212, 170, 47, .16);
}

.tp-preloader__line span {
    display: block;
    width: 42%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #8f0e0e, #d6ad3a, #ffffff, #d6ad3a, #8f0e0e);
    animation: tp-load 1.15s ease-in-out infinite;
}

.tp-preloader.tp-preloader--hide {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

@keyframes tp-load {
    0% { transform: translateX(-120%); }
    100% { transform: translateX(340%); }
}

@keyframes tp-float {
    0%,100% { transform: translateY(0) scale(1); }
    50% { transform: translateY(-5px) scale(1.01); }
}

@keyframes tp-sheen {
    0%, 25% { transform: translateX(-100%); }
    70%, 100% { transform: translateX(100%); }
}

@media (prefers-reduced-motion: reduce) {
    .tp-preloader::before,
    .tp-preloader__logo-wrap,
    .tp-preloader__line span {
        animation: none !important;
    }
}
