.container {
    max-width: 1100px;
    margin: 0 auto;
    padding: 0 var(--space-md);
}

.section {
    padding: clamp(3rem, 8vw, 6rem) 0;
    scroll-margin-top: 80px;
}

.section--cream {
    background-color: var(--clr-bg-cream);
}

.grid {
    display: grid;
    gap: var(--space-md);
}

.grid-2 {
    grid-template-columns: repeat(2, 1fr);
}

.flex {
    display: flex;
}

.flex-center {
    justify-content: center;
    align-items: center;
}

.text-center {
    text-align: center;
}

.u-mb-0 { margin-bottom: 0 !important; }
.u-mb-xs { margin-bottom: var(--space-xs) !important; }
.u-mb-sm { margin-bottom: var(--space-sm) !important; }
.u-mb-md { margin-bottom: var(--space-md) !important; }
.u-mb-lg { margin-bottom: var(--space-lg) !important; }
.u-mb-xl { margin-bottom: var(--space-xl) !important; }

/* ===== Scroll Animations ===== */
.fade-up {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
    will-change: opacity, transform;
}
.fade-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.fade-in-left {
    opacity: 0;
    transform: translateX(-40px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
    will-change: opacity, transform;
}
.fade-in-left.is-visible {
    opacity: 1;
    transform: translateX(0);
}

.fade-in-right {
    opacity: 0;
    transform: translateX(40px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
    will-change: opacity, transform;
}
.fade-in-right.is-visible {
    opacity: 1;
    transform: translateX(0);
}

/* ===== Responsive ===== */
@media (max-width: 768px) {
    .grid-2 {
        grid-template-columns: 1fr;
    }

    .section {
        padding: var(--space-md) 0;
    }
}
