:root{
  --indigo-ink:#0d1a30; --indigo-deep:#1b2c4f; --indigo-mid:#2c4570; --indigo-pale:#7c8fae;
  --gold:#b6903f; --gold-light:#d9bd7e; --vermilion:#b31f34;
  --washi:#f4efe2; --washi-warm:#ece3d0; --ink-text:#242118; --line:rgba(27,44,79,0.14);
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{background:var(--washi); color:var(--ink-text); font-family:'Noto Sans JP','Frank Ruhl Libre',serif;
  font-weight:300; overflow-x:hidden; -webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}

.texture{position:fixed; inset:0; pointer-events:none; z-index:0; opacity:.55;
  background-image:radial-gradient(circle at 18% 28%, rgba(182,144,63,0.06), transparent 42%),
                   radial-gradient(circle at 82% 72%, rgba(27,44,79,0.06), transparent 46%);}

/* ---- header ---- */
header{position:fixed; top:0; left:0; right:0; z-index:100; display:flex; align-items:center;
  justify-content:space-between; padding:16px 40px; background:rgba(244,239,226,0.88);
  backdrop-filter:blur(12px); border-bottom:1px solid var(--line);}
.brand{display:flex;align-items:center;gap:11px;}
.brand-logo{width:38px;height:38px;object-fit:contain;flex-shrink:0;}
.brand svg{width:36px;height:36px;flex-shrink:0;}
.brand-name{font-family:'Frank Ruhl Libre',serif;font-size:1.2rem;letter-spacing:.05em;color:var(--indigo-ink);line-height:1;}
.brand-name b{font-weight:700;}
.brand-name span{font-weight:300;color:var(--gold);}
nav{display:flex;align-items:center;gap:22px;}
nav a{font-size:.78rem;letter-spacing:.07em;color:var(--indigo-deep);position:relative;padding-bottom:4px;white-space:nowrap;}
nav a.current{color:var(--gold);}
nav a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--gold);transition:width .3s;}
nav a:hover::after{width:100%;}
.lang-toggle{display:flex; border:1px solid var(--indigo-deep); border-radius:20px; overflow:hidden; font-size:.64rem; flex-shrink:0;}
.lang-toggle button{padding:6px 9px; white-space:nowrap; background:transparent; border:none; color:var(--indigo-deep);
  cursor:pointer; font-family:'Frank Ruhl Libre',serif; letter-spacing:.04em;}
.lang-toggle button.active{background:var(--indigo-deep); color:var(--washi);}
.lang-toggle button + button{border-left:1px solid rgba(27,44,79,.22);}
.nav-toggle-mobile{display:none;font-size:1.4rem;background:none;border:none;color:var(--indigo-deep);cursor:pointer;}

/* booking entry in the nav — set apart by an outline, nothing louder */
nav a.nav-book{border:1px solid var(--indigo-deep); padding:7px 15px; border-radius:2px;
  letter-spacing:.1em; padding-bottom:7px; transition:background .3s, color .3s;}
nav a.nav-book:hover{background:var(--indigo-deep); color:var(--washi);}
nav a.nav-book::after{display:none;}


/* header right-hand group: social icons + menu button + nav */
.header-right{display:flex; align-items:center; gap:20px;}

/* social icons — always visible, never inside the mobile drawer */
.social-links{display:flex; align-items:center; gap:10px;}
/* language switch — always visible, never hidden inside the mobile drawer */
.lang-switch{display:flex; align-items:center; justify-content:center;
  height:32px; padding:0 13px; border:1px solid var(--indigo-deep); border-radius:16px;
  font-family:'Frank Ruhl Libre',serif; font-size:.72rem; letter-spacing:.04em;
  color:var(--indigo-deep); white-space:nowrap; transition:background .3s, color .3s;}
.lang-switch:hover{background:var(--indigo-deep); color:var(--washi);}
.lang-switch::after{display:none;}
@media (max-width:900px){
  .lang-switch{height:36px; padding:0 15px; font-size:.76rem;}
}
.social-links a{display:flex; align-items:center; justify-content:center;
  width:32px; height:32px; transition:transform .25s ease, opacity .25s ease;}
.social-links svg{width:100%; height:100%; display:block;}
.social-links a:hover{transform:translateY(-2px);}
.social-links a:active{opacity:.75;}
.social-links a::after{display:none;}

/* ---- generic section ---- */
section{position:relative; z-index:1; padding:110px 24px; scroll-margin-top:76px;}
.section-inner{max-width:1160px; margin:0 auto;}
.section-head{text-align:center; margin-bottom:66px;}
.eyebrow{display:inline-flex; align-items:center; gap:12px; margin-bottom:20px; font-size:.75rem;
  letter-spacing:.24em; color:var(--vermilion); text-transform:uppercase;}
.eyebrow::before,.eyebrow::after{content:"";width:26px;height:1px;background:var(--vermilion);opacity:.5;}
.section-title{font-family:'Shippori Mincho',serif; font-weight:600; font-size:clamp(1.65rem,3vw,2.25rem); color:var(--indigo-ink); line-height:1.5;}
.section-title[data-current-lang]:not([data-current-lang="ja"]){font-family:'Frank Ruhl Libre',serif; font-weight:500; font-size:clamp(1.6rem,2.8vw,2.1rem); line-height:1.3;}
.section-desc{max-width:580px; margin:18px auto 0; font-size:.92rem; line-height:2; color:#5b573f;
  text-wrap:balance; text-wrap:pretty; line-break:strict;}

