/* ============================================================
   JAPAN SERENITY — style.css
   全ページ共通スタイル
   ============================================================ */

/* ── CSS Variables ── */
:root {
  --white:      #FFFFFF;
  --washi:      #FAF6EE;
  --washi-dark: #F0E9DA;
  --blush:      #F5E0D8;
  --vermillion: #C0392B;
  --lacquer:    #8B1A1A;
  --ink:        #1C1410;
  --sumi:       #2E2520;
  --bark:       #6B4C3B;
  --gold:       #C9952A;
  --gold-light: #E8B84B;
  --gold-pale:  #F5DFA0;
}

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Jost', sans-serif;
  font-weight: 300;
  background: var(--washi);
  color: var(--sumi);
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { text-decoration: none; color: inherit; }

/* ── Wave Background Pattern ── */
.wave-bg {
  position: absolute; inset: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='35'%3E%3Cellipse cx='30' cy='35' rx='30' ry='20' fill='none' stroke='%23C0392B' stroke-width='1'/%3E%3Cellipse cx='0' cy='35' rx='30' ry='20' fill='none' stroke='%23C0392B' stroke-width='1'/%3E%3Cellipse cx='60' cy='35' rx='30' ry='20' fill='none' stroke='%23C0392B' stroke-width='1'/%3E%3Cellipse cx='15' cy='15' rx='30' ry='20' fill='none' stroke='%23C0392B' stroke-width='1'/%3E%3Cellipse cx='45' cy='15' rx='30' ry='20' fill='none' stroke='%23C0392B' stroke-width='1'/%3E%3C/svg%3E");
  background-size: 60px 35px;
  opacity: 0.04;
}

/* ============================================================
   NAVIGATION
   ============================================================ */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(250,246,238,0.96);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(192,57,43,0.12);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 3rem; height: 64px;
  transition: box-shadow 0.3s;
}
nav.scrolled { box-shadow: 0 2px 20px rgba(28,20,16,0.08); }

.nav-logo { display: flex; align-items: center; gap: 0.7rem; }
.nav-logo img { height: 38px; width: auto; }
.nav-logo span {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem; font-weight: 400;
  color: var(--ink); letter-spacing: 0.06em;
}
.nav-links { display: flex; gap: 2.4rem; list-style: none; }
.nav-links a {
  font-family: 'Jost', sans-serif;
  font-size: 0.68rem; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--bark); transition: color 0.25s;
}
.nav-links a:hover,
.nav-links a.active { color: var(--vermillion); }
.nav-cta {
  font-family: 'Jost', sans-serif;
  font-size: 0.64rem; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--white); background: var(--vermillion);
  padding: 0.6rem 1.4rem; transition: background 0.25s;
}
.nav-cta:hover { background: var(--lacquer); }
.nav-ham {
  display: none; flex-direction: column; gap: 5px;
  background: none; border: none; cursor: pointer; padding: 4px;
}
.nav-ham span { display: block; width: 22px; height: 1px; background: var(--bark); }

/* ── Mobile Menu ── */
.mob-menu {
  display: none; position: fixed; inset: 0;
  background: var(--washi); z-index: 200;
  flex-direction: column; align-items: center; justify-content: center; gap: 2.4rem;
}
.mob-menu.open { display: flex; }
.mob-menu a {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.8rem; font-weight: 300;
  color: var(--ink); letter-spacing: 0.1em; transition: color 0.25s;
}
.mob-menu a:hover { color: var(--vermillion); }
.mob-close {
  position: absolute; top: 1.4rem; right: 2rem;
  background: none; border: none; font-size: 1.6rem;
  color: var(--bark); cursor: pointer;
}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn-red {
  font-family: 'Jost', sans-serif; font-weight: 300;
  font-size: 0.68rem; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--white); background: var(--vermillion);
  padding: 0.88rem 2rem; display: inline-block;
  border: 1px solid var(--vermillion);
  transition: background 0.28s, transform 0.2s;
}
.btn-red:hover { background: var(--lacquer); border-color: var(--lacquer); transform: translateY(-1px); }

.btn-ghost {
  font-family: 'Jost', sans-serif; font-weight: 300;
  font-size: 0.68rem; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--vermillion); border: 1px solid var(--vermillion);
  padding: 0.88rem 2rem; display: inline-block;
  transition: background 0.28s, color 0.28s;
}
.btn-ghost:hover { background: var(--vermillion); color: var(--white); }

.btn-gold {
  font-family: 'Jost', sans-serif; font-weight: 300;
  font-size: 0.68rem; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--ink); background: var(--gold);
  padding: 0.88rem 2rem; display: inline-block;
  transition: background 0.28s;
}
.btn-gold:hover { background: var(--gold-light); }

/* ============================================================
   TYPOGRAPHY HELPERS
   ============================================================ */
