/* =============================================
   PRELOADER — Bouncing Ball + Name
   Colors: #1A312C (ball), #428475 (text)
   ============================================= */

@import url(https://fonts.googleapis.com/css?family=Montserrat);

/* Fullscreen overlay */
#preloader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 99999;
    transition: opacity 0.6s ease, visibility 0.6s ease;
}

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

/* Lock scroll while preloader is visible */
body.preloading {
    overflow: hidden;
}

/* Centering wrapper */
.preloader-wrap {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.preloader-loading {
    display: flex;
    align-items: flex-end;
    overflow: hidden;
}

/* Name text — Looney Tunes slide-in from left */
.preloader-loading .text {
    color: #428475;
    display: inline-block;
    margin-left: 5px;
    font-family: 'Montserrat', sans-serif;
    font-size: 16px;
    font-weight: 600;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    white-space: nowrap;
    opacity: 0;
    transform: translateX(-300px) scaleX(0.3) scaleY(1.4);
    animation: looney-slide-in 0.9s cubic-bezier(0.22, 1.2, 0.36, 1) 0.3s forwards;
}

@keyframes looney-slide-in {
    0% {
        opacity: 0;
        transform: translateX(-300px) scaleX(0.3) scaleY(1.4);
    }
    20% {
        opacity: 1;
        transform: translateX(-80px) scaleX(1.3) scaleY(0.8);
    }
    45% {
        transform: translateX(25px) scaleX(0.85) scaleY(1.1);
    }
    65% {
        transform: translateX(-10px) scaleX(1.08) scaleY(0.95);
    }
    80% {
        transform: translateX(4px) scaleX(0.97) scaleY(1.02);
    }
    100% {
        opacity: 1;
        transform: translateX(0) scaleX(1) scaleY(1);
    }
}

/* Bouncing ball container */
.preloader-loading .bounceball {
    position: relative;
    display: inline-block;
    height: 37px;
    width: 15px;
}

.preloader-loading .bounceball::before {
    position: absolute;
    content: '';
    display: block;
    top: 0;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    background-color: #1A312C;
    transform-origin: 50%;
    animation: bounce 500ms alternate infinite ease;
}

@keyframes bounce {
    0% {
        top: 30px;
        height: 5px;
        border-radius: 60px 60px 20px 20px;
        transform: scaleX(2);
    }
    35% {
        height: 15px;
        border-radius: 50%;
        transform: scaleX(1);
    }
    100% {
        top: 0;
    }
}
