/*
 * Final button interaction pass.
 *
 * All public-facing action controls use a simple zoom interaction. Their
 * hover colors are restated here because several older stylesheets define
 * competing hover treatments that can reduce label contrast.
 */

.btn,
.dest-card__cta,
.dest-card__link,
.tour-card__link,
.tour-card__read-more,
.safari-card__link,
.post-card__link .btn,
.footer-outbound-all,
.form-submit,
.etc-form button[type="submit"] {
    transform-origin: center;
    transition: transform .2s ease, background-color .2s ease,
        border-color .2s ease, box-shadow .2s ease, color .2s ease !important;
}

/*
 * Normal-state contrast is intentional. Do not rely on inherited card or
 * global link colors for a CTA label: the label must be readable before the
 * pointer reaches the control.
 */
.dest-card__cta,
.dest-card__link,
.tour-card__link,
.tour-card__read-more,
.safari-card__link,
.post-card__link .btn,
.footer-outbound-all,
.form-submit,
.etc-form button[type="submit"] {
    color: #fff !important;
    font-weight: 800 !important;
    text-shadow: none !important;
}

.dest-card__cta,
.dest-card__link,
.tour-card__link,
.tour-card__read-more,
.safari-card__link,
.post-card__link .btn,
.footer-outbound-all {
    background-color: #019348 !important;
    border-color: #019348 !important;
}

.dest-card__cta::after,
.safari-card__link::after,
.tour-card__link::after,
.tour-card__read-more::after {
    color: #fff !important;
}

.btn--primary,
.btn--accent,
.btn--green,
.header-cta .btn,
.form-submit,
.etc-form button[type="submit"] {
    color: #fff !important;
    font-weight: 800 !important;
    text-shadow: none !important;
}

/* Light outline and secondary controls retain dark text on their light fill. */
.btn--outline:not(.btn--outline-white),
.etc-form .btn--ghost,
.etc-form .btn--secondary,
.etc-form__btn--back {
    color: var(--color-primary, #123f31) !important;
}

body.home .recent-posts__all .btn--outline {
    color: #fff !important;
    font-weight: 800 !important;
    text-shadow: none !important;
}

.btn:hover,
.btn:focus-visible,
.dest-card__cta:hover,
.dest-card__cta:focus-visible,
.dest-card__link:hover,
.dest-card__link:focus-visible,
.tour-card__link:hover,
.tour-card__link:focus-visible,
.tour-card__read-more:hover,
.tour-card__read-more:focus-visible,
.safari-card__link:hover,
.safari-card__link:focus-visible,
.post-card__link .btn:hover,
.post-card__link .btn:focus-visible,
.footer-outbound-all:hover,
.footer-outbound-all:focus-visible,
.form-submit:hover,
.form-submit:focus-visible,
.etc-form button[type="submit"]:hover,
.etc-form button[type="submit"]:focus-visible {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    color: #fff !important;
    box-shadow: 0 10px 22px rgba(0, 0, 0, .18) !important;
    transform: scale(1.06) !important;
}

/* Filled buttons stay filled, with white labels on every state. */
.btn--primary:hover,
.btn--primary:focus-visible,
.btn--accent:hover,
.btn--accent:focus-visible,
.btn--green:hover,
.btn--green:focus-visible,
.header-cta .btn:hover,
.header-cta .btn:focus-visible,
.form-submit:hover,
.form-submit:focus-visible,
.etc-form button[type="submit"]:hover,
.etc-form button[type="submit"]:focus-visible {
    background-color: var(--color-accent) !important;
    border-color: var(--color-accent) !important;
    color: #fff !important;
}

.btn--green:hover,
.btn--green:focus-visible {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
}

/* Outline buttons use a solid green hover so their labels cannot disappear. */
.btn--outline:hover,
.btn--outline:focus-visible {
    background-color: var(--color-primary) !important;
    border-color: var(--color-primary) !important;
    color: #fff !important;
}

body.home .recent-posts__all .btn--outline:hover,
body.home .recent-posts__all .btn--outline:focus-visible {
    background-color: #019348 !important;
    border-color: #019348 !important;
    color: #fff !important;
}

/* Card actions are placed on mixed image and light-card surfaces. */
.dest-card__cta:hover,
.dest-card__cta:focus-visible,
.dest-card__link:hover,
.dest-card__link:focus-visible,
.tour-card__link:hover,
.tour-card__link:focus-visible,
.tour-card__read-more:hover,
.tour-card__read-more:focus-visible,
.safari-card__link:hover,
.safari-card__link:focus-visible,
.post-card__link .btn:hover,
.post-card__link .btn:focus-visible,
.footer-outbound-all:hover,
.footer-outbound-all:focus-visible {
    background-color: #019348 !important;
    border-color: #019348 !important;
    color: #fff !important;
}

/* Form back/secondary controls remain light with dark, readable labels. */
.etc-form .btn--ghost:hover,
.etc-form .btn--ghost:focus-visible,
.etc-form .btn--secondary:hover,
.etc-form .btn--secondary:focus-visible,
.etc-form__btn--back:hover,
.etc-form__btn--back:focus-visible {
    background-color: #fff !important;
    border-color: #d5d7d2 !important;
    color: #3b463e !important;
}

@media (prefers-reduced-motion: reduce) {
    .btn,
    .dest-card__cta,
    .dest-card__link,
    .tour-card__link,
    .tour-card__read-more,
    .safari-card__link,
    .post-card__link .btn,
    .footer-outbound-all,
    .form-submit,
    .etc-form button[type="submit"] {
        transition: color .2s ease, background-color .2s ease,
            border-color .2s ease, box-shadow .2s ease !important;
    }

    .btn:hover,
    .btn:focus-visible,
    .dest-card__cta:hover,
    .dest-card__cta:focus-visible,
    .dest-card__link:hover,
    .dest-card__link:focus-visible,
    .tour-card__link:hover,
    .tour-card__link:focus-visible,
    .tour-card__read-more:hover,
    .tour-card__read-more:focus-visible,
    .safari-card__link:hover,
    .safari-card__link:focus-visible,
    .post-card__link .btn:hover,
    .post-card__link .btn:focus-visible,
    .footer-outbound-all:hover,
    .footer-outbound-all:focus-visible,
    .form-submit:hover,
    .form-submit:focus-visible,
    .etc-form button[type="submit"]:hover,
    .etc-form button[type="submit"]:focus-visible {
        transform: none !important;
    }
}