.fd-footer,
.fd-footer * { box-sizing: border-box; }

.fd-footer {
  --fd-turquoise: #209D96;
  --fd-gold: #F4B942;
  --fd-text: #fff;
  --fd-decor-opacity: 20%;
  --fd-col-brand: 32%;
  --fd-col-navigation: 20%;
  --fd-col-programs: 21%;
  --fd-col-contact: 27%;
  position: relative;
  overflow: hidden;
  width: 100%;
  color: var(--fd-text);
  background: #083F47;
  font-family: Arial, Helvetica, sans-serif;
}

.fd-footer--decor::before,
.fd-footer--decor::after {
  content: "";
  position: absolute;
  pointer-events: none;
  z-index: 0;
  opacity: calc(var(--fd-decor-opacity) / 100);
}

.fd-footer--decor::before {
  width: 420px;
  height: 280px;
  left: -138px;
  top: 62px;
  border-radius: 50%;
  background:
    radial-gradient(ellipse at 78% 60%, rgba(2,46,56,.75) 0 18%, transparent 19%),
    radial-gradient(ellipse at 60% 55%, rgba(2,46,56,.7) 0 28%, transparent 29%),
    linear-gradient(160deg, rgba(2,46,56,.7), rgba(2,46,56,0));
  transform: rotate(8deg);
}

.fd-footer--decor::after {
  width: 300px;
  height: 170px;
  left: 65px;
  top: 184px;
  border-radius: 55% 45% 65% 35%;
  background: linear-gradient(150deg, rgba(3,49,58,.75), rgba(3,49,58,.18));
  transform: rotate(-18deg);
}

.fd-footer__main,
.fd-footer__bottom,
.fd-footer__mobile-separator { position: relative; z-index: 1; }

.fd-footer__main { min-height: 420px; }

.fd-footer__inner,
.fd-footer__bottom-inner {
  width: calc(100% - 32px);
  max-width: 1200px;
  margin: 0 auto;
}

.fd-footer__inner {
  min-height: inherit;
  display: grid;
  grid-template-columns: var(--fd-col-brand) var(--fd-col-navigation) var(--fd-col-programs) var(--fd-col-contact);
  padding: 22px 0 28px;
  align-items: start;
}

.fd-footer__column { min-width: 0; }
.fd-footer__column--brand { padding-right: 30px; }
.fd-footer__column--navigation { padding-top: 41px; }
.fd-footer__column--programs { padding-top: 41px; }
.fd-footer__column--contact { padding-top: 41px; }

.fd-footer__logo { display: inline-block; line-height: 0; }
.fd-footer__logo img { width: 190px; height: auto; display: block; }

.fd-footer__brand-accent {
  display: block;
  width: 39px;
  height: 4px;
  margin-top: 11px;
  border-radius: 4px;
  background: var(--fd-turquoise);
}

.fd-footer__description {
  max-width: 300px;
  margin: 14px 0 0;
  color: #fff;
  font-size: 16px;
  line-height: 1.45;
  font-weight: 400;
}

.fd-footer__social { margin-top: 34px; }
.fd-footer__social-title {
  color: var(--fd-turquoise);
  font-weight: 700;
  font-size: 16px;
  line-height: 1.2;
}
.fd-footer__social-list {
  display: flex;
  align-items: center;
  gap: 20px;
  margin-top: 17px;
}
.fd-footer__social-link {
  width: 39px;
  height: 39px;
  border: 1.5px solid var(--fd-turquoise);
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-decoration: none;
  background: transparent;
  transition: .2s ease;
}
.fd-footer__social-link i { font-size: 18px; }
.fd-footer__social-link svg { width: 18px; height: 18px; fill: currentColor; }

.fd-footer__heading {
  margin: 0;
  color: #fff;
  font-size: 20px;
  line-height: 1.2;
  font-weight: 700;
}
.fd-footer__heading::after {
  content: "";
  display: block;
  width: 35px;
  height: 3px;
  margin-top: 20px;
  border-radius: 4px;
  background: var(--fd-turquoise);
}

