: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;}

/* ---- generic section ---- */
section{position:relative; z-index:1; padding:110px 24px;}
.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;}

/* ---- 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);}

/* ---- 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-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 20px;}
  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{order:9; flex-wrap:wrap; border-radius:4px;}
  nav a{font-size:.86rem;}
  section{padding:80px 20px;}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important; transition:none !important;}
}
