/* All sections should have some space at the bottom. */
main > section {
    margin-bottom: 100px;
    background-color: rgba(255, 255, 255, 0.9);
}
main > section.container.content-box:first-of-type {
    margin-top: 100px;
}
@media (max-width: 767px) {
    main > section { padding: 2.5rem; }
}
@media (min-width: 768px) {
    main > section { padding: 0.5in 0.25in; }
}

/* Section titles use fancy font. */
.section-title {
    font-family: "Gabriela", serif;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 1em;
}

/* Lead text is slightly bigger than normal. */
.offers-lead p.lead {
    font-size: 1.25em;
}

p.lead {
    font-weight: 300;
}

/* Sections with offers flex. When >= 992px wide, show two columns.
 * When narrower, make them full width.
 */
.offers-flex {
    display: flex;
    flex-flow: row wrap;
    justify-content: space-between;
    align-items: stretch;
    padding-bottom: 50px;
}

/* When the viewport is just small enough to wrap the offers list below the lead
 * text, put some space between them.
 */
@media (max-width: 991px) {
    .section-title { text-align: center; }
    .offers-flex > .offers-lead { margin-bottom: 4em; }
    .offers-flex > .offers-list { padding-left: 0; }
}

/* When the viewport is wide enough, adjust the sideways padding in the two columns. */
@media (min-width: 992px) {
    .offers-flex > .offers-lead { flex-grow: 5; padding-left: 35px; padding-right: 40px; }
    .offers-flex > .offers-list { flex-grow: 7; padding-left: 40px; padding-right: 0; }
}

/* Each offer also flexes. */
.registration-offer {
    background-color: rgb(247, 247, 247);
    margin-top: 1em;
    margin-bottom: 1em;
    padding: 2em;
}
@media (min-width: 992px) {
    .registration-offer {
        display: flex;
        flex-flow: row-reverse wrap;
        align-items: center;
        justify-content: space-between;
    }
    .offer-tag { width: 40%; }
    .offer-details { width: 60%; }
}


.offer-name {
    font-size: 1rem;
    text-transform: uppercase;
    font-weight: bold;
}

.offer-price {
    /* Shrink the pricing a bit on extremely narrow viewports so that it doesn't
     * overlap the offer details. */
    font-size: min(2rem, calc(30vw / 5));
    display: block;
}
.offer-subtitle {
    display: block;
    font-style: normal;
    margin-bottom: 0.5em;
    opacity: 0.8;
}
.offer-action {
    margin-top: 1em;
}

@media (max-width: 767px) {
    .application-content {
        margin: 1.25rem 2.5rem;
    }
}
@media (min-width: 768px) {
    .application-content {
        margin: 2.5rem 5rem;
    }
}
.application-content p {
    margin-top: 2rem;
}
.application-content .application-actions {
    margin-top: 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.application-actions > a:not(:last-of-type) {
    margin-bottom: 2rem;
}

aside {
    margin-top: 2em;
    opacity: 0.8;
    text-align: center;
}

.offer-price {
    color: var(--theme-secondary);
}
