/* =========================================================
   still — フォトスタジオ
   design system : 温クリーム × セピア墨 × 陽だまりの琥珀
   ========================================================= */

:root{
  /* ---- paper / ink ---- */
  --paper:#F4EEE3;
  --paper-2:#EDE5D7;
  --paper-3:#E4D8C4;
  --ink:#2B2620;
  --ink-2:#4A4137;
  --mute:#6E655A;
  --dim:#8C8275;
  --line:rgba(43,38,32,.15);
  --line-2:rgba(43,38,32,.08);

  /* ---- accent : 陽だまりの琥珀（時が経つほど輝く光）---- */
  --amber:#B07A38;
  --amber-deep:#956226;
  --amber-soft:#C9A05C;

  /* ---- dark (何十年後・最終CTA) ---- */
  --umber:#241E18;
  --umber-2:#2E271F;
  --cream:#F1E9DB;
  --cream-mute:rgba(241,233,219,.66);

  /* ---- type ---- */
  --serif-jp:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  --serif-en:"Cormorant Garamond","Times New Roman",serif;
  --sans-jp:"Noto Sans JP",system-ui,-apple-system,"Hiragino Kaku Gothic ProN",sans-serif;

  /* ---- spacing ---- */
  --pad:clamp(20px,5vw,78px);
  --sec-y:clamp(84px,12vw,168px);
  --maxw:1280px;
  --maxw-narrow:920px;

  /* ---- motion ---- */
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-soft:cubic-bezier(.4,0,.2,1);
  --dur:.9s;
}

/* ---------- reset-ish ---------- */
*{box-sizing:border-box;margin:0;padding:0}
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }
body{
  font-family:var(--sans-jp);
  color:var(--ink);
  background:var(--paper);
  line-height:1.9;
  font-size:16px;
  letter-spacing:.02em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
::selection{background:var(--amber);color:#fff}

/* 禁則 */
h1,h2,h3,h4,p,li,dt,dd,figcaption,blockquote,summary{
  line-break:strict;
  word-break:normal;
  overflow-wrap:normal;
  text-wrap:pretty;
}
.mail,.url{overflow-wrap:anywhere}

/* ---------- shared type ---------- */
.eyebrow{
  font-family:var(--serif-en);
  font-size:clamp(.72rem,1.1vw,.82rem);
  letter-spacing:.42em;
  text-transform:uppercase;
  color:var(--amber-deep);
  font-weight:500;
  display:inline-block;
}
.eyebrow--light{color:var(--amber-soft)}
.jp-label{
  font-size:.72rem;letter-spacing:.34em;color:var(--mute);
  font-weight:500;
}
.sec-head{ margin-bottom:clamp(38px,5vw,66px); }
.sec-head .num{
  font-family:var(--serif-en);
  font-size:.8rem;letter-spacing:.3em;color:var(--dim);
  display:block;margin-bottom:18px;
}
.sec-title{
  font-family:var(--serif-jp);
  font-weight:600;
  font-size:clamp(1.9rem,4.4vw,3.1rem);
  line-height:1.24;
  letter-spacing:.04em;
  text-wrap:balance;
}
.sec-title .en{
  display:block;
  font-family:var(--serif-en);
  font-weight:400;font-style:italic;
  font-size:.42em;letter-spacing:.12em;color:var(--amber-deep);
  margin-top:14px;
}
.lead{
  font-family:var(--serif-jp);
  font-size:clamp(1.02rem,1.7vw,1.28rem);
  line-height:2.15;color:var(--ink-2);letter-spacing:.05em;
}
p.body{ color:var(--ink-2); font-size:1rem; line-height:2.05; }
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad)}
.wrap-narrow{max-width:var(--maxw-narrow);margin:0 auto;padding:0 var(--pad)}
section{position:relative}
.sec{padding:var(--sec-y) 0}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:.7em;
  font-family:var(--sans-jp);font-weight:500;font-size:.92rem;
  letter-spacing:.08em;
  padding:.95em 1.9em;border-radius:999px;
  transition:transform .5s var(--ease),background .4s,color .4s,box-shadow .5s;
  will-change:transform;
}
.btn .ar{transition:transform .5s var(--ease)}
.btn:hover .ar{transform:translateX(5px)}
.btn--primary{ background:var(--ink); color:var(--paper); }
.btn--primary:hover{ background:var(--amber-deep); transform:translateY(-3px); box-shadow:0 14px 30px -14px rgba(43,38,32,.5); }
.btn--amber{ background:var(--amber); color:#fff; }
.btn--amber:hover{ background:var(--amber-deep); transform:translateY(-3px); box-shadow:0 16px 34px -16px rgba(150,98,38,.7); }
.btn--ghost{ border:1px solid var(--line); color:var(--ink); }
.btn--ghost:hover{ border-color:var(--ink); transform:translateY(-3px); }
.btn--onlight-outline{ border:1px solid rgba(241,233,219,.4); color:var(--cream); }
.btn--onlight-outline:hover{ background:var(--cream); color:var(--umber); }

/* =========================================================
   loader — 現像するように立ち上がる
   ========================================================= */
#loader{
  position:fixed;inset:0;z-index:1000;
  background:var(--paper);
  display:grid;place-items:center;
  transition:opacity .9s var(--ease),visibility .9s;
}
#loader.done{opacity:0;visibility:hidden}
.loader-mark{ text-align:center; }
.loader-mark .wm{
  font-family:var(--serif-en);
  font-size:clamp(2.6rem,9vw,4.6rem);
  font-weight:400;letter-spacing:.14em;color:var(--ink);
  opacity:0;filter:blur(14px);
  animation:develop 1.5s var(--ease) forwards;
}
.loader-mark .sub{
  font-family:var(--serif-jp);font-size:.82rem;letter-spacing:.5em;
  color:var(--mute);margin-top:12px;
  opacity:0;animation:fadeUp .9s var(--ease) .7s forwards;
}
@keyframes develop{
  0%{opacity:0;filter:blur(16px) sepia(.6);transform:scale(1.04)}
  60%{opacity:1}
  100%{opacity:1;filter:blur(0) sepia(0);transform:scale(1)}
}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.no-js #loader{display:none}

