/* ============================================
   AMD Layout System - Containers & Grid
   ============================================ */

/* ========== Container ========== */
.container {
    width: 100%;
    max-width: var(--container-xl);
    margin-inline: auto;
    padding-inline: var(--spacing-4);
}

.container--sm {
    max-width: var(--container-sm);
}

.container--md {
    max-width: var(--container-md);
}

.container--lg {
    max-width: var(--container-lg);
}

.container--xl {
    max-width: var(--container-xl);
}

.container--2xl {
    max-width: var(--container-2xl);
}

.container--full {
    max-width: 100%;
}

/* ========== Section ========== */
.section {
    padding-block: var(--spacing-16);
}

.section--sm {
    padding-block: var(--spacing-8);
}

.section--lg {
    padding-block: var(--spacing-24);
}

.section--primary {
    background-color: var(--bg-primary);
}

.section--secondary {
    background-color: var(--bg-secondary);
}

.section--dark {
    background-color: var(--color-secondary);
    color: var(--color-white);
}

.section--accent {
    background-color: var(--color-primary);
    color: var(--color-white);
}

/* ========== Grid System ========== */
.grid {
    display: grid;
    gap: var(--spacing-6);
}

.grid--2 {
    grid-template-columns: repeat(2, 1fr);
}

.grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

.grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

/* Auto-fit grids */
.grid--auto-sm {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.grid--auto-md {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid--auto-lg {
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}

/* ========== Flexbox Utilities ========== */
.flex {
    display: flex;
}

.flex--inline {
    display: inline-flex;
}

.flex--wrap {
    flex-wrap: wrap;
}

.flex--col {
    flex-direction: column;
}

.flex--row-reverse {
    flex-direction: row-reverse;
}

.flex--col-reverse {
    flex-direction: column-reverse;
}

/* Alignment */
.items-start {
    align-items: flex-start;
}

.items-center {
    align-items: center;
}

.items-end {
    align-items: flex-end;
}

.items-stretch {
    align-items: stretch;
}

.justify-start {
    justify-content: flex-start;
}

.justify-center {
    justify-content: center;
}

.justify-end {
    justify-content: flex-end;
}

.justify-between {
    justify-content: space-between;
}

.justify-around {
    justify-content: space-around;
}

.justify-evenly {
    justify-content: space-evenly;
}

.self-start {
    align-self: flex-start;
}

.self-center {
    align-self: center;
}

.self-end {
    align-self: flex-end;
}

/* Gap */
.gap-0 {
    gap: 0;
}

.gap-1 {
    gap: var(--spacing-1);
}

.gap-2 {
    gap: var(--spacing-2);
}

.gap-3 {
    gap: var(--spacing-3);
}

.gap-4 {
    gap: var(--spacing-4);
}

.gap-6 {
    gap: var(--spacing-6);
}

.gap-8 {
    gap: var(--spacing-8);
}

.gap-10 {
    gap: var(--spacing-10);
}

.gap-12 {
    gap: var(--spacing-12);
}

/* ========== Spacing Utilities ========== */
/* Margin */
.m-auto {
    margin: auto;
}

.mx-auto {
    margin-inline: auto;
}

.my-auto {
    margin-block: auto;
}

.mt-0 {
    margin-top: 0;
}

.mt-4 {
    margin-top: var(--spacing-4);
}

.mt-6 {
    margin-top: var(--spacing-6);
}

.mt-8 {
    margin-top: var(--spacing-8);
}

.mt-12 {
    margin-top: var(--spacing-12);
}

.mb-0 {
    margin-bottom: 0;
}

.mb-4 {
    margin-bottom: var(--spacing-4);
}

.mb-6 {
    margin-bottom: var(--spacing-6);
}

.mb-8 {
    margin-bottom: var(--spacing-8);
}

.mb-12 {
    margin-bottom: var(--spacing-12);
}

/* Padding */
.p-0 {
    padding: 0;
}

.p-4 {
    padding: var(--spacing-4);
}

.p-6 {
    padding: var(--spacing-6);
}

.p-8 {
    padding: var(--spacing-8);
}

.py-4 {
    padding-block: var(--spacing-4);
}

.py-6 {
    padding-block: var(--spacing-6);
}

.py-8 {
    padding-block: var(--spacing-8);
}

.px-4 {
    padding-inline: var(--spacing-4);
}

.px-6 {
    padding-inline: var(--spacing-6);
}

.px-8 {
    padding-inline: var(--spacing-8);
}

/* ========== Text Utilities ========== */
.text-center {
    text-align: center;
}

.text-start {
    text-align: start;
}

.text-end {
    text-align: end;
}

.text-sm {
    font-size: var(--font-size-sm);
}

.text-base {
    font-size: var(--font-size-base);
}

.text-lg {
    font-size: var(--font-size-lg);
}

.text-xl {
    font-size: var(--font-size-xl);
}

.text-2xl {
    font-size: var(--font-size-2xl);
}

.font-normal {
    font-weight: var(--font-weight-normal);
}

.font-medium {
    font-weight: var(--font-weight-medium);
}

.font-semibold {
    font-weight: var(--font-weight-semibold);
}

.font-bold {
    font-weight: var(--font-weight-bold);
}

.text-primary {
    color: var(--text-primary);
}

.text-secondary {
    color: var(--text-secondary);
}

.text-accent {
    color: var(--text-accent);
}

.text-white {
    color: var(--color-white);
}

.uppercase {
    text-transform: uppercase;
}

.capitalize {
    text-transform: capitalize;
}

.tracking-wide {
    letter-spacing: var(--letter-spacing-wide);
}

.tracking-wider {
    letter-spacing: var(--letter-spacing-wider);
}

/* ========== Display Utilities ========== */
.block {
    display: block;
}

.inline-block {
    display: inline-block;
}

.hidden {
    display: none;
}

.relative {
    position: relative;
}

.absolute {
    position: absolute;
}

.fixed {
    position: fixed;
}

.sticky {
    position: sticky;
}

.w-full {
    width: 100%;
}

.h-full {
    height: 100%;
}

.min-h-screen {
    min-height: 100vh;
}

/* ========== Responsive Breakpoints ========== */
@media (max-width: 640px) {
    .sm\:hidden {
        display: none;
    }

    .sm\:block {
        display: block;
    }

    .sm\:flex {
        display: flex;
    }

    .sm\:flex--col {
        flex-direction: column;
    }

    .sm\:text-center {
        text-align: center;
    }

    .grid--2,
    .grid--3,
    .grid--4 {
        grid-template-columns: 1fr;
    }

    h1 {
        font-size: var(--font-size-4xl);
    }

    h2 {
        font-size: var(--font-size-3xl);
    }

    h3 {
        font-size: var(--font-size-2xl);
    }

    .section {
        padding-block: var(--spacing-10);
    }

    .container {
        padding-inline: var(--spacing-4);
    }
}

@media (min-width: 641px) and (max-width: 1024px) {
    .md\:hidden {
        display: none;
    }

    .md\:block {
        display: block;
    }

    .md\:flex {
        display: flex;
    }

    .grid--3,
    .grid--4 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (min-width: 1025px) {
    .lg\:hidden {
        display: none;
    }

    .lg\:block {
        display: block;
    }

    .lg\:flex {
        display: flex;
    }

    .container {
        padding-inline: var(--spacing-8);
    }
}