@keyframes fadeIn {

    from {
        opacity: 0;
        transform: translateY(30px);
    }


    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Gazette final spacing refinements. Scoped here because animations.css is
   loaded after the Gazette styles and therefore provides the final visual pass. */
.gazette-page .gazette-beats {
    gap: 16px;
    margin-top: 26px;
}

.gazette-page .gazette-beats article {
    padding: 18px 20px 19px;
}

.gazette-page .gazette-beats strong {
    margin: 6px 0 8px;
}

.gazette-page .gazette-beats p {
    line-height: 1.48;
}

/* Keep the audience heading as a normal form heading rather than letting the
   fieldset legend sit awkwardly on the edge of a surrounding mini-card. */
.gazette-page .gazette-choice {
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: 0;
}

.gazette-page .gazette-choice legend {
    display: block;
    width: 100%;
    margin: 0 0 12px;
    padding: 0;
    color: #52371d;
    font-size: 18px;
    line-height: 1.3;
}

.gazette-page .gazette-choice-grid {
    gap: 12px;
}

@media(max-width: 720px) {
    .gazette-page .gazette-beats article {
        padding: 17px 18px;
    }

    .gazette-page .gazette-choice {
        padding: 0;
    }
}

@media(prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}