/* =========================================================
   film grain overlay — 署名の質感（全面・微細）
   ========================================================= */
.grain{
  position:fixed;inset:0;z-index:900;pointer-events:none;
  opacity:.05;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
@media (prefers-reduced-motion:reduce){.grain{display:none}}

/* progress bar */
#progress{
  position:fixed;top:0;left:0;height:2px;width:0;z-index:820;
  background:linear-gradient(90deg,var(--amber-soft),var(--amber-deep));
}

/* =========================================================
   header
   ========================================================= */
.site-head{
  position:fixed;top:0;left:0;width:100%;z-index:800;
  display:flex;align-items:center;justify-content:space-between;
  padding:clamp(16px,2.4vw,26px) var(--pad);
  transition:background .5s var(--ease),padding .5s var(--ease),box-shadow .5s;
}
.site-head.is-scrolled{
  background:rgba(244,238,227,.86);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  padding-top:clamp(11px,1.6vw,16px);padding-bottom:clamp(11px,1.6vw,16px);
  box-shadow:0 1px 0 var(--line-2);
}
.brand{
  font-family:var(--serif-en);
  font-size:1.7rem;letter-spacing:.14em;font-weight:500;
  color:var(--ink);line-height:1;
  transition:color .5s;
}
.brand .dot{color:var(--amber)}
.site-head:not(.is-scrolled).over-hero .brand{color:var(--cream)}
.site-head:not(.is-scrolled).over-hero .nav-links a{color:var(--cream-mute)}
.site-head:not(.is-scrolled).over-hero .nav-links a:hover{color:var(--cream)}
.site-head:not(.is-scrolled).over-hero .burger span{background:var(--cream)}

