.l-footer {
  padding: 72px 0 64px;
  background:
    linear-gradient(rgba(255, 250, 240, .10), rgba(255, 250, 240, .10)),
    url('../img/footer-bg.webp') center top / 450px auto repeat;
  color: var(--sou-brown);
}

.l-footer__inner {
  text-align: center;
}

.l-footer__brand {
  margin: 0 0 38px;
}

.l-footer__brand a {
  display: inline-block;
}

.l-footer__logo {
  display: block;
  width: auto;
  max-width: 220px;
  height: auto;
  max-height: 96px;
  margin-inline: auto;
}

.l-footer__info {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 36px;
  align-items: stretch;
  text-align: left;
}

.l-footer__section {
  padding: 42px 36px;
  background: rgba(255, 250, 240, .78);
  border: 1px solid rgba(43, 33, 27, .12);
  box-shadow: 0 12px 28px rgba(43, 33, 27, .18);
}

.l-footer__heading {
  margin: 0 0 28px;
  color: var(--sou-brown);
  font-size: clamp(1.65rem, 2vw, 2.35rem);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: .16em;
  text-align: center;
}

.l-footer__heading::after {
  content: "";
  display: block;
  width: 44px;
  height: 1px;
  margin: 18px auto 0;
  background: rgba(43, 33, 27, .22);
}

.l-footer__address,
.l-footer__station,
.l-footer__walk,
.l-footer__accessText,
.l-footer__tel {
  margin: 0 0 16px;
  color: var(--sou-ink);
  font-size: .94rem;
  line-height: 1.9;
}

.l-footer__tel {
  margin-top: 22px;
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: .06em;
}

.l-footer__telLink {
  color: var(--sou-brown);
  text-decoration: none;
}

.l-footer__mapBtnWrap {
  margin-top: 28px;
  text-align: center;
}

.l-footer__mapBtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 220px;
  min-height: 46px;
  padding: 12px 28px;
  border-radius: 999px;
  background: var(--sou-accent-dark);
  color: #fffaf0;
  font-size: .86rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-decoration: none;
  box-shadow: 0 8px 18px rgba(43, 33, 27, .18);
}

.l-footer__mapBtn:hover,
.l-footer__mapBtn:focus-visible {
  background: var(--sou-brown);
  color: #fffaf0;
}

.l-footer__dataList {
  margin: 0;
}

.l-footer__dataRow {
  display: grid;
  grid-template-columns: 108px minmax(0, 1fr);
  gap: 18px;
  padding: 0 0 18px;
  margin: 0 0 18px;
  border-bottom: 1px dotted rgba(43, 33, 27, .2);
}

.l-footer__dataRow:last-child {
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: none;
}

.l-footer__dataRow dt {
  color: var(--sou-accent-dark);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.8;
}

.l-footer__dataRow dd {
  margin: 0;
  color: var(--sou-ink);
  font-size: .94rem;
  line-height: 1.9;
}

.l-footer__socialWrap {
  margin-top: 34px;
  text-align: center;
}

.l-footer__social {
  margin: 0;
}

.l-footer__social a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 104px;
  min-height: 34px;
  margin: 4px;
  padding: 8px 14px;
  border: 1px solid rgba(43, 33, 27, .22);
  background: rgba(255, 250, 240, .68);
  color: var(--sou-brown);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-decoration: none;
}

.l-footer__social a:hover,
.l-footer__social a:focus-visible {
  border-color: var(--sou-accent-dark);
  color: var(--sou-accent-dark);
}

.l-footer-copy {
  padding: 16px 0 18px;
  background: #241912;
  color: rgba(255, 250, 240, .7);
  text-align: center;
}

.l-footer-copy .copy {
  margin: 0;
  font-size: .72rem;
  line-height: 1.7;
}

.l-footer-copy a {
  color: rgba(255, 250, 240, .86);
}

@media (max-width: 767px) {
  .l-footer {
    padding: 52px 0 46px;
  }

  .l-footer__brand {
    margin-bottom: 28px;
  }

  .l-footer__logo {
    max-width: 180px;
    max-height: 82px;
  }

  .l-footer__info {
    display: block;
  }

  .l-footer__section {
    padding: 30px 22px;
  }

  .l-footer__section + .l-footer__section {
    margin-top: 22px;
  }

  .l-footer__heading {
    margin-bottom: 24px;
    font-size: 1.55rem;
  }

  .l-footer__dataRow {
    grid-template-columns: 82px minmax(0, 1fr);
    gap: 14px;
  }

  .l-footer__mapBtn {
    width: 100%;
    min-width: 0;
  }
}

.l-footer__social {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
}

.l-footer__social .l-footer__socialLink {
  width: 42px;
  min-width: 42px;
  height: 42px;
  min-height: 42px;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(43, 33, 27, .18);
  border-radius: 999px;
  background: rgba(255, 250, 240, .72);
  box-shadow: 0 6px 14px rgba(43, 33, 27, .12);
}

.l-footer__social .l-footer__socialLink:hover,
.l-footer__social .l-footer__socialLink:focus-visible {
  border-color: var(--sou-accent-dark);
  background: rgba(255, 250, 240, .9);
}

.l-footer__socialIcon {
  display: block;
  width: 20px;
  height: 20px;
  object-fit: contain;
}

/* SNS Icons: large / no circle */
.l-footer__socialWrap {
  margin-top: 36px;
}

.l-footer__social {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 34px;
}

.l-footer__social .l-footer__socialLink {
  width: auto;
  min-width: 0;
  height: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.l-footer__social .l-footer__socialLink:hover,
.l-footer__social .l-footer__socialLink:focus-visible {
  border: none;
  background: transparent;
  opacity: .72;
}

.l-footer__socialIcon {
  display: block;
  width: 48px;
  height: 48px;
  object-fit: contain;
}

@media (max-width: 767px) {
  .l-footer__social {
    gap: 28px;
  }

  .l-footer__socialIcon {
    width: 44px;
    height: 44px;
  }
}

.l-footer__logo {
  display: block;
  width: 96px;
  height: 96px;
  max-width: none;
  max-height: none;
  margin-inline: auto;
  object-fit: contain;
}

/* Footer Logo: larger / stronger shadow */
.l-footer__logo {
  width: 128px;
  height: 128px;
  filter: drop-shadow(0 10px 18px rgba(43, 33, 27, .42));
}

@media (max-width: 767px) {
  .l-footer__logo {
    width: 116px;
    height: 116px;
  }
}

/* Footer Logo: stronger shadow */
.l-footer__logo {
  filter:
    drop-shadow(0 8px 10px rgba(43, 33, 27, .55))
    drop-shadow(0 18px 28px rgba(43, 33, 27, .38));
}
