@charset "UTF-8";
/* =========================================================
   芸森ワーサム WEDDING PHOTO ｜ 和モダン・縦組み
   カラートークンは wa-samu / cabin-lp の系統を踏襲
   ========================================================= */

:root{
  --bg:        #faf8f4;   /* 生成り */
  --bg-alt:    #f2efe8;   /* 薄砂 */
  --bg-deep:   #eae5da;
  --ink:       #23241f;   /* 墨 */
  --ink-sub:   #55574e;
  --ink-mute:  #8a8d82;
  --line:      #d9d5ca;
  --line-soft: #e7e3d9;
  --night:     #14140f;   /* 夜 */
  --night-2:   #1c1c16;
  --night-ink: #e8e4da;
  --night-mute:#9a978c;
  --night-line:rgba(232,228,218,.18);

  --serif: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --sans:  "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  --latin: "Cormorant Garamond", Georgia, serif;

  --hd-h: 76px;
  --gutter: 24px;
  --wrap: 1120px;
}

*{ margin:0; padding:0; box-sizing:border-box; }
html,body{ overflow-x:clip; }
html{ scroll-behavior:smooth; }
body{
  font-family:var(--sans);
  font-size:15px;
  font-weight:400;
  line-height:2.0;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-feature-settings:"palt" 1;
}
img{ display:block; width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }

section[id]{ scroll-margin-top:calc(var(--hd-h) + 10px); }
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 var(--gutter); }
.wrap--narrow{ max-width:840px; }

/* ---------- 日本語の折り返し ---------- */
/* Chrome 119+ は文節（自立語＋付属語）単位で改行する。非対応ブラウザは無視されるだけ */
p, dd, dt, li, figcaption, .lead, .note{
  word-break:auto-phrase;
  line-break:strict;
  overflow-wrap:anywhere;
}
h1, h2, h3, h4, .h-yoko, .plan__name, .pg__name{
  word-break:auto-phrase;
  line-break:strict;
  text-wrap:pretty;
}

/* ---------- 縦組みユーティリティ ---------- */
.tate{
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-family:var(--serif);
  font-feature-settings:"palt" 0;
  line-height:1.85;
  letter-spacing:.14em;
}

/* ---------- セクションラベル（縦組み・罫線付き） ---------- */
.slabel{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  flex:0 0 auto;
}
.slabel__en{
  font-family:var(--latin);
  font-size:12px;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--ink-mute);
  writing-mode:vertical-rl;
  text-orientation:sideways;
}
.slabel__rule{ width:1px; height:30px; background:var(--line); }
.slabel__jp{
  writing-mode:vertical-rl;
  font-family:var(--serif);
  font-size:12px;
  letter-spacing:.24em;
  color:var(--ink-sub);
}

/* 横組みラベル：単独のセクション見出し用（Concept ── 三つの理由） */
.slabel--yoko{
  flex-direction:row;
  align-items:center;
  gap:14px;
  width:max-content;
}
.slabel--yoko .slabel__en{
  writing-mode:horizontal-tb;
  text-orientation:mixed;
  font-size:12.5px;
  letter-spacing:.32em;
}
.slabel--yoko .slabel__rule{ width:26px; height:1px; }
.slabel--yoko .slabel__jp{
  writing-mode:horizontal-tb;
  font-size:12px;
  letter-spacing:.22em;
}

/* ---------- 見出し ---------- */
.h-tate{
  writing-mode:vertical-rl;
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(21px,2.5vw,30px);
  line-height:1.9;
  letter-spacing:.16em;
  color:var(--ink);
}
.h-yoko{
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(19px,2.2vw,26px);
  line-height:1.9;
  letter-spacing:.1em;
}
.lead{
  font-size:15px;
  line-height:2.2;
  color:var(--ink-sub);
  letter-spacing:.04em;
}
.note{
  font-size:12.5px;
  line-height:1.95;
  color:var(--ink-mute);
  letter-spacing:.03em;
}
.num{
  font-family:var(--latin);
  font-variant-numeric:lining-nums tabular-nums;
  font-weight:300;
  font-style:italic;
  color:var(--ink-mute);
  letter-spacing:.06em;
}

/* ---------- reveal ---------- */
.rv{ opacity:0; transform:translateY(18px); transition:opacity 1s ease, transform 1s cubic-bezier(.22,1,.36,1); }
.rv.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .rv{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}

/* =========================================================
   LOADER
   ========================================================= */
.loader{
  position:fixed; inset:0; z-index:300;
  background:var(--bg);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .8s ease;
}
.loader.is-hiding{ opacity:0; }
.loader.is-hidden{ display:none; }
.loader__text{
  writing-mode:vertical-rl;
  font-family:var(--serif);
  font-size:16px;
  letter-spacing:.5em;
  color:var(--ink);
  opacity:0;
  animation:ld-in 1.1s cubic-bezier(.22,1,.36,1) .15s forwards, ld-out .6s ease 1.6s forwards;
}
@keyframes ld-in{ from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:none;} }
@keyframes ld-out{ to{ opacity:0; } }
body.is-loading{ overflow:hidden; }

/* =========================================================
   HEADER
   ========================================================= */