.slabel {
  font-family: 'Noto Serif JP', serif;
  font-size: 0.61rem; letter-spacing: 0.3em; text-transform: uppercase;
  color: var(--vermillion);
  display: flex; align-items: center; gap: 0.8rem;
  margin-bottom: 0.9rem;
}
.slabel::before { content: ''; display: block; width: 20px; height: 1px; background: var(--vermillion); }
.slabel.center { justify-content: center; }
.slabel.center::before { display: none; }
.slabel.gold { color: var(--gold); }
.slabel.gold::before { background: var(--gold); }

.stitle {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(1.9rem, 2.8vw, 3.2rem); line-height: 1.1;
  color: var(--ink); text-transform: none !important; letter-spacing: -0.01em;
}
.stitle em { font-style: italic; color: var(--vermillion); }
.stitle.light { color: var(--washi); }
.stitle.light em { color: var(--gold); }

.sjp {
  font-family: 'Noto Serif JP', serif; font-weight: 300;
  font-size: 0.85rem; letter-spacing: 0.14em;
  color: var(--bark); margin-top: 0.35rem;
}
.sjp.light { color: rgba(250,246,238,0.4); }

.divider {
  display: flex; align-items: center; gap: 1rem; margin: 1.8rem 0;
}
.divider::before, .divider::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(to right, transparent, var(--vermillion), transparent);
}
.divider span { color: var(--vermillion); font-size: 0.9rem; opacity: 0.55; }

/* ── Scroll Reveal ── */
.reveal {
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}
.reveal.visible { opacity: 1; transform: translateY(0); }

/* ── FAQ (共通) ── */
.faq-item { border-bottom: 1px solid rgba(192,57,43,0.18); }
.faq-item:first-of-type { border-top: 1px solid rgba(192,57,43,0.18); }
.faq-q {
  width: 100%; background: none; border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.6rem 0; text-align: left; gap: 1rem;
}
.faq-q-text {
  font-family: 'Cormorant Garamond', serif; font-size: 1.15rem;
  font-weight: 400; color: var(--ink); text-transform: none !important;
  letter-spacing: 0.01em;
}
.faq-icon {
  width: 22px; height: 22px; border: 1px solid var(--vermillion);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; color: var(--vermillion); font-size: 1rem; transition: transform 0.3s;
}
.faq-item.open .faq-icon { transform: rotate(45deg); }
.faq-a { overflow: hidden; max-height: 0; transition: max-height 0.4s ease; }
.faq-item.open .faq-a { max-height: 300px; }
.faq-a p { font-size: 0.85rem; line-height: 1.95; color: var(--bark); padding-bottom: 1.6rem; }
.faq-a a { color: var(--vermillion); }

/* ============================================================
   PAGE HERO (About / Contact etc.)
   ============================================================ */
.page-hero {
  margin-top: 64px;
  position: relative; height: 52vh; min-height: 360px;
  overflow: hidden; display: flex; align-items: flex-end;
}
.page-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover; object-position: center 30%;
  transform: scale(1.05);
  animation: heroZoom 14s ease-out forwards;
}
.page-hero-dim {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(28,20,16,0.72) 0%, rgba(28,20,16,0.2) 60%, transparent 100%);
}
.page-hero-text { position: relative; z-index: 2; padding: 0 4rem 4rem; }
.page-hero-label {
  font-family: 'Noto Serif JP', serif; font-size: 0.62rem;
  letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--gold-pale);
  display: flex; align-items: center; gap: 0.8rem; margin-bottom: 0.9rem;
}
.page-hero-label::before { content: ''; display: block; width: 20px; height: 1px; background: var(--gold); }
.page-hero-h1 {
  font-family: 'Cormorant Garamond', serif; font-weight: 300;
  font-size: clamp(2.8rem, 6vw, 5rem); line-height: 1.05;
  color: var(--white); letter-spacing: -0.01em; text-transform: none !important;
}
.page-hero-h1 em { font-style: italic; color: var(--gold-light); }
.page-hero-jp {
  font-family: 'Noto Serif JP', serif; font-weight: 300;
  font-size: 0.88rem; letter-spacing: 0.16em;
  color: rgba(250,246,238,0.55); margin-top: 0.5rem;
}

/* ============================================================
   CTA SECTION (共通)
   ============================================================ */
