/* Shared public footer; legacy footer rules are removed from the page themes. */
.site-footer.public-footer {
    display: block;
    width: 100%;
    min-height: 0;
    padding: 2.5rem 0 1rem;
    border-top: 1px solid rgb(84 111 145 / 0.16);
    background: linear-gradient(180deg, #f8fbff, #f1f5fb);
    color: #52647a;
    text-align: left;
    font-size: 0.9375rem;
    line-height: 1.5;
}
.public-footer__inner {
    width: min(82rem, calc(100% - 4rem));
    margin-inline: auto;
}
.public-footer__main {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1.8fr) minmax(0, 1fr);
    align-items: start;
    gap: clamp(2rem, 4vw, 4rem);
}
.public-footer__main > *, .public-footer__group { min-width: 0; }
.public-footer__brand {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    color: #0b1426;
    text-decoration: none;
}
.public-footer__wordmark {
    font-size: 2rem;
    font-weight: 870;
    letter-spacing: -0.06em;
    line-height: 1;
}
.public-footer__signature {
    font-size: 0.6875rem;
    font-weight: 750;
    letter-spacing: 0.035em;
    line-height: 1.2;
}
.public-footer p.public-footer__description {
    max-width: 32ch;
    margin: 1rem 0 0;
    font-size: 0.9375rem;
    line-height: 1.6;
}
.public-footer__navigation {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    gap: 1.5rem;
}
.public-footer h2.public-footer__heading {
    max-width: none;
    margin: 0 0 0.5rem;
    color: #0b1426;
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0;
    line-height: 1.5;
}
.public-footer__links {
    display: grid;
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
}
.public-footer__links a, .public-footer__email, .public-footer__legal a {
    display: inline-flex;
    min-height: 2.25rem;
    max-width: 100%;
    align-items: center;
    padding-block: 0.375rem;
    color: inherit;
    font-size: 0.875rem;
    line-height: 1.5;
    text-decoration: none;
    overflow-wrap: anywhere;
    transition: color 150ms ease;
}
.public-footer__email { color: #0b1426; font-weight: 600; }
.public-footer p.public-footer__location {
    margin: 0.25rem 0 0;
    font-size: 0.875rem;
    line-height: 1.5;
}
.public-footer a:hover { color: #1d65cc; }
.public-footer a:focus-visible {
    border-radius: 0.125rem;
    outline: 2px solid #2475ed;
    outline-offset: 4px;
}
.public-footer__bottom {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1.5rem;
    margin-top: 1.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgb(84 111 145 / 0.16);
}
.public-footer__copyright { font-size: 0.75rem; line-height: 1.5; }
.public-footer__legal { display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; }
.public-footer__legal a { font-size: 0.75rem; }

/* The homepage ends with its references and footer together. */
.panel--references--with-footer {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-end;
    padding: calc(var(--header) + 1.5rem) 0 0;
}
.panel--references--with-footer > .panel__inner {
    width: min(82rem, calc(100% - 4rem));
    flex: 1 0 auto;
    align-content: center;
    gap: 1.5rem;
    margin-inline: auto;
    padding-block: 1.5rem 2rem;
}
.panel--references--with-footer .public-footer { flex-shrink: 0; }
@media (max-width: 64rem) {
    .public-footer__main {
        grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
        gap: 1.75rem 2rem;
    }
    .public-footer__identity { grid-column: 1 / -1; }
}
@media (max-width: 40rem) {
    .site-footer.public-footer { padding: 2rem 0 calc(1rem + env(safe-area-inset-bottom)); }
    .public-footer__inner, .panel--references--with-footer > .panel__inner { width: calc(100% - 2.5rem); }
    .public-footer__main { grid-template-columns: minmax(0, 1fr); gap: 1.75rem; }
    .public-footer__identity { grid-column: auto; }
    .public-footer__links a, .public-footer__email, .public-footer__legal a { min-height: 2.75rem; }
    .public-footer__bottom {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.25rem;
        margin-top: 1.5rem;
        padding-top: 1rem;
    }
}
@media (pointer: coarse) {
    .public-footer__links a, .public-footer__email, .public-footer__legal a { min-height: 2.75rem; }
}
@media (prefers-reduced-motion: reduce) { .public-footer a { transition: none; } }