.nav{display:flex;align-items:center;gap:clamp(20px,2.6vw,40px)}
.nav-links{display:flex;gap:clamp(16px,1.7vw,26px)}
.nav-links a{
  font-family:var(--serif-en);
  font-size:.86rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-2);font-weight:500;position:relative;
  transition:color .4s;
}
.nav-links a::after{
  content:"";position:absolute;left:0;bottom:-5px;width:0;height:1px;
  background:var(--amber);transition:width .4s var(--ease);
}
.nav-links a:hover{color:var(--amber-deep)}
.nav-links a:hover::after{width:100%}
.head-cta{
  font-family:var(--sans-jp);font-size:.82rem;font-weight:600;letter-spacing:.12em;
  background:var(--amber);color:#fff;padding:.7em 1.5em;border-radius:999px;
  transition:transform .5s var(--ease),background .4s;
}
.head-cta:hover{background:var(--amber-deep);transform:translateY(-2px)}

.burger{display:none;flex-direction:column;gap:5px;width:30px;height:22px;justify-content:center;z-index:20}
.burger span{display:block;height:1.6px;width:100%;background:var(--ink);transition:transform .4s var(--ease),opacity .3s}
.burger.open span:nth-child(1){transform:translateY(6.6px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-6.6px) rotate(-45deg)}

/* drawer (mobile) */
.drawer{
  position:fixed;inset:0;z-index:790;
  background:var(--umber);
  color:var(--cream);
  padding:calc(clamp(14px,2.4vw,24px) + 52px) var(--pad) 28px;
  display:flex;flex-direction:column;
  transform:translateY(-100%);visibility:hidden;
  transition:transform .6s var(--ease),visibility .6s;
  overflow-y:auto;
}
.drawer.open{transform:translateY(0);visibility:visible}
.drawer-close{
  position:absolute;top:22px;right:var(--pad);
  width:42px;height:42px;border:1px solid rgba(241,233,219,.3);border-radius:50%;
  display:grid;place-items:center;
}
.drawer-close::before,.drawer-close::after{
  content:"";position:absolute;width:17px;height:1.4px;background:var(--cream);
}
.drawer-close::before{transform:rotate(45deg)}
.drawer-close::after{transform:rotate(-45deg)}
.drawer-nav{display:flex;flex-direction:column;gap:0;margin-top:4px}
.drawer-nav a{
  display:flex;align-items:baseline;gap:16px;
  padding:clamp(10px,1.6vh,15px) 0;border-bottom:1px solid rgba(241,233,219,.12);
}
.drawer-nav .n{font-family:var(--serif-en);font-size:.72rem;color:var(--amber-soft);letter-spacing:.2em;min-width:30px}
.drawer-nav .en{font-family:var(--serif-en);font-size:clamp(1.3rem,4.6vw,1.5rem);letter-spacing:.1em}
.drawer-nav .jp{font-size:.78rem;color:var(--cream-mute);margin-left:auto}
.drawer-foot{margin-top:auto;padding-top:20px;display:flex;flex-direction:column;gap:5px}
.drawer-foot a{font-size:.9rem;color:var(--cream-mute)}
.drawer-foot .tel{font-family:var(--serif-en);font-size:1.4rem;color:var(--cream);letter-spacing:.06em}

/* =========================================================
   hero
   ========================================================= */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;padding-top:clamp(84px,10vh,112px)}
.hero-media{position:absolute;inset:0;z-index:-2}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:60% center}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(28,23,18,.62) 0%,rgba(28,23,18,.18) 40%,rgba(28,23,18,.05) 68%,rgba(28,23,18,.22) 100%);
}
.hero-vignette{position:absolute;inset:0;z-index:-1;pointer-events:none;
  box-shadow:inset 0 0 220px 40px rgba(28,20,12,.4);}
.hero-inner{position:relative;z-index:1;width:100%;padding:0 var(--pad) clamp(56px,8vw,110px)}
.hero-inner .eyebrow{color:var(--amber-soft);margin-bottom:26px}
.hero h1{
  font-family:var(--serif-jp);color:var(--cream);
  font-weight:500;
  font-size:clamp(2.2rem,6.4vw,5.2rem);
  line-height:1.34;letter-spacing:.06em;
  text-shadow:0 2px 30px rgba(0,0,0,.3);
  max-width:16em;
}
.hero h1 .l{display:block;overflow:hidden}
.hero h1 .l>span{display:inline-block}
.hero-lead{
  color:var(--cream-mute);font-size:clamp(.95rem,1.5vw,1.08rem);
  margin-top:28px;max-width:30em;line-height:2;
}
.hero-cta{display:flex;gap:14px;margin-top:38px;flex-wrap:wrap}

