:root {
    /* Vibrant, Fun Palette */
    --primary: #1B5E20;
    /* Deep Green */
    --primary-light: #4CAF50;
    --secondary: #F57C00;
    /* Rich Orange */
    --secondary-light: #FF9800;
    --accent: #E91E63;
    /* Pink for highlights */

    --background: #FFFDE7;
    /* Light Yellow/Cream Background */
    --surface: #FFFFFF;
    --surface-alt: #F1F8E9;
    /* Light Green Tint */

    --foreground: #263238;
    /* Blue-ish Dark Grey */
    --muted-foreground: #546E7A;

    --border: #C5E1A5;
}

body {
    font-family: 'Inter', sans-serif;
    background-color: var(--background);
    color: var(--foreground);
    background-image: linear-gradient(to bottom, #F9A825 0%, #FFFFFF 700px);
    min-height: 100vh;
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

h1,
h2,
h3,
h4 {
    font-family: 'Poppins', sans-serif;
    color: var(--primary);
    line-height: 1.2;
}

/* Animations */
@keyframes fade-in-up {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-fade-in-up {
    animation: fade-in-up 0.8s ease-out forwards;
}

@keyframes blob {
    0% {
        transform: translate(0px, 0px) scale(1);
    }

    33% {
        transform: translate(30px, -50px) scale(1.1);
    }

    66% {
        transform: translate(-20px, 20px) scale(0.9);
    }

    100% {
        transform: translate(0px, 0px) scale(1);
    }
}

.animate-blob {
    animation: blob 7s infinite;
}

.animation-delay-2000 {
    animation-delay: 2s;
}

/* Typography */
.text-primary {
    color: var(--primary);
}

.text-secondary {
    color: var(--secondary);
}

.text-accent {
    color: var(--accent);
}

.text-foreground {
    color: var(--foreground);
}

.text-muted-foreground {
    color: var(--muted-foreground);
}

/* Backgrounds & Buttons */
.bg-primary {
    background-color: var(--primary);
}

.bg-secondary {
    background-color: var(--secondary);
}

.bg-surface-alt {
    background-color: var(--surface-alt);
}

.bg-white {
    background-color: #ffffff;
}

.btn-primary {
    background-color: var(--secondary);
    color: white;
    transition: all 0.2s;
    box-shadow: 0 4px 6px -1px rgba(245, 124, 0, 0.3);
}

.btn-primary:active {
    transform: scale(0.98);
}

@media (hover: hover) {
    .btn-primary:hover {
        background-color: var(--secondary-light);
        transform: translateY(-2px);
        box-shadow: 0 10px 15px -3px rgba(245, 124, 0, 0.4);
    }
}

/* Cards */
.card {
    background: white;
    border-radius: 1rem;
    border: 2px solid var(--border);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    position: relative;
    z-index: 10;
}

.card-hover:hover {
    border-color: var(--primary-light);
    transform: translateY(-4px);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
    transition: all 0.3s ease;
}

/* Carousel Styles */
.carousel-container {
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding: 20px 4px;
    display: flex;
    /* Ensure flex for items */
}

.carousel-container::-webkit-scrollbar {
    display: none;
}

.carousel-item {
    scroll-snap-align: center;
    min-width: 85vw;
    margin-right: 16px;
    flex-shrink: 0;
}

@media (min-width: 768px) {
    .carousel-item {
        min-width: 350px;
        margin-right: 0;
    }
}

/* Marquee Styles */
.marquee-wrapper {
    position: relative;
    width: 100%;
    /* Default to 100% to avoid mobile overflow */
    overflow: hidden;
    padding: 2rem 0;
    /* Mask can be heavy on some mobile browsers, keeping it but ensuring fallback */
    mask-image: linear-gradient(to right, transparent, black 5%, black 95%, transparent);
    -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}

/* Breakout on larger screens or explicitly supported containers */
@media (min-width: 768px) {
    .marquee-wrapper {
        width: 100vw;
        margin-left: calc(-50vw + 50%);
    }
}

.marquee-track {
    display: flex;
    gap: 2rem;
    width: max-content;
}

/* Section Dividers/Backgrounds */
.section-alt {
    background-color: var(--surface-alt);
    border-top: 1px dashed var(--border);
    border-bottom: 1px dashed var(--border);
}
