/* ==========================================
   GLOBAL LAYOUT
   Legacy Protection Services
========================================== */

:root {
    --container-width: 1200px;
    --container-width-narrow: 960px;
    --container-width-wide: 1320px;
    --container-padding: 20px;

    --section-space-y: clamp(56px, 6vw, 96px);
    --section-space-y-sm: clamp(40px, 4vw, 64px);
    --section-space-y-lg: clamp(72px, 7vw, 120px);

    --grid-gap: 30px;
    --grid-gap-sm: 20px;
    --grid-gap-lg: 40px;
}

/* ==========================================
   CONTAINERS
========================================== */

.container,
.container-narrow,
.container-wide {
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--container-padding);
    padding-right: var(--container-padding);
}

.container {
    max-width: var(--container-width);
}

.container-narrow {
    max-width: var(--container-width-narrow);
}

.container-wide {
    max-width: var(--container-width-wide);
}

/* ==========================================
   SECTION SPACING
========================================== */

.section {
    position: relative;
    padding-top: var(--section-space-y);
    padding-bottom: var(--section-space-y);
}

.section-sm {
    position: relative;
    padding-top: var(--section-space-y-sm);
    padding-bottom: var(--section-space-y-sm);
}

.section-lg {
    position: relative;
    padding-top: var(--section-space-y-lg);
    padding-bottom: var(--section-space-y-lg);
}

.section-tight-top {
    padding-top: 0;
}

.section-tight-bottom {
    padding-bottom: 0;
}

/* ==========================================
   SECTION THEMES
========================================== */

.section-light {
    background: var(--color-white);
    color: var(--color-text);
}

.section-muted {
    background: #f7f7f7;
    color: var(--color-text);
}

.section-dark {
    background: var(--color-black);
    color: var(--color-white);
}

.section-dark h1,
.section-dark h2,
.section-dark h3,
.section-dark h4,
.section-dark h5,
.section-dark h6 {
    color: var(--color-white);
}

.section-dark p,
.section-dark li,
.section-dark small {
    color: rgba(255, 255, 255, 0.82);
}

/* ==========================================
   GRID SYSTEM
========================================== */

.grid {
    display: grid;
    gap: var(--grid-gap);
}

.grid-sm {
    gap: var(--grid-gap-sm);
}

.grid-lg {
    gap: var(--grid-gap-lg);
}

.grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Auto-fit variants */
.grid-auto-2 {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-auto-3 {
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
}

.grid-auto-4 {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

/* ==========================================
   FLEX HELPERS
========================================== */

.flex {
    display: flex;
}

.flex-wrap {
    flex-wrap: wrap;
}

.flex-center {
    display: flex;
    justify-content: center;
    align-items: center;
}

.flex-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.flex-start {
    display: flex;
    justify-content: flex-start;
    align-items: center;
}

.flex-end {
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

.flex-column {
    display: flex;
    flex-direction: column;
}

.flex-gap-sm {
    gap: 12px;
}

.flex-gap-md {
    gap: 20px;
}

.flex-gap-lg {
    gap: 30px;
}

/* ==========================================
   RESPONSIVE
========================================== */

@media (max-width: 991.98px) {
    :root {
        --container-padding: 18px;
        --grid-gap: 24px;
        --grid-gap-lg: 32px;
    }

    .grid-4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    :root {
        --container-padding: 16px;
        --grid-gap: 20px;
        --grid-gap-sm: 16px;
        --grid-gap-lg: 24px;
    }

    .section {
        padding-top: clamp(48px, 8vw, 72px);
        padding-bottom: clamp(48px, 8vw, 72px);
    }

    .section-sm {
        padding-top: clamp(32px, 6vw, 48px);
        padding-bottom: clamp(32px, 6vw, 48px);
    }

    .section-lg {
        padding-top: clamp(60px, 9vw, 88px);
        padding-bottom: clamp(60px, 9vw, 88px);
    }

    .grid-2,
    .grid-3,
    .grid-4 {
        grid-template-columns: 1fr;
    }

    .flex-between {
        gap: 16px;
    }
}

@media (max-width: 479.98px) {
    :root {
        --container-padding: 14px;
    }
}