/* =========================================================
   intro / about (二つの意味)
   ========================================================= */
.about{background:var(--paper)}
.about-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(40px,6vw,96px);align-items:center}
.about .meanings{display:flex;flex-direction:column;gap:26px;margin-top:34px}
.meaning{display:flex;gap:22px;align-items:flex-start;padding:22px 0;border-top:1px solid var(--line)}
.meaning .k{
  font-family:var(--serif-en);font-size:2.1rem;color:var(--amber);line-height:1;
  font-style:italic;min-width:1.4em;
}
.meaning h4{font-family:var(--serif-jp);font-size:1.16rem;font-weight:600;margin-bottom:8px;letter-spacing:.04em}
.meaning p{font-size:.95rem;color:var(--mute);line-height:1.95}
.about-figure{position:relative}
.about-figure img{width:100%;border-radius:4px;aspect-ratio:4/5;object-fit:cover;object-position:center}
.about-figure .cap{
  position:absolute;left:-14px;bottom:26px;
  background:var(--paper);padding:12px 20px;border-left:2px solid var(--amber);
  font-family:var(--serif-jp);font-size:.9rem;letter-spacing:.06em;box-shadow:0 18px 40px -22px rgba(43,38,32,.4);
}

/* =========================================================
   philosophy — 時の三幕（署名）
   ========================================================= */
.philo{background:var(--paper-2);border-top:1px solid var(--line-2)}
.philo-intro{max-width:var(--maxw-narrow);margin:0 auto;text-align:center}
.philo-intro .lead{margin-top:26px}
.philo-intro .accent{color:var(--amber-deep);font-weight:600}

/* sticky cross-fade stage */
.acts{position:relative;margin-top:clamp(50px,7vw,90px)}
.acts-track{height:340vh}
.acts-stage{
  position:sticky;top:0;height:100svh;overflow:hidden;
  display:grid;place-items:center;
}
.act-layer{position:absolute;inset:0;opacity:0;transition:opacity .7s var(--ease-soft)}
.act-layer.on{opacity:1}
.act-layer img{width:100%;height:100%;object-fit:cover}
.act-layer::after{content:"";position:absolute;inset:0;background:rgba(24,18,12,.32)}
.acts-stage .age-overlay{
  position:absolute;inset:0;pointer-events:none;z-index:2;
  background:radial-gradient(120% 90% at 50% 40%,transparent 40%,rgba(70,42,16,.0) 70%);
  transition:background .6s;
}
.acts-caption{position:relative;z-index:3;text-align:center;color:var(--cream);padding:0 var(--pad);max-width:30em}
.acts-caption .when{
  font-family:var(--serif-en);font-size:.9rem;letter-spacing:.4em;text-transform:uppercase;
  color:var(--amber-soft);display:block;margin-bottom:20px;
}
.acts-caption h3{
  font-family:var(--serif-jp);font-weight:500;font-size:clamp(1.7rem,4.4vw,3rem);
  line-height:1.4;letter-spacing:.05em;text-shadow:0 2px 24px rgba(0,0,0,.35);
}
.acts-caption p{margin-top:24px;color:var(--cream-mute);font-size:clamp(.92rem,1.4vw,1.04rem);line-height:2.05}
.acts-progress{
  position:absolute;left:50%;bottom:38px;transform:translateX(-50%);z-index:3;
  display:flex;gap:12px;align-items:center;
}
.acts-progress .dot{width:7px;height:7px;border-radius:50%;background:rgba(241,233,219,.35);transition:all .4s}
.acts-progress .dot.on{background:var(--amber-soft);transform:scale(1.5)}

.philo-closing{text-align:center;padding-top:clamp(56px,8vw,110px)}
.philo-closing blockquote{
  font-family:var(--serif-jp);font-weight:500;
  font-size:clamp(1.4rem,3.2vw,2.3rem);line-height:1.7;letter-spacing:.06em;
  color:var(--ink);text-wrap:balance;max-width:20em;margin:0 auto;
}
.philo-closing .sig{margin-top:24px;color:var(--mute);font-size:.9rem}

