.site-footer {
    --site-footer-bg: var(--bs-bg-body);
    --site-footer-auto-color: var(--bs-fg-body);
    --site-footer-fg: var(--site-footer-auto-color);
    --site-footer-muted: color-mix(
        in oklch,
        var(--site-footer-fg) 78%,
        var(--site-footer-bg)
    );
    --site-footer-border: color-mix(
        in oklch,
        var(--site-footer-fg) 20%,
        var(--site-footer-bg)
    );
    --site-footer-space: var(--bs-spacer-8);
    --site-footer-gap: var(--bs-spacer-8);
    background: var(--site-footer-bg);
    color: var(--site-footer-fg);
    font-family: var(--bs-body-font-family);
    font-size: var(--bs-body-font-size);
    font-weight: var(--bs-body-font-weight);
    line-height: var(--bs-body-line-height);
    isolation: isolate;
    overflow-wrap: anywhere;
}

.site-footer--bordered {
    border-block-start: var(--bs-border-width) solid var(--site-footer-border);
}

.site-footer--background-light {
    --site-footer-bg: var(--bs-white);
    --site-footer-auto-color: var(--bs-gray-900);
    color-scheme: light;
}

.site-footer--background-dark {
    --site-footer-bg: var(--bs-gray-950);
    --site-footer-auto-color: var(--bs-gray-050);
    color-scheme: dark;
}

.site-footer--background-primary {
    --site-footer-bg: var(--bs-primary-base);
    --site-footer-auto-color: var(--bs-primary-contrast);
}

.site-footer--background-secondary {
    --site-footer-bg: var(--bs-secondary-base);
    --site-footer-auto-color: var(--bs-secondary-contrast);
}

.site-footer--background-custom {
    --site-footer-bg: var(--site-footer-custom-background, var(--bs-bg-body));
    --site-footer-auto-color: var(
        --site-footer-custom-auto-color,
        var(--bs-fg-body)
    );
}

.site-footer--tone-light {
    --site-footer-fg: var(--bs-white);
}
.site-footer--tone-dark {
    --site-footer-fg: var(--bs-gray-950);
}
.site-footer--density-compact {
    --site-footer-space: var(--bs-spacer-7);
}
.site-footer--density-spacious {
    --site-footer-space: calc(var(--bs-spacer-8) + var(--bs-spacer-5));
}

.site-footer--width-full > .container-fluid,
.site-footer--width-full .site-footer__bottom > .container-fluid {
    padding-inline: max(var(--bs-spacer-5), 4vw);
}

.site-footer__directory {
    padding-block: var(--site-footer-space);
}

.site-footer__identity {
    padding-block-end: var(--site-footer-space);
}

.site-footer__identity:last-child {
    padding-block-end: 0;
}

.site-footer__brand-block,
.site-footer__brand-details {
    display: grid;
    gap: var(--bs-spacer-7);
    justify-items: start;
    min-inline-size: 0;
}

.site-footer__brand-details:empty {
    display: none;
}

.site-footer__brand {
    display: inline-flex;
    align-items: center;
    align-self: start;
    max-inline-size: 100%;
    min-block-size: 44px;
    color: var(--site-footer-fg);
    font-family: var(--bs-heading-font-family);
    font-weight: var(--bs-heading-font-weight);
    line-height: var(--bs-heading-line-height);
    letter-spacing: var(--cms-heading-letter-spacing, normal);
    text-decoration: none;
}

.site-footer__brand--image {
    inline-size: min(var(--site-footer-logo-width), 100%);
}
.site-footer__logo {
    display: block;
    inline-size: 100%;
    block-size: auto;
}
.site-footer__summary {
    max-inline-size: 48ch;
    color: var(--site-footer-muted);
}
.site-footer__summary :where(*) {
    font: inherit;
    color: inherit;
}
.site-footer__summary > :last-child,
.site-footer__cta-copy > :last-child,
.site-footer__form-cta-copy > :last-child {
    margin-block-end: 0;
}

.site-footer__directory-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--site-footer-gap);
    padding-block-start: var(--site-footer-space);
    border-block-start: var(--bs-border-width) solid var(--site-footer-border);
}

