/* =====================================================
   Layout: Footer CTA
===================================================== */
.footer-cta { background: var(--clr-sub); padding: 112px 0; }
.footer-cta__inner { text-align: center; }
.footer-cta__title { font-family: var(--ff-ja); font-size: clamp(22px, 3vw, 36px); font-weight: 600; color: var(--clr-text2); letter-spacing: .08em; margin-bottom: 20px; }
.footer-cta__sub   { font-size: 15px; color: var(--clr-main); line-height: 2; margin-bottom: 44px; }
.footer-cta__buttons { display: flex; gap: 48px; justify-content: center; flex-wrap: wrap; opacity: 0; }
.footer-cta__buttons.is-visible { animation: slideUp .7s ease both; }

/* =====================================================
   Layout: Footer
===================================================== */
.footer { background: var(--clr-main); padding: 60px 0 40px; }
.footer .footer__inner { padding: 0 0 0 80px; margin-left: 0; }
.footer__inner { display: flex; justify-content: space-between; align-items: stretch; min-height: 100%; }
.footer__nav-wrap { display: flex; flex-direction: column; justify-content: space-between; align-items: flex-end; margin-right: -320px; }
.footer__right { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; gap: 20px; }

.footer__logo img { height: 44px; filter: brightness(0) invert(1); margin-bottom: 28px; }

.footer__address { display: flex; flex-direction: column; gap: 4px; }
.footer__addr-row { display: flex; gap: 16px; align-items: baseline; }
.footer__addr-row dt { font-size: 14px; font-weight: 700; color: var(--clr-white); white-space: nowrap; min-width: 6em; flex-shrink: 0; }
.footer__addr-row dd { font-size: 14px; color: rgba(255,255,255,.8); line-height: 1.8; white-space: nowrap; }
.footer__addr-row + .footer__addr-row { border-top: 1px solid rgba(255,255,255,.2); padding-top: 4px; }

.footer__nav { display: flex; gap: 24px; margin-left: auto; }
.footer__nav-col { display: flex; flex-direction: column; gap: 8px; }
.footer__nav-head { font-family: var(--ff-en); font-size: 20px; font-weight: 600; color: var(--clr-white); margin-bottom: 4px; display: block; }
.footer__nav-col ul { display: flex; flex-direction: column; gap: 4px; }
.footer__nav-col a { font-size: 16px; color: rgba(255,255,255,.8); white-space: nowrap; }
.footer__nav-col a.footer__nav-head { font-size: 20px; color: var(--clr-white); }
.footer__nav-col a:hover { color: var(--clr-white); opacity: 1; }
.footer__nav-col--links { gap: 12px; }

.footer__social { display: flex; gap: 12px; }
.footer__social-btn { display: flex; align-items: center; justify-content: center; }
.footer__social-btn svg { width: 38px; height: 38px; }
.footer__social-btn img { width: 38px; height: 38px; object-fit: contain; }
.footer__copy { font-family: var(--ff-en); font-size: 14px; color: rgba(255,255,255,.6); letter-spacing: .05em; }

/* Footer nav hover text swap */
.footer__nav a[data-hover] { position: relative; white-space: nowrap; }
.footer__nav a[data-hover]::before {
  content: attr(data-hover);
  position: absolute; inset: 0;
  display: flex; align-items: center;
  font-family: var(--ff-ja); font-size: 16px;
  white-space: nowrap; opacity: 0;
  transition: opacity 0.2s ease;
  pointer-events: none;
  color: rgba(255,255,255,.8);
}
.footer__nav a.footer__nav-head[data-hover]::before { font-size: 20px; color: var(--clr-white); }
.footer__nav a[data-hover]:hover { color: transparent !important; }
.footer__nav a[data-hover]:hover::before { opacity: 1; }

@media (min-width: 961px) {
  .footer__nav-col:nth-child(4),
  .footer__nav-col:nth-child(5),
  .footer__nav-col:nth-child(6) { align-items: center; }
  .footer__nav-col:nth-child(5) { margin-left: 5px; }
}
@media (max-width: 960px) {
  .footer__nav a[data-hover] { color: transparent !important; }
  .footer__nav a[data-hover]::before { opacity: 1; transition: none; }
  .footer__inner { grid-template-columns: 1fr 1fr; }
  .footer__right { grid-column: 1 / -1; align-items: flex-start; }
}
@media (max-width: 430px) {
  .footer-cta { padding-top: 24px; padding-bottom: 48px; text-align: center; }
  .footer-cta__title { font-size: 32px; display: inline-block; text-align: left; letter-spacing: 0; margin-left: 20px; text-indent: 6%; }
  .footer-cta__buttons { flex-direction: column; align-items: center; gap: 16px; }

  .footer__inner { display: flex; flex-direction: column; padding: 0 16px !important; gap: 24px; }
  .footer__left { display: contents; }
  .footer__nav-wrap { display: contents; }
  .footer__right { display: contents; }
  .footer__nav { order: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 0; justify-items: start; margin-left: 10px; }
  .footer__nav-col { align-items: flex-start; }
  .footer__nav a { text-align: left; }
  .footer__nav-col:nth-child(4) { order: 5; }
  .footer__nav-col:nth-child(5) { order: 4; }
  .footer__address { order: 2; width: 100%; margin-top: 16px; }
  .footer__social { order: 3; justify-content: center; }
  .footer__social .footer__social-btn img { width: 52px; height: 52px; }
  .footer__logo { order: 4; display: flex; justify-content: center; }
  .footer__logo img { height: 32px; }
  .footer__copy { order: 5; margin-top: -32px; }
  .footer__addr-row dd { white-space: normal; }
  .footer__addr-row dt { min-width: 5em; }
  .footer__nav-col a { white-space: normal; }
}