/* no-js fallback: show acts stacked */
.no-js .acts-track{height:auto}
.no-js .acts-stage{position:static;height:auto;display:block}
.no-js .act-layer{position:relative;opacity:1;height:70vh}
.no-js .acts-caption{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}

/* =========================================================
   gallery
   ========================================================= */
.gallery{background:var(--paper)}
.gal-grid{
  display:grid;grid-template-columns:repeat(12,1fr);
  gap:clamp(10px,1.3vw,18px);
}
.gal-item{position:relative;overflow:hidden;border-radius:3px;background:var(--paper-3)}
.gal-item img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--ease),filter 1.1s}
.gal-item:hover img{transform:scale(1.05)}
.gal-item .cap{
  position:absolute;left:0;bottom:0;right:0;
  padding:22px 20px 16px;color:#fff;
  background:linear-gradient(to top,rgba(24,18,12,.72),transparent);
  opacity:0;transform:translateY(10px);transition:opacity .5s,transform .5s var(--ease);
}
.gal-item:hover .cap{opacity:1;transform:translateY(0)}
.gal-item .cap .en{font-family:var(--serif-en);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--amber-soft)}
.gal-item .cap .jp{font-family:var(--serif-jp);font-size:1.02rem;margin-top:4px}
/* editorial spans */
.g-a{grid-column:span 7;aspect-ratio:3/2}
.g-b{grid-column:span 5;aspect-ratio:4/5}
.g-c{grid-column:span 5;aspect-ratio:4/5}
.g-d{grid-column:span 7;aspect-ratio:3/2}
.g-e{grid-column:span 4;aspect-ratio:4/5}
.g-f{grid-column:span 4;aspect-ratio:4/5}
.g-g{grid-column:span 4;aspect-ratio:4/5}
.g-h{grid-column:span 12;aspect-ratio:16/6}

/* =========================================================
   menu
   ========================================================= */
.menu{background:var(--umber);color:var(--cream)}
.menu .sec-title{color:var(--cream)}
.menu .sec-head .num{color:rgba(241,233,219,.5)}
.menu-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:1px;background:rgba(241,233,219,.14);
  border:1px solid rgba(241,233,219,.14);border-radius:4px;overflow:hidden;
}
.menu-card{
  background:var(--umber);padding:0;position:relative;overflow:hidden;
  transition:background .5s;
}
.menu-card .ph{aspect-ratio:4/3;overflow:hidden}
.menu-card .ph img{width:100%;height:100%;object-fit:cover;filter:saturate(.92);transition:transform 1s var(--ease)}
.menu-card:hover .ph img{transform:scale(1.06)}
.menu-card .body{padding:26px clamp(20px,2vw,30px) 32px}
.menu-card .cat-en{font-family:var(--serif-en);font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--amber-soft)}
.menu-card h3{font-family:var(--serif-jp);font-weight:600;font-size:1.3rem;margin:8px 0 4px;letter-spacing:.04em}
.menu-card .tag{font-size:.8rem;color:var(--amber-soft);font-style:italic;font-family:var(--serif-en);letter-spacing:.04em}
.menu-card p{font-size:.9rem;color:var(--cream-mute);line-height:1.9;margin-top:14px}

/* =========================================================
   price
   ========================================================= */
.price{background:var(--paper)}
.price-head-note{font-family:var(--serif-jp);color:var(--ink-2);margin-top:20px;font-size:1.05rem;line-height:2}
.price-table{border-top:1px solid var(--ink);margin-top:16px}
.price-row{
  display:grid;grid-template-columns:1.4fr 2fr auto;gap:24px;align-items:baseline;
  padding:26px 6px;border-bottom:1px solid var(--line);
}
.price-row .pname{font-family:var(--serif-jp);font-size:1.2rem;font-weight:600;letter-spacing:.03em}
.price-row .pname small{display:block;font-family:var(--serif-en);font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);font-weight:400;margin-top:6px}
.price-row .pdesc{font-size:.9rem;color:var(--mute);line-height:1.85}
.price-row .pval{font-family:var(--serif-en);font-size:1.7rem;color:var(--amber-deep);white-space:nowrap;letter-spacing:.02em}
.price-row .pval small{font-family:var(--sans-jp);font-size:.6em;color:var(--mute);margin-left:2px}
.price-assure{
  display:flex;flex-wrap:wrap;gap:14px;margin-top:36px;
}
.price-assure .pill{
  display:inline-flex;align-items:center;gap:9px;
  border:1px solid var(--line);border-radius:999px;padding:.6em 1.3em;
  font-size:.86rem;color:var(--ink-2);background:var(--paper-2);
}
.price-assure .pill b{color:var(--amber-deep);font-weight:600}
.price-fine{margin-top:22px;font-size:.78rem;color:var(--dim)}

