:root { --footer-bg: #272727; --footer-text: #adadb3; --footer-text-hover: #ffffff; --footer-title: #ffffff; --footer-divider: rgba(255, 255, 255, 0.1); --footer-gap: clamp(2rem, 5vw, 4rem); } /* Wrapper */ .footer { background-color: var(--footer-bg); color: var(--footer-text); } .footer a:focus-visible { outline: 2px solid var(--nav-outline-color); outline-offset: 2px; } .footer__inner { max-width: var(--container-width); margin-inline: auto; padding-inline: var(--space-4); padding-block: var(--space-16); } /* Top */ .footer__top { display: grid; grid-template-columns: 1fr; gap: var(--footer-gap); } /* Brand */ .footer__brand { display: flex; flex-direction: column; gap: var(--space-4); } .footer__logo { display: inline-block; width: fit-content; } .footer__logo:hover { opacity: 0.8; } .footer__tagline { max-width: 32ch; color: var(--footer-text); } /* Navigation */ .footer__nav { display: flex; flex-wrap: wrap; gap: var(--footer-gap); } .footer__nav ul { list-style: none; padding: 0; margin: 0; } .footer__nav-group ul { display: flex; flex-direction: column; gap: var(--space-2); } .footer__nav-title { display: block; margin-bottom: var(--space-4); font-size: var(--font-size-xxs); letter-spacing: var(--letter-spacing-wide); color: var(--footer-title); } .footer__nav-group a { font-size: var(--font-size-xs); color: var(--footer-text); transition: color 0.2s ease; } .footer__nav-group a:hover { color: var(--footer-text-hover); } /* Divider */ .footer__divider { height: 1px; background: var(--footer-divider); margin: 2.5rem 0; } /* Bottom */ .footer__bottom { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 1rem; } .footer__copy { font-size: 0.85rem; color: var(--footer-text); } /* Social */ .footer__social { display: flex; gap: 1rem; } .footer__social a { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--footer-divider); color: var(--footer-text); transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease; } .footer__social a:hover { color: var(--footer-text-hover); border-color: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.05); } /* Tablet */ @media (min-width: 768px) { .footer__top { grid-template-columns: 1fr 1fr; align-items: start; } .footer__nav { justify-self: end; text-align: left; } } /* Desktop */ @media (min-width: 1024px) { .footer__inner { padding-inline: var(--space-6); } .footer__top { grid-template-columns: 1fr auto; } .footer__nav { justify-self: end; } }