/* GRID */
.grid { display: grid; gap: var(--kv-space-lg); }
.grid-2 { grid-template-columns: 1fr; }
.grid-3 { grid-template-columns: 1fr; }
.grid-4 { grid-template-columns: 1fr 1fr; }
@media (min-width: 768px) {
    .grid-2 { grid-template-columns: repeat(2, 1fr); }
    .grid-3 { grid-template-columns: repeat(2, 1fr); }
    .grid-4 { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
    .grid-3 { grid-template-columns: repeat(3, 1fr); }
    .grid-4 { grid-template-columns: repeat(4, 1fr); }
}

/* UTILITIES */
.text-center { text-align: center; }
.text-muted { color: var(--kv-text-light); }
.mt-1 { margin-top: var(--kv-space-sm); }
.mt-2 { margin-top: var(--kv-space-md); }
.mt-3 { margin-top: var(--kv-space-lg); }
.mt-4 { margin-top: var(--kv-space-xl); }
.mb-1 { margin-bottom: var(--kv-space-sm); }
.mb-2 { margin-bottom: var(--kv-space-md); }
.mb-3 { margin-bottom: var(--kv-space-lg); }
.mb-4 { margin-bottom: var(--kv-space-xl); }
.d-flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.align-center { align-items: center; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.gap-1 { gap: var(--kv-space-sm); }
.gap-2 { gap: var(--kv-space-md); }
.gap-3 { gap: var(--kv-space-lg); }
.hidden { display: none !important; }

/* ANIMATIONS */
@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
.animate-fade-in { animation: fadeInUp 0.6s ease-out forwards; }
.animate-float { animation: float 3s ease-in-out infinite; }

/* WAVE SEPARATOR */
.wave-separator { position: relative; width: 100%; overflow: hidden; line-height: 0; }
.wave-separator svg { display: block; width: 100%; height: 60px; }
.wave-separator.flip { transform: rotate(180deg); }