.site-footer
    :is(
        .site-footer__directory-grid,
        .site-footer__action-cta,
        .site-footer__form-cta
    )
    > * {
    min-inline-size: 0;
}

.site-footer__heading,
.site-footer .widget-title {
    --cms-heading-letter-spacing: var(--cms-body-letter-spacing, normal);
    margin: 0 0 var(--bs-spacer-5);
    color: var(--site-footer-muted);
    font-family: var(--bs-body-font-family);
    font-size: var(--bs-body-font-size);
    font-weight: var(--bs-font-weight-semibold);
    line-height: var(--bs-body-line-height);
    letter-spacing: var(--cms-body-letter-spacing, normal);
}

.site-footer__menu :is(ul, li),
.site-footer .nav {
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-footer__menu .nav {
    gap: 0;
}
.site-footer__menu ul ul {
    padding-inline-start: var(--bs-spacer-5);
    border-inline-start: var(--bs-border-width) solid var(--site-footer-border);
}

.bootstrap-theme
    .site-footer
    :is(
        .site-footer__menu a,
        .site-footer__contact-value,
        .site-footer__legal a
    ) {
    display: inline-flex;
    align-items: center;
    min-block-size: 44px;
    max-inline-size: 100%;
    padding: var(--bs-spacer-2) 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--site-footer-fg);
    font: inherit;
    text-decoration: none;
    white-space: normal;
    overflow-wrap: anywhere;
}

.site-footer__socials {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bs-spacer-3);
}

.bootstrap-theme .site-footer a.site-footer__social {
    display: inline-flex;
    gap: var(--bs-spacer-3);
    min-block-size: 44px;
    min-inline-size: 44px;
    border-color: var(--site-footer-border);
    border-radius: var(--bs-btn-border-radius);
    color: var(--site-footer-fg);
    background: transparent;
    font: inherit;
}

.bootstrap-theme .site-footer a.site-footer__social:hover {
    color: var(--site-footer-bg);
    background: var(--site-footer-fg);
    border-color: var(--site-footer-fg);
}

.site-footer__contact-list {
    gap: var(--bs-spacer-5);
}
.site-footer__contact-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: var(--bs-spacer-4);
    margin: 0;
}

.site-footer__contact-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    inline-size: calc(var(--bs-body-font-size) * 1.5);
    block-size: calc(var(--bs-body-font-size) * 1.5);
    color: var(--site-footer-muted);
}

.site-footer__contact-content {
    min-inline-size: 0;
}
.site-footer__contact-label {
    display: block;
    color: var(--site-footer-muted);
    font-size: var(--bs-font-size-sm);
}
.site-footer__contact address {
    margin: 0;
    font-style: normal;
}
.site-footer__contact .site-footer__contact-value {
    padding-block: 0;
}

.site-footer__bottom {
    border-block-start: var(--bs-border-width) solid var(--site-footer-border);
}
.site-footer__bottom-inner {
    display: flex;
    flex-direction: column;
    align-items: start;
    justify-content: space-between;
    gap: var(--bs-spacer-4) var(--site-footer-gap);
    padding-block: var(--bs-spacer-7);
    color: var(--site-footer-muted);
    font-size: var(--bs-font-size-sm);
}

.site-footer__bottom-actions:empty {
    display: none;
}
.site-footer__legal,
.site-footer__legal :is(ul, li) {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0 var(--bs-spacer-7);
    margin: 0;
    padding: 0;
    list-style: none;
}

.site-footer[data-footer-link-hover='underline']
    :is(
        .site-footer__menu a,
        .site-footer__contact-link,
        .site-footer__legal a
    ):hover {
    text-decoration: underline;
    text-underline-offset: var(--bs-spacer-1);
}
.site-footer[data-footer-link-hover='button']
    :is(
        .site-footer__menu a,
        .site-footer__contact-link,
        .site-footer__legal a
    ) {
    padding-inline: var(--bs-spacer-3);
    border-radius: var(--bs-control-border-radius);
}
.site-footer[data-footer-link-hover='button']
    :is(
        .site-footer__menu a,
        .site-footer__contact-link,
        .site-footer__legal a
    ):hover {
    background: color-mix(in oklch, var(--site-footer-fg) 10%, transparent);
}