.hd{
  position:sticky; top:0; z-index:100;
  padding:19px 0;
  background:var(--bg);
  border-bottom:1px solid transparent;
  transition:padding .45s ease, border-color .45s ease;
}
.hd.is-solid{
  border-bottom-color:var(--line-soft);
  padding:13px 0;
}
.hd__inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; }
.hd__logo{ display:block; }
.hd__logo-en,.hd__logo-jp{ display:block; }
.hd__logo-en{
  font-family:var(--latin);
  font-size:15px; letter-spacing:.26em; text-transform:uppercase;
  line-height:1.2;
}
.hd__logo-jp{ font-size:9.5px; letter-spacing:.34em; color:var(--ink-mute); margin-top:3px; }
.hd__nav{ display:flex; align-items:center; gap:30px; }
.hd__link{ font-size:12.5px; letter-spacing:.2em; color:var(--ink-sub); transition:color .3s; }
.hd__link:hover{ color:var(--ink); }
.hd__cta{
  font-size:12px; letter-spacing:.2em;
  border:1px solid var(--ink); color:var(--ink);
  padding:10px 22px; transition:background .35s, color .35s;
}
.hd__cta:hover{ background:var(--ink); color:var(--bg); }
.hd__burger{ display:none; width:26px; height:14px; position:relative; }
.hd__burger span{ position:absolute; left:0; width:100%; height:1px; background:var(--ink); transition:transform .35s, opacity .25s; }
.hd__burger span:nth-child(1){ top:0; }
.hd__burger span:nth-child(2){ bottom:0; }
.hd__burger.is-open span:nth-child(1){ top:6px; transform:rotate(28deg); }
.hd__burger.is-open span:nth-child(2){ bottom:7px; transform:rotate(-28deg); }

/* drawer */
.dw{
  position:fixed; inset:0; z-index:99;
  background:var(--bg);
  padding:96px var(--gutter) 40px;
  display:flex; flex-direction:column; justify-content:space-between;
  opacity:0; visibility:hidden; transition:opacity .4s ease, visibility .4s;
}
.dw.is-open{ opacity:1; visibility:visible; }
.dw__list{ display:flex; flex-direction:column; }
.dw__item{ border-bottom:1px solid var(--line-soft); padding:18px 2px; display:flex; align-items:baseline; gap:16px; }
.dw__en{ font-family:var(--latin); font-size:19px; letter-spacing:.14em; min-width:104px; }
.dw__jp{ font-size:10.5px; letter-spacing:.24em; color:var(--ink-mute); }
.dw__cta{ display:block; text-align:center; border:1px solid var(--ink); padding:16px; font-size:12px; letter-spacing:.24em; margin-top:28px; }

/* =========================================================
   FV
   ========================================================= */
.fv{
  position:relative;
  min-height:calc(100svh - var(--hd-h));
  display:grid;
  grid-template-columns:1fr minmax(300px,.86fr) 1fr;
  align-items:stretch;
}
.fv__img{ position:relative; overflow:hidden; }
.fv__col--left{ display:grid; grid-template-rows:1.42fr .58fr; overflow:hidden; min-height:0; }
.fv__col--stack{ display:grid; grid-template-rows:.82fr 1.18fr; overflow:hidden; min-height:0; }
.fv__col--left .fv__img,
.fv__col--stack .fv__img{ min-height:0; }
.fv__img--green img{ animation:none; object-position:center 40%; }
.fv__img--ice img{ animation:none; }
.fv__img--night img{ object-position:center 32%; }
.fv__img img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.fv__img--day img{ animation:fv-zoom 16s ease-out forwards; }
@keyframes fv-zoom{ from{ transform:scale(1.06); } to{ transform:scale(1); } }
.fv__img::after{
  content:""; position:absolute; inset:0;
  background:rgba(35,36,31,.06);
}
.fv__center{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  padding:56px 20px 60px;
  background:var(--bg);
}
.fv__en{
  font-family:var(--latin);
  font-size:11px; letter-spacing:.42em; text-transform:uppercase;
  color:var(--ink-mute);
  margin-bottom:26px;
}
.fv__main{
  writing-mode:vertical-rl;
  font-family:var(--serif);
  font-weight:500;
  font-size:clamp(23px,2.3vw,30px);
  line-height:2.15;
  letter-spacing:.18em;
  height:12.3em;
}
.fv__rule{ width:1px; height:22px; background:var(--line); margin:22px 0 18px; }
.fv__sub{
  font-size:13px; letter-spacing:.08em; color:var(--ink-sub); text-align:center; line-height:1.95;
}

/* =========================================================
   INTRO
   ========================================================= */
.intro{ padding:110px 0 100px; }
.intro__grid{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.78fr);
  gap:64px; align-items:start;
}
.intro__body{ display:flex; gap:44px; justify-content:flex-end; }
.intro__h{ height:9.8em; }
.intro__text{ max-width:440px; padding-top:6px; }
.intro__text p + p{ margin-top:1.6em; }
.intro__fig figcaption{ margin-top:12px; }

/* =========================================================
   CONCEPT
   ========================================================= */
.concept{ padding:96px 0 104px; background:var(--bg-alt); }
.concept__head{ display:flex; justify-content:center; margin-bottom:56px; }
.concept__item{
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:52px; align-items:center;
  padding:44px 0;
  border-top:1px solid var(--line);
}
.concept__item:last-child{ border-bottom:1px solid var(--line); }
.concept__item--rev .concept__fig{ order:2; }
.concept__fig img{ height:clamp(300px,38vw,470px); object-fit:cover; }
.concept__body{ display:flex; gap:30px; align-items:flex-start; }
.concept__num{ font-size:30px; line-height:1; padding-top:4px; }
.concept__h{ height:auto; margin-bottom:0; }
/* 罫線の幅いっぱいまで使う。max-width で内側に止めると、
   画像の下に走る罫線と本文の右端が揃わなくなる */