/* =========================================================
   feature
   ========================================================= */
.feature{background:var(--paper-2);border-top:1px solid var(--line-2)}
.feat-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(40px,6vw,88px);align-items:center}
.feat-figure img{width:100%;border-radius:4px;aspect-ratio:3/2;object-fit:cover}
.feat-points{list-style:none;margin:30px 0 0}
.feat-points li{
  position:relative;padding:16px 0 16px 34px;border-bottom:1px solid var(--line);
  font-family:var(--serif-jp);font-size:1.08rem;color:var(--ink);letter-spacing:.03em;
}
.feat-points li::before{
  content:"";position:absolute;left:2px;top:24px;width:14px;height:1px;background:var(--amber);
}
.promises{margin-top:44px}
.promises .ttl{font-family:var(--serif-jp);font-size:1.05rem;font-weight:600;margin-bottom:14px;letter-spacing:.06em}
.promises ul{list-style:none;display:grid;gap:11px}
.promises li{position:relative;padding-left:26px;font-size:.94rem;color:var(--ink-2);line-height:1.85}
.promises li::before{content:"✓";position:absolute;left:0;top:1px;color:var(--amber-deep);font-size:.9em}

/* =========================================================
   flow
   ========================================================= */
.flow{background:var(--paper)}
.flow-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:0;counter-reset:step}
.flow-step{position:relative;padding:0 clamp(12px,1.6vw,22px)}
.flow-step:not(:last-child)::after{
  content:"";position:absolute;top:22px;right:0;width:100%;height:1px;
  background:var(--line);transform:translateX(50%);
}
.flow-step .no{
  position:relative;z-index:1;width:46px;height:46px;border-radius:50%;
  background:var(--paper);border:1px solid var(--amber);
  display:grid;place-items:center;
  font-family:var(--serif-en);font-size:1.05rem;color:var(--amber-deep);margin-bottom:24px;
}
.flow-step h4{font-family:var(--serif-jp);font-size:1.12rem;font-weight:600;margin-bottom:10px;letter-spacing:.04em}
.flow-step p{font-size:.86rem;color:var(--mute);line-height:1.85}

/* =========================================================
   faq
   ========================================================= */