.site-footer__action-cta,
.site-footer__centered-action-panel,
.site-footer__form-cta {
    display: grid;
    align-items: start;
    gap: var(--site-footer-gap);
    padding-block: var(--site-footer-space);
}

.site-footer__action-cta,
.site-footer__form-cta-shell {
    border-block-end: var(--bs-border-width) solid var(--site-footer-border);
}

.site-footer__cta-eyebrow,
.site-footer__form-cta-eyebrow {
    margin: 0 0 var(--bs-spacer-5);
    color: var(--site-footer-muted);
    font-size: var(--bs-body-font-size);
    font-weight: var(--bs-font-weight-semibold);
}

.site-footer__cta-title,
.site-footer__form-cta-title {
    max-inline-size: 20ch;
    margin: 0;
    color: var(--site-footer-fg);
    font-family: var(--bs-heading-font-family);
    font-size: var(--bs-font-size-3xl);
    font-weight: var(--bs-heading-font-weight);
    line-height: var(--bs-heading-line-height);
    letter-spacing: var(--cms-heading-letter-spacing, normal);
    text-wrap: balance;
}

.site-footer__cta-copy,
.site-footer__form-cta-copy {
    max-inline-size: 52ch;
    margin-block-start: var(--bs-spacer-7);
    color: var(--site-footer-muted);
}

.site-footer__action-cta-action,
.site-footer__centered-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--bs-spacer-4);
}

.site-footer__action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--bs-spacer-3);
    min-block-size: 44px;
    max-inline-size: 100%;
    white-space: normal;
}

.site-footer__action--raised {
    box-shadow: var(--bs-box-shadow-lg);
}
/* Action and social colors must retain contrast on any chosen footer surface. */
.bootstrap-theme .site-footer .site-footer__action.btn-solid {
    border-color: var(--site-footer-fg);
    background: var(--site-footer-fg);
    color: var(--site-footer-bg);
}
.bootstrap-theme .site-footer .site-footer__action.btn-outline {
    border-color: var(--site-footer-fg);
    background: transparent;
    color: var(--site-footer-fg);
}
.bootstrap-theme .site-footer .site-footer__action:is(.btn-subtle, .btn-text) {
    border-color: transparent;
    color: var(--site-footer-fg);
    background: color-mix(in oklch, var(--site-footer-fg) 8%, transparent);
}
.bootstrap-theme .site-footer .site-footer__action:hover {
    border-color: var(--site-footer-fg);
    background: var(--site-footer-fg);
    color: var(--site-footer-bg);
}
.bootstrap-theme .site-footer .site-footer__action.btn-solid:hover {
    background: color-mix(
        in oklch,
        var(--site-footer-fg) 85%,
        var(--site-footer-bg)
    );
}

.site-footer__centered-action-panel {
    justify-items: center;
    text-align: center;
}
.site-footer__centered-action-copy {
    display: grid;
    justify-items: center;
}
.site-footer__centered-actions {
    justify-content: center;
}
.site-footer__centered-close {
    padding-block: var(--site-footer-space);
}
.site-footer__centered-close .site-footer__brand-block,
.site-footer__centered-close .site-footer__brand-details {
    justify-items: center;
    text-align: center;
}
.site-footer__centered-close .site-footer__socials {
    justify-content: center;
}
.site-footer__centered-action-shell:has(.site-footer__centered-action-panel)
    + .site-footer__centered-close {
    padding-block-start: 0;
}

