/* ASE v1.4.16 — canonical responsive layout system.
 * One definition per layout primitive. Card behavior is based on available
 * container width through auto-fit tracks, not the browser viewport alone. */
.ase-site .ase-grid {
    display: grid !important;
    inline-size: 100% !important;
    width: 100% !important;
    max-inline-size: 100% !important;
    max-width: 100% !important;
    min-inline-size: 0 !important;
    min-width: 0 !important;
    min-height: 0;
    grid-auto-flow: row;
    grid-auto-rows: auto;
    gap: clamp(1rem, 2.3vw, 1.75rem);
    align-items: stretch;
    justify-items: stretch;
    margin-inline: 0 !important;
}

.ase-site .ase-grid > * {
    inline-size: 100% !important;
    width: 100% !important;
    max-inline-size: 100% !important;
    max-width: 100% !important;
    min-inline-size: 0 !important;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto !important;
    margin: 0 !important;
    float: none !important;
}

/* Three-up editorial/card collections. With ASE's normal 1240px content
 * frame these naturally resolve 3 -> 2 -> 1 as actual available space falls. */
.ase-site :where(
    .ase-grid--3,
    .ase-topic-grid,
    .ase-featured-grid,
    .wp-block-post-template.is-layout-grid.ase-post-grid,
    .ase-card-grid.ase-grid--items-3,
    .ase-card-grid.ase-grid--items-4,
    .ase-card-grid.ase-grid--items-5,
    .ase-card-grid.ase-grid--items-6
) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)) !important;
}

/* Two-up collections never become narrower than a readable card. */
.ase-site :where(.ase-grid--2, .ase-card-grid.ase-grid--items-2) {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)) !important;
}

.ase-site .ase-card-grid {
    min-inline-size: 0 !important;
    min-width: 0 !important;
    align-items: start !important;
}

.ase-site .ase-card-grid.ase-grid--items-1 {
    grid-template-columns: minmax(0, 1fr) !important;
    inline-size: min(100%, 760px) !important;
    width: min(100%, 760px) !important;
    max-inline-size: 760px !important;
    max-width: 760px !important;
    margin-inline: auto !important;
}

/* Split presentation primitives use the same available-width principle. */
.ase-site .ase-grid--hero {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 25rem), 1fr)) !important;
    gap: clamp(2rem, 5vw, 5.5rem);
    align-items: center;
}

.ase-site .ase-grid--resource {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 26rem), 1fr)) !important;
    gap: clamp(2rem, 5vw, 4.5rem);
    align-items: center;
}

.ase-site .ase-grid--resource-single {
    grid-template-columns: minmax(0, 1fr) !important;
}

.ase-site .ase-grid--purpose-media,
.ase-site .ase-grid--inner-hero {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 25rem), 1fr)) !important;
    gap: clamp(2.25rem, 5vw, 5rem);
    align-items: center;
}

/* Featured Resource must contribute natural height and may never clip into the
 * following section. */
.ase-site .ase-featured-resource :where(.ase-resource, .ase-grid--resource, .ase-resource__content, .ase-resource__visual) {
    min-height: 0 !important;
    height: auto !important;
    max-height: none !important;
    float: none !important;
}

.ase-site .ase-lead-capture__card,
.ase-site .ase-cta {
    grid-template-columns: minmax(0, 1fr) auto !important;
}

@media (max-width: 680px) {
    .ase-site {
        --ase-gutter: 1.1rem;
        --ase-section-pad: 3.75rem;
    }

    .ase-site .ase-card-grid.ase-grid--items-1 {
        inline-size: 100% !important;
        width: 100% !important;
        max-inline-size: none !important;
        max-width: none !important;
    }

    .ase-site .ase-lead-capture__card,
    .ase-site .ase-cta {
        grid-template-columns: minmax(0, 1fr) !important;
    }

    .ase-site .ase-hero__title {
        max-width: none;
        font-size: clamp(2.35rem, 11vw, 4rem) !important;
        line-height: 1.04 !important;
    }

    .ase-site .ase-section--accent .ase-buttons {
        justify-self: start;
    }

    .ase-site .ase-resource {
        padding: 1.45rem;
    }
}