.faq{background:var(--paper-2);border-top:1px solid var(--line-2)}
.faq-list{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item summary{
  list-style:none;cursor:pointer;padding:26px 50px 26px 44px;position:relative;
  font-family:var(--serif-jp);font-size:clamp(1.02rem,1.7vw,1.18rem);font-weight:600;
  color:var(--ink);letter-spacing:.03em;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary .q{position:absolute;left:2px;top:26px;font-family:var(--serif-en);color:var(--amber);font-style:italic;font-size:1.1rem}
.faq-item summary::after{
  content:"";position:absolute;right:6px;top:32px;width:14px;height:14px;
  background:
    linear-gradient(var(--amber-deep),var(--amber-deep)) center/14px 1.5px no-repeat,
    linear-gradient(var(--amber-deep),var(--amber-deep)) center/1.5px 14px no-repeat;
  transition:transform .4s var(--ease);
}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item .ans{padding:0 50px 30px 44px;position:relative}
.faq-item .ans .a{position:absolute;left:2px;top:0;font-family:var(--serif-en);color:var(--dim);font-style:italic;font-size:1.1rem}
.faq-item .ans p{color:var(--ink-2);font-size:.96rem;line-height:2}

/* =========================================================
   message
   ========================================================= */
.message{background:var(--umber);color:var(--cream);overflow:hidden}
.msg-grid{display:grid;grid-template-columns:0.85fr 1.15fr;gap:clamp(40px,6vw,90px);align-items:center}
.msg-figure{position:relative}
.msg-figure img{width:100%;border-radius:4px;aspect-ratio:4/5;object-fit:cover;filter:saturate(.95)}
.msg-body .eyebrow{color:var(--amber-soft)}
.msg-body h2{
  font-family:var(--serif-jp);font-weight:500;color:var(--cream);
  font-size:clamp(1.7rem,3.6vw,2.6rem);line-height:1.5;letter-spacing:.05em;margin:22px 0 30px;
  text-wrap:balance;
}
.msg-body .intro{color:var(--cream);font-family:var(--serif-jp);font-size:1.02rem;margin-bottom:22px}
.msg-body p{color:var(--cream-mute);font-size:.96rem;line-height:2.1;margin-bottom:18px}
.msg-sign{margin-top:34px;display:flex;align-items:baseline;gap:16px}
.msg-sign .role{font-size:.8rem;color:var(--cream-mute);letter-spacing:.1em}
.msg-sign .name{font-family:var(--serif-jp);font-size:1.5rem;color:var(--cream);letter-spacing:.14em}

/* =========================================================
   access / company
   ========================================================= */
.access{background:var(--paper)}
.access-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(40px,6vw,80px)}
.access-figure{overflow:hidden;border-radius:4px}
.access-figure img{width:100%;height:100%;object-fit:cover;aspect-ratio:16/10}
.company dl{margin-top:8px}
.company .row{
  display:grid;grid-template-columns:130px 1fr;gap:20px;
  padding:15px 0;border-bottom:1px solid var(--line);
}
.company dt{font-size:.8rem;color:var(--mute);letter-spacing:.08em;font-weight:600;padding-top:2px}
.company dd{font-size:.94rem;color:var(--ink);line-height:1.8}
.company dd .mail{color:var(--amber-deep)}

/* =========================================================
   reserve — 最終CTA
   ========================================================= */
.reserve{
  background:var(--umber-2);color:var(--cream);text-align:center;
  position:relative;overflow:hidden;
}
.reserve::before{
  content:"";position:absolute;inset:0;opacity:.16;
  background:radial-gradient(70% 120% at 50% 0%,var(--amber) 0%,transparent 55%);
}
.reserve .inner{position:relative;z-index:1}
.reserve .eyebrow{color:var(--amber-soft)}
.reserve h2{
  font-family:var(--serif-jp);font-weight:500;color:var(--cream);
  font-size:clamp(2rem,5.4vw,3.9rem);line-height:1.4;letter-spacing:.06em;margin:24px 0 20px;
  text-wrap:balance;
}
.reserve p{color:var(--cream-mute);max-width:30em;margin:0 auto 40px;line-height:2.05}
.reserve-cta{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;align-items:center}
.reserve-tel{font-family:var(--serif-en);font-size:1.05rem;color:var(--cream);letter-spacing:.08em}
.reserve-tel small{display:block;font-family:var(--sans-jp);font-size:.72rem;color:var(--cream-mute);letter-spacing:.16em;margin-top:4px}

/* =========================================================
   footer
   ========================================================= */
.site-foot{background:var(--umber);color:var(--cream-mute);padding:clamp(56px,7vw,88px) 0 34px;border-top:1px solid rgba(241,233,219,.1)}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding-bottom:44px;border-bottom:1px solid rgba(241,233,219,.12)}
.foot-brand .b{font-family:var(--serif-en);font-size:2.4rem;color:var(--cream);letter-spacing:.14em}
.foot-brand .b .dot{color:var(--amber)}
.foot-brand p{margin-top:16px;font-size:.86rem;line-height:1.9;max-width:24em}
.foot-col h5{font-family:var(--serif-en);font-size:.78rem;letter-spacing:.24em;text-transform:uppercase;color:var(--amber-soft);margin-bottom:16px}
.foot-col a,.foot-col p{display:block;font-size:.88rem;color:var(--cream-mute);padding:4px 0;transition:color .3s}
.foot-col a:hover{color:var(--cream)}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:26px;flex-wrap:wrap;gap:10px}
.foot-bottom small{font-size:.76rem;letter-spacing:.06em}
.foot-bottom .credit{font-family:var(--serif-en);letter-spacing:.16em;font-size:.72rem}