.site-footer__form-cta-contact {
    margin-block-start: var(--site-footer-gap);
}
.site-footer__form-cta-contact-label {
    color: var(--site-footer-muted);
}
.site-footer__form-cta-contact-list {
    display: grid;
    gap: var(--bs-spacer-3);
    margin: 0;
    padding: 0;
    list-style: none;
}
.site-footer__form-cta-contact-list a {
    display: inline-flex;
    align-items: center;
    gap: var(--bs-spacer-4);
    min-block-size: 44px;
    color: var(--site-footer-fg);
}
.site-footer__form-cta-contact-list i {
    flex-shrink: 0;
}
.site-footer__form-cta-form {
    min-inline-size: 0;
}
.site-footer .cms-shortcode-form {
    --cms-form-surface: transparent;
    --cms-form-text: var(--site-footer-fg);
    --cms-form-muted: var(--site-footer-muted);
    --cms-form-border: var(--site-footer-border);
    --cms-form-border-strong: var(--site-footer-fg);
    --cms-form-accent: var(--site-footer-fg);
    --cms-form-accent-contrast: var(--site-footer-bg);
    inline-size: 100%;
    max-inline-size: none;
    margin: 0;
}
.site-footer .cms-shortcode-form__submit {
    min-block-size: 44px;
    white-space: normal;
}
.site-footer__directory-signup .widget {
    margin-block-end: 0;
}
.site-footer__directory-signup .cms-shortcode-form__actions {
    margin-block-start: var(--bs-spacer-5);
}

.site-footer--align-center .site-footer__action-cta {
    grid-template-columns: minmax(0, 1fr);
    justify-items: center;
    text-align: center;
}
.site-footer--align-center
    .site-footer__action-cta
    :is(.site-footer__cta-title, .site-footer__cta-copy) {
    margin-inline: auto;
}
.site-footer--align-center .site-footer__action-cta-action {
    justify-content: center;
}
.site-footer--no-dividers
    :is(
        .site-footer__directory-grid,
        .site-footer__action-cta,
        .site-footer__form-cta-shell,
        .site-footer__bottom
    ) {
    border-color: transparent;
}
.site-footer a:focus-visible {
    outline: var(--bs-focus-ring-width) solid var(--site-footer-fg);
    outline-offset: var(--bs-focus-ring-offset);
    border-radius: var(--bs-control-border-radius);
}

@media (min-width: 576px) {
    .site-footer__directory-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .site-footer__bottom-inner {
        flex-direction: row;
        align-items: center;
        flex-wrap: wrap;
    }
}

@media (min-width: 768px) {
    .site-footer {
        --site-footer-space: calc(var(--bs-spacer-8) + var(--bs-spacer-5));
    }
    .site-footer--density-compact {
        --site-footer-space: var(--bs-spacer-8);
    }
    .site-footer--density-spacious {
        --site-footer-space: calc(var(--bs-spacer-8) * 2);
    }
    .site-footer__identity .site-footer__brand-block {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: var(--site-footer-space);
    }
    .site-footer__cta-title,
    .site-footer__form-cta-title {
        font-size: var(--bs-font-size-4xl);
    }
}

@media (min-width: 1024px) {
    .site-footer__directory-grid {
        grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
    }
    .site-footer__directory-grid:has(.site-footer__directory-signup) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .site-footer__action-cta {
        grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
        align-items: center;
    }
    .site-footer__action-cta-action {
        justify-content: end;
    }
    .site-footer__form-cta {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        gap: var(--site-footer-space);
    }
}

@media (min-width: 1280px) {
    .site-footer__directory-grid:has(.site-footer__directory-signup) {
        grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .site-footer__action-cta-action,
    .site-footer__centered-actions {
        inline-size: 100%;
    }
    .site-footer__action {
        inline-size: 100%;
    }
}

.bootstrap-theme .site-footer .site-footer__menu a {
    font-size: var(--bs-font-size-lg);
}
.site-footer__contact-invitation {
    max-inline-size: 34ch;
    color: var(--site-footer-muted);
    margin-block-end: var(--bs-spacer-7);
}
.site-footer__identity
    .site-footer__brand-block:not(:has(.site-footer__brand-details > *)) {
    grid-template-columns: minmax(0, 1fr);
}
.site-footer__brand-details:not(:has(*)) {
    display: none;
}

@media (max-width: 575.98px) {
    .site-footer__directory-grid
        > :is(.site-footer__contact, .site-footer__directory-signup) {
        grid-column: 1 / -1;
    }
}
body:has(.site-back-to-top) .site-footer .site-footer__bottom-inner {
    padding-inline-end: max(5rem, var(--bs-spacer-8));
}

.site-footer
    .cms-shortcode-form
    :is(
        input:not([type='checkbox'], [type='radio'], [type='hidden']),
        select
    ).cms-shortcode-form__control {
    min-block-size: 44px;
}