.concept__txt{ flex:1; min-width:0; }
.concept__txt h3{
  font-family:var(--serif); font-weight:500; font-size:20px;
  letter-spacing:.1em; line-height:1.85; margin-bottom:16px;
}
.concept__tag{
  display:inline-block; font-size:11.5px; letter-spacing:.26em;
  color:var(--ink-mute); margin-bottom:14px;
}

/* =========================================================
   SEASON : WINTER (夜)
   ========================================================= */
.winter{ background:var(--night); color:var(--night-ink); padding:0 0 104px; }
.winter__hero{ position:relative; height:min(78vh,660px); overflow:hidden; }
.winter__hero img{ width:100%; height:100%; object-fit:cover; }
.winter__hero::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(20,20,15,.34) 0%,rgba(20,20,15,0) 34%,rgba(20,20,15,.72) 100%); }
.winter__heroTxt{
  position:absolute; z-index:2; right:clamp(24px,6vw,86px); top:clamp(48px,9vh,96px);
  display:flex; flex-direction:row-reverse; gap:26px; align-items:flex-start;
}
.winter__heroTxt .h-tate{ color:var(--night-ink); height:7.6em; }
.winter__season{
  writing-mode:vertical-rl; font-family:var(--latin);
  font-size:11px; letter-spacing:.4em; text-transform:uppercase; color:var(--night-mute);
}
.winter__body{ padding-top:58px; }
/* リード文は下の罫線（.winter__list の border-top）の幅で折り返す。
   max-width で内側に止めると罫線と右端が揃わない */
