html,
body {
    margin: 0;
    padding: 0;
    height: 100%;
    overflow: hidden;
}

body {
    font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
}

/* Hide scrollbar for Chrome, Safari and Opera */
.no-scrollbar::-webkit-scrollbar {
    display: none;
}

/* Hide scrollbar for IE, Edge and Firefox */
.no-scrollbar {
    -ms-overflow-style: none;
    /* IE and Edge */
    scrollbar-width: none;
    /* Firefox */
}

@keyframes float-up {
    0% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }

    100% {
        opacity: 0;
        transform: translateY(-40px) scale(1.1);
    }
}

.particle {
    animation: float-up 0.8s ease-out forwards;
}

.toast-container {
    position: absolute;
    top: 20px;
    left: 0;
    right: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    z-index: 100;
    pointer-events: none;
}

@keyframes slide {
    0% {
        transform: translateX(0);
    }

    100% {
        transform: translateX(var(--slide-dist, -2000px));
    }
}

@keyframes reelSpin {
    0% {
        transform: translateY(var(--reel-start-position, 0));
    }

    100% {
        transform: translateY(var(--reel-end-position, -100%));
    }
}

@keyframes slot-clunk {
    0% {
        transform: translateY(var(--reel-end-position));
    }

    40% {
        transform: translateY(calc(var(--reel-end-position) + 6px));
    }

    75% {
        transform: translateY(calc(var(--reel-end-position) - 2px));
    }

    100% {
        transform: translateY(var(--reel-end-position));
    }
}

@keyframes slide-in-card {
    0% {
        opacity: 0;
        transform: translateY(-20px) rotate(-10deg);
    }

    100% {
        opacity: 1;
        transform: translateY(0) rotate(0deg);
    }
}



@keyframes roulette-spin {
    0% {
        transform: translateX(var(--roulette-start-position, 0px));
        animation-timing-function: cubic-bezier(0.05, 0.95, 0.1, 1);
    }

    100% {
        transform: translateX(var(--roulette-end-position));
    }
}

.is-spinning {
    animation: roulette-spin 6s forwards;
}

.slot-reel {
    animation: reelSpin var(--spin-duration, 1.5s) cubic-bezier(0.1, 0.9, 0.2, 1) forwards;
    filter: blur(2px);
}

.slot-reel-stop {
    filter: blur(0px);
    transition: filter 0.1s ease-out;
}

@keyframes slot-spin {
    from {
        transform: translateY(-10px);
    }

    to {
        transform: translateY(10px);
    }
}

.spinning {
    animation: slot-spin 0.1s linear infinite;
}

.card-anim {
    animation: slide-in-card 0.4s cubic-bezier(0.1, 0.7, 1.0, 0.1) forwards;
}