/* =========================================================
   mobile bottom CTA bar
   ========================================================= */
.mbar{
  position:fixed;left:0;bottom:0;width:100%;z-index:700;display:none;
  grid-template-columns:1fr 1fr;
  background:rgba(36,30,24,.96);backdrop-filter:blur(8px);
  padding:9px 12px calc(9px + env(safe-area-inset-bottom));gap:9px;
  box-shadow:0 -6px 22px -14px rgba(0,0,0,.6);
}
.mbar a{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:.85em;border-radius:999px;font-size:.86rem;font-weight:600;letter-spacing:.06em;
}
.mbar .tel{background:transparent;border:1px solid rgba(241,233,219,.35);color:var(--cream)}
.mbar .rsv{background:var(--amber);color:#fff}

/* =========================================================
   reveal
   ========================================================= */
.reveal{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal[data-d="1"]{transition-delay:.08s}
.reveal[data-d="2"]{transition-delay:.16s}
.reveal[data-d="3"]{transition-delay:.24s}
.reveal[data-d="4"]{transition-delay:.32s}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .loader-mark .wm,.loader-mark .sub{animation:none;opacity:1;filter:none}
}

/* =========================================================
   responsive
   ========================================================= */
/* short-height desktop/laptop: keep hero clear of header */
@media (min-width:681px) and (max-height:840px){
  .hero h1{font-size:clamp(2rem,4.4vw,3.5rem);line-height:1.3}
  .hero-inner .eyebrow{margin-bottom:16px}
  .hero-lead{margin-top:18px;line-height:1.9}
  .hero-cta{margin-top:26px}
  .hero-inner{padding-bottom:clamp(40px,6vw,72px)}
}

@media (max-width:1100px){
  .nav-links{display:none}
  .burger{display:flex}
  .head-cta{display:none}
}
@media (max-width:980px){
  .about-grid,.feat-grid,.msg-grid,.access-grid{grid-template-columns:1fr}
  .about-figure{order:-1;max-width:440px}
  .msg-figure{max-width:400px}
  .menu-grid{grid-template-columns:repeat(2,1fr)}
  .flow-steps{grid-template-columns:repeat(2,1fr);gap:34px 20px}
  .flow-step:not(:last-child)::after{display:none}
  .foot-top{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
}
@media (max-width:820px){
  .price-row{grid-template-columns:1fr auto;gap:8px 18px}
  .price-row .pdesc{grid-column:1/-1;order:3}
}
@media (max-width:680px){
  body{font-size:15px}
  .mbar{display:grid}
  main{padding-bottom:64px}
  /* mobile hero : 画像上 / 文字下 に分割 */
  .hero{min-height:auto;display:block}
  .hero-media{position:relative;height:auto}
  .hero-media img{aspect-ratio:4/5;height:auto;object-position:60% 30%}
  .hero-media::after{background:linear-gradient(to top,rgba(28,23,18,.4),transparent 55%)}
  .hero-vignette{display:none}
  .hero-inner{background:var(--paper);padding:36px var(--pad) 44px}
  .hero-inner .eyebrow{color:var(--amber-deep)}
  .hero h1{color:var(--ink);text-shadow:none;font-size:clamp(1.9rem,8vw,2.6rem);line-height:1.5}
  .hero-lead{color:var(--mute)}
  .gal-grid{grid-template-columns:repeat(2,1fr)}
  .g-a,.g-d,.g-h{grid-column:span 2;aspect-ratio:3/2}
  .g-b,.g-c,.g-e,.g-f,.g-g{grid-column:span 1;aspect-ratio:4/5}
  .gal-item .cap{opacity:1;transform:none;padding:14px 14px 12px}
  .menu-grid{grid-template-columns:1fr}
  .company .row{grid-template-columns:100px 1fr;gap:14px}
  .acts-track{height:300vh}
}
@media (max-width:460px){
  .flow-steps{grid-template-columns:1fr;gap:26px}
  .reserve-cta{flex-direction:column}
  .foot-top{grid-template-columns:1fr}
}