.winter__intro{ margin-bottom:56px; }
.winter .lead{ color:#c5c1b6; }
.winter .note{ color:var(--night-mute); }
.winter__list{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 52px; }
.winter__li{ padding:26px 0; border-top:1px solid var(--night-line); display:flex; gap:22px; align-items:baseline; }
.winter__li .num{ color:var(--night-mute); font-size:16px; }
.winter__li h4{ font-family:var(--serif); font-weight:500; font-size:17px; letter-spacing:.1em; margin-bottom:8px; }
.winter__li p{ font-size:13.5px; line-height:2.05; color:#b4b0a6; }
/* ICE FOREST（氷のバーカウンター） */
.wfeat{ margin-top:74px; padding-top:46px; border-top:1px solid var(--night-line); }
.wfeat__head{ display:grid; grid-template-columns:minmax(0,.72fr) minmax(0,1fr); gap:56px; align-items:end; margin-bottom:26px; }
.wfeat__label{
  font-family:var(--latin); font-style:italic; font-size:26px; font-weight:300;
  letter-spacing:.08em; color:var(--night-mute); margin-bottom:10px;
}
.wfeat__h{ font-family:var(--serif); font-weight:500; font-size:21px; letter-spacing:.12em; color:var(--night-ink); }
.wfeat__imgs{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }

.winter__gal{ display:grid; grid-template-columns:repeat(12,1fr); gap:14px; margin-top:76px; }
.winter__gal figure:nth-child(1){ grid-column:1 / span 5; }
.winter__gal figure:nth-child(2){ grid-column:6 / span 3; align-self:end; }
.winter__gal figure:nth-child(3){ grid-column:9 / span 4; align-self:center; }
.winter__gal img{ filter:saturate(.96); }

/* =========================================================
   SEASON : GREEN
   ========================================================= */
.green{ background:var(--bg); padding:0 0 100px; }
.green__hero{ position:relative; height:min(74vh,620px); overflow:hidden; }
.green__hero img{ width:100%; height:100%; object-fit:cover; }
.green__hero::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(90deg,rgba(20,20,15,.62) 0%,rgba(20,20,15,.14) 38%,rgba(20,20,15,0) 56%),
    linear-gradient(180deg,rgba(20,20,15,.30) 0%,rgba(20,20,15,0) 42%,rgba(20,20,15,.34) 100%);
}
.green__heroTxt{
  position:absolute; z-index:2; left:clamp(24px,6vw,86px); top:clamp(48px,9vh,96px);
  display:flex; gap:26px; align-items:flex-start;
}
.green__heroTxt .h-tate{ color:#fbfaf6; height:7.6em; text-shadow:0 1px 18px rgba(20,20,15,.72); }
.green__season{
  writing-mode:vertical-rl; font-family:var(--latin);
  font-size:11px; letter-spacing:.4em; text-transform:uppercase; color:rgba(251,250,246,.8);
  text-shadow:0 1px 16px rgba(20,20,15,.72);
}
.green__body{ padding-top:58px; }
/* ↑ .winter__intro と同じ。罫線（.green__list の border-top）の幅で折り返す */
.green__intro{ margin-bottom:56px; }
.green__list{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 52px; }
.green__li{ padding:26px 0; border-top:1px solid var(--line); display:flex; gap:22px; align-items:baseline; }
.green__li .num{ color:var(--ink-mute); font-size:16px; }
.green__li h4{ font-family:var(--serif); font-weight:500; font-size:17px; letter-spacing:.1em; margin-bottom:8px; }
.green__li p{ font-size:13.5px; line-height:2.05; color:var(--ink-sub); }
/* 和装 ／ タイニーホテル（WINTER の .wfeat と同じ組みの明るい版） */
.gfeat{ margin-top:74px; padding-top:46px; border-top:1px solid var(--line); }
.gfeat__head{ display:grid; grid-template-columns:minmax(0,.72fr) minmax(0,1fr); gap:56px; align-items:end; margin-bottom:26px; }
.gfeat__label{
  font-family:var(--latin); font-style:italic; font-size:26px; font-weight:300;
  letter-spacing:.08em; color:var(--ink-mute); margin-bottom:10px;
}
.gfeat__h{ font-family:var(--serif); font-weight:500; font-size:21px; letter-spacing:.12em; line-height:1.7; }
.gfeat__imgs{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.green__gal{ display:grid; grid-template-columns:repeat(12,1fr); gap:14px; margin-top:76px; }
.green__gal figure:nth-child(1){ grid-column:1 / span 5; }
.green__gal figure:nth-child(2){ grid-column:6 / span 3; align-self:end; }
.green__gal figure:nth-child(3){ grid-column:9 / span 4; align-self:center; }
.green__note{ margin-top:26px; text-align:right; }

/* =========================================================
   GALLERY
   ========================================================= */
.gal{ padding:100px 0 104px; background:var(--bg-alt); }
.gal__head{ display:flex; justify-content:center; margin-bottom:46px; }
.gal__note{ text-align:center; margin-top:34px; }

/* 2段オートスクロール（左右逆方向） */
.mq{ display:flex; flex-direction:column; gap:14px; }
.mq__row{ overflow:hidden; }
.mq__track{
  display:flex;
  width:max-content;
  animation:mq-left 58s linear infinite;
  will-change:transform;
}
.mq__row--rev .mq__track{ animation-name:mq-right; animation-duration:70s; }
.mq__track figure{ flex:0 0 auto; margin-right:14px; }
.mq__track img{
  height:clamp(200px,20vw,280px);
  width:auto;
  max-width:none;
}
@keyframes mq-left  { from{ transform:translateX(0); }    to{ transform:translateX(-50%); } }
@keyframes mq-right { from{ transform:translateX(-50%); } to{ transform:translateX(0); } }
@media (prefers-reduced-motion:reduce){
  .mq__track{ animation:none; }
  .mq__row{ overflow-x:auto; }
}

/* =========================================================
   PHOTOGRAPHERS（撮影者一覧）
   ========================================================= */
.pg{ padding:104px 0; background:var(--bg); }
.pg__head{
  display:flex; justify-content:space-between; align-items:flex-end;
  gap:56px; margin-bottom:54px; padding-bottom:28px;
  border-bottom:1px solid var(--line);
}
.pg__intro{ max-width:540px; }
.pg__list{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:48px 32px; }
/* 2名のとき：カードの大きさは3列時のまま、中央に寄せる */
.pg__list--2{ grid-template-columns:repeat(2,minmax(0,1fr)); max-width:calc((100% - 64px) / 3 * 2 + 32px); margin-inline:auto; }
.pg__slot{
  aspect-ratio:4/5;
  background:var(--bg-deep);
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center;
}
.pg__slot span{
  font-family:var(--latin); font-size:11.5px; letter-spacing:.3em;
  color:var(--ink-mute); text-align:center;
}
/* 紹介文の長さが違っても「この撮影者の作例」の線を横一列にそろえる */
.pg__item{ display:flex; flex-direction:column; }
.pg__item img{ aspect-ratio:4/5; object-fit:cover; }
.pg__name{
  font-family:var(--serif); font-weight:500; font-size:18px;
  letter-spacing:.12em; margin:20px 0 6px; line-height:1.7;
}
.pg__roman{ font-family:var(--latin); font-variant-numeric:lining-nums; font-style:italic; font-size:12.5px; letter-spacing:.2em; color:var(--ink-mute); }
.pg__bio{ margin-top:14px; margin-bottom:22px; font-size:13px; }
/* 撮影者ごとの作例サムネイル */
.pg__works{ margin-top:auto; padding-top:18px; border-top:1px solid var(--line-soft); }
.pg__works-ttl{ font-size:11.5px; letter-spacing:.2em; color:var(--ink-mute); margin-bottom:10px; }
.pg__thumbs{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.pg__thumbs li:nth-child(n+4){ display:none; }
.pg__thumb{
  display:block; width:100%; padding:0; overflow:hidden;
  background:var(--bg-deep); cursor:pointer;
}
.pg__thumb img{ aspect-ratio:1/1; object-fit:cover; transition:opacity .35s ease, transform .6s cubic-bezier(.22,1,.36,1); }
.pg__thumb:hover img{ opacity:.82; transform:scale(1.04); }
.pg__thumb:focus-visible{ outline:1px solid var(--ink); outline-offset:2px; }
.pg__all{
  display:inline-block; margin-top:14px; padding:0 0 3px;
  font-size:12.5px; letter-spacing:.14em; color:var(--ink-sub);
  border-bottom:1px solid var(--line); transition:color .3s, border-color .3s;
}
.pg__all:hover{ color:var(--ink); border-bottom-color:var(--ink-mute); }

/* border-top を持つ要素なので max-width を入れると罫線自体が途中で切れる。
   すぐ下の .pg__foot の罫線と長さが揃わなくなるので入れないこと */
.pg__note{ margin-top:52px; padding-top:26px; border-top:1px solid var(--line); }
.pg__note strong{ font-weight:500; }
.pg__foot{ margin-top:26px; padding-top:20px; border-top:1px solid var(--line-soft); }

/* =========================================================
   PLAN
   ========================================================= */
.plan{ padding:104px 0; background:var(--bg-alt); }
.plan__head{ display:flex; justify-content:center; margin-bottom:42px; }
/* PLAN・OPTION のバッジは同じ寸法に揃える（.opt__badge と対） */
.plan .plan__badge{
  display:block; width:max-content; min-width:240px; margin:0 auto 34px;
  border:1px solid var(--ink); padding:11px 26px;
  font-size:11.5px; letter-spacing:.22em;
  text-align:center; text-indent:.22em;
}
/* 2シーズン比較表 */
.ptable{ max-width:760px; margin:0 auto; }
.ptable__head{
  display:grid; grid-template-columns:minmax(0,1fr) 158px 158px;
  gap:20px; align-items:end;
  padding-bottom:14px; border-bottom:1px solid var(--ink);
}
.ptable__season{ text-align:right; }
.ptable__en{
  display:block; font-family:var(--latin); font-size:14px;
  letter-spacing:.24em; text-transform:uppercase; color:var(--ink);
}
.ptable__jp{ display:block; font-size:11px; letter-spacing:.14em; color:var(--ink-mute); margin-top:4px; }
.ptable__row{
  display:grid; grid-template-columns:minmax(0,1fr) 158px 158px;
  gap:20px; align-items:baseline;
  padding:26px 0; border-bottom:1px solid var(--line-soft);
}
.ptable__name p{ font-family:var(--serif); font-size:19px; letter-spacing:.1em; line-height:1.6; }
.ptable__name span{ display:block; font-size:12.5px; color:var(--ink-mute); letter-spacing:.04em; margin-top:5px; }
.ptable__price small{ font-size:15px; margin-left:4px; letter-spacing:.04em; }
.ptable__price{
  text-align:right; white-space:nowrap;
  font-family:var(--latin); font-size:29px; font-weight:400;
  font-variant-numeric:lining-nums tabular-nums; letter-spacing:.01em; color:var(--ink);
}

/* 料金に含まれるもの（表と同じ幅・同じ罫線の流儀で） */
.pinc{ max-width:760px; margin:40px auto 0; }
.pinc__ttl{ font-family:var(--serif); font-size:15px; letter-spacing:.14em; padding-bottom:12px; border-bottom:1px solid var(--ink); }
.pinc__row{
  display:grid; grid-template-columns:120px minmax(0,1fr); gap:20px; align-items:baseline;
  padding:15px 0; border-bottom:1px solid var(--line-soft);
}
.pinc__row dt{ font-size:12.5px; letter-spacing:.12em; color:var(--ink-mute); }
.pinc__row dd{ font-size:14.5px; letter-spacing:.06em; line-height:1.8; }
.pinc__row dd small{ display:block; font-size:12px; color:var(--ink-mute); letter-spacing:.04em; }
.pinc + .plan__foot{ margin-top:26px; }

/* OPTION：1列のメニュー表 */
.opt{ padding:96px 0 104px; background:var(--bg); }
.opt__head{ display:flex; justify-content:center; margin-bottom:26px; }
/* ↑ .plan__badge と寸法を揃えること（片方だけ触らない） */
.opt .opt__badge{
  display:block; width:max-content; min-width:240px; margin:0 auto 40px;
  border:1px solid var(--ink); padding:11px 26px;
  font-size:11.5px; letter-spacing:.22em;
  text-align:center; text-indent:.22em;
}
.omenu{ max-width:860px; margin:0 auto; border-top:1px solid var(--ink); }
.omenu__row{
  display:grid; grid-template-columns:minmax(0,1fr) 112px 210px;
  gap:24px; align-items:start;
  padding:26px 0; border-bottom:1px solid var(--line-soft);
}
.omenu__name{ font-size:15.5px; font-weight:500; letter-spacing:.06em; line-height:1.7; }
.omenu__desc{ font-size:12.5px; color:var(--ink-mute); line-height:2; margin-top:6px; }
/* 通年／グリーン／ウィンターで字数が違うが、箱は同じ幅に固定して1行表示 */
.omenu__tag{
  justify-self:start; margin-top:3px;
  min-width:112px; text-align:center; text-indent:.14em;
  font-size:10.5px; letter-spacing:.14em; color:var(--ink-mute);
  border:1px solid var(--line); padding:5px 8px; white-space:nowrap;
}
.omenu__price{
  text-align:right; white-space:nowrap;
  font-family:var(--latin); font-size:15px; font-weight:400;
  font-variant-numeric:lining-nums tabular-nums; letter-spacing:.04em; color:var(--ink);
}
.omenu__price b{ font-size:27px; font-weight:400; letter-spacing:0; }
.omenu__price span{
  display:block; margin-top:6px;
  font-family:var(--sans); font-size:11.5px; letter-spacing:.02em;
  color:var(--ink-mute); line-height:1.8; white-space:normal;
}

/* =========================================================
   FLOW
   ========================================================= */
.flow{ padding:104px 0; background:var(--bg-alt); }
.flow__head{ display:flex; justify-content:center; margin-bottom:48px; }
.flow__list{ max-width:760px; margin:0 auto; }
.flow__item{ display:grid; grid-template-columns:86px 1fr; gap:28px; padding:30px 0; border-top:1px solid var(--line-soft); }
.flow__item .lead{ max-width:560px; }
.flow__item:last-child{ border-bottom:1px solid var(--line-soft); }
.flow__kan{ font-family:var(--serif); font-size:16px; letter-spacing:.2em; color:var(--ink-mute); padding-top:2px; }
.flow__item h4{ font-family:var(--serif); font-weight:500; font-size:18px; letter-spacing:.1em; margin-bottom:10px; }

/* =========================================================
   FAQ
   ========================================================= */
.faq{ padding:100px 0; background:var(--bg); }
.faq__head{ display:flex; justify-content:center; margin-bottom:44px; }
.faq__list{ max-width:760px; margin:0 auto; border-top:1px solid var(--line); }
.faq__item{ border-bottom:1px solid var(--line-soft); }
.faq__q{
  width:100%; text-align:left; padding:24px 40px 24px 4px;
  font-size:14.5px; letter-spacing:.04em; position:relative; line-height:1.85;
}
.faq__q::before{ content:"Q"; font-family:var(--latin); font-style:italic; color:var(--ink-mute); margin-right:14px; }
.faq__mark{ position:absolute; right:6px; top:50%; width:11px; height:1px; background:var(--ink-mute); }
.faq__mark::after{ content:""; position:absolute; inset:0; background:var(--ink-mute); transform:rotate(90deg); transition:transform .35s ease; }
.faq__item.is-open .faq__mark::after{ transform:rotate(0); }
.faq__a{ max-height:0; overflow:hidden; transition:max-height .4s ease; }
.faq__a-in{ padding:0 40px 26px 30px; font-size:13.5px; line-height:2.1; color:var(--ink-sub); max-width:620px; }

/* =========================================================
   ACCESS
   ========================================================= */
.access{ padding:100px 0 104px; background:var(--bg-alt); }
.access__grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.92fr); gap:56px; align-items:center; }
.access__map{ width:100%; aspect-ratio:4/3; border:1px solid var(--line); filter:grayscale(1) contrast(1.02); }
.access__map iframe{ width:100%; height:100%; border:0; display:block; }
.access__dl{ border-top:1px solid var(--line); margin-top:26px; }
.access__dl > div{ display:grid; grid-template-columns:92px 1fr; gap:18px; padding:16px 2px; border-bottom:1px solid var(--line-soft); }
.access__dl dt{ font-size:12px; letter-spacing:.2em; color:var(--ink-mute); }
.access__dl dd{ font-size:13.5px; line-height:2; }

/* =========================================================
   CTA
   ========================================================= */
.cta{ position:relative; padding:130px 0; text-align:center; color:#f2efe6; overflow:hidden; }
.cta__bg{ position:absolute; inset:0; z-index:0; }
.cta__bg img{ width:100%; height:100%; object-fit:cover; }
.cta__bg::after{ content:""; position:absolute; inset:0; background:rgba(16,16,12,.5); }
.cta__in{ position:relative; z-index:1; }
.cta__h{ font-family:var(--serif); font-size:clamp(20px,2.4vw,27px); letter-spacing:.18em; line-height:2; margin-bottom:20px; }
.cta__p{ font-size:13.5px; letter-spacing:.08em; color:rgba(242,239,230,.8); line-height:2.1; margin-bottom:38px; }
.cta__btns{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.cta__btn{ border:1px solid rgba(242,239,230,.7); padding:16px 42px; font-size:12px; letter-spacing:.24em; transition:background .35s,color .35s,border-color .35s; }
.cta__btn:hover{ background:#f2efe6; color:var(--ink); border-color:#f2efe6; }
.cta__btn--fill{ background:#f2efe6; color:var(--ink); border-color:#f2efe6; }
.cta__btn--fill:hover{ background:transparent; color:#f2efe6; border-color:rgba(242,239,230,.7); }

/* =========================================================
   FOOTER
   ========================================================= */
.ft{ background:var(--night); color:var(--night-mute); padding:54px 0 26px; }
.ft__in{ display:flex; justify-content:space-between; gap:32px; align-items:flex-start; flex-wrap:wrap; }
.ft__logo-en{ font-family:var(--latin); font-size:15px; letter-spacing:.26em; color:var(--night-ink); text-transform:uppercase; }
.ft__addr{ font-size:12px; line-height:2; margin-top:10px; }
.ft__nav{ display:flex; gap:22px; flex-wrap:wrap; }
.ft__nav a{ font-size:12px; letter-spacing:.14em; }
.ft__nav a:hover{ color:var(--night-ink); }
.ft__copy{ margin-top:38px; padding-top:20px; border-top:1px solid var(--night-line); font-size:10px; letter-spacing:.14em; text-align:center; }
.ft__credit{ font-size:10.5px; letter-spacing:.12em; margin-top:14px; }

/* 固定CTA（SP） */
.fixcta{ display:none; }

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1024px){
  .fv{ grid-template-columns:1fr minmax(260px,1fr); }
  .fv__col--stack{ display:none; }
  .intro__grid,.access__grid{ grid-template-columns:1fr; gap:44px; }
  .concept__item{ grid-template-columns:1fr; gap:32px; }
  .concept__item--rev .concept__fig{ order:0; }
  .concept__fig img{ height:clamp(260px,52vw,420px); }
  .pg__head{ flex-direction:column; align-items:flex-start; gap:24px; }
  .pg__intro{ max-width:none; }
}

@media (max-width:767px){
  :root{ --gutter:20px; --hd-h:74px; }
  body{ font-size:14.5px; }
  .hd__nav{ display:none; }
  .hd__burger{ display:block; }
  .hd{ padding:16px 0; }

  .fv{ grid-template-columns:1fr; min-height:auto; }
  .fv__col--left{ display:block; }
  .fv__img--day{ height:48svh; }
  .fv__img--ice{ height:17svh; }
  .fv__col--stack{ display:grid; grid-template-rows:none; grid-template-columns:1fr 1fr; height:30svh; }
  .fv__center{ padding:52px 20px 64px; }
  .fv__main{ font-size:24px; letter-spacing:.16em; }

  .intro{ padding:76px 0 68px; }
  .intro__body{ gap:26px; }
  .intro__text{ max-width:none; }

  .concept{ padding:68px 0 74px; }
  .concept__head{ margin-bottom:48px; gap:28px; }
  .concept__body{ gap:20px; }
  .concept__num{ font-size:24px; }

  .winter__hero{ height:64svh; }
  .winter__heroTxt{ right:20px; top:40px; gap:18px; }
  .winter__body{ padding-top:44px; }
  .winter__intro{ margin-bottom:40px; }
  .winter__list{ grid-template-columns:1fr; gap:0; }
  .wfeat{ margin-top:52px; padding-top:34px; }
  .wfeat__head{ grid-template-columns:1fr; gap:18px; margin-bottom:20px; }
  .wfeat__label{ font-size:22px; }
  .wfeat__imgs{ grid-template-columns:1fr; gap:10px; }
  .plan .plan__badge,
  .opt .opt__badge{ margin-bottom:28px; }
  .winter__gal{ grid-template-columns:1fr 1fr; gap:10px; margin-top:52px; }
  .winter__gal figure:nth-child(1){ grid-column:1 / span 2; }
  .winter__gal figure:nth-child(2){ grid-column:1 / span 1; }
  .winter__gal figure:nth-child(3){ grid-column:2 / span 1; }

  .green{ padding:0 0 70px; }
  .green__hero{ height:60svh; }
  .green__heroTxt{ left:20px; top:40px; gap:18px; }
  .green__body{ padding-top:44px; }
  .green__intro{ margin-bottom:40px; }
  .green__list{ grid-template-columns:1fr; gap:0; }
  .gfeat{ margin-top:52px; padding-top:34px; }
  .gfeat__head{ grid-template-columns:1fr; gap:18px; margin-bottom:20px; }
  .gfeat__label{ font-size:22px; }
  .gfeat__imgs{ grid-template-columns:1fr; gap:10px; }
  .gfeat__imgs--tall{ grid-template-columns:1fr 1fr; }
  .green__gal{ grid-template-columns:1fr 1fr; gap:10px; margin-top:52px; }
  .green__gal figure:nth-child(1){ grid-column:1 / span 2; }
  .green__gal figure:nth-child(2){ grid-column:1 / span 1; }
  .green__gal figure:nth-child(3){ grid-column:2 / span 1; }
  .green__note{ text-align:left; }

  .gal{ padding:70px 0 74px; }
  .mq{ gap:10px; }
  .mq__track figure{ margin-right:10px; }
  .mq__track img{ height:clamp(170px,42vw,230px); }
  .mq__track{ animation-duration:42s; }
  .mq__row--rev .mq__track{ animation-duration:52s; }
  .pg{ padding:70px 0; }
  .pg__list{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:34px 16px; }
  .pg__list--2{ max-width:none; }
  .pg__name{ font-size:16px; margin:14px 0 5px; }
  .pg__roman{ font-size:11.5px; }
  .pg__bio{ margin-top:10px; }
  .pg__note{ margin-top:38px; padding-top:22px; }
  .pg__foot{ margin-top:22px; }

  .plan{ padding:72px 0; }
  .ptable__head{ display:none; }
  .ptable{ border-top:1px solid var(--ink); }
  .ptable__row{ grid-template-columns:1fr 1fr; gap:6px 14px; padding:22px 0; }
  .ptable__name{ grid-column:1 / -1; margin-bottom:8px; }
  .ptable__name p{ font-size:17px; }
  .ptable__price{ text-align:left; font-size:25px; }
  .pinc{ margin-top:32px; }
  .pinc__row{ grid-template-columns:84px minmax(0,1fr); gap:12px; padding:13px 0; }
  .ptable__price::before{
    content:attr(data-label); display:block;
    font-family:var(--sans); font-size:10.5px; letter-spacing:.14em;
    color:var(--ink-mute); margin-bottom:2px;
  }

  .opt{ padding:68px 0 74px; }
  .omenu__row{ grid-template-columns:auto 1fr; gap:14px; padding:22px 0; }
  .omenu__body{ grid-column:1 / -1; order:1; }
  .omenu__tag{ order:2; align-self:center; margin-top:0; }
  .omenu__price{ order:3; text-align:right; }
  .omenu__price b{ font-size:25px; }
  .omenu__price span{ margin-top:4px; }
  .omenu__desc{ margin-top:8px; }

  .flow{ padding:72px 0; }
  .flow__item{ grid-template-columns:62px 1fr; gap:16px; padding:24px 0; }

  .faq{ padding:70px 0; }
  .faq__q{ padding:20px 34px 20px 2px; font-size:14px; }
  .faq__a-in{ padding:0 34px 22px 22px; }

  .access{ padding:70px 0 76px; }
  .cta{ padding:92px 0 104px; }
  .cta__btns{ flex-direction:column; align-items:stretch; }
  .cta__btn{ padding:16px 20px; }

  .ft__in{ flex-direction:column; gap:22px; }

  /* SP固定CTA */
  .fixcta{
    display:flex; position:fixed; left:0; right:0; bottom:0; z-index:90;
    background:rgba(35,36,31,.96); transform:translateY(100%); transition:transform .45s cubic-bezier(.22,1,.36,1);
  }
  .fixcta.is-in{ transform:none; }
  .fixcta a{ flex:1; text-align:center; padding:16px 8px; font-size:11.5px; letter-spacing:.18em; color:#f2efe6; }
  .fixcta a + a{ border-left:1px solid rgba(242,239,230,.22); }
  .ft{ padding-bottom:78px; }
}

/* =========================================================
   STAY（夜つづき）
   ========================================================= */
.stay{ background:var(--night); color:var(--night-ink); padding:20px 0 108px; }
.stay .lead{ color:#c5c1b6; }
.stay .slabel__en{ color:var(--night-mute); }
.stay .slabel__rule{ background:var(--night-line); }
.stay .slabel__jp{ color:var(--night-mute); }
.stay__head{ display:flex; gap:44px; align-items:flex-start; margin-bottom:58px; }
.stay__head .slabel{ order:3; }
.stay__h{ order:2; color:var(--night-ink); height:8.7em; }
.stay__lead{ order:1; margin-right:auto; max-width:430px; padding-top:6px; }
.stay__main{ margin-bottom:14px; }
.stay__sub{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.stay__sub figure{ height:100%; }
.stay__sub img{ height:100%; object-fit:cover; }

@media (max-width:1024px){
  .stay__head{ flex-wrap:wrap; }
  .stay__lead{ order:4; margin-right:0; max-width:none; flex:1 1 100%; }
}
@media (max-width:767px){
  .stay{ padding:8px 0 72px; }
  .stay__head{ gap:24px; margin-bottom:38px; }
  .stay__sub{ grid-template-columns:1fr 1fr; gap:10px; }
  .stay__sub figure:nth-child(3){ grid-column:1 / span 2; }
  .stay__main{ margin-bottom:10px; }
}


/* =========================================================
   LIGHTBOX（作例ビューア）
   ========================================================= */
.lb{
  position:fixed; inset:0; z-index:200;
  background:rgba(16,16,12,.985);
  display:flex; align-items:center; justify-content:center;
  opacity:0; transition:opacity .3s ease;
}
.lb[hidden]{ display:none !important; }   /* UA の [hidden] は display:flex に負けるので明示 */
.lb:focus{ outline:none; }
.lb__close:focus-visible,.lb__arw:focus-visible{ outline:1px solid rgba(242,239,230,.9); outline-offset:2px; }
.lb.is-open{ opacity:1; }
.lb__stage{
  max-width:min(1100px,86vw); max-height:82vh;
  display:flex; align-items:center; justify-content:center;
}
.lb__stage img{
  max-width:min(1100px,86vw); max-height:82vh;
  width:auto; height:auto; object-fit:contain;
  opacity:0; transition:opacity .35s ease;
}
.lb__stage img.is-shown{ opacity:1; }
.lb__meta{
  position:absolute; left:0; right:0; bottom:26px;
  display:flex; align-items:baseline; justify-content:center; gap:22px;
  font-size:11.5px; letter-spacing:.18em; color:rgba(242,239,230,.72);
}
.lb__count{ font-family:var(--latin); font-variant-numeric:lining-nums tabular-nums; font-size:13px; letter-spacing:.14em; }
.lb__close{
  position:absolute; top:22px; right:24px; width:34px; height:34px; cursor:pointer;
}
.lb__close::before,.lb__close::after{
  content:""; position:absolute; left:6px; top:16px; width:22px; height:1px;
  background:rgba(242,239,230,.8); transition:background .3s;
}
.lb__close::before{ transform:rotate(45deg); }
.lb__close::after{ transform:rotate(-45deg); }
.lb__close:hover::before,.lb__close:hover::after{ background:#f2efe6; }
.lb__arw{
  position:absolute; top:50%; transform:translateY(-50%);
  width:56px; height:56px; cursor:pointer; z-index:2;
}
.lb__arw::before{
  content:""; position:absolute; left:50%; top:50%;
  width:13px; height:13px;
  border-top:1px solid rgba(242,239,230,.8);
  border-right:1px solid rgba(242,239,230,.8);
  transition:border-color .3s;
}
.lb__arw:hover::before{ border-color:#f2efe6; }
.lb__arw--prev{ left:14px; }
.lb__arw--prev::before{ transform:translate(-30%,-50%) rotate(-135deg); }
.lb__arw--next{ right:14px; }
.lb__arw--next::before{ transform:translate(-70%,-50%) rotate(45deg); }
body.lb-open{ overflow:hidden; }

@media (max-width:767px){
  .pg__bio{ margin-bottom:16px; }
  .pg__works{ padding-top:14px; }
  .pg__thumbs{ gap:5px; }
  .pg__all{ font-size:11px; }
  .lb__stage,.lb__stage img{ max-width:92vw; max-height:74vh; }
  .lb__arw{ width:44px; height:44px; }
  .lb__arw--prev{ left:2px; }
  .lb__arw--next{ right:2px; }
  .lb__meta{ bottom:18px; gap:14px; font-size:10.5px; }
}
