:root{
  --navy:#0e1c2b;
  --navy-soft:#1b3047;
  --ink:#1a1a1a;
  --gray:#5b616e;
  --line:#e7e5e0;
  --bg:#ffffff;
  --bg-soft:#f7f6f3;
  --accent:#9a7b4f;
  --accent-deep:#7a6038;
  --serif:'Noto Serif JP',serif;
  --sans:'Noto Sans JP',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.9;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}

/* ---------- Header ---------- */
header{position:fixed;top:0;left:0;width:100%;z-index:1000;padding:26px 6vw;display:flex;align-items:center;justify-content:space-between;transition:all .5s cubic-bezier(.16,1,.3,1)}
header.scrolled,header.solid{padding:16px 6vw;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.logo{font-family:var(--serif);font-weight:600;font-size:24px;letter-spacing:.06em;color:#fff;transition:color .5s}
header.scrolled .logo,header.solid .logo{color:var(--navy)}
.logo span{color:var(--accent)}
nav ul{display:flex;list-style:none;gap:38px;align-items:center}
nav a{font-size:13.5px;letter-spacing:.08em;color:rgba(255,255,255,.85);font-weight:500;position:relative;transition:color .5s}
header.scrolled nav a,header.solid nav a{color:var(--navy)}
nav a.active{color:var(--accent)!important}
nav a:not(.nav-cta)::after{content:'';position:absolute;left:0;bottom:-6px;width:0;height:1px;background:var(--accent);transition:width .4s}
nav a:not(.nav-cta):hover::after{width:100%}
.nav-cta{border:1px solid rgba(255,255,255,.5);padding:11px 24px;border-radius:2px;transition:all .4s}
header.scrolled .nav-cta,header.solid .nav-cta{border-color:var(--navy)}
.nav-cta:hover{background:var(--accent);border-color:var(--accent)!important;color:#fff!important}
.nav-cta.active{background:var(--accent);border-color:var(--accent)!important;color:#fff!important}
.menu-toggle{display:none}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;padding:17px 34px;border-radius:2px;font-size:14px;font-weight:500;letter-spacing:.06em;transition:all .4s cubic-bezier(.16,1,.3,1)}
.btn-primary{background:var(--accent);color:#fff}
.btn-primary:hover{background:var(--accent-deep);transform:translateY(-2px)}
.btn-ghost{border:1px solid rgba(255,255,255,.55);color:#fff}
.btn-ghost:hover{background:#fff;color:var(--navy);border-color:#fff}
.btn-dark{border:1px solid var(--navy);color:var(--navy)}
.btn-dark:hover{background:var(--navy);color:#fff}
.btn .arr{transition:transform .4s}
.btn:hover .arr{transform:translateX(5px)}

/* ---------- Section base ---------- */
section{padding:120px 6vw}
.label{font-size:12px;letter-spacing:.26em;color:var(--accent-deep);font-weight:700;display:flex;align-items:center;gap:14px;margin-bottom:22px}
.label::before{content:'';width:30px;height:1px;background:var(--accent)}
.sec-title{font-family:var(--serif);font-weight:500;font-size:clamp(26px,3.4vw,40px);line-height:1.55;letter-spacing:.04em;color:var(--navy)}
.lead{color:var(--gray);font-size:15.5px;margin-top:22px;max-width:640px;line-height:2.1}

/* ---------- Page hero (sub pages) ---------- */
.page-hero{position:relative;height:52vh;min-height:380px;display:flex;align-items:center;overflow:hidden;padding:0 6vw}
.page-hero-bg{position:absolute;inset:0;transform:scale(1.06);background-position:center;background-size:cover}
.page-hero-bg::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,18,30,.66),rgba(8,18,30,.5))}
.page-hero-inner{position:relative;z-index:2}
.page-hero .crumb{color:rgba(255,255,255,.7);font-size:12px;letter-spacing:.18em;margin-bottom:18px;opacity:0;animation:rise 1s .25s forwards}
.page-hero .crumb a:hover{color:var(--accent)}
.page-hero .en{color:var(--accent);font-size:13px;letter-spacing:.28em;font-weight:500;opacity:0;animation:rise 1s .4s forwards}
.page-hero h1{font-family:var(--serif);color:#fff;font-weight:500;font-size:clamp(28px,4vw,50px);letter-spacing:.05em;margin-top:14px;opacity:0;animation:rise 1s .55s forwards}

/* ---------- Reveal ---------- */
.reveal{opacity:0;transform:translateY(40px);transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.12s}.reveal.d2{transition-delay:.24s}.reveal.d3{transition-delay:.36s}
@keyframes slideUp{to{transform:translateY(0)}}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes lineMove{0%,100%{transform:scaleY(.4);transform-origin:top}50%{transform:scaleY(1)}}

/* ---------- CTA band ---------- */
.cta{position:relative;text-align:center;color:#fff;padding:150px 6vw;background:linear-gradient(rgba(14,28,43,.82),rgba(14,28,43,.82)),url('images/cta-band.jpg') center/cover fixed}
.cta h2{font-family:var(--serif);font-weight:500;font-size:clamp(26px,3.6vw,44px);line-height:1.6;letter-spacing:.05em;margin-bottom:24px}
.cta p{color:rgba(255,255,255,.8);font-size:15px;margin-bottom:42px;max-width:560px;margin-left:auto;margin-right:auto;line-height:2.1}

/* ---------- Footer ---------- */
footer{background:#0a141f;color:rgba(255,255,255,.6);padding:80px 6vw 40px}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:50px;padding-bottom:50px;border-bottom:1px solid rgba(255,255,255,.1)}
.foot-logo{font-family:var(--serif);font-size:26px;color:#fff;letter-spacing:.06em;margin-bottom:20px}
.foot-logo span{color:var(--accent)}
.foot-top p{font-size:13.5px;line-height:2;max-width:340px}
.foot-col h4{color:#fff;font-size:13px;letter-spacing:.14em;margin-bottom:20px;font-weight:500}
.foot-col ul{list-style:none}
.foot-col li{margin-bottom:13px;font-size:13.5px;transition:color .3s}
.foot-col li a:hover{color:var(--accent)}
.foot-bottom{padding-top:30px;display:flex;justify-content:space-between;font-size:12px;letter-spacing:.06em;flex-wrap:wrap;gap:12px}

/* ---------- Responsive ---------- */
@media(max-width:900px){
  nav ul{position:fixed;top:0;right:0;flex-direction:column;align-items:flex-start;gap:0;
    width:min(82vw,330px);height:100vh;background:#fff;padding:100px 34px 34px;
    transform:translateX(100%);transition:transform .5s cubic-bezier(.16,1,.3,1);
    box-shadow:-20px 0 60px -30px rgba(14,28,43,.45);z-index:1001;display:flex}
  nav ul li{width:100%}
  nav a{color:var(--navy)!important;font-size:15px;display:block;padding:16px 0;width:100%;border-bottom:1px solid var(--line)}
  nav a:not(.nav-cta)::after{display:none}
  .nav-cta{border:none!important;padding:16px 0!important;color:var(--accent)!important}
  header.nav-open nav ul{transform:translateX(0)}
  header.nav-open::after{content:'';position:fixed;inset:0;background:rgba(8,18,30,.45);z-index:1000}
  body.nav-locked{overflow:hidden}
  .menu-toggle{display:block;background:none;border:none;color:#fff;font-size:26px;cursor:pointer;z-index:1002;position:relative;line-height:1}
  header.scrolled .menu-toggle,header.solid .menu-toggle{color:var(--navy)}
  header.nav-open .menu-toggle{color:var(--navy)}
  section{padding:80px 7vw}
  .cta{background-attachment:scroll}
  .foot-top{grid-template-columns:1fr;gap:36px}
}

/* ---------- A11y & fallbacks ---------- */
main{display:block}
.skip-link{position:absolute;left:-9999px;top:0;z-index:2000;background:var(--navy);color:#fff;padding:12px 20px;font-size:14px;border-radius:0 0 4px 0}
.skip-link:focus{left:0}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
/* JS無効時は演出要素を最初から表示（モダンブラウザ） */
@media (scripting: none){.reveal{opacity:1!important;transform:none!important}}
/* モーション過敏設定を尊重 */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1!important;transform:none!important}
}

/* ---------- Footer analytics note ---------- */
.foot-note{margin-top:18px;font-size:11.5px;line-height:1.8;color:rgba(255,255,255,.55);letter-spacing:.03em;max-width:680px}
