/* Sections Engine — semantic layout, performant backgrounds */

.cms-page-sections {
    display: flex;
    flex-direction: column;
}

.cms-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}

.cms-section__bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    pointer-events: none;
}

.cms-section--parallax .cms-section__bg {
    background-attachment: fixed;
}

@supports (background-attachment: fixed) {
    @media (max-width: 1023px) {
        .cms-section--parallax .cms-section__bg {
            background-attachment: scroll;
        }
    }
}

.cms-section__overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
}

.cms-section__container {
    position: relative;
    z-index: 2;
    width: 100%;
    margin-inline: auto;
    padding-inline: 1rem;
}

.cms-section__container--default {
    max-width: 72rem;
}

.cms-section__container--narrow {
    max-width: 42rem;
}

.cms-section__container--wide {
    max-width: 90rem;
}

.cms-section__container--full,
.cms-section__container--fluid {
    max-width: none;
    padding-inline: 0;
}

.cms-section--full-width .cms-section__container--default,
.cms-section--full-width .cms-section__container--narrow,
.cms-section--full-width .cms-section__container--wide {
    max-width: none;
}

.cms-section__heading {
    margin: 0 0 1.5rem;
    font-weight: 700;
    line-height: 1.2;
}

.cms-section__content {
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* Spacing */
.cms-section--spacing-none { --section-py: 0; }
.cms-section--spacing-compact { --section-py: 0.75; }
.cms-section--spacing-default { --section-py: 1; }
.cms-section--spacing-relaxed { --section-py: 1.35; }

.cms-section--pt-none { padding-top: 0; }
.cms-section--pt-sm { padding-top: 2rem; }
.cms-section--pt-md { padding-top: 3rem; }
.cms-section--pt-lg { padding-top: 4.5rem; }
.cms-section--pt-xl { padding-top: 6rem; }

.cms-section--pb-none { padding-bottom: 0; }
.cms-section--pb-sm { padding-bottom: 2rem; }
.cms-section--pb-md { padding-bottom: 3rem; }
.cms-section--pb-lg { padding-bottom: 4.5rem; }
.cms-section--pb-xl { padding-bottom: 6rem; }

.cms-section--min-sm { min-height: 20rem; }
.cms-section--min-md { min-height: 32rem; }
.cms-section--min-lg { min-height: 48rem; }
.cms-section--min-screen { min-height: 100vh; min-height: 100dvh; }

/* Responsive hide (sections) */
.cms-section--hide-mobile { display: none; }
@media (min-width: 640px) {
    .cms-section--hide-mobile { display: block; }
    .cms-section--hide-tablet { display: none; }
}
@media (min-width: 1024px) {
    .cms-section--hide-tablet { display: block; }
    .cms-section--hide-desktop { display: none; }
}

/* Grid layout */
.cms-grid {
    display: grid;
    width: 100%;
}

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

.cms-grid--gap-sm { gap: 0.75rem; }
.cms-grid--gap-md { gap: 1.5rem; }
.cms-grid--gap-lg { gap: 2.5rem; }

.cms-grid--align-start { align-items: start; }
.cms-grid--align-center { align-items: center; }
.cms-grid--align-end { align-items: end; }
.cms-grid--align-stretch { align-items: stretch; }

@media (max-width: 767px) {
    .cms-grid--cols-2,
    .cms-grid--cols-3,
    .cms-grid--cols-4,
    .cms-grid--cols-5,
    .cms-grid--cols-6 {
        grid-template-columns: 1fr;
    }
}

/* Columns layout */
.cms-columns {
    display: flex;
    flex-wrap: wrap;
    width: 100%;
}

.cms-columns--gap-sm { gap: 0.75rem; }
.cms-columns--gap-md { gap: 1.5rem; }
.cms-columns--gap-lg { gap: 2.5rem; }

.cms-column {
    flex: 1 1 0;
    min-width: 0;
}

.cms-column--equal { flex: 1 1 0; }
.cms-column--third { flex: 0 0 calc(33.333% - 1rem); }
.cms-column--two-thirds { flex: 0 0 calc(66.666% - 1rem); }
.cms-column--quarter { flex: 0 0 calc(25% - 1rem); }
.cms-column--three-quarters { flex: 0 0 calc(75% - 1rem); }

@media (max-width: 767px) {
    .cms-columns[data-stack-mobile="true"] {
        flex-direction: column;
    }

    .cms-columns[data-stack-mobile="true"] .cms-column {
        flex: 1 1 100%;
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cms-section--parallax .cms-section__bg {
        background-attachment: scroll;
    }

    .cms-section--animate {
        animation: none !important;
    }
}
