.reveal-hidden {
  opacity: 0;
  transform: translateY(16px);
}

.reveal-visible {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 0.8s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.line-expand {
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 1s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.line-expand.is-visible {
  transform: scaleX(1);
}

body {
  background-color: #fbfaf7;
  overflow-x: hidden;
  min-width: 240px;
  word-break: keep-all;
  overflow-wrap: break-word;
}

/* Japanese text wrapping */
p,
li,
dd {
  word-break: normal;
  overflow-wrap: anywhere;
}

/* =============================================
   Mobile Responsive Enhancements
   ============================================= */

/* Small Mobile (max-width: 480px) */
@media (max-width: 480px) {

  /* Section padding reduction (exclude HERO section) */
  section:not(:first-of-type) {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }

  /* Location cards */
  .rounded-2xl {
    padding: 1rem !important;
  }

  /* Footer nav spacing */
  footer nav {
    gap: 0.75rem !important;
  }
}

/* Extra Small Mobile (max-width: 320px) */
@media (max-width: 320px) {

  /* Ensure nothing breaks at minimum width */
  .container {
    padding-left: 0.75rem !important;
    padding-right: 0.75rem !important;
  }

  /* Reduce button padding */
  .rounded-full {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }
}