@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;600;700;800;900&family=Yuji+Syuku&display=swap');

:root {
  --bg-base: #000000;
  --bg-paper: #080808;
  --bg-warm: #f7f1e5;
  --ink: #1a1a1a;
  --text-main: #ffffff;
  --text-sub: #a0a0a0;
  --text-muted: #666666;
  --text-on-dark: #ffffff;
  --text-on-dark-muted: #d8d8d8;
  --gold: #c3a677;
  --gold-light: #d8c093;
  --vermilion: #b94032;
  --line: rgba(255, 255, 255, 0.12);
  --line-dark: rgba(0, 0, 0, 0.14);
  --shadow-base: 0 18px 50px rgba(0, 0, 0, 0.45);
  --font-serif: "Shippori Mincho", "Noto Serif JP", "Yu Mincho", serif;
  --font-sans: "Shippori Mincho", "Noto Serif JP", "Yu Mincho", serif;
  --font-en: "Montserrat", sans-serif;
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body {
  width: 100%;
  max-width: 100vw;
  overflow-x: hidden;
  background: var(--bg-base);
  color: var(--text-main);
  font-family: var(--font-serif);
  line-height: 2.2;
  letter-spacing: 0.15em;
  -webkit-font-smoothing: antialiased;
  writing-mode: horizontal-tb;
  overflow-wrap: break-word;
}
body::before { display: none; }
img, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; transition: color 0.4s ease, background 0.4s ease, border-color 0.4s ease; }
a:hover { color: var(--gold); }
button { font: inherit; }

.fade-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1s var(--ease), transform 1s var(--ease);
}
.fade-up.is-visible { opacity: 1; transform: translateY(0); }
.delay-1 { transition-delay: 0.2s; }
.delay-2 { transition-delay: 0.35s; }

.section-header,
.menu-section-header,
.slf-header,
.course-list-header,
.news-section-header,
.job-section-header,
.contact-section-header {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  margin-bottom: 100px;
}

.section-header h2,
.menu-main-title,
.slf-main-title,
.course-list-title,
.news-main-title,
.job-main-title,
.contact-main-title {
  margin: 0;
  padding-top: 20px;
  border-top: 1px solid var(--gold);
  color: var(--text-main);
  font-family: var(--font-serif);
  font-size: clamp(1.8rem, 3vw, 2.2rem);
  font-weight: 300;
  letter-spacing: 0.35em;
  line-height: 1.8;
}

.section-header p,
.menu-sub-text,
.slf-sub-text,
.course-list-desc,
.news-sub-text,
.job-sub-text,
.contact-sub-text {
  margin-top: 30px;
  color: var(--gold);
  font-family: var(--font-en);
  font-size: 10px;
  letter-spacing: 0.3em;
  line-height: 2;
}