:root {
  --jtm-green: #4caf50;
  --jtm-green-dark: #1b5e20;
  --jtm-green-mid: #2e7d32;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Noto Sans JP", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
}

h1, h2, h3, h4 {
  font-family: "Noto Serif JP", serif;
}

.container {
  width: 100%;
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
}

@media (min-width: 640px) {
  .container {
    padding-left: 1.5rem;
    padding-right: 1.5rem;
  }
}

@media (min-width: 1024px) {
  .container {
    padding-left: 2rem;
    padding-right: 2rem;
  }
}

.section-label {
  font-family: "Montserrat", sans-serif;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--jtm-green);
}

.gold-underline {
  position: relative;
  display: inline-block;
}

.gold-underline::after {
  content: "";
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--jtm-green);
}

.fade-in-up {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s cubic-bezier(0.23, 1, 0.32, 1), transform 0.6s cubic-bezier(0.23, 1, 0.32, 1);
}

.fade-in-up.visible {
  opacity: 1;
  transform: translateY(0);
}

.modern-header {
  animation: header-drop 0.7s cubic-bezier(0.16, 1, 0.3, 1) both;
  background:
    linear-gradient(135deg, rgba(27, 94, 32, 0.98), rgba(46, 125, 50, 0.96) 46%, rgba(76, 175, 80, 0.94));
  backdrop-filter: saturate(1.2) blur(14px);
}

.modern-header::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(110deg, transparent 0%, rgba(255, 255, 255, 0.14) 42%, transparent 58%);
  transform: translateX(-120%);
  animation: header-sheen 6s ease-in-out 1.2s infinite;
}

.modern-header.is-scrolled {
  background:
    linear-gradient(135deg, rgba(27, 94, 32, 0.92), rgba(46, 125, 50, 0.9) 52%, rgba(57, 142, 60, 0.88));
  backdrop-filter: saturate(1.35) blur(18px);
}

.logo-mark {
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.24), 0 10px 22px rgba(0, 0, 0, 0.16);
}

.nav-link-modern::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.12);
  opacity: 0;
  transform: scale(0.84);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.nav-link-modern:hover::before,
.nav-link-modern.is-active::before {
  opacity: 1;
  transform: scale(1);
}

.header-cta {
  position: relative;
  overflow: hidden;
}

.header-cta::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 34%;
  left: -42%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.28), transparent);
  transform: skewX(-18deg);
  transition: left 0.55s ease;
}

.header-cta:hover::after {
  left: 112%;
}

@keyframes header-drop {
  from {
    opacity: 0;
    transform: translateY(-18px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes header-sheen {
  0%, 54% {
    transform: translateX(-120%);
  }
  72%, 100% {
    transform: translateX(120%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .modern-header,
  .modern-header::before {
    animation: none;
  }
}
