/* =========================
   Section Block
========================= */

.section {
    margin: 4rem 0;
}

.section__header {
    text-align: center;
    max-width: 720px;
    margin: 0 auto 3rem;
}

.section__header::after {
    content: "";
    display: block;
    width: 120px;
    height: 2px;
    background: var(--color-surface-alt);
    margin: 0 auto;
    margin-top: 1.5rem;
}

.section__header--page {
    text-align: center;
    max-width: 720px;
    margin: 0 auto 3rem;
}

.section__header--page::after {
    content: "";
    display: block;
    width: 120px;
    height: 2px;
    background: var(--color-accent);
    margin: 0 auto;
    margin-top: 1.5rem;
}

.section__subheader {
    text-align: center;
    align-self: end;
    max-width: 720px;
    margin: 1rem auto 0;
}

.section__header--page .section__title {
    font-size: 2.75rem;
    text-transform: uppercase;
    color: var(--color-accent);
}

.section__header--page .section__subtitle {
    margin-top: 1rem;
    font-size: 1.2rem;
    opacity: 0.85;
}

/* =========================
   Content Block
========================= */

.content-block {
    margin: 2rem 0;
}

.content-block__title {
    font-size: 1.5rem;
    margin: 1rem 0;
}

/* =========================
   Grid Block
========================= */

.grid {
    display: grid;
    gap: 1.25rem;
}

.grid--tight {
    gap: 0;
}

.grid--start {
    align-content: start;
}

.grid__hero--center {
    grid-template-columns: .85fr;
    justify-content: center;
}

.grid__hero--left {
    grid-template-columns: 2fr 1fr;
}

.grid__hero--right {
    grid-template-columns: 1fr 2fr;
}

/* Desktop defaults */
.grid--2 {
    grid-template-columns: repeat(2, 1fr);
}

.grid--3 {
    grid-template-columns: repeat(3, 1fr);
}

.grid--4 {
    grid-template-columns: repeat(4, 1fr);
}

.grid--skip-first {
    grid-column: 2;
}

/* =========================
   Card Block
========================= */

.card {
    background: var(--color-surface);
    border-radius: var(--radius);
    padding: 1.25rem;
    border: 1px solid var(--color-surface-alt);
    transition: transform 0.2s ease, border-color 0.2s ease;
}

.card--centered {
    text-align: center;
    align-content: center;
}

.card--gutter {
    padding-left: 3rem;
    padding-right: 3rem;
}

.card--dark {
    background: var(--color-background);
}

.card:hover {
    border-color: var(--color-surface);
}

.is-mouseover:hover {
    transform: translateY(-4px);
    border-color: var(--color-accent);
}

.card[aria-selected='true'] {
    transform: none;
    border-color: var(--color-accent);
}

.card__icon {
    width: 48px;
    height: 48px;
    padding: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius);
    background: rgba(61, 174, 69, 0.15);
}

.card__icon svg {
    width: 100%;
    height: 100%;
    fill: var(--color-accent);
}

.card__title {
    margin-bottom: 0.75rem;
}


.card__text {
    font-size: 0.9rem;
    line-height: 1.5;
    opacity: 0.9;
}

.card__text--small {
    font-size: 0.8rem;
    line-height: 1.2;
    opacity: 0.9;
}

.card__text--narrow {
    max-width: 40ch;
    margin-left: auto;
    margin-right: auto;
}

.card--media-left {
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 1rem;
    row-gap: 0.35rem;
    align-items: start;
}

.card--media-left .card__icon {
    grid-row: 1 / span 2;
}

.card--media-left .card__title,
.card--media-left .card__text {
    margin: 0;
}

.card--media-right {
    display: grid;
    grid-template-columns: 1fr min-content;
    column-gap: 1rem;
    row-gap: 0.35rem;
    align-items: start;
}

.card--media-right .card__icon {
    grid-row: 1 / span 2;
    grid-column: 2;
}

.card--media-right .card__title,
.card--media-right .card__text {
    margin: 0;
    grid-column: 1;
}

/* =========================
   Responsive (Scale Down)
========================= */

@media (max-width: 1023px) {
    .grid--4 {
        grid-template-columns: repeat(2, 1fr);
    }

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

    .grid--3 .is-remainder {
        grid-column: 1 / span 2;
        max-width: calc(50% - 0.625rem);
        margin: 0 auto;
    }

    .grid__hero--left {
        grid-template-columns: 1fr;
    }
    
    .card {
        padding: 1rem;
    }
}

@media (max-width: 640px) {

    .grid__hero--center {
        grid-template-columns: 1fr;
    }

    .grid--2,
    .grid--3,
    .grid--4 {
        grid-template-columns: 1fr;
    }

    .grid--3 .is-remainder {
        grid-column: inherit;
        max-width: inherit;
        margin: inherit;
    }

    .section__title {
        font-size: 1.8rem;
    }

    .section__header--page .section__subtitle {
        max-width: 85%;
        justify-self: center;
    }

    .card--middle {
        margin: 0;
    }
}