/* ---- buttons ---- */
.btn{display:inline-flex; align-items:center; gap:10px; padding:15px 30px; font-size:.8rem;
  letter-spacing:.1em; border-radius:2px; transition:.35s; cursor:pointer; border:1px solid transparent;
  font-family:inherit;}
.btn-primary{background:var(--indigo-deep); color:var(--washi); border-color:var(--indigo-deep);}
.btn-primary:hover{background:var(--indigo-ink);}
.btn-outline{border-color:var(--indigo-deep); color:var(--indigo-deep);}
.btn-outline:hover{background:var(--indigo-deep); color:var(--washi);}
.btn-gold{background:var(--gold); color:var(--indigo-ink); border-color:var(--gold);}
.btn-gold:hover{background:var(--gold-light);}

/* secondary link sitting under a primary CTA */
.cta-secondary{display:block; margin-top:16px; font-size:.78rem; letter-spacing:.06em;
  color:#8a8672; text-decoration:underline; text-underline-offset:4px;
  text-decoration-color:var(--line); transition:color .3s;}
.cta-secondary:hover{color:var(--indigo-deep);}

/* dollar equivalent under a price (English pages only) */
.price-usd{display:block; font-family:'Frank Ruhl Libre',serif; font-weight:400;
  font-size:.7rem; letter-spacing:.06em; color:#9c9784; margin-top:5px;}

/* sticky booking bar (phones only) */
.sticky-cta{position:fixed; left:0; right:0; bottom:0; z-index:90;
  display:none; align-items:center; justify-content:space-between; gap:14px;
  padding:11px 16px calc(11px + env(safe-area-inset-bottom));
  background:rgba(244,239,226,.96); backdrop-filter:blur(12px);
  border-top:1px solid var(--line); transform:translateY(115%); transition:transform .35s ease;}
.sticky-cta.show{transform:none;}
.sticky-cta .sc-label{display:block; font-size:.6rem; letter-spacing:.18em;
  text-transform:uppercase; color:var(--gold); margin-bottom:3px;}
.sticky-cta .sc-price{font-family:'Frank Ruhl Libre',serif; font-size:1.05rem;
  color:var(--indigo-ink); line-height:1.2;}
.sticky-cta .btn{padding:12px 20px; font-size:.75rem; white-space:nowrap;}
@media (max-width:767px){ .sticky-cta{display:flex;} }

/* ---- page hero (sub pages) ---- */
.page-hero{position:relative; padding:165px 24px 80px; text-align:center; overflow:hidden;}
img.enso-ghost{position:absolute; top:-90px; right:-110px; width:440px; opacity:.07; pointer-events:none; z-index:0;}
.page-title{font-family:'Shippori Mincho',serif; font-weight:600; font-size:clamp(1.9rem,3.8vw,2.8rem); color:var(--indigo-ink); margin-bottom:18px; line-height:1.5;}
.page-title[data-current-lang]:not([data-current-lang="ja"]){font-family:'Frank Ruhl Libre',serif; font-weight:500; line-height:1.25;}
.page-tagline{max-width:640px; margin:0 auto 20px; font-family:'Frank Ruhl Libre','Shippori Mincho',serif;
  font-weight:400; font-size:1.02rem; letter-spacing:.03em; line-height:1.75; color:var(--indigo-mid);}
.page-sub{max-width:600px; margin:0 auto; font-size:.94rem; line-height:2.05; color:#4a4636;}

/* ---- footer ---- */
.pattern-strip{display:flex; height:12px;}
.pattern-strip span{flex:1; background:var(--indigo-ink);}
.pattern-strip span:nth-child(2){background:var(--gold);}
.pattern-strip span:nth-child(3){background:var(--vermilion);}
footer{background:var(--indigo-ink); color:#8b93ab; text-align:center; padding:36px 24px; font-size:.72rem; letter-spacing:.05em;}
footer .flinks{display:flex; justify-content:center; gap:26px; margin-bottom:16px; flex-wrap:wrap;}
footer .flinks a{color:#c7cadb; font-size:.76rem;}
footer .flinks a:hover{color:var(--gold-light);}

@media (max-width:1180px){
  nav{gap:16px;}
  nav a{font-size:.74rem;}
}
@media (max-width:900px){
  header{padding:14px 16px;}
  .header-right{gap:10px;}
  .social-links{gap:8px;}
  .social-links a{width:34px; height:34px;}
  nav{position:fixed; top:66px; right:-100%; flex-direction:column; background:var(--washi); width:80%;
      height:100vh; align-items:flex-start; padding:38px 30px; gap:22px; transition:.4s; border-left:1px solid var(--line);}
  nav.open{right:0;}
  .nav-toggle-mobile{display:block;}
  .lang-toggle{flex-wrap:wrap; border-radius:4px;}
  nav a.nav-book{padding:10px 20px;}
  nav a{font-size:.86rem;}
  section{padding:80px 20px;}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important; transition:none !important;}
}

@media (max-width:767px){
  /* keep the footer clear of the sticky bar */
  body.has-sticky-cta{padding-bottom:70px;}
}
