/* ── 19. FOOTER ────────────────────────────────────────────── */
.site-footer { background: var(--night); color: rgba(255,255,255,.8); border-top: 1px solid rgba(255,255,255,.1); }
.site-footer__inner {
    max-width: var(--container); margin: 0 auto; padding: clamp(3rem, 6vw, 4.5rem) clamp(1.25rem, 4vw, 3rem) 2.5rem;
    display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 2.5rem;
}
.site-footer .wordmark__name { color: #fff; }
.site-footer .wordmark__sub { color: rgba(255,255,255,.5); }
.footer-affiliation { margin-top: 1.2rem; font-size: .9rem; }
.footer-affiliation a { color: var(--blue-300); font-weight: 600; }
.footer-achucarro-logo { margin-top: 1.2rem; filter: brightness(0) invert(1); opacity: .85; height: 64px; width: auto; }
.footer-col__title { display: block; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: rgba(255,255,255,.5); margin-bottom: 1.1rem; }
.footer-col--nav ul { display: flex; flex-direction: column; gap: .7rem; }
@media (hover: hover) and (pointer: fine) {
    .footer-col--nav a:hover { color: #fff; }
}
.footer-col--contact address { font-style: normal; margin-bottom: .8rem; font-size: .92rem; }
.footer-col--contact a { display: block; margin-bottom: .8rem; font-size: .92rem; }
.footer-social { display: flex; align-items: center; gap: .5rem; font-weight: 600; }
.footer-social svg { width: 18px; height: 18px; }
.site-footer__bottom {
    border-top: 1px solid rgba(255,255,255,.12);
    max-width: var(--container); margin: 0 auto; padding: 1.4rem clamp(1.25rem, 4vw, 3rem);
    display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: .6rem;
    font-size: .82rem; color: rgba(255,255,255,.45);
}
@media (hover: hover) and (pointer: fine) {
    .site-footer__bottom a:hover { color: #fff; }
}
.site-footer__bottom-links { display: flex; gap: 1.4rem; }

/* Cookie consent banner */
.cookie-banner {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 600;
    background: var(--night); color: rgba(255,255,255,.85);
    box-shadow: 0 -8px 24px rgba(14,28,58,.18);
    /* Hidden = transparent AND invisible (visibility also keeps it out of
       the way on tablets when the browser toolbar collapses). It fades in
       rather than sliding up: a sliding banner blurs its button text until
       it stops, then snaps sharp. */
    opacity: 0; visibility: hidden;
    transition: opacity var(--dur-slow) var(--ease-out), visibility 0s linear var(--dur-slow);
}
.cookie-banner.is-visible { opacity: 1; visibility: visible; transition: opacity var(--dur-slow) var(--ease-out), visibility 0s; }
.cookie-banner__inner {
    max-width: var(--container); margin: 0 auto; padding: 1.2rem clamp(1.25rem, 4vw, 3rem);
    display: flex; align-items: center; justify-content: space-between; gap: 1.4rem; flex-wrap: wrap;
}
.cookie-banner__inner p { margin: 0; font-size: .88rem; max-width: 62ch; color: rgba(255,255,255,.8); }
.cookie-banner__inner a { color: var(--blue-300); font-weight: 600; text-decoration: underline; }
.cookie-banner__accept { flex-shrink: 0; }
@media (max-width: 640px) {
    .cookie-banner__inner { flex-direction: column; align-items: stretch; text-align: center; }
    .cookie-banner__accept { justify-content: center; width: 100%; }
}
