/* 
 * style.css
 * ==========
 * Presentation Layer - CSS
 *
 * Custom CSS untuk animasi, background pattern, dan efek visual.
 * Font: Plus Jakarta Sans (Google Fonts)
 */

/* ===========================
   FONT & BASE
   =========================== */
body {
    font-family: 'Plus Jakarta Sans', sans-serif;
    background-color: #fdfdfd;
    background-image: radial-gradient(#000 1px, transparent 1px);
    background-size: 20px 20px;
    transition: background-color 0.3s, color 0.3s;
}

body.dark {
    background-color: #121212;
    background-image: radial-gradient(rgba(255, 255, 255, 0.2) 1px, transparent 1px);
}

@keyframes bounceSquare {
    0% {
        transform: translateY(20px) scaleX(1.5) scaleY(0.5);
    }
    40% {
        transform: translateY(0) scaleX(1) scaleY(1);
    }
    100% {
        transform: translateY(0) scaleX(1) scaleY(1);
    }
}

/* Hide scrollbar for horizontal scrolling elements */
.hide-scrollbar::-webkit-scrollbar {
    display: none;
}
.hide-scrollbar {
    -ms-overflow-style: none;  /* IE and Edge */
    scrollbar-width: none;  /* Firefox */
}

/* Enforce smooth rounded corners for Refined Neo-Brutalism */
/* We remove the border-radius: 0 !important rule to allow Tailwind rounded utilities to work */

/* Animations */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
.animate-fade-in-up {
    animation: fadeInUp 0.4s ease-out forwards;
}

@keyframes toastEnter {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
.toast-enter {
    animation: toastEnter 0.3s ease-out forwards;
}

@keyframes toastExit {
    from {
        opacity: 1;
        transform: translateX(0);
    }
    to {
        opacity: 0;
        transform: translateX(100%);
    }
}
.toast-exit {
    animation: toastExit 0.3s ease-in forwards;
}

@keyframes neoSpin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}
.animate-neo-spin {
    animation: neoSpin 1.5s linear infinite;
}

/* Scroll Animation Classes */
.scroll-reveal {
    opacity: 0;
    transform: translateY(40px);
    transition: all 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.scroll-reveal.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Order Success Modal Animations */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(30px) scale(0.95);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