.cta {
  background: var(--washi-dark); padding: 8rem 4rem;
  text-align: center; position: relative; overflow: hidden;
}
.cta-kamon { width: 50px; height: 50px; display: block; margin: 0 auto 1.8rem; }
.cta .stitle { max-width: 560px; margin: 0.8rem auto 0.4rem; }
.cta-email {
  font-family: 'Cormorant Garamond', serif; font-size: 1.1rem;
  font-style: italic; color: var(--vermillion); display: inline-block;
  margin: 1.4rem 0 2.2rem; transition: color 0.3s;
}
.cta-email:hover { color: var(--lacquer); }
.cta-p {
  font-size: 0.86rem; line-height: 1.9; color: var(--bark);
  max-width: 460px; margin: 0 auto 1.4rem;
}
.cta-btns { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ============================================================
   FOOTER (共通)
   ============================================================ */
footer {
  background: var(--ink); padding: 2.4rem 4rem;
  display: flex; justify-content: space-between; align-items: center;
  flex-wrap: wrap; gap: 1rem;
}
.f-brand {
  font-family: 'Cormorant Garamond', serif; font-size: 0.88rem;
  color: rgba(250,246,238,0.35); letter-spacing: 0.12em;
}
.f-links { display: flex; gap: 2rem; list-style: none; flex-wrap: wrap; }
.f-links a {
  font-size: 0.62rem; letter-spacing: 0.14em; text-transform: uppercase;
  color: rgba(250,246,238,0.28); transition: color 0.25s;
}
.f-links a:hover { color: var(--gold-pale); }
.f-copy { font-size: 0.62rem; color: rgba(250,246,238,0.2); letter-spacing: 0.06em; }

/* ============================================================
   ANIMATIONS
   ============================================================ */
@keyframes heroZoom { to { transform: scale(1); } }
@keyframes zoomIn   { to { transform: scale(1); } }
@keyframes up {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   RESPONSIVE — 共通
   ============================================================ */
@media (max-width: 1024px) {
  nav { padding: 0 1.6rem; }
  .nav-links, .nav-cta { display: none; }
  .nav-ham { display: flex; }
  .page-hero-text { padding: 0 2rem 3rem; }
  footer { flex-direction: column; text-align: center; }
}
@media (max-width: 680px) {
  .page-hero-text { padding: 0 1.5rem 2.4rem; }
  .cta { padding: 5rem 1.5rem; }
  footer { padding: 2rem 1.5rem; }
}

/* ══════════════════════════════
   FLOATING INQUIRE BAR (共通)
══════════════════════════════ */
.inquire-bar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 150;
  background: var(--vermillion);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0.9rem 2.4rem;
  transform: translateY(100%);
  transition: transform 0.4s ease;
  box-shadow: 0 -4px 20px rgba(192,57,43,0.25);
}
.inquire-bar.show { transform: translateY(0); }
.inquire-bar-text {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1rem; font-weight: 300; font-style: italic;
  color: rgba(255,255,255,0.85); letter-spacing: 0.04em;
}
.inquire-bar-btn {
  font-family: 'Jost', sans-serif; font-size: 0.64rem;
  letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--vermillion); background: var(--white);
  border: none; padding: 0.65rem 1.6rem; cursor: pointer;
  text-decoration: none; display: inline-block;
  transition: background 0.25s; flex-shrink: 0;
}
.inquire-bar-btn:hover { background: var(--washi-dark); }
.inquire-bar-close {
  background: none; border: none; color: rgba(255,255,255,0.6);
  font-size: 1.2rem; cursor: pointer; padding: 0 0 0 1.2rem;
  transition: color 0.25s; line-height: 1;
}
.inquire-bar-close:hover { color: var(--white); }

/* ══════════════════════════════
   BACK TO TOP BUTTON (共通)
══════════════════════════════ */
#toTop {
  position: fixed; bottom: 5rem; right: 1.8rem; z-index: 140;
  width: 44px; height: 44px;
  background: var(--white); border: 1px solid rgba(192,57,43,0.3);
  color: var(--vermillion); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; pointer-events: none;
  transform: translateY(10px);
  transition: opacity 0.4s, transform 0.4s, background 0.25s;
  box-shadow: 0 2px 12px rgba(28,20,16,0.1);
}
#toTop.show { opacity: 1; pointer-events: all; transform: translateY(0); }
#toTop:hover { background: var(--vermillion); color: var(--white); border-color: var(--vermillion); }

/* ── iPhone/iPad responsive for page-hero ── */
@media (max-width: 1024px) and (min-width: 681px) {
  .page-hero { height: 45vh; min-height: 300px; }
  .page-hero-h1 { font-size: clamp(2.2rem, 5vw, 3.5rem); }
}
@media (max-width: 680px) {
  .inquire-bar { padding: 0.8rem 1.2rem; gap: 0.8rem; }
  .inquire-bar-text { display: none; }
  .inquire-bar-btn { padding: 0.6rem 1.2rem; font-size: 0.6rem; flex: 1; text-align: center; }
  #toTop { bottom: 4.5rem; right: 1rem; width: 40px; height: 40px; }
  .page-hero { height: 52vw; min-height: 240px; }
  .page-hero-text { padding: 0 1.4rem 2rem; }
  .page-hero-h1 { font-size: clamp(1.8rem, 7vw, 2.4rem); }
  .page-hero-jp { font-size: 0.78rem; }
}
@media (max-width: 380px) {
  .page-hero-h1 { font-size: 1.6rem; }
  #toTop { bottom: 4rem; right: 0.8rem; }
}