.fd-footer__menu {
  list-style: none;
  margin: 34px 0 0;
  padding: 0;
}
.fd-footer__menu li { margin: 0; padding: 0; }
.fd-footer__menu li:not(:last-child) { margin-bottom: 26px; }
.fd-footer__menu-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #fff;
  text-decoration: none;
  font-size: 16px;
  line-height: 1.25;
  font-weight: 400;
}
.fd-footer__menu-icon {
  display: inline-flex;
  width: 10px;
  color: var(--fd-turquoise);
  flex: 0 0 10px;
}
.fd-footer__menu-icon i { font-size: 11px; }
.fd-footer__menu-icon svg { width: 11px; height: 11px; fill: currentColor; }

.fd-footer__contact-list {
  display: flex;
  flex-direction: column;
  gap: 28px;
  margin-top: 22px;
}
.fd-footer__contact-item {
  display: flex;
  align-items: flex-start;
  gap: 20px;
}
.fd-footer__contact-icon {
  width: 43px;
  height: 43px;
  flex: 0 0 43px;
  border-radius: 50%;
  background: var(--fd-turquoise);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.fd-footer__contact-icon i { font-size: 20px; }
.fd-footer__contact-icon svg { width: 20px; height: 20px; fill: currentColor; }
.fd-footer__contact-copy { padding-top: 1px; min-width: 0; }
.fd-footer__contact-label {
  color: var(--fd-turquoise);
  font-size: 14px;
  line-height: 1.2;
  font-weight: 700;
  margin-bottom: 8px;
}
.fd-footer__contact-value,
.fd-footer__contact-value a {
  color: #fff;
  font-size: 14px;
  line-height: 1.45;
  font-weight: 400;
  text-decoration: none;
}

.fd-footer__bottom {
  min-height: 64px;
  border-top: 1px solid rgba(43,154,157,.42);
}
.fd-footer__bottom-inner {
  min-height: inherit;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 30px;
}
.fd-footer__copyright,
.fd-footer__legal a {
  color: #fff;
  font-size: 13px;
  line-height: 1.3;
  font-weight: 400;
}
.fd-footer__copyright { justify-self: start; white-space: nowrap; }
.fd-footer__legal {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 18px;
  white-space: nowrap;
}
.fd-footer__legal a { text-decoration: none; }
.fd-footer__legal-divider { color: #fff; opacity: .95; }

.fd-footer__bottom-decor {
  display: flex;
  align-items: center;
  width: 122px;
  gap: 7px;
  color: var(--fd-turquoise);
}
.fd-footer__bottom-decor::before,
.fd-footer__bottom-decor::after {
  content: "";
  height: 2px;
  flex: 1;
  background: var(--fd-turquoise);
}
.fd-footer__bottom-decor span { font-size: 31px; line-height: 1; transform: translateY(-1px); }

.fd-footer__mobile-separator { display: none; }

/* Tablet: dos columnas, manteniendo la identidad visual. */
@media (max-width: 1024px) {
  .fd-footer__main { min-height: 0; }
  .fd-footer__inner {
    grid-template-columns: 1fr 1fr;
    row-gap: 34px;
    padding: 28px;
  }
  .fd-footer__column--brand,
  .fd-footer__column--navigation,
  .fd-footer__column--programs,
  .fd-footer__column--contact { padding-top: 0; }
  .fd-footer__column--brand { padding-right: 20px; }
  .fd-footer__bottom-inner { padding-left: 20px; padding-right: 20px; }
  .fd-footer__copyright { white-space: normal; }
  .fd-footer__legal { white-space: normal; text-align: right; }
}

/* Móvil exacto a la referencia entregada (416 × 730 aprox.). */
@media (max-width: 767px) {
  .fd-footer--decor::before {
    width: 310px;
    height: 210px;
    left: -145px;
    top: 17px;
    opacity: .75;
  }
  .fd-footer--decor::after {
    width: 220px;
    height: 118px;
    left: -18px;
    top: 78px;
    opacity: .55;
  }

  .fd-footer__inner,
  .fd-footer__bottom-inner {
    width: calc(100% - 76px);
    max-width: 340px;
  }

  .fd-footer__inner {
    display: flex;
    flex-direction: column;
    padding: 6px 0 0;
  }

  .fd-footer__column { width: 100%; padding: 0; }
  .fd-footer__column--brand { text-align: var(--fd-mobile-brand-align, center); }
  .fd-footer__logo img { width: 126px; margin: 0 auto; }
  .fd-footer__brand-accent { display: none; }

  .fd-footer__description {
    max-width: 245px;
    margin: 10px auto 0;
    font-size: 12px;
    line-height: 1.45;
    text-align: center;
  }

  .fd-footer__social { margin-top: 14px; }
  .fd-footer__social-title {
    font-size: 13px;
    text-align: center;
  }
  .fd-footer__social-list {
    justify-content: center;
    gap: 17px;
    margin-top: 9px;
  }
  .fd-footer__social-link {
    width: 31px;
    height: 31px;
    border-width: 1.2px;
  }
  .fd-footer__social-link i { font-size: 14px; }
  .fd-footer__social-link svg { width: 14px; height: 14px; }

  .fd-footer__mobile-separator {
    width: 340px;
    max-width: calc(100% - 76px);
    margin-left: auto;
    margin-right: auto;
    display: flex;
    align-items: center;
    gap: 8px;
    color: #CFAE25;
  }
  .fd-footer__mobile-separator::before,
  .fd-footer__mobile-separator::after {
    content: "";
    height: 1px;
    flex: 1;
    background: currentColor;
  }
  .fd-footer__mobile-separator span {
    font-size: 21px;
    line-height: 1;
  }
  .fd-footer__inner > .fd-footer__mobile-separator {
    width: 100%;
    max-width: 100%;
  }
  .fd-footer__mobile-separator--top { margin-top: 21px; margin-bottom: 19px; }
  .fd-footer__mobile-separator--bottom { margin-top: 16px; margin-bottom: 11px; }

  .fd-footer__heading {
    font-size: 13px;
    line-height: 1.2;
  }
  .fd-footer__heading::after {
    width: 27px;
    height: 2px;
    margin-top: 8px;
  }

  .fd-footer__menu { margin-top: 11px; }
  .fd-footer__menu li:not(:last-child) { margin-bottom: 9px; }
  .fd-footer__menu-link {
    gap: 7px;
    font-size: 11px;
    line-height: 1.2;
  }
  .fd-footer__menu-icon { width: 7px; flex-basis: 7px; }
  .fd-footer__menu-icon i { font-size: 8px; }
  .fd-footer__menu-icon svg { width: 8px; height: 8px; }

  .fd-footer__column--navigation {
    padding-bottom: 15px;
    border-bottom: 1px solid var(--fd-mobile-divider, rgba(32,157,150,.45));
  }
  .fd-footer__column--programs {
    padding-top: 14px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--fd-mobile-divider, rgba(32,157,150,.45));
  }
  .fd-footer__column--contact { padding-top: 14px; }

  .fd-footer__contact-list {
    gap: 15px;
    margin-top: 11px;
  }
  .fd-footer__contact-item { gap: 11px; }
  .fd-footer__contact-icon {
    width: 29px;
    height: 29px;
    flex-basis: 29px;
  }
  .fd-footer__contact-icon i { font-size: 14px; }
  .fd-footer__contact-icon svg { width: 14px; height: 14px; }
  .fd-footer__contact-copy { padding-top: 0; }
  .fd-footer__contact-label {
    font-size: 10px;
    line-height: 1.15;
    margin-bottom: 3px;
  }
  .fd-footer__contact-value,
  .fd-footer__contact-value a {
    font-size: 10px;
    line-height: 1.28;
  }

  .fd-footer__bottom {
    min-height: 31px;
    border-top: 0;
    padding: 0 0 6px;
  }
  .fd-footer__bottom-inner {
    min-height: 0;
    display: block;
    text-align: center;
  }
  .fd-footer__copyright {
    font-size: 10px;
    line-height: 1.25;
    white-space: normal;
    text-align: center;
    max-width: 240px;
    margin: 0 auto;
  }
  .fd-footer__bottom-decor { display: none; }
  .fd-footer__legal { display: none; }
  .fd-footer--legal-mobile .fd-footer__legal {
    display: flex;
    justify-content: center;
    margin-top: 8px;
    gap: 10px;
    white-space: normal;
    text-align: center;
  }
  .fd-footer--legal-mobile .fd-footer__legal a { font-size: 9px; }
}
