/* ==== FOOTER CSS ==== */

:root {
  --footer-bg: hsl(
    from var(--bs-primary) calc(h * 1) calc(s * 0.085) calc(l * 0.85)
  );
}

footer.row {
  background: var(--footer-bg);
  margin-block-start: calc(var(--section-margins) / 2);

  /* ==== Extends bg to full width ==== */
  box-shadow: 0 0 0 100vmax var(--footer-bg) !important;
  clip-path: inset(0 -100vmax);

  /* ==== Limit content width ==== */
  max-width: var(--content-width);
  margin: auto;
  align-self: center;
  justify-self: center;
  place-self: center;
}

.footer-content {
  display: grid;
  row-gap: var(--gap);
  grid-template-columns: auto 1fr;
  align-items: center;
  justify-items: stretch;
  padding-block-end: calc(var(--gap) / 2);
  transition-property: padding;
  transition-duration: var(--speed);
  padding-inline: 0;
}

.footer-brand-container {
  grid-column: 1 / 2;
  min-width: calc(max(min(25vw, 32rem), min(16rem, 100%)) - var(--gap));

  display: grid;
  column-gap: min(3%, calc(var(--gap) * 2));
  row-gap: var(--gap);
  grid-template-columns: repeat(1, 1fr);
  grid-template-rows: repeat(2, 1fr);
  justify-content: space-between;
}

.footer-links-container {
  grid-column: 2 / 4;

  display: grid;
  column-gap: min(3%, calc(var(--gap) * 2));
  row-gap: var(--gap);
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(1, 1fr);
  justify-content: space-between;
}

.footer-copyright-container {
  height: var(--nav-height);
}

address.footer-nav-links ul {
  width: calc(max(min(25vw, 32rem), 16rem) - var(--gap));
}

.footer-content a {
  --link-underline: max(calc(var(--border) / 8), 1px);
  text-shadow: 0.03em 0 var(--footer-bg), -0.03em 0 var(--footer-bg),
    0 0.03em var(--footer-bg), 0 -0.03em var(--footer-bg),
    0.06em 0 var(--footer-bg), -0.06em 0 var(--footer-bg),
    0.09em 0 var(--footer-bg), -0.09em 0 var(--footer-bg),
    0.12em 0 var(--footer-bg), -0.12em 0 var(--footer-bg),
    0.15em 0 var(--footer-bg), -0.15em 0 var(--footer-bg);
  text-decoration: none;
  margin-block-end: 1rem;

  color: currentColor;
  background-image: linear-gradient(currentColor, currentColor),
    linear-gradient(var(--bs-emphasis-color), var(--bs-emphasis-color));
  background-position: 0% 95%, 0% 95%;
  background-repeat: no-repeat, no-repeat;
  background-size: 0% var(--link-underline), 100% var(--link-underline);

  transition-property: background-size, color;
  transition-duration: calc(var(--speed) * 2);
  transition-timing-function: var(--ease-out);
}

.footer-content a:hover {
  background-image: linear-gradient(currentColor, currentColor),
    linear-gradient(var(--bs-emphasis-color), var(--bs-emphasis-color));
  background-size: 100% var(--link-underline);
  color: var(--bs-link-color);

  transition-property: background-size, color;
  transition-duration: var(--speed);
  transition-timing-function: var(--ease-in);
}

a.footer-logo {
  min-width: 3rem;
  color: var(--bs-emphasis-color);
  background-image: none !important;
  width: min(calc(var(--logo-size) * 0.75), min(16rem, 50%));
  place-self: start;
}

@media (width <= 992px) {
  a.footer-logo {
    place-self: center;
  }
}

.footer-nav-links:not(.footer-logo) > :first-child {
  font-variation-settings: "wght" 700;
  letter-spacing: revert;
  font-size: var(--fs-xs);
  padding-block-end: calc(var(--border) * 1.5);
  border-block-end: calc(var(--border) * 0.6666) solid currentColor;
  max-width: 100vw;
  span {
    font-variation-settings: "wght" calc(var(--font-weight) - 100);
    font-size: 85%;
  }
}

.footer-copyright {
  min-height: var(--nav-height);
  font-size: small;
  max-width: 100vw;
}

.footer-copyright a.footer-logo {
  width: min(5%, 3rem);
  min-width: 2rem;
}

.footer-small-links a {
  text-decoration: none;
  color: var(--bs-secondary-color);
}

.footer-small-links a:hover {
  color: var(--bs-emphasis-color);
}

@media (width >= 1200px) {
  .footer-links-container {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);

    padding-inline-start: 2.5rem;
  }

  .footer-links-container .footer-nav-links {
    grid-row: span 2;
  }
}

@media (width >= 1400px) {
  .footer-links-container {
    grid-template-columns: repeat(6, 1fr);
    grid-template-rows: repeat(2, 1fr);

    padding-inline-start: 2.5rem;
  }
}

@media (width <= 1200px) {
  .footer-links-container {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);

    padding-inline-start: 2rem;
  }
}

@media (width <= 992px) {
  .footer-links-container {
    grid-template-columns: repeat(3, 1fr);
    grid-column: 1 / 4;
    grid-row: 2 / 3;
    padding-inline-start: revert;
  }

  .footer-content {
    column-gap: 0;
  }

  .footer-brand-container {
    grid-column: 1 / 3;
    grid-row: 1 / 2;
  }

  address.footer-nav-links ul {
    width: revert;
  }

  .footer-nav-links {
    grid-row: span 2;
    min-width: auto;
  }
}

@media (width <= 768px) {
  .footer-links-container {
    grid-template-columns: repeat(2, 1fr);

    grid-column: 1 / 4;
    grid-row: 2 / 3;
  }

  .footer-content {
    column-gap: 0;
    padding-inline: calc(var(--gap) * 2);
  }

  .footer-content a {
    white-space: wrap;
  }

  .footer-nav-links li {
    line-height: 1.2;
    margin-bottom: 0.4em;
  }

  .footer-brand-container {
    grid-column: 1 / 3;
    grid-row: 1 / 2;
  }

  address.footer-nav-links ul {
    max-width: 90vw;
  }
}

@media (width <= 576px) {
  .footer-content a {
    word-break: break-word;
  }
}

@media (width <= 320px) {
  .footer-links-container {
    grid-template-columns: repeat(1, 1fr);
  }

  .footer-content {
    padding-inline: var(--gap);
  }
}
