/**
 * GRID LAYOUT SYSTEM
 * Système de grille flexible mobile-first
 */

/* ================================
   CONTAINER
   ================================ */

.container {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--space-4);
    padding-right: var(--space-4);
}

@media (min-width: 640px) {
    .container {
        max-width: 640px;
    }
}

@media (min-width: 768px) {
    .container {
        max-width: 768px;
        padding-left: var(--space-6);
        padding-right: var(--space-6);
    }
}

@media (min-width: 1024px) {
    .container {
        max-width: 1024px;
    }
}

@media (min-width: 1280px) {
    .container {
        max-width: 1280px;
        padding-left: var(--space-8);
        padding-right: var(--space-8);
    }
}

/* ================================
   GRID SYSTEM
   ================================ */

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

.grid--cols-1 { grid-template-columns: repeat(1, 1fr); }
.grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
.grid--cols-6 { grid-template-columns: repeat(6, 1fr); }
.grid--cols-12 { grid-template-columns: repeat(12, 1fr); }

/* Gap utilities */
.grid--gap-2 { gap: var(--space-2); }
.grid--gap-4 { gap: var(--space-4); }
.grid--gap-6 { gap: var(--space-6); }
.grid--gap-8 { gap: var(--space-8); }

/* Responsive */
@media (min-width: 640px) {
    .sm\:grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
    .sm\:grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 768px) {
    .md\:grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
    .md\:grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
    .md\:grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
}

@media (min-width: 1024px) {
    .lg\:grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
    .lg\:grid--cols-4 { grid-template-columns: repeat(4, 1fr); }
    .lg\:grid--cols-6 { grid-template-columns: repeat(6, 1fr); }
}

/* ================================
   FLEX LAYOUTS
   ================================ */

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

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

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

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

/* ================================
   STACK LAYOUT
   ================================ */

.stack {
    display: flex;
    flex-direction: column;
}

.stack--gap-2 { gap: var(--space-2); }
.stack--gap-4 { gap: var(--space-4); }
.stack--gap-6 { gap: var(--space-6); }
.stack--gap-8 { gap: var(--space-